Ejemplo n.º 1
0
        void DrawDir()
        {
            Cursor.visible = true;

            var rect = SWCommon.GetRect(drawRect.center + ArrowOff, new Vector2(IconSize_Arrow, IconSize_Arrow));

            Set_Material(matBase, Vector2.zero, 0, Vector2.one);
            matBase.SetColor("_Color", dragging ? Color.green:Color.white);
            Graphics.DrawTexture(SWCommon.GetRect(drawRect.center, new Vector2(8, 8)),
                                 SWEditorUI.Texture(SWUITex.effectCenter), matBase);

            matBase.SetFloat("r", -SWCommon.Vector2Angle(ArrowOff));
            Graphics.DrawTexture(rect, SWEditorUI.Texture(SWUITex.effectArrow), matBase);


            matBase.SetFloat("r", 0f);
            matBase.SetTexture("_MainTex", SWEditorUI.Texture(SWUITex.effectLine));
            SWDraw.DrawLine(drawRect.center, rect.center, Color.white, 3f, matBase);

            float factor = 1f / drawRect.size.x;

            if (SWCommon.GetMouseDown(0) && InMap())
            {
                RepaintGetDirty();
                if (rect.Contains(Event.current.mousePosition))
                {
                    dragging     = true;
                    lastMousePos = Event.current.mousePosition;
                }
                else
                {
                    dragging = false;
                }
            }
            else if (dragging)
            {
                if (SWCommon.GetMouse(0) && InMap())
                {
                    RepaintGetDirty();
                    ArrowOff += Event.current.mousePosition - lastMousePos;

                    if (Event.current.shift)
                    {
                        if (Mathf.Abs(ArrowOff.x) > Mathf.Abs(ArrowOff.y))
                        {
                            ArrowOff = new Vector2(ArrowOff.x, 0);
                        }
                        else
                        {
                            ArrowOff = new Vector2(0, ArrowOff.y);
                        }
                    }

                    lastMousePos = Event.current.mousePosition;
                    SWUndo.Record(this);
                    rData.d.v = new Vector2(ArrowOff.x * factor, -ArrowOff.y * factor);
                }
                if (SWCommon.GetMouseUp(0))
                {
                    dragging = false;
                    SWUndo.Record(this);
                    rData.d.v = new Vector2(ArrowOff.x * factor, -ArrowOff.y * factor);
                }
            }
            else
            {
                ArrowOff = new Vector2(rData.d.v.x / factor, -rData.d.v.y / factor);
            }



            if (Event.current.type == EventType.KeyDown)
            {
                if (Event.current.keyCode == KeyCode.Return)
                {
                    node.data.dirty = true;
                    SWTextureProcess.ProcessRemap_Dir(node.textureEx, node.texChildResized, new Vector2(rData.d.v.x, -rData.d.v.y), rData.d.pre, rData.d.pb);
                }
            }
        }