public void SetCollisionCallback(CMaterial pId0, CMaterial pId1, CMaterialPhysicsSpecialEffect pSpecialEffect, EventHandler<CContactBeginEventArgs> pContactBegin, EventHandler<CContactProcessEventArgs> pContactProcess, EventHandler<CContactEndEventArgs> pContactEnd) { IntPtr aKey = IntPtr.Zero; if (pSpecialEffect != null) { aKey = (IntPtr)pSpecialEffect.GetHashCode(); CHashTables.MaterialsUserData.Add(aKey, pSpecialEffect); } // Takes in a delegate, stores it, but then hooks m_ContactBegin = pContactBegin; m_NewtonContactBegin = new Newton.NewtonContactBegin(InvokeContactBegin); m_ContactProcess = pContactProcess; m_NewtonContactProcess = new Newton.NewtonContactProcess(InvokeContactProcess); m_ContactEnd = pContactEnd; m_NewtonContactEnd = new Newton.NewtonContactEnd(InvokeContactEnd); Newton.NewtonMaterialSetCollisionCallback(m_World.Handle, pId0.ID, pId1.ID, aKey, m_NewtonContactBegin, m_NewtonContactProcess, m_NewtonContactEnd); }
public void SetCollisionCallback(CMaterial pId0, CMaterial pId1, CMaterialPhysicsSpecialEffect pSpecialEffect, EventHandler <CContactBeginEventArgs> pContactBegin, EventHandler <CContactProcessEventArgs> pContactProcess, EventHandler <CContactEndEventArgs> pContactEnd) { IntPtr aKey = IntPtr.Zero; if (pSpecialEffect != null) { aKey = (IntPtr)pSpecialEffect.GetHashCode(); CHashTables.MaterialsUserData.Add(aKey, pSpecialEffect); } // Takes in a delegate, stores it, but then hooks m_ContactBegin = pContactBegin; m_NewtonContactBegin = new Newton.NewtonContactBegin(InvokeContactBegin); m_ContactProcess = pContactProcess; m_NewtonContactProcess = new Newton.NewtonContactProcess(InvokeContactProcess); m_ContactEnd = pContactEnd; m_NewtonContactEnd = new Newton.NewtonContactEnd(InvokeContactEnd); Newton.NewtonMaterialSetCollisionCallback(m_World.Handle, pId0.ID, pId1.ID, aKey, m_NewtonContactBegin, m_NewtonContactProcess, m_NewtonContactEnd); }