flabbet преди 1 година
родител
ревизия
634572f3e0
променени са 1 файла, в които са добавени 8 реда и са изтрити 5 реда
  1. 8 5
      src/PixiEditor.AvaloniaUI/Models/Rendering/MemberPreviewUpdater.cs

+ 8 - 5
src/PixiEditor.AvaloniaUI/Models/Rendering/MemberPreviewUpdater.cs

@@ -211,7 +211,7 @@ internal class MemberPreviewUpdater
             IStructureMemberHandler member = doc.StructureHelper.FindOrThrow(guid);
 
             bool hasAnimation = doc.AnimationHandler.FindKeyFrame<IKeyFrameGroupHandler>(guid, out IKeyFrameGroupHandler? animationGroup);
-            IKeyFrameHandler? keyFrame = hasAnimation ? animationGroup!.Children.ElementAtOrDefault(doc.AnimationHandler.ActiveFrameBindable) : null;
+            IKeyFrameHandler? keyFrame = hasAnimation ? animationGroup!.Children.FirstOrDefault(x => IsWithinRange(x, doc.AnimationHandler.ActiveFrameBindable)) : null;
 
             if (newSize is null)
             {
@@ -495,11 +495,9 @@ internal class MemberPreviewUpdater
                 {
                     if (keyFrame is IKeyFrameGroupHandler group)
                     {
-                        if (group.Children.Count > doc.AnimationHandler.ActiveFrameBindable)
-                        {
-                            var target = group.Children[doc.AnimationHandler.ActiveFrameBindable];
+                        var target = group.Children.FirstOrDefault(x => IsWithinRange(x, doc.AnimationHandler.ActiveFrameBindable));
+                        if (target is not null)
                             RenderAnimationFramePreview(memberVM, target);
-                        }
                     }
                 }
                 
@@ -516,6 +514,11 @@ internal class MemberPreviewUpdater
             }
         }
     }
+    
+    private static bool IsWithinRange(IKeyFrameHandler keyFrame, int frame)
+    {
+        return keyFrame.StartFrameBindable <= frame && frame < keyFrame.StartFrameBindable + keyFrame.DurationBindable;
+    }
 
     /// <summary>
     /// Re-render the <paramref name="area"/> of the main preview of the <paramref name="memberVM"/> folder