« 特定トピックの対応 | メイン | 当たりを入れられた »

2005年03月11日

Teaspire 開発日誌:: コリジョンファイル

    

とりあえず、1個だけなので手作業で変換できるかなとテキストのコリジョンファイルを見てみると・・・ メッシュがインデックス形式じゃない!
で、シーンファイルのメッシュはインデックス形式。
困った。手作業で変換するのは現実的じゃない。
そこで、Meshとして読み込まれたデータを変換しようとLAMPのコリジョン部分のコードを追ってみようとしたら、CollisionConverter とかいうクラスがある。
これは! メソッドのconvertではSceneとCollisionSceneが引数に渡されている。
constが付いていないので、どちらからどちらへ変換するのかわからないが、これで変換できそう。
とにかくやってみることに。

シーンを読み込み、コンバーターでコリジョンシーンへ変換し、コリジョンセーバーでファイルに保存。
ビルドして実行してみるとうまくいった。
ファイルの中身もそれっぽい。

ソースコードは次の通り。

Scene *map = LampGraphics::createScene("Map");
TextSceneLoader* loader = new TextSceneLoader();
loader->load("sceneFile.tsn", map);
delete loader;
CollisionScene *mapCollisionScene = new CollisionScene();

CollisionConverter *converter = new CollisionConverter();
converter->convert( map, mapCollisionScene );
delete converter;

TextCollisionSaver *saver = new TextCollisionSaver();
saver->save("sceneFile.tcl", mapCollisionScene );
delete saver;

delete mapCollisionScene;
map->clear();
LampGraphics::destroyScene(map);

後始末の部分は少し違うかも。
ツールを作る場合はもう少しキチンと調べた方が良さそう。
後、わざわざnew する必要があるのかどうかはよくわからないが、demoなどではそのようにしていることが多いのでそれに従った。

でも、テキストコリジョンファイルの拡張子のtclって・・・ TCLスクリプトのファイルに見えてしまう。
次はdemoのソースを参考にして当たりを書いてみるか。



投稿者 Takenori : 2005年03月11日 06:29




comments powered by Disqus
Total : Today : Yesterday : なかのひと