/// <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); }