예제 #1
0
        /// <summary>
        /// Creates the body and makes it static/kinematic if specified.
        /// </summary>
        private void CreateBody(ThingDefinition def)
        {
            Body = new RigidBody(Info);

            // stick on our flags
            ThingEnum te = def.GetEnumProperty("physics", null);
            if (te.HasFlag(ThingEnum.Static))
                Body.CollisionFlags |= CollisionFlags.StaticObject;
            else if (te.HasFlag(ThingEnum.Kinematic))
                Body.CollisionFlags |= CollisionFlags.KinematicObject;

            if (def.GetBoolProperty("CollisionEvents", false))
                Body.CollisionFlags |= CollisionFlags.CustomMaterialCallback;

            if (def.GetBoolProperty("DisableVisualization", false))
                Body.CollisionFlags |= CollisionFlags.DisableVisualizeObject;

            Body.WorldTransform = Info.StartWorldTransform;

            LKernel.GetG<PhysicsMain>().World.AddRigidBody(Body, CollisionGroup, CollidesWith);

            if (def.GetBoolProperty("Deactivated", false))
                Body.ForceActivationState(ActivationState.WantsDeactivation);
        }