Source code for RWESharp.Modify.Module

from __future__ import annotations
from typing import TYPE_CHECKING
from abc import ABC
from PySide6.QtCore import QRect
if TYPE_CHECKING:
    from RWESharp.Renderable.Renderable import Renderable
    from RWESharp.widgets import ViewPort
    from RWESharp.Level.RWELevel import RWELevel
    from BaseMod.baseMod import BaseMod


[docs] class Module(ABC): """ Module for passive editor and viewport work """
[docs] def __init__(self, mod): self.mod = mod self.manager = mod.manager self.renderables: list[Renderable] = [] self.viewport: ViewPort | None = None
[docs] def level_resized(self, newrect: QRect): """ Called once level is resized """ for i in self.renderables: i.level_resized(newrect)
[docs] def add_renderable(self, renderable: Renderable): if renderable not in self.renderables: self.renderables.append(renderable) if renderable.viewport is not None and not renderable.is_initiated_grapgics: renderable.init_graphics(self.viewport) renderable.post_init_graphics(self.viewport) renderable.move_event() renderable.zoom_event()
[docs] def add_myself(self, viewport: ViewPort, name=None): self.viewport = viewport viewport.add_module(self, name) return self
[docs] def zoom_event(self): for i in self.renderables: i.zoom_event()
[docs] def move_event(self): for i in self.renderables: i.move_event()
[docs] def init_scene_items(self, viewport): """ Called when editor is changed, should add Renderables to scene :return: """
[docs] def remove_items_from_scene(self, viewport): """ Called when editor is changed, should remove anything it doesn't need :return: None """
@property def basemod(self) -> BaseMod: return self.manager.basemod @property def level(self) -> RWELevel: return self.viewport.level @property def zoom(self) -> float: return self.viewport.zoom @property def layer(self): return self.manager.layer.value