public CollectionNodeDynamic(CollectionNode node) { transform = node.transform; Name = node.Name; Offset = node.Offset; Radius = node.Radius; localPositionOnStartup = transform.localPosition; localEulerAnglesOnStartup = transform.localEulerAngles; }
/// <summary> /// Update collection is called from the editor button on the inspector. /// This function rebuilds / updates the layout. /// </summary> public void UpdateCollection() { // Check for empty nodes and remove them List <CollectionNode> emptyNodes = new List <CollectionNode>(); for (int i = 0; i < NodeList.Count; i++) { if (NodeList[i].transform == null || (IgnoreInactiveTransforms && !NodeList[i].transform.gameObject.activeSelf)) { emptyNodes.Add(NodeList[i]); } } // Now delete the empty nodes for (int i = 0; i < emptyNodes.Count; i++) { NodeList.Remove(emptyNodes[i]); } emptyNodes.Clear(); // Check when children change and adjust for (int i = 0; i < this.transform.childCount; i++) { Transform child = this.transform.GetChild(i); if (!ContainsNode(child) && (child.gameObject.activeSelf || !IgnoreInactiveTransforms)) { CollectionNode node = new CollectionNode(); node.Name = child.name; node.transform = child; NodeList.Add(node); } } switch (SortType) { case SortTypeEnum.None: break; case SortTypeEnum.Transform: NodeList.Sort(delegate(CollectionNode c1, CollectionNode c2) { return(c1.transform.GetSiblingIndex().CompareTo(c2.transform.GetSiblingIndex())); }); break; case SortTypeEnum.Alphabetical: NodeList.Sort(delegate(CollectionNode c1, CollectionNode c2) { return(c1.Name.CompareTo(c2.Name)); }); break; case SortTypeEnum.AlphabeticalReversed: NodeList.Sort(delegate(CollectionNode c1, CollectionNode c2) { return(c1.Name.CompareTo(c2.Name)); }); NodeList.Reverse(); break; case SortTypeEnum.TransformReversed: NodeList.Sort(delegate(CollectionNode c1, CollectionNode c2) { return(c1.transform.GetSiblingIndex().CompareTo(c2.transform.GetSiblingIndex())); }); NodeList.Reverse(); break; } _columns = Mathf.CeilToInt((float)NodeList.Count / Rows); _width = _columns * CellWidth; _height = Rows * CellHeight; _halfCell = new Vector2(CellWidth / 2f, CellHeight / 2f); _circumference = 2f * Mathf.PI * Radius; LayoutChildren(); if (OnCollectionUpdated != null) { OnCollectionUpdated.Invoke(this); } }