Files
2026-07-13 13:13:17 +08:00

41 lines
1.4 KiB
C#

using T3.Core.Operator;
namespace T3.Editor.UiModel.Commands.Graph;
internal sealed class DeleteConnectionCommand : ICommand
{
public string Name => "Delete Connection";
public bool IsUndoable => true;
internal DeleteConnectionCommand(Symbol compositionSymbol, Symbol.Connection connectionToRemove, int multiInputIndex)
{
_removedConnection = connectionToRemove.Clone();
_compositionSymbolId = compositionSymbol.Id;
_multiInputIndex = multiInputIndex;
}
public void Do()
{
if(!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var symbolUi))
throw new Exception("Symbol not found: " + _compositionSymbolId);
var compositionSymbol = symbolUi.Symbol;
compositionSymbol.RemoveConnection(_removedConnection, _multiInputIndex);
symbolUi.FlagAsModified();
}
public void Undo()
{
if(!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var symbolUi))
throw new Exception("Symbol not found: " + _compositionSymbolId);
var compositionSymbol = symbolUi.Symbol;
compositionSymbol.AddConnection(_removedConnection, _multiInputIndex);
symbolUi.FlagAsModified();
}
private readonly Guid _compositionSymbolId;
private readonly Symbol.Connection _removedConnection;
private readonly int _multiInputIndex;
}