From ee3b7a040c8037fc767689dff2faa97ba0bf9706 Mon Sep 17 00:00:00 2001 From: Maxim Bazuev Date: Sun, 3 Mar 2019 11:01:49 +0300 Subject: [PATCH 1/5] Add VerticalLayoutGroup component --- CommunityEntity.UI.cs | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index 7b07f42..599159a 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -264,6 +264,55 @@ private void CreateComponents( GameObject go, JSON.Object obj ) break; } + + case "UnityEngine.UI.VerticalLayoutGroup": + { + var vlg = go.AddComponent(); + var paddingArray = obj.GetString( "padding", "0" ).Split( ' ' ); + if ( paddingArray.Length > 0 ) + { + vlg.padding.left = int.Parse( paddingArray[0] ); + } + + if ( paddingArray.Length > 1 ) + { + vlg.padding.right = int.Parse( paddingArray[1] ); + } + + if ( paddingArray.Length > 2 ) + { + vlg.padding.top = int.Parse( paddingArray[2] ); + } + + if ( paddingArray.Length > 3 ) + { + vlg.padding.bottom = int.Parse( paddingArray[3] ); + } + + vlg.spacing = obj.GetInt( "spacing", 0 ); + vlg.childAlignment = (TextAnchor)System.Enum.Parse( typeof( TextAnchor ), obj.GetString( "childAlignment", "UpperLeft" ) ); + + if ( obj.ContainsKey( "childControlWidth" ) ) + { + vlg.childControlWidth = true; + } + + if ( obj.ContainsKey( "childControlHeight" ) ) + { + vlg.childControlHeight = true; + } + + if ( obj.ContainsKey( "childForceExpandWidth" ) ) + { + vlg.childForceExpandWidth = true; + } + + if ( obj.ContainsKey( "childForceExpandHeight" ) ) + { + vlg.childForceExpandHeight = true; + } + break; + } } } From e18a02ec7fe4bf8406db46b2dda7540d48178e0b Mon Sep 17 00:00:00 2001 From: Maxim Bazuev Date: Sun, 3 Mar 2019 11:02:58 +0300 Subject: [PATCH 2/5] Add LayoutElement component --- CommunityEntity.UI.cs | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index 599159a..8cf3075 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -313,6 +313,54 @@ private void CreateComponents( GameObject go, JSON.Object obj ) } break; } + + case "UnityEngine.UI.LayoutElement": + { + var le = go.AddComponent(); + + if ( obj.ContainsKey( "ignoreLayout" ) ) + { + le.ignoreLayout = true; + break; + } + + if ( obj.ContainsKey( "minWidth" ) ) + { + le.minWidth = obj.GetFloat( "minWidth", 0 ); + } + + if ( obj.ContainsKey( "minHeight" ) ) + { + le.minHeight = obj.GetFloat( "minHeight", 0 ); + } + + if ( obj.ContainsKey( "preferredWidth" ) ) + { + le.preferredWidth = obj.GetFloat( "preferredWidth", 0 ); + } + + if ( obj.ContainsKey( "preferredHeight" ) ) + { + le.preferredHeight = obj.GetFloat( "preferredHeight", 0 ); + } + + if ( obj.ContainsKey( "flexibleWidth" ) ) + { + le.flexibleWidth = obj.GetFloat( "flexibleWidth", 0 ); + } + + if ( obj.ContainsKey( "flexibleHeight" ) ) + { + le.flexibleHeight = obj.GetFloat( "flexibleHeight", 0 ); + } + + if ( obj.ContainsKey( "layoutPriority" ) ) + { + le.layoutPriority = obj.GetInt( "layoutPriority", 1 ); + } + + break; + } } } From 43482ee8399be32b46a939f012d9e9b729b99450 Mon Sep 17 00:00:00 2001 From: Maxim Bazuev Date: Sun, 3 Mar 2019 11:11:51 +0300 Subject: [PATCH 3/5] Add HorizontalLayoutGroup component --- CommunityEntity.UI.cs | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index 8cf3075..3e7debe 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -314,6 +314,55 @@ private void CreateComponents( GameObject go, JSON.Object obj ) break; } + case "UnityEngine.UI.HorizontalLayoutGroup": + { + var hlg = go.AddComponent(); + var paddingArray = obj.GetString( "padding", "0" ).Split( ' ' ); + if ( paddingArray.Length > 0 ) + { + hlg.padding.left = int.Parse( paddingArray[0] ); + } + + if ( paddingArray.Length > 1 ) + { + hlg.padding.right = int.Parse( paddingArray[1] ); + } + + if ( paddingArray.Length > 2 ) + { + hlg.padding.top = int.Parse( paddingArray[2] ); + } + + if ( paddingArray.Length > 3 ) + { + hlg.padding.bottom = int.Parse( paddingArray[3] ); + } + + hlg.spacing = obj.GetInt( "spacing", 0 ); + hlg.childAlignment = (TextAnchor)System.Enum.Parse( typeof( TextAnchor ), obj.GetString( "childAlignment", "UpperLeft" ) ); + + if ( obj.ContainsKey( "childControlWidth" ) ) + { + hlg.childControlWidth = true; + } + + if ( obj.ContainsKey( "childControlHeight" ) ) + { + hlg.childControlHeight = true; + } + + if ( obj.ContainsKey( "childForceExpandWidth" ) ) + { + hlg.childForceExpandWidth = true; + } + + if ( obj.ContainsKey( "childForceExpandHeight" ) ) + { + hlg.childForceExpandHeight = true; + } + break; + } + case "UnityEngine.UI.LayoutElement": { var le = go.AddComponent(); From 72b65ebf8600d41c9c0fc24bf9df51479153d8eb Mon Sep 17 00:00:00 2001 From: Maxim Bazuev Date: Sun, 3 Mar 2019 11:23:28 +0300 Subject: [PATCH 4/5] Fix padding update From: https://answers.unity.com/questions/1076870/horizontal-layout-group-padding-update-via-script.html --- CommunityEntity.UI.cs | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index 3e7debe..9956a82 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -269,24 +269,31 @@ private void CreateComponents( GameObject go, JSON.Object obj ) { var vlg = go.AddComponent(); var paddingArray = obj.GetString( "padding", "0" ).Split( ' ' ); + RectOffset padding = null; if ( paddingArray.Length > 0 ) { - vlg.padding.left = int.Parse( paddingArray[0] ); + padding = new RectOffset(); + padding.left = int.Parse( paddingArray[0] ); } if ( paddingArray.Length > 1 ) { - vlg.padding.right = int.Parse( paddingArray[1] ); + padding.right = int.Parse( paddingArray[1] ); } if ( paddingArray.Length > 2 ) { - vlg.padding.top = int.Parse( paddingArray[2] ); + padding.top = int.Parse( paddingArray[2] ); } if ( paddingArray.Length > 3 ) { - vlg.padding.bottom = int.Parse( paddingArray[3] ); + padding.bottom = int.Parse( paddingArray[3] ); + } + + if ( padding != null ) + { + vlg.padding = padding; } vlg.spacing = obj.GetInt( "spacing", 0 ); @@ -318,24 +325,31 @@ private void CreateComponents( GameObject go, JSON.Object obj ) { var hlg = go.AddComponent(); var paddingArray = obj.GetString( "padding", "0" ).Split( ' ' ); + RectOffset padding = null; if ( paddingArray.Length > 0 ) { - hlg.padding.left = int.Parse( paddingArray[0] ); + padding = new RectOffset(); + padding.left = int.Parse( paddingArray[0] ); } if ( paddingArray.Length > 1 ) { - hlg.padding.right = int.Parse( paddingArray[1] ); + padding.right = int.Parse( paddingArray[1] ); } if ( paddingArray.Length > 2 ) { - hlg.padding.top = int.Parse( paddingArray[2] ); + padding.top = int.Parse( paddingArray[2] ); } if ( paddingArray.Length > 3 ) { - hlg.padding.bottom = int.Parse( paddingArray[3] ); + padding.bottom = int.Parse( paddingArray[3] ); + } + + if ( padding != null ) + { + hlg.padding = padding; } hlg.spacing = obj.GetInt( "spacing", 0 ); From 4c1f350d60db0fe63eaf4066030a3646140a083a Mon Sep 17 00:00:00 2001 From: Maxim Bazuev Date: Sun, 3 Mar 2019 12:15:31 +0300 Subject: [PATCH 5/5] Optimize if branches --- CommunityEntity.UI.cs | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index 9956a82..b9a2f35 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -274,21 +274,21 @@ private void CreateComponents( GameObject go, JSON.Object obj ) { padding = new RectOffset(); padding.left = int.Parse( paddingArray[0] ); - } - if ( paddingArray.Length > 1 ) - { - padding.right = int.Parse( paddingArray[1] ); - } + if ( paddingArray.Length > 1 ) + { + padding.right = int.Parse( paddingArray[1] ); - if ( paddingArray.Length > 2 ) - { - padding.top = int.Parse( paddingArray[2] ); - } + if ( paddingArray.Length > 2 ) + { + padding.top = int.Parse( paddingArray[2] ); - if ( paddingArray.Length > 3 ) - { - padding.bottom = int.Parse( paddingArray[3] ); + if ( paddingArray.Length > 3 ) + { + padding.bottom = int.Parse( paddingArray[3] ); + } + } + } } if ( padding != null ) @@ -330,21 +330,21 @@ private void CreateComponents( GameObject go, JSON.Object obj ) { padding = new RectOffset(); padding.left = int.Parse( paddingArray[0] ); - } - if ( paddingArray.Length > 1 ) - { - padding.right = int.Parse( paddingArray[1] ); - } + if ( paddingArray.Length > 1 ) + { + padding.right = int.Parse( paddingArray[1] ); - if ( paddingArray.Length > 2 ) - { - padding.top = int.Parse( paddingArray[2] ); - } + if ( paddingArray.Length > 2 ) + { + padding.top = int.Parse( paddingArray[2] ); - if ( paddingArray.Length > 3 ) - { - padding.bottom = int.Parse( paddingArray[3] ); + if ( paddingArray.Length > 3 ) + { + padding.bottom = int.Parse( paddingArray[3] ); + } + } + } } if ( padding != null )