1
0
mirror of https://github.com/originalnicodr/CinematicUnityExplorer.git synced 2025-07-18 17:38:01 +08:00

Added a helper method to copy cached transform data into a transform and fixed a bug when looking for bones for the bones panel.

This commit is contained in:
originalnicodr
2024-07-28 20:31:37 -03:00
parent f3b48bf069
commit a6446c50e4
3 changed files with 10 additions and 13 deletions

View File

@ -132,7 +132,7 @@ namespace UnityExplorer.UI.Panels
meshes.AddRange(skinnedMesh.bones);
}
meshes.AddRange(extraMeshes.Select(m => m.transform));
meshes.RemoveAll(item => item == null);
return meshes.GroupBy(b => b.name).Select(b => b.First()).ToList().OrderBy(b => b.name).ToList();
}

View File

@ -78,5 +78,11 @@ namespace UnityExplorer.Serializers
public readonly Vector3 position;
public readonly Vector3 angles;
public readonly Vector3 scale;
public void CopyToTransform(Transform transform){
transform.localPosition = position;
transform.localEulerAngles = angles;
transform.localScale = scale;
}
}
}

View File

@ -128,10 +128,7 @@ namespace UnityExplorer.UI.Panels
// Restore meshes manually in case some are not part of a skeleton and won't get restored automatically.
// Besides, this restores the scale, which the animator doesn't.
foreach (Transform bone in bones){
CachedBonesTransform CachedBonesTransform = bonesOriginalState[bone.name];
bone.localPosition = CachedBonesTransform.position;
bone.localEulerAngles = CachedBonesTransform.angles;
bone.localScale = CachedBonesTransform.scale;
bonesOriginalState[bone.name].CopyToTransform(bone);
// We assume these were on before. If not we should save its state beforehand.
bone.gameObject.SetActive(true);
}
@ -148,10 +145,7 @@ namespace UnityExplorer.UI.Panels
{
foreach (Transform bone in bones){
if (bone.name == boneName){
CachedBonesTransform cachedBonesTransform = bonesOriginalState[boneName];
bone.localPosition = cachedBonesTransform.position;
bone.localEulerAngles = cachedBonesTransform.angles;
bone.localScale = cachedBonesTransform.scale;
bonesOriginalState[boneName].CopyToTransform(bone);
return;
}
}
@ -216,10 +210,7 @@ namespace UnityExplorer.UI.Panels
deserializedDict.TryGetValue(boneTransform.name, out cachedTransformList);
if (cachedTransformList != null && cachedTransformList.Count > 0){
CachedBonesTransform cachedTransform = cachedTransformList[0];
boneTransform.localPosition = cachedTransform.position;
boneTransform.localEulerAngles = cachedTransform.angles;
boneTransform.localScale = cachedTransform.scale;
cachedTransform.CopyToTransform(boneTransform);
cachedTransformList.RemoveAt(0);
if (cachedTransformList.Count == 0) {