using Rokojori; using Godot; namespace Rokojori; [GlobalClass,Tool] public abstract partial class AdjustmentsMask: Resource { public enum Mode { Add, Subtract, Multiply, Divide, Max, Min } [Export] public Mode mode = Mode.Multiply; public abstract float GetMask( Color rgb ); public static float Blend( AdjustmentsMask bottom, float bottomMask, AdjustmentsMask top, float topMask ) { if ( bottom == null ) { return bottomMask; } if ( Mode.Add == top.mode ) { return bottomMask + topMask; } if ( Mode.Subtract == top.mode ) { return bottomMask - topMask; } if ( Mode.Multiply == top.mode ) { return bottomMask * topMask; } if ( Mode.Divide == top.mode ) { return bottomMask / topMask; } if ( Mode.Max == top.mode ) { return Mathf.Max( bottomMask, topMask ); } if ( Mode.Min == top.mode ) { return Mathf.Min( bottomMask, topMask ); } return 0; } }