public void RefreshNameOf(Transform target) { if (!target.IsNull()) { Scene targetScene = target.gameObject.scene; for (int i = 0; i < sceneDrawers.Count; i++) { IHierarchyRootContent content = sceneDrawers[i].Content; if ((content is HierarchyRootPseudoScene) || ((HierarchyRootScene)content).Scene == targetScene) { sceneDrawers[i].RefreshNameOf(target); } } if (m_isInSearchMode) { RefreshSearchResults(); for (int i = 0; i < searchSceneDrawers.Count; i++) { searchSceneDrawers[i].RefreshNameOf(target); } } } }
public override void Unbind() { base.Unbind(); Content = null; childObjects.Clear(); }
private HierarchyItemRoot InstantiateSceneDrawer(IHierarchyRootContent target) { HierarchyItemRoot sceneDrawer = (HierarchyItemRoot)InstantiateDrawer(sceneDrawerPool, sceneDrawerPrefab, drawArea); sceneDrawer.BindTo(target); return(sceneDrawer); }
public HierarchyItemRoot InstantiateSceneDrawer(IHierarchyRootContent target, Transform drawerParent) { HierarchyItemRoot sceneDrawer = (HierarchyItemRoot)InstantiateDrawer(sceneDrawerPool, sceneDrawerPrefab, drawerParent); sceneDrawer.BindTo(target); return(sceneDrawer); }
public void BindTo(IHierarchyRootContent target) { if (!target.IsValid) { Unbind(); return; } Content = target; Content.Children = childObjects; nameText.text = Content.Name; Refresh(); }
public bool Select(Transform selection) { if (selection.IsNull()) { Deselect(); return(true); } else { if (selection == CurrentSelection) { return(true); } Scene selectionScene = selection.gameObject.scene; for (int i = 0; i < sceneDrawers.Count; i++) { IHierarchyRootContent content = sceneDrawers[i].Content; if ((content is HierarchyRootPseudoScene) || ((HierarchyRootScene)content).Scene == selectionScene) { HierarchyItem selectionItem = sceneDrawers[i].SelectTransform(selection); if (selectionItem != null) { if (drawArea.sizeDelta.y > 0f) { // Focus on selected HierarchyItem LayoutRebuilder.ForceRebuildLayoutImmediate(drawArea); //Vector3 localPos = drawArea.InverseTransformPoint(selectionItem.transform.position); //scrollView.verticalNormalizedPosition = Mathf.Clamp01(1f + localPos.y / drawArea.sizeDelta.y); Vector2 pos = (Vector2)scrollView.transform.InverseTransformPoint(drawArea.position) - (Vector2)scrollView.transform.InverseTransformPoint(selectionItem.transform.position); pos.x = drawArea.anchoredPosition.x; drawArea.anchoredPosition = pos; } return(true); } } } } return(false); }
public bool Select(Transform selection) { if (selection.IsNull()) { Deselect(); return(true); } else { if (selection == CurrentSelection) { return(true); } // Make sure that the contents of the hierarchy are up-to-date Refresh(); Scene selectionScene = selection.gameObject.scene; for (int i = 0; i < sceneDrawers.Count; i++) { IHierarchyRootContent content = sceneDrawers[i].Content; if ((content is HierarchyRootPseudoScene) || ((HierarchyRootScene)content).Scene == selectionScene) { HierarchyItem selectionItem = sceneDrawers[i].SelectTransform(selection); if (selectionItem != null) { if (drawAreaHierarchy.sizeDelta.y > 0f) { // Focus on selected HierarchyItem LayoutRebuilder.ForceRebuildLayoutImmediate(drawAreaHierarchy); Vector3 localPos = drawAreaHierarchy.InverseTransformPoint(selectionItem.transform.position); scrollView.verticalNormalizedPosition = Mathf.Clamp01(1f + localPos.y / drawAreaHierarchy.sizeDelta.y); } return(true); } } } } return(false); }
public void OnDrop(PointerEventData eventData) { RuntimeHierarchy hierarchy = Hierarchy; if (hierarchy == null || !hierarchy.CanReorganizeItems) { return; } Transform droppedTransform = RuntimeInspectorUtils.GetAssignableObjectFromDraggedReferenceItem(eventData, typeof(Transform)) as Transform; if (droppedTransform == null) { return; } if (hierarchyItem == null) { if (droppedTransform.parent == null) { return; } droppedTransform.SetParent(null, true); } else if (hierarchyItem is HierarchyItemTransform) { Transform newParent = ((HierarchyItemTransform)hierarchyItem).BoundTransform; if (droppedTransform.parent == newParent || droppedTransform == newParent) { return; } // Avoid setting child object as parent of the parent object Transform curr = newParent; while (curr.parent != null && curr.parent != droppedTransform) { curr = curr.parent; } if (curr.parent == droppedTransform) { curr.SetParent(droppedTransform.parent, true); } droppedTransform.SetParent(newParent, true); } else { IHierarchyRootContent rootContent = ((HierarchyItemRoot)hierarchyItem).Content; if (rootContent is HierarchyRootPseudoScene) { //( (HierarchyRootPseudoScene) rootContent ).AddChild( droppedTransform ); // Add object to pseudo-scene return; } else if (rootContent is HierarchyRootScene) { bool parentChanged = false; if (droppedTransform.parent != null) { droppedTransform.SetParent(null, true); parentChanged = true; } Scene scene = ((HierarchyRootScene)rootContent).Scene; if (droppedTransform.gameObject.scene != scene) { SceneManager.MoveGameObjectToScene(droppedTransform.gameObject, scene); parentChanged = true; } if (!parentChanged) { return; } } } if (hierarchyItem != null && !hierarchyItem.IsExpanded) { hierarchyItem.IsExpanded = true; } hierarchy.Refresh(); }
public HierarchyRootSearch(RuntimeHierarchy hierarch, IHierarchyRootContent reference) { this.hierarch = hierarch; this.reference = reference; }