フェードアウトは、それ自体の時間が短いんだから8枚ぐらいのテクスチャアニメーションでムリヤリ実装するという手もあるかも。

高速たるゆえん?

Particleの描画はそれなりに高速っぽそう。基本的にはビルボードと同じなんだけど、ビルボードが内部で頂点ごとにGPUに転送してる(ほんまかいな)のにたいして、ParticleはParticleSystem全部の頂点を頂点配列的なものにバッファリングして一度に吐き出してる(ようなきがする)。
こっちを使ったほうがよさげ。

わな

C++が思ってた以上にわけわからん。

じゃなかった

名前空間はだいたいそれっぽくわかってるはずなのに、「osなんてないで!」とかわけのわからん怒られかたをしてた。
問題になってたのはParticleHogehogeEmitter内のコードをコピペしてコンパイルしたときの"os::Randomizer"だった。APIリファレンスを調べてもそれらしいものがみつからないのでフォーラムを見たら、これはアプリケーションからは利用できないとのこと。C標準のものを使えばいいらしい。
このほかにもgetTimeとか怪しいのがいくつかあるかも。きをつけないと。

getTimeがだめ

ライブラリのソースだとgetTimeはその中でしか使えない何かから呼び出してる。これは上と同じでアプリケーションからは呼び出せない。
getTimeはdeviceから

device->getTimer->getTime()

みたいな感じで呼び出せることはできるんだけど、ParticleSystemがdeviceをメンバにもってないから渡してやらないといけない、、、なんか違う気がする。

あかんわ!

いらんもんも書き換えたりしないとうまくいかない!
IrrlichtのParticleSystemは「柔軟で拡張性が高い」。でも今回はそんな拡張性なんていらなくて、Particleがぐりぐり回ってくれればそれで充分。ただParticleがZ回転できないがために他の使わない部分まで手をつけるのは時間の無駄だよね。
ちゅーわけで、テキトーにパクりながら最小限の機能だけつけよう。明日やろう。
あとあれ。C++コンパイル遅すぎ。

TODO

  • 一度にいくつかのParticleを同じ方向に出す。サイズ、ベクトルはなんかそれっぽく。
  • 回転、急に静止、フェードアウト(テクスチャアニメーション?)のAffector
  • あと、1秒間に指定された数のモクモクをモクモクするモクモク
  • でもこれしたところでそんなにパフォーマンスよくなるの?