Răsfoiți Sursa

One more conversion type handled and changed color prop color

flabbet 1 an în urmă
părinte
comite
5fff1a49e6

+ 29 - 0
src/PixiEditor.ChangeableDocument/Changes/NodeGraph/ConnectProperties_Change.cs

@@ -132,6 +132,11 @@ internal class ConnectProperties_Change : Change
             {
                 outputValue = result;
             }
+            
+            if(IsConstantToExpression(input, outputValue, out result))
+            {
+                return ConversionTable.TryConvert(result, output.ValueType, out _);
+            }
 
             if (ConversionTable.TryConvert(outputValue, input.ValueType, out _))
             {
@@ -143,6 +148,30 @@ internal class ConnectProperties_Change : Change
 
         return true;
     }
+    
+    private static bool IsConstantToExpression(InputProperty input, object objValue, out object result)
+    {
+        if (input.Value is Delegate func && func.Method.ReturnType.IsAssignableTo(typeof(ShaderExpressionVariable)))
+        {
+            try
+            {
+                var actualArg = func.DynamicInvoke(FuncContext.NoContext);
+                if(actualArg is ShaderExpressionVariable variable)
+                {
+                    result = variable.GetConstant();
+                    return true;
+                }
+            }
+            catch
+            {
+                result = null;
+                return false;
+            }
+        }
+
+        result = null;
+        return false;
+    }
 
     private static bool IsExpressionToConstant(OutputProperty output, InputProperty input, out object o)
     {

+ 1 - 1
src/PixiEditor.UI.Common/Accents/Base.axaml

@@ -43,7 +43,7 @@
             <Color x:Key="BoolSocketColor">#68abdf</Color>
             <Color x:Key="FloatSocketColor">#ffc66d</Color>
             <Color x:Key="DoubleSocketColor">#efb66d</Color>
-            <Color x:Key="ColorSocketColor">#99e4aa</Color>
+            <Color x:Key="ColorSocketColor">#8cf2dd</Color>
             <Color x:Key="VecDSocketColor">#c984ca</Color>
             <Color x:Key="VecISocketColor">#c9b4ca</Color>
             <Color x:Key="IntSocketColor">#4C64B1</Color>