38 lines
897 B
Python
38 lines
897 B
Python
from dataclasses import dataclass
|
|
from math import pi
|
|
|
|
import pygame as pg
|
|
|
|
@dataclass
|
|
class Transform:
|
|
|
|
position: pg.Vector2
|
|
rotation: float = 0.0
|
|
scale: float = 1.0
|
|
parent: 'Transform' = None
|
|
|
|
@property
|
|
def global_position(self):
|
|
if self.parent is None:
|
|
return self.position
|
|
return self.position + self.parent.global_position
|
|
|
|
@property
|
|
def global_rotation(self):
|
|
if self.parent is None:
|
|
return self.rotation
|
|
return self.position + self.parent.global_rotation
|
|
|
|
@property
|
|
def global_scale(self):
|
|
if self.parent is None:
|
|
return self.scale
|
|
return self.scale * self.parent.global_scale
|
|
|
|
@property
|
|
def global_degrees(self):
|
|
return self.global_rotation * (180.0 / pi)
|
|
|
|
@property
|
|
def degrees(self):
|
|
return self.rotation * (180.0 / pi) |