Esempio n. 1
0
 public void AddTileInput(string name)
 {
     if (_rangeTilesetNode == null)
     {
         _rangeTilesetNode = (RangeTilesetNode)target;
     }
     _rangeTilesetNode.AddDynamicInput(typeof(Tile), Node.ConnectionType.Override, Node.TypeConstraint.Strict, name);
     _rangeTilesetNode.minValues.Add("0");
     _rangeTilesetNode.maxValues.Add("0");
 }
Esempio n. 2
0
        public override void OnCreate()
        {
            if (_rangeTilesetNode == null)
            {
                _rangeTilesetNode = (RangeTilesetNode)target;
            }

            _toRemove = new Dictionary <NodePort, int>();
            _toAdd    = new List <string>();
        }
Esempio n. 3
0
        public override void OnBodyGUI()
        {
            if (_rangeTilesetNode == null)
            {
                _rangeTilesetNode = (RangeTilesetNode)target;
            }

            bool dirty = false;

            // Remove PortNode To remove
            foreach (KeyValuePair <NodePort, int> del in _toRemove)
            {
                _rangeTilesetNode.RemoveDynamicPort(del.Key);
                _rangeTilesetNode.minValues.RemoveAt(del.Value);
                _rangeTilesetNode.maxValues.RemoveAt(del.Value);
                dirty = true;
            }

            foreach (string inputName in _toAdd)
            {
                AddTileInput(inputName);
                dirty = true;
            }

            if (dirty)
            {
                EditorUtility.SetDirty(_rangeTilesetNode);
                _toRemove.Clear();
                _toAdd.Clear();
            }

            // Specifying the update method
            onUpdateNode = NodeUpdate;

            serializedObject.Update();

            // Display PortNode Block
            int i = 0;

            foreach (NodePort np in _rangeTilesetNode.DynamicInputs)
            {
                NodeEditorGUILayout.PortField(np);
                if (GUILayout.Button("-", GUILayout.Width(50)))
                {
                    PlanRemoveTileInput(i, np);
                }
                EditorGUILayout.BeginVertical();
                _rangeTilesetNode.minValues[i] = EditorGUILayout.TextField("Min", _rangeTilesetNode.minValues[i]);
                _rangeTilesetNode.maxValues[i] = EditorGUILayout.TextField("Max", _rangeTilesetNode.maxValues[i]);
                EditorGUILayout.EndVertical();
                i++;
            }

            // Display Add Block button
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.Space();
            if (GUILayout.Button("+", GUILayout.Width(50)))
            {
                PlanAddTileInput();
            }
            EditorGUILayout.Space();
            EditorGUILayout.EndHorizontal();

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

            serializedObject.ApplyModifiedProperties();
        }