Browse Source

Changed input value logic

flabbet 1 year ago
parent
commit
152545745b
15 changed files with 63 additions and 62 deletions
  1. 25 8
      src/PixiEditor.ChangeableDocument/Changeables/Graph/InputProperty.cs
  2. 4 2
      src/PixiEditor.ChangeableDocument/Changeables/Graph/Interfaces/INodeProperty.cs
  3. 2 2
      src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/ImageLayerNode.cs
  4. 2 2
      src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/MergeNode.cs
  5. 0 13
      src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/Node.cs
  6. 1 1
      src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/OutputNode.cs
  7. 0 5
      src/PixiEditor.ChangeableDocument/Changeables/Graph/OutputProperty.cs
  8. 3 3
      src/PixiEditor.ChangeableDocument/Changes/Drawing/ApplyLayerMask_Change.cs
  9. 3 3
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/CreateStructureMemberMask_Change.cs
  10. 3 3
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/DeleteStructureMemberMask_Change.cs
  11. 4 4
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberBlendMode_Change.cs
  12. 4 4
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberClipToMemberBelow_Change.cs
  13. 4 4
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberIsVisible_Change.cs
  14. 4 4
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberMaskIsVisible_Change.cs
  15. 4 4
      src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberOpacity_UpdateableChange.cs

+ 25 - 8
src/PixiEditor.ChangeableDocument/Changeables/Graph/InputProperty.cs

@@ -5,9 +5,21 @@ namespace PixiEditor.ChangeableDocument.Changeables.Graph;
 
 
 public class InputProperty : IInputProperty
 public class InputProperty : IInputProperty
 {
 {
+    private object _internalValue;
     public string InternalPropertyName { get; }
     public string InternalPropertyName { get; }
     public string DisplayName { get; }
     public string DisplayName { get; }
-    public object Value { get; set; }
+
+    public object Value
+    {
+        get => Connection != null ? Connection.Value : _internalValue;
+    }
+    
+    public object NonOverridenValue
+    {
+        get => _internalValue;
+        set => _internalValue = value;
+    }
+    
     public Node Node { get; }
     public Node Node { get; }
     public Type ValueType { get; } 
     public Type ValueType { get; } 
     IReadOnlyNode INodeProperty.Node => Node;
     IReadOnlyNode INodeProperty.Node => Node;
@@ -18,22 +30,22 @@ public class InputProperty : IInputProperty
     {
     {
         InternalPropertyName = internalName;
         InternalPropertyName = internalName;
         DisplayName = displayName;
         DisplayName = displayName;
-        Value = defaultValue;
+        _internalValue = defaultValue;
         Node = node;
         Node = node;
         ValueType = valueType;
         ValueType = valueType;
     }
     }
 
 
     public InputProperty Clone(Node forNode)
     public InputProperty Clone(Node forNode)
     {
     {
-        if(Value is ICloneable cloneable)
+        if(NonOverridenValue is ICloneable cloneable)
             return new InputProperty(forNode, InternalPropertyName, DisplayName, cloneable.Clone(), ValueType);
             return new InputProperty(forNode, InternalPropertyName, DisplayName, cloneable.Clone(), ValueType);
 
 
-        if (Value is Enum enumVal)
+        if (NonOverridenValue is Enum enumVal)
         {
         {
             return new InputProperty(forNode, InternalPropertyName, DisplayName, enumVal, ValueType);
             return new InputProperty(forNode, InternalPropertyName, DisplayName, enumVal, ValueType);
         }
         }
 
 
-        if (Value is null)
+        if (NonOverridenValue is null)
         {
         {
             object? nullValue = null;
             object? nullValue = null;
             if (ValueType.IsValueType)
             if (ValueType.IsValueType)
@@ -44,10 +56,10 @@ public class InputProperty : IInputProperty
             return new InputProperty(forNode, InternalPropertyName, DisplayName, nullValue, ValueType);
             return new InputProperty(forNode, InternalPropertyName, DisplayName, nullValue, ValueType);
         }
         }
         
         
-        if(!Value.GetType().IsPrimitive && Value.GetType() != typeof(string))
+        if(!NonOverridenValue.GetType().IsPrimitive && NonOverridenValue.GetType() != typeof(string))
             throw new InvalidOperationException("Value is not cloneable and not a primitive type");
             throw new InvalidOperationException("Value is not cloneable and not a primitive type");
         
         
-        return new InputProperty(forNode, InternalPropertyName, DisplayName, Value, ValueType);
+        return new InputProperty(forNode, InternalPropertyName, DisplayName, NonOverridenValue, ValueType);
     }
     }
 }
 }
 
 
@@ -57,7 +69,12 @@ public class InputProperty<T> : InputProperty, IInputProperty<T>
     public new T Value
     public new T Value
     {
     {
         get => (T)base.Value;
         get => (T)base.Value;
-        set => base.Value = value;
+    }
+
+    public T NonOverridenValue
+    {
+        get => (T)base.NonOverridenValue;
+        set => base.NonOverridenValue = value;
     }
     }
     
     
     internal InputProperty(Node node, string internalName, string displayName, T defaultValue) : base(node, internalName, displayName, defaultValue, typeof(T))
     internal InputProperty(Node node, string internalName, string displayName, T defaultValue) : base(node, internalName, displayName, defaultValue, typeof(T))

+ 4 - 2
src/PixiEditor.ChangeableDocument/Changeables/Graph/Interfaces/INodeProperty.cs

@@ -4,14 +4,14 @@ public interface INodeProperty
 {
 {
     public string InternalPropertyName { get; }
     public string InternalPropertyName { get; }
     public string DisplayName { get; }
     public string DisplayName { get; }
-    public object Value { get; set; }
+    public object Value { get; }
     public IReadOnlyNode Node { get; }
     public IReadOnlyNode Node { get; }
     public Type ValueType { get; }
     public Type ValueType { get; }
 }
 }
 
 
 public interface INodeProperty<T> : INodeProperty
 public interface INodeProperty<T> : INodeProperty
 {
 {
-    public new T Value { get; set; }
+    public new T Value { get; }
 
 
     Type INodeProperty.ValueType => typeof(T);
     Type INodeProperty.ValueType => typeof(T);
 }
 }
@@ -19,6 +19,7 @@ public interface INodeProperty<T> : INodeProperty
 public interface IInputProperty : INodeProperty
 public interface IInputProperty : INodeProperty
 {
 {
     public IOutputProperty? Connection { get; set; }
     public IOutputProperty? Connection { get; set; }
+    public object NonOverridenValue { get; set;  }
 }
 }
 
 
 public interface IOutputProperty : INodeProperty
 public interface IOutputProperty : INodeProperty
@@ -29,6 +30,7 @@ public interface IOutputProperty : INodeProperty
 
 
 public interface IInputProperty<T> : IInputProperty, INodeProperty<T>
 public interface IInputProperty<T> : IInputProperty, INodeProperty<T>
 {
 {
+    public new T NonOverridenValue { get; set; }
 }
 }
 
 
 public interface IOutputProperty<T> : IOutputProperty, INodeProperty<T>
 public interface IOutputProperty<T> : IOutputProperty, INodeProperty<T>

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

@@ -93,8 +93,8 @@ public class ImageLayerNode : LayerNode, IReadOnlyImageNode
 
 
     bool ITransparencyLockable.LockTransparency
     bool ITransparencyLockable.LockTransparency
     {
     {
-        get => LockTransparency.Value;
-        set => LockTransparency.Value = value;
+        get => LockTransparency.Value; // TODO: I wonder if it should be NonOverridenValue
+        set => LockTransparency.NonOverridenValue = value;
     }
     }
 
 
     public void SetKeyFrameLength(Guid keyFrameGuid, int startFrame, int duration)
     public void SetKeyFrameLength(Guid keyFrameGuid, int startFrame, int duration)

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

@@ -39,12 +39,12 @@ public class MergeNode : Node
         
         
         if (Bottom.Value != null)
         if (Bottom.Value != null)
         {
         {
-            Output.Value.EnqueueDrawCommitedChunkyImage(VecI.Zero, Bottom.Value);
+            Output.Value.EnqueueDrawUpToDateChunkyImage(VecI.Zero, Bottom.Value);
         }
         }
         
         
         if (Top.Value != null)
         if (Top.Value != null)
         {
         {
-            Output.Value.EnqueueDrawCommitedChunkyImage(VecI.Zero, Top.Value);
+            Output.Value.EnqueueDrawUpToDateChunkyImage(VecI.Zero, Top.Value);
         }
         }
         
         
         Output.Value.CommitChanges();
         Output.Value.CommitChanges();

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

@@ -23,14 +23,6 @@ public abstract class Node : IReadOnlyNode, IDisposable
 
 
     public ChunkyImage? Execute(KeyFrameTime frameTime)
     public ChunkyImage? Execute(KeyFrameTime frameTime)
     {
     {
-        foreach (var input in inputs)
-        {
-            if (input.Connection != null)
-            {
-                input.Value = input.Connection.Value;
-            }
-        }
-
         return OnExecute(frameTime);
         return OnExecute(frameTime);
     }
     }
 
 
@@ -147,11 +139,6 @@ public abstract class Node : IReadOnlyNode, IDisposable
         {
         {
             if (output.Value is IDisposable disposable)
             if (output.Value is IDisposable disposable)
             {
             {
-                foreach (var connection in output.Connections)
-                { 
-                    connection.Value = default!;
-                }
-                
                 disposable.Dispose();
                 disposable.Dispose();
             }
             }
         }
         }

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

@@ -13,7 +13,7 @@ public class OutputNode : Node, IBackgroundInput
     
     
     public override bool Validate()
     public override bool Validate()
     {
     {
-        return Input.Value != null;
+        return Input.Connection != null;
     }
     }
 
 
     public override Node CreateCopy()
     public override Node CreateCopy()

+ 0 - 5
src/PixiEditor.ChangeableDocument/Changeables/Graph/OutputProperty.cs

@@ -12,7 +12,6 @@ public class OutputProperty : IOutputProperty
     public string InternalPropertyName { get; }
     public string InternalPropertyName { get; }
     public string DisplayName { get; }
     public string DisplayName { get; }
     public Node Node { get; }
     public Node Node { get; }
-
     public Type ValueType { get; }
     public Type ValueType { get; }
 
 
     IReadOnlyNode INodeProperty.Node => Node;
     IReadOnlyNode INodeProperty.Node => Node;
@@ -23,10 +22,6 @@ public class OutputProperty : IOutputProperty
         set
         set
         {
         {
             _value = value;
             _value = value;
-            foreach (var connection in Connections)
-            {
-                connection.Value = value;
-            }
         }
         }
     }
     }
 
 

+ 3 - 3
src/PixiEditor.ChangeableDocument/Changes/Drawing/ApplyLayerMask_Change.cs

@@ -48,8 +48,8 @@ internal class ApplyLayerMask_Change : Change
         layer.SetLayerImageAtFrame(frame, newLayerImage);
         layer.SetLayerImageAtFrame(frame, newLayerImage);
         toDispose.Dispose();
         toDispose.Dispose();
 
 
-        var toDisposeMask = layer.Mask.Value;
-        layer.Mask.Value = null;
+        var toDisposeMask = layer.Mask.NonOverridenValue;
+        layer.Mask.NonOverridenValue = null;
         toDisposeMask.Dispose();
         toDisposeMask.Dispose();
 
 
         ignoreInUndo = false;
         ignoreInUndo = false;
@@ -72,7 +72,7 @@ internal class ApplyLayerMask_Change : Change
         savedMask.ApplyChunksToImage(newMask);
         savedMask.ApplyChunksToImage(newMask);
         var affectedChunksMask = newMask.FindAffectedArea();
         var affectedChunksMask = newMask.FindAffectedArea();
         newMask.CommitChanges();
         newMask.CommitChanges();
-        layer.Mask.Value = newMask;
+        layer.Mask.NonOverridenValue = newMask;
 
 
         var layerImage = layer.GetLayerImageAtFrame(frame);
         var layerImage = layer.GetLayerImageAtFrame(frame);
         
         

+ 3 - 3
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/CreateStructureMemberMask_Change.cs

@@ -22,7 +22,7 @@ internal class CreateStructureMemberMask_Change : Change
         var member = target.FindMemberOrThrow(targetMember);
         var member = target.FindMemberOrThrow(targetMember);
         if (member.Mask is not null)
         if (member.Mask is not null)
             throw new InvalidOperationException("Cannot create a mask; the target member already has one");
             throw new InvalidOperationException("Cannot create a mask; the target member already has one");
-        member.Mask.Value = new ChunkyImage(target.Size);
+        member.Mask.NonOverridenValue = new ChunkyImage(target.Size);
 
 
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberMask_ChangeInfo(targetMember, true);
         return new StructureMemberMask_ChangeInfo(targetMember, true);
@@ -33,8 +33,8 @@ internal class CreateStructureMemberMask_Change : Change
         var member = target.FindMemberOrThrow(targetMember);
         var member = target.FindMemberOrThrow(targetMember);
         if (member.Mask is null)
         if (member.Mask is null)
             throw new InvalidOperationException("Cannot delete the mask; the target member has no mask");
             throw new InvalidOperationException("Cannot delete the mask; the target member has no mask");
-        member.Mask.Value.Dispose();
-        member.Mask.Value = null;
+        member.Mask.NonOverridenValue.Dispose();
+        member.Mask.NonOverridenValue = null;
         return new StructureMemberMask_ChangeInfo(targetMember, false);
         return new StructureMemberMask_ChangeInfo(targetMember, false);
     }
     }
 }
 }

+ 3 - 3
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/DeleteStructureMemberMask_Change.cs

@@ -27,8 +27,8 @@ internal class DeleteStructureMemberMask_Change : Change
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
         if (member.Mask is null)
         if (member.Mask is null)
             throw new InvalidOperationException("Cannot delete the mask; Target member has no mask");
             throw new InvalidOperationException("Cannot delete the mask; Target member has no mask");
-        member.Mask.Value.Dispose();
-        member.Mask.Value = null;
+        member.Mask.NonOverridenValue.Dispose();
+        member.Mask.NonOverridenValue = null;
 
 
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberMask_ChangeInfo(memberGuid, false);
         return new StructureMemberMask_ChangeInfo(memberGuid, false);
@@ -39,7 +39,7 @@ internal class DeleteStructureMemberMask_Change : Change
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
         if (member.Mask is not null)
         if (member.Mask is not null)
             throw new InvalidOperationException("Cannot revert mask deletion; The target member already has a mask");
             throw new InvalidOperationException("Cannot revert mask deletion; The target member already has a mask");
-        member.Mask.Value = storedMask!.CloneFromCommitted();
+        member.Mask.NonOverridenValue = storedMask!.CloneFromCommitted();
 
 
         return new StructureMemberMask_ChangeInfo(memberGuid, true);
         return new StructureMemberMask_ChangeInfo(memberGuid, true);
     }
     }

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberBlendMode_Change.cs

@@ -17,16 +17,16 @@ internal class StructureMemberBlendMode_Change : Change
 
 
     public override bool InitializeAndValidate(Document target)
     public override bool InitializeAndValidate(Document target)
     {
     {
-        if (!target.TryFindMember(targetGuid, out var member) || member.BlendMode.Value == newBlendMode)
+        if (!target.TryFindMember(targetGuid, out var member) || member.BlendMode.NonOverridenValue == newBlendMode)
             return false;
             return false;
-        originalBlendMode = member.BlendMode.Value;
+        originalBlendMode = member.BlendMode.NonOverridenValue;
         return true;
         return true;
     }
     }
 
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {
     {
         var member = target.FindMemberOrThrow(targetGuid);
         var member = target.FindMemberOrThrow(targetGuid);
-        member.BlendMode.Value = newBlendMode;
+        member.BlendMode.NonOverridenValue = newBlendMode;
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberBlendMode_ChangeInfo(targetGuid, newBlendMode);
         return new StructureMemberBlendMode_ChangeInfo(targetGuid, newBlendMode);
     }
     }
@@ -34,7 +34,7 @@ internal class StructureMemberBlendMode_Change : Change
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     {
     {
         var member = target.FindMemberOrThrow(targetGuid);
         var member = target.FindMemberOrThrow(targetGuid);
-        member.BlendMode.Value = originalBlendMode;
+        member.BlendMode.NonOverridenValue = originalBlendMode;
         return new StructureMemberBlendMode_ChangeInfo(targetGuid, originalBlendMode);
         return new StructureMemberBlendMode_ChangeInfo(targetGuid, originalBlendMode);
     }
     }
 
 

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberClipToMemberBelow_Change.cs

@@ -16,16 +16,16 @@ internal class StructureMemberClipToMemberBelow_Change : Change
 
 
     public override bool InitializeAndValidate(Document target)
     public override bool InitializeAndValidate(Document target)
     {
     {
-        if (!target.TryFindMember(memberGuid, out var member) || member.ClipToMemberBelow.Value == newValue)
+        if (!target.TryFindMember(memberGuid, out var member) || member.ClipToMemberBelow.NonOverridenValue == newValue)
             return false;
             return false;
-        originalValue = member.ClipToMemberBelow.Value;
+        originalValue = member.ClipToMemberBelow.NonOverridenValue;
         return true;
         return true;
     }
     }
 
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {
     {
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
-        member.ClipToMemberBelow.Value = newValue;
+        member.ClipToMemberBelow.NonOverridenValue = newValue;
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberClipToMemberBelow_ChangeInfo(memberGuid, newValue);
         return new StructureMemberClipToMemberBelow_ChangeInfo(memberGuid, newValue);
     }
     }
@@ -33,7 +33,7 @@ internal class StructureMemberClipToMemberBelow_Change : Change
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     {
     {
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
-        member.ClipToMemberBelow.Value = originalValue;
+        member.ClipToMemberBelow.NonOverridenValue = originalValue;
         return new StructureMemberClipToMemberBelow_ChangeInfo(memberGuid, originalValue);
         return new StructureMemberClipToMemberBelow_ChangeInfo(memberGuid, originalValue);
     }
     }
 
 

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberIsVisible_Change.cs

@@ -16,9 +16,9 @@ internal class StructureMemberIsVisible_Change : Change
 
 
     public override bool InitializeAndValidate(Document target)
     public override bool InitializeAndValidate(Document target)
     {
     {
-        if (!target.TryFindMember(targetMember, out var member) || member.IsVisible.Value == newIsVisible)
+        if (!target.TryFindMember(targetMember, out var member) || member.IsVisible.NonOverridenValue == newIsVisible)
             return false;
             return false;
-        originalIsVisible = member.IsVisible.Value;
+        originalIsVisible = member.IsVisible.NonOverridenValue;
         return true;
         return true;
     }
     }
 
 
@@ -26,13 +26,13 @@ internal class StructureMemberIsVisible_Change : Change
     {
     {
         // don't record layer/folder visibility changes - it's just more convenient this way
         // don't record layer/folder visibility changes - it's just more convenient this way
         ignoreInUndo = true;
         ignoreInUndo = true;
-        target.FindMemberOrThrow(targetMember).IsVisible.Value = newIsVisible;
+        target.FindMemberOrThrow(targetMember).IsVisible.NonOverridenValue = newIsVisible;
         return new StructureMemberIsVisible_ChangeInfo(targetMember, newIsVisible);
         return new StructureMemberIsVisible_ChangeInfo(targetMember, newIsVisible);
     }
     }
 
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     {
     {
-        target.FindMemberOrThrow(targetMember).IsVisible.Value = originalIsVisible!.Value;
+        target.FindMemberOrThrow(targetMember).IsVisible.NonOverridenValue = originalIsVisible!.Value;
         return new StructureMemberIsVisible_ChangeInfo(targetMember, (bool)originalIsVisible);
         return new StructureMemberIsVisible_ChangeInfo(targetMember, (bool)originalIsVisible);
     }
     }
 }
 }

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberMaskIsVisible_Change.cs

@@ -16,17 +16,17 @@ internal class StructureMemberMaskIsVisible_Change : Change
 
 
     public override bool InitializeAndValidate(Document target)
     public override bool InitializeAndValidate(Document target)
     {
     {
-        if (!target.TryFindMember(memberGuid, out var member) || member.MaskIsVisible.Value == newMaskIsVisible)
+        if (!target.TryFindMember(memberGuid, out var member) || member.MaskIsVisible.NonOverridenValue == newMaskIsVisible)
             return false;
             return false;
         
         
-        originalMaskIsVisible = member.MaskIsVisible.Value;
+        originalMaskIsVisible = member.MaskIsVisible.NonOverridenValue;
         return true;
         return true;
     }
     }
 
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
     {
     {
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
-        member.MaskIsVisible.Value = newMaskIsVisible;
+        member.MaskIsVisible.NonOverridenValue = newMaskIsVisible;
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberMaskIsVisible_ChangeInfo(memberGuid, newMaskIsVisible);
         return new StructureMemberMaskIsVisible_ChangeInfo(memberGuid, newMaskIsVisible);
     }
     }
@@ -34,7 +34,7 @@ internal class StructureMemberMaskIsVisible_Change : Change
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
     {
     {
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
-        member.MaskIsVisible.Value = originalMaskIsVisible;
+        member.MaskIsVisible.NonOverridenValue = originalMaskIsVisible;
         return new StructureMemberMaskIsVisible_ChangeInfo(memberGuid, originalMaskIsVisible);
         return new StructureMemberMaskIsVisible_ChangeInfo(memberGuid, originalMaskIsVisible);
     }
     }
 
 

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changes/Properties/LayerStructure/StructureMemberOpacity_UpdateableChange.cs

@@ -26,14 +26,14 @@ internal class StructureMemberOpacity_UpdateableChange : UpdateableChange
     {
     {
         if (!document.TryFindMember(memberGuid, out var member))
         if (!document.TryFindMember(memberGuid, out var member))
             return false;
             return false;
-        originalOpacity = member.Opacity.Value;
+        originalOpacity = member.Opacity.NonOverridenValue;
         return true;
         return true;
     }
     }
 
 
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> ApplyTemporarily(Document target)
     public override OneOf<None, IChangeInfo, List<IChangeInfo>> ApplyTemporarily(Document target)
     {
     {
         var member = target.FindMemberOrThrow(memberGuid);
         var member = target.FindMemberOrThrow(memberGuid);
-        member.Opacity.Value = newOpacity;
+        member.Opacity.NonOverridenValue = newOpacity;
         return new StructureMemberOpacity_ChangeInfo(memberGuid, newOpacity);
         return new StructureMemberOpacity_ChangeInfo(memberGuid, newOpacity);
     }
     }
 
 
@@ -46,7 +46,7 @@ internal class StructureMemberOpacity_UpdateableChange : UpdateableChange
         }
         }
 
 
         var member = document.FindMemberOrThrow(memberGuid);
         var member = document.FindMemberOrThrow(memberGuid);
-        member.Opacity.Value = newOpacity;
+        member.Opacity.NonOverridenValue = newOpacity;
 
 
         ignoreInUndo = false;
         ignoreInUndo = false;
         return new StructureMemberOpacity_ChangeInfo(memberGuid, newOpacity);
         return new StructureMemberOpacity_ChangeInfo(memberGuid, newOpacity);
@@ -58,7 +58,7 @@ internal class StructureMemberOpacity_UpdateableChange : UpdateableChange
             return new None();
             return new None();
 
 
         var member = document.FindMemberOrThrow(memberGuid);
         var member = document.FindMemberOrThrow(memberGuid);
-        member.Opacity.Value = originalOpacity;
+        member.Opacity.NonOverridenValue = originalOpacity;
 
 
         return new StructureMemberOpacity_ChangeInfo(memberGuid, originalOpacity);
         return new StructureMemberOpacity_ChangeInfo(memberGuid, originalOpacity);
     }
     }