public Class GetSuperClass(ClassDiagramData data) { for (int index = 0; index < data.classes.Length; index++) { Class clazz = (Class)data.classes.GetValue (index); if (clazz.name == superClassName) { return clazz; } } return null; }
void OnGUI() { GameObject gameObject = Selection.activeGameObject; if (!gameObject) { return; } ClassDiagramData classData = gameObject.GetComponent<ClassDiagramData> (); if (!classData) { return; } cuurentClassData = classData; int focusWindowId_old = focusWidowId; Class focusWindowClass_old = focusClass; if (mode == mode_draw) { if ((Event.current.button == 0) && (Event.current.type == EventType.MouseDown)) { focusWidowId = -1; focusClass = null; } } if (GUI.Button (new Rect (10, 35, 25, 18), "+")) { System.Collections.Generic.List<Class> classList = new System.Collections.Generic.List<Class> (classData.classes); Class newClass = new Class (); { string newName = newClass.name; int size = classData.classes.Length; if (0 < size) { string nameTemp = newName; int index = 1; while (true) { bool exist = false; foreach (Class c in classList) { if (c.name == nameTemp) { exist = true; break; } } if (exist) { nameTemp = newName + " " + index; index ++; } else { newName = nameTemp; break; } } } newClass.name = newName; } { Rect newRect = new Rect (newClass.rect); int size = classData.classes.Length; if (0 < size) { while (true) { bool exist = false; foreach (Class c in classList) { if (c.rect.x == newRect.x && c.rect.y == newRect.y) { exist = true; break; } } if (exist) { newRect.x += 20; newRect.y += 20; } else { break; } } } newClass.rect = newRect; } classList.Add (newClass); cuurentClassData.classes = classList.ToArray (); } cuurentClassData.diagramName = GUI.TextField (new Rect (10, 10, 200, 20), cuurentClassData.diagramName); GUIStyle windowStyle = new GUIStyle (GUIStyle.none); BeginWindows (); for (int index = 0; index < cuurentClassData.classes.Length; index++) { Class clazz = (Class)cuurentClassData.classes.GetValue (index); clazz.rect = GUI.Window (index, clazz.rect, drawWindow, "", windowStyle); if (focusWidowId == index) { focusClass = clazz; } if (clazz.superClassName != null) { Class target = clazz.GetSuperClass (cuurentClassData); if (target != null) { curveFromTo (clazz.rect, target.rect, new Color (0.3f, 0.7f, 0.4f), s); } } } EndWindows (); if (mode == mode_ref) { if (refModeTargetClass != null) { refModeClass.superClassName = refModeTargetClass.name; mode = mode_draw; refModeTargetClass = null; } } }
public Class GetDestClass(ClassDiagramData data) { for (int index = 0; index < data.classes.Length; index++) { } return null; }