private void Drag()
        {
            var current = Event.current;

            if (VisualRect.Contains(current.mousePosition) && IsDraggable)
            {
                VisualRect.position += current.delta;
                current.Use();
            }
        }
Exemple #2
0
        void CreateRectangle(Rect backRect)
        {
            if (Event.current.type == EventType.MouseUp && Event.current.button == 0)
            {
                Vector2 rectScale = Event.current.mousePosition - startMouseHoldPosition;

                if (Mathf.Abs(rectScale.y) > 5 && Mathf.Abs(rectScale.x) > 5)
                {
                    Rect selectionRect = new Rect(startMouseHoldPosition, rectScale);

                    var min = selectionRect.min;
                    var max = selectionRect.max;

                    min.x = Mathf.Clamp(min.x, 0 + offset.x * zoom, (backRect.width + offset.x) * zoom);
                    min.y = Mathf.Clamp(min.y, 0 + offset.y * zoom, (backRect.height + offset.y) * zoom);

                    max.x = Mathf.Clamp(max.x, 0 + offset.x * zoom, (backRect.width + offset.x) * zoom);
                    max.y = Mathf.Clamp(max.y, 0 + offset.y * zoom, (backRect.height + offset.y) * zoom);

                    selectionRect.min = min / zoom;
                    selectionRect.max = max / zoom;

                    selectionRect.center -= offset;

                    Rect r = selectionRect;

                    if (r.height < 0)
                    {
                        r.center += r.height * Vector2.up;
                        r.height  = Mathf.Abs(r.height);
                    }

                    if (r.width < 0)
                    {
                        r.center += r.width * Vector2.right;
                        r.width   = Mathf.Abs(r.width);
                    }
                    selectionRect = r;

                    var visualRect = new VisualRect();
                    visualRect.Rect = selectionRect;

                    Undo.RecordObject(rectsContainer, "Create rect");
                    visualRects.Add(visualRect);
                }
            }
        }
Exemple #3
0
        private void AutoSplit()
        {
            Undo.RecordObject(rectsContainer, "Auto split");
            visualRects.Clear();
            Vector2 tileSize = new Vector2((float)backRect.width / tiles.x, (float)backRect.height / tiles.y);

            for (int x = 0; x < tiles.x; x++)
            {
                for (int y = 0; y < tiles.y; y++)
                {
                    Rect tileRect = new Rect(Vector2.Scale(tileSize, new Vector2(x, y)), tileSize);
                    var  vr       = new VisualRect();
                    vr.Rect = tileRect;
                    visualRects.Add(vr);
                }
            }
        }
Exemple #4
0
        void DrawCanvas(Rect fullRect)
        {
            EditorGUI.DrawRect(backRect, Color.black);

            GUI.EndGroup();

            Rect groupRect = backRect;

            groupRect.yMin   += tabHeight / zoom;
            groupRect.yMax   += tabHeight / zoom;
            groupRect.width  /= zoom;
            groupRect.height /= zoom;
            backRect.center  += offset;

            GUI.BeginGroup(groupRect);

            GUI.matrix = zoomedMatrix;

            GUI.DrawTextureWithTexCoords(backRect, DPTResourcesLoader.AlphaGrid, new Rect(0, 0, backRect.width / DPTResourcesLoader.AlphaGrid.width, backRect.height / DPTResourcesLoader.AlphaGrid.height));
            GUI.color = Color.black;
            GUI.DrawTextureWithTexCoords(backRect, template.DecalMaterial.mainTexture, new Rect(-0.005f, 0.005f, 1, 1));
            GUI.color = Color.white;
            GUI.DrawTextureWithTexCoords(backRect, template.DecalMaterial.mainTexture, new Rect(0, 0, 1, 1));

            GUI.matrix = guiMatrix;

            GUI.EndGroup();
            GUI.BeginGroup(fullRect);

            if (Event.current.type == EventType.MouseDown && Event.current.button == 0)
            {
                selectedVisualRect = null;
            }
            if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Delete)
            {
                Undo.RecordObject(rectsContainer, "Delete rect");
                if (selectedVisualRect != null)
                {
                    visualRects.Remove(selectedVisualRect);
                }
            }
            for (int i = 0; i < visualRects.Count; i++)
            {
                Vector2 tabOffset = new Vector4(0, tabHeight);
                Rect    r         = visualRects[i].Rect;
                r.min += offset - tabOffset;
                r.max += offset - tabOffset;

                r.min += tabOffset;
                r.max += tabOffset;
                r.min *= zoom;
                r.max *= zoom;

                //if (r.height < 0)
                //{
                //    r.center += r.height * Vector2.up;
                //    r.height = Mathf.Abs(r.height);
                //}

                //if (r.width < 0)
                //{
                //    r.center += r.width * Vector2.right;
                //    r.width = Mathf.Abs(r.width);
                //}

                if (Event.current.type == EventType.MouseDown && Event.current.button == 0)
                {
                    var mouseIN = r.Contains(Event.current.mousePosition);

                    if (mouseIN)
                    {
                        selectedVisualRect = visualRects[i];
                    }
                }

                Color outlineColor = defaultFrameColor;
                if (selectedVisualRect == visualRects[i])
                {
                    outlineColor.a = 1f;
                }
                else
                {
                    outlineColor.a = 1f;
                }
                Color faceColor = defaultFrameColor;
                if (selectedVisualRect == visualRects[i])
                {
                    faceColor.a *= 0.1f;
                }
                else
                {
                    faceColor.a *= 0.05f;
                }

                Handles.DrawSolidRectangleWithOutline(r, faceColor, Color.clear);
                Vector3[] points = new Vector3[5];
                points[0]     = r.min;
                points[1]     = new Vector3(r.min.x, r.max.y);
                points[2]     = r.max;
                points[3]     = new Vector3(r.max.x, r.min.y);
                points[4]     = r.min;
                Handles.color = outlineColor;
                Handles.DrawAAPolyLine(5f, 5, points);
            }
        }