Ejemplo n.º 1
0
 public override object GetValue(NodePort port)
 {
     if (port.fieldName == nameof(Rank))
     {
         NodePort minXPort = GetInputPort(nameof(MinX));
         float    minX     = minXPort.IsConnected ? Convert.ToSingle(minXPort.GetInputValue()) : MinX;
         NodePort maxXPort = GetInputPort(nameof(MaxX));
         float    maxX     = maxXPort.IsConnected ? Convert.ToSingle(maxXPort.GetInputValue()) : MaxX;
         float    x        = Convert.ToSingle(GetInputPort(nameof(X)).GetInputValue());
         float    scaledX  = ScaleX(minX, maxX, x);
         return(ScaleY(MinY, MaxY, Function.Evaluate(scaledX)));
     }
     return(null);
 }
Ejemplo n.º 2
0
 public override object GetValue(NodePort port)
 {
     if (port.fieldName == "ValueOut")
     {
         return(value.Value);
     }
     else if (port.fieldName == "ValueIn")
     {
         value.Value = port.GetInputValue();
         return(value.Value);
     }
     else
     {
         return(base.GetValue(port));
     }
 }
        public override void OnBodyGUI()
        {
            //Output
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Output"));

            //Draw mix method enum
            SerializedProperty mixType = serializedObject.FindProperty("Mix");

            NodeEditorGUILayout.PropertyField(mixType, new GUIContent("Mix Type"));

            //Draw Instance Ports with colors
            if (!Bcn.DidAddPort)
            {
                NodePort[] ports = Bcn.GetInstanceInputs();

                for (var i = 0; i < ports.Length; i++)
                {
                    NodePort p = ports[i];
                    EditorGUILayout.BeginHorizontal();
                    NodeEditorGUILayout.PortField(p, GUILayout.ExpandWidth(false));

                    BiomeNode node = p.GetInputValue <BiomeNode>();
                    if (node != null)
                    {
#if UNITY_2018_1_OR_NEWER
                        EditorGUILayout.ColorField(GUIContent.none, node.PreviewColor, false, false, false,
                                                   GUILayout.MaxWidth(32f));
#else
                        EditorGUILayout.ColorField(GUIContent.none, node.PreviewColor,
                                                   false, false, false, null, GUILayout.MaxWidth(32f));
#endif
                    }

                    EditorGUILayout.EndHorizontal();
                }
            }
            else
            {
                Bcn.DidAddPort = false;
            }


            //Show Preview
            PreviewField.Show(Bcn);
        }
        public override IEnumerator ExecuteNode(NodeExecutionContext context)
        {
            NTGraph g = graph as NTGraph;

            NodePort port = GetPort(variablePath);

            object portValue = port.GetInputValue();

            if (!port.IsConnected)
            {
                portValue = backingValue;
            }

            object value = null;


            if (portValue != null)
            {
                if (!string.IsNullOrEmpty(variablePath))
                {
                    value = g.variableDelegate.GetValue(dataKey);

                    if (value == null)
                    {
                        yield break;
                    }

                    ReflectionUtilities.SetValueOf(ref value, portValue, variablePath.Split('/').ToList());

                    g.variableDelegate.SetValue(dataKey, value);
                }
                else
                {
                    value = portValue;
                }
            }
            else
            {
            }


            yield return(null);
        }
Ejemplo n.º 5
0
        public override IEnumerator ExecuteNode(NodeExecutionContext context)
        {
            NTGraph g = graph as NTGraph;

            NodePort port = GetPort(dataKey);

            object portValue = port.GetInputValue();

            if (!port.IsConnected)
            {
                portValue = backingValue;
            }

            if (portValue != null)
            {
                g.variableDelegate.SetUserVariable(dataKey, portValue);
            }

            yield return(null);
        }
Ejemplo n.º 6
0
        public override object GetInstancePortValue(string fieldName)
        {
            if (HasPort(fieldName))
            {
                NodePort port = GetPort(fieldName);

                if (port.IsConnected)
                {
                    return(port.GetInputValue());
                }
                else
                {
                    return(backingValue);
                }
            }
            else
            {
                return(backingValue);
            }
        }
Ejemplo n.º 7
0
        public override void OnBodyGUI()
        {
            GUI.color = Color.white;
            NodeEditorGUILayout.PortPair(target.GetInputPort("enter"), target.GetOutputPort("exit"));

            Rect rect = GUILayoutUtility.GetLastRect();

            rect.x    += (rect.width * 0.5f) - 50;
            rect.width = 100;
            EditorGUI.PropertyField(rect, serializedObject.FindProperty("device"), GUIContent.none);

            GUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Repeats:", GUILayout.Width(60));
            node.repeats = EditorGUILayout.IntField(node.repeats, GUILayout.Width(33));
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Random:", GUILayout.Width(60));
            node.random = EditorGUILayout.Toggle(node.random);
            GUILayout.EndHorizontal();

            // Display the String valueIn port.
            NodePort valueInPort = node.GetInputPort("stringIn");

            if (valueInPort.IsConnected)
            {
                // Display an uneditable input value if connected
                EditorGUI.BeginDisabledGroup(true);
                EditorGUILayout.TextField(serializedObject.FindProperty("stringIn").displayName, valueInPort.GetInputValue <string>());
                EditorGUI.EndDisabledGroup();
                NodeEditorGUILayout.AddPortField(valueInPort);
            }
            else
            {
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("stringIn"), valueInPort, true);
            }

            // Display the Float valueIn port.
            NodePort fltValueInPort = node.GetInputPort("floatIn");

            if (fltValueInPort.IsConnected)
            {
                // Display an uneditable input value if connected
                EditorGUI.BeginDisabledGroup(true);
                EditorGUILayout.FloatField(serializedObject.FindProperty("floatIn").displayName, fltValueInPort.GetInputValue <float>());
                EditorGUI.EndDisabledGroup();
                NodeEditorGUILayout.AddPortField(fltValueInPort);
            }
            else
            {
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("floatIn"), fltValueInPort, true);
            }

            // Actions list
            NodeEditorGUILayout.InstancePortList("actions", typeof(Action), serializedObject, NodePort.IO.Input, Node.ConnectionType.Override, Node.TypeConstraint.Strict, OnCreateReorderableList);
            serializedObject.ApplyModifiedProperties();
            serializedObject.Update();

            // Footer
            DrawFooterGUI();
        }