void Start() { //GameObject.Find("Canvas").GetComponent<HUDManager>().CreateHUD(gameObject); GameObject.Find("CanvasHUD").GetComponent <HUDManager>().CreateHUD(gameObject); foreach (Instruction I in _instructions) { InstructionEditor IE = new InstructionEditor(); IE._listeStringPerceptsVoulus = I._listeStringPerceptsVoulus; IE._stringAction = I._stringAction; IE._stringActionsNonTerminales = I._stringActionsNonTerminales; _instructionsEditor.Add(IE); } }
private void DrawConnectionModifiers(Vector2 position, Connection connection) { Handles.CircleHandleCap(0, position, Quaternion.identity, 5, EventType.Layout); if (_isLayoutEvent) { _culledMods = new List <Instruction>(); } Color oldColor = GUI.color; Rect[] modRects; bool found = _connectionModifierRects.TryGetValue(connection, out modRects); if (!found) { modRects = new Rect[connection.InstructionCount]; _connectionModifierRects[connection] = modRects; } else if (modRects.Length < connection.InstructionCount) { Rect[] newRects = new Rect[connection.InstructionCount]; modRects.CopyTo(newRects, 0); modRects = newRects; _connectionModifierRects[connection] = modRects; } else if (modRects.Length > connection.InstructionCount) { Rect[] newRects = new Rect[connection.InstructionCount]; Array.Copy(modRects, newRects, connection.InstructionCount); modRects = newRects; _connectionModifierRects[connection] = modRects; } Vector2 rectBoxMaxSize = new Vector2(0, 0); //if (!_isLayoutEvent) _connectionModifierRectsSize.TryGetValue(connection, out offset); //if (_isLayoutEvent) { foreach (Rect rect in modRects) { rectBoxMaxSize.x = Mathf.Max(rectBoxMaxSize.x, rect.width); //rectBoxMaxSize.y = Mathf.Max(rectBoxMaxSize.y, rect.yMax); rectBoxMaxSize.y += rect.height + EditorGUIUtility.standardVerticalSpacing; } } Vector2 startPosition = position - rectBoxMaxSize / 2; for (int i = 0; i < connection.InstructionCount; i++) { Instruction mod = connection.GetInstruction(i); if (mod == null) { Debug.LogWarning("Null Mod!?"); continue; } bool selected = Selection.Contains(mod); InstructionEditor modEditor = InstructionEditor.GetEditor(mod); float y = 0; if (i > 0) { for (int j = 0; j < i; j++) { y += modRects[j].height + EditorGUIUtility.standardVerticalSpacing; } y -= EditorGUIUtility.standardVerticalSpacing; } Vector2 finalPosition = startPosition + new Vector2(0, y); //if (_isLayoutEvent) //{ // if (!selected && ShouldBeCulled(modsStartPosition + modPosition, cachedRect.size)) // { // _culledMods.Add(mod); // continue; // } //} //else if (_culledMods.Contains(mod)) continue; Rect modRect = new Rect(GridToWindowPositionNotClipped(finalPosition), new Vector2(modEditor.GetWidth(), 4000)); GUILayout.BeginArea(modRect); if (selected) { GUIStyle style = new GUIStyle(modEditor.GetBodyStyle()); GUIStyle highlightStyle = new GUIStyle(NodeResources.Styles.nodeHighlight) { padding = style.padding }; style.padding = new RectOffset(); GUILayout.BeginVertical(style); GUI.color = Color.white; GUILayout.BeginVertical(new GUIStyle(highlightStyle)); } else { GUIStyle style = new GUIStyle(modEditor.GetBodyStyle()); GUILayout.BeginVertical(style); } GUI.color = oldColor; EditorGUI.BeginChangeCheck(); modEditor.OnHeaderGUI(); modEditor.OnBodyGUI(); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(mod); modEditor.SerializedObject.ApplyModifiedProperties(); } GUILayout.EndVertical(); if (selected) { GUILayout.EndVertical(); } if (_isRepaintEvent) //if (!_isLayoutEvent) { Rect rect = GUILayoutUtility.GetLastRect(); rect.position = finalPosition;// - new Vector2(NodePreferences.STANDARD_NODE_SIZE.x / 2, 0); modRects[i] = rect; } GUILayout.EndArea(); //Handles.color = Color.green; //Handles.CircleHandleCap(0, GridToWindowPositionNotClipped(finalPosition), Quaternion.identity, 8, EventType.Repaint); //Handles.color = Color.white; } //Handles.color = Color.red; //Handles.CircleHandleCap(0, GridToWindowPositionNotClipped(startPosition), Quaternion.identity, 8, // EventType.Repaint); //Handles.color = Color.white; }
private void insertAndEdit(Instruction inst) { InstructionEditor inst_ed = new InstructionEditor(inst); if (this.instructions.SelectedItems.Count != 0) { int i = this.instructions.SelectedIndex; this.instructions.Items.Insert(i, inst_ed); } else { this.instructions.Items.Add(inst_ed); } editItem(inst_ed); }
private void editItem(InstructionEditor inst_ed) { switch (inst_ed.inst.t) { case InstructionType.InstructionTransition: this.transition.SetInstruction(inst_ed.inst); this.transition.Show(); break; case InstructionType.InstructionSetDisplay: this.set_display.SetInstruction(inst_ed.inst); this.set_display.Show(); break; case InstructionType.InstructionWait: this.wait.SetInstruction(inst_ed.inst); this.wait.Show(); break; default: break; } revalidate(); }