Преглед изворни кода

Merge pull request #1175 from PixiEditor/fix/duplicating-folder-frames

Fix/duplicating folder frames
Krzysztof Krysiński пре 2 дана
родитељ
комит
b84d0e6681

+ 7 - 3
src/PixiEditor.ChangeableDocument/Changes/Animation/CreateAnimationDataFromFolder_Change.cs

@@ -41,12 +41,16 @@ internal class CreateAnimationDataFromFolder_Change : Change
             if(node is not LayerNode) continue;
             foreach (var frame in node.KeyFrames)
             {
+                if(frame.StartFrame == 0 && frame.Duration == 0) continue;
                 Guid keyFrameId = frame.KeyFrameGuid;
-                target.AnimationData.AddKeyFrame(new RasterKeyFrame(keyFrameId, folder.Id, frame.StartFrame, target)
+                target.AnimationData.AddKeyFrame(new RasterKeyFrame(keyFrameId, node.Id, frame.StartFrame, target)
                 {
-                    Duration = frame.Duration
+                    Duration = frame.Duration,
+                    IsVisible = frame.IsVisible,
                 });
-                infos.Add(new CreateRasterKeyFrame_ChangeInfo(folder.Id, frame.StartFrame, keyFrameId, true));
+                infos.Add(new CreateRasterKeyFrame_ChangeInfo(node.Id, frame.StartFrame, keyFrameId, true));
+                infos.Add(new KeyFrameLength_ChangeInfo(keyFrameId, frame.StartFrame, frame.Duration));
+                infos.Add(new KeyFrameVisibility_ChangeInfo(keyFrameId, frame.IsVisible));
             }
         }
 

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

@@ -30,9 +30,12 @@ internal class CreateAnimationDataFromLayer_Change : Change
             Guid keyFrameId = frame.KeyFrameGuid;
             target.AnimationData.AddKeyFrame(new RasterKeyFrame(keyFrameId, layer.Id, frame.StartFrame, target)
             {
-                Duration = frame.Duration
+                Duration = frame.Duration,
+                IsVisible = frame.IsVisible,
             });
             infos.Add(new CreateRasterKeyFrame_ChangeInfo(layer.Id, frame.StartFrame, keyFrameId, true));
+            infos.Add(new KeyFrameLength_ChangeInfo(keyFrameId, frame.StartFrame, frame.Duration));
+            infos.Add(new KeyFrameVisibility_ChangeInfo(keyFrameId, frame.IsVisible));
         }
 
         ignoreInUndo = false;