127 lines
1.9 KiB
Python
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]
|