Пример #1
0
        private void CreateDebugRect(CanvasData.Node node, Rect rect)
        {
            var scanner = (CanvasScanner)target;

            var go = DefaultControls.CreateImage(new DefaultControls.Resources());

            go.transform.SetParent(scanner.rectContainer, false);

            // set name
            go.name = string.Format("NodeRect {0:D}", node.index);
            var rt = go.transform as RectTransform;

            // set position
            rt.anchoredPosition = rect.center;
            rt.sizeDelta        = rect.size;

            // set color
            var image = go.GetComponent <Image>();

            image.color = scanner.rectColor;
        }
Пример #2
0
        private void BuildNodes(DataContainer dataContainer)
        {
            var scanner = (CanvasScanner)target;

            // get all items from content node
            var list = GetPrefabInstanceList();

            var nodeList = new List <CanvasData.Node>();

            int index = 0;

            foreach (var item in list)
            {
                var nodeRT = item.transform as RectTransform;

                if (!VerifyTransform(nodeRT))
                {
                    continue;
                }

                var node = new CanvasData.Node();

                // get prefab parent
                node.prefab = PrefabUtility.GetPrefabParent(item) as GameObject;

                // get position and size
                node.anchoredPosition = GetAnchoredPosition(nodeRT, scanner.content);
                node.sizeDelta        = nodeRT.sizeDelta;
                node.index            = index++;

                // set rotation
                node.rotation = nodeRT.rotation.eulerAngles.z;

                // get metadata
                var metadata = nodeRT.GetComponent <ISerializableCanvasNode>();
                if (metadata != null)
                {
                    // serialize metadata to string
                    node.metadata = metadata.Serialize();
                }

                // add it
                nodeList.Add(node);

                // add node rect
                var rect = GetNodeRect(nodeRT, scanner.content, dataContainer);
                dataContainer.nodeRectDictionary.Add(node, rect);
            }

            if (scanner.generateDebugRect)
            {
                foreach (var node in nodeList)
                {
                    var rect = dataContainer.nodeRectDictionary[node];

                    CreateDebugRect(node, rect);
                }
            }

            // set data
            scanner.data.nodeList = nodeList;
        }