public void CallEventOnElementSelected(HierarchyObjectElement hierarchyObjectElement) { if (onElementSelected != null) { onElementSelected.Invoke(hierarchyObjectElement); } }
//Update all the children of a specific element public void UpdateChildrenElements(HierarchyObjectElement hierarchyObjectElement) { for (int i = 0; i < hierarchyObjectElement.hierarchyObjectElements.Count; i++) { UpdateCompleteElement(hierarchyObjectElement); } }
private void SelectElements(HierarchyObjectElement hierarchyObjectElement) { if (!canSelectDropdownElements && hierarchyObjectElement.isDropdownElement) { return; } else { } if (allowMultiElementSelection) { //allow a multiselection click } else { for (int i = 0; i < selectedElements.Count; i++) { selectedElements[i].isSelected = false; } selectedElements.Clear(); hierarchyObjectElement.isSelected = true; selectedElements.Add(hierarchyObjectElement); } }
public void RemoveHierarchyObjectWithoutUpdate(HierarchyObjectElement hierarchyObjectElement) { BufferHierarchyBranch(hierarchyObjectElement); if (hierarchyObjectElement.rootElement != null) { hierarchyObjectElement.rootElement.RemoveHeirarchyElement(hierarchyObjectElement); } }
public void RemoveHeirarchyElement(HierarchyObjectElement hierarchyObjectElement) { hierarchyObjectElements.Remove(hierarchyObjectElement); hierarchyObjectElement._siblingIndex = 0; hierarchyObjectElement.rectTransform.SetParent(null); hierarchyObjectElement._rootElement = null; hierarchyObjectElement._depthIndex = 0; //hierarchyElement.GetComponent<RectTransform>().SetParent(rectTransform); }
//Places the element in the correct child spot inside its root element (Must be an element with a root element) public void UpdateElementPosition(HierarchyObjectElement hierarchyObjectElement) { float heightOffset = hierarchyObjectElement.rootElement.rectTransform.sizeDelta.y / 2.0f - hierarchyBaseElement.hierarchyElementsHeight / 2.0f; for (int i = 0; i < hierarchyObjectElement.siblingIndex; i++) { heightOffset -= hierarchyObjectElement.rootElement.hierarchyObjectElements[i].rectTransform.sizeDelta.y; } hierarchyObjectElement.rectTransform.localPosition = new Vector2(0, heightOffset - hierarchyObjectElement.rectTransform.sizeDelta.y / 2.0f - hierarchyBaseElement.hierarchyElementsHeight / 2.0f); }
private void BufferHierarchyBranch(HierarchyObjectElement hierarchyObjectElement) { for (int i = hierarchyObjectElement.hierarchyObjectElements.Count - 1; i >= 0; i--) { BufferHierarchyBranch(hierarchyObjectElement.hierarchyObjectElements[0]); hierarchyObjectElement.RemoveHeirarchyElement(hierarchyObjectElement.hierarchyObjectElements[0]); } bufferedHierarhcyElementStructures[hierarchyObjectElement.bufferedHierarchyType].bufferedHierarchyObjectElements.Buffer(hierarchyObjectElement.bufferedHierarchyObjectElement); bufferedHierarchyTabElements.BufferRange(hierarchyObjectElement.ClearTabElements()); }
public void AddHeirarchyElement(HierarchyObjectElement hierarchyObjectElement) { hierarchyObjectElement._siblingIndex = hierarchyObjectElements.Count; hierarchyObjectElements.Add(hierarchyObjectElement); hierarchyObjectElement.rectTransform.SetParent(rectTransform); hierarchyObjectElement._rootElement = this; hierarchyObjectElement._depthIndex = _depthIndex + 1; //Debug.Log("ADDED A CHILD", hierarchyObjectElement); //UpdateElementHeight(); }
//Updates this element and all its roots public void UpdateHierarchyBranch(HierarchyObjectElement hierarchyObjectElement) { HierarchyObjectElement childHierarchyObjectElement = hierarchyObjectElement; for (int i = 0; i < hierarchyObjectElement.depthIndex + 1; i++) { childHierarchyObjectElement.UpdateElementHeight(); childHierarchyObjectElement.rectTransform.sizeDelta = new Vector2(rect.width, childHierarchyObjectElement.fullElementHeight); childHierarchyObjectElement = childHierarchyObjectElement.rootElement; } }
public void RemoveHierarchyObject(HierarchyObjectElement hierarchyObjectElement) { RemoveHierarchyObjectWithoutUpdate(hierarchyObjectElement); if (hierarchyObjectElement.rootElement != null) { hierarchyBaseElement.hierarchyContentElement.UpdateHierarchyBranch(hierarchyObjectElement.rootElement); } else { Debug.LogError("THIS HAS NOT BEEN IMPLIMENTED"); //remove the base hierarchyObject and then call hierarhcyEleme.UpdateRootElements } }
//Cannot call on an element that is a root element of the hierarchy private void UpdateCompleteElement(HierarchyObjectElement hierarchyObjectElement) { float heightOffset = hierarchyObjectElement.rectTransform.sizeDelta.y / 2.0f - hierarchyBaseElement.hierarchyElementsHeight / 2.0f; hierarchyObjectElement.labelRectTransform.localPosition = new Vector2(0, heightOffset); for (int i = 0; i < hierarchyObjectElement.hierarchyObjectElements.Count; i++) { hierarchyObjectElement.hierarchyObjectElements[i].rectTransform.localPosition = new Vector2(0, heightOffset - hierarchyObjectElement.hierarchyObjectElements[i].rectTransform.sizeDelta.y / 2.0f - hierarchyBaseElement.hierarchyElementsHeight / 2.0f); heightOffset -= hierarchyObjectElement.hierarchyObjectElements[i].rectTransform.sizeDelta.y; UpdateCompleteElement(hierarchyObjectElement.hierarchyObjectElements[i]); } }
private IEnumerator UpdateHierarchyBranch(HierarchyObjectElement hierarchyObjectElement) { List <HierarchyObjectElement> expandingElements = new List <HierarchyObjectElement>(); expandingElements.Add(hierarchyObjectElement); GetRootElement(hierarchyObjectElement); void GetRootElement(HierarchyObjectElement element) { if (element.rootElement != null) { expandingElements.Add(element.rootElement); GetRootElement(element.rootElement); } } for (int i = 0; i < expandingElements.Count; i++) { expandingElements[i].UpdateElementHeight(); } for (int i = expandingElements.Count - 1; i >= 0; i--) { LayoutRebuilder.ForceRebuildLayoutImmediate(expandingElements[i].rectTransform); } while (expandingElements.Count > 0) { for (int i = expandingElements.Count - 1; i >= 0; i--) { var sizeDelta = expandingElements[i].rectTransform.sizeDelta; expandingElements[i].rectTransform.sizeDelta = Vector2.Lerp(sizeDelta, expandingElements[i].desiredSize, _hierarchyListOpenSpeed); if (Mathf.Abs(sizeDelta.y - expandingElements[i].desiredSize.y) < 0.5f) { expandingElements[i].rectTransform.sizeDelta = expandingElements[i].desiredSize; expandingElements.RemoveAt(i); } } UpdateHierarchyLayoutElements(); yield return(new WaitForFixedUpdate()); } }
public void EnableHierarchyBranch(HierarchyObjectElement hierarchyObjectElement) { StartCoroutine(UpdateHierarchyBranch(hierarchyObjectElement)); }
public BufferedHierarchyObjectElement(GameObject gameObject) : base(gameObject) { hierarchyObjectElement = gameObject.GetComponent <HierarchyObjectElement>(); }
public HierarchyObjectElement AddHierarchyObject(HierarchyObject hierarchyObject, HierarchyObjectElement parent, int siblingIndex) { var hierarchyObjectElement = AddHierarchyObjectWithoutUpdate(hierarchyObject, parent, siblingIndex); //Cannot use this function as even though this places the Object correctly while being more optmised than updating all children elements //If the update is being is being optimised by calling AddHierarchyObjectWithoutUpdate, when finally calling AddHierarchyObject, the objects called WithoutUpdate would be missplaced //hierarchyBaseElement.hierarchyContentElement.UpdateElementPosition(hierarchyObjectElement); hierarchyBaseElement.hierarchyContentElement.UpdateChildrenElements(parent); hierarchyBaseElement.hierarchyContentElement.UpdateHierarchyBranch(parent); if (parent.isExpanded) { hierarchyBaseElement.hierarchyContentElement.UpdateRootElements(); } return(hierarchyObjectElement); }
public HierarchyObjectElement AddHierarchyObjectWithoutUpdate(HierarchyObject hierarchyObject, HierarchyObjectElement parent, int siblingIndex) { var hierarchyObjectElement = CreateHierarchy(hierarchyObject, parent.depthIndex + 1); if (parent.hierarchyObjectElements.Count == 0) { parent.enableArrowElement = true; } parent.AddHeirarchyElement(hierarchyObjectElement); hierarchyObjectElement.SetSiblingIndex(siblingIndex); return(hierarchyObjectElement); }