using System;
using Artemis.Core;
using Artemis.Core.LayerEffects;
namespace Artemis.UI.Shared.Services.ProfileEditor.Commands;
///
/// Represents a profile editor command that can be used to remove a layer effect from a profile element.
///
public class RemoveLayerEffect : IProfileEditorCommand, IDisposable
{
private readonly RenderProfileElement _renderProfileElement;
private readonly BaseLayerEffect _layerEffect;
private bool _executed;
///
/// Creates a new instance of the class.
///
public RemoveLayerEffect(BaseLayerEffect layerEffect)
{
_renderProfileElement = layerEffect.ProfileElement;
_layerEffect = layerEffect;
}
///
public string DisplayName => "Remove layer effect";
///
public void Execute()
{
_renderProfileElement.RemoveLayerEffect(_layerEffect);
_executed = true;
}
///
public void Undo()
{
_renderProfileElement.AddLayerEffect(_layerEffect);
_executed = false;
}
///
public void Dispose()
{
if (_executed)
_layerEffect.Dispose();
}
}