Example #1
0
    // Handle events when mouse point enter or leaves the SceneView
    void ProcessMouseEnterLeaveSceneview()
    {
        // If mouse enters SceneView window, show visualizer
        if (Event.current.type == EventType.MouseEnterWindow)
        {
            MAST_Placement_Visualizer.SetVisualizerVisibility(true);
        }

        // If mouse leaves SceneView window
        else if (Event.current.type == EventType.MouseLeaveWindow)
        {
            // Hide visualizer
            MAST_Placement_Visualizer.SetVisualizerVisibility(false);

            // Stop any drawing
            if (drawing)
            {
                drawing = false;
            }

            // Stop any painting
            if (painting)
            {
                MAST_Placement_PaintArea.DeletePaintArea();
                painting = false;
            }

            // Stop any erasing
            if (erasing)
            {
                erasing = false;
            }
        }
    }
Example #2
0
    // ---------------------------------------------------------------------------
    // Clean-up
    // ---------------------------------------------------------------------------
    private void CleanUpInterface()
    {
        //Debug.Log("Cleaning Up Interface");

        // Remove SceneView delegate
        #if UNITY_2019_1_OR_NEWER
        SceneView.duringSceneGui -= this.OnScene;
        #else
        SceneView.onSceneGUIDelegate -= this.OnScene;
        #endif

        // Delete placement grid
        MAST_Grid_Manager.DestroyGrid();

        // Deselect palette item and delete visualizer
        MAST_Palette.selectedItemIndex = -1;
        MAST_Placement_Visualizer.RemoveVisualizer();

        // Deselect draw tool and change placement mode to none
        MAST_Settings.gui.toolbar.selectedDrawToolIndex = -1;
        MAST_Placement_Interface.ChangePlacementMode(MAST_Placement_Interface.PlacementMode.None);

        // Cancel any drawing or painting
        drawing  = false;
        painting = false;
        erasing  = false;
        MAST_Placement_PaintArea.DeletePaintArea();
    }
Example #3
0
// ---------------------------------------------------------------------------
    #region SceneView
// ---------------------------------------------------------------------------
    private void OnScene(SceneView sceneView)
    {
        // Exit now if game is playing
        //if (inPlayMode)
        //     return;

        // Handle SceneView GUI
        SceneviewGUI(sceneView);

        // Handle view focus
        ProcessMouseEnterLeaveSceneview();

        // Process HotKeys and repaint all views if any changes were made
        if (HotKeys.ProcessHotkeys())
        {
            UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
        }

        // If draw tool was deselected by a hotkey
        if (MAST_Settings.gui.toolbar.selectedDrawToolIndex != 1)
        {
            // Stop any drawing
            if (drawing)
            {
                drawing = false;
            }
        }

        // If paint area tool was deselected by a hotkey
        if (MAST_Settings.gui.toolbar.selectedDrawToolIndex != 2)
        {
            // Stop any painting
            if (painting)
            {
                MAST_Placement_PaintArea.DeletePaintArea();
                painting = false;
            }
        }

        // If erase tool was deselected by a hotkey
        if (MAST_Settings.gui.toolbar.selectedDrawToolIndex != 4)
        {
            // Stop any erasing
            if (erasing)
            {
                erasing = false;
            }
        }

        // If a palette item is selected or erase tool is selected, handle object placement
        if (MAST_Palette.selectedItemIndex > -1 ||
            MAST_Settings.gui.toolbar.selectedDrawToolIndex == 4)
        {
            ObjectPlacement();
        }
    }
Example #4
0
    // ---------------------------------------------------------------------------
    // Clean-up
    // ---------------------------------------------------------------------------
    private void CleanUpInterface()
    {
        //Debug.Log("Cleaning Up Interface");

        // Delete placement grid
        MAST_Grid_Manager.DestroyGrid();

        // Deselect palette item and delete visualizer
        MAST_Palette.selectedItemIndex = -1;
        MAST_Placement_Visualizer.RemoveVisualizer();

        // Deselect draw tool and change placement mode to none
        MAST_Settings.gui.toolbar.selectedDrawToolIndex = -1;
        MAST_Placement_Interface.ChangePlacementMode(MAST_Placement_Interface.PlacementMode.None);

        // Cancel any drawing or painting
        drawing  = false;
        painting = false;
        erasing  = false;
        MAST_Placement_PaintArea.DeletePaintArea();
    }
Example #5
0
    // Handle object placement
    private void ObjectPlacement()
    {
        // Get mouse events for object placement when in the Scene View
        Event currentEvent = Event.current;

        // Change position of visualizer
        MAST_Placement_Visualizer.UpdateVisualizerPosition();

        switch (MAST_Settings.gui.toolbar.selectedDrawToolIndex)
        {
        // Draw single tool
        case 0:
        // Randomizer tool
        case 3:
            // If left mouse button was clicked
            if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0)
            {
                // Keep mouseclick from selecting other objects
                GUIUtility.hotControl = GUIUtility.GetControlID(FocusType.Passive);
                Event.current.Use();

                // Place selected prefab on grid
                MAST_Placement_Place.PlacePrefabInScene();
            }
            break;

        // Draw continuous tool
        case 1:
            // If not already drawing and the left mouse button pressed
            if (!drawing)
            {
                if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0)
                {
                    // Start drawing
                    drawing = true;

                    // Keep mouseclick from selecting other objects
                    GUIUtility.hotControl = GUIUtility.GetControlID(FocusType.Passive);
                    Event.current.Use();
                }
            }

            // If drawing and left mouse button not released
            if (drawing)
            {
                // Place selected prefab on grid
                MAST_Placement_Place.PlacePrefabInScene();

                // If left mouse button released
                if (currentEvent.type == EventType.MouseUp && currentEvent.button == 0)
                {
                    drawing = false;
                }
            }
            break;

        // Paint area tool
        case 2:
            // If not already painting and the left mouse button pressed
            if (!painting)
            {
                if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0)
                {
                    // Start drawing
                    painting = true;

                    // Start paint area at current mouse location
                    MAST_Placement_PaintArea.StartPaintArea();

                    // Keep mouseclick from selecting other objects
                    GUIUtility.hotControl = GUIUtility.GetControlID(FocusType.Passive);
                    Event.current.Use();
                }
            }

            // If drawing and left mouse button not released
            if (painting)
            {
                // Update the paint area as the mouse moves
                MAST_Placement_PaintArea.UpdatePaintArea();

                // If left mouse button released
                if (currentEvent.type == EventType.MouseUp && currentEvent.button == 0)
                {
                    MAST_Placement_PaintArea.CompletePaintArea();
                    painting = false;
                }
            }
            break;

        // Erase tool
        case 4:
            // If not already erasing and the left mouse button pressed
            if (!erasing)
            {
                if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0)
                {
                    // Start drawing
                    erasing = true;

                    // Keep mouseclick from selecting other objects
                    GUIUtility.hotControl = GUIUtility.GetControlID(FocusType.Passive);
                    Event.current.Use();
                }
            }

            // If erasing and left mouse button not released
            if (erasing)
            {
                // Place selected prefab on grid
                MAST_Placement_Interface.ErasePrefab();

                // If left mouse button released
                if (currentEvent.type == EventType.MouseUp && currentEvent.button == 0)
                {
                    erasing = false;
                }
            }
            break;
        }
    }
// ---------------------------------------------------------------------------
    #region Change Placement Mode
// ---------------------------------------------------------------------------
    public static void ChangePlacementMode(PlacementMode newPlacementMode)
    {
        // Get new selected Draw Tool
        placementMode = newPlacementMode;

        // Remove any previous visualizer
        MAST_Placement_Visualizer.RemoveVisualizer();

        // --------------------------------
        // Create Visualizer
        // --------------------------------

        // If changed tool to Nothing or Eraser
        if (placementMode == PlacementMode.None || placementMode == PlacementMode.Erase)
        {
            // Deselect any item in the palette
            MAST_Palette.selectedItemIndex = -1;

            // If changed tool to Eraser
            if (placementMode == PlacementMode.Erase)
            {
                // Create eraser visualizer
                ChangePrefabToEraser();
            }

            // If changed tool to Nothing, remove the visualizer
            else
            {
                MAST_Placement_Visualizer.RemoveVisualizer();
            }
        }

        // If changed tool to Draw Single, Draw Continuous, Paint Area, or Randomizer
        else
        {
            // If a palette item is selected
            if (MAST_Palette.selectedItemIndex != -1)
            {
                // Create visualizer from selected item in the palette
                ChangeSelectedPrefab();

                // If changed tool to Randomizer
                if (placementMode == PlacementMode.Randomize)
                {
                    // Make a new random seed
                    MAST_Placement_Randomizer.GenerateNewRandomSeed();
                }
            }
        }

        // If Draw Continuous nor Paint Area tools are selected
        if (placementMode != PlacementMode.DrawContinuous &&
            placementMode != PlacementMode.PaintArea)
        {
            // Delete last saved position
            MAST_Placement_Place.lastPosition = Vector3.positiveInfinity;

            // Remove any paint area visualization
            MAST_Placement_PaintArea.DeletePaintArea();
        }
    }