예제 #1
0
 public void AddTileInput(string name)
 {
     if (_distributedTilesetNode == null)
     {
         _distributedTilesetNode = (DistributedTilesetNode)target;
     }
     _distributedTilesetNode.AddDynamicInput(typeof(Tile), Node.ConnectionType.Override, Node.TypeConstraint.Strict, name);
     _distributedTilesetNode.distribution.Add("0");
 }
예제 #2
0
        public override void OnCreate()
        {
            if (_distributedTilesetNode == null)
            {
                _distributedTilesetNode = (DistributedTilesetNode)target;
            }

            _toRemove = new Dictionary <NodePort, int>();
            _toAdd    = new List <string>();
        }
예제 #3
0
        public override void OnBodyGUI()
        {
            if (_distributedTilesetNode == null)
            {
                _distributedTilesetNode = (DistributedTilesetNode)target;
            }

            bool dirty = false;

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

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

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

            // Specifying the update method
            onUpdateNode = NodeUpdate;

            serializedObject.Update();

            // Display PortNode Block
            int i = 0;

            foreach (NodePort np in _distributedTilesetNode.DynamicInputs)
            {
                NodeEditorGUILayout.PortField(np);
                if (GUILayout.Button("-", GUILayout.Width(50)))
                {
                    PlanRemoveTileInput(i, np);
                }
                EditorGUILayout.BeginVertical();
                _distributedTilesetNode.distribution[i] = EditorGUILayout.TextField("Distribution", _distributedTilesetNode.distribution[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();
        }