Source code for RWESharp.Renderable.RenderList

from PySide6.QtWidgets import QGraphicsItem
from RWESharp.Renderable.Renderable import Renderable
from PySide6.QtCore import QPointF


[docs] class RenderList(Renderable): """ some easy way to have multiple Renderables or QGraphicsItems in one class without having to worry about them getting added """
[docs] def __init__(self, module, depth, add_renderable: bool = True): super().__init__(module, depth, False) self.graphicsitems: list[QGraphicsItem] = [] self.renderables: list[Renderable] = [] if add_renderable: self.module.add_renderable(self)
[docs] def assign_depth(self): for i in self.graphicsitems: i.setZValue(self.depth)
[docs] def init_graphics(self, viewport): super().init_graphics(viewport) for i in self.graphicsitems: viewport.workscene.addItem(i)
# for i in self.renderables: # i.init_graphics(viewport)
[docs] def remove_graphics(self, viewport): for i in self.graphicsitems: viewport.workscene.removeItem(i) for i in self.renderables: i.remove_graphics(viewport) super().remove_graphics(viewport)
[docs] def remove_myself(self): for i in self.graphicsitems: self.viewport.workscene.removeItem(i) for i in self.renderables: i.remove_myself() super().remove_myself()
[docs] def move_event(self): super().move_event() for i in self.graphicsitems: i.setPos(self.actual_offset)
[docs] def zoom_event(self): for i in self.graphicsitems: i.setScale(self.zoom * self.scale)
[docs] def setPos(self, pos: QPointF): super().setPos(pos) for i in self.graphicsitems: i.setPos(self.actual_offset) for i in self.renderables: i.setPos(self.offset)
[docs] def setOpacity(self, opacity): super().setOpacity(opacity) for i in self.renderables: i.setOpacity(self.opacity) for i in self.graphicsitems: i.setOpacity(self.opacity)