// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Viewport.Modes
{
///
/// Editor viewport gizmo mode descriptor. Defines which gizmo tools to show and how to handle scene editing.
///
///
/// Only one gizmo mode can be active at the time. It defines the viewport toolset usage.
///
[HideInEditor]
public abstract class EditorGizmoMode
{
private MainEditorGizmoViewport _viewport;
///
/// Gets the viewport.
///
public MainEditorGizmoViewport Viewport => _viewport;
///
/// Occurs when mode gets activated.
///
public event Action Activated;
///
/// Occurs when mode gets deactivated.
///
public event Action Deactivated;
///
/// Initializes the specified mode and links it to the viewport.
///
/// The viewport.
public virtual void Init(MainEditorGizmoViewport viewport)
{
_viewport = viewport;
}
///
/// Releases the mode. Called on editor exit or when mode gets removed from the current viewport.
///
public virtual void Dispose()
{
_viewport = null;
}
///
/// Called when mode gets activated.
///
public virtual void OnActivated()
{
Activated?.Invoke();
}
///
/// Called when mode gets deactivated.
///
public virtual void OnDeactivated()
{
Deactivated?.Invoke();
}
}
}