mattercontrol/PartPreviewWindow/View3D/UndoCommands/CopyUndoCommand.cs

46 lines
No EOL
1.5 KiB
C#

using MatterHackers.Agg.UI;
using MatterHackers.PolygonMesh;
using MatterHackers.VectorMath;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
internal class CopyUndoCommand : IUndoRedoCommand
{
private int newItemIndex;
private View3DWidget view3DWidget;
private Matrix4X4 newItemTransform;
PlatingMeshGroupData newItemPlatingData;
MeshGroup meshGroupThatWasDeleted;
public CopyUndoCommand(View3DWidget view3DWidget, int newItemIndex)
{
this.view3DWidget = view3DWidget;
this.newItemIndex = newItemIndex;
meshGroupThatWasDeleted = view3DWidget.MeshGroups[newItemIndex];
newItemTransform = view3DWidget.MeshGroupTransforms[newItemIndex];
newItemPlatingData = view3DWidget.MeshGroupExtraData[newItemIndex];
}
public void Undo()
{
view3DWidget.MeshGroups.RemoveAt(newItemIndex);
view3DWidget.MeshGroupExtraData.RemoveAt(newItemIndex);
view3DWidget.MeshGroupTransforms.RemoveAt(newItemIndex);
if(view3DWidget.SelectedMeshGroupIndex >= view3DWidget.MeshGroups.Count)
{
view3DWidget.SelectedMeshGroupIndex = view3DWidget.MeshGroups.Count - 1;
}
view3DWidget.PartHasBeenChanged();
}
public void Do()
{
view3DWidget.MeshGroups.Insert(newItemIndex, meshGroupThatWasDeleted);
view3DWidget.MeshGroupTransforms.Insert(newItemIndex, newItemTransform);
view3DWidget.MeshGroupExtraData.Insert(newItemIndex, newItemPlatingData);
view3DWidget.Invalidate();
view3DWidget.SelectedMeshGroupIndex = view3DWidget.MeshGroups.Count - 1;
}
}
}