Exemple #1
0
        public static SerializableDynamicBoneCollider FromDynamicBoneCollider(DynamicBoneCollider collider)
        {
            Debug.Log($"Convert DynamicBoneCollider to serializable: {collider.name}");

            var serializableCollider = new SerializableDynamicBoneCollider();

            serializableCollider.TransformScale = collider.transform.lossyScale;
            serializableCollider.AttachedTo     = HierarchyPath.FromTransform(collider.transform);

            // Copy values
            serializableCollider.m_Direction = collider.m_Direction;
            serializableCollider.m_Center    = collider.m_Center;
            serializableCollider.m_Bound     = collider.m_Bound;
            serializableCollider.m_Radius    = collider.m_Radius;
            serializableCollider.m_Height    = collider.m_Height;

            return(serializableCollider);
        }
        // Convert from VRMSpringBoneCollider
        public static SerializableSpringBoneColliderGroup FromSpringBoneColliderGroup(VRMSpringBoneColliderGroup colliderGroup)
        {
            Debug.Log($"Convert SpringBoneColliderGroup to serializable: Root={colliderGroup.transform.name}");

            var serializableCollider = new SerializableSpringBoneColliderGroup();

            serializableCollider.AttachedTo = HierarchyPath.FromTransform(colliderGroup.transform);

            // Copy values
            if (colliderGroup.Colliders != null)
            {
                foreach (var collider in colliderGroup.Colliders)
                {
                    serializableCollider.Colliders.Add(new SerializableSpringBoneCollider(collider.Offset, collider.Radius));
                }
            }

            return(serializableCollider);
        }
Exemple #3
0
        public static SerializableDynamicBone FromDynamicBone(DynamicBone bone)
        {
            Debug.Log($"Convert DynamicBone to serializable: Root={bone.m_Root?.name}");

            var serializableBone = new SerializableDynamicBone();

            serializableBone.AttachedTo     = HierarchyPath.FromTransform(bone.gameObject.transform);
            serializableBone.TransformScale = bone.gameObject.transform.lossyScale;

            // Copy values
            serializableBone.m_Root              = HierarchyPath.FromTransform(bone.m_Root);
            serializableBone.m_UpdateRate        = bone.m_UpdateRate;
            serializableBone.m_UpdateMode        = bone.m_UpdateMode;
            serializableBone.m_Damping           = bone.m_Damping;
            serializableBone.m_DampingDistrib    = bone.m_DampingDistrib;
            serializableBone.m_Elasticity        = bone.m_Elasticity;
            serializableBone.m_ElasticityDistrib = bone.m_ElasticityDistrib;
            serializableBone.m_Stiffness         = bone.m_Stiffness;
            serializableBone.m_StiffnessDistrib  = bone.m_StiffnessDistrib;
            serializableBone.m_Inert             = bone.m_Inert;
            serializableBone.m_InertDistrib      = bone.m_InertDistrib;
            serializableBone.m_Radius            = bone.m_Radius;
            serializableBone.m_RadiusDistrib     = bone.m_RadiusDistrib;
            serializableBone.m_EndLength         = bone.m_EndLength;
            serializableBone.m_EndOffset         = bone.m_EndOffset;
            serializableBone.m_Gravity           = bone.m_Gravity;
            serializableBone.m_Force             = bone.m_Force;
            if (bone.m_Colliders != null)
            {
                serializableBone.m_Colliders = bone.m_Colliders.Select(c => HierarchyPath.FromTransform(c.gameObject.transform)).ToList();
            }
            if (bone.m_Exclusions != null)
            {
                serializableBone.m_Exclusions = bone.m_Exclusions.Select(e => HierarchyPath.FromTransform(e)).ToList();
            }
            serializableBone.m_FreezeAxis       = bone.m_FreezeAxis;
            serializableBone.m_DistantDisable   = bone.m_DistantDisable;
            serializableBone.m_ReferenceObject  = HierarchyPath.FromTransform(bone.m_ReferenceObject);
            serializableBone.m_DistanceToObject = bone.m_DistanceToObject;

            return(serializableBone);
        }
        public static SerializableSpringBone FromSpringBone(VRMSpringBone bone)
        {
            Debug.Log($"Convert SpringBone to serializable: Root={bone.RootBones[0].name}");

            var serializableBone = new SerializableSpringBone();

            serializableBone.AttachedTo = HierarchyPath.FromTransform(bone.gameObject.transform);

            // Copy values
            serializableBone.m_comment        = bone.m_comment;
            serializableBone.m_stiffnessForce = bone.m_stiffnessForce;
            serializableBone.m_gravityPower   = bone.m_gravityPower;
            serializableBone.m_gravityDir     = bone.m_gravityDir;
            serializableBone.m_dragForce      = bone.m_dragForce;
            if (bone.m_center != null)
            {
                serializableBone.m_center = HierarchyPath.FromTransform(bone.m_center);
            }
            if (bone.RootBones != null)
            {
                foreach (var rootBone in bone.RootBones)
                {
                    serializableBone.RootBones.Add(HierarchyPath.FromTransform(rootBone));
                }
            }
            serializableBone.m_hitRadius = bone.m_hitRadius;
            if (bone.ColliderGroups != null)
            {
                foreach (var colliderGroup in bone.ColliderGroups)
                {
                    serializableBone.ColliderGroups.Add(HierarchyPath.FromTransform(colliderGroup.transform));
                }
            }

            return(serializableBone);
        }