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