diff --git a/pydot/core/scene.py b/pydot/core/scene.py new file mode 100644 index 0000000..bb7453a --- /dev/null +++ b/pydot/core/scene.py @@ -0,0 +1,88 @@ +from node import Node +from typing import Optional, List +from pygame import time, Surface + +""" +class Scene(Node): + def __init__(self, root: Node): + super().__init__() + self.is_active = True + + def active(self): + self.is_active = True + + def deactivate(self): + self.is_active = False + + def is_active(self): + return self.is_active + + def _draw(self, surface: Surface): + if self.is_active: + for child in self.children: + if isinstance(child, Node2D): + child._draw(surface) + + def draw(self, surface: Surface): + self._draw(surface) +""" + +class SceneTree: + + def __init__(self, initial_scene: Node = None): + self.root: Optional[Node] = None + self.current_scene: Optional[Node] = initial_scene + self._nodes_to_process: List[Node] = [] + self._nodes_to_add: List[Node] = [] + self._nodes_to_delete: List[Node] = [] + # self._physics_nodes: List[Node] = [] + + self._running = False + self.timer: time.Clock = time.Clock() + + def start(self, initial_scene: Node = None): + self.root = Node("Root") + self.current_scene = initial_scene if initial_scene else self.root\ + if self.current_scene is None else self.current_scene + + self.root.add_child(self.current_scene) + self.root.add_child(self.current_scene) + + self.root._enter_tree() + self.root._ready() + + self._running = True + + def change_scene(self, scene): + self._running = False + self.current_scene = scene + self.root = scene.root + self._running = True + + def _process(self, delta: float): + + pass + + def process(self, delta: float): + self.root._process(delta) + + """ + def physics_process(self, delta: float): + self.root._physics_process(delta) + """ + + def update(self): + for node in self._nodes_to_process: + node.process() + + def queue_delete(self, node: str): + node = self.root.get_node(node) + if node is None: + return + if node in self._nodes_to_delete: + return + if node in self._nodes_to_process: + self._nodes_to_process.remove(node) + self._nodes_to_delete.append(node) + if node in self._nodes_to_add: + self._nodes_to_add.remove(node) \ No newline at end of file