3131#pragma once
3232#include " eqPhysics_Defs.h"
3333#include " core/IEqParallelJobs.h"
34+ #include " ds/event.h"
3435
3536struct btDispatcherInfo ;
3637class btCollisionWorld ;
@@ -48,7 +49,7 @@ class CEqPhysicsBroadphase;
4849class IEqPhysicsConstraint ;
4950class IEqPhysController ;
5051
51- typedef void (* FNSIMULATECALLBACK )( float fDt , int iterNum);
52+ using PhysIntegrateEvent = Event< void ( float delta , int iterNum)> ;
5253
5354// --------------------------------------------------------------------------------------------------------------
5455
@@ -78,6 +79,9 @@ class CEqPhysicsWorld
7879 const eqPhysSurfParam* FindSurfaceParam (const char * name) const ;
7980 const eqPhysSurfParam* GetSurfaceParamByID (int id) const ;
8081
82+ PhysIntegrateEvent& GetPreIntegrateEvent () { return m_preIntegrateEvt; }
83+ PhysIntegrateEvent& GetPostIntegrateEvent () { return m_postIntegrateEvt; }
84+
8185 void AddToMoveableList ( CEqRigidBody* body ); // /< adds object to moveable list
8286 void RemoveFromMoveableList ( CEqRigidBody* body );
8387
@@ -144,7 +148,7 @@ class CEqPhysicsWorld
144148 void DebugDrawBodies (int mode);
145149
146150 // /< Simulates physics
147- void SimulateStep ( float deltaTime, int iteration, FNSIMULATECALLBACK preIntegrFunc ); // /< simulates physics
151+ void SimulateStep ( float deltaTime, int iteration); // /< simulates physics
148152
149153
150154 // checks collision (made especially for rays, but could be used in other situations)
@@ -171,6 +175,9 @@ class CEqPhysicsWorld
171175 class PreSimulateJob ;
172176 class CollisionDetectionJob ;
173177
178+ PhysIntegrateEvent m_preIntegrateEvt{ PP_SL };
179+ PhysIntegrateEvent m_postIntegrateEvt{ PP_SL };
180+
174181 CEqJobManager& m_jobMng;
175182 PreSimulateJob* m_preSimJob{ nullptr };
176183 CollisionDetectionJob* m_collDetJob{ nullptr };
0 commit comments