/// <summary> /// Sets the active mode. /// </summary> /// <param name="mode">The mode.</param> public void SetActiveMode(EditorGizmoMode mode) { if (mode == _activeMode) { return; } if (mode != null) { if (!_modes.Contains(mode)) { throw new ArgumentException("Not added."); } if (mode.Viewport != this) { throw new ArgumentException("Not added to this viewport."); } } _activeMode?.OnDeactivated(); Gizmos.Active = null; _activeMode = mode; _activeMode?.OnActivated(); ActiveModeChanged?.Invoke(mode); }
private void DisposeModes() { // Cleanup _activeMode = null; for (int i = 0; i < _modes.Count; i++) { _modes[i].Dispose(); } _modes.Clear(); }
private void InitModes() { // Add default modes used by the editor _modes.Add(new TransformGizmoMode()); _modes.Add(SculptTerrainGizmo = new Tools.Terrain.SculptTerrainGizmoMode()); _modes.Add(PaintTerrainGizmo = new Tools.Terrain.PaintTerrainGizmoMode()); _modes.Add(EditTerrainGizmo = new Tools.Terrain.EditTerrainGizmoMode()); for (int i = 0; i < _modes.Count; i++) { _modes[i].Init(this); } // Activate transform mode first _activeMode = _modes[0]; }
/// <summary> /// Adds the mode to the viewport. /// </summary> /// <param name="mode">The mode.</param> public void AddMode(EditorGizmoMode mode) { if (mode == null) { throw new ArgumentNullException(nameof(mode)); } if (_modes.Contains(mode)) { throw new ArgumentException("Already added."); } if (mode.Viewport != null) { throw new ArgumentException("Already added to other viewport."); } _modes.Add(mode); }
/// <summary> /// Removes the mode from the viewport. /// </summary> /// <param name="mode">The mode.</param> public void RemoveMode(EditorGizmoMode mode) { if (mode == null) { throw new ArgumentNullException(nameof(mode)); } if (!_modes.Contains(mode)) { throw new ArgumentException("Not added."); } if (mode.Viewport != this) { throw new ArgumentException("Not added to this viewport."); } if (_activeMode == mode) { SetActiveMode(null); } _modes.Remove(mode); }