Source code for BaseMod.geo.geometryModule
from PySide6.QtCore import Slot, Signal
from BaseMod.geo.geoRenderTexture import GeoRenderLevelImage
from RWS.Modify import Module
[docs]
class GeoModule(Module):
layerChanged = Signal(int)
[docs]
def __init__(self, mod):
super().__init__(mod)
from BaseMod.baseMod import BaseMod
self.mod: BaseMod
self.ui = self.mod.geoview
self.draw = True
self.l1 = GeoRenderLevelImage(self, 150, 0)
self.l2 = GeoRenderLevelImage(self, 250, 1)
self.l3 = GeoRenderLevelImage(self, 350, 2)
self.ui.drawl1.valueChanged.connect(self.check_layers_change)
self.ui.drawl2.valueChanged.connect(self.check_layers_change)
self.ui.drawl3.valueChanged.connect(self.check_layers_change)
self.ui.popacity.valueChanged.connect(self.check_layers_change)
self.ui.sopacity.valueChanged.connect(self.check_layers_change)
self.ui.sopacityrgb.valueChanged.connect(self.check_layers_change)
self.ui.popacityrgb.valueChanged.connect(self.init_module_textures)
self.ui.renderall.valueChanged.connect(self.remove_items_from_scene)
self.ui.drawlbeams.valueChanged.connect(self.check_beams_change)
self.ui.drawlpipes.valueChanged.connect(self.check_pipes_change)
self.ui.drawlmisc.valueChanged.connect(self.check_misc_change)
self.ui.drawoption.valueChanged.connect(self.render_module)
self.ui.render.connect(self.render_module)
self.ui.imagepath.valueChanged.connect(self.update_image)
self.manager.layer.valueChanged.connect(self.init_module_textures)
[docs]
def update_image(self):
self.l1.update_image()
self.l1.draw_layer(True)
self.l2.update_image()
self.l2.draw_layer(True)
self.l3.update_image()
self.l3.draw_layer(True)
[docs]
@Slot()
def check_layers_change(self):
if not self.ui.drawgeo.value:
self.l1.setOpacity(0)
self.l2.setOpacity(0)
self.l3.setOpacity(0)
return
if self.ui.drawoption.value == 1:
self.l1.setOpacity(self.ui.popacityrgb.value if self.layer == 0 else self.ui.sopacityrgb.value)
self.l2.setOpacity(self.ui.popacityrgb.value if self.layer == 1 else self.ui.sopacityrgb.value)
self.l3.setOpacity(self.ui.popacityrgb.value if self.layer == 2 else self.ui.sopacityrgb.value)
self.l1.setOpacity(self.l1.opacity if self.ui.drawl1.value else 0)
self.l2.setOpacity(self.l2.opacity if self.ui.drawl2.value else 0)
self.l3.setOpacity(self.l3.opacity if self.ui.drawl3.value else 0)
return
self.l1.setOpacity(self.ui.popacity.value if self.layer == 0 else self.ui.sopacity.value)
if self.layer == 1 and not self.ui.renderall.value:
self.l1.setOpacity(0)
self.l2.setOpacity(self.ui.popacity.value if self.layer == 1 else self.ui.sopacity.value)
if self.layer == 2 and not self.ui.renderall.value:
self.l1.setOpacity(0)
self.l2.setOpacity(0)
self.l3.setOpacity(self.ui.popacity.value if self.layer == 2 else self.ui.sopacity.value)
self.l1.setOpacity(self.l1.opacity if self.ui.drawl1.value else 0)
self.l2.setOpacity(self.l2.opacity if self.ui.drawl2.value else 0)
self.l3.setOpacity(self.l3.opacity if self.ui.drawl3.value else 0)
# a lot of bullshit functions to speed up rendering
[docs]
@Slot()
def check_beams_change(self):
if not self.draw:
return
self.l1.redraw_beams()
self.l2.redraw_beams()
self.l3.redraw_beams()
[docs]
@Slot()
def check_misc_change(self):
if not self.draw:
return
self.l1.redraw_misc()
self.l2.redraw_misc()
self.l3.redraw_misc()
[docs]
@Slot()
def check_pipes_change(self):
if not self.draw:
return
self.l1.redraw_pipes()
self.l2.redraw_pipes()
self.l3.redraw_pipes()
[docs]
def init_module_textures(self):
self.check_layers_change()
[docs]
def render_module(self):
self.l1.draw_layer()
self.l2.draw_layer()
self.l3.draw_layer()
self.init_module_textures()
[docs]
def init_scene_items(self, viewport):
super().init_scene_items(viewport)
self.render_module()
[docs]
def get_layer(self, layer: int) -> GeoRenderLevelImage:
return [self.l1, self.l2, self.l3][layer]