Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }