Source code for scfile.content.models.enums

"""Model enumerations."""

from enum import IntEnum, StrEnum, auto


[docs] class Feature(StrEnum): """Optional model feature.""" UV = auto() UV2 = auto() NORMALS = auto() TANGENTS = auto() COLORS = auto() SKELETON = auto() BLEND_SHAPES = auto() ANIMATION = auto() BONE_ANIMATION = auto() MORPH_ANIMATION = auto() @property def members(self) -> tuple["Feature", ...]: """Concrete features represented by this feature.""" if self is Feature.ANIMATION: return ( Feature.BONE_ANIMATION, Feature.MORPH_ANIMATION, ) return (self,) @property def requires(self) -> tuple["Feature", ...]: """Features required to serialize this feature.""" if self is Feature.BONE_ANIMATION: return (Feature.SKELETON,) return () @property def parent(self) -> "Feature": """Parent feature used for shared behavior.""" if self in Feature.ANIMATION.members: return Feature.ANIMATION return self
[docs] class ModelUnits(IntEnum): """Model structure element counts.""" POSITIONS = 4 TEXTURES = 2 NORMALS = 4 TANGENTS = 4 TRIANGLES = 3 QUADS = 4 LINKS = 4 BONES = 6 FRAMES = 7
[docs] class UVOrigin(StrEnum): """UV coordinate origin.""" TOP_LEFT = auto() BOTTOM_LEFT = auto()
[docs] class UVSign(StrEnum): """UV coordinate sign.""" POSITIVE = auto() NEGATIVE = auto()
[docs] class LinkSpace(StrEnum): """Vertex link coordinate space.""" GLOBAL = auto() LOCAL = auto()
[docs] class SkeletonSpace(StrEnum): """Skeleton bones coordinate space.""" GLOBAL = auto() LOCAL = auto()
[docs] class AnimationTranslation(StrEnum): """Animation translation mode.""" DELTA = auto() ABSOLUTE = auto()
[docs] class AnimationRotation(StrEnum): """Animation rotation format.""" QUATERNION = auto() EULER = auto()