// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
using System;
using FlaxEditor.SceneGraph.Actors;
using FlaxEditor.Viewport;
using FlaxEditor.Viewport.Modes;
namespace FlaxEditor.Tools.Foliage
{
///
/// Foliage instances editing mode.
///
///
public class EditFoliageGizmoMode : EditorGizmoMode
{
private int _selectedInstanceIndex = -1;
///
/// The foliage painting gizmo.
///
public EditFoliageGizmo Gizmo;
///
/// The foliage editing selection outline.
///
public EditFoliageSelectionOutline SelectionOutline;
///
/// Gets the selected foliage actor (see ).
///
public FlaxEngine.Foliage SelectedFoliage
{
get
{
var sceneEditing = Editor.Instance.SceneEditing;
var foliageNode = sceneEditing.SelectionCount == 1 ? sceneEditing.Selection[0] as FoliageNode : null;
return (FlaxEngine.Foliage)foliageNode?.Actor;
}
}
///
/// The selected foliage instance index.
///
public int SelectedInstanceIndex
{
get => _selectedInstanceIndex;
set
{
if (_selectedInstanceIndex == value)
return;
_selectedInstanceIndex = value;
SelectedInstanceIndexChanged?.Invoke();
}
}
///
/// Occurs when selected instance index gets changed.
///
public event Action SelectedInstanceIndexChanged;
///
public override void Init(MainEditorGizmoViewport viewport)
{
base.Init(viewport);
Gizmo = new EditFoliageGizmo(viewport, this);
SelectionOutline = FlaxEngine.Object.New();
SelectionOutline.GizmoMode = this;
}
///
public override void Dispose()
{
FlaxEngine.Object.Destroy(ref SelectionOutline);
base.Dispose();
}
///
public override void OnActivated()
{
base.OnActivated();
Viewport.Gizmos.Active = Gizmo;
Viewport.OverrideSelectionOutline(SelectionOutline);
SelectedInstanceIndex = -1;
}
///
public override void OnDeactivated()
{
Viewport.OverrideSelectionOutline(null);
base.OnDeactivated();
}
}
}