Converting vehicle and building workflow to blender2ogre
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user