public bool Insert(MyRigidBody rbo) { if (rbo.ReadFlag(RigidBodyFlag.RBF_INSERTED)) { return(true); } #if PHYSICS_CHECK for (int i = 0; i < m_Rigids.Count; i++) { MyRigidBody r = m_Rigids[i]; if (r == rbo) { // rbo already inserted! MyCommonDebugUtils.AssertDebug(false); return(false); } } #endif MyCommonDebugUtils.AssertDebug(rbo != null); // m_Rigids.Add(rbo); // insert to sort into bp for (int i = 0; i < rbo.GetRBElementList().Count; i++) { MyRBElement elem = rbo.GetRBElementList()[i]; elem.GroupMask = MyGroupMask.Empty; elem.UpdateAABB(); m_BroadPhase.CreateVolume(elem); } if (!rbo.ReadFlag(RigidBodyFlag.RBF_RBO_STATIC)) { AddActiveRigid(rbo); rbo.ActivateNotification(); } rbo.RaiseFlag(RigidBodyFlag.RBF_INSERTED); return(true); }
public bool Insert(MyRigidBody rbo) { if(rbo.ReadFlag(RigidBodyFlag.RBF_INSERTED)) { return true; } #if PHYSICS_CHECK for (int i = 0; i < m_Rigids.Count; i++) { MyRigidBody r = m_Rigids[i]; if (r == rbo) { // rbo already inserted! MyCommonDebugUtils.AssertDebug(false); return false; } } #endif MyCommonDebugUtils.AssertDebug(rbo != null); // m_Rigids.Add(rbo); // insert to sort into bp for (int i = 0; i < rbo.GetRBElementList().Count; i++) { MyRBElement elem = rbo.GetRBElementList()[i]; elem.GroupMask = MyGroupMask.Empty; elem.UpdateAABB(); m_BroadPhase.CreateVolume(elem); } if (!rbo.ReadFlag(RigidBodyFlag.RBF_RBO_STATIC)) { AddActiveRigid(rbo); rbo.ActivateNotification(); } rbo.RaiseFlag(RigidBodyFlag.RBF_INSERTED); return true; }