|
@@ -1,6 +1,8 @@
|
|
|
using ChunkyImageLib.Operations;
|
|
|
using PixiEditor.ChangeableDocument.Changeables.Animations;
|
|
|
using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces;
|
|
|
+using PixiEditor.ChangeableDocument.Changeables.Interfaces;
|
|
|
+using PixiEditor.ChangeableDocument.ChangeInfos.Properties;
|
|
|
using PixiEditor.ChangeableDocument.Enums;
|
|
|
using PixiEditor.ChangeableDocument.Helpers;
|
|
|
using PixiEditor.ChangeableDocument.Rendering;
|
|
@@ -169,6 +171,33 @@ public abstract class StructureNode : Node, IReadOnlyStructureNode, IBackgroundI
|
|
|
|
|
|
public abstract RectD? GetTightBounds(KeyFrameTime frameTime);
|
|
|
|
|
|
+
|
|
|
+ public override void SerializeAdditionalData(Dictionary<string, object> additionalData)
|
|
|
+ {
|
|
|
+ base.SerializeAdditionalData(additionalData);
|
|
|
+ if (EmbeddedMask != null)
|
|
|
+ {
|
|
|
+ additionalData["embeddedMask"] = EmbeddedMask;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ internal override OneOf<None, IChangeInfo, List<IChangeInfo>> DeserializeAdditionalData(IReadOnlyDocument target, IReadOnlyDictionary<string, object> data)
|
|
|
+ {
|
|
|
+ base.DeserializeAdditionalData(target, data);
|
|
|
+ bool hasMask = data.ContainsKey("embeddedMask");
|
|
|
+ if (hasMask)
|
|
|
+ {
|
|
|
+ ChunkyImage? mask = (ChunkyImage?)data["embeddedMask"];
|
|
|
+
|
|
|
+ EmbeddedMask?.Dispose();
|
|
|
+ EmbeddedMask = mask;
|
|
|
+
|
|
|
+ return new List<IChangeInfo> { new StructureMemberMask_ChangeInfo(Id, mask != null) };
|
|
|
+ }
|
|
|
+
|
|
|
+ return new None();
|
|
|
+ }
|
|
|
+
|
|
|
public override void Dispose()
|
|
|
{
|
|
|
base.Dispose();
|