parent
2badbb023c
commit
3368c17dc2
@ -0,0 +1,86 @@
|
||||
from core.node import Node, Vector2D, Transform2D
|
||||
from pygame import Surface
|
||||
|
||||
class CanvasItem(Node):
|
||||
|
||||
def __init__(self, name: str = ""):
|
||||
super().__init__(name)
|
||||
self._transform = Transform2D()
|
||||
self._visible = True
|
||||
self._z_index = 0
|
||||
|
||||
def _draw(self, surface: Surface):
|
||||
if self._visible:
|
||||
self.draw(surface)
|
||||
for child in self.children:
|
||||
if isinstance(child, CanvasItem):
|
||||
child._draw(surface)
|
||||
|
||||
@property
|
||||
def transform(self) -> Transform2D:
|
||||
return self._transform
|
||||
|
||||
@property
|
||||
def global_transform(self) -> Transform2D:
|
||||
if self.parent and isinstance(self.parent, CanvasItem):
|
||||
return self.parent.global_transform.multiply(self.transform)
|
||||
return self.transform
|
||||
|
||||
@transform.setter
|
||||
def transform(self, transform: Transform2D):
|
||||
self._transform = transform
|
||||
|
||||
@property
|
||||
def position(self) -> Vector2D:
|
||||
return self._transform.position
|
||||
|
||||
@property
|
||||
def global_position(self) -> Vector2D:
|
||||
return self.global_transform.position
|
||||
|
||||
@position.setter
|
||||
def position(self, position: Vector2D):
|
||||
self._transform.position = position
|
||||
|
||||
@property
|
||||
def rotation(self) -> float:
|
||||
return self._transform.rotation
|
||||
|
||||
@property
|
||||
def global_rotation(self) -> float:
|
||||
return self.global_transform.rotation
|
||||
|
||||
@rotation.setter
|
||||
def rotation(self, rotation: float):
|
||||
self._transform.rotation = rotation
|
||||
|
||||
@property
|
||||
def scale(self) -> Vector2D:
|
||||
return self._transform.scale
|
||||
|
||||
@property
|
||||
def global_scale(self) -> Vector2D:
|
||||
return self.global_transform.scale
|
||||
|
||||
@scale.setter
|
||||
def scale(self, scale: Vector2D):
|
||||
self._transform.scale = scale
|
||||
|
||||
def draw(self, surface: Surface):
|
||||
pass
|
||||
|
||||
@property
|
||||
def visible(self) -> bool:
|
||||
return self._visible
|
||||
|
||||
@visible.setter
|
||||
def visible(self, visible: bool):
|
||||
self._visible = visible
|
||||
|
||||
@property
|
||||
def z_index(self) -> int:
|
||||
return self._z_index
|
||||
|
||||
@z_index.setter
|
||||
def z_index(self, z_index: int):
|
||||
self._z_index = z_index
|
||||
Loading…
Reference in new issue