MCPcopy Create free account
hub / github.com/REGoth-project/REGoth / update

Method update

src/physics/PhysicsSystem.cpp:66–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void PhysicsSystem::update(double dt)
67{
68 m_pDynamicsWorld->stepSimulation(static_cast<btScalar>(dt));
69
70 const auto& ctuple = m_World.getComponentDataBundle().m_Data;
71 size_t num = m_World.getComponentDataBundle().m_NumElements;
72
73 // Copy all physics-transforms to the position-components
74 Components::EntityComponent* ents = std::get<Components::EntityComponent*>(ctuple);
75 Components::PhysicsComponent* phys = std::get<Components::PhysicsComponent*>(ctuple);
76 Components::PositionComponent* pos = std::get<Components::PositionComponent*>(ctuple);
77 Components::LogicComponent* log = std::get<Components::LogicComponent*>(ctuple);
78 Components::VisualComponent* vis = std::get<Components::VisualComponent*>(ctuple);
79
80 for (size_t i = 0; i < num; i++)
81 {
82 Components::ComponentMask mask = ents[i].m_ComponentMask;
83
84 if ((mask & Components::PhysicsComponent::MASK) != 0 && !phys[i].m_IsStatic)
85 {
86 // Copy to position-component
87 pos[i].m_WorldMatrix = Components::Actions::Physics::getRigidBodyTransform(phys[i]);
88
89 // Broadcast to others
90 if ((mask & Components::LogicComponent::MASK) != 0 && log[i].m_pLogicController)
91 log[i].m_pLogicController->onTransformChanged();
92
93 if ((mask & Components::VisualComponent::MASK) != 0 && vis[i].m_pVisualController)
94 vis[i].m_pVisualController->onTransformChanged();
95 }
96 }
97}
98
99void PhysicsSystem::addRigidBody(btRigidBody* body)
100{

Callers

nothing calls this directly

Calls 3

getRigidBodyTransformFunction · 0.85
onTransformChangedMethod · 0.45

Tested by

no test coverage detected