dreamcast/x/templates.py
2025-02-18 17:55:54 -06:00

127 lines
1.9 KiB
Python

from typing import Any, Union
from dataclasses import dataclass
# untagged objects
@dataclass
class ColorRGBA:
r: float
g: float
b: float
a: float
@dataclass
class ColorRGB:
r: float
g: float
b: float
@dataclass
class Matrix4x4:
v: list[float]
@dataclass
class Vector:
x: float
y: float
z: float
@dataclass
class MeshFace:
nFaceVertexIndices: int
faceVertexIndices: list[int]
@dataclass
class Coords2D:
u: float
v: float
@dataclass
class Reference:
name: bytes
@dataclass
class FloatKeys:
nValues: int
values: list[float]
@dataclass
class TimedFloatKeys:
time: int
tfkeys: FloatKeys
# tagged objects
@dataclass
class Header:
major: int
minor: int
flags: int
@dataclass
class Material:
faceColor: ColorRGBA
power: float
specularColor: ColorRGB
emissiveColor: ColorRGB
objects: list[Any]
@dataclass
class TextureFilename:
filename: str
@dataclass
class Frame:
objects: list[Any]
@dataclass
class FrameTransformMatrix:
frameMatrix: Matrix4x4
@dataclass
class Mesh:
nVertices: int
vertices: list[Vector]
nFaces: int
faces: list[MeshFace]
objects: list[Any]
@dataclass
class MeshMaterialList:
nMaterials: int
nFaceIndices: int
faceIndices: list[int]
objects: list[Material]
@dataclass
class MeshNormals:
nNormals: int
normals: list[Vector]
nFaceNormals: int
faceNormals: list[MeshFace]
@dataclass
class MeshTextureCoords:
nTextureCoords: int
textureCoords: list[Coords2D]
@dataclass
class AnimationKey:
keyType: int
nKeys: int
keys: list[TimedFloatKeys]
@dataclass
class AnimationOptions:
openClosed: int
positionQuality: int
@dataclass
class Animation:
objects: list[Union[Reference, AnimationKey, AnimationOptions]]
@dataclass
class AnimationSet:
objects: list[Animation]