大学のプロジェクトで OGRE3D を使用する必要がありますが、物理演算や衝突検出にサードパーティのライブラリを使用することは許可されていません。これには、OGRE に組み込まれている衝突検出の使用が含まれます。
独自のカスタム物理ルーチンを OGRE の組み込みエンティティに追加する正しい方法に問題があります。
OGRE は「エンティティ」オブジェクトをビルディング ブロックの最も基本的なものとして使用し、物理学ではオブジェクトに質量、速度などの属性が必要です。
私が混乱しているのは、OGRE のレンダリング/ロジック ループが、OGRE エンジン内のユーザーから隠されているように見えることです。OGRE のすべてのエンティティを取得し、構築中のカスタム物理エンジンで衝突検出と物理計算を実行できるようにする必要があるため、これは問題です。
独自の物理/衝突エンジン クラスを OGRE と統合するにはどうすればよいですか?
更新: 以下のアドバイスを受けて、OGRE::Entity をサブクラス化しました。
class PhysicsEntity : public Ogre::Entity;
PhysicsEntity *ent1 = (PhysicsEntity*)mSceneMgr->createEntity("PhysicsNinja", "ninja.mesh");;
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("NinjaNode1");
node2->attachObject((Ogre::Entity*)ent1);
コメントでは、これは OO に準拠するための最良の方法ではないと述べられていますが、私は同意しますが、この段階でより良い方法を見つけることはできませんか? 私はこれを行うことに完全に満足していないので、あなたはどう思いますか、そして何か良いアイデアはありますか.