Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }