コード例 #1
0
        protected override void Dispose()
        {
            if (rigidBody != IntPtr.Zero)
            {
                int numRefs = btRigidBody_getNumConstraintRefs(rigidBody);
                List <TypedConstraintElement> constraints = new List <TypedConstraintElement>(numRefs);
                //Gather up all constraints
                for (int i = 0; i < numRefs; ++i)
                {
                    IntPtr typedConstraint         = btRigidBody_getConstraintRef(rigidBody, i);
                    TypedConstraintElement element = TypedConstraintManager.getElement(typedConstraint);
                    if (element != null)
                    {
                        constraints.Add(element);
                    }
                }
                //Set all constraints to inactive
                foreach (TypedConstraintElement constraint in constraints)
                {
                    constraint.setInactive();
                }

                if (Owner.Enabled)
                {
                    scene.removeRigidBody(this);
                }

                RigidBodyManager.remove(rigidBody);

                btRigidBody_Delete(rigidBody);
                rigidBody = IntPtr.Zero;

                motionState.Dispose();
            }
        }
コード例 #2
0
        protected override void Dispose()
        {
            if (constraint != IntPtr.Zero)
            {
                TypedConstraintManager.removeConstraint(constraint);

                if (active && Owner.Enabled)
                {
                    scene.removeConstraint(this);
                }

                btTypedConstraint_Delete(constraint);
                constraint = IntPtr.Zero;
            }
        }
コード例 #3
0
 protected void setConstraint(IntPtr constraint)
 {
     this.constraint = constraint;
     TypedConstraintManager.addConstraint(constraint, this);
 }