Source code for BaseMod.camera.cameraModule
from PySide6.QtCore import QPointF
from BaseMod.LevelParts import CameraLevelPart
from BaseMod.camera.cameraRenderable import RenderCamera
from RWS.Modify import Module
cameradepth = 5
[docs]
class CameraModule(Module):
[docs]
def __init__(self, mod):
super().__init__(mod)
from BaseMod.camera.cameraUIConnectors import CameraViewUI
self.cameras: list[RenderCamera] = []
self.ui: CameraViewUI = self.mod.cameraview
self.ui.show_cameras.valueChanged.connect(self.change_visibility)
for i in [self.ui.showrect, self.ui.showrect2, self.ui.showrect3, self.ui.showrectcenter, self.ui.showpoly, self.ui.showindex, self.ui.showcirc]:
i.valueChanged.connect(lambda: self.update_cameras(True))
for i in [self.ui.rectcolor, self.ui.rect2color, self.ui.rect3color, self.ui.rectcentercolor, self.ui.polycolor, self.ui.indexcolor, self.ui.circcolor]:
i.valueChanged.connect(lambda: self.update_cameras(True))
[docs]
def init_scene_items(self, viewport):
for i in viewport.level.l_cameras:
self.cameras.append(RenderCamera(self, cameradepth, i))
self.change_visibility(self.ui.show_cameras.value)
[docs]
def change_visibility(self, state):
for i in self.cameras:
i.change_visibility(state)
[docs]
def pop_camera(self, index):
rc = self.cameras.pop(index)
rc.remove_myself()
pop = self.level.l_cameras.pop(index)
self.reindex()
return pop
[docs]
def add_new_camera(self, index, pos):
cam = CameraLevelPart.Camera(pos, [QPointF(), QPointF(), QPointF(), QPointF()])
self.add_camera(index, cam)
[docs]
def add_camera(self, index, camera: CameraLevelPart.Camera):
self.level.l_cameras.cameras.insert(index, camera)
rc = RenderCamera(self, cameradepth, camera)
#rc.init_graphics(self.viewport)
rc.textindex.setPlainText(str(index))
self.cameras.insert(index, rc)
[docs]
def move_camera(self, index, newindex):
cam = self.level.l_cameras.cameras.pop(index)
rc = self.cameras.pop(index)
self.level.l_cameras.cameras.insert(max(0, newindex), cam)
self.cameras.insert(max(0, newindex), rc)
self.reindex()
[docs]
def reindex(self):
for i, v in enumerate(self.cameras):
v.textindex.setPlainText(str(i))
[docs]
def update_cameras(self, repaint=False):
for i in self.cameras:
i.update_camera(repaint=repaint)