From a01ef4a7921f1aad87602ebbdc050c75c9054ae1 Mon Sep 17 00:00:00 2001 From: 4sval Date: Tue, 14 Feb 2023 19:23:37 +0100 Subject: [PATCH] this is a problem for later me --- .../Snooper/Models/Animations/Sequence.cs | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/FModel/Views/Snooper/Models/Animations/Sequence.cs b/FModel/Views/Snooper/Models/Animations/Sequence.cs index 5efb28d1..2f3d88b6 100644 --- a/FModel/Views/Snooper/Models/Animations/Sequence.cs +++ b/FModel/Views/Snooper/Models/Animations/Sequence.cs @@ -34,16 +34,6 @@ public class Sequence : IDisposable public Sequence(Skeleton skeleton, CAnimSet anim, CAnimSequence sequence, bool rotationOnly) : this(sequence) { BonesTransform = new Transform[skeleton.BoneCount][]; - for (int boneIndex = 0; boneIndex < BonesTransform.Length; boneIndex++) - { - BonesTransform[boneIndex] = new Transform[sequence.NumFrames]; - for (int frame = 0; frame < BonesTransform[boneIndex].Length; frame++) - { - // calculate position for not animated bones based on the parent??? - BonesTransform[boneIndex][frame] = skeleton.BonesTransformByIndex[boneIndex]; - } - } - for (int trackIndex = 0; trackIndex < anim.TrackBonesInfo.Length; trackIndex++) { var bone = anim.TrackBonesInfo[trackIndex]; @@ -123,6 +113,25 @@ public class Sequence : IDisposable }; } } + + foreach (var boneIndices in skeleton.BonesIndicesByLoweredName.Values) + { + if (BonesTransform[boneIndices.Index] != null) continue; + + var old = skeleton.BonesTransformByIndex[boneIndices.Index]; + + BonesTransform[boneIndices.Index] = new Transform[sequence.NumFrames]; + for (int frame = 0; frame < BonesTransform[boneIndices.Index].Length; frame++) + { + BonesTransform[boneIndices.Index][frame] = new Transform + { + Relation = BonesTransform[boneIndices.ParentIndex][frame].Matrix, + Rotation = old.Rotation, + Position = old.Position, + Scale = old.Scale + }; + } + } } public void Dispose()