public static StaticGeometryComponent CreateStaticRigidBody(Entity parent, TransformComponent transform, H2vMap map, TagRef <HaloModelTag> hlmtRef, int damageLevel = 0) { if (map.TryGetTag(hlmtRef, out var hlmt) == false) { return(null); } return(new StaticGeometryComponent(parent, transform) { Collider = ColliderFactory.GetTriangleColliderForHlmt(map, hlmt, damageLevel) }); }
public static RigidBodyComponent CreateKinematicRigidBody(Entity parent, TransformComponent transform, H2vMap map, TagRef <HaloModelTag> hlmtRef, int damageLevel = 0) { if (map.TryGetTag(hlmtRef, out var hlmt) == false) { throw new Exception($"Couldn't find HLMT[{hlmtRef.Id}]"); } RigidBodyComponent body; if (!map.TryGetTag(hlmt.PhysicsModel, out var phmo) || phmo.BodyParameters.Length == 0) { return(null); } var param = phmo.BodyParameters[0]; body = new RigidBodyComponent(parent, transform, param.InertiaTensor, param.Mass, param.CenterOfMass) { IsDynamic = false, Collider = ColliderFactory.GetTriangleColliderForHlmt(map, hlmt, damageLevel) }; return(body); }