@@ -47,44 +47,32 @@ public Vector2 GetHierarchySize()
4747 return _hierarchySize . Value ;
4848 }
4949
50-
5150 if ( Children . Count == 0 )
5251 {
5352 _hierarchySize = GetNodeSize ( ) ;
5453 return _hierarchySize . Value ;
5554 }
5655
57- if ( Children . Count == 1 )
58- {
59- var selfSize = GetNodeSize ( ) ;
60- var childHierarchySize = Children [ 0 ] . GetHierarchySize ( ) ;
61- _hierarchySize = new Vector2
62- {
63- x = selfSize . x + childHierarchySize . x + NodeLayoutInfo . HorizontalSpace ,
64- y = selfSize . y + childHierarchySize . y + NodeLayoutInfo . VerticalSpace
65- } ;
66-
67- return _hierarchySize . Value ;
68- }
69-
70- var hierarchySize = GetNodeSize ( ) + new Vector2 ( NodeLayoutInfo . HorizontalSpace , 0 ) ;
56+ var subHierarchySize = Vector2 . zero ;
7157 for ( int i = 0 ; i < Children . Count ; i ++ )
7258 {
7359 var childSize = Children [ i ] . GetHierarchySize ( ) ;
74- hierarchySize . x += childSize . x ;
75- hierarchySize . y = Mathf . Max ( hierarchySize . y , childSize . y ) ;
60+ subHierarchySize . x = Mathf . Max ( subHierarchySize . x , childSize . x ) ;
61+ subHierarchySize . y += childSize . y ;
7662 }
63+ subHierarchySize . y += ( Children . Count - 1 ) * NodeLayoutInfo . VerticalSpace ;
7764
78- hierarchySize . y += ( Children . Count - 1 ) * NodeLayoutInfo . VerticalSpace ;
65+ var hierarchySize = GetNodeSize ( ) + new Vector2 ( NodeLayoutInfo . HorizontalSpace , 0 ) ;
66+ hierarchySize . y = Mathf . Max ( hierarchySize . y , subHierarchySize . y ) ;
7967 _hierarchySize = hierarchySize ;
8068
8169 return _hierarchySize . Value ;
8270 }
8371
8472 public void CalculateLayout ( Vector2 treeSize , Vector2 origin )
8573 {
86- var hierarchySize = GetHierarchySize ( ) ;
87- var nodePos = CalculateSubTreeRootPosition ( treeSize , hierarchySize , origin ) ;
74+ var subTreeSize = GetHierarchySize ( ) ;
75+ var nodePos = CalculateSubTreeRootPosition ( treeSize , subTreeSize , origin ) ;
8876 SetPosition ( new Rect ( nodePos , Vector2 . zero ) ) ;
8977
9078 origin . x -= GetNodeSize ( ) . x - NodeLayoutInfo . HorizontalSpace ;
@@ -94,7 +82,7 @@ public void CalculateLayout(Vector2 treeSize, Vector2 origin)
9482 var childHierarchySize = childNode . GetHierarchySize ( ) ;
9583 childNode . CalculateLayout ( treeSize , origin ) ;
9684
97- origin . y += childHierarchySize . y + NodeLayoutInfo . VerticalSpace ;
85+ origin . y += childHierarchySize . y ;
9886 }
9987 }
10088
0 commit comments