public static int SmallestComponentIndex(this MWVector3 _this) { var largest = _this.SmallestComponentValue(); if (largest == _this.X) { return(0); } else if (largest == _this.Y) { return(1); } else { return(2); } }
internal ColliderGeometry ConvertPrimToCollider(PrimitiveDefinition prim, Guid meshId) { MWVector3 dims = prim.Dimensions; switch (prim.Shape) { case PrimitiveShape.Sphere: return(new SphereColliderGeometry() { Radius = dims.SmallestComponentValue() / 2 }); case PrimitiveShape.Box: return(new BoxColliderGeometry() { Size = dims ?? new MWVector3(1, 1, 1) }); case PrimitiveShape.Capsule: return(new CapsuleColliderGeometry() { Size = dims }); case PrimitiveShape.Cylinder: dims = dims ?? new MWVector3(0.2f, 1, 0.2f); return(new MeshColliderGeometry() { MeshId = meshId }); case PrimitiveShape.Plane: dims = dims ?? new MWVector3(1, 0, 1); return(new BoxColliderGeometry() { Size = new MWVector3(Mathf.Max(dims.X, 0.01f), Mathf.Max(dims.Y, 0.01f), Mathf.Max(dims.Z, 0.01f)) }); default: return(null); } }