mattercontrol/PartPreviewWindow/View3D/UndoCommands/DeleteUndoCommand.cs

46 lines
1.5 KiB
C#
Raw Normal View History

2016-02-27 15:01:28 -08:00
using MatterHackers.Agg.UI;
using MatterHackers.PolygonMesh;
using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
internal class DeleteUndoCommand : IUndoRedoCommand
{
2016-02-27 15:20:12 -08:00
private int deletedIndex;
2016-02-27 15:01:28 -08:00
private View3DWidget view3DWidget;
private Matrix4X4 deletedTransform;
PlatingMeshGroupData deletedPlatingData;
MeshGroup meshGroupThatWasDeleted;
2016-02-27 15:20:12 -08:00
public DeleteUndoCommand(View3DWidget view3DWidget, int deletedIndex)
2016-02-27 15:01:28 -08:00
{
this.view3DWidget = view3DWidget;
2016-02-27 15:20:12 -08:00
this.deletedIndex = deletedIndex;
meshGroupThatWasDeleted = view3DWidget.MeshGroups[deletedIndex];
deletedTransform = view3DWidget.MeshGroupTransforms[deletedIndex];
deletedPlatingData = view3DWidget.MeshGroupExtraData[deletedIndex];
2016-02-27 15:01:28 -08:00
}
public void Do()
{
2016-02-27 15:20:12 -08:00
view3DWidget.MeshGroups.RemoveAt(deletedIndex);
view3DWidget.MeshGroupExtraData.RemoveAt(deletedIndex);
view3DWidget.MeshGroupTransforms.RemoveAt(deletedIndex);
if (view3DWidget.SelectedMeshGroupIndex >= view3DWidget.MeshGroups.Count)
{
view3DWidget.SelectedMeshGroupIndex = view3DWidget.MeshGroups.Count - 1;
}
2016-02-27 15:20:12 -08:00
view3DWidget.PartHasBeenChanged();
2016-02-27 15:01:28 -08:00
}
public void Undo()
{
2016-02-27 15:20:12 -08:00
view3DWidget.MeshGroups.Insert(deletedIndex, meshGroupThatWasDeleted);
view3DWidget.MeshGroupTransforms.Insert(deletedIndex, deletedTransform);
view3DWidget.MeshGroupExtraData.Insert(deletedIndex, deletedPlatingData);
2016-02-27 15:01:28 -08:00
view3DWidget.Invalidate();
view3DWidget.SelectedMeshGroupIndex = view3DWidget.MeshGroups.Count - 1;
2016-02-27 15:01:28 -08:00
}
}
}