protected override TreeViewItem BuildRoot() { var root = new FindUsagePathElement(0) { id = 0, depth = -1, displayName = "Usages result:" }; var sceneNode = CreateSceneSubTree(); root.AddChild(sceneNode); var prefabNode = CreatePrefabSubTree(); root.AddChild(prefabNode); var scriptableObjectNode = CreateScriptableObjectSubTree(); root.AddChild(scriptableObjectNode); var animatorSubTree = CreateAnimatorSubTree(); root.AddChild(animatorSubTree); var animationSubTree = CreateAnimationEventsSubTree(); root.AddChild(animationSubTree); SetupDepthsFromParentsAndChildren(root); return(root); }
private void CreateSubTree(FindUsagePathElement element, IEnumerable <AbstractUsageElement> data, int startId) { var fileNames = new Dictionary <string, FindUsagePathElement>(); var curFileNameId = 0; foreach (var usageElement in data) { FindUsagePathElement current = element; var filePath = usageElement.FilePath; var dataFileName = filePath.Split('/').Last(); if (!fileNames.ContainsKey(filePath)) { current = current.CreateChild(new FindUsagePathElement(curFileNameId++) { id = startId++, displayName = dataFileName, icon = (Texture2D)EditorGUIUtility.IconContent(usageElement.StartNodeImage).image }); fileNames.Add(filePath, current); } else { current = fileNames[filePath]; } var pathLength = usageElement.Path.Length; for (int i = 0; i < pathLength; i++) { var name = usageElement.Path[i]; if (i + 1 == pathLength) { var id = startId++; findResultItems[id] = new FindUsagesTreeViewItem(usageElement.RootIndices[i], usageElement) { id = id, displayName = name, icon = (Texture2D)EditorGUIUtility.IconContent(usageElement.TerminalNodeImage).image }; current.AddChild(findResultItems[id]); } else { var rootIndex = usageElement.RootIndices[i]; if (!current.HasChild(rootIndex)) { current = current.CreateChild(new FindUsagePathElement(rootIndex) { id = startId++, displayName = name, icon = (Texture2D)EditorGUIUtility.IconContent(usageElement.NodeImage).image }); } else { current = current.GetChild(rootIndex); } } } } }
private TreeViewItem CreatePrefabSubTree() { var prefabs = new FindUsagePathElement(1) { id = 2, displayName = "Prefabs" }; CreateSubTree(prefabs, myState.PrefabElements.ToArray(), 1_000_000_000); return(prefabs); }
private TreeViewItem CreateSceneSubTree() { var scenes = new FindUsagePathElement(0) { id = 1, displayName = "Scenes" }; CreateSubTree(scenes, myState.SceneElements.ToArray(), 4); return(scenes); }
private TreeViewItem CreateAnimatorSubTree() { var animator = new FindUsagePathElement(3) { id = 4, displayName = "Animator" }; var startId = 200_000; foreach (var animatorElement in myState.AnimatorElements.ToArray()) { CreateAnimatorSubTree(animator, animatorElement, ref startId); } return(animator); }
private TreeViewItem CreateAnimationEventsSubTree() { var animationTreeRoot = new FindUsagePathElement(4) { id = 5, displayName = "Animations" }; var startId = 250_000; foreach (var animationEventElement in myState.AnimationElements.ToArray()) { CreateAnimationEventItem(animationTreeRoot, animationEventElement, ref startId); } return(animationTreeRoot); }
private TreeViewItem CreateScriptableObjectSubTree() { var scriptableObject = new FindUsagePathElement(2) { id = 3, displayName = "Scriptable Objects" }; var startId = 2_000_000_000; foreach (var usageElement in myState.ScriptableObjectElements.ToArray()) { var id = startId++; findResultItems[id] = new FindUsagesTreeViewItem(-1, usageElement) { id = id, displayName = usageElement.FilePath, icon = (Texture2D)EditorGUIUtility.IconContent(usageElement.TerminalNodeImage).image }; scriptableObject.AddChild(findResultItems[id]); } return(scriptableObject); }
private void CreateAnimatorSubTree([NotNull] FindUsagePathElement findUsagePathElement, [NotNull] AnimatorElement animatorElement, ref int id) { var currentParent = findUsagePathElement; for (int i = 0, pathElementsLength = animatorElement.PathElements.Length; i < pathElementsLength; i++) { var icon = i == pathElementsLength - 1 ? animatorElement.TerminalNodeImage : AnimatorElement.AnimatorStateMachineIcon; var findUsagesTreeViewItem = new FindUsagesTreeViewItem(id, animatorElement) { id = id, displayName = animatorElement.PathElements[i], icon = (Texture2D)EditorGUIUtility.IconContent(icon).image }; findResultItems[id] = findUsagesTreeViewItem; myAnimatorItemIdToPathElementsCount[id] = i + 1; currentParent.AddChild(findUsagesTreeViewItem); currentParent = findUsagesTreeViewItem; id++; } }
public FindUsagePathElement CreateChild(FindUsagePathElement item) { myChildren[item.myChildId] = item; AddChild(item); return(item); }