public override void NodeDeleted(BaseNode node) { for (int i = 0; i < inputs.Count; i++) { if (node.Equals(inputs[i])) { inputs.Remove(inputs[i]); inputRects.Remove(inputRects[i]); break; } } for (int i = 0; i < outputs.Count; i++) { if (node.Equals(outputs[i])) { outputs.Remove(outputs[i]); outputRects.Remove(outputRects[i]); break; } } for (int i = 0; i < ChoiceNodePair.Count; i++) { if (node.Equals(ChoiceNodePair[i])) { ChoiceNodePair.Remove(i); dialogueType.choiceDialogueKeys.Remove(i); dialogueType.choiceDialogueValues.Remove(i); break; } } }
public override void DrawWindow() { base.DrawWindow(); Event e = Event.current; EditorGUILayout.LabelField("Prompt:"); Prompt = EditorGUILayout.TextArea(Prompt); NumChoices = EditorGUILayout.IntField("Number of Choices", NumChoices); if (NumChoices < 0) { NumChoices = 0; } EditorGUILayout.LabelField("Choices:"); EditorGUILayout.Space(); int difference = Mathf.Abs(NumChoices - Choices.Count); if (Choices.Count < NumChoices) { for (int i = 0; i < difference; i++) { Choices.Add(""); ChoiceRects.Add(new Rect()); } } else if (Choices.Count > NumChoices) { if (NumChoices != 0) { Choices.RemoveRange(NumChoices - 1, difference); ChoiceRects.RemoveRange(NumChoices - 1, difference); for (int i = NumChoices; i < difference; i++) { if (ChoiceNodePair.ContainsKey(i)) { ChoiceNodePair.Remove(i); dialogueType.choiceDialogueKeys.Remove(i); dialogueType.choiceDialogueValues.RemoveAt(i); } } } else { Choices.Clear(); ChoiceRects.Clear(); ChoiceNodePair.Clear(); dialogueType.choiceDialogueKeys.Clear(); dialogueType.choiceDialogueValues.Clear(); } } for (int i = 0; i < inputRects.Count; i++) { if (e.type == EventType.Repaint) { inputRects[i] = GUILayoutUtility.GetLastRect(); } } for (int i = 0; i < outputRects.Count; i++) { if (e.type == EventType.Repaint) { outputRects[i] = GUILayoutUtility.GetLastRect(); } } scrollPos = EditorGUILayout.BeginScrollView(scrollPos, false, false); for (int i = 0; i < Choices.Count; i++) { EditorGUILayout.LabelField("Option " + (i + 1)); Choices[i] = EditorGUILayout.TextArea(Choices[i], GUILayout.Height(30)); } EditorGUILayout.EndScrollView(); // Location of TextAreas AddChoiceRects(); dialogueType.windowRect = windowRect; dialogueType.index = index; dialogueType.question = Prompt; dialogueType.choices = Choices; dialogueType.choiceNum = NumChoices; dialogueType.inputCount = inputs.Count; dialogueType.inputRects = inputRects; dialogueType.outputCount = outputs.Count; dialogueType.outputRects = outputRects; dialogueType.choiceRects = ChoiceRects; if (GUILayout.Button("Clear All", GUILayout.Height(20))) { NumChoices = 0; inputRects.Clear(); inputs.Clear(); outputs.Clear(); outputRects.Clear(); ChoiceNodePair.Clear(); } }