Porytiles
Loading...
Searching...
No Matches
porytiles::PerAnimOverride Struct Reference

Per-animation configuration override for animation decompilation. More...

#include <per_anim_override.hpp>

Collaboration diagram for porytiles::PerAnimOverride:
[legend]

Public Attributes

std::string anim_name
 
ConfigPODField< AnimPalResolutionStrategypal_resolution_strategy
 
std::vector< ConfigPODField< AnimPalResolutionStrategy > > per_tile_pal_resolution_strategies
 
ConfigPODField< AnimKeyFrameResolutionStrategykey_frame_resolution_strategy
 
ConfigPODField< AnimMultiPalSubtileResolutionStrategymulti_pal_subtile_resolution_strategy
 
ConfigPODField< FrameLinkinglinking
 

Detailed Description

Per-animation configuration override for animation decompilation.

Holds palette resolution configuration, key frame resolution strategy, and a frame linking mode for a single animation. Palette resolution follows a three-tier cascade (most specific wins):

  1. Per-tile (per_tile_pal_resolution_strategies): most specific. When non-empty, its length must exactly match the animation's tile_count. Each entry can be empty (no value) to fall through to the next tier.
  2. Per-anim (pal_resolution_strategy): middle tier. A single strategy applied to all subtiles of this animation that are not overridden by a per-tile entry.
  3. Global (palette_resolution_strategy from DomainConfig): least specific fallback.

Key frame resolution also supports a two-tier cascade: per-anim key_frame_resolution_strategy wins, otherwise falls back to key_frame_resolution_strategy from DomainConfig.

Multi-palette subtile resolution follows the same two-tier cascade: per-anim multi_pal_subtile_resolution_strategy wins, otherwise falls back to multi_pal_subtile_resolution_strategy from DomainConfig.

Frame linking also follows the same two-tier cascade: per-anim wins, otherwise falls back to the global setting.

Override fields use ConfigPODField<T> instead of std::optional<T> to carry provider-specific source metadata (source_key, canonical_name) set at parse time, enabling ConfigValue::derive() to construct properly attributed child values without hardcoding provider formats.

Definition at line 40 of file per_anim_override.hpp.

Member Data Documentation

◆ anim_name

std::string porytiles::PerAnimOverride::anim_name

Definition at line 41 of file per_anim_override.hpp.

◆ key_frame_resolution_strategy

ConfigPODField<AnimKeyFrameResolutionStrategy> porytiles::PerAnimOverride::key_frame_resolution_strategy

Definition at line 44 of file per_anim_override.hpp.

◆ linking

ConfigPODField<FrameLinking> porytiles::PerAnimOverride::linking

Definition at line 46 of file per_anim_override.hpp.

◆ multi_pal_subtile_resolution_strategy

ConfigPODField<AnimMultiPalSubtileResolutionStrategy> porytiles::PerAnimOverride::multi_pal_subtile_resolution_strategy

Definition at line 45 of file per_anim_override.hpp.

◆ pal_resolution_strategy

ConfigPODField<AnimPalResolutionStrategy> porytiles::PerAnimOverride::pal_resolution_strategy

Definition at line 42 of file per_anim_override.hpp.

◆ per_tile_pal_resolution_strategies

std::vector<ConfigPODField<AnimPalResolutionStrategy> > porytiles::PerAnimOverride::per_tile_pal_resolution_strategies

Definition at line 43 of file per_anim_override.hpp.


The documentation for this struct was generated from the following file: