Example #1
0
    static void SceneFunc(SceneView p_scn)
    {
        Sceneview2D scn = p_scn as Sceneview2D;

        if (scn == null)
        {
            return;
        }

        scn.EnforceCameraLimits();

        Event e = Event.current;

        switch (e.type)
        {
        case EventType.ScrollWheel:
            scn.zoom += e.delta.y * 0.05f;
            break;

        default:
            break;
        }
    }
Example #2
0
    void SceneBypass(SceneView p_scn)
    {
        Sceneview2D scn = p_scn as Sceneview2D;

        Selection.activeGameObject = editedTilemap.gameObject;

        if (scn == null)
        {
            return;
        }

        minSize = new Vector2(editedTilemap.spriteSheet.width - 1, editedTilemap.spriteSheet.height + 69);
        maxSize = new Vector2(editedTilemap.spriteSheet.width, editedTilemap.spriteSheet.height + 70);

        HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));

        Event e = Event.current;

        Vector3 pos      = e.mousePosition;
        Vector3 localPos = scn.camera.ScreenToWorldPoint(new Vector3(pos.x, scn.position.height - SceneView.kToolbarHeight - pos.y, 0)) - (editedTilemap.renderer.bounds.min);

        int x = (int)(localPos.x / editedTilemap.tileSize);
        int y = (int)(localPos.y / editedTilemap.tileSize);

        if (e.type == EventType.MouseDown)
        {
            if (_currentPaintTool == PaintTool.COLLISION_SWITCHER)
            {
                _currentSwitch = editedTilemap.IsPassable(x, y);
            }
        }
        else if (e.type == EventType.MouseDrag || e.type == EventType.MouseUp)
        {
            if (e.button == 0)
            {
                e.Use();

                if (_currentPaintTool == PaintTool.PENCIL)
                {
                    for (int i = 0; i < _currentSelection.width; ++i)
                    {
                        for (int j = 0; j < _currentSelection.height; ++j)
                        {
                            editedTilemap.setIndex(x + i, y + j, _currentSelection.array[i, j]);
                        }
                    }
                }
                else if (_currentPaintTool == PaintTool.ERASER)
                {
                    editedTilemap.setIndex(x, y, -1);
                }
                else if (_currentPaintTool == PaintTool.BUCKET)
                {
                    if (_currentSelection.array.Length > 0)
                    {
                        editedTilemap.FloodFill(x, y, _currentSelection.array[0, 0]);
                    }
                }
                else if (_currentPaintTool == PaintTool.COLLISION_SWITCHER)
                {
                    editedTilemap.SetCollision(x, y, _currentSwitch);
                }

                editedTilemap.MakeTilemap();
            }
        }


        Vector3[] vertex = null;

        if (_currentPaintTool == PaintTool.COLLISION_SWITCHER)
        {
            for (int i = 0; i < editedTilemap.width; ++i)
            {
                for (int j = 0; j < editedTilemap.height; ++j)
                {
                    if (!editedTilemap.IsPassable(i, j))
                    {
                        vertex = new Vector3[] {
                            new Vector3(editedTilemap.renderer.bounds.min.x + i * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + j * editedTilemap.tileSize, 0),
                            new Vector3(editedTilemap.renderer.bounds.min.x + i * editedTilemap.tileSize + editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + j * editedTilemap.tileSize, 0),
                            new Vector3(editedTilemap.renderer.bounds.min.x + i * editedTilemap.tileSize + editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + j * editedTilemap.tileSize + editedTilemap.tileSize, 0),
                            new Vector3(editedTilemap.renderer.bounds.min.x + i * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + j * editedTilemap.tileSize + editedTilemap.tileSize, 0)
                        };

                        Handles.DrawSolidRectangleWithOutline(vertex, new Color(0.5f, 0, 0, 0.5f), Color.red);
                    }
                }
            }
        }

        if (_currentPaintTool == PaintTool.PENCIL)
        {
            vertex = new Vector3[] {
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize + _currentSelection.width * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize + _currentSelection.width * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize + _currentSelection.height * editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize + _currentSelection.height * editedTilemap.tileSize, 0)
            };
        }
        else
        {
            vertex = new Vector3[] {
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize + editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize + editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize + editedTilemap.tileSize, 0),
                new Vector3(editedTilemap.renderer.bounds.min.x + x * editedTilemap.tileSize, editedTilemap.renderer.bounds.min.y + y * editedTilemap.tileSize + editedTilemap.tileSize, 0)
            };
        }

        Handles.color = Color.red;
        Handles.DrawSolidRectangleWithOutline(vertex, new Color(0, 0, 0.4f, 0.1f), Color.red);

        scn.Repaint();
    }
Example #3
0
    //------------------------------

    public override void OnEnable()
    {
        base.OnEnable();
        _current            = this;
        onSceneGUIDelegate += SceneFunc;
    }
Example #4
0
    static public void OpenView()
    {
        Sceneview2D swin = GetWindow <Sceneview2D>("2DSceneView", typeof(SceneView));

        swin.Show();
    }