コード例 #1
0
 private void HandleMouseEnterLeave()
 {
     if (Event.current.type == EventType.MouseEnterWindow)
     {
         if (PaintableGrid.InGridEditMode())
         {
             GridPaintingState.activeGrid = this;
             Event.current.Use();
         }
     }
     else if (Event.current.type == EventType.MouseLeaveWindow)
     {
         if (m_PreviousMousePosition.HasValue && guiRect.Contains(m_PreviousMousePosition.Value) && GridPaintingState.activeBrushEditor != null)
         {
             GridPaintingState.activeBrushEditor.OnMouseLeave();
         }
         m_PreviousMousePosition = null;
         if (PaintableGrid.InGridEditMode())
         {
             GridPaintingState.activeGrid = null;
             Event.current.Use();
             Repaint();
         }
     }
 }
コード例 #2
0
 protected override void RegisterUndo()
 {
     if (GridPaintingState.activeBrushEditor != null)
     {
         GridPaintingState.activeBrushEditor.RegisterUndo(this.brushTarget, PaintableGrid.EditModeToBrushTool(EditMode.editMode));
     }
 }
コード例 #3
0
        public void OnDisable()
        {
            CallOnToolDeactivated();
            instances.Remove(this);
            if (instances.Count <= 1)
            {
                GridPaintingState.gridBrush = null;
            }
            DestroyPreviewInstance();
            DestroyImmediate(clipboardView);
            DestroyImmediate(m_PaintableSceneViewGrid);

            if (m_PreviewUtility != null)
            {
                m_PreviewUtility.Cleanup();
            }
            m_PreviewUtility = null;

            if (PaintableGrid.InGridEditMode())
            {
                EditMode.QuitEditMode();
            }

            EditMode.editModeStarted                  -= OnEditModeStart;
            EditMode.editModeEnded                    -= OnEditModeEnd;
            Tools.onToolChanged                       -= ToolChanged;
            GridSelection.gridSelectionChanged        -= OnGridSelectionChanged;
            SceneView.onSceneGUIDelegate              -= OnSceneViewGUI;
            GridPaintingState.scenePaintTargetChanged -= OnScenePaintTargetChanged;
            GridPaintingState.brushChanged            -= OnBrushChanged;
            GridPaintingState.UnregisterPainterInterest(this);
            PrefabUtility.prefabInstanceUpdated -= PrefabInstanceUpdated;

            ShortcutIntegration.instance.contextManager.DeregisterToolContext(m_ShortcutContext);
        }
コード例 #4
0
 private void ToolChanged(Tool from, Tool to)
 {
     if (to != Tool.None && PaintableGrid.InGridEditMode())
     {
         EditMode.QuitEditMode();
     }
     base.Repaint();
 }
コード例 #5
0
        private void HandleBrushPicking()
        {
            Event evt = Event.current;

            if (evt.type == EventType.MouseDown && IsPickingEvent(evt) && !isHotControl)
            {
                m_ModeBeforePicking = EditMode.SceneViewEditMode.GridPainting;
                if (inEditMode && EditMode.editMode != EditMode.SceneViewEditMode.GridPicking)
                {
                    m_ModeBeforePicking = EditMode.editMode;
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPicking, GridPaintingState.instance);
                }

                m_MarqueeStart            = mouseGridPosition;
                m_MarqueeType             = MarqueeType.Pick;
                s_LastActivePaintableGrid = this;
                Event.current.Use();
                GUI.changed           = true;
                GUIUtility.hotControl = m_PermanentControlID;
                OnBrushPickStarted();
            }
            if (evt.type == EventType.MouseDrag && isHotControl && m_MarqueeStart.HasValue && m_MarqueeType == MarqueeType.Pick && IsPickingEvent(evt))
            {
                RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition);
                OnBrushPickDragged(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1)));
                Event.current.Use();
                GUI.changed = true;
            }
            if (evt.rawType == EventType.MouseUp && isHotControl && m_MarqueeStart.HasValue && m_MarqueeType == MarqueeType.Pick && IsPickingEvent(evt))
            {
                // Check if event only occurred in the PaintableGrid window as evt.type will filter for this
                if (evt.type == EventType.MouseUp && m_MarqueeType == MarqueeType.Pick)
                {
                    RectInt    rect  = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition);
                    Vector2Int pivot = GetMarqueePivot(m_MarqueeStart.Value, mouseGridPosition);
                    PickBrush(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1)), new Vector3Int(pivot.x, pivot.y, 0));

                    if (inEditMode && EditMode.editMode != m_ModeBeforePicking)
                    {
                        EditMode.ChangeEditMode(m_ModeBeforePicking, GridPaintingState.instance);
                    }

                    GridPaletteBrushes.ActiveGridBrushAssetChanged();
                    s_LastActivePaintableGrid = this;
                    Event.current.Use();
                    GUI.changed = true;
                }
                else
                // Event occurred outside of PaintableGrid window, cancel the pick event
                {
                    OnBrushPickCancelled();
                }
                m_MarqueeType         = MarqueeType.None;
                m_MarqueeStart        = null;
                GUIUtility.hotControl = 0;
                InspectorWindow.RepaintAllInspectors();
            }
        }
コード例 #6
0
 protected override void PickBrush(BoundsInt position, Vector3Int pickingStart)
 {
     if (!(this.grid == null) && !(this.gridBrush == null))
     {
         this.gridBrush.Pick(this.grid, this.brushTarget, position, pickingStart);
         if (!PaintableGrid.InGridEditMode())
         {
             EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, default(Bounds), ScriptableSingleton <GridPaintingState> .instance);
         }
         this.m_ActivePick = new RectInt?(new RectInt(position.min.x, position.min.y, position.size.x, position.size.y));
     }
 }
コード例 #7
0
 private void CallOnToolDeactivated()
 {
     if (GridPaintingState.gridBrush != null && this.m_PreviousToolActivatedEditor != null)
     {
         this.m_PreviousToolActivatedEditor.OnToolDeactivated(this.m_PreviousToolActivated);
         this.m_PreviousToolActivatedEditor = null;
         if (!PaintableGrid.InGridEditMode())
         {
             Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
         }
     }
 }
コード例 #8
0
        private void HandleBrushPicking()
        {
            Event current = Event.current;

            if (current.type == EventType.MouseDown && this.IsPickingEvent(current) && !this.isHotControl)
            {
                this.m_ModeBeforePicking = EditMode.SceneViewEditMode.GridPainting;
                if (this.inEditMode && EditMode.editMode != EditMode.SceneViewEditMode.GridPicking)
                {
                    this.m_ModeBeforePicking = EditMode.editMode;
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPicking, ScriptableSingleton <GridPaintingState> .instance);
                }
                this.m_MarqueeStart = new Vector2Int?(this.mouseGridPosition);
                this.m_MarqueeType  = PaintableGrid.MarqueeType.Pick;
                PaintableGrid.s_LastActivePaintableGrid = this;
                Event.current.Use();
                GUI.changed           = true;
                GUIUtility.hotControl = this.m_PermanentControlID;
                this.OnBrushPickStarted();
            }
            if (current.type == EventType.MouseDrag && this.isHotControl && this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Pick && this.IsPickingEvent(current))
            {
                RectInt marqueeRect = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition);
                this.OnBrushPickDragged(new BoundsInt(new Vector3Int(marqueeRect.xMin, marqueeRect.yMin, 0), new Vector3Int(marqueeRect.size.x, marqueeRect.size.y, 1)));
                Event.current.Use();
                GUI.changed = true;
            }
            if (current.type == EventType.MouseUp && this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Pick && this.IsPickingEvent(current))
            {
                RectInt marqueeRect2 = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition);
                if (this.isHotControl)
                {
                    Vector2Int marqueePivot = this.GetMarqueePivot(this.m_MarqueeStart.Value, this.mouseGridPosition);
                    this.PickBrush(new BoundsInt(new Vector3Int(marqueeRect2.xMin, marqueeRect2.yMin, 0), new Vector3Int(marqueeRect2.size.x, marqueeRect2.size.y, 1)), new Vector3Int(marqueePivot.x, marqueePivot.y, 0));
                    if (this.inEditMode && EditMode.editMode != this.m_ModeBeforePicking)
                    {
                        EditMode.ChangeEditMode(this.m_ModeBeforePicking, ScriptableSingleton <GridPaintingState> .instance);
                    }
                    GridPaletteBrushes.ActiveGridBrushAssetChanged();
                    PaintableGrid.s_LastActivePaintableGrid = this;
                    InspectorWindow.RepaintAllInspectors();
                    Event.current.Use();
                    GUI.changed           = true;
                    GUIUtility.hotControl = 0;
                }
                this.m_MarqueeType  = PaintableGrid.MarqueeType.None;
                this.m_MarqueeStart = null;
            }
        }
コード例 #9
0
        private void HandleMoveTool()
        {
            Event evt = Event.current;

            if (evt.type == EventType.MouseDown && evt.button == 0 && !evt.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridMove)
            {
                RegisterUndo();
                Vector3Int mouse3D = new Vector3Int(mouseGridPosition.x, mouseGridPosition.y, GridSelection.position.zMin);
                if (GridSelection.active && GridSelection.position.Contains(mouse3D))
                {
                    GUIUtility.hotControl = m_PermanentControlID;
                    executing             = true;
                    m_MarqueeStart        = null;
                    m_MarqueeType         = MarqueeType.None;
                    m_PreviousMove        = mouseGridPosition;
                    MoveStart(GridSelection.position);
                    s_LastActivePaintableGrid = this;
                }
                Event.current.Use();
            }
            if (evt.type == EventType.MouseDrag && evt.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && isHotControl)
            {
                if (m_MouseGridPositionChanged && m_PreviousMove.HasValue)
                {
                    executing = true;
                    BoundsInt previousRect   = GridSelection.position;
                    BoundsInt previousBounds = new BoundsInt(new Vector3Int(previousRect.xMin, previousRect.yMin, 0), new Vector3Int(previousRect.size.x, previousRect.size.y, 1));

                    Vector2Int direction = mouseGridPosition - m_PreviousMove.Value;
                    BoundsInt  pos       = GridSelection.position;
                    pos.position           = new Vector3Int(pos.x + direction.x, pos.y + direction.y, pos.z);
                    GridSelection.position = pos;
                    Move(previousBounds, pos);
                    m_PreviousMove = mouseGridPosition;
                    Event.current.Use();
                }
            }
            if (evt.type == EventType.MouseUp && evt.button == 0 && m_PreviousMove.HasValue && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && isHotControl)
            {
                if (m_PreviousMove.HasValue)
                {
                    m_PreviousMove = null;
                    MoveEnd(GridSelection.position);
                }
                executing             = false;
                GUIUtility.hotControl = 0;
                Event.current.Use();
            }
        }
コード例 #10
0
        private void HandleMoveTool()
        {
            Event current = Event.current;

            if (current.type == EventType.MouseDown && current.button == 0 && !current.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridMove)
            {
                this.RegisterUndo();
                Vector3Int position = new Vector3Int(this.mouseGridPosition.x, this.mouseGridPosition.y, GridSelection.position.zMin);
                if (GridSelection.active && GridSelection.position.Contains(position))
                {
                    GUIUtility.hotControl = this.m_PermanentControlID;
                    this.executing        = true;
                    this.m_MarqueeStart   = null;
                    this.m_MarqueeType    = PaintableGrid.MarqueeType.None;
                    this.m_PreviousMove   = new Vector2Int?(this.mouseGridPosition);
                    this.MoveStart(GridSelection.position);
                    PaintableGrid.s_LastActivePaintableGrid = this;
                }
                Event.current.Use();
            }
            if (current.type == EventType.MouseDrag && current.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && GUIUtility.hotControl == this.m_PermanentControlID)
            {
                if (this.m_MouseGridPositionChanged && this.m_PreviousMove.HasValue)
                {
                    this.executing = true;
                    BoundsInt  position2  = GridSelection.position;
                    BoundsInt  from       = new BoundsInt(new Vector3Int(position2.xMin, position2.yMin, 0), new Vector3Int(position2.size.x, position2.size.y, 1));
                    Vector2Int vector2Int = this.mouseGridPosition - this.m_PreviousMove.Value;
                    BoundsInt  position3  = GridSelection.position;
                    position3.position     = new Vector3Int(position3.x + vector2Int.x, position3.y + vector2Int.y, position3.z);
                    GridSelection.position = position3;
                    this.Move(from, position3);
                    this.m_PreviousMove = new Vector2Int?(this.mouseGridPosition);
                    Event.current.Use();
                }
            }
            if (current.type == EventType.MouseUp && current.button == 0 && this.m_PreviousMove.HasValue && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && GUIUtility.hotControl == this.m_PermanentControlID)
            {
                if (this.m_PreviousMove.HasValue)
                {
                    this.m_PreviousMove = null;
                    this.MoveEnd(GridSelection.position);
                }
                this.executing        = false;
                GUIUtility.hotControl = 0;
                Event.current.Use();
            }
        }
コード例 #11
0
        protected override void PickBrush(BoundsInt position, Vector3Int pickingStart)
        {
            if (grid == null || gridBrush == null)
            {
                return;
            }

            gridBrush.Pick(grid, brushTarget, position, pickingStart);

            if (!PaintableGrid.InGridEditMode())
            {
                EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, new Bounds(), GridPaintingState.instance);
            }

            m_ActivePick = new RectInt(position.min.x, position.min.y, position.size.x, position.size.y);
        }
コード例 #12
0
 public void OnSceneGUI(SceneView sceneView)
 {
     base.UpdateMouseGridPosition();
     base.OnGUI();
     if (PaintableGrid.InGridEditMode())
     {
         this.CallOnSceneGUI();
         if (this.grid != null && (GridPaintingState.activeGrid == this || GridSelection.active))
         {
             this.CallOnPaintSceneGUI();
         }
         if (Event.current.type == EventType.Repaint)
         {
             EditorGUIUtility.AddCursorRect(new Rect(0f, 17f, sceneView.position.width, sceneView.position.height - 17f), MouseCursor.CustomCursor);
         }
     }
     this.HandleMouseEnterLeave(sceneView);
 }
コード例 #13
0
 public void OnSceneGUI(SceneView sceneView)
 {
     UpdateMouseGridPosition();
     base.OnGUI();
     if (PaintableGrid.InGridEditMode())
     {
         CallOnSceneGUI();
         if ((grid != null) && (GridPaintingState.activeGrid == this || GridSelection.active))
         {
             CallOnPaintSceneGUI();
         }
         if (Event.current.type == EventType.Repaint)
         {
             EditorGUIUtility.AddCursorRect(new Rect(0, EditorGUI.kWindowToolbarHeight, sceneView.position.width, sceneView.position.height - EditorGUI.kWindowToolbarHeight), MouseCursor.CustomCursor);
         }
     }
     HandleMouseEnterLeave(sceneView);
 }
コード例 #14
0
        private void HandleSelectTool()
        {
            Event evt = Event.current;

            if (evt.type == EventType.MouseDown && evt.button == 0 && !evt.alt &&
                (EditMode.editMode == EditMode.SceneViewEditMode.GridSelect || (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && evt.control)))
            {
                if (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && evt.control)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridSelect, GridPaintingState.instance);
                }

                m_PreviousMove = null;
                m_MarqueeStart = mouseGridPosition;
                m_MarqueeType  = MarqueeType.Select;

                s_LastActivePaintableGrid = this;
                GUIUtility.hotControl     = m_PermanentControlID;
                Event.current.Use();
            }
            if (evt.rawType == EventType.MouseUp && evt.button == 0 && !evt.alt && m_MarqueeStart.HasValue && isHotControl && EditMode.editMode == EditMode.SceneViewEditMode.GridSelect)
            {
                // Check if event only occurred in the PaintableGrid window as evt.type will filter for this
                if (evt.type == EventType.MouseUp && m_MarqueeType == MarqueeType.Select)
                {
                    RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition);
                    Select(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1)));
                    Event.current.Use();
                }
                if (evt.control)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridMove, GridPaintingState.instance);
                }
                m_MarqueeStart = null;
                m_MarqueeType  = MarqueeType.None;
                InspectorWindow.RepaintAllInspectors();
                GUIUtility.hotControl = 0;
            }
            if (evt.type == EventType.KeyDown && evt.keyCode == KeyCode.Escape && !m_MarqueeStart.HasValue && !m_PreviousMove.HasValue)
            {
                ClearGridSelection();
                Event.current.Use();
            }
        }
コード例 #15
0
 public void OnEditModeStart(IToolModeOwner owner, EditMode.SceneViewEditMode editMode)
 {
     if (GridPaintingState.gridBrush != null && PaintableGrid.InGridEditMode() && GridPaintingState.activeBrushEditor != null)
     {
         GridBrushBase.Tool tool = PaintableGrid.EditModeToBrushTool(editMode);
         GridPaintingState.activeBrushEditor.OnToolActivated(tool);
         this.m_PreviousToolActivatedEditor = GridPaintingState.activeBrushEditor;
         this.m_PreviousToolActivated       = tool;
         for (int i = 0; i < GridPaintPaletteWindow.Styles.sceneViewEditModes.Length; i++)
         {
             if (GridPaintPaletteWindow.Styles.sceneViewEditModes[i] == editMode)
             {
                 Cursor.SetCursor(GridPaintPaletteWindow.Styles.mouseCursorTextures[i], (!(GridPaintPaletteWindow.Styles.mouseCursorTextures[i] != null)) ? Vector2.zero : GridPaintPaletteWindow.Styles.mouseCursorOSHotspot[(int)SystemInfo.operatingSystemFamily], CursorMode.Auto);
                 break;
             }
         }
     }
     base.Repaint();
 }
コード例 #16
0
 public void OnDestroy()
 {
     this.DestroyPreviewInstance();
     UnityEngine.Object.DestroyImmediate(this.clipboardView);
     UnityEngine.Object.DestroyImmediate(this.m_PaintableSceneViewGrid);
     if (this.m_PreviewUtility != null)
     {
         this.m_PreviewUtility.Cleanup();
     }
     this.m_PreviewUtility = null;
     if (PaintableGrid.InGridEditMode())
     {
         EditMode.QuitEditMode();
     }
     if (GridPaintPaletteWindow.instances.Count <= 1)
     {
         GridPaintingState.gridBrush = null;
     }
 }
コード例 #17
0
        private void UpdateCache()
        {
            GridLayout gridLayout;

            if (PaintableGrid.InGridEditMode())
            {
                gridLayout = ((!(GridPaintingState.scenePaintTarget != null)) ? null : GridPaintingState.scenePaintTarget.GetComponentInParent <GridLayout>());
            }
            else
            {
                gridLayout = ((!(Selection.activeGameObject != null)) ? null : Selection.activeGameObject.GetComponentInParent <GridLayout>());
            }
            if (gridLayout != this.m_ActiveGridProxy)
            {
                this.m_ActiveGridProxy = gridLayout;
                SceneViewGridManager.FlushCachedGridProxy();
            }
            this.ShowGlobalGrid(!this.active);
        }
コード例 #18
0
        private void UpdateCache()
        {
            GridLayout gridProxy = null;

            if (PaintableGrid.InGridEditMode())
            {
                gridProxy = GridPaintingState.scenePaintTarget != null?GridPaintingState.scenePaintTarget.GetComponentInParent <GridLayout>() : null;
            }
            else
            {
                gridProxy = Selection.activeGameObject != null?Selection.activeGameObject.GetComponentInParent <GridLayout>() : null;
            }
            if (gridProxy != m_ActiveGridProxy)
            {
                m_ActiveGridProxy = gridProxy;
                FlushCachedGridProxy();
            }

            ShowGlobalGrid(!active);
        }
コード例 #19
0
        private void HandleSelectTool()
        {
            Event current = Event.current;

            if (current.type == EventType.MouseDown && current.button == 0 && !current.alt && (EditMode.editMode == EditMode.SceneViewEditMode.GridSelect || (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && current.control)))
            {
                if (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && current.control)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridSelect, ScriptableSingleton <GridPaintingState> .instance);
                }
                this.m_PreviousMove = null;
                this.m_MarqueeStart = new Vector2Int?(this.mouseGridPosition);
                this.m_MarqueeType  = PaintableGrid.MarqueeType.Select;
                PaintableGrid.s_LastActivePaintableGrid = this;
                GUIUtility.hotControl = this.m_PermanentControlID;
                Event.current.Use();
            }
            if (current.type == EventType.MouseUp && current.button == 0 && !current.alt && this.m_MarqueeStart.HasValue && GUIUtility.hotControl == this.m_PermanentControlID && EditMode.editMode == EditMode.SceneViewEditMode.GridSelect)
            {
                if (this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Select)
                {
                    RectInt marqueeRect = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition);
                    this.Select(new BoundsInt(new Vector3Int(marqueeRect.xMin, marqueeRect.yMin, 0), new Vector3Int(marqueeRect.size.x, marqueeRect.size.y, 1)));
                    this.m_MarqueeStart = null;
                    this.m_MarqueeType  = PaintableGrid.MarqueeType.None;
                    InspectorWindow.RepaintAllInspectors();
                }
                if (current.control)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridMove, ScriptableSingleton <GridPaintingState> .instance);
                }
                GUIUtility.hotControl = 0;
                Event.current.Use();
            }
            if (current.type == EventType.KeyDown && current.keyCode == KeyCode.Escape && !this.m_MarqueeStart.HasValue && !this.m_PreviousMove.HasValue)
            {
                this.ClearGridSelection();
                Event.current.Use();
            }
        }
コード例 #20
0
        public void OnDestroy()
        {
            DestroyPreviewInstance();
            DestroyImmediate(clipboardView);
            DestroyImmediate(m_PaintableSceneViewGrid);

            if (m_PreviewUtility != null)
            {
                m_PreviewUtility.Cleanup();
            }
            m_PreviewUtility = null;

            if (PaintableGrid.InGridEditMode())
            {
                EditMode.QuitEditMode();
            }

            if (instances.Count <= 1)
            {
                GridPaintingState.gridBrush = null;
            }
        }
コード例 #21
0
        public void OnEditModeStart(IToolModeOwner owner, EditMode.SceneViewEditMode editMode)
        {
            if (GridPaintingState.gridBrush != null && PaintableGrid.InGridEditMode() && GridPaintingState.activeBrushEditor != null)
            {
                GridBrushBase.Tool tool = PaintableGrid.EditModeToBrushTool(editMode);
                GridPaintingState.activeBrushEditor.OnToolActivated(tool);
                m_PreviousToolActivatedEditor = GridPaintingState.activeBrushEditor;
                m_PreviousToolActivated       = tool;

                for (int i = 0; i < k_SceneViewEditModes.Length; ++i)
                {
                    if (k_SceneViewEditModes[i] == editMode)
                    {
                        Cursor.SetCursor(MouseStyles.mouseCursorTextures[i],
                                         MouseStyles.mouseCursorTextures[i] != null ? MouseStyles.mouseCursorOSHotspot[(int)SystemInfo.operatingSystemFamily] : Vector2.zero,
                                         CursorMode.Auto);
                        break;
                    }
                }
            }

            Repaint();
        }
コード例 #22
0
        private void CallOnPaintSceneGUI()
        {
            bool flag = GridSelection.active && GridSelection.target == this.brushTarget;

            if (flag || !(GridPaintingState.activeGrid != this))
            {
                RectInt marqueeRect = new RectInt(base.mouseGridPosition, new Vector2Int(1, 1));
                if (this.m_MarqueeStart.HasValue)
                {
                    marqueeRect = GridEditorUtility.GetMarqueeRect(base.mouseGridPosition, this.m_MarqueeStart.Value);
                }
                else if (flag)
                {
                    marqueeRect = new RectInt(GridSelection.position.xMin, GridSelection.position.yMin, GridSelection.position.size.x, GridSelection.position.size.y);
                }
                GridLayout gridLayout = (!(this.tilemap != null)) ? this.grid : this.tilemap;
                if (GridPaintingState.activeBrushEditor != null)
                {
                    GridPaintingState.activeBrushEditor.OnPaintSceneGUI(gridLayout, this.brushTarget, new BoundsInt(new Vector3Int(marqueeRect.x, marqueeRect.y, 0), new Vector3Int(marqueeRect.width, marqueeRect.height, 1)), PaintableGrid.EditModeToBrushTool(EditMode.editMode), this.m_MarqueeStart.HasValue || base.executing);
                }
                else
                {
                    GridBrushEditorBase.OnPaintSceneGUIInternal(gridLayout, this.brushTarget, new BoundsInt(new Vector3Int(marqueeRect.x, marqueeRect.y, 0), new Vector3Int(marqueeRect.width, marqueeRect.height, 1)), PaintableGrid.EditModeToBrushTool(EditMode.editMode), this.m_MarqueeStart.HasValue || base.executing);
                }
            }
        }
コード例 #23
0
 public void ChangeToTool(GridBrushBase.Tool tool)
 {
     EditMode.ChangeEditMode(PaintableGrid.BrushToolToEditMode(tool), new Bounds(Vector3.zero, Vector3.positiveInfinity), GridPaintingState.instance);
     Repaint();
 }