Files
FlaxEngine/Source/Editor/Gizmo/IGizmoOwner.cs
2023-07-13 23:30:37 +02:00

106 lines
3.0 KiB
C#

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Collections.Generic;
using FlaxEngine;
namespace FlaxEditor.Gizmo
{
/// <summary>
/// Describes objects that can own gizmo tools.
/// </summary>
[HideInEditor]
public interface IGizmoOwner
{
/// <summary>
/// Gets the gizmos collection.
/// </summary>
GizmosCollection Gizmos { get; }
/// <summary>
/// Gets the render task used by the owner to render the scene and the gizmos.
/// </summary>
SceneRenderTask RenderTask { get; }
/// <summary>
/// Gets a value indicating whether left mouse button is pressed down.
/// </summary>
bool IsLeftMouseButtonDown { get; }
/// <summary>
/// Gets a value indicating whether right mouse button is pressed down.
/// </summary>
bool IsRightMouseButtonDown { get; }
/// <summary>
/// Gets a value indicating whether Alt key is pressed down.
/// </summary>
bool IsAltKeyDown { get; }
/// <summary>
/// Gets a value indicating whether Control key is pressed down.
/// </summary>
bool IsControlDown { get; }
/// <summary>
/// Gets a value indicating whether snap selected objects to ground (check if user pressed the given input key to call action).
/// </summary>
bool SnapToGround { get; }
/// <summary>
/// Gets the view forward direction.
/// </summary>
Float3 ViewDirection { get; }
/// <summary>
/// Gets the view position.
/// </summary>
Vector3 ViewPosition { get; }
/// <summary>
/// Gets the view orientation.
/// </summary>
Quaternion ViewOrientation { get; }
/// <summary>
/// Gets the view far clipping plane.
/// </summary>
float ViewFarPlane { get; }
/// <summary>
/// Gets the mouse ray (in world space of the viewport).
/// </summary>
Ray MouseRay { get; }
/// <summary>
/// Gets the mouse movement delta.
/// </summary>
Float2 MouseDelta { get; }
/// <summary>
/// Gets a value indicating whether use grid snapping during gizmo operations.
/// </summary>
bool UseSnapping { get; }
/// <summary>
/// Gets a value indicating whether duplicate objects during gizmo operation (eg. when transforming).
/// </summary>
bool UseDuplicate { get; }
/// <summary>
/// Gets a <see cref="FlaxEditor.Undo"/> object used by the gizmo owner.
/// </summary>
Undo Undo { get; }
/// <summary>
/// Gets the root tree node for the scene graph.
/// </summary>
SceneGraph.RootNode SceneGraphRoot { get; }
/// <summary>
/// Selects the scene objects.
/// </summary>
/// <param name="nodes">The nodes to select</param>
void Select(List<SceneGraph.SceneGraphNode> nodes);
}
}