Skip to content

Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:15

Sidecar JSON for a sprite atlas image. STRICT superset of TexturePacker’s JSON-Hash format AND Aseprite’s JSON export — every file emitted by either validates here. The root keys are frames + meta only (matching TP/Aseprite); all our additions live under meta because meta is the open extension bucket (additionalProperties: true). Aseprite’s meta.frameTags / meta.layers / meta.slices validate as-is; we add meta.animations (richer than frameTags — explicit fps, arbitrary frame-name selection, per-frame events) without conflicting with the Aseprite shape. Tool-specific extensions (our meta.app / meta.version / meta.sources / meta.normal) ride along the same way. meta requires at least one of sources or image: our atlas tool emits sources (multiple encodings — png, webp, avif, ktx2 — each a format + URI), while raw TexturePacker/Aseprite exports carry the legacy single-file meta.image string. Readers prefer sources when present and fall back to image.

optional $schema?: string

Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:16


frames: object

Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:23

[k: string]: Frame


meta: MetaBase & object

Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:20

Requires at least one of sources or image (see $defs/MetaBase). The anyOf sits alongside a $ref rather than inline on MetaBase itself — nesting a bare combinator next to properties collapses object-property codegen (json-schema-to-typescript) to an index signature, which would erase every typed meta.* field including animations.