Source code for BaseMod.camera.cameraHistory

from PySide6.QtCore import QRect

from RWS.Modify import HistoryElement
from RWS.Core import CELLSIZE


[docs] class AddCamera(HistoryElement):
[docs] def __init__(self, history, editor, module, index, pos): super().__init__(history) self.module = module self.index = index self.pos = pos self.editor = editor self.module.add_new_camera(self.index, self.pos)
[docs] def undo_changes(self): self.module.pop_camera(self.index) self.editor.add_handles()
[docs] def redo_changes(self): self.module.add_new_camera(self.index, self.pos) self.editor.add_handles()
[docs] class RemoveCamera(HistoryElement):
[docs] def __init__(self, history, editor, module, cameras: list[int]): super().__init__(history) cameras.sort(reverse=True) self.cams: [..., int] = [] self.module = module self.cameras = list[int] self.editor = editor for i in cameras: self.cams.append([module.pop_camera(i), i]) self.editor.add_handles()
[docs] def undo_changes(self): for i in self.cams: self.module.add_camera(i[1], i[0]) self.editor.add_handles()
[docs] def redo_changes(self): for i in self.cams: self.module.pop_camera(i[1]) self.editor.add_handles()
[docs] class CameraMove(HistoryElement):
[docs] def __init__(self, history, editor, module, cameras: list[int], offset): super().__init__(history) self.editor = editor self.module = module self.cameras = cameras self.offset = offset self.redo_changes(False)
[docs] def undo_changes(self): for i in self.cameras: self.history.level.l_cameras[i].pos -= self.offset self.history.level.l_cameras[i].pos.setX(round(self.history.level.l_cameras[i].pos.x(), 4)) self.history.level.l_cameras[i].pos.setY(round(self.history.level.l_cameras[i].pos.y(), 4)) self.module.cameras[i].update_camera() self.editor.reset_selection() self.editor.cameraui.add_cameras()
[docs] def redo_changes(self, reset=True): for i in self.cameras: self.history.level.l_cameras[i].pos += self.offset self.history.level.l_cameras[i].pos.setX(round(self.history.level.l_cameras[i].pos.x(), 4)) self.history.level.l_cameras[i].pos.setY(round(self.history.level.l_cameras[i].pos.y(), 4)) self.module.cameras[i].update_camera() if reset: self.editor.reset_selection() self.editor.cameraui.add_cameras()
[docs] class CameraQuadMove(HistoryElement):
[docs] def __init__(self, history, editor, module, quad: int, cameras: list[int]): super().__init__(history) self.editor = editor self.module = module self.cameras = cameras self.offsets = [] self.quad = quad for i in self.cameras: oldpos = self.module.cameras[i].camera.quads[quad] newpos = self.module.cameras[i].newquads[quad] self.offsets.append([i, oldpos, newpos]) self.module.cameras[i].camera.quads[quad] = newpos self.module.cameras[i].fix_offset(self.quad)
#self.redo_changes(True) # self.editor.reset_selection()
[docs] def undo_changes(self): for i in self.offsets: index = i[0] oldpos = i[1] self.module.cameras[index].camera.quads[self.quad] = oldpos self.module.cameras[index].fix_offset(self.quad) self.editor.reset_selection()
[docs] def redo_changes(self, reset=True): for i in self.offsets: index = i[0] newpos = i[2] self.module.cameras[index].camera.quads[self.quad] = newpos self.module.cameras[index].fix_offset(self.quad) if reset: self.editor.reset_selection()
[docs] class MoveCameraOrder(HistoryElement):
[docs] def __init__(self, history, editor, module, up: bool, cameras: list[int]): super().__init__(history) self.editor = editor self.module = module self.cameras = cameras self.cameras.sort(reverse=not up) self.up = up self.cameras_moved = [] self.cams_amount = len(self.module.cameras) self.redo_changes(False)
# self.editor.reset_selection()
[docs] def undo_changes(self): if self.up: for i in reversed(self.cameras_moved): if i >= self.cams_amount - 1: continue self.module.move_camera(i, i + 1) else: for i in reversed(self.cameras_moved): if i == 0: continue self.module.move_camera(i, i - 1) self.editor.cameraui.add_cameras() self.editor.reset_selection()
[docs] def redo_changes(self, reset=True): self.cameras_moved = [] if self.up: for i in self.cameras: if i == 0: continue self.cameras_moved.append(i - 1) self.module.move_camera(i, i - 1) else: for i in self.cameras: if i >= self.cams_amount - 1: continue self.cameras_moved.append(i + 1) self.module.move_camera(i, i + 1) if reset: self.editor.reset_selection() self.editor.cameraui.add_cameras()
[docs] class LevelResizedCameras(HistoryElement):
[docs] def __init__(self, history, newrect: QRect): super().__init__(history) self.module = self.level.viewport.modulenames["cameras"] self.newrect = newrect self.redo_changes()
[docs] def undo_changes(self): for i in self.level.l_cameras.cameras: i.pos += self.newrect.topLeft() * CELLSIZE for i in self.module.cameras: i.update_camera()
[docs] def redo_changes(self): for i in self.level.l_cameras.cameras: i.pos -= self.newrect.topLeft() * CELLSIZE for i in self.module.cameras: i.update_camera()