Browse Source

Fixed redo delete keyframes and made frames 1 length

flabbet 9 months ago
parent
commit
8afe0e5f44

+ 4 - 0
src/PixiEditor.ChangeableDocument/Changeables/Animations/AnimationData.cs

@@ -28,6 +28,10 @@ internal class AnimationData : IReadOnlyAnimationData
         else if (keyFrame is GroupKeyFrame groupKeyFrame)
         {
             keyFrames.Add(groupKeyFrame);
+            foreach (var child in groupKeyFrame.Children)
+            {
+                SubscribeToKeyFrameEvents(child);
+            }
         }
         else
         {

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changeables/Animations/KeyFrameData.cs

@@ -46,7 +46,7 @@ public class KeyFrameData : IDisposable, IReadOnlyKeyFrameData
 
     public bool IsInFrame(int frame)
     {
-        return IsVisible && frame >= StartFrame && frame <= StartFrame + Duration;
+        return IsVisible && frame >= StartFrame && frame < StartFrame + Duration;
     }
 
     public void Dispose()

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/Node.cs

@@ -375,7 +375,7 @@ public abstract class Node : IReadOnlyNode, IDisposable
                 Data = keyFrame.Data is ICloneable cloneable ? cloneable.Clone() : keyFrame.Data
             };
 
-            clone.keyFrames.Add(newKeyFrame);
+            clone.AddFrame(newKeyFrame.KeyFrameGuid, newKeyFrame);
         }
 
         return clone;

+ 1 - 1
src/PixiEditor/Helpers/Converters/DurationToWidthConverter.cs

@@ -20,7 +20,7 @@ internal class DurationToWidthConverter : SingleInstanceMultiValueConverter<Dura
         
         if(values[0] is int duration && values[1] is double scale)
         {
-            return scale * duration;
+            return scale * (duration - 1);
         }
         
         return 0.0;

+ 2 - 2
src/PixiEditor/Views/Animations/KeyFrame.cs

@@ -123,7 +123,7 @@ internal class KeyFrame : TemplatedControl
         
         if (e.GetCurrentPoint(_resizePanelRight).Properties.IsLeftButtonPressed)
         {
-            Item.ChangeFrameLength(Item.StartFrameBindable, MousePosToFrame(e) - Item.StartFrameBindable);
+            Item.ChangeFrameLength(Item.StartFrameBindable, MousePosToFrame(e) - Item.StartFrameBindable + 1);
         }
         
         e.Handled = true;
@@ -146,7 +146,7 @@ internal class KeyFrame : TemplatedControl
             }
             
             int oldStartFrame = Item.StartFrameBindable;
-            Item.ChangeFrameLength(frame, Item.DurationBindable + oldStartFrame - frame);
+            Item.ChangeFrameLength(frame, Item.DurationBindable + oldStartFrame - frame + 1);
         }
         
         e.Handled = true;