D11_ver0_10

D11_ver0_10 を作りました。


ソース
http://www.wink.ac/~h-muro/d/trunk/d11_ver0_10.zip
SS
http://www.wink.ac/~h-muro/d/ss/d11_ver0_10.png


主な変更点

  • タスクシステム廃止
  • Boost 導入
  • STLport 導入 (Windows版)
  • ホーミングのさきっちょにパーティクルを配置
  • ライティング導入
  • Mac OS X版バイナリ廃止(付け焼き刃はやはり駄目だった)


なんか見通しが悪くなってきたのでタスクシステムを一時的に廃止しました。
弾はタスクシステムでも良かった気はしますが、まあいいです。
止めたらほんのちょっと速くなりました。


あと Boost を導入しました。
タスクシステムを廃止したことで、弾を std::list で管理することにしたんですが、
「弾作り関数」で一時弾(auto変数)を作って list::push_back() して弾を追加してて、
このとき弾のコンストラクタで画像を new() してるんです。
何も考えないと一時弾のスコープがはずれたときにデストラクタが走って
画像が delete されてしまって list のほうの弾の画像が消えちゃって悲しいので、
弾のコピーコンストラクタで画像を new() して中身をコピーするようにしたら上手くいったんですが、
今度は list::remove_if() で弾を消すかどうかの判定をするときに
関数オブジェクト(状態判定用)に弾が渡る際にも画像を new() してしまってまた悲しいというか無駄です。
なのでポインタだけ渡すようにするためにスマートポインタを導入しました。
今のところうまくいってる感じです。


あと Mac版のバイナリですが、付け焼き刃はやっぱり駄目でした。
ちゃんと勉強するまであんな変なのは作りません。


あ、あとパーティクルは光源になってません。
さあて次は何をするか。