Пример #1
0
        /**
         *  @brief Add a new RigidBody to the world.
         *
         *  @param jRigidBody Instance of a {@link FPRigidBody}.
         **/
        public void AddBody(ICollider iCollider)
        {
            if (!(iCollider is FPCollider))
            {
                Debug.LogError("You have a 2D object but your Physics 2D is disabled.");
                return;
            }

            FPCollider FPCollider = (FPCollider)iCollider;

            if (FPCollider._body != null)
            {
                //already added
                return;
            }

            FPRigidBody            tsRB        = FPCollider.GetComponent <FPRigidBody>();
            FPRigidBodyConstraints constraints = tsRB != null ? tsRB.constraints : FPRigidBodyConstraints.None;

            FPCollider.Initialize();
            world.AddBody(FPCollider._body);
            gameObjectMap[FPCollider._body] = FPCollider.gameObject;

            if (FPCollider.gameObject.transform.parent != null && FPCollider.gameObject.transform.parent.GetComponentInParent <FPCollider>() != null)
            {
                FPCollider parentCollider = FPCollider.gameObject.transform.parent.GetComponentInParent <FPCollider>();
                world.AddConstraint(new ConstraintHierarchy(parentCollider.Body, FPCollider._body, (FPCollider.GetComponent <FPTransform>().position + FPCollider.ScaledCenter) - (parentCollider.GetComponent <FPTransform>().position + parentCollider.ScaledCenter)));
            }

            FPCollider._body.FreezeConstraints = constraints;
        }