From ba24a4a15c0317ac2fd954f4173b4b79cbdf191e Mon Sep 17 00:00:00 2001
From: lwb <q3213421wrwqr>
Date: 星期三, 11 十一月 2020 17:06:33 +0800
Subject: [PATCH] 9527 unity 升级

---
 Assets/Plugins/PocoSDK/ugui/UnityNode.cs |  869 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 436 insertions(+), 433 deletions(-)

diff --git a/Assets/Plugins/PocoSDK/ugui/UnityNode.cs b/Assets/Plugins/PocoSDK/ugui/UnityNode.cs
index 2a698ba..b51212a 100644
--- a/Assets/Plugins/PocoSDK/ugui/UnityNode.cs
+++ b/Assets/Plugins/PocoSDK/ugui/UnityNode.cs
@@ -6,296 +6,299 @@
 
 namespace Poco
 {
-	public class UnityNode : AbstractNode
-	{
-		public static Dictionary<string, string> TypeNames = new Dictionary<string, string>() {
-			{ "Text", "Text" },
-			{ "Gradient Text", "Gradient.Text" },
-			{ "Image", "Image" },
-			{ "RawImage", "Raw.Image" },
-			{ "Mask", "Mask" },
-			{ "2DRectMask", "2D-Rect.Mask" },
-			{ "Button", "Button" },
-			{ "InputField", "InputField" },
-			{ "Toggle", "Toggle" },
-			{ "Toggle Group", "ToggleGroup" },
-			{ "Slider", "Slider" },
-			{ "ScrollBar", "ScrollBar" },
-			{ "DropDown", "DropDown" },
-			{ "ScrollRect", "ScrollRect" },
-			{ "Selectable", "Selectable" },
-			{ "Camera", "Camera" },
-			{ "RectTransform", "Node" },
-		};
-		public static string DefaultTypeName = "GameObject";
-		private GameObject gameObject;
-		private Renderer renderer;
-		private RectTransform rectTransform;
-		private Rect rect;
-		private Vector2 objectPos;
-		private List<string> components;
-		private Camera camera;
+    public class UnityNode : AbstractNode
+    {
+        public static Dictionary<string, string> TypeNames = new Dictionary<string, string>() {
+            { "Text", "Text" },
+            { "Gradient Text", "Gradient.Text" },
+            { "Image", "Image" },
+            { "RawImage", "Raw.Image" },
+            { "Mask", "Mask" },
+            { "2DRectMask", "2D-Rect.Mask" },
+            { "Button", "Button" },
+            { "InputField", "InputField" },
+            { "Toggle", "Toggle" },
+            { "Toggle Group", "ToggleGroup" },
+            { "Slider", "Slider" },
+            { "ScrollBar", "ScrollBar" },
+            { "DropDown", "DropDown" },
+            { "ScrollRect", "ScrollRect" },
+            { "Selectable", "Selectable" },
+            { "Camera", "Camera" },
+            { "RectTransform", "Node" },
+        };
+        public static string DefaultTypeName = "GameObject";
+        private GameObject gameObject;
+        private Renderer renderer;
+        private RectTransform rectTransform;
+        private Rect rect;
+        private Vector2 objectPos;
+        private List<string> components;
+        private Camera camera;
 
 
-		public UnityNode(GameObject obj)
-		{
-			gameObject = obj;
-			camera = Camera.main;
-			foreach (var cam in Camera.allCameras) {
-				// skip the main camera
-				// we want to use specified camera first then fallback to main camera if no other cameras
-				// for further advanced cases, we could test whether the game object is visible within the camera
-				if (cam == Camera.main) {
-					continue;
-				}
-				if ((cam.cullingMask & (1 << gameObject.layer)) != 0) {
-					camera = cam;
-				}
-			}
+        public UnityNode(GameObject obj)
+        {
+            gameObject = obj;
+            camera = Camera.main;
+            foreach (var cam in Camera.allCameras)
+            {
+                // skip the main camera
+                // we want to use specified camera first then fallback to main camera if no other cameras
+                // for further advanced cases, we could test whether the game object is visible within the camera
+                if (cam == Camera.main)
+                {
+                    continue;
+                }
+                if ((cam.cullingMask & (1 << gameObject.layer)) != 0)
+                {
+                    camera = cam;
+                }
+            }
 
-			renderer = gameObject.GetComponent<Renderer>();
-			rectTransform = gameObject.GetComponent<RectTransform>();
-			rect = GameObjectRect(renderer, rectTransform);
-			objectPos = renderer ? WorldToGUIPoint(camera, renderer.bounds.center) : Vector2.zero;
-			components = GameObjectAllComponents();
-		}
+            renderer = gameObject.GetComponent<Renderer>();
+            rectTransform = gameObject.GetComponent<RectTransform>();
+            rect = GameObjectRect(renderer, rectTransform);
+            objectPos = renderer ? WorldToGUIPoint(camera, renderer.bounds.center) : Vector2.zero;
+            components = GameObjectAllComponents();
+        }
 
-		public override AbstractNode getParent()
-		{
-			GameObject parentObj = gameObject.transform.parent.gameObject;
-			return new UnityNode(parentObj);
-		}
+        public override AbstractNode getParent()
+        {
+            GameObject parentObj = gameObject.transform.parent.gameObject;
+            return new UnityNode(parentObj);
+        }
 
-		public override List<AbstractNode> getChildren()
-		{
-			List<AbstractNode> children = new List<AbstractNode>();
-			foreach (Transform child in gameObject.transform)
-			{
-				children.Add(new UnityNode(child.gameObject));
-			}
-			return children;
-		}
+        public override List<AbstractNode> getChildren()
+        {
+            List<AbstractNode> children = new List<AbstractNode>();
+            foreach (Transform child in gameObject.transform)
+            {
+                children.Add(new UnityNode(child.gameObject));
+            }
+            return children;
+        }
 
-		public override object getAttr(string attrName)
-		{
-			switch (attrName)
-			{
-				case "name":
-					return gameObject.name;
-				case "type":
-					return GuessObjectTypeFromComponentNames(components);
-				case "visible":
-					return GameObjectVisible(renderer, components);
-				case "pos":
-					return GameObjectPosInScreen(objectPos, renderer, rectTransform, rect);
-				case "size":
-					return GameObjectSizeInScreen(rect, rectTransform);
-				case "scale":
-					return new List<float>() { 1.0f, 1.0f };
-				case "anchorPoint":
-					return GameObjectAnchorInScreen(renderer, rect, objectPos);
-				case "zOrders":
-					return GameObjectzOrders();
-				case "clickable":
-					return GameObjectClickable(components);
-				case "text":
-					return GameObjectText();
-				case "components":
-					return components;
-				case "texture":
-					return GetImageSourceTexture();
-				case "tag":
-					return GameObjectTag();
-				case "layer":
-				    return GameObjectLayerName ();
+        public override object getAttr(string attrName)
+        {
+            switch (attrName)
+            {
+                case "name":
+                    return gameObject.name;
+                case "type":
+                    return GuessObjectTypeFromComponentNames(components);
+                case "visible":
+                    return GameObjectVisible(renderer, components);
+                case "pos":
+                    return GameObjectPosInScreen(objectPos, renderer, rectTransform, rect);
+                case "size":
+                    return GameObjectSizeInScreen(rect, rectTransform);
+                case "scale":
+                    return new List<float>() { 1.0f, 1.0f };
+                case "anchorPoint":
+                    return GameObjectAnchorInScreen(renderer, rect, objectPos);
+                case "zOrders":
+                    return GameObjectzOrders();
+                case "clickable":
+                    return GameObjectClickable(components);
+                case "text":
+                    return GameObjectText();
+                case "components":
+                    return components;
+                case "texture":
+                    return GetImageSourceTexture();
+                case "tag":
+                    return GameObjectTag();
+                case "layer":
+                    return GameObjectLayerName();
                 case "_ilayer":
-                    return GameObjectLayer ();
+                    return GameObjectLayer();
                 case "_instanceId":
-					return gameObject.GetInstanceID ();
-				default:
-					return null;
-			}
-		}
+                    return gameObject.GetInstanceID();
+                default:
+                    return null;
+            }
+        }
 
 
-		public override Dictionary<string, object> enumerateAttrs()
-		{
-			Dictionary<string, object> payload = GetPayload();
-			Dictionary<string, object> ret = new Dictionary<string, object>();
-			foreach (KeyValuePair<string, object> p in payload)
-			{
-				if (p.Value != null)
-				{
-					ret.Add(p.Key, p.Value);
-				}
-			}
-			return ret;
-		}
+        public override Dictionary<string, object> enumerateAttrs()
+        {
+            Dictionary<string, object> payload = GetPayload();
+            Dictionary<string, object> ret = new Dictionary<string, object>();
+            foreach (KeyValuePair<string, object> p in payload)
+            {
+                if (p.Value != null)
+                {
+                    ret.Add(p.Key, p.Value);
+                }
+            }
+            return ret;
+        }
 
 
-		private Dictionary<string, object> GetPayload()
-		{
-			Dictionary<string, object> payload = new Dictionary<string, object>() {
-				{ "name", gameObject.name },
-				{ "type", GuessObjectTypeFromComponentNames (components) },
-				{ "visible", GameObjectVisible (renderer, components) },
-				{ "pos", GameObjectPosInScreen (objectPos, renderer, rectTransform, rect) },
-				{ "size", GameObjectSizeInScreen (rect, rectTransform) },
-				{ "scale", new List<float> (){ 1.0f, 1.0f } },
-				{ "anchorPoint", GameObjectAnchorInScreen (renderer, rect, objectPos) },
-				{ "zOrders", GameObjectzOrders () },
-				{ "clickable", GameObjectClickable (components) },
-				{ "text", GameObjectText () },
-				{ "components", components },
-				{ "texture", GetImageSourceTexture () },
-				{ "tag", GameObjectTag () },
-				{ "_ilayer", GameObjectLayer() },
-				{ "layer", GameObjectLayerName() },
-				{ "_instanceId", gameObject.GetInstanceID () },
-			};
-			return payload;
-		}
+        private Dictionary<string, object> GetPayload()
+        {
+            Dictionary<string, object> payload = new Dictionary<string, object>() {
+                { "name", gameObject.name },
+                { "type", GuessObjectTypeFromComponentNames (components) },
+                { "visible", GameObjectVisible (renderer, components) },
+                { "pos", GameObjectPosInScreen (objectPos, renderer, rectTransform, rect) },
+                { "size", GameObjectSizeInScreen (rect, rectTransform) },
+                { "scale", new List<float> (){ 1.0f, 1.0f } },
+                { "anchorPoint", GameObjectAnchorInScreen (renderer, rect, objectPos) },
+                { "zOrders", GameObjectzOrders () },
+                { "clickable", GameObjectClickable (components) },
+                { "text", GameObjectText () },
+                { "components", components },
+                { "texture", GetImageSourceTexture () },
+                { "tag", GameObjectTag () },
+                { "_ilayer", GameObjectLayer() },
+                { "layer", GameObjectLayerName() },
+                { "_instanceId", gameObject.GetInstanceID () },
+            };
+            return payload;
+        }
 
-		private string GuessObjectTypeFromComponentNames(List<string> components)
-		{
-			List<string> cns = new List<string>(components);
-			cns.Reverse();
-			foreach (string name in cns)
-			{
-				if (TypeNames.ContainsKey (name))
-				{
-					return TypeNames [name];
-				}
-			}
-			return DefaultTypeName;
-		}
+        private string GuessObjectTypeFromComponentNames(List<string> components)
+        {
+            List<string> cns = new List<string>(components);
+            cns.Reverse();
+            foreach (string name in cns)
+            {
+                if (TypeNames.ContainsKey(name))
+                {
+                    return TypeNames[name];
+                }
+            }
+            return DefaultTypeName;
+        }
 
-		private bool GameObjectVisible(Renderer renderer, List<string> components)
-		{
-			if (gameObject.activeInHierarchy)
-			{
-				bool light = components.Contains("Light");
-				// bool mesh = components.Contains ("MeshRenderer") && components.Contains ("MeshFilter");
-				bool particle = components.Contains("ParticleSystem") && components.Contains("ParticleSystemRenderer");
-				if (light || particle)
-				{
-					return false;
-				}
-				else
-				{
-					return renderer ? renderer.isVisible : true;
-				}
-			}
-			else
-			{
-				return false;
-			}
-		}
+        private bool GameObjectVisible(Renderer renderer, List<string> components)
+        {
+            if (gameObject.activeInHierarchy)
+            {
+                bool light = components.Contains("Light");
+                // bool mesh = components.Contains ("MeshRenderer") && components.Contains ("MeshFilter");
+                bool particle = components.Contains("ParticleSystem") && components.Contains("ParticleSystemRenderer");
+                if (light || particle)
+                {
+                    return false;
+                }
+                else
+                {
+                    return renderer ? renderer.isVisible : true;
+                }
+            }
+            else
+            {
+                return false;
+            }
+        }
 
-		private int GameObjectLayer()
-		{
-			return gameObject.layer;
-		}
-		private string GameObjectLayerName()
-		{
-			return LayerMask.LayerToName (gameObject.layer);
-		}
+        private int GameObjectLayer()
+        {
+            return gameObject.layer;
+        }
+        private string GameObjectLayerName()
+        {
+            return LayerMask.LayerToName(gameObject.layer);
+        }
 
-		private bool GameObjectClickable(List<string> components)
-		{
-			Button button = gameObject.GetComponent<Button>();
-			return button ? button.isActiveAndEnabled : false;
-		}
+        private bool GameObjectClickable(List<string> components)
+        {
+            Button button = gameObject.GetComponent<Button>();
+            return button ? button.isActiveAndEnabled : false;
+        }
 
-		private string GameObjectText()
-		{
-			Text text = gameObject.GetComponent<Text>();
-			return text ? text.text : null;
-		}
+        private string GameObjectText()
+        {
+            Text text = gameObject.GetComponent<Text>();
+            return text ? text.text : null;
+        }
 
-		private string GameObjectTag()
-		{
-			string tag;
-			try
-			{
-				tag = !gameObject.CompareTag("Untagged") ? gameObject.tag : null;
-			}
-			catch (UnityException)
-			{
-				tag = null;
-			}
-			return tag;
-		}
+        private string GameObjectTag()
+        {
+            string tag;
+            try
+            {
+                tag = !gameObject.CompareTag("Untagged") ? gameObject.tag : null;
+            }
+            catch (UnityException)
+            {
+                tag = null;
+            }
+            return tag;
+        }
 
-		private List<string> GameObjectAllComponents()
-		{
-			List<string> components = new List<string> ();
-			Component[] allComponents = gameObject.GetComponents<Component> ();
-			if (allComponents != null)
-			{
-			    foreach (Component ac in allComponents)
-				{
-				    if (ac != null)
-				    {
-						components.Add (ac.GetType ().Name);
-					}
-				}
-			}
-			return components;
-		}
+        private List<string> GameObjectAllComponents()
+        {
+            List<string> components = new List<string>();
+            Component[] allComponents = gameObject.GetComponents<Component>();
+            if (allComponents != null)
+            {
+                foreach (Component ac in allComponents)
+                {
+                    if (ac != null)
+                    {
+                        components.Add(ac.GetType().Name);
+                    }
+                }
+            }
+            return components;
+        }
 
-		private Dictionary<string, float> GameObjectzOrders()
-		{
-			float CameraViewportPoint = 0;
-			if (camera != null)
-			{
-				CameraViewportPoint = Math.Abs(camera.WorldToViewportPoint(gameObject.transform.position).z);
-			}
-			Dictionary<string, float> zOrders = new Dictionary<string, float>() {
-				{ "global", 0f },
-				{ "local", -1 * CameraViewportPoint }
-			};
-			return zOrders;
-		}
+        private Dictionary<string, float> GameObjectzOrders()
+        {
+            float CameraViewportPoint = 0;
+            if (camera != null)
+            {
+                CameraViewportPoint = Math.Abs(camera.WorldToViewportPoint(gameObject.transform.position).z);
+            }
+            Dictionary<string, float> zOrders = new Dictionary<string, float>() {
+                { "global", 0f },
+                { "local", -1 * CameraViewportPoint }
+            };
+            return zOrders;
+        }
 
-		private Rect GameObjectRect(Renderer renderer, RectTransform rectTransform)
-		{
-			Rect rect = new Rect(0, 0, 0, 0);
-			if (renderer)
-			{
-				rect = RendererToScreenSpace(camera, renderer);
-			}
-			else if (rectTransform)
-			{
-				rect = RectTransformToScreenSpace(rectTransform);
-			}
-			return rect;
-		}
+        private Rect GameObjectRect(Renderer renderer, RectTransform rectTransform)
+        {
+            Rect rect = new Rect(0, 0, 0, 0);
+            if (renderer)
+            {
+                rect = RendererToScreenSpace(camera, renderer);
+            }
+            else if (rectTransform)
+            {
+                rect = RectTransformToScreenSpace(rectTransform);
+            }
+            return rect;
+        }
 
-		private float[] GameObjectPosInScreen(Vector3 objectPos, Renderer renderer, RectTransform rectTransform, Rect rect)
-		{
-			float[] pos = { 0f, 0f };
+        private float[] GameObjectPosInScreen(Vector3 objectPos, Renderer renderer, RectTransform rectTransform, Rect rect)
+        {
+            float[] pos = { 0f, 0f };
 
-			if (renderer)
-			{
-				// 3d object
-				pos[0] = objectPos.x / (float)Screen.width;
-				pos[1] = objectPos.y / (float)Screen.height;
-			}
-			else if (rectTransform)
-			{
-				// ui object (rendered on screen space, other render modes may be different)
-				// use center pos for now
-				Canvas rootCanvas = GetRootCanvas (gameObject);
-				RenderMode renderMode = rootCanvas != null ? rootCanvas.renderMode : new RenderMode ();
-				switch (renderMode)
-				{
-					case RenderMode.ScreenSpaceCamera:
-						//涓婁竴涓柟妗堢粡杩囧疄闄呮祴璇曞彂鐜拌繕鏈変袱涓棶棰樺瓨鍦�
-						//1.鍦ㄦ湁Canvas Scaler淇敼浜哛ootCanvas鐨凷cale鐨勬儏鍐典笅鍧愭爣鐨勬姄鍙栦粛鐒朵笉瀵癸紝褰卞搷鍒颁簡ScreenSpaceCameram妯″紡鍦ㄤ笉鍚屽垎杈ㄧ巼鍜屽睆骞曟瘮渚嬩笅璇嗗埆鐨勫吋瀹规�с��
-						//2.RectTransformUtility杞殑 rectTransform.transform.position鏈川涓婂緱鍒扮殑鏄疪ectTransform.pivot涓績杞村湪灞忓箷涓婄殑鍧愭爣锛屽鏋減ivot涓嶇瓑浜�(0.5,0.5)锛�
-						//閭d箞鑾峰彇鍒扮殑position灏变笉绛変簬鍥惧舰鐨勪腑蹇冪偣銆�
-						//璇曚簡涓�鏅氫笂锛屾壘鍒颁簡瑙e喅鍔炴硶銆�
+            if (renderer)
+            {
+                // 3d object
+                pos[0] = objectPos.x / (float)Screen.width;
+                pos[1] = objectPos.y / (float)Screen.height;
+            }
+            else if (rectTransform)
+            {
+                // ui object (rendered on screen space, other render modes may be different)
+                // use center pos for now
+                Canvas rootCanvas = GetRootCanvas(gameObject);
+                RenderMode renderMode = rootCanvas != null ? rootCanvas.renderMode : new RenderMode();
+                switch (renderMode)
+                {
+                    case RenderMode.ScreenSpaceCamera:
+                        //涓婁竴涓柟妗堢粡杩囧疄闄呮祴璇曞彂鐜拌繕鏈変袱涓棶棰樺瓨鍦�
+                        //1.鍦ㄦ湁Canvas Scaler淇敼浜哛ootCanvas鐨凷cale鐨勬儏鍐典笅鍧愭爣鐨勬姄鍙栦粛鐒朵笉瀵癸紝褰卞搷鍒颁簡ScreenSpaceCameram妯″紡鍦ㄤ笉鍚屽垎杈ㄧ巼鍜屽睆骞曟瘮渚嬩笅璇嗗埆鐨勫吋瀹规�с��
+                        //2.RectTransformUtility杞殑 rectTransform.transform.position鏈川涓婂緱鍒扮殑鏄疪ectTransform.pivot涓績杞村湪灞忓箷涓婄殑鍧愭爣锛屽鏋減ivot涓嶇瓑浜�(0.5,0.5)锛�
+                        //閭d箞鑾峰彇鍒扮殑position灏变笉绛変簬鍥惧舰鐨勪腑蹇冪偣銆�
+                        //璇曚簡涓�鏅氫笂锛屾壘鍒颁簡瑙e喅鍔炴硶銆�
 
                         //鐢∕ainCanvas杞竴娆″睆骞曞潗鏍�
                         Vector2 position = RectTransformUtility.WorldToScreenPoint(rootCanvas.worldCamera, rectTransform.transform.position);
@@ -310,24 +313,24 @@
                         pos[1] = position.y / Screen.height;
                         break;
                     case RenderMode.WorldSpace:
-                        Vector2 _pos = RectTransformUtility.WorldToScreenPoint (rootCanvas.worldCamera, rectTransform.transform.position);
-                        pos [0] = _pos.x / Screen.width;
-                        pos [1] = (Screen.height - _pos.y) / Screen.height;
+                        Vector2 _pos = RectTransformUtility.WorldToScreenPoint(rootCanvas.worldCamera, rectTransform.transform.position);
+                        pos[0] = _pos.x / Screen.width;
+                        pos[1] = (Screen.height - _pos.y) / Screen.height;
                         break;
                     default:
                         pos[0] = rect.center.x / (float)Screen.width;
                         pos[1] = rect.center.y / (float)Screen.height;
                         break;
-				}
-			}
-			return pos;
-		}
+                }
+            }
+            return pos;
+        }
 
-		private Canvas GetRootCanvas (GameObject gameObject)
-		{
-			Canvas canvas = gameObject.GetComponentInParent<Canvas> ();
-			// 濡傛灉unity鐗堟湰灏忎簬unity5.5锛屽氨鐢ㄩ�掑綊鐨勬柟寮忓彇鍚э紝娌℃硶鐩存帴鍙杛ootCanvas
-			// 濡傛灉鏈夌敤鍒�4.6浠ヤ笅鐗堟湰鐨勮瘽灏辫嚜宸辨墜鍔ㄥ湪杩欓噷娣诲姞鏉′欢鍚�
+        private Canvas GetRootCanvas(GameObject gameObject)
+        {
+            Canvas canvas = gameObject.GetComponentInParent<Canvas>();
+            // 濡傛灉unity鐗堟湰灏忎簬unity5.5锛屽氨鐢ㄩ�掑綊鐨勬柟寮忓彇鍚э紝娌℃硶鐩存帴鍙杛ootCanvas
+            // 濡傛灉鏈夌敤鍒�4.6浠ヤ笅鐗堟湰鐨勮瘽灏辫嚜宸辨墜鍔ㄥ湪杩欓噷娣诲姞鏉′欢鍚�
 #if UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4
 			if (canvas && canvas.isRootCanvas) {
 				return canvas;
@@ -339,173 +342,173 @@
 				}
 			}
 #else
-			if (canvas && canvas.isRootCanvas)
-			{
-				return canvas;
-			}
-			else if (canvas)
-			{
-				return canvas.rootCanvas;
-			}
-			else
-			{
-				return null;
-			}
+            if (canvas && canvas.isRootCanvas)
+            {
+                return canvas;
+            }
+            else if (canvas)
+            {
+                return canvas.rootCanvas;
+            }
+            else
+            {
+                return null;
+            }
 #endif
-		}
+        }
 
-		private float[] GameObjectSizeInScreen(Rect rect, RectTransform rectTransform)
-		{
-			float[] size = { 0f, 0f };
-			if (rectTransform)
-			{
-				Canvas rootCanvas = GetRootCanvas (gameObject);
-				RenderMode renderMode = rootCanvas != null ? rootCanvas.renderMode : new RenderMode ();
-				switch (renderMode)
-				{
-					case RenderMode.ScreenSpaceCamera:
-						Rect _rect = RectTransformUtility.PixelAdjustRect (rectTransform, rootCanvas);
-						size = new float[] {
+        private float[] GameObjectSizeInScreen(Rect rect, RectTransform rectTransform)
+        {
+            float[] size = { 0f, 0f };
+            if (rectTransform)
+            {
+                Canvas rootCanvas = GetRootCanvas(gameObject);
+                RenderMode renderMode = rootCanvas != null ? rootCanvas.renderMode : new RenderMode();
+                switch (renderMode)
+                {
+                    case RenderMode.ScreenSpaceCamera:
+                        Rect _rect = RectTransformUtility.PixelAdjustRect(rectTransform, rootCanvas);
+                        size = new float[] {
                             _rect.width * rootCanvas.scaleFactor / (float)Screen.width,
                             _rect.height * rootCanvas.scaleFactor / (float)Screen.height
                         };
-						break;
-					case RenderMode.WorldSpace:
-						Rect rect_ = rectTransform.rect;
-						RectTransform canvasTransform = rootCanvas.GetComponent<RectTransform>();
-						size = new float[] { rect_.width / canvasTransform.rect.width, rect_.height / canvasTransform.rect.height };
-						break;
-					default:
-						size = new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height };
-						break;
-				}
-			}
-			else
-			{
-				size = new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height };
-			}
-			return size;
-		}
+                        break;
+                    case RenderMode.WorldSpace:
+                        Rect rect_ = rectTransform.rect;
+                        RectTransform canvasTransform = rootCanvas.GetComponent<RectTransform>();
+                        size = new float[] { rect_.width / canvasTransform.rect.width, rect_.height / canvasTransform.rect.height };
+                        break;
+                    default:
+                        size = new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height };
+                        break;
+                }
+            }
+            else
+            {
+                size = new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height };
+            }
+            return size;
+        }
 
-		private float[] GameObjectAnchorInScreen(Renderer renderer, Rect rect, Vector3 objectPos)
-		{
-			float[] defaultValue = { 0.5f, 0.5f };
-			if (rectTransform)
-			{
-				Vector2 data = rectTransform.pivot;
-				defaultValue[0] = data[0];
-				defaultValue[1] = 1 - data[1];
-				return defaultValue;
-			}
-			if (!renderer)
-			{
-			    //<Modified> some object do not have renderer
-				return defaultValue;
-			}
-			float[] anchor = { (objectPos.x - rect.xMin) / rect.width, (objectPos.y - rect.yMin) / rect.height };
-			if (Double.IsNaN(anchor[0]) || Double.IsNaN(anchor[1]))
-			{
-				return defaultValue;
-			}
-			else if (Double.IsPositiveInfinity(anchor[0]) || Double.IsPositiveInfinity(anchor[1]))
-			{
-				return defaultValue;
-			}
-			else if (Double.IsNegativeInfinity(anchor[0]) || Double.IsNegativeInfinity(anchor[1]))
-			{
-				return defaultValue;
-			}
-			else
-			{
-				return anchor;
-			}
-		}
+        private float[] GameObjectAnchorInScreen(Renderer renderer, Rect rect, Vector3 objectPos)
+        {
+            float[] defaultValue = { 0.5f, 0.5f };
+            if (rectTransform)
+            {
+                Vector2 data = rectTransform.pivot;
+                defaultValue[0] = data[0];
+                defaultValue[1] = 1 - data[1];
+                return defaultValue;
+            }
+            if (!renderer)
+            {
+                //<Modified> some object do not have renderer
+                return defaultValue;
+            }
+            float[] anchor = { (objectPos.x - rect.xMin) / rect.width, (objectPos.y - rect.yMin) / rect.height };
+            if (Double.IsNaN(anchor[0]) || Double.IsNaN(anchor[1]))
+            {
+                return defaultValue;
+            }
+            else if (Double.IsPositiveInfinity(anchor[0]) || Double.IsPositiveInfinity(anchor[1]))
+            {
+                return defaultValue;
+            }
+            else if (Double.IsNegativeInfinity(anchor[0]) || Double.IsNegativeInfinity(anchor[1]))
+            {
+                return defaultValue;
+            }
+            else
+            {
+                return anchor;
+            }
+        }
 
-		private string GetImageSourceTexture()
-		{
-			Image image = gameObject.GetComponent<Image>();
-			if (image != null && image.sprite != null)
-			{
-				return image.sprite.name;
-			}
+        private string GetImageSourceTexture()
+        {
+            Image image = gameObject.GetComponent<Image>();
+            if (image != null && image.sprite != null)
+            {
+                return image.sprite.name;
+            }
 
-			RawImage rawImage = gameObject.GetComponent<RawImage>();
-			if (rawImage != null && rawImage.texture != null)
-			{
-				return rawImage.texture.name;
-			}
+            RawImage rawImage = gameObject.GetComponent<RawImage>();
+            if (rawImage != null && rawImage.texture != null)
+            {
+                return rawImage.texture.name;
+            }
 
-			SpriteRenderer spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
-			if (spriteRenderer != null && spriteRenderer.sprite != null)
-			{
-				return spriteRenderer.sprite.name;
-			}
+            SpriteRenderer spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
+            if (spriteRenderer != null && spriteRenderer.sprite != null)
+            {
+                return spriteRenderer.sprite.name;
+            }
 
-			Renderer render = gameObject.GetComponent<Renderer>();
-			if (renderer != null && renderer.material != null)
-			{
-				return renderer.material.color.ToString();
-			}
+            Renderer render = gameObject.GetComponent<Renderer>();
+            if (renderer != null && renderer.material != null)
+            {
+                return renderer.material.color.ToString();
+            }
 
-			return null;
-		}
+            return null;
+        }
 
-		protected static Vector2 WorldToGUIPoint(Camera camera, Vector3 world)
-		{
-			Vector2 screenPoint = Vector2.zero;
-			if (camera != null)
-			{
-				screenPoint = camera.WorldToScreenPoint(world);
-				screenPoint.y = (float)Screen.height - screenPoint.y;
-			}
-			return screenPoint;
-		}
+        protected static Vector2 WorldToGUIPoint(Camera camera, Vector3 world)
+        {
+            Vector2 screenPoint = Vector2.zero;
+            if (camera != null)
+            {
+                screenPoint = camera.WorldToScreenPoint(world);
+                screenPoint.y = (float)Screen.height - screenPoint.y;
+            }
+            return screenPoint;
+        }
 
-		protected static Rect RendererToScreenSpace(Camera camera, Renderer renderer)
-		{
-			Vector3 cen = renderer.bounds.center;
-			Vector3 ext = renderer.bounds.extents;
-			Vector2[] extentPoints = new Vector2[8] {
-				WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y - ext.y, cen.z - ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y - ext.y, cen.z - ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y - ext.y, cen.z + ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y - ext.y, cen.z + ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y + ext.y, cen.z - ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y + ext.y, cen.z - ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y + ext.y, cen.z + ext.z)),
-				WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y + ext.y, cen.z + ext.z))
-			};
-			Vector2 min = extentPoints[0];
-			Vector2 max = extentPoints[0];
-			foreach (Vector2 v in extentPoints)
-			{
-				min = Vector2.Min(min, v);
-				max = Vector2.Max(max, v);
-			}
-			return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);
-		}
+        protected static Rect RendererToScreenSpace(Camera camera, Renderer renderer)
+        {
+            Vector3 cen = renderer.bounds.center;
+            Vector3 ext = renderer.bounds.extents;
+            Vector2[] extentPoints = new Vector2[8] {
+                WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y - ext.y, cen.z - ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y - ext.y, cen.z - ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y - ext.y, cen.z + ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y - ext.y, cen.z + ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y + ext.y, cen.z - ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y + ext.y, cen.z - ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x - ext.x, cen.y + ext.y, cen.z + ext.z)),
+                WorldToGUIPoint (camera, new Vector3 (cen.x + ext.x, cen.y + ext.y, cen.z + ext.z))
+            };
+            Vector2 min = extentPoints[0];
+            Vector2 max = extentPoints[0];
+            foreach (Vector2 v in extentPoints)
+            {
+                min = Vector2.Min(min, v);
+                max = Vector2.Max(max, v);
+            }
+            return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);
+        }
 
-		protected static Rect RectTransformToScreenSpace(RectTransform rectTransform)
-		{
-			Vector2 size = Vector2.Scale(rectTransform.rect.size, rectTransform.lossyScale);
-			Rect rect = new Rect(rectTransform.position.x, Screen.height - rectTransform.position.y, size.x, size.y);
-			rect.x -= (rectTransform.pivot.x * size.x);
-			rect.y -= ((1.0f - rectTransform.pivot.y) * size.y);
-			return rect;
-		}
+        protected static Rect RectTransformToScreenSpace(RectTransform rectTransform)
+        {
+            Vector2 size = Vector2.Scale(rectTransform.rect.size, rectTransform.lossyScale);
+            Rect rect = new Rect(rectTransform.position.x, Screen.height - rectTransform.position.y, size.x, size.y);
+            rect.x -= (rectTransform.pivot.x * size.x);
+            rect.y -= ((1.0f - rectTransform.pivot.y) * size.y);
+            return rect;
+        }
 
-		public static bool SetText (GameObject go, string textVal)
-		{
-			if (go != null)
-			{
-				var inputField = go.GetComponent<InputField>();
-				if (inputField != null)
-				{
-					inputField.text = textVal;
-					return true;
-				}
-			}
-			return false;
-		}
-	}
+        public static bool SetText(GameObject go, string textVal)
+        {
+            if (go != null)
+            {
+                var inputField = go.GetComponent<InputField>();
+                if (inputField != null)
+                {
+                    inputField.text = textVal;
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
 }

--
Gitblit v1.8.0