8 constexpr std::array<ModernTokenDefinition, ModernTokenCount>
10 {0,
"cannon",
"assets/modern/tokens/cannon.glb", 430.65547F, -90.0F, {-5.0F, 0.0F, 23.23071F},
true},
11 {1,
"race_car",
"assets/modern/tokens/race_car.glb", 122.94F, -90.0F, {-2.0F, 0.0F, 13.02F},
true},
12 {2,
"dog",
"assets/modern/tokens/dog.glb", 154.80F, 90.0F, {-0.5F, 0.0F, -15.05967734F},
false},
13 {3,
"top_hat",
"assets/modern/tokens/top_hat.glb", 86.15F, -90.0F, {},
true},
14 {4,
"iron",
"assets/modern/tokens/iron.glb", 135.72687F, -90.0F, {0.5F, 0.0F, -6.49181F},
true},
15 {5,
"horse",
"assets/modern/tokens/horse.glb", 211.87215F, -90.0F, {-1.0F, 1.0F, -4.84202F},
false},
16 {6,
"ship",
"assets/modern/tokens/ship.glb", 87.55F, -90.0F, {0.0F, 0.0F, 6.63F},
true},
17 {7,
"boot",
"assets/modern/tokens/boot.glb", 181.06F, -90.0F, {0.0F, 0.0F, 25.94F},
true},
18 {8,
"thimble",
"assets/modern/tokens/thimble.glb", 130.89F, -90.0F, {},
true},
19 {9,
"wheelbarrow",
"assets/modern/tokens/wheelbarrow.glb", 239.07104F, -90.0F, {0.0F, 0.0F, 14.84771F},
true},
20 {10,
"moneybag",
"assets/modern/tokens/moneybag.glb", 275.57889F, -90.0F, {-1.44884F, -4.0F, -6.0F},
true},
31 const std::array<ModernTokenDefinition, ModernTokenCount>&
38 std::optional<std::uint8_t>
49 if (
inRange(tag, 0x0006, 0x000D))
return std::uint8_t{10};
50 if (
inRange(tag, 0x000E, 0x0017))
return std::uint8_t{9};
51 if (
inRange(tag, 0x0018, 0x0022))
return std::uint8_t{6};
52 if (
inRange(tag, 0x0023, 0x0031))
return std::uint8_t{0};
53 if (
inRange(tag, 0x0032, 0x0036))
return std::uint8_t{1};
54 if (
inRange(tag, 0x0038, 0x008C))
return std::uint8_t{2};
55 if (
inRange(tag, 0x008D, 0x0093))
return std::uint8_t{3};
56 if (
inRange(tag, 0x0094, 0x00AC))
return std::uint8_t{5};
57 if (
inRange(tag, 0x00AD, 0x00B3))
return std::uint8_t{4};
58 if (
inRange(tag, 0x00BF, 0x00CB))
return std::uint8_t{7};
59 if (
inRange(tag, 0x00CC, 0x00D1))
return std::uint8_t{8};
62 return std::uint8_t{9};
68 const ModernTokenDefinition*
77 const ModernTokenDefinition*
87 constexpr std::array<DataTag, ModernTokenCount>
tags{{
108 constexpr std::uint32_t
MoveBase = 0x010D;
120 std::optional<DataId> rootSequenceDataId, std::uint16_t
priority)
noexcept
123 if (!definition || !definition->staticIdleReplacement || !rootSequenceDataId)
constexpr DataId EmptyDataId
constexpr DataTag dataTag(DataId id) noexcept
const ModernTokenDefinition * modernTokenForLegacyMesh(DataId id) noexcept
constexpr std::uint16_t legacyGroupValue(LegacyGroupId group) noexcept
const std::array< ModernTokenDefinition, ModernTokenCount > & modernTokenDefinitions() noexcept
bool qualifiedModernTokenSequence(DataId meshId, std::optional< DataId > rootSequenceDataId, std::uint16_t priority) noexcept
DataId representativeLegacyMesh(std::uint8_t token) noexcept
DataId idleSequenceDataId(std::uint8_t token) noexcept
const ModernTokenDefinition * modernTokenDefinition(std::uint8_t token) noexcept
constexpr std::size_t ModernTokenCount
std::optional< std::uint8_t > tokenForLegacyMesh(DataId id) noexcept
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
constexpr std::uint16_t dataGroup(DataId id) noexcept
constexpr std::uint16_t Generic3DPriority
constexpr std::uint16_t TokenPriority
constexpr PlayerNumber MaxPlayers