示例#1
0
        public override void OnBodyGUI()
        {
            serializedObject.Update();

            DialogueChatNode node = target as DialogueChatNode;

            EditorGUILayout.PropertyField(serializedObject.FindProperty("character"), GUIContent.none);
            if (node.answers == null || node.answers.Count == 0)
            {
                GUILayout.BeginHorizontal();
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetInputPort("input"), GUILayout.MinWidth(0));
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetOutputPort("output"), GUILayout.MinWidth(0));
                GUILayout.EndHorizontal();
            }
            else
            {
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetInputPort("input"));
            }
            GUILayout.Space(-30);

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("content"), GUIContent.none);
            NodeEditorGUILayout.DynamicPortList("answers", typeof(DialogueBaseNode), serializedObject, NodePort.IO.Output, Node.ConnectionType.Override);

            serializedObject.ApplyModifiedProperties();
        }
示例#2
0
 public override void OnBodyGUI()
 {
     if (_dataSelectorNode == null)
     {
         _dataSelectorNode = (DataSelectorNode)target;
     }
     serializedObject.Update();
     if (_dataSelectorNode.SerializableInfos.Count > 0)
     {
         string[] choices     = _dataSelectorNode.SerializableInfos.Select(info => info.Name).ToArray();
         int      choiceIndex = EditorGUILayout.Popup(_dataSelectorNode.ChoiceIndex, choices);
         if (choiceIndex != _dataSelectorNode.ChoiceIndex)
         {
             UpdateChoice(choiceIndex);
         }
         _dataSelectorNode.SelectedSerializableInfo = _dataSelectorNode.SerializableInfos.ElementAt(_dataSelectorNode.ChoiceIndex);
         NodePort dataPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Data));
         NodeEditorGUILayout.AddPortField(dataPort);
         NodePort outputPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Output));
         outputPort.ValueType = _dataSelectorNode.SelectedSerializableInfo.Type;
         NodeEditorGUILayout.AddPortField(outputPort);
     }
     else
     {
         NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_dataSelectorNode.Data)));
     }
     serializedObject.ApplyModifiedProperties();
 }
示例#3
0
        /// <inheritdoc />
        public override void OnBodyGUI()
        {
            SOFlowEditorUtilities.AdjustTextContrast(GetTint());

            serializedObject.Update();

            EventNode eventNode = (EventNode)target;

            NodePort entryPort = GetDynamicPort("Entry", true, Node.ConnectionType.Multiple);
            NodePort exitPort  = GetDynamicPort("Exit", false);

            SOFlowEditorUtilities.DrawHorizontalColourLayer(SOFlowEditorSettings.TertiaryLayerColour,
                                                            () =>
            {
                NodeEditorGUILayout.PortField(entryPort,
                                              GUILayout.MinWidth(0f));

                NodeEditorGUILayout.PortField(exitPort,
                                              GUILayout.MinWidth(0f));
            });

            SOFlowEditorUtilities.RestoreTextContrast();

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(eventNode.Event)));

            serializedObject.ApplyModifiedProperties();
        }
示例#4
0
        // Modify display method
        public override void OnBodyGUI()
        {
            if (_basicTileNode == null)
            {
                _basicTileNode = (BasicTileNode)target;
            }

            // Specifying the update method
            onUpdateNode = NodeUpdate;

            serializedObject.Update();

            // Not needed can use TileNode field
            //SerializedProperty sp = serializedObject.FindProperty("tile");
            //Tile tile = (Tile) sp.objectReferenceValue;
            //sp.objectReferenceValue = EditorGUILayout.ObjectField("Tile", tile, typeof(Tile), false);

            // Specific unity object picker for tile
            _basicTileNode.tile = (Tile)EditorGUILayout.ObjectField("Tile", _basicTileNode.tile, typeof(Tile), false, GUILayout.ExpandWidth(true));

            // Refresh image preview
            if (_basicTileNode.tile != null)
            {
                LoadTexture(_basicTileNode.tile.sprite);
            }

            if (_tileImg != null)
            {
                EditorGUILayout.LabelField(new GUIContent(_tileImg));
            }

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("tile"));

            serializedObject.ApplyModifiedProperties();
        }
        public override void OnBodyGUI()
        {
            // Only change the selected bool when the event is Layout, if it is changed on another event,
            // the gui throws an exception due to mismatched state between calls
            if (Event.current.type == EventType.Layout)
            {
                _selected = Selection.activeObject == target;
            }

            if (_variableChangeNode == null)
            {
                _variableChangeNode = (DialogueVariableChangeNode)target;
            }

            serializedObject.Update();

            var dialogueGraph = (DialogueGraph)_variableChangeNode.graph;

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_variableChangeNode.PredecessorNode)));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_variableChangeNode.SuccessorNode)));

            var options       = dialogueGraph.Variables.Keys.ToArray();
            var selectedValue = EditorGUILayout.Popup("Variable:", options.ToList().IndexOf(_variableChangeNode.VariableName), options);

            _variableChangeNode.VariableName = selectedValue >= 0 ? options[selectedValue] : "";


            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_variableChangeNode.Value)));

            // Apply property modifications
            serializedObject.ApplyModifiedProperties();
        }
示例#6
0
        public override void OnBodyGUI()
        {
            serializedObject.Update();

            NodeEditorGUILayout.PortField(value);
            NodeEditorGUILayout.PropertyField(type);
            switch (type.enumValueIndex)
            {
            case 0:     // Euler
                EditorGUILayout.PrefixLabel("Euler Angles");
                NodeEditorGUILayout.PropertyField(vector0, quaternion.GetInputPort(nameof(vector0)));
                break;

            case 1:     // LookRotation
                EditorGUILayout.PrefixLabel("Forward Direction");
                NodeEditorGUILayout.PropertyField(vector0, quaternion.GetInputPort(nameof(vector0)));
                NodeEditorGUILayout.PropertyField(setUpward);
                if (setUpward.boolValue)
                {
                    EditorGUILayout.PrefixLabel("Upward Direction");
                    NodeEditorGUILayout.PropertyField(vector1, quaternion.GetInputPort(nameof(vector1)));
                }
                break;

            case 2:     // FromToRotation
                EditorGUILayout.PrefixLabel("From Direction");
                NodeEditorGUILayout.PropertyField(vector0, quaternion.GetInputPort(nameof(vector0)));
                EditorGUILayout.PrefixLabel("To Direction");
                NodeEditorGUILayout.PropertyField(vector1, quaternion.GetInputPort(nameof(vector1)));
                break;
            }

            serializedObject.ApplyModifiedProperties();
        }
示例#7
0
        /// <summary>
        /// Shows a map in this node with the passed information
        /// </summary>
        /// <param name="mapProperty">Name of the serialized map generator property</param>
        /// <param name="minMaxMaskProperty">Name of the serialized float min max mask property</param>
        /// <param name="useMapProperty">Name of the serialized bool use map property</param>
        /// <param name="displayName">Display name of this map (heightmap, temperature, etc)</param>
        private void ShowMapField(string mapProperty, string minMaxMaskProperty, string useMapProperty, string displayName)
        {
            SerializedProperty mapProp = serializedObject.FindProperty(mapProperty);
            SerializedProperty minMaxProp = serializedObject.FindProperty(minMaxMaskProperty);
            SerializedProperty useMapProp = serializedObject.FindProperty(useMapProperty);

            EditorGUILayout.PropertyField(useMapProp, new GUIContent(displayName));

            //Use this map as a mask
            if (useMapProp.boolValue) {
                EditorGUI.indentLevel++;

                NodeEditorGUILayout.PropertyField(mapProp, new GUIContent("Generator"));

                //Min / Max Slider
                Rect ctrl = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight);
                EditorGUI.BeginProperty(ctrl, GUIContent.none, minMaxProp);

                EditorGUI.BeginChangeCheck();

                Vector2 minMaxVal = minMaxProp.vector2Value;
                EditorGUI.MinMaxSlider(ctrl, ref minMaxVal.x, ref minMaxVal.y, 0f, 1f);

                //Modify serialized value if changed
                if (EditorGUI.EndChangeCheck()) {
                    minMaxProp.vector2Value = minMaxVal;
                }

                EditorGUI.EndProperty();
                EditorGUI.indentLevel--;
            }
        }
 public override void OnBodyGUI()
 {
     if (_actionSetterNode == null)
     {
         _actionSetterNode = (ActionSetterNode)target;
     }
     serializedObject.Update();
     if (_actionSetterNode.SelectedSerializableInfo != null && _actionSetterNode.SerializableInfos.Count > 0)
     {
         NodePort valuePort = _actionSetterNode.GetPort(nameof(_actionSetterNode.Value));
         valuePort.ValueType = _actionSetterNode.SelectedSerializableInfo.Type;
         NodeEditorGUILayout.PortField(valuePort);
         string[] choices     = _actionSetterNode.SerializableInfos.Select(info => info.Name).ToArray();
         int      choiceIndex = EditorGUILayout.Popup(_actionSetterNode.ChoiceIndex, choices);
         if (choiceIndex != _actionSetterNode.ChoiceIndex)
         {
             UpdateChoice(choiceIndex);
         }
         _actionSetterNode.SelectedSerializableInfo = _actionSetterNode.SerializableInfos.ElementAt(_actionSetterNode.ChoiceIndex);
         NodePort dataPort = _actionSetterNode.GetPort(nameof(_actionSetterNode.Data));
         NodeEditorGUILayout.AddPortField(dataPort);
         NodePort linkedOptionPort = _actionSetterNode.GetPort(nameof(_actionSetterNode.LinkedOption));
         NodeEditorGUILayout.AddPortField(linkedOptionPort);
     }
     else
     {
         NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_actionSetterNode.Data)));
     }
     serializedObject.ApplyModifiedProperties();
 }
示例#9
0
        public override void OnBodyGUI()
        {
            if (node == null)
            {
                node = target as MovesetAttackNode;
            }

            serializedObject.Update();

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("lastNode"));

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("attackDefinition"));

            executeList.DoLayoutList();

            inputSequence.DoLayoutList();

            // Draw GUI
            NodeEditorGUILayout.DynamicPortList(
                "nextNode",                 // field name
                typeof(nextNodeDefinition), // field type
                serializedObject,           // serializable object
                NodePort.IO.Output);        // onCreate override. This is where the magic happens.

            serializedObject.ApplyModifiedProperties();
        }
 public override void OnBodyGUI()
 {
     if (_actionLauncherNode == null)
     {
         _actionLauncherNode = (ActionLauncherNode)target;
     }
     serializedObject.Update();
     if (_actionLauncherNode.SerializableInfos.Count > 0)
     {
         foreach (NodePort dynamicInput in _actionLauncherNode.DynamicInputs)
         {
             NodeEditorGUILayout.PortField(dynamicInput);
         }
         string[] choices = _actionLauncherNode.SerializableInfos.Select(info => info.Name).ToArray();
         //BUG-fred ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseUp
         int choiceIndex = EditorGUILayout.Popup(_actionLauncherNode.ChoiceIndex, choices);
         if (choiceIndex != _actionLauncherNode.ChoiceIndex)
         {
             UpdateChoice(choiceIndex);
         }
         _actionLauncherNode.SelectedSerializableInfo = _actionLauncherNode.SerializableInfos
                                                        .ElementAt(_actionLauncherNode.ChoiceIndex);
         NodePort dataPort = _actionLauncherNode.GetPort(nameof(_actionLauncherNode.Data));
         NodeEditorGUILayout.AddPortField(dataPort);
         NodePort linkedOptionPort = _actionLauncherNode.GetPort(nameof(_actionLauncherNode.LinkedOption));
         NodeEditorGUILayout.AddPortField(linkedOptionPort);
     }
     else
     {
         NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_actionLauncherNode.Data)));
     }
     serializedObject.ApplyModifiedProperties();
 }
示例#11
0
    public override void OnBodyGUI()
    {
        serializedObject.Update();

        var node = target as HumanItemConditionNode;

        EditorGUIUtility.labelWidth = 60;
        NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("itemId"));
        if (node.itemId != null && node.itemId.Length > 0)
        {
            var style = new GUIStyle(GUI.skin.label)
            {
                alignment = TextAnchor.MiddleRight
            };
            if (MMX.ItemStorage.shared.items.ContainsKey(node.itemId))
            {
                var item = MMX.ItemStorage.shared.items[node.itemId];
                EditorGUILayout.LabelField(item.name, style, GUILayout.ExpandWidth(true));
            }
            else
            {
                EditorGUILayout.LabelField("Invalid Item Id", style, GUILayout.ExpandWidth(true));
            }
        }
        NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("comparisonOperator"));
        NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("count"));
        NodeEditorGUILayout.PortField(target.GetOutputPort("output"));

        serializedObject.ApplyModifiedProperties();
    }
        public override void OnBodyGUI()
        {
            serializedObject.Update();

            GUILayout.BeginHorizontal();
            {
                NodeEditorGUILayout.PortField(new GUIContent("Prev"), target.GetInputPort("prev"), GUILayout.Width(30));

                DrawTextSupplements();

                GUILayout.BeginVertical(GUILayout.Width(55));
                {
                    NodeEditorGUILayout.PortField(new GUIContent("Success"), target.GetOutputPort("success"), GUILayout.Width(55));
                    NodeEditorGUILayout.PortField(new GUIContent("Fail"), target.GetOutputPort("fail"), GUILayout.Width(55));
                }
                GUILayout.EndVertical();
            }
            GUILayout.EndHorizontal();

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("text"), new GUIContent("Text"), false);
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("synonims"));

            GUILayout.BeginHorizontal();
            {
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("blacklist"), true, GUILayout.Width(100));
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("whitelist"), true, GUILayout.Width(10));
            }
            GUILayout.EndHorizontal();

            // Apply property modifications
            serializedObject.ApplyModifiedProperties();
        }
示例#13
0
        public override void OnBodyGUI()
        {
            serializedObject.Update();

            Chat node = target as Chat;

            EditorGUILayout.LabelField("讲话的那位");
            EditorGUILayout.PropertyField(serializedObject.FindProperty("character"), GUIContent.none);
            if (node.answers.Count > 1)
            {
                EditorGUILayout.LabelField("回复的那位");
                EditorGUILayout.PropertyField(serializedObject.FindProperty("answerCharacter"), GUIContent.none);
            }
            EditorGUILayout.LabelField("左侧立绘(可为空)");
            EditorGUILayout.PropertyField(serializedObject.FindProperty("leftCharacter"), GUIContent.none);
            EditorGUILayout.LabelField("右侧立绘(可为空)");
            EditorGUILayout.PropertyField(serializedObject.FindProperty("rightCharacter"), GUIContent.none);
            if (node.answers.Count == 0)
            {
                GUILayout.BeginHorizontal();
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetInputPort("input"), GUILayout.MinWidth(0));
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetOutputPort("output"), GUILayout.MinWidth(0));
                GUILayout.EndHorizontal();
            }
            else
            {
                NodeEditorGUILayout.PortField(GUIContent.none, target.GetInputPort("input"));
            }
            GUILayout.Space(-30);

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("text"), GUIContent.none);
            NodeEditorGUILayout.InstancePortList("answers", typeof(DialogueBaseNode), serializedObject, NodePort.IO.Output, Node.ConnectionType.Override);

            serializedObject.ApplyModifiedProperties();
        }
示例#14
0
 public override void OnBodyGUI()
 {
     if (_actionSetterNode == null)
     {
         _actionSetterNode = (ActionSetterNode)target;
     }
     if (_actionSetterNode.SelectedSerializableInfo != null && _actionSetterNode.SerializableInfos.Count > 0)
     {
         NodePort valuePort = _actionSetterNode.GetPort(nameof(_actionSetterNode.Value));
         valuePort.ValueType = _actionSetterNode.SelectedSerializableInfo.Type;
         NodeEditorGUILayout.PortField(valuePort);
         string[] choices = _actionSetterNode.SerializableInfos.Select(info => info.Name).ToArray();
         //BUG-fred ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseUp
         int choiceIndex = EditorGUILayout.Popup(_actionSetterNode.ChoiceIndex, choices);
         if (choiceIndex != _actionSetterNode.ChoiceIndex)
         {
             UpdateChoice(choiceIndex);
         }
         NodePort dataPort = _actionSetterNode.GetPort(nameof(_actionSetterNode.Data));
         NodeEditorGUILayout.AddPortField(dataPort);
         NodePort linkedOptionPort = _actionSetterNode.GetPort(nameof(_actionSetterNode.LinkedOption));
         NodeEditorGUILayout.AddPortField(linkedOptionPort);
     }
     else
     {
         NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_actionSetterNode.Data)));
     }
 }
        public override void OnBodyGUI()
        {
            _statesIn = serializedObject.FindProperty("statesIn");

            if (Selection.activeObject == _node)
            {
                var optionsList = _node.graph.nodes
                                  .OfType <AIBrainStateNode>()
                                  .Select(node => node.name)
                                  .ToList();

                optionsList.AddRange(_node.graph.nodes
                                     .OfType <AIBrainSubgraphNode>()
                                     .SelectMany(node => node.inputStates
                                                 .Select(inputState => GeneratorUtils.GetSubgraphStateName(node.name, inputState.fieldName))));

                if (optionsList.Count > 0)
                {
                    var options = optionsList.ToArray();
                    _stateIndex = EditorGUILayout.Popup(_stateIndex, options);
                    EditorGUILayout.Space();
                    _node.stateName = options[_stateIndex];
                }
                else
                {
                    EditorGUILayout.LabelField(C.LABEL_NO_STATE_AVAILABLE);
                    EditorGUILayout.Space();
                }
            }

            serializedObject.Update();
            NodeEditorGUILayout.PropertyField(_statesIn);
            serializedObject.ApplyModifiedProperties();
        }
        public override void OnBodyGUI()
        {
            // Only change the selected bool when the event is Layout, if it is changed on another event,
            // the gui throws an exception due to mismatched state between calls
            if (Event.current.type == EventType.Layout)
            {
                _selected = Selection.activeObject == target;
            }

            if (_numberForkNode == null)
            {
                _numberForkNode = (DialogueNumberForkNode)target;
            }

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_numberForkNode.InputNode)));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_numberForkNode.Variable)));

            var validFloat = float.TryParse(EditorGUILayout.TextField("Compare To", _numberForkNode.ComparisonValue.ToString(CultureInfo.CurrentCulture)), out var parsed);

            if (validFloat)
            {
                _numberForkNode.ComparisonValue = parsed;
            }

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_numberForkNode.Bigger)));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_numberForkNode.Equal)));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_numberForkNode.Smaller)));

            serializedObject.ApplyModifiedProperties();
        }
        public override void OnBodyGUI()
        {
            //Because we're not calling base.OnBodyGUI
            //change checks need to be performed manually
            EditorGUI.BeginChangeCheck();

            //IO
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Output"));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Generator"));

            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Uniform"));

            if (Sn.Uniform)
            {
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Amount"));
            }
            else
            {
                NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Factor"));
            }

            if (EditorGUI.EndChangeCheck())
            {
                Sn.OnValueChange();
            }
        }
示例#18
0
        public override void OnBodyGUI()
        {
            _subgraph = serializedObject.FindProperty("subgraph");

            serializedObject.Update();
            EditorGUIUtility.labelWidth = 60;
            foreach (var stateIn in _node.inputStates)
            {
                NodeEditorGUILayout.PortField(stateIn);
            }
            foreach (var stateOut in _node.outputStates)
            {
                NodeEditorGUILayout.PortField(stateOut);
            }
            EditorGUILayout.Space();
            NodeEditorGUILayout.PropertyField(_subgraph);
            serializedObject.ApplyModifiedProperties();

            if (!(_node.graph is IBrainGraph graph))
            {
                return;
            }
            if (!ReferenceEquals(graph.StartingNode, _node) && GUILayout.Button(C.LABEL_SET_AS_STARTING_STATE))
            {
                graph.StartingNode = _node;
            }
        }
示例#19
0
 public override void OnBodyGUI()
 {
     if (_dataSelectorNode == null)
     {
         _dataSelectorNode = (DataSelectorNode)target;
     }
     serializedObject.Update();
     if (_dataSelectorNode.SerializableInfos.Count > 0)
     {
         string[] choices = _dataSelectorNode.SerializableInfos.Select(info => info.Name).ToArray();
         //BUG-fred ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseUp
         _dataSelectorNode.ChoiceIndex = EditorGUILayout.Popup(_dataSelectorNode.ChoiceIndex, choices);
         _dataSelectorNode.SelectedSerializableInfo = _dataSelectorNode.SerializableInfos.ElementAt(_dataSelectorNode.ChoiceIndex);
         NodePort dataPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Data));
         NodeEditorGUILayout.AddPortField(dataPort);
         NodePort nodePort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Output));
         nodePort.ValueType = _dataSelectorNode.SelectedSerializableInfo.Type;
         NodeEditorGUILayout.AddPortField(nodePort);
     }
     else
     {
         NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_dataSelectorNode.Data)));
     }
     serializedObject.ApplyModifiedProperties();
 }
示例#20
0
 public override void OnBodyGUI()
 {
     GUI.color = Color.white;
     NodeEditorGUILayout.PortField(target.GetInputPort("enter"));
     NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("message"), GUIContent.none);
     DrawFooterGUI();
 }
示例#21
0
        public override void OnBodyGUI()
        {
            //Output
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Output"));

            NodeEditorGUILayout.PortField(Node.GetPort("Constraint"));

            //Textures
            SerializedProperty diffuse = serializedObject.FindProperty("Diffuse");
            SerializedProperty normal  = serializedObject.FindProperty("Normal");

            int  texDimens = GetWidth() / 2 - TEXTURE_PADDING - NODE_PADDING * 2;
            Rect ctrl      = EditorGUILayout.GetControlRect(false, texDimens);

            ctrl.width = texDimens;

            //Diffuse & Normal
            EditorGUI.BeginProperty(ctrl, GUIContent.none, diffuse);
            EditorGUI.BeginChangeCheck();
            Object diffRef = EditorGUI.ObjectField(ctrl, diffuse.objectReferenceValue, typeof(Texture2D), false);

            if (EditorGUI.EndChangeCheck())
            {
                diffuse.objectReferenceValue = diffRef;
            }
            EditorGUI.EndProperty();

            ctrl.x += texDimens + TEXTURE_PADDING;

            EditorGUI.BeginProperty(ctrl, GUIContent.none, normal);
            EditorGUI.BeginChangeCheck();
            Object normRef = EditorGUI.ObjectField(ctrl, normal.objectReferenceValue, typeof(Texture2D), false);

            if (EditorGUI.EndChangeCheck())
            {
                normal.objectReferenceValue = normRef;
            }
            EditorGUI.EndProperty();

            //Labels
            GUIStyle centeredStyle = GUI.skin.GetStyle("Label");

            centeredStyle.normal.textColor = Color.white;
            centeredStyle.alignment        = TextAnchor.UpperCenter;

            ctrl       = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight);
            ctrl.width = texDimens;

            EditorGUI.LabelField(ctrl, "Diffuse", centeredStyle);
            ctrl.x += texDimens + TEXTURE_PADDING;
            EditorGUI.LabelField(ctrl, "Normal", centeredStyle);

            //Tiling/Offset
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Tiling"));
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Offset"));

            //Blend
            NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("Blend"));
        }
示例#22
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();
        }
        protected override void SerializeAdditionalProperties()
        {
            _afterTime = serializedObject.FindProperty("afterTime");

            serializedObject.Update();
            NodeEditorGUILayout.PropertyField(_afterTime);
            serializedObject.ApplyModifiedProperties();
        }
示例#24
0
        public override void OnBodyGUI()
        {
            _transitions = serializedObject.FindProperty("transitions");

            serializedObject.Update();
            NodeEditorGUILayout.PropertyField(_transitions);
            serializedObject.ApplyModifiedProperties();
        }
示例#25
0
        protected override void SerializeAdditionalProperties()
        {
            _newAIBrain = serializedObject.FindProperty("newAIBrain");

            serializedObject.Update();
            NodeEditorGUILayout.PropertyField(_newAIBrain);
            serializedObject.ApplyModifiedProperties();
        }
        protected override void SerializeAdditionalProperties()
        {
            _numberOfHits = serializedObject.FindProperty("numberOfHits");

            serializedObject.Update();
            EditorGUIUtility.labelWidth = 120;
            NodeEditorGUILayout.PropertyField(_numberOfHits);
            serializedObject.ApplyModifiedProperties();
        }
        protected override void SerializeAdditionalProperties()
        {
            _changeDirectionOnObstacle = serializedObject.FindProperty("changeDirectionOnObstacle");

            serializedObject.Update();
            EditorGUIUtility.labelWidth = 170;
            NodeEditorGUILayout.PropertyField(_changeDirectionOnObstacle);
            serializedObject.ApplyModifiedProperties();
        }
        protected override void SerializeAdditionalProperties()
        {
            _groundedBufferDelay = serializedObject.FindProperty("groundedBufferDelay");

            serializedObject.Update();
            EditorGUIUtility.labelWidth = 140;
            NodeEditorGUILayout.PropertyField(_groundedBufferDelay);
            serializedObject.ApplyModifiedProperties();
        }
示例#29
0
        protected override void SerializeAdditionalProperties()
        {
            _minimumDistance = serializedObject.FindProperty("minimumDistance");

            serializedObject.Update();
            EditorGUIUtility.labelWidth = 120;
            NodeEditorGUILayout.PropertyField(_minimumDistance);
            serializedObject.ApplyModifiedProperties();
        }
示例#30
0
    public override void OnBodyGUI()
    {
        // Update serialized object's representation
        serializedObject.Update();

        var node = target as Kernel;

        if (node != null)
        {
            var selectedSize = (KernelValue.KernelSize)EditorGUILayout.EnumPopup("Size", node.kernel.Size);
            if (selectedSize != node.kernel.Size)//user is changing the size of the kernel
            {
                Debug.Log("changing size of kernel");

                node.kernel.SetKernelSize(selectedSize);
            }

            EditorGUILayout.LabelField("Kernel Matrix Values");

            var kernel = node.kernel.Values;

            if (kernel != null)
            {
                var kernelWidth  = kernel.GetLength(0);
                var kernelHeight = kernel.GetLength(1);

                for (var x = 0; x < kernelWidth; x++)
                {
                    GUILayout.BeginHorizontal();

                    for (var y = 0; y < kernelHeight; y++)
                    {
                        GUILayout.BeginVertical();
                        kernel[y, x] = EditorGUILayout.FloatField(kernel[y, x]);
                        GUILayout.EndVertical();
                    }

                    GUILayout.EndHorizontal();
                }
            }
            else
            {
                EditorGUILayout.LabelField("Kernel is Null");
            }
        }

        if (GUILayout.Button("Apply"))
        {
            this.NotifyNodes();
        }

        NodeEditorGUILayout.PropertyField(serializedObject.FindProperty("kernel"));

        // Apply property modifications
        serializedObject.ApplyModifiedProperties();
    }