public MyPhysics() { physicsSystem = this; m_RigidBodyModule = new MyRigidBodyModule(); m_SensorModule = new MySensorModule(); m_ContactConstraintModule = new MyContactConstraintModule(); m_SensorInteractionModule = new MySensorInteractionModule(); m_RBInteractionModule = new MyRBInteractionModule(); m_Utils = new MyPhysicsUtils(); m_PhysicsObjects = new MyPhysicsObjects(); m_SimulationHandlers = new List <MyPhysSimulationHandler>(16); }
public MyPhysics() { physicsSystem = this; m_RigidBodyModule = new MyRigidBodyModule(); m_SensorModule = new MySensorModule(); m_ContactConstraintModule = new MyContactConstraintModule(); m_SensorInteractionModule = new MySensorInteractionModule(); m_RBInteractionModule = new MyRBInteractionModule(); m_Utils = new MyPhysicsUtils(); m_PhysicsObjects = new MyPhysicsObjects(); m_SimulationHandlers = new List<MyPhysSimulationHandler>(16); }
/// <summary> /// calls the user contact callbacks /// </summary> private void FireContactCallbacks() { MyRigidBodyModule module = MyPhysics.physicsSystem.GetRigidBodyModule(); for (int i = 0; i < m_StartContactEvents.Count; i++) { MyContactEventInfo coi = m_StartContactEvents[i]; MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type); if (cet == MyContactEventType.CET_START || cet == MyContactEventType.CET_START_AND_END || cet == MyContactEventType.CET_START_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END) { if (coi.m_RigidBody1.NotifyContactHandler != null) { coi.m_RigidBody1.NotifyContactHandler.OnContactStart(coi); } if (coi.m_RigidBody2.NotifyContactHandler != null) { coi.m_RigidBody2.NotifyContactHandler.OnContactStart(coi); } } } for (int i = 0; i < m_TouchContactEvents.Count; i++) { MyContactEventInfo coi = m_TouchContactEvents[i]; MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type); if (cet == MyContactEventType.CET_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH || cet == MyContactEventType.CET_END_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END) { if (coi.m_RigidBody1.NotifyContactHandler != null) { coi.m_RigidBody1.NotifyContactHandler.OnContactTouch(coi); } if (coi.m_RigidBody2.NotifyContactHandler != null) { coi.m_RigidBody2.NotifyContactHandler.OnContactTouch(coi); } } m_FreeCei.Push(coi); } for (int i = 0; i < m_EndContactEvents.Count; i++) { MyContactEventInfo coi = m_EndContactEvents[i]; MyContactEventType cet = module.GetRigidBodyContactEventTypeMask(coi.m_RigidBody1.Type, coi.m_RigidBody2.Type); if (cet == MyContactEventType.CET_END || cet == MyContactEventType.CET_START_AND_END || cet == MyContactEventType.CET_END_AND_TOUCH || cet == MyContactEventType.CET_START_AND_TOUCH_AND_END) { if (coi.m_RigidBody1.NotifyContactHandler != null) { coi.m_RigidBody1.NotifyContactHandler.OnContactEnd(coi); } if (coi.m_RigidBody2.NotifyContactHandler != null) { coi.m_RigidBody2.NotifyContactHandler.OnContactEnd(coi); } } m_FreeCei.Push(coi); } }