/**
         * Unity Editor scene 'magic' function to extend drawing on to the screen
         */
        void OnSceneGUI()
        {
            sceneGuiTool.DrawModeGui();
            if (sceneGuiTool.ModeHandler())
            {
                Repaint();
            }
            sceneGuiTool.EventHandler();
            //get the worldPoint and gridPoint from the Camera raycast to mouse position
            Vector3 worldPoint = Camera.current.ScreenToWorldPoint(sceneGuiTool.MousePoint);
            Vector3 gridPoint  = targetLevel.WorldToGridCoordinates(worldPoint);
            //cast to int.
            int col = (int)gridPoint.x;
            int row = (int)gridPoint.y;

            //We're handling our current mode and there was a mouseclick down  or drag perform an action.
            //use the EventType to correspond with the Event.current.type
            if (ModeActions.ContainsKey(sceneGuiTool.CurrentMode) &&
                (Event.current.type == EventType.MouseDown ||
                 Event.current.type == EventType.MouseDrag))
            {
                originalPosX = col;
                originalPosY = row;
                ModeActions[sceneGuiTool.CurrentMode](col, row);
            }
            if (sceneGuiTool.CurrentMode == Mode.Edit && (Event.current.type == EventType.MouseUp ||
                                                          Event.current.type == EventType.Ignore))
            {
                //try moving
                if (paletteItemInspected != null)
                {
                    Move();
                }
            }
            //enable freeMovement handle
            if (paletteItemInspected != null)
            {
                //from it's position enable the handle
                paletteItemInspected.transform.position =
                    Handles.FreeMoveHandle(
                        paletteItemInspected.transform.position,
                        paletteItemInspected.transform.rotation,
                        Level.GridSize / 2,
                        Level.GridSize / 2 * Vector3.one,
                        Handles.RectangleCap
                        );
            }
        }