Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
ModernTokenCatalog.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "DataBanks.hpp"
4
5#include <array>
6#include <cstdint>
7#include <optional>
8#include <string_view>
9
10namespace monopoly::data
11{
13 {
14 std::uint8_t token{};
15 std::string_view slug;
16 std::string_view relativeGlbPath;
17 // Authoring calibration. Existing six tokens are height-matched to a
18 // representative retail HMD; missing assets keep the board-scale seed
19 // until they are authored and measured.
20 float unitsPerMeter{20.25F};
21 float yawDegrees{-90.0F};
22 std::array<float, 3> localOffset{};
24 };
25
26 inline constexpr std::size_t ModernTokenCount = 11;
27
28 [[nodiscard]] const std::array<
32
33 // Maps every retail HMD representation of a playable token to its logical
34 // token index. Shadows, dice, trucks and other neighboring HMDs are excluded.
35 [[nodiscard]] std::optional<std::uint8_t>
37
40
43
44 // One known HMD DataId per retail token, used only to trigger optional
45 // modern-asset preloading. Runtime animation variants still route through
46 // tokenForLegacyMesh().
49
52
53 // Complete-sequence qualification for static glTF geometry. CNK timing,
54 // visibility and world transforms stay authoritative. Unknown movement
55 // roots and tokens with shape-changing idle frames retain retail meshes.
56 // Movement eligibility is an explicit reviewed root/representative-HMD
57 // whitelist; an idle-safe token does not qualify all of its movement.
59 std::optional<DataId> rootSequenceDataId, std::uint16_t priority) noexcept;
60}
std::uint16_t priority
unsigned index
int token
std::uint32_t DataId
Definition DataBanks.hpp:10
const ModernTokenDefinition * modernTokenForLegacyMesh(DataId id) 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