Example #1
0
        private void SetSlider(Slider slider, ImgNode handlePos, GroupNode groupPos)
        {
            var hRect = handlePos.rect;
            var gRect = groupPos.rect;

            if (gRect.width > gRect.height)
            {
                if (hRect.x > gRect.x)
                {
                    slider.direction = Slider.Direction.LeftToRight;
                }
                else
                {
                    slider.direction = Slider.Direction.RightToLeft;
                }
            }
            else
            {
                if (hRect.y > gRect.y)
                {
                    slider.direction = Slider.Direction.BottomToTop;
                }
                else
                {
                    slider.direction = Slider.Direction.TopToBottom;
                }
            }
        }
        private void DrawImages(InputField inputfield, UGUINode node, GroupNode layer)
        {
            if (layer.images != null)
            {
                for (int i = 0; i < layer.images.Count; i++)
                {
                    ImgNode image = layer.images[i];

                    if (image.type == ImgType.Label && MatchAddress(image.Name, rule.titleAddress))
                    {
                        UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.textComponent;//inputfield.transform.Find("Text").GetComponent<UnityEngine.UI.Text>();
                        var childNode            = CreateNormalNode(text.gameObject, image.rect, node);
                        childNode.anchoType = AnchoType.XStretch | AnchoType.YStretch;
                        PSDImporterUtility.SetPictureOrLoadColor(image, text);
                    }
                    else if (image.type == ImgType.Label && MatchAddress(image.Name, rule.placeAddress))
                    {
                        UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.placeholder;//.transform.Find("Placeholder").GetComponent<UnityEngine.UI.Text>();
                        var childNode            = CreateNormalNode(text.gameObject, image.rect, node);
                        childNode.anchoType = AnchoType.XStretch | AnchoType.YStretch;
                        PSDImporterUtility.SetPictureOrLoadColor(image, text);
                    }
                    else if (MatchAddress(image.Name, rule.backgroundAddress))
                    {
                        PSDImporterUtility.SetPictureOrLoadColor(image, inputfield.image);
                        SetRectTransform(image.rect, inputfield.GetComponent <RectTransform>());
                    }
                    else
                    {
                        ctrl.DrawImage(image, node);
                    }
                }
            }
        }
        /// <summary>
        /// 初始化按扭为text或image
        /// </summary>
        /// <param name="image"></param>
        /// <param name="button"></param>
        private void InitButton(ImgNode image, UnityEngine.UI.Button button)
        {
            if (image.type == ImgType.Label)
            {
                var text = button.GetComponent <UnityEngine.UI.Text>();
                if (text == null)
                {
                    text = button.gameObject.AddComponent <UnityEngine.UI.Text>();

                    button.targetGraphic = text;

                    SetRectTransform(image.rect, text.rectTransform);
#if UNITY_EDITOR
                    UnityEditorInternal.ComponentUtility.MoveComponentUp(text);
#endif
                }
            }
            else
            {
                var img = button.GetComponent <UnityEngine.UI.Image>();
                if (img == null)
                {
                    img = button.gameObject.AddComponent <UnityEngine.UI.Image>();
                    button.targetGraphic = img;
#if UNITY_EDITOR
                    UnityEditorInternal.ComponentUtility.MoveComponentUp(img);
#endif
                }
            }
        }
        /// <summary>
        /// 绘制图片
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="node"></param>
        /// <param name="background"></param>
        private void DrawImages(GroupNode layer, UGUINode node, out Graphic background)
        {
            background = null;
            for (int i = 0; i < layer.images.Count; i++)
            {
                ImgNode image = layer.images[i];

                if (MatchAddress(image.Name, rule.backgroundAddress))
                {
                    if (image.type == ImgType.Texture)
                    {
                        background = node.InitComponent <UnityEngine.UI.RawImage>();
                    }
                    else
                    {
                        background = node.InitComponent <UnityEngine.UI.Image>();
                    }

                    if (background)
                    {
                        PSDImporterUtility.SetPictureOrLoadColor(image, background);
                        SetRectTransform(image.rect, background.GetComponent <RectTransform>());
                        background.name = layer.displayName;
                    }
                }
                else
                {
                    ctrl.DrawImage(image, node);
                }
            }
        }
        private void DrawImages(List <ImgNode> images, Scrollbar scrollbar, UGUINode node)
        {
            for (int i = 0; i < images.Count; i++)
            {
                ImgNode image = images[i];
                UnityEngine.UI.Image graph = null;

                if (MatchAddress(image.Name, rule.backgroundAddress))
                {
                    graph = scrollbar.GetComponent <UnityEngine.UI.Image>();
                    SetRectTransform(image.rect, scrollbar.GetComponent <RectTransform>());
                }
                else if (MatchAddress(image.Name, rule.handleAddress))
                {
                    graph = scrollbar.handleRect.GetComponent <UnityEngine.UI.Image>();
                }
                else
                {
                    ctrl.DrawImage(image, node);
                }

                if (graph != null)
                {
                    PSDImporterUtility.SetPictureOrLoadColor(image, graph);
                }
            }
        }
 /// <summary>
 /// 设置图片切换规则
 /// </summary>
 /// <param name="image"></param>
 /// <param name="button"></param>
 private void SetSpriteSwipe(ImgNode image, UnityEngine.UI.Button button)
 {
     if (MatchAddress(image.Name, rule.normalAddress))
     {
         if (image.type == ImgType.Label)
         {
             (button.targetGraphic as UnityEngine.UI.Text).text = image.text;
         }
         else
         {
             button.image.sprite = image.sprite;
         }
     }
     else if (MatchAddress(image.Name, rule.pressedAddress))
     {
         button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
         UnityEngine.UI.SpriteState state = button.spriteState;
         state.pressedSprite = image.sprite;
         button.spriteState  = state;
     }
     else if (MatchAddress(image.Name, rule.disableAddress))
     {
         button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
         UnityEngine.UI.SpriteState state = button.spriteState;
         state.disabledSprite = image.sprite;
         button.spriteState   = state;
     }
     else if (MatchAddress(image.Name, rule.highlightedAddress))
     {
         button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
         UnityEngine.UI.SpriteState state = button.spriteState;
         state.highlightedSprite = image.sprite;
         button.spriteState      = state;
     }
 }
Example #7
0
        private void SetSpriteSwipe(ImgNode image, UnityEngine.UI.Button button)
        {
            string lowerName = image.Name.ToLower();

            if (lowerName.StartsWith("n_"))
            {
                button.image.sprite = image.sprite;
            }
            else if (lowerName.StartsWith("p_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
                UnityEngine.UI.SpriteState state = button.spriteState;
                state.pressedSprite = image.sprite;
                button.spriteState  = state;
            }
            else if (lowerName.StartsWith("d_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
                UnityEngine.UI.SpriteState state = button.spriteState;
                state.disabledSprite = image.sprite;
                button.spriteState   = state;
            }
            else if (lowerName.StartsWith("h_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap;
                UnityEngine.UI.SpriteState state = button.spriteState;
                state.highlightedSprite = image.sprite;
                button.spriteState      = state;
            }
        }
Example #8
0
        /// <summary>
        /// 快速设置图片的内容
        /// </summary>
        /// <param name="image"></param>
        /// <param name="graph"></param>
        public static void SetPictureOrLoadColor(ImgNode image, UnityEngine.UI.Graphic graph)
        {
            graph.color = image.color;
            switch (image.type)
            {
            case ImgType.Image:
                ((UnityEngine.UI.Image)graph).sprite = image.sprite;
                break;

            case ImgType.Texture:
                ((UnityEngine.UI.RawImage)graph).texture = image.texture;
                break;

            case ImgType.Label:
                var myText = (UnityEngine.UI.Text)graph;
                myText.text     = image.text;
                myText.fontSize = image.fontSize;
                break;

            case ImgType.AtlasImage:
                ((UnityEngine.UI.Image)graph).sprite = image.sprite;
                break;

            default:
                break;
            }
        }
Example #9
0
        public UGUINode DrawLayer(GroupNode layer, UGUINode parent)
        {
            UGUINode node = PSDImportUtility.InstantiateItem(GroupType.TOGGLE, layer.Name, parent);// GameObject.Instantiate(temp) as UnityEngine.UI.Toggle;

            UnityEngine.UI.Toggle toggle = node.InitComponent <UnityEngine.UI.Toggle>();
            if (layer.images != null)
            {
                for (int imageIndex = 0; imageIndex < layer.images.Count; imageIndex++)
                {
                    ImgNode image     = layer.images[imageIndex];
                    string  lowerName = image.Name.ToLower();
                    if (lowerName.StartsWith("b_"))
                    {
                        PSDImportUtility.SetPictureOrLoadColor(image, toggle.targetGraphic);
                        PSDImportUtility.SetRectTransform(image, toggle.GetComponent <RectTransform>());
                    }
                    else if (lowerName.StartsWith("m_"))
                    {
                        PSDImportUtility.SetPictureOrLoadColor(image, toggle.graphic);
                    }
                    else
                    {
                        ctrl.DrawImage(image, node);
                    }
                }
            }
            return(node);
        }
Example #10
0
        /// <summary>
        /// 转换为组
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="group"></param>
        /// <param name="OnRetrive"></param>
        public static void RetriveLayerToSwitchModle(Vector2 rootSize, PsdLayer layer, GroupNode group, bool forceSprite = false)
        {
            if (!layer.IsGroup)
            {
                return;
            }
            else
            {
                foreach (var child in layer.Childs)
                {
                    if (child.IsGroup)
                    {
                        GroupNode childNode = group.InsertChild(GetRectFromLayer(child)).Analyzing(rouleObj, child.Name);

                        if (childNode != null)
                        {
                            group.groups.Add(childNode);
                            RetriveLayerToSwitchModle(rootSize, child, childNode, forceSprite);
                        }
                    }
                    else
                    {
                        ImgNode imgnode = AnalysisLayer(rootSize, child, forceSprite);
                        if (imgnode != null)
                        {
                            group.images.Add(imgnode);
                        }
                    }
                }
            }
        }
Example #11
0
        private void DrawBackground(ImgNode bg, UGUINode node)
        {
            var bgnode = ctrl.DrawImage(bg, node);
            var graph  = bgnode.InitComponent <UnityEngine.UI.Image>();

            node.InitComponent <Slider>().targetGraphic = graph;
            PSDImporterUtility.SetPictureOrLoadColor(bg, graph);
        }
Example #12
0
        public override UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = CreateRootNode(image.Name, AdjustTextRect(image.rect, image.fontSize), parent);

            UnityEngine.UI.Text myText = node.InitComponent <Text>();
            PSDImporterUtility.SetPictureOrLoadColor(image, myText);
            return(node);
        }
Example #13
0
        public override UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = CreateRootNode(image.Name, image.rect, parent);

            UnityEngine.UI.RawImage pic = node.InitComponent <UnityEngine.UI.RawImage>();
            PSDImporterUtility.SetPictureOrLoadColor(image, pic);
            return(node);
        }
Example #14
0
        private UGUINode DrawRawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = PSDImportUtility.InstantiateItem(GroupType.RawIMAGE, image.sprite.name, parent);

            UnityEngine.UI.RawImage pic = node.InitComponent <UnityEngine.UI.RawImage>();
            PSDImportUtility.SetPictureOrLoadColor(image, pic);
            PSDImportUtility.SetRectTransform(image, pic.GetComponent <RectTransform>());
            return(node);
        }
        public Render Visit(ImgNode node)
        {
            recursionLevel += 1;
            var render = new Render(recursionLevel, "img");

            render.Content  = node.Content.InnerHtml.ToString();
            recursionLevel -= 1;
            return(render);
        }
Example #16
0
        private void DrawFill(ImgNode fill, UGUINode node)
        {
            var fillAreaNode = CreateNormalNode(new GameObject("Fill Area", typeof(RectTransform)), fill.rect, node);
            var fileNode     = ctrl.DrawImage(fill, fillAreaNode);

            fileNode.InitComponent <Image>().type = Image.Type.Tiled;

            node.InitComponent <Slider>().fillRect = fileNode.InitComponent <RectTransform>();
        }
 private void DrawOtherLayers(GroupNode layer, UGUINode node)
 {
     for (int imageIndex = 0; imageIndex < layer.images.Count; imageIndex++)
     {
         ImgNode image = layer.images[imageIndex];
         if (!MatchAddress(image.Name, rule.backgroundAddress, rule.maskAddress))
         {
             ctrl.DrawImage(image, node);
         }
     }
 }
        public UGUINode DrawLayer(GroupNode layer, UGUINode parent)
        {
            UGUINode  node      = PSDImportUtility.InstantiateItem(GroupType.SCROLLBAR, layer.Name, parent);
            Scrollbar scrollBar = node.InitComponent <Scrollbar>();

            switch (layer.direction)
            {
            case Direction.LeftToRight:
                scrollBar.direction = Scrollbar.Direction.LeftToRight;
                break;

            case Direction.BottomToTop:
                scrollBar.direction = Scrollbar.Direction.BottomToTop;
                break;

            case Direction.TopToBottom:
                scrollBar.direction = Scrollbar.Direction.TopToBottom;
                break;

            case Direction.RightToLeft:
                scrollBar.direction = Scrollbar.Direction.RightToLeft;
                break;

            default:
                break;
            }

            for (int i = 0; i < layer.images.Count; i++)
            {
                ImgNode image              = layer.images[i];
                string  lowerName          = image.Name.ToLower();
                UnityEngine.UI.Image graph = null;

                if (lowerName.StartsWith("b_"))
                {
                    graph = scrollBar.GetComponent <UnityEngine.UI.Image>();
                    PSDImportUtility.SetRectTransform(image, scrollBar.GetComponent <RectTransform>());
                    scrollBar.name = layer.Name;
                }
                else if (lowerName.StartsWith("h_"))
                {
                    graph = scrollBar.handleRect.GetComponent <UnityEngine.UI.Image>();
                }

                if (graph == null)
                {
                    //忽略Scorllbar其他的artLayer
                    continue;
                }

                PSDImportUtility.SetPictureOrLoadColor(image, graph);
            }
            return(node);
        }
Example #19
0
        public UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = imgImporterDic[image.type].DrawImage(image, parent);

            if (node == null)
            {
                Debug.Log(image.type);
                Debug.Log(image);
                Debug.Log(parent);
            }
            return(node);
        }
 void IAstVisitor <ParsingContext> .Visit(ImgNode node, ParsingContext context)
 {
     context.Stack.Peek().Inlines.Add(new InlineUIContainer()
     {
         Child = new Border()
         {
             Height     = 20,
             Width      = 20,
             Background = new SolidColorBrush(Colors.Red)
         }
     });
 }
Example #21
0
        public UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = PSDImportUtility.InstantiateItem(GroupType.TEXT, image.Name, parent);

            UnityEngine.UI.Text myText = node.InitComponent <Text>();
            PSDImportUtility.SetPictureOrLoadColor(image, myText);
            RectTransform rectTransform = myText.GetComponent <RectTransform>();

            AdjustImage(image, myText.fontSize);
            rectTransform.sizeDelta        = new Vector2(image.rect.width, image.rect.height);
            rectTransform.anchoredPosition = new Vector2(image.rect.x, image.rect.y);
            return(node);
        }
        private void DrawImages(GroupNode layer, UGUINode node, ScrollRect scrollRect)
        {
            for (int i = 0; i < layer.images.Count; i++)
            {
                ImgNode image = layer.images[i];

                if (MatchAddress(image.Name, rule.backgroundAddress))
                {
                    InitScrollViewBackground(node, image, scrollRect);
                }
                else
                {
                    ctrl.DrawImage(image, node);
                }
            }
        }
Example #23
0
        private void DrawHandle(ImgNode handle, UGUINode node, GroupNode layer)
        {
            var     slider = node.InitComponent <Slider>();
            ImgNode bg     = layer.images.Find(x => MatchAddress(x.Name, rule.backgroundAddress));
            ImgNode fill   = layer.images.Find(x => MatchAddress(x.Name, rule.fillAddress));

            var tempRect     = fill != null ? fill : bg;
            var rect         = new Rect(tempRect.rect.x, tempRect.rect.y, tempRect.rect.width - handle.rect.width, tempRect.rect.height);//x,y 为中心点的坐标!
            var handAreaNode = CreateNormalNode(new GameObject("Handle Slide Area", typeof(RectTransform)), rect, node);
            var handNode     = ctrl.DrawImage(handle, handAreaNode);

            slider.handleRect = handNode.InitComponent <RectTransform>();

            ///设置handle最后的锚点类型
            switch (layer.direction)
            {
            case Direction.LeftToRight:
                handNode.anchoType = AnchoType.Right | AnchoType.YStretch;
                break;

            case Direction.BottomToTop:
                handNode.anchoType = AnchoType.Up | AnchoType.XStretch;
                break;

            case Direction.TopToBottom:
                handNode.anchoType = AnchoType.Down | AnchoType.XStretch;
                break;

            case Direction.RightToLeft:
                handNode.anchoType = AnchoType.Left | AnchoType.YStretch;
                break;

            default:
                break;
            }

            handNode.inversionReprocess += (n) =>
            {
                //写slider进行关联后,尺寸信息丢失
                slider.handleRect.anchoredPosition = Vector3.zero;
                slider.handleRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, handle.rect.width);
                slider.handleRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, handle.rect.height);
            };
        }
        /// <summary>
        /// 设置颜色切换规则
        /// </summary>
        /// <param name="image"></param>
        /// <param name="button"></param>
        private void SetColorSwipe(ImgNode image, UnityEngine.UI.Button button)
        {
            Color color = image.color;

            if (MatchAddress(image.Name, rule.normalAddress))
            {
                if (image.type == ImgType.Label)
                {
                    (button.targetGraphic as UnityEngine.UI.Text).text = image.text;
                }

                RectTransform rectTransform = button.GetComponent <RectTransform>();
                rectTransform.sizeDelta        = new Vector2(image.rect.width, image.rect.height);
                rectTransform.anchoredPosition = new Vector2(image.rect.x, image.rect.y);

                button.targetGraphic.color = color;
                button.transition          = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.normalColor = color;
                button.colors     = state;
            }
            else if (MatchAddress(image.Name, rule.pressedAddress))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.pressedColor = color;
                button.colors      = state;
            }
            else if (MatchAddress(image.Name, rule.disableAddress))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.disabledColor = color;
                button.colors       = state;
            }
            else if (MatchAddress(image.Name, rule.highlightedAddress))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.highlightedColor = color;
                button.colors          = state;
            }
        }
Example #25
0
        /// <summary>
        /// 将图层解析为imgNode
        /// </summary>
        /// <param name="rootSize"></param>
        /// <param name="layer"></param>
        /// <param name="forceSprite"></param>
        /// <returns></returns>
        public static ImgNode AnalysisLayer(string baseName, Vector2 rootSize, PsdLayer layer, bool forceSprite = false)
        {
            ImgNode data    = null;
            var     texture = CreateTexture(layer);
            var     rect    = GetRectFromLayer(layer);

            switch (layer.LayerType)
            {
            case LayerType.Normal:
                data = new ImgNode(baseName, rect, texture).SetIndex(CalcuteLayerID(layer)).Analyzing(ExportUtility.RuleObj, layer.Name);
                break;

            case LayerType.Color:
                if (forceSprite)
                {
                    data = new ImgNode(baseName, rect, texture).SetIndex(CalcuteLayerID(layer)).Analyzing(ExportUtility.RuleObj, layer.Name);
                }
                else
                {
                    data = new ImgNode(layer.Name, rect, GetLayerColor(layer)).SetIndex(CalcuteLayerID(layer));
                }
                break;

            case LayerType.Text:
                var textInfo = layer.Records.TextInfo;
                var color    = new Color(textInfo.color[0], textInfo.color[1], textInfo.color[2], textInfo.color[3]);
                data = new ImgNode(layer.Name, rect, textInfo.fontName, textInfo.fontSize, textInfo.text, color);
                break;

            case LayerType.Complex:
                if (!RuleObj.forceSprite)
                {
                    Debug.LogError("you psd have some not supported layer.(defult layer is not supported)! \n make sure your layers is Intelligent object or color lump." + "\n ->Detail:" + layer.Name);
                }
                data = new ImgNode(baseName, rect, texture).SetIndex(CalcuteLayerID(layer)).Analyzing(ExportUtility.RuleObj, layer.Name);
                break;

            default:
                break;
            }
            return(data);
        }
 /// <summary>
 /// 绘制所有image
 /// </summary>
 /// <param name="node"></param>
 /// <param name="layer"></param>
 /// <param name="dropdown"></param>
 /// <param name="toggle"></param>
 /// <param name="content"></param>
 private void DrawImages(UGUINode node, GroupNode layer, Dropdown dropdown, Toggle toggle, RectTransform content)
 {
     for (int i = 0; i < layer.images.Count; i++)
     {
         ImgNode image = layer.images[i];
         if (MatchIDAddress(image.Name, 1, rule.backgroundsFormat))
         {
             PSDImporterUtility.SetPictureOrLoadColor(image, dropdown.image);
             SetRectTransform(image.rect, dropdown.GetComponent <RectTransform>());
             dropdown.name = layer.displayName;
         }
         else if (MatchIDAddress(image.Name, 2, rule.backgroundsFormat))
         {
             PSDImporterUtility.SetPictureOrLoadColor(image, dropdown.template.GetComponent <Graphic>());
             SetRectTransform(image.rect, dropdown.template);
         }
         else if (MatchIDAddress(image.Name, 3, rule.backgroundsFormat))
         {
             UnityEngine.UI.Image itemimage = (UnityEngine.UI.Image)toggle.targetGraphic;
             PSDImporterUtility.SetPictureOrLoadColor(image, itemimage);
             content.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, image.rect.height);
         }
         else if (MatchIDAddress(image.Name, 1, rule.titlesFormat))
         {
             PSDImporterUtility.SetPictureOrLoadColor(image, dropdown.captionText);
         }
         else if (MatchIDAddress(image.Name, 2, rule.titlesFormat))
         {
             PSDImporterUtility.SetPictureOrLoadColor(image, dropdown.itemText);
         }
         else if (MatchAddress(image.Name, rule.maskAddress))
         {
             UnityEngine.UI.Image mask = (UnityEngine.UI.Image)toggle.graphic;
             mask.enabled = true;
             PSDImporterUtility.SetPictureOrLoadColor(image, mask);
         }
         else
         {
             ctrl.DrawImage(image, node);
         }
     }
 }
Example #27
0
        public UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = null;

            switch (image.type)
            {
            case ImgType.Image:
            case ImgType.AtlasImage:
                node = DrawNormalImage(image, parent);
                break;

            case ImgType.Texture:
                node = DrawRawImage(image, parent);
                break;

            default:
                break;
            }
            return(node);
        }
Example #28
0
        public UGUINode DrawImage(ImgNode image, UGUINode parent)
        {
            UGUINode node = null;

            switch (image.type)
            {
            case ImgType.Image:
            case ImgType.Texture:
            case ImgType.AtlasImage:
                node = spriteImport.DrawImage(image, parent);
                break;

            case ImgType.Label:
                node = textImport.DrawImage(image, parent);
                break;

            default:
                break;
            }
            return(node);
        }
Example #29
0
        /// <summary>
        /// 将图层解析为imgNode
        /// </summary>
        /// <param name="rootSize"></param>
        /// <param name="layer"></param>
        /// <param name="forceSprite"></param>
        /// <returns></returns>
        public static ImgNode AnalysisLayer(Vector2 rootSize, PsdLayer layer, bool forceSprite = false)
        {
            ImgNode data    = null;
            var     texture = CreateTexture(layer);
            var     rect    = GetRectFromLayer(layer);

            switch (layer.LayerType)
            {
            case LayerType.Normal:
                data = new ImgNode(rect, texture).Analyzing(PsdExportUtility.rouleObj, layer.Name);
                break;

            case LayerType.SolidImage:
                if (forceSprite)
                {
                    data = new ImgNode(rect, texture).Analyzing(PsdExportUtility.rouleObj, layer.Name);
                }
                else
                {
                    data = new ImgNode(layer.Name, rect, GetLayerColor(layer));
                }
                break;

            case LayerType.Text:
                var textInfo = layer.Records.TextInfo;
                data = new ImgNode(layer.Name, rect, textInfo.fontName, textInfo.fontSize, textInfo.text, textInfo.color);
                break;

            case LayerType.Group:
                break;

            case LayerType.Divider:
                break;

            default:
                break;
            }
            return(data);
        }
Example #30
0
        private void SetColorSwipe(ImgNode image, UnityEngine.UI.Button button)
        {
            string lowerName = image.sprite.name.ToLower();
            Color  color     = image.color;

            if (lowerName.StartsWith("n_"))
            {
                RectTransform rectTransform = button.GetComponent <RectTransform>();
                rectTransform.sizeDelta        = new Vector2(image.rect.width, image.rect.height);
                rectTransform.anchoredPosition = new Vector2(image.rect.x, image.rect.y);

                button.image.color = color;
                button.transition  = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.normalColor = color;
                button.colors     = state;
            }
            else if (lowerName.StartsWith("p_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.pressedColor = color;
                button.colors      = state;
            }
            else if (lowerName.StartsWith("d_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.disabledColor = color;
                button.colors       = state;
            }
            else if (lowerName.StartsWith("h_"))
            {
                button.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
                UnityEngine.UI.ColorBlock state = button.colors;
                state.highlightedColor = color;
                button.colors          = state;
            }
        }
    // Nodes are added by moving a single cell.
    // Edges are initially one length edges.
    // Post processing can reduce the number of nodes.
    //
    //        # # #
    //        # X #
    //        # # #
    //
    // X = Node checking.
    // # = Neighbour/Graph Edge checking.
    //
    public NavGraph constructGraph()
    {
        BasicNavGraph retGraph = new BasicNavGraph();

        int nxtNodeID = 0;
        int nxtEdgeID = 0;
        Dictionary<string,int> coordToNodeIDMap = new Dictionary<string,int>();

        Texture2D mapImg = Resources.Load<Texture2D>(imgPath);
        if(mapImg != null)
        {
            Color[] pixels = mapImg.GetPixels();

            for(int r=0; r<mapImg.height; r++)
            {
                for(int c=0; c<mapImg.width; c++)
                {
                    Color tmpPixel = pixels[(r * mapImg.width) + c];

                    if(tmpPixel.Equals(traversibleColor))
                    {
                        // Add new node.
                        ImgNode nwNode = new ImgNode(nxtNodeID,1,new int[2] { c,r });
                        retGraph.addNode(nwNode);
                        coordToNodeIDMap.Add((""+c+"-"+r),nwNode.getNodeID());
                        nxtEdgeID++;

                        // Get valid neighbourhood pixels.
                        List<Color> neighbourhoodPixels = new List<Color>();
                        List<int[]> reqNPixCoords = new List<int[]>();
                        reqNPixCoords.Add(new int[2]{(c-1),(r-1)});
                        reqNPixCoords.Add(new int[2]{(c),(r-1)});
                        reqNPixCoords.Add(new int[2]{(c+1),(r-1)});
                        reqNPixCoords.Add(new int[2]{(c-1),(r)});
                        List<int> validCoordIndexList = new List<int>();
                        for(int k=0; k<reqNPixCoords.Count; k++)
                        {
                            int[] tmpCoords = reqNPixCoords[k];

                            if((tmpCoords[0] >= 0)&&(tmpCoords[0] < mapImg.width)
                             &&(tmpCoords[1] >= 0)&&(tmpCoords[1] < mapImg.height))
                            {
                                // Valid coords.
                                validCoordIndexList.Add(k);
                                neighbourhoodPixels.Add( pixels[(tmpCoords[1] * mapImg.width) + tmpCoords[0]] );
                            }
                        }

                        // Check for neighbours and create edges. (NavGraph will handle the internal creation of neighbour references, just run addEdge).
                        for(int k=0; k<validCoordIndexList.Count; k++)
                        {
                            if(neighbourhoodPixels[k].Equals(traversibleColor))
                            {
                                int[] neighbourCoords = reqNPixCoords[k];
                                int neighbourID = coordToNodeIDMap[(""+neighbourCoords[0]+"-"+neighbourCoords[1])];

                                retGraph.addEdge(nwNode.getNodeID(),neighbourID,new NavEdge(new int[2] {nwNode.getNodeID(),neighbourID},1));
                            }
                        }
                    }
                }
            }
        }

        return retGraph;
    }