Example #1
0
 public MaterialCollisionItem(Material materialOne,
                              Material materialTwo,
                              MatCollCallBack callBack)
 {
     m_pair      = new MaterialPair(materialOne, materialTwo);
     m_delegate += callBack;
 }
Example #2
0
        //----------------------------------------------------------------------------
        //----------------------------------------------------------------------------
        internal void ProcessFineCollisions(DeltaTime deltaTime)
        {
            if (m_collisionsFineList.Count > 0)
            {
                foreach (CollisionPair pair in m_collisionsFineList)
                {
                    if (pair.ColliderOne.Contains(pair.ColliderTwo))
                    {
                        MaterialCollisionItem item;
                        PhysicsBody           bodyOne   = pair.ColliderOne.Body;
                        PhysicsBody           bodyTwo   = pair.ColliderTwo.Body;
                        CollisionBehaviour    behaviour = CollisionBehaviour.DefaultCollision;

                        if (GetMaterialPair(pair.ColliderOne.Material, pair.ColliderTwo.Material, out item))
                        {
                            MatCollCallBack callBack = item.GetDelegate();

                            if (callBack != null)
                            {
                                behaviour = callBack(item.Pair, bodyOne, bodyTwo);
                            }
                        }

                        if (behaviour == CollisionBehaviour.DefaultCollision)
                        {
                            //do default collision here.
                        }
                    }
                }

                m_collisionsFineList.Clear();
            }
        }
Example #3
0
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 public void RemoveMaterialPair(MaterialPairKey key, MatCollCallBack callBack)
 {
     try
     {
         m_materialPairs[key.Key].RemoveCallback(callBack);
     }
     catch (System.Exception ex)
     {
         Debug.Assert(false, "MaterialPair doesn't exist");
     }
 }
Example #4
0
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 public void Clear_Callbacks()
 {
     m_delegate = null;
 }
Example #5
0
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 public void RemoveCallback(MatCollCallBack callback)
 {
     m_delegate -= callback;
 }
Example #6
0
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 public void AddCallback(MatCollCallBack callBack)
 {
     m_delegate += callBack;
 }
Example #7
0
        //----------------------------------------------------------------------------
        //----------------------------------------------------------------------------
        public MaterialPairKey AddMaterialPair(Material materialOne, Material materialTwo, MatCollCallBack callBack)
        {
            MaterialCollisionItem pair;
            int nKey = MaterialPair.GetMaterialPairHashKey(materialOne, materialTwo);

            if (m_materialPairs.TryGetValue(nKey, out pair))
            {
                pair.AddCallback(callBack);
            }
            else
            {
                pair = new MaterialCollisionItem(materialOne, materialTwo, callBack);
            }

            return(new MaterialPairKey(nKey));
        }