Ejemplo n.º 1
0
        public static VrmProtobuf.VRMCSpringBone.Types.ColliderGroup ToGltf(this SpringBoneColliderGroup x, List <Node> nodes)
        {
            var node          = nodes.IndexOfThrow(x.Node);
            var colliderGroup = new VrmProtobuf.VRMCSpringBone.Types.ColliderGroup
            {
                Node = node,
            };

            foreach (var y in x.Colliders)
            {
                var collider = new VrmProtobuf.VRMCSpringBone.Types.ColliderGroup.Types.Collider
                {
                    Type   = (VrmProtobuf.VRMCSpringBone.Types.ColliderGroup.Types.ColliderTypes)y.ColliderType,
                    Radius = y.Radius,
                };
                collider.Offset.Add(y.Offset.X);
                collider.Offset.Add(y.Offset.Y);
                collider.Offset.Add(y.Offset.Z);
                if (y.ColliderType == VrmSpringBoneColliderTypes.Capsule)
                {
                    collider.Tail.Add(y.CapsuleTail.X);
                    collider.Tail.Add(y.CapsuleTail.Y);
                    collider.Tail.Add(y.CapsuleTail.Z);
                }
                colliderGroup.Colliders.Add(collider);
            }
            return(colliderGroup);
        }
Ejemplo n.º 2
0
        static VrmSpringBoneCollider CreateCollider(VrmProtobuf.VRMCSpringBone.Types.ColliderGroup.Types.Collider z)
        {
            switch (z.Type)
            {
            case VrmProtobuf.VRMCSpringBone.Types.ColliderGroup.Types.ColliderTypes.Sphere:
                return(VrmSpringBoneCollider.CreateSphere(z.Offset.ToVector3(), z.Radius));

            case VrmProtobuf.VRMCSpringBone.Types.ColliderGroup.Types.ColliderTypes.Capsule:
                return(VrmSpringBoneCollider.CreateCapsule(z.Offset.ToVector3(), z.Radius, z.Tail.ToVector3()));
            }

            throw new Exception();
        }