示例#1
0
        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);
        }
示例#2
0
        /// <summary>
        /// internal add of to active rigid list
        /// </summary>
        public void AddActiveRigid(MyRigidBody rbo)
        {
            if (rbo == null)
            {
                return;
            }

            if (rbo.ReadFlag(RigidBodyFlag.RBF_ACTIVE))
            {
                return;
            }

            //if (rbo.RigidBodyEventHandler != null)
            //{
            //    rbo.RigidBodyEventHandler.OnActivated();
            //}

            rbo.RaiseFlag(RigidBodyFlag.RBF_ACTIVE);

            m_ActiveRigids.Add(rbo);
        }
        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;
        }
        /// <summary>
        /// internal add of to active rigid list
        /// </summary>
        public void AddActiveRigid(MyRigidBody rbo)
        {
            if(rbo == null)
                return;

            if(rbo.ReadFlag(RigidBodyFlag.RBF_ACTIVE))
                return;

            //if (rbo.RigidBodyEventHandler != null)
            //{
            //    rbo.RigidBodyEventHandler.OnActivated();
            //}            

            rbo.RaiseFlag(RigidBodyFlag.RBF_ACTIVE);

            m_ActiveRigids.Add(rbo);
        }