Refactor Editor gizmo modes ownership to support using them in prefab window

This commit is contained in:
Wojtek Figat
2023-07-12 12:24:13 +02:00
parent 6ae77d0c17
commit 8a07c486bc
17 changed files with 203 additions and 206 deletions

View File

@@ -10,6 +10,7 @@ using FlaxEditor.SceneGraph;
using FlaxEditor.SceneGraph.Actors;
using FlaxEditor.Scripting;
using FlaxEditor.Viewport.Cameras;
using FlaxEditor.Viewport.Modes;
using FlaxEditor.Viewport.Widgets;
using FlaxEditor.Windows;
using FlaxEngine;
@@ -22,7 +23,7 @@ namespace FlaxEditor.Viewport
/// Main editor gizmo viewport used by the <see cref="EditGameWindow"/>.
/// </summary>
/// <seealso cref="FlaxEditor.Viewport.EditorGizmoViewport" />
public partial class MainEditorGizmoViewport : EditorGizmoViewport, IEditorPrimitivesOwner, IGizmoOwner
public class MainEditorGizmoViewport : EditorGizmoViewport, IEditorPrimitivesOwner
{
private readonly Editor _editor;
@@ -183,6 +184,31 @@ namespace FlaxEditor.Viewport
set => _showNavigationButton.Checked = value;
}
/// <summary>
/// The sculpt terrain gizmo.
/// </summary>
public Tools.Terrain.SculptTerrainGizmoMode SculptTerrainGizmo;
/// <summary>
/// The paint terrain gizmo.
/// </summary>
public Tools.Terrain.PaintTerrainGizmoMode PaintTerrainGizmo;
/// <summary>
/// The edit terrain gizmo.
/// </summary>
public Tools.Terrain.EditTerrainGizmoMode EditTerrainGizmo;
/// <summary>
/// The paint foliage gizmo.
/// </summary>
public Tools.Foliage.PaintFoliageGizmoMode PaintFoliageGizmo;
/// <summary>
/// The edit foliage gizmo.
/// </summary>
public Tools.Foliage.EditFoliageGizmoMode EditFoliageGizmo;
/// <summary>
/// Initializes a new instance of the <see cref="MainEditorGizmoViewport"/> class.
/// </summary>
@@ -380,7 +406,20 @@ namespace FlaxEditor.Viewport
DragHandlers.Add(_dragActorType);
DragHandlers.Add(_dragAssets);
InitModes();
// Init gizmo modes
{
// Add default modes used by the editor
Gizmos.AddMode(new TransformGizmoMode());
Gizmos.AddMode(new NoGizmoMode());
Gizmos.AddMode(SculptTerrainGizmo = new Tools.Terrain.SculptTerrainGizmoMode());
Gizmos.AddMode(PaintTerrainGizmo = new Tools.Terrain.PaintTerrainGizmoMode());
Gizmos.AddMode(EditTerrainGizmo = new Tools.Terrain.EditTerrainGizmoMode());
Gizmos.AddMode(PaintFoliageGizmo = new Tools.Foliage.PaintFoliageGizmoMode());
Gizmos.AddMode(EditFoliageGizmo = new Tools.Foliage.EditFoliageGizmoMode());
// Activate transform mode first
Gizmos.SetActiveMode<TransformGizmoMode>();
}
// Setup input actions
InputActions.Add(options => options.TranslateMode, () => TransformGizmo.ActiveMode = TransformGizmoBase.Mode.Translate);
@@ -1117,7 +1156,6 @@ namespace FlaxEditor.Viewport
if (IsDisposing)
return;
DisposeModes();
_debugDrawData.Dispose();
if (_task != null)
{