Now root motion works much better; raft/boat climbing

This commit is contained in:
2025-10-04 04:10:21 +03:00
parent 25280a9cbe
commit 19a1275a8a
14 changed files with 844 additions and 149 deletions

View File

@@ -258,6 +258,14 @@ ECS::EventTriggerModule::EventTriggerModule(flecs::world &ecs)
.entities
.end(),
"No body to entity mapping");
flecs::entity obj_e =
ECS::get<
Body2Entity>()
.entities
.at(const_cast<
btCollisionObject
*>(
other));
ECS::get<
LuaBase>()
.mLua
@@ -265,13 +273,12 @@ ECS::EventTriggerModule::EventTriggerModule(flecs::world &ecs)
evt.event +
"_enter",
e,
ECS::get<
Body2Entity>()
.entities
.at(const_cast<
btCollisionObject
*>(
other)));
obj_e);
obj_e.add<
InTrigger>(
e);
e.add<TriggeredBy>(
obj_e);
}
}
}
@@ -283,14 +290,17 @@ ECS::EventTriggerModule::EventTriggerModule(flecs::world &ecs)
while (it != body.contactBodies.end()) {
if (currentContactBodies.find(*it) ==
currentContactBodies.end()) {
ECS::get<LuaBase>().mLua->call_handler(
evt.event + "_exit", e,
flecs::entity obj_e =
ECS::get<Body2Entity>()
.entities
.at(const_cast<
btCollisionObject
*>(
*it)));
*it));
ECS::get<LuaBase>().mLua->call_handler(
evt.event + "_exit", e, obj_e);
obj_e.remove<InTrigger>(e);
e.remove<TriggeredBy>(obj_e);
std::cout << "body exited" << std::endl;
it = body.contactBodies.erase(it);
if (it == body.contactBodies.end())