package UndoRedo;
import java.util.ArrayList;
import java.util.HashMap;
import Builder.BrickSelectionManager;
import Command.LDrawPart;
import Common.Matrix4;
import Connectivity.GlobalConnectivityManager;
public class MovePartsAction implements IAction {
private ArrayList<LDrawPart> partList;
private HashMap<LDrawPart, Matrix4> originalTransformMap;
private HashMap<LDrawPart, Matrix4> newTransformMap;
public MovePartsAction() {
partList = new ArrayList<LDrawPart>();
originalTransformMap = new HashMap<LDrawPart, Matrix4>();
newTransformMap = new HashMap<LDrawPart, Matrix4>();
}
public void addMovePart(LDrawPart part, Matrix4 originalTransform,
Matrix4 newTransform) {
partList.add(part);
originalTransformMap.put(part, originalTransform);
newTransformMap.put(part, newTransform);
}
@Override
public void undoAction() {
// System.out.println("undo");
for (LDrawPart part : partList)
part.setTransformationMatrix(originalTransformMap.get(part));
GlobalConnectivityManager.getInstance().updateMatrixAll();
BrickSelectionManager.getInstance().updateScreenProjectionVerticesMapAll();
}
@Override
public void redoAction() {
for (LDrawPart part : partList)
part.setTransformationMatrix(newTransformMap.get(part));
GlobalConnectivityManager.getInstance().updateMatrixAll();
BrickSelectionManager.getInstance().updateScreenProjectionVerticesMapAll();
}
}