Browse Source

Fixed importing images and deleting keyframes

Krzysztof Krysiński 3 months ago
parent
commit
0bfb1f5943

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

@@ -509,7 +509,8 @@ public abstract class Node : IReadOnlyNode, IDisposable
 
         foreach (var keyFrame in keyFrames)
         {
-            KeyFrameData newKeyFrame = new KeyFrameData(keyFrame.KeyFrameGuid, keyFrame.StartFrame, keyFrame.Duration,
+            Guid newGuid = Guid.NewGuid();
+            KeyFrameData newKeyFrame = new KeyFrameData(newGuid, keyFrame.StartFrame, keyFrame.Duration,
                 keyFrame.AffectedElement)
             {
                 IsVisible = keyFrame.IsVisible,
@@ -517,7 +518,7 @@ public abstract class Node : IReadOnlyNode, IDisposable
                 Data = keyFrame.Data is ICloneable cloneable ? cloneable.Clone() : keyFrame.Data
             };
 
-            clone.AddFrame(newKeyFrame.KeyFrameGuid, newKeyFrame);
+            clone.AddFrame(newGuid, newKeyFrame);
         }
 
         return clone;

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changes/Animation/CreateAnimationDataFromLayer_Change.cs

@@ -27,7 +27,7 @@ internal class CreateAnimationDataFromLayer_Change : Change
         List<IChangeInfo> infos = new List<IChangeInfo>();
         foreach (var frame in layer.KeyFrames)
         {
-            Guid keyFrameId = Guid.NewGuid();
+            Guid keyFrameId = frame.KeyFrameGuid;
             target.AnimationData.AddKeyFrame(new RasterKeyFrame(keyFrameId, layer.Id, frame.StartFrame, target)
             {
                 Duration = frame.Duration

+ 13 - 0
src/PixiEditor.ChangeableDocument/Changes/Structure/ImportLayer_Change.cs

@@ -58,6 +58,7 @@ internal class ImportLayer_Change : Change
 
         var clone = (LayerNode)layerNode.Clone();
         clone.Id = duplicateGuid;
+        ResizeImageData(clone, target.Size);
 
         var targetInput = target.NodeGraph.OutputNode?.InputProperties.FirstOrDefault(x =>
             x.ValueType == typeof(Painter)) as InputProperty<Painter?>;
@@ -108,5 +109,17 @@ internal class ImportLayer_Change : Change
     {
         sourceDocumentPipe?.Dispose();
     }
+
+    private void ResizeImageData(LayerNode layerNode, VecI docSize)
+    {
+        foreach (var imageData in layerNode.KeyFrames)
+        {
+            if (imageData.Data is ChunkyImage img)
+            {
+                img.EnqueueResize(docSize);
+                img.CommitChanges();
+            }
+        }
+    }
 }