public HierarchyItem Create(string name, string label, bool draggable = true, GameObject reference = null, HierarchyItem parent = null, HierarchyItem originalParent = null) { var itemFromResource = Resources.Load <HierarchyItem>(Constants.HIERARCHY_ITEM_PREFAB); var instanceItem = Instantiate <HierarchyItem>(itemFromResource, Vector3.zero, Quaternion.identity); var textItem = instanceItem.text; textItem.text = label; instanceItem.draggable = draggable; instanceItem.name = name; instanceItem.reference = reference; if (parent.IsNotNull()) { instanceItem.SetParent(parent); instanceItem.gameObject.SetActive(parent.expanded); } if (originalParent.IsNotNull()) { instanceItem.originalParentId = originalParent.GetID(); } // item contains into container instanceItem.transform.SetParent(container.transform); instanceItem.transform.localScale = Vector3.one; instanceItem.onDragEndEvent += (sender, dragEndPosition) => OnHierarchyItemDragEnd(sender, dragEndPosition); items.Add(instanceItem); // release memory textItem = null; itemFromResource = null; return(instanceItem); }
void OrderSibling(HierarchyItem item, ref int index) { if (item.IsNull()) { return; } item.transform.SetSiblingIndex(++index); var children = GetChildren(item.GetID()); foreach (var child in children) { OrderSibling(child, ref index); } children = null; }