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