示例#1
0
        public void Convert(RigidBodyType type, float mass)
        {
            PhysicsHandler.RemoveRigidBody(Body);

            // set mass properties
            if (type != RigidBodyType.Dynamic)
            {
                mass = 0;
            }

            Body.SetMassProps(mass, Body.CollisionShape.CalculateLocalInertia(mass));

            // set body type
            switch (type)
            {
            case RigidBodyType.Static:
                Body.CollisionFlags = CollisionFlags.StaticObject;
                Body.ForceActivationState(ActivationState.ActiveTag);
                break;

            case RigidBodyType.Kinematic:
                Body.CollisionFlags = CollisionFlags.StaticObject | CollisionFlags.KinematicObject;
                Body.ForceActivationState(ActivationState.DisableDeactivation);
                break;

            case RigidBodyType.Dynamic:
                Body.CollisionFlags = CollisionFlags.None;
                Body.ForceActivationState(ActivationState.ActiveTag);
                Body.Activate();
                break;
            }

            PhysicsHandler.AddRigidBody(Body);
        }
示例#2
0
 public RigidBody(GameObject go, RigidBodyType rbt, int uo) : base(uo, "rigidBody")
 {
     transform       = (Transform)go.ComponentHandler.GetComponent("transform");
     bodyType        = rbt;
     angularVelocity = 0;
     moveVelocity    = new Vector2(0, 0);
     mass            = 0;
 }
示例#3
0
 private void UpdateBodyType(RigidBodyType bodyType)
 {
     if (bodyType == RigidBodyType.Kinematic)
     {
         entity.BecomeKinematic();
     }
     else
     {
         entity.BecomeDynamic(Mass <= 0 ? 1 : Mass);
     }
 }
示例#4
0
        public void Create(RigidBodyCreateInfo info)
        {
            unsafe
            {
                if (_Handler != null)
                {
                    _Shape     = info.eShape;
                    _Type      = info.eType;
                    _IsCreated = true;

                    CreateRigidBody_EX(ref info, *_Handler);
                }
            }
        }
示例#5
0
        public string         Path; // fo custom geometry

        public void CreateDefault()
        {
            Size             = new Vector3(1, 1, 1);
            eShape           = RigidBodyShape.Box;
            eType            = RigidBodyType.Dynamic;
            Mass             = 1.0f;
            Density          = 0.5f;
            Friction         = 0.5f;
            Restitution      = 0.0f;
            LinearDamping    = 0.0f;
            AngularDamping   = 0.0f;
            RollingFriction  = 0.1f;
            SpinningFriction = 0.1f;
        }
 public void SetRigidBody(float mass, RigidBodyType type, Vector3 dims)
 {
     ScapeInternal.InstancedStaticObject.setInstanceRigidBodyFromDetails(objectPtr, mass, (int)type, dims.X, dims.Y, dims.Z);
 }
示例#7
0
 //checks if type is in collisions types list
 public bool CollisionTypeMatches(RigidBodyType type)
 {
     return(((uint)type & collisionsMask) != 0);
 }