// Draws hierarchy Item recursiely private void drawHierarchyItem(LoziObject target, int count) { if (target == null) { return; } count++; if (GUI.Button(EditorGUILayout.BeginVertical(), GUIContent.none)) { target.isFoldedInUI = !target.isFoldedInUI; } GUI.skin.box.margin = new RectOffset(10 * count, 0, 0, 0); GUI.Box(EditorGUILayout.BeginHorizontal("Box"), GUIContent.none); switch (target.objectType) { case ObjectType.Scene: GUILayout.Label(icons[0]); break; case ObjectType.Object: GUILayout.Label(icons[1]); break; case ObjectType.PerspectiveCamera: GUILayout.Label(icons[2]); break; case ObjectType.OrthographicCamera: GUILayout.Label(icons[2]); break; case ObjectType.PointLight: GUILayout.Label(icons[3]); break; case ObjectType.DirectionalLight: GUILayout.Label(icons[3]); break; case ObjectType.SpotLight: GUILayout.Label(icons[3]); break; case ObjectType.AreaLight: GUILayout.Label(icons[3]); break; case ObjectType.Mesh: GUILayout.Label(icons[4]); break; case ObjectType.SkinnedMesh: GUILayout.Label(icons[5]); break; case ObjectType.AnimationObject: GUILayout.Label(icons[6]); break; case ObjectType.Bone: GUILayout.Label(icons[7]); break; } GUILayout.Label(target.name); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); if (target.isFoldedInUI) { if (target.childObjects.Count > 0) { EditorGUILayout.BeginVertical(); for (int num = 0; num < target.childObjects.Count; num++) { drawHierarchyItem(target.childObjects[num], count); } EditorGUILayout.EndVertical(); } } }
// Recursively folds/unfolds all views private void foldHierarchy(LoziObject obj, bool fold) { if (obj != null) { obj.isFoldedInUI = fold; for (int num = 0; num < obj.childObjects.Count; num++) { foldHierarchy(obj.childObjects[num], fold); } } }