Files
rigid-body/transform.py
2026-03-11 16:07:40 -04:00

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)