私はウェブ全体を検索してきましたが、2 つのポリモーフィック オブジェクトが同じタイプであるか、またはポリモーフィック オブジェクトがタイプであるかを比較する別の方法が見つからないようです。これは、現在作成中のゲーム内にエンティティ システムを実装するためです。
マクロを使用するかキャストを使用する以外に、これを行う別の方法は見つかりませんでした(キャストは移植可能な方法ではありません)。現在、これは私がオブジェクトを識別する方法ですが、これを行うためのより効率的または効果的な方法はありますか? (C++ RTTI を使用しない場合)
ここに貼り付けるのは面倒なので、ペーストビンに貼り付けました。 http://pastebin.com/2uwrb4y2
そして、私が達成しようとしていることをまだ正確に理解していない場合に備えて、説明しようと思います. ゲーム内のエンティティは、ゲーム内のオブジェクト (プレイヤーや敵など) のようなもので、コンポーネントがアタッチされています。これらのコンポーネントはエンティティのデータです。エンティティ システム内のシステムは、ゲームのデータとロジックを結合するものです。
たとえば、モデルを画面に表示したい場合は、次のようになります。
World world; // Where all entities are contained
// create an entity from the world, and add
// some geometry that is loaded from a file
Entity* e = world.createEntity();
e->add(new GeometryComponent());
e->get<GeometryComponent>()->loadModel("my_model.obj"); // this is what I want to be able to do
world.addSystem(new RenderingSystem());
// game loop
bool isRunning = true;
while(isRunning)
{
pollInput();
// etc...
// update the world
world.update();
}
編集:これは、主に私がやりたいことを行うJavaでプログラムされたフレームワークです。 http://gamadu.com/artemis/tutorial.html