Exemple #1
0
        public DynamicBoneConfiguration(GameObject gameObject)
        {
            foreach (var bone in gameObject.GetComponentsInChildren <DynamicBone>())
            {
                DynamicBones.Add(SerializableDynamicBone.FromDynamicBone(bone));
            }

            foreach (var collider in gameObject.GetComponentsInChildren <DynamicBoneCollider>())
            {
                DynamicBoneColliders.Add(SerializableDynamicBoneCollider.FromDynamicBoneCollider(collider));
            }
        }
Exemple #2
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);
        }