// 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() { } } }