Converting vehicle and building workflow to blender2ogre

This commit is contained in:
2025-09-20 05:52:24 +03:00
parent 62e14cf075
commit e967844558
143 changed files with 12687 additions and 51 deletions

View File

@@ -81,12 +81,14 @@ ECS::EventTriggerModule::EventTriggerModule(flecs::world &ecs)
e.get<EventTrigger>().position,
Ogre::Quaternion(0, 0, 0, 1));
}
/*
Ogre::MeshPtr mesh =
Ogre::MeshManager::getSingleton().createManual(
"trigger", "General");
Ogre::Entity *ent =
ECS::get<EngineData>().mScnMgr->createEntity(mesh);
body.mSceneNode->attachObject(ent);
*/
body.mBody = new btPairCachingGhostObject();
body.mBody->getWorldTransform().setOrigin(Ogre::Bullet::convert(
body.mSceneNode->_getDerivedPosition()));
@@ -100,8 +102,42 @@ ECS::EventTriggerModule::EventTriggerModule(flecs::world &ecs)
if (kinematic)
flags |= btCollisionObject::CF_STATIC_OBJECT;
body.mBody->setCollisionFlags(flags);
/*
ECS::get<EngineData>().mWorld->attachCollisionObject(
body.mBody, ent, 16, 0x1);
*/
ECS::get<EngineData>().mWorld->getBtWorld()->addCollisionObject(
body.mBody, 16, 0x1);
struct EntityCollisionListener {
const Ogre::MovableObject *entity;
Ogre::Bullet::CollisionListener *listener;
};
body.mBody->setUserPointer(
new EntityCollisionListener{ nullptr, nullptr });
class CollisionObject {
protected:
btCollisionObject *mBtBody;
btCollisionWorld *mBtWorld;
public:
CollisionObject(btCollisionObject *btBody,
btCollisionWorld *btWorld)
: mBtBody(btBody)
, mBtWorld(btWorld)
{
}
virtual ~CollisionObject()
{
mBtWorld->removeCollisionObject(mBtBody);
delete mBtBody->getCollisionShape();
delete mBtBody;
}
};
auto objWrapper = std::make_shared<CollisionObject>(
body.mBody,
ECS::get<EngineData>().mWorld->getBtWorld());
body.mSceneNode->getUserObjectBindings().setUserAny(
"BtCollisionObject", objWrapper);
});
ecs.component<EventTrigger>().on_set(
[](flecs::entity e, EventTrigger &ev) {