// Copyright (c) Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Tools.Foliage.Undo
{
///
/// The foliage instance delete action that can restore it.
///
///
[Serializable]
sealed class DeleteInstanceAction : IUndoAction
{
[Serialize]
private readonly Guid _foliageId;
[Serialize]
private int _index;
[Serialize]
private FoliageInstance _instance;
///
/// Initializes a new instance of the class.
///
/// The foliage.
/// The instance index.
public DeleteInstanceAction(FlaxEngine.Foliage foliage, int index)
{
_foliageId = foliage.ID;
_index = index;
}
///
public string ActionString => "Delete foliage instance";
///
public void Do()
{
var foliageId = _foliageId;
var foliage = FlaxEngine.Object.Find(ref foliageId);
_instance = foliage.GetInstance(_index);
foliage.RemoveInstance(_index);
foliage.RebuildClusters();
Editor.Instance.Scene.MarkSceneEdited(foliage.Scene);
}
///
public void Undo()
{
var foliageId = _foliageId;
var foliage = FlaxEngine.Object.Find(ref foliageId);
_index = foliage.InstancesCount;
foliage.AddInstance(ref _instance);
foliage.RebuildClusters();
Editor.Instance.Scene.MarkSceneEdited(foliage.Scene);
}
///
public void Dispose()
{
}
}
}