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