Exemplo n.º 1
0
        public void Initialize()
        {
            m_EventTypes = new MyContactEventType[32, 32];

            MyContactEventType defaultContactTypeMask = MyContactEventType.CET_START_AND_END;

            for (int i = 0; i < 32; i++)
            {
                for (int j = 0; j < 32; j++)
                {
                    m_EventTypes[i, j] = defaultContactTypeMask;
                    m_EventTypes[j, i] = defaultContactTypeMask;
                }
            }

            m_CollisionLayers = new bool[32, 32];
            for (int i = 0; i < 32; i++)
            {
                for (int j = 0; j < 32; j++)
                {
                    if (i == j)
                    {
                        m_CollisionLayers[i, j] = true;
                    }
                    else
                    {
                        m_CollisionLayers[i, j] = false;
                    }
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// sets a mask for contact events for 2 rigid body types
 /// </summary>
 public void SetRigidBodyContactEventTypeMask(MyContactEventType ev, ushort type1, ushort type2)
 {
     m_EventTypes[type1, type2] = ev;
     m_EventTypes[type2, type1] = ev;
 }
Exemplo n.º 3
0
 /// <summary>
 /// sets a mask for contact events for 2 rigid body types 
 /// </summary>
 public void SetRigidBodyContactEventTypeMask(MyContactEventType ev, ushort type1, ushort type2)
 {
     m_EventTypes[type1, type2] = ev;
     m_EventTypes[type2, type1] = ev;
 }
        /// <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);
            }
        }
Exemplo n.º 5
0
        public void Initialize()
        {
            m_EventTypes = new MyContactEventType[32,32];

            MyContactEventType defaultContactTypeMask = MyContactEventType.CET_START_AND_END;

            for (int i = 0; i < 32; i++)
            {
                for (int j = 0; j < 32; j++)
                {
                    m_EventTypes[i, j] = defaultContactTypeMask;
                    m_EventTypes[j, i] = defaultContactTypeMask;
                }
            }

            m_CollisionLayers = new bool[32,32];
            for (int i = 0; i < 32; i++)
            {
                for (int j = 0; j < 32; j++)
                {
                    if(i == j)
                        m_CollisionLayers[i, j] = true;
                    else
                        m_CollisionLayers[i, j] = false;
                }
            }

        }