19 constexpr std::array<ModernTokenVariantDefinition, 2>
ShipVariants{{
20 {
ShipRest,
"tokens/ship_variants/rest.glb"},
22 constexpr std::array<ModernTokenVariantDefinition, 4>
DogVariants{{
27 constexpr std::array<ModernTokenVariantDefinition, 6>
HorseVariants{{
39 struct FrameDefinition {
float units;
float yaw; std::array<float, 3>
offset; };
40 constexpr std::array<FrameDefinition, 9>
Frames{{
41 {122.94F, -90.0F, {-2.0F, 0.0F, 13.02F}},
42 {154.8F, 90.0F, {-0.5F, 0.0F, -15.05967734F}},
43 {86.15F, -90.0F, {0.0F, 0.0F, 0.0F}},
44 {87.55F, -90.0F, {0.0F, 0.0F, 6.63F}},
45 {181.06F, -90.0F, {0.0F, 0.0F, 25.94F}},
46 {130.89F, -90.0F, {0.0F, 0.0F, 0.0F}},
47 {211.87215F, -90.0F, {-1.0F, 1.0F, -4.8420224136F}},
48 {275.57889F, -90.0F, {-1.44884F, -4.0F, -6.0F}},
49 {135.72687F, -90.0F, {0.5F, 0.0F, -6.49181F}},
52 {{0x00080006,
"tokens/moneybag_variants/pose_0006.glb"}, 7,
false},
53 {{0x00080007,
"tokens/moneybag_variants/pose_0007.glb"}, 7,
false},
54 {{0x0008000C,
"tokens/moneybag_variants/pose_000c.glb"}, 7,
false},
55 {{0x0008000D,
"tokens/moneybag_variants/pose_000d.glb"}, 7,
false},
56 {{0x00080018,
"tokens/ship_variants/rest.glb"}, 3,
true},
57 {{0x00080019,
"tokens/ship_variants/pose_0019.glb"}, 3,
false},
58 {{0x0008001B,
"tokens/ship_variants/squash.glb"}, 3,
true},
59 {{0x0008001C,
"tokens/ship_variants/pose_001c.glb"}, 3,
false},
60 {{0x0008001D,
"tokens/ship_variants/pose_001d.glb"}, 3,
false},
61 {{0x0008001E,
"tokens/ship_variants/pose_001e.glb"}, 3,
false},
62 {{0x00080032,
"tokens/race_car_variants/pose_0032.glb"}, 0,
false},
63 {{0x00080033,
"tokens/race_car_variants/pose_0033.glb"}, 0,
false},
64 {{0x00080034,
"tokens/race_car_variants/pose_0034.glb"}, 0,
false},
65 {{0x00080035,
"tokens/race_car_variants/pose_0035.glb"}, 0,
false},
66 {{0x00080036,
"tokens/race_car_variants/pose_0036.glb"}, 0,
false},
67 {{0x00080038,
"tokens/dog_variants/pose_0038.glb"}, 1,
false},
68 {{0x0008003A,
"tokens/dog_variants/pose_003a.glb"}, 1,
false},
69 {{0x00080040,
"tokens/dog_variants/idle_0040.glb"}, 1,
false},
70 {{0x00080041,
"tokens/dog_variants/idle_0041.glb"}, 1,
false},
71 {{0x00080042,
"tokens/dog_variants/idle_0042.glb"}, 1,
false},
72 {{0x00080043,
"tokens/dog_variants/idle_0043.glb"}, 1,
false},
73 {{0x00080044,
"tokens/dog_variants/pose_0044.glb"}, 1,
false},
74 {{0x00080045,
"tokens/dog_variants/pose_0045.glb"}, 1,
false},
75 {{0x00080046,
"tokens/dog_variants/pose_0046.glb"}, 1,
false},
76 {{0x0008004C,
"tokens/dog_variants/pose_004c.glb"}, 1,
false},
77 {{0x0008004D,
"tokens/dog_variants/pose_004d.glb"}, 1,
false},
78 {{0x0008004E,
"tokens/dog_variants/pose_004e.glb"}, 1,
false},
79 {{0x0008004F,
"tokens/dog_variants/pose_004f.glb"}, 1,
false},
80 {{0x00080050,
"tokens/dog_variants/pose_0050.glb"}, 1,
false},
81 {{0x00080051,
"tokens/dog_variants/pose_0051.glb"}, 1,
false},
82 {{0x0008005C,
"tokens/dog_variants/pose_005c.glb"}, 1,
false},
83 {{0x0008005D,
"tokens/dog_variants/pose_005d.glb"}, 1,
false},
84 {{0x0008005F,
"tokens/dog_variants/pose_005f.glb"}, 1,
false},
85 {{0x00080063,
"tokens/dog_variants/pose_0063.glb"}, 1,
false},
86 {{0x00080064,
"tokens/dog_variants/pose_0064.glb"}, 1,
false},
87 {{0x00080065,
"tokens/dog_variants/pose_0065.glb"}, 1,
false},
88 {{0x0008006A,
"tokens/dog_variants/pose_006a.glb"}, 1,
false},
89 {{0x0008006B,
"tokens/dog_variants/pose_006b.glb"}, 1,
false},
90 {{0x0008006C,
"tokens/dog_variants/pose_006c.glb"}, 1,
false},
91 {{0x0008006D,
"tokens/dog_variants/pose_006d.glb"}, 1,
false},
92 {{0x00080087,
"tokens/dog_variants/pose_0087.glb"}, 1,
false},
93 {{0x0008008D,
"tokens/top_hat_variants/pose_008d.glb"}, 2,
false},
94 {{0x00080090,
"tokens/top_hat_variants/pose_0090.glb"}, 2,
false},
95 {{0x00080091,
"tokens/top_hat_variants/pose_0091.glb"}, 2,
false},
96 {{0x00080094,
"tokens/horse_variants/idle_0094.glb"}, 6,
false},
97 {{0x00080097,
"tokens/horse_variants/pose_0097.glb"}, 6,
false},
98 {{0x000800A8,
"tokens/horse_variants/idle_00a8.glb"}, 6,
false},
99 {{0x000800A9,
"tokens/horse_variants/idle_00a9.glb"}, 6,
false},
100 {{0x000800AA,
"tokens/horse_variants/idle_00aa.glb"}, 6,
false},
101 {{0x000800AB,
"tokens/horse_variants/idle_00ab.glb"}, 6,
false},
102 {{0x000800AC,
"tokens/horse_variants/idle_00ac.glb"}, 6,
false},
103 {{0x000800AD,
"tokens/iron_variants/pose_00ad.glb"}, 8,
false},
104 {{0x000800AE,
"tokens/iron_variants/pose_00ae.glb"}, 8,
false},
105 {{0x000800AF,
"tokens/iron_variants/pose_00af.glb"}, 8,
false},
106 {{0x000800BF,
"tokens/boot_variants/pose_00bf.glb"}, 4,
false},
107 {{0x000800C0,
"tokens/boot_variants/pose_00c0.glb"}, 4,
false},
108 {{0x000800C1,
"tokens/boot_variants/pose_00c1.glb"}, 4,
false},
109 {{0x000800C6,
"tokens/boot_variants/pose_00c6.glb"}, 4,
false},
110 {{0x000800C8,
"tokens/boot_variants/pose_00c8.glb"}, 4,
false},
111 {{0x000800C9,
"tokens/boot_variants/pose_00c9.glb"}, 4,
false},
112 {{0x000800CB,
"tokens/boot_variants/pose_00cb.glb"}, 4,
false},
113 {{0x000800CC,
"tokens/thimble_variants/pose_00cc.glb"}, 5,
false},
114 {{0x000800CE,
"tokens/thimble_variants/pose_00ce.glb"}, 5,
false},
117 0x00080032, 0x00080033, 0x00080036, 0x00080032, 0x00080033, 0x00080036, 0x00080032, 0x00080033,
118 0x00080036, 0x00080032, 0x00080033, 0x00080034, 0x00080036, 0x00080032, 0x00080033, 0x00080034,
119 0x00080036, 0x00080032, 0x00080034, 0x00080032, 0x00080035, 0x00080036, 0x00080032, 0x00080032,
120 0x00080033, 0x00080033, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080032, 0x00080032,
121 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080035, 0x00080036, 0x00080032,
122 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080033,
123 0x00080034, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080033, 0x00080034, 0x00080032,
124 0x00080033, 0x00080034, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080033, 0x00080034,
125 0x00080036, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080033, 0x00080034, 0x00080032,
126 0x00080033, 0x00080034, 0x00080035, 0x00080036, 0x00080032, 0x00080033, 0x00080034, 0x00080032,
127 0x00080033, 0x00080034, 0x00080036, 0x00080032, 0x00080033, 0x00080034, 0x00080032, 0x00080036,
128 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080032,
129 0x00080032, 0x00080036, 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080032,
130 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032,
131 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080032, 0x00080032, 0x00080036, 0x00080032,
132 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032,
133 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080032, 0x00080032, 0x00080036,
134 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080032, 0x00080032, 0x00080032,
135 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032,
136 0x00080032, 0x00080032, 0x00080035, 0x00080032, 0x00080035, 0x00080032, 0x00080032, 0x00080032,
137 0x00080032, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032,
138 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080036, 0x00080032, 0x00080035, 0x00080032,
139 0x00080035, 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080032, 0x00080033, 0x00080034,
140 0x00080032, 0x00080033, 0x00080034, 0x00080038, 0x00080064, 0x00080065, 0x00080041, 0x00080042,
141 0x00080038, 0x0008004C, 0x0008004D, 0x00080050, 0x00080051, 0x00080038, 0x00080040, 0x00080041,
142 0x00080042, 0x00080043, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
143 0x00080090, 0x0008008D, 0x0008008D, 0x0008008D, 0x00080090, 0x00080091, 0x0008008D, 0x0008008D,
144 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x00080090,
145 0x00080091, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
146 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x00080090, 0x00080091, 0x0008008D,
147 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
148 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
149 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
150 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
151 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
152 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
153 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
154 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D, 0x0008008D,
155 0x0008008D, 0x0008008D, 0x0008008D, 0x000800AD, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD,
156 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF,
157 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AF, 0x000800AD, 0x000800AF, 0x000800AD, 0x000800AE,
158 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AF, 0x000800AD, 0x000800AF,
159 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AF, 0x000800AD, 0x000800AF,
160 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE,
161 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD,
162 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF,
163 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AD,
164 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD, 0x000800AE, 0x000800AF,
165 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
166 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
167 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
168 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
169 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
170 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
171 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD,
172 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AD, 0x000800AE, 0x000800AF, 0x000800AD,
173 0x000800AE, 0x000800AF, 0x00080094, 0x00080097, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
174 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
175 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x000800A8, 0x000800A9, 0x000800AA, 0x000800AB,
176 0x000800AC, 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094,
177 0x00080097, 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094,
178 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094, 0x00080097, 0x00080094, 0x00080097,
179 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
180 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
181 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
182 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
183 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
184 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
185 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080094,
186 0x00080094, 0x00080094, 0x00080094, 0x00080094, 0x00080018, 0x00080018, 0x0008001B, 0x00080018,
187 0x0008001B, 0x00080018, 0x0008001B, 0x00080018, 0x0008001B, 0x00080018, 0x00080018, 0x00080018,
188 0x00080018, 0x0008001B, 0x0008001C, 0x00080018, 0x0008001C, 0x00080018, 0x0008001B, 0x0008001C,
189 0x00080018, 0x00080019, 0x00080018, 0x00080018, 0x00080018, 0x00080019, 0x0008001B, 0x00080018,
190 0x00080019, 0x00080018, 0x00080019, 0x00080018, 0x0008001D, 0x00080018, 0x0008001D, 0x0008001E,
191 0x00080018, 0x0008001D, 0x00080018, 0x00080018, 0x0008001B, 0x00080018, 0x00080018, 0x0008001B,
192 0x00080018, 0x0008001B, 0x00080018, 0x0008001B, 0x00080018, 0x0008001B, 0x00080018, 0x00080018,
193 0x0008001B, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x0008001B, 0x00080018,
194 0x0008001B, 0x00080018, 0x0008001B, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
195 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
196 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
197 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
198 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
199 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
200 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
201 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018, 0x00080018,
202 0x0008001B, 0x00080018, 0x0008001B, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800C1,
203 0x000800BF, 0x000800C0, 0x000800C1, 0x000800BF, 0x000800C0, 0x000800C1, 0x000800BF, 0x000800C0,
204 0x000800C1, 0x000800BF, 0x000800C8, 0x000800C9, 0x000800BF, 0x000800C8, 0x000800BF, 0x000800C0,
205 0x000800BF, 0x000800C0, 0x000800BF, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800BF, 0x000800BF,
206 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800BF, 0x000800C8, 0x000800C8, 0x000800BF,
207 0x000800C8, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF,
208 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF,
209 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800C1,
210 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
211 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
212 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
213 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
214 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
215 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
216 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
217 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
218 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
219 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
220 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
221 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
222 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
223 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
224 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0,
225 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800BF, 0x000800C0, 0x000800CC, 0x000800CC,
226 0x000800CC, 0x000800CC, 0x000800CC, 0x000800CC, 0x00080006, 0x00080006, 0x00080006, 0x00080006,
227 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006,
228 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080006, 0x00080007,
229 0x0008000D, 0x00080006, 0x00080007, 0x0008000D, 0x00080006, 0x00080007, 0x0008000D, 0x00080006,
230 0x00080007, 0x0008000D,
232 constexpr std::array<ModernTokenVariantRootDefinition, 608>
RootDefinitions{{
233 {0x00080159, std::span<const DataId>(
RequiredMeshes.data() + 0, 3),
false},
234 {0x0008015A, std::span<const DataId>(
RequiredMeshes.data() + 3, 3),
false},
235 {0x0008015B, std::span<const DataId>(
RequiredMeshes.data() + 6, 3),
false},
236 {0x0008015C, std::span<const DataId>(
RequiredMeshes.data() + 9, 4),
false},
237 {0x0008015D, std::span<const DataId>(
RequiredMeshes.data() + 13, 4),
false},
238 {0x0008015E, std::span<const DataId>(
RequiredMeshes.data() + 17, 2),
false},
239 {0x0008015F, std::span<const DataId>(
RequiredMeshes.data() + 19, 3),
false},
240 {0x00080160, std::span<const DataId>(
RequiredMeshes.data() + 22, 1),
false},
241 {0x00080161, std::span<const DataId>(
RequiredMeshes.data() + 23, 2),
false},
242 {0x00080162, std::span<const DataId>(
RequiredMeshes.data() + 25, 1),
false},
243 {0x00080163, std::span<const DataId>(
RequiredMeshes.data() + 26, 3),
false},
244 {0x00080164, std::span<const DataId>(
RequiredMeshes.data() + 29, 1),
false},
245 {0x00080165, std::span<const DataId>(
RequiredMeshes.data() + 30, 1),
false},
246 {0x00080166, std::span<const DataId>(
RequiredMeshes.data() + 31, 1),
false},
247 {0x00080167, std::span<const DataId>(
RequiredMeshes.data() + 32, 1),
false},
248 {0x00080168, std::span<const DataId>(
RequiredMeshes.data() + 33, 1),
false},
249 {0x00080169, std::span<const DataId>(
RequiredMeshes.data() + 34, 1),
false},
250 {0x0008016A, std::span<const DataId>(
RequiredMeshes.data() + 35, 1),
false},
251 {0x0008016B, std::span<const DataId>(
RequiredMeshes.data() + 36, 3),
false},
252 {0x0008016C, std::span<const DataId>(
RequiredMeshes.data() + 39, 1),
false},
253 {0x0008016D, std::span<const DataId>(
RequiredMeshes.data() + 40, 1),
false},
254 {0x0008016E, std::span<const DataId>(
RequiredMeshes.data() + 41, 1),
false},
255 {0x0008016F, std::span<const DataId>(
RequiredMeshes.data() + 42, 1),
false},
256 {0x00080171, std::span<const DataId>(
RequiredMeshes.data() + 43, 3),
false},
257 {0x00080172, std::span<const DataId>(
RequiredMeshes.data() + 46, 3),
false},
258 {0x00080173, std::span<const DataId>(
RequiredMeshes.data() + 49, 3),
false},
259 {0x00080174, std::span<const DataId>(
RequiredMeshes.data() + 52, 3),
false},
260 {0x00080175, std::span<const DataId>(
RequiredMeshes.data() + 55, 3),
false},
261 {0x00080176, std::span<const DataId>(
RequiredMeshes.data() + 58, 3),
false},
262 {0x00080177, std::span<const DataId>(
RequiredMeshes.data() + 61, 4),
false},
263 {0x00080178, std::span<const DataId>(
RequiredMeshes.data() + 65, 3),
false},
264 {0x00080179, std::span<const DataId>(
RequiredMeshes.data() + 68, 3),
false},
265 {0x0008017A, std::span<const DataId>(
RequiredMeshes.data() + 71, 5),
false},
266 {0x0008017B, std::span<const DataId>(
RequiredMeshes.data() + 76, 3),
false},
267 {0x0008017C, std::span<const DataId>(
RequiredMeshes.data() + 79, 4),
false},
268 {0x0008017D, std::span<const DataId>(
RequiredMeshes.data() + 83, 3),
false},
269 {0x0008017E, std::span<const DataId>(
RequiredMeshes.data() + 86, 2),
false},
270 {0x0008017F, std::span<const DataId>(
RequiredMeshes.data() + 88, 2),
false},
271 {0x00080180, std::span<const DataId>(
RequiredMeshes.data() + 90, 2),
false},
272 {0x00080181, std::span<const DataId>(
RequiredMeshes.data() + 92, 2),
false},
273 {0x00080182, std::span<const DataId>(
RequiredMeshes.data() + 94, 1),
false},
274 {0x00080183, std::span<const DataId>(
RequiredMeshes.data() + 95, 1),
false},
275 {0x00080184, std::span<const DataId>(
RequiredMeshes.data() + 96, 2),
false},
276 {0x00080185, std::span<const DataId>(
RequiredMeshes.data() + 98, 1),
false},
277 {0x00080186, std::span<const DataId>(
RequiredMeshes.data() + 99, 1),
false},
278 {0x00080187, std::span<const DataId>(
RequiredMeshes.data() + 100, 1),
false},
279 {0x00080188, std::span<const DataId>(
RequiredMeshes.data() + 101, 1),
false},
280 {0x00080189, std::span<const DataId>(
RequiredMeshes.data() + 102, 1),
false},
281 {0x0008018A, std::span<const DataId>(
RequiredMeshes.data() + 103, 2),
false},
282 {0x0008018B, std::span<const DataId>(
RequiredMeshes.data() + 105, 2),
false},
283 {0x0008018C, std::span<const DataId>(
RequiredMeshes.data() + 107, 2),
false},
284 {0x0008018D, std::span<const DataId>(
RequiredMeshes.data() + 109, 2),
false},
285 {0x0008018E, std::span<const DataId>(
RequiredMeshes.data() + 111, 2),
false},
286 {0x0008018F, std::span<const DataId>(
RequiredMeshes.data() + 113, 2),
false},
287 {0x00080190, std::span<const DataId>(
RequiredMeshes.data() + 115, 1),
false},
288 {0x00080191, std::span<const DataId>(
RequiredMeshes.data() + 116, 1),
false},
289 {0x00080192, std::span<const DataId>(
RequiredMeshes.data() + 117, 2),
false},
290 {0x00080193, std::span<const DataId>(
RequiredMeshes.data() + 119, 2),
false},
291 {0x00080194, std::span<const DataId>(
RequiredMeshes.data() + 121, 2),
false},
292 {0x00080195, std::span<const DataId>(
RequiredMeshes.data() + 123, 2),
false},
293 {0x00080196, std::span<const DataId>(
RequiredMeshes.data() + 125, 2),
false},
294 {0x00080197, std::span<const DataId>(
RequiredMeshes.data() + 127, 1),
false},
295 {0x00080198, std::span<const DataId>(
RequiredMeshes.data() + 128, 2),
false},
296 {0x00080199, std::span<const DataId>(
RequiredMeshes.data() + 130, 2),
false},
297 {0x0008019A, std::span<const DataId>(
RequiredMeshes.data() + 132, 1),
false},
298 {0x0008019B, std::span<const DataId>(
RequiredMeshes.data() + 133, 1),
false},
299 {0x0008019C, std::span<const DataId>(
RequiredMeshes.data() + 134, 2),
false},
300 {0x0008019D, std::span<const DataId>(
RequiredMeshes.data() + 136, 2),
false},
301 {0x0008019E, std::span<const DataId>(
RequiredMeshes.data() + 138, 2),
false},
302 {0x0008019F, std::span<const DataId>(
RequiredMeshes.data() + 140, 1),
false},
303 {0x000801A0, std::span<const DataId>(
RequiredMeshes.data() + 141, 1),
false},
304 {0x000801A1, std::span<const DataId>(
RequiredMeshes.data() + 142, 1),
false},
305 {0x000801A2, std::span<const DataId>(
RequiredMeshes.data() + 143, 2),
false},
306 {0x000801A3, std::span<const DataId>(
RequiredMeshes.data() + 145, 2),
false},
307 {0x000801A4, std::span<const DataId>(
RequiredMeshes.data() + 147, 2),
false},
308 {0x000801A5, std::span<const DataId>(
RequiredMeshes.data() + 149, 2),
false},
309 {0x000801A6, std::span<const DataId>(
RequiredMeshes.data() + 151, 1),
false},
310 {0x000801A7, std::span<const DataId>(
RequiredMeshes.data() + 152, 1),
false},
311 {0x000801A8, std::span<const DataId>(
RequiredMeshes.data() + 153, 2),
false},
312 {0x000801A9, std::span<const DataId>(
RequiredMeshes.data() + 155, 2),
false},
313 {0x000801AA, std::span<const DataId>(
RequiredMeshes.data() + 157, 1),
false},
314 {0x000801AB, std::span<const DataId>(
RequiredMeshes.data() + 158, 1),
false},
315 {0x000801AC, std::span<const DataId>(
RequiredMeshes.data() + 159, 1),
false},
316 {0x000801AD, std::span<const DataId>(
RequiredMeshes.data() + 160, 1),
false},
317 {0x000801AE, std::span<const DataId>(
RequiredMeshes.data() + 161, 2),
false},
318 {0x000801AF, std::span<const DataId>(
RequiredMeshes.data() + 163, 2),
false},
319 {0x000801B0, std::span<const DataId>(
RequiredMeshes.data() + 165, 2),
false},
320 {0x000801B1, std::span<const DataId>(
RequiredMeshes.data() + 167, 2),
false},
321 {0x000801B2, std::span<const DataId>(
RequiredMeshes.data() + 169, 2),
false},
322 {0x000801B3, std::span<const DataId>(
RequiredMeshes.data() + 171, 2),
false},
323 {0x000801B4, std::span<const DataId>(
RequiredMeshes.data() + 173, 2),
false},
324 {0x000801B5, std::span<const DataId>(
RequiredMeshes.data() + 175, 2),
false},
325 {0x000801B6, std::span<const DataId>(
RequiredMeshes.data() + 177, 1),
false},
326 {0x000801B7, std::span<const DataId>(
RequiredMeshes.data() + 178, 1),
false},
327 {0x000801B8, std::span<const DataId>(
RequiredMeshes.data() + 179, 1),
false},
328 {0x000801B9, std::span<const DataId>(
RequiredMeshes.data() + 180, 1),
false},
329 {0x000801BA, std::span<const DataId>(
RequiredMeshes.data() + 181, 3),
false},
330 {0x000801BB, std::span<const DataId>(
RequiredMeshes.data() + 184, 3),
false},
331 {0x000801C3, std::span<const DataId>(
RequiredMeshes.data() + 187, 3),
false},
332 {0x000801C8, std::span<const DataId>(
RequiredMeshes.data() + 190, 2),
false},
333 {0x000801C9, std::span<const DataId>(
RequiredMeshes.data() + 192, 1),
false},
334 {0x000801CB, std::span<const DataId>(
RequiredMeshes.data() + 193, 4),
false},
335 {0x000801CC, std::span<const DataId>(
RequiredMeshes.data() + 197, 1),
false},
336 {0x000801D3, std::span<const DataId>(
RequiredMeshes.data() + 198, 4),
true},
337 {0x0008021F, std::span<const DataId>(
RequiredMeshes.data() + 202, 1),
false},
338 {0x00080220, std::span<const DataId>(
RequiredMeshes.data() + 203, 1),
false},
339 {0x00080221, std::span<const DataId>(
RequiredMeshes.data() + 204, 1),
false},
340 {0x00080222, std::span<const DataId>(
RequiredMeshes.data() + 205, 1),
false},
341 {0x00080223, std::span<const DataId>(
RequiredMeshes.data() + 206, 1),
false},
342 {0x00080224, std::span<const DataId>(
RequiredMeshes.data() + 207, 2),
false},
343 {0x00080225, std::span<const DataId>(
RequiredMeshes.data() + 209, 1),
false},
344 {0x00080226, std::span<const DataId>(
RequiredMeshes.data() + 210, 1),
false},
345 {0x00080227, std::span<const DataId>(
RequiredMeshes.data() + 211, 3),
false},
346 {0x00080228, std::span<const DataId>(
RequiredMeshes.data() + 214, 1),
false},
347 {0x00080229, std::span<const DataId>(
RequiredMeshes.data() + 215, 1),
false},
348 {0x0008022A, std::span<const DataId>(
RequiredMeshes.data() + 216, 1),
false},
349 {0x0008022B, std::span<const DataId>(
RequiredMeshes.data() + 217, 1),
false},
350 {0x0008022C, std::span<const DataId>(
RequiredMeshes.data() + 218, 1),
false},
351 {0x0008022D, std::span<const DataId>(
RequiredMeshes.data() + 219, 1),
false},
352 {0x0008022E, std::span<const DataId>(
RequiredMeshes.data() + 220, 1),
false},
353 {0x0008022F, std::span<const DataId>(
RequiredMeshes.data() + 221, 1),
false},
354 {0x00080230, std::span<const DataId>(
RequiredMeshes.data() + 222, 3),
false},
355 {0x00080231, std::span<const DataId>(
RequiredMeshes.data() + 225, 1),
false},
356 {0x00080232, std::span<const DataId>(
RequiredMeshes.data() + 226, 1),
false},
357 {0x00080233, std::span<const DataId>(
RequiredMeshes.data() + 227, 1),
false},
358 {0x00080234, std::span<const DataId>(
RequiredMeshes.data() + 228, 1),
false},
359 {0x00080235, std::span<const DataId>(
RequiredMeshes.data() + 229, 1),
false},
360 {0x00080237, std::span<const DataId>(
RequiredMeshes.data() + 230, 1),
false},
361 {0x00080238, std::span<const DataId>(
RequiredMeshes.data() + 231, 1),
false},
362 {0x00080239, std::span<const DataId>(
RequiredMeshes.data() + 232, 1),
false},
363 {0x0008023A, std::span<const DataId>(
RequiredMeshes.data() + 233, 1),
false},
364 {0x0008023B, std::span<const DataId>(
RequiredMeshes.data() + 234, 1),
false},
365 {0x0008023C, std::span<const DataId>(
RequiredMeshes.data() + 235, 1),
false},
366 {0x0008023D, std::span<const DataId>(
RequiredMeshes.data() + 236, 3),
false},
367 {0x0008023E, std::span<const DataId>(
RequiredMeshes.data() + 239, 1),
false},
368 {0x0008023F, std::span<const DataId>(
RequiredMeshes.data() + 240, 1),
false},
369 {0x00080240, std::span<const DataId>(
RequiredMeshes.data() + 241, 1),
false},
370 {0x00080241, std::span<const DataId>(
RequiredMeshes.data() + 242, 1),
false},
371 {0x00080242, std::span<const DataId>(
RequiredMeshes.data() + 243, 1),
false},
372 {0x00080243, std::span<const DataId>(
RequiredMeshes.data() + 244, 1),
false},
373 {0x00080244, std::span<const DataId>(
RequiredMeshes.data() + 245, 1),
false},
374 {0x00080245, std::span<const DataId>(
RequiredMeshes.data() + 246, 1),
false},
375 {0x00080246, std::span<const DataId>(
RequiredMeshes.data() + 247, 1),
false},
376 {0x00080247, std::span<const DataId>(
RequiredMeshes.data() + 248, 1),
false},
377 {0x00080248, std::span<const DataId>(
RequiredMeshes.data() + 249, 1),
false},
378 {0x00080249, std::span<const DataId>(
RequiredMeshes.data() + 250, 1),
false},
379 {0x0008024A, std::span<const DataId>(
RequiredMeshes.data() + 251, 1),
false},
380 {0x0008024B, std::span<const DataId>(
RequiredMeshes.data() + 252, 1),
false},
381 {0x0008024C, std::span<const DataId>(
RequiredMeshes.data() + 253, 1),
false},
382 {0x0008024D, std::span<const DataId>(
RequiredMeshes.data() + 254, 1),
false},
383 {0x0008024E, std::span<const DataId>(
RequiredMeshes.data() + 255, 1),
false},
384 {0x0008024F, std::span<const DataId>(
RequiredMeshes.data() + 256, 1),
false},
385 {0x00080250, std::span<const DataId>(
RequiredMeshes.data() + 257, 1),
false},
386 {0x00080251, std::span<const DataId>(
RequiredMeshes.data() + 258, 1),
false},
387 {0x00080252, std::span<const DataId>(
RequiredMeshes.data() + 259, 1),
false},
388 {0x00080253, std::span<const DataId>(
RequiredMeshes.data() + 260, 1),
false},
389 {0x00080254, std::span<const DataId>(
RequiredMeshes.data() + 261, 1),
false},
390 {0x00080255, std::span<const DataId>(
RequiredMeshes.data() + 262, 1),
false},
391 {0x00080256, std::span<const DataId>(
RequiredMeshes.data() + 263, 1),
false},
392 {0x00080257, std::span<const DataId>(
RequiredMeshes.data() + 264, 1),
false},
393 {0x00080258, std::span<const DataId>(
RequiredMeshes.data() + 265, 1),
false},
394 {0x00080259, std::span<const DataId>(
RequiredMeshes.data() + 266, 1),
false},
395 {0x0008025A, std::span<const DataId>(
RequiredMeshes.data() + 267, 1),
false},
396 {0x0008025B, std::span<const DataId>(
RequiredMeshes.data() + 268, 1),
false},
397 {0x0008025C, std::span<const DataId>(
RequiredMeshes.data() + 269, 1),
false},
398 {0x0008025D, std::span<const DataId>(
RequiredMeshes.data() + 270, 1),
false},
399 {0x0008025E, std::span<const DataId>(
RequiredMeshes.data() + 271, 1),
false},
400 {0x0008025F, std::span<const DataId>(
RequiredMeshes.data() + 272, 1),
false},
401 {0x00080260, std::span<const DataId>(
RequiredMeshes.data() + 273, 1),
false},
402 {0x00080261, std::span<const DataId>(
RequiredMeshes.data() + 274, 1),
false},
403 {0x00080262, std::span<const DataId>(
RequiredMeshes.data() + 275, 1),
false},
404 {0x00080263, std::span<const DataId>(
RequiredMeshes.data() + 276, 1),
false},
405 {0x00080264, std::span<const DataId>(
RequiredMeshes.data() + 277, 1),
false},
406 {0x00080265, std::span<const DataId>(
RequiredMeshes.data() + 278, 1),
false},
407 {0x00080266, std::span<const DataId>(
RequiredMeshes.data() + 279, 1),
false},
408 {0x00080267, std::span<const DataId>(
RequiredMeshes.data() + 280, 1),
false},
409 {0x00080268, std::span<const DataId>(
RequiredMeshes.data() + 281, 1),
false},
410 {0x00080269, std::span<const DataId>(
RequiredMeshes.data() + 282, 1),
false},
411 {0x0008026A, std::span<const DataId>(
RequiredMeshes.data() + 283, 1),
false},
412 {0x0008026B, std::span<const DataId>(
RequiredMeshes.data() + 284, 1),
false},
413 {0x0008026C, std::span<const DataId>(
RequiredMeshes.data() + 285, 1),
false},
414 {0x0008026D, std::span<const DataId>(
RequiredMeshes.data() + 286, 1),
false},
415 {0x0008026E, std::span<const DataId>(
RequiredMeshes.data() + 287, 1),
false},
416 {0x0008026F, std::span<const DataId>(
RequiredMeshes.data() + 288, 1),
false},
417 {0x00080270, std::span<const DataId>(
RequiredMeshes.data() + 289, 1),
false},
418 {0x00080271, std::span<const DataId>(
RequiredMeshes.data() + 290, 1),
false},
419 {0x00080272, std::span<const DataId>(
RequiredMeshes.data() + 291, 1),
false},
420 {0x00080273, std::span<const DataId>(
RequiredMeshes.data() + 292, 1),
false},
421 {0x00080274, std::span<const DataId>(
RequiredMeshes.data() + 293, 1),
false},
422 {0x00080275, std::span<const DataId>(
RequiredMeshes.data() + 294, 1),
false},
423 {0x00080276, std::span<const DataId>(
RequiredMeshes.data() + 295, 1),
false},
424 {0x00080277, std::span<const DataId>(
RequiredMeshes.data() + 296, 1),
false},
425 {0x00080278, std::span<const DataId>(
RequiredMeshes.data() + 297, 1),
false},
426 {0x00080279, std::span<const DataId>(
RequiredMeshes.data() + 298, 1),
false},
427 {0x0008027A, std::span<const DataId>(
RequiredMeshes.data() + 299, 1),
false},
428 {0x0008027B, std::span<const DataId>(
RequiredMeshes.data() + 300, 1),
false},
429 {0x0008027C, std::span<const DataId>(
RequiredMeshes.data() + 301, 1),
false},
430 {0x0008027D, std::span<const DataId>(
RequiredMeshes.data() + 302, 1),
false},
431 {0x0008027E, std::span<const DataId>(
RequiredMeshes.data() + 303, 1),
false},
432 {0x0008027F, std::span<const DataId>(
RequiredMeshes.data() + 304, 1),
false},
433 {0x00080280, std::span<const DataId>(
RequiredMeshes.data() + 305, 1),
false},
434 {0x00080281, std::span<const DataId>(
RequiredMeshes.data() + 306, 1),
false},
435 {0x00080282, std::span<const DataId>(
RequiredMeshes.data() + 307, 1),
false},
436 {0x00080283, std::span<const DataId>(
RequiredMeshes.data() + 308, 3),
false},
437 {0x00080284, std::span<const DataId>(
RequiredMeshes.data() + 311, 3),
false},
438 {0x00080285, std::span<const DataId>(
RequiredMeshes.data() + 314, 3),
false},
439 {0x00080286, std::span<const DataId>(
RequiredMeshes.data() + 317, 3),
false},
440 {0x00080287, std::span<const DataId>(
RequiredMeshes.data() + 320, 3),
false},
441 {0x00080288, std::span<const DataId>(
RequiredMeshes.data() + 323, 1),
false},
442 {0x00080289, std::span<const DataId>(
RequiredMeshes.data() + 324, 2),
false},
443 {0x0008028A, std::span<const DataId>(
RequiredMeshes.data() + 326, 2),
false},
444 {0x0008028B, std::span<const DataId>(
RequiredMeshes.data() + 328, 1),
false},
445 {0x0008028C, std::span<const DataId>(
RequiredMeshes.data() + 329, 1),
false},
446 {0x0008028D, std::span<const DataId>(
RequiredMeshes.data() + 330, 3),
false},
447 {0x0008028E, std::span<const DataId>(
RequiredMeshes.data() + 333, 1),
false},
448 {0x0008028F, std::span<const DataId>(
RequiredMeshes.data() + 334, 2),
false},
449 {0x00080290, std::span<const DataId>(
RequiredMeshes.data() + 336, 1),
false},
450 {0x00080292, std::span<const DataId>(
RequiredMeshes.data() + 337, 1),
false},
451 {0x00080293, std::span<const DataId>(
RequiredMeshes.data() + 338, 3),
false},
452 {0x00080294, std::span<const DataId>(
RequiredMeshes.data() + 341, 1),
false},
453 {0x00080295, std::span<const DataId>(
RequiredMeshes.data() + 342, 2),
false},
454 {0x00080296, std::span<const DataId>(
RequiredMeshes.data() + 344, 1),
false},
455 {0x00080297, std::span<const DataId>(
RequiredMeshes.data() + 345, 1),
false},
456 {0x00080298, std::span<const DataId>(
RequiredMeshes.data() + 346, 1),
false},
457 {0x0008029A, std::span<const DataId>(
RequiredMeshes.data() + 347, 3),
false},
458 {0x0008029B, std::span<const DataId>(
RequiredMeshes.data() + 350, 3),
false},
459 {0x0008029C, std::span<const DataId>(
RequiredMeshes.data() + 353, 3),
false},
460 {0x0008029D, std::span<const DataId>(
RequiredMeshes.data() + 356, 3),
false},
461 {0x0008029E, std::span<const DataId>(
RequiredMeshes.data() + 359, 3),
false},
462 {0x0008029F, std::span<const DataId>(
RequiredMeshes.data() + 362, 3),
false},
463 {0x000802A0, std::span<const DataId>(
RequiredMeshes.data() + 365, 3),
false},
464 {0x000802A1, std::span<const DataId>(
RequiredMeshes.data() + 368, 3),
false},
465 {0x000802A2, std::span<const DataId>(
RequiredMeshes.data() + 371, 3),
false},
466 {0x000802A3, std::span<const DataId>(
RequiredMeshes.data() + 374, 1),
false},
467 {0x000802A4, std::span<const DataId>(
RequiredMeshes.data() + 375, 3),
false},
468 {0x000802A5, std::span<const DataId>(
RequiredMeshes.data() + 378, 3),
false},
469 {0x000802A6, std::span<const DataId>(
RequiredMeshes.data() + 381, 3),
false},
470 {0x000802A7, std::span<const DataId>(
RequiredMeshes.data() + 384, 1),
false},
471 {0x000802A8, std::span<const DataId>(
RequiredMeshes.data() + 385, 1),
false},
472 {0x000802A9, std::span<const DataId>(
RequiredMeshes.data() + 386, 1),
false},
473 {0x000802AA, std::span<const DataId>(
RequiredMeshes.data() + 387, 1),
false},
474 {0x000802AB, std::span<const DataId>(
RequiredMeshes.data() + 388, 1),
false},
475 {0x000802AC, std::span<const DataId>(
RequiredMeshes.data() + 389, 1),
false},
476 {0x000802AD, std::span<const DataId>(
RequiredMeshes.data() + 390, 1),
false},
477 {0x000802AE, std::span<const DataId>(
RequiredMeshes.data() + 391, 1),
false},
478 {0x000802AF, std::span<const DataId>(
RequiredMeshes.data() + 392, 1),
false},
479 {0x000802B0, std::span<const DataId>(
RequiredMeshes.data() + 393, 1),
false},
480 {0x000802B1, std::span<const DataId>(
RequiredMeshes.data() + 394, 1),
false},
481 {0x000802B2, std::span<const DataId>(
RequiredMeshes.data() + 395, 1),
false},
482 {0x000802B3, std::span<const DataId>(
RequiredMeshes.data() + 396, 1),
false},
483 {0x000802B4, std::span<const DataId>(
RequiredMeshes.data() + 397, 1),
false},
484 {0x000802B5, std::span<const DataId>(
RequiredMeshes.data() + 398, 1),
false},
485 {0x000802B6, std::span<const DataId>(
RequiredMeshes.data() + 399, 1),
false},
486 {0x000802B7, std::span<const DataId>(
RequiredMeshes.data() + 400, 1),
false},
487 {0x000802B8, std::span<const DataId>(
RequiredMeshes.data() + 401, 1),
false},
488 {0x000802B9, std::span<const DataId>(
RequiredMeshes.data() + 402, 1),
false},
489 {0x000802BA, std::span<const DataId>(
RequiredMeshes.data() + 403, 1),
false},
490 {0x000802BB, std::span<const DataId>(
RequiredMeshes.data() + 404, 1),
false},
491 {0x000802BC, std::span<const DataId>(
RequiredMeshes.data() + 405, 1),
false},
492 {0x000802BD, std::span<const DataId>(
RequiredMeshes.data() + 406, 1),
false},
493 {0x000802BE, std::span<const DataId>(
RequiredMeshes.data() + 407, 1),
false},
494 {0x000802BF, std::span<const DataId>(
RequiredMeshes.data() + 408, 1),
false},
495 {0x000802C0, std::span<const DataId>(
RequiredMeshes.data() + 409, 1),
false},
496 {0x000802C1, std::span<const DataId>(
RequiredMeshes.data() + 410, 1),
false},
497 {0x000802C2, std::span<const DataId>(
RequiredMeshes.data() + 411, 1),
false},
498 {0x000802C3, std::span<const DataId>(
RequiredMeshes.data() + 412, 1),
false},
499 {0x000802C4, std::span<const DataId>(
RequiredMeshes.data() + 413, 1),
false},
500 {0x000802C5, std::span<const DataId>(
RequiredMeshes.data() + 414, 1),
false},
501 {0x000802C6, std::span<const DataId>(
RequiredMeshes.data() + 415, 1),
false},
502 {0x000802C7, std::span<const DataId>(
RequiredMeshes.data() + 416, 1),
false},
503 {0x000802C8, std::span<const DataId>(
RequiredMeshes.data() + 417, 1),
false},
504 {0x000802C9, std::span<const DataId>(
RequiredMeshes.data() + 418, 1),
false},
505 {0x000802CA, std::span<const DataId>(
RequiredMeshes.data() + 419, 1),
false},
506 {0x000802CB, std::span<const DataId>(
RequiredMeshes.data() + 420, 1),
false},
507 {0x000802CC, std::span<const DataId>(
RequiredMeshes.data() + 421, 1),
false},
508 {0x000802CD, std::span<const DataId>(
RequiredMeshes.data() + 422, 1),
false},
509 {0x000802CE, std::span<const DataId>(
RequiredMeshes.data() + 423, 1),
false},
510 {0x000802CF, std::span<const DataId>(
RequiredMeshes.data() + 424, 1),
false},
511 {0x000802D0, std::span<const DataId>(
RequiredMeshes.data() + 425, 1),
false},
512 {0x000802D1, std::span<const DataId>(
RequiredMeshes.data() + 426, 1),
false},
513 {0x000802D2, std::span<const DataId>(
RequiredMeshes.data() + 427, 1),
false},
514 {0x000802D3, std::span<const DataId>(
RequiredMeshes.data() + 428, 1),
false},
515 {0x000802D4, std::span<const DataId>(
RequiredMeshes.data() + 429, 1),
false},
516 {0x000802D5, std::span<const DataId>(
RequiredMeshes.data() + 430, 1),
false},
517 {0x000802D6, std::span<const DataId>(
RequiredMeshes.data() + 431, 1),
false},
518 {0x000802D7, std::span<const DataId>(
RequiredMeshes.data() + 432, 1),
false},
519 {0x000802D8, std::span<const DataId>(
RequiredMeshes.data() + 433, 1),
false},
520 {0x000802D9, std::span<const DataId>(
RequiredMeshes.data() + 434, 1),
false},
521 {0x000802DA, std::span<const DataId>(
RequiredMeshes.data() + 435, 1),
false},
522 {0x000802DB, std::span<const DataId>(
RequiredMeshes.data() + 436, 1),
false},
523 {0x000802DC, std::span<const DataId>(
RequiredMeshes.data() + 437, 1),
false},
524 {0x000802DD, std::span<const DataId>(
RequiredMeshes.data() + 438, 1),
false},
525 {0x000802DE, std::span<const DataId>(
RequiredMeshes.data() + 439, 1),
false},
526 {0x000802DF, std::span<const DataId>(
RequiredMeshes.data() + 440, 1),
false},
527 {0x000802E0, std::span<const DataId>(
RequiredMeshes.data() + 441, 1),
false},
528 {0x000802E1, std::span<const DataId>(
RequiredMeshes.data() + 442, 1),
false},
529 {0x000802E2, std::span<const DataId>(
RequiredMeshes.data() + 443, 1),
false},
530 {0x000802E3, std::span<const DataId>(
RequiredMeshes.data() + 444, 3),
false},
531 {0x000802E4, std::span<const DataId>(
RequiredMeshes.data() + 447, 3),
false},
532 {0x000802E5, std::span<const DataId>(
RequiredMeshes.data() + 450, 2),
false},
533 {0x000802EA, std::span<const DataId>(
RequiredMeshes.data() + 452, 1),
false},
534 {0x000802EB, std::span<const DataId>(
RequiredMeshes.data() + 453, 1),
false},
535 {0x000802EC, std::span<const DataId>(
RequiredMeshes.data() + 454, 1),
false},
536 {0x000802ED, std::span<const DataId>(
RequiredMeshes.data() + 455, 1),
false},
537 {0x000802EE, std::span<const DataId>(
RequiredMeshes.data() + 456, 1),
false},
538 {0x000802EF, std::span<const DataId>(
RequiredMeshes.data() + 457, 1),
false},
539 {0x000802F0, std::span<const DataId>(
RequiredMeshes.data() + 458, 1),
false},
540 {0x000802F1, std::span<const DataId>(
RequiredMeshes.data() + 459, 1),
false},
541 {0x000802F2, std::span<const DataId>(
RequiredMeshes.data() + 460, 1),
false},
542 {0x000802F3, std::span<const DataId>(
RequiredMeshes.data() + 461, 1),
false},
543 {0x000802F4, std::span<const DataId>(
RequiredMeshes.data() + 462, 1),
false},
544 {0x000802F5, std::span<const DataId>(
RequiredMeshes.data() + 463, 1),
false},
545 {0x000802F6, std::span<const DataId>(
RequiredMeshes.data() + 464, 1),
false},
546 {0x000802F7, std::span<const DataId>(
RequiredMeshes.data() + 465, 1),
false},
547 {0x000802F8, std::span<const DataId>(
RequiredMeshes.data() + 466, 1),
false},
548 {0x000802FC, std::span<const DataId>(
RequiredMeshes.data() + 467, 6),
true},
549 {0x000802FD, std::span<const DataId>(
RequiredMeshes.data() + 473, 2),
false},
550 {0x000802FE, std::span<const DataId>(
RequiredMeshes.data() + 475, 2),
false},
551 {0x000802FF, std::span<const DataId>(
RequiredMeshes.data() + 477, 2),
false},
552 {0x00080300, std::span<const DataId>(
RequiredMeshes.data() + 479, 2),
false},
553 {0x00080301, std::span<const DataId>(
RequiredMeshes.data() + 481, 2),
false},
554 {0x00080302, std::span<const DataId>(
RequiredMeshes.data() + 483, 2),
false},
555 {0x00080303, std::span<const DataId>(
RequiredMeshes.data() + 485, 2),
false},
556 {0x00080305, std::span<const DataId>(
RequiredMeshes.data() + 487, 1),
false},
557 {0x00080306, std::span<const DataId>(
RequiredMeshes.data() + 488, 2),
false},
558 {0x00080307, std::span<const DataId>(
RequiredMeshes.data() + 490, 2),
false},
559 {0x00080308, std::span<const DataId>(
RequiredMeshes.data() + 492, 2),
false},
560 {0x00080309, std::span<const DataId>(
RequiredMeshes.data() + 494, 2),
false},
561 {0x0008030A, std::span<const DataId>(
RequiredMeshes.data() + 496, 1),
false},
562 {0x0008030B, std::span<const DataId>(
RequiredMeshes.data() + 497, 1),
false},
563 {0x0008030C, std::span<const DataId>(
RequiredMeshes.data() + 498, 1),
false},
564 {0x0008030D, std::span<const DataId>(
RequiredMeshes.data() + 499, 1),
false},
565 {0x0008030E, std::span<const DataId>(
RequiredMeshes.data() + 500, 1),
false},
566 {0x0008030F, std::span<const DataId>(
RequiredMeshes.data() + 501, 1),
false},
567 {0x00080310, std::span<const DataId>(
RequiredMeshes.data() + 502, 1),
false},
568 {0x00080311, std::span<const DataId>(
RequiredMeshes.data() + 503, 1),
false},
569 {0x00080312, std::span<const DataId>(
RequiredMeshes.data() + 504, 1),
false},
570 {0x00080313, std::span<const DataId>(
RequiredMeshes.data() + 505, 1),
false},
571 {0x00080314, std::span<const DataId>(
RequiredMeshes.data() + 506, 1),
false},
572 {0x00080315, std::span<const DataId>(
RequiredMeshes.data() + 507, 1),
false},
573 {0x00080316, std::span<const DataId>(
RequiredMeshes.data() + 508, 1),
false},
574 {0x00080317, std::span<const DataId>(
RequiredMeshes.data() + 509, 1),
false},
575 {0x00080318, std::span<const DataId>(
RequiredMeshes.data() + 510, 1),
false},
576 {0x00080319, std::span<const DataId>(
RequiredMeshes.data() + 511, 1),
false},
577 {0x0008031A, std::span<const DataId>(
RequiredMeshes.data() + 512, 1),
false},
578 {0x0008031B, std::span<const DataId>(
RequiredMeshes.data() + 513, 1),
false},
579 {0x0008031C, std::span<const DataId>(
RequiredMeshes.data() + 514, 1),
false},
580 {0x0008031D, std::span<const DataId>(
RequiredMeshes.data() + 515, 1),
false},
581 {0x0008031E, std::span<const DataId>(
RequiredMeshes.data() + 516, 1),
false},
582 {0x0008031F, std::span<const DataId>(
RequiredMeshes.data() + 517, 1),
false},
583 {0x00080320, std::span<const DataId>(
RequiredMeshes.data() + 518, 1),
false},
584 {0x00080321, std::span<const DataId>(
RequiredMeshes.data() + 519, 1),
false},
585 {0x00080322, std::span<const DataId>(
RequiredMeshes.data() + 520, 1),
false},
586 {0x00080323, std::span<const DataId>(
RequiredMeshes.data() + 521, 1),
false},
587 {0x00080324, std::span<const DataId>(
RequiredMeshes.data() + 522, 1),
false},
588 {0x00080325, std::span<const DataId>(
RequiredMeshes.data() + 523, 1),
false},
589 {0x00080326, std::span<const DataId>(
RequiredMeshes.data() + 524, 1),
false},
590 {0x00080327, std::span<const DataId>(
RequiredMeshes.data() + 525, 1),
false},
591 {0x00080328, std::span<const DataId>(
RequiredMeshes.data() + 526, 1),
false},
592 {0x00080329, std::span<const DataId>(
RequiredMeshes.data() + 527, 1),
false},
593 {0x0008032A, std::span<const DataId>(
RequiredMeshes.data() + 528, 1),
false},
594 {0x0008032B, std::span<const DataId>(
RequiredMeshes.data() + 529, 1),
false},
595 {0x0008032C, std::span<const DataId>(
RequiredMeshes.data() + 530, 1),
false},
596 {0x0008032D, std::span<const DataId>(
RequiredMeshes.data() + 531, 1),
false},
597 {0x0008032E, std::span<const DataId>(
RequiredMeshes.data() + 532, 1),
false},
598 {0x0008032F, std::span<const DataId>(
RequiredMeshes.data() + 533, 1),
false},
599 {0x00080330, std::span<const DataId>(
RequiredMeshes.data() + 534, 1),
false},
600 {0x00080331, std::span<const DataId>(
RequiredMeshes.data() + 535, 1),
false},
601 {0x00080332, std::span<const DataId>(
RequiredMeshes.data() + 536, 1),
false},
602 {0x00080333, std::span<const DataId>(
RequiredMeshes.data() + 537, 1),
false},
603 {0x00080334, std::span<const DataId>(
RequiredMeshes.data() + 538, 1),
false},
604 {0x00080335, std::span<const DataId>(
RequiredMeshes.data() + 539, 1),
false},
605 {0x00080336, std::span<const DataId>(
RequiredMeshes.data() + 540, 1),
false},
606 {0x00080337, std::span<const DataId>(
RequiredMeshes.data() + 541, 1),
false},
607 {0x00080338, std::span<const DataId>(
RequiredMeshes.data() + 542, 1),
false},
608 {0x00080339, std::span<const DataId>(
RequiredMeshes.data() + 543, 1),
false},
609 {0x0008033A, std::span<const DataId>(
RequiredMeshes.data() + 544, 1),
false},
610 {0x0008033B, std::span<const DataId>(
RequiredMeshes.data() + 545, 1),
false},
611 {0x0008033C, std::span<const DataId>(
RequiredMeshes.data() + 546, 1),
false},
612 {0x0008033D, std::span<const DataId>(
RequiredMeshes.data() + 547, 1),
false},
613 {0x0008033E, std::span<const DataId>(
RequiredMeshes.data() + 548, 1),
false},
614 {0x0008033F, std::span<const DataId>(
RequiredMeshes.data() + 549, 1),
false},
615 {0x00080340, std::span<const DataId>(
RequiredMeshes.data() + 550, 1),
false},
616 {0x00080341, std::span<const DataId>(
RequiredMeshes.data() + 551, 1),
false},
617 {0x00080342, std::span<const DataId>(
RequiredMeshes.data() + 552, 1),
false},
618 {0x00080343, std::span<const DataId>(
RequiredMeshes.data() + 553, 1),
false},
619 {0x00080344, std::span<const DataId>(
RequiredMeshes.data() + 554, 1),
false},
620 {0x00080345, std::span<const DataId>(
RequiredMeshes.data() + 555, 1),
false},
621 {0x00080348, std::span<const DataId>(
RequiredMeshes.data() + 556, 1),
false},
622 {0x00080349, std::span<const DataId>(
RequiredMeshes.data() + 557, 2),
false},
623 {0x0008034A, std::span<const DataId>(
RequiredMeshes.data() + 559, 2),
false},
624 {0x0008034B, std::span<const DataId>(
RequiredMeshes.data() + 561, 2),
false},
625 {0x0008034C, std::span<const DataId>(
RequiredMeshes.data() + 563, 2),
false},
626 {0x0008034D, std::span<const DataId>(
RequiredMeshes.data() + 565, 1),
false},
627 {0x0008034E, std::span<const DataId>(
RequiredMeshes.data() + 566, 1),
false},
628 {0x0008034F, std::span<const DataId>(
RequiredMeshes.data() + 567, 1),
false},
629 {0x00080350, std::span<const DataId>(
RequiredMeshes.data() + 568, 3),
false},
630 {0x00080351, std::span<const DataId>(
RequiredMeshes.data() + 571, 2),
false},
631 {0x00080352, std::span<const DataId>(
RequiredMeshes.data() + 573, 3),
false},
632 {0x00080353, std::span<const DataId>(
RequiredMeshes.data() + 576, 2),
false},
633 {0x00080354, std::span<const DataId>(
RequiredMeshes.data() + 578, 1),
false},
634 {0x00080355, std::span<const DataId>(
RequiredMeshes.data() + 579, 1),
false},
635 {0x00080356, std::span<const DataId>(
RequiredMeshes.data() + 580, 3),
false},
636 {0x00080357, std::span<const DataId>(
RequiredMeshes.data() + 583, 2),
false},
637 {0x00080358, std::span<const DataId>(
RequiredMeshes.data() + 585, 2),
false},
638 {0x00080359, std::span<const DataId>(
RequiredMeshes.data() + 587, 2),
false},
639 {0x0008035A, std::span<const DataId>(
RequiredMeshes.data() + 589, 3),
false},
640 {0x0008035B, std::span<const DataId>(
RequiredMeshes.data() + 592, 2),
false},
641 {0x0008035C, std::span<const DataId>(
RequiredMeshes.data() + 594, 1),
false},
642 {0x0008035D, std::span<const DataId>(
RequiredMeshes.data() + 595, 2),
false},
643 {0x0008035E, std::span<const DataId>(
RequiredMeshes.data() + 597, 1),
false},
644 {0x00080360, std::span<const DataId>(
RequiredMeshes.data() + 598, 2),
false},
645 {0x00080361, std::span<const DataId>(
RequiredMeshes.data() + 600, 2),
false},
646 {0x00080362, std::span<const DataId>(
RequiredMeshes.data() + 602, 2),
false},
647 {0x00080363, std::span<const DataId>(
RequiredMeshes.data() + 604, 2),
false},
648 {0x00080364, std::span<const DataId>(
RequiredMeshes.data() + 606, 1),
false},
649 {0x00080365, std::span<const DataId>(
RequiredMeshes.data() + 607, 2),
false},
650 {0x00080366, std::span<const DataId>(
RequiredMeshes.data() + 609, 1),
false},
651 {0x00080367, std::span<const DataId>(
RequiredMeshes.data() + 610, 1),
false},
652 {0x00080368, std::span<const DataId>(
RequiredMeshes.data() + 611, 1),
false},
653 {0x00080369, std::span<const DataId>(
RequiredMeshes.data() + 612, 1),
false},
654 {0x0008036A, std::span<const DataId>(
RequiredMeshes.data() + 613, 2),
false},
655 {0x0008036B, std::span<const DataId>(
RequiredMeshes.data() + 615, 2),
false},
656 {0x0008036C, std::span<const DataId>(
RequiredMeshes.data() + 617, 2),
false},
657 {0x0008036D, std::span<const DataId>(
RequiredMeshes.data() + 619, 1),
false},
658 {0x0008036E, std::span<const DataId>(
RequiredMeshes.data() + 620, 1),
false},
659 {0x0008036F, std::span<const DataId>(
RequiredMeshes.data() + 621, 1),
false},
660 {0x00080370, std::span<const DataId>(
RequiredMeshes.data() + 622, 1),
false},
661 {0x00080371, std::span<const DataId>(
RequiredMeshes.data() + 623, 1),
false},
662 {0x00080372, std::span<const DataId>(
RequiredMeshes.data() + 624, 1),
false},
663 {0x00080373, std::span<const DataId>(
RequiredMeshes.data() + 625, 1),
false},
664 {0x00080374, std::span<const DataId>(
RequiredMeshes.data() + 626, 1),
false},
665 {0x00080375, std::span<const DataId>(
RequiredMeshes.data() + 627, 1),
false},
666 {0x00080376, std::span<const DataId>(
RequiredMeshes.data() + 628, 1),
false},
667 {0x00080377, std::span<const DataId>(
RequiredMeshes.data() + 629, 1),
false},
668 {0x00080378, std::span<const DataId>(
RequiredMeshes.data() + 630, 1),
false},
669 {0x00080379, std::span<const DataId>(
RequiredMeshes.data() + 631, 1),
false},
670 {0x0008037A, std::span<const DataId>(
RequiredMeshes.data() + 632, 1),
false},
671 {0x0008037B, std::span<const DataId>(
RequiredMeshes.data() + 633, 1),
false},
672 {0x0008037C, std::span<const DataId>(
RequiredMeshes.data() + 634, 1),
false},
673 {0x0008037D, std::span<const DataId>(
RequiredMeshes.data() + 635, 1),
false},
674 {0x0008037E, std::span<const DataId>(
RequiredMeshes.data() + 636, 1),
false},
675 {0x0008037F, std::span<const DataId>(
RequiredMeshes.data() + 637, 1),
false},
676 {0x00080380, std::span<const DataId>(
RequiredMeshes.data() + 638, 1),
false},
677 {0x00080381, std::span<const DataId>(
RequiredMeshes.data() + 639, 1),
false},
678 {0x00080382, std::span<const DataId>(
RequiredMeshes.data() + 640, 1),
false},
679 {0x00080383, std::span<const DataId>(
RequiredMeshes.data() + 641, 1),
false},
680 {0x00080384, std::span<const DataId>(
RequiredMeshes.data() + 642, 1),
false},
681 {0x00080385, std::span<const DataId>(
RequiredMeshes.data() + 643, 1),
false},
682 {0x00080386, std::span<const DataId>(
RequiredMeshes.data() + 644, 1),
false},
683 {0x00080387, std::span<const DataId>(
RequiredMeshes.data() + 645, 1),
false},
684 {0x00080388, std::span<const DataId>(
RequiredMeshes.data() + 646, 1),
false},
685 {0x00080389, std::span<const DataId>(
RequiredMeshes.data() + 647, 1),
false},
686 {0x0008038A, std::span<const DataId>(
RequiredMeshes.data() + 648, 1),
false},
687 {0x0008038B, std::span<const DataId>(
RequiredMeshes.data() + 649, 1),
false},
688 {0x0008038C, std::span<const DataId>(
RequiredMeshes.data() + 650, 1),
false},
689 {0x0008038D, std::span<const DataId>(
RequiredMeshes.data() + 651, 1),
false},
690 {0x0008038E, std::span<const DataId>(
RequiredMeshes.data() + 652, 1),
false},
691 {0x0008038F, std::span<const DataId>(
RequiredMeshes.data() + 653, 1),
false},
692 {0x00080390, std::span<const DataId>(
RequiredMeshes.data() + 654, 1),
false},
693 {0x00080391, std::span<const DataId>(
RequiredMeshes.data() + 655, 1),
false},
694 {0x00080392, std::span<const DataId>(
RequiredMeshes.data() + 656, 1),
false},
695 {0x00080393, std::span<const DataId>(
RequiredMeshes.data() + 657, 1),
false},
696 {0x00080394, std::span<const DataId>(
RequiredMeshes.data() + 658, 1),
false},
697 {0x00080395, std::span<const DataId>(
RequiredMeshes.data() + 659, 1),
false},
698 {0x00080396, std::span<const DataId>(
RequiredMeshes.data() + 660, 1),
false},
699 {0x00080397, std::span<const DataId>(
RequiredMeshes.data() + 661, 1),
false},
700 {0x00080398, std::span<const DataId>(
RequiredMeshes.data() + 662, 1),
false},
701 {0x00080399, std::span<const DataId>(
RequiredMeshes.data() + 663, 1),
false},
702 {0x0008039A, std::span<const DataId>(
RequiredMeshes.data() + 664, 1),
false},
703 {0x0008039B, std::span<const DataId>(
RequiredMeshes.data() + 665, 1),
false},
704 {0x0008039C, std::span<const DataId>(
RequiredMeshes.data() + 666, 1),
false},
705 {0x0008039D, std::span<const DataId>(
RequiredMeshes.data() + 667, 1),
false},
706 {0x0008039E, std::span<const DataId>(
RequiredMeshes.data() + 668, 1),
false},
707 {0x0008039F, std::span<const DataId>(
RequiredMeshes.data() + 669, 1),
false},
708 {0x000803A0, std::span<const DataId>(
RequiredMeshes.data() + 670, 1),
false},
709 {0x000803A1, std::span<const DataId>(
RequiredMeshes.data() + 671, 1),
false},
710 {0x000803A2, std::span<const DataId>(
RequiredMeshes.data() + 672, 1),
false},
711 {0x000803A3, std::span<const DataId>(
RequiredMeshes.data() + 673, 1),
false},
712 {0x000803A4, std::span<const DataId>(
RequiredMeshes.data() + 674, 1),
false},
713 {0x000803A5, std::span<const DataId>(
RequiredMeshes.data() + 675, 1),
false},
714 {0x000803A6, std::span<const DataId>(
RequiredMeshes.data() + 676, 1),
false},
715 {0x000803A7, std::span<const DataId>(
RequiredMeshes.data() + 677, 1),
false},
716 {0x000803A8, std::span<const DataId>(
RequiredMeshes.data() + 678, 1),
false},
717 {0x000803A9, std::span<const DataId>(
RequiredMeshes.data() + 679, 2),
false},
718 {0x000803AA, std::span<const DataId>(
RequiredMeshes.data() + 681, 2),
false},
719 {0x000803AB, std::span<const DataId>(
RequiredMeshes.data() + 683, 2),
false},
720 {0x000803AC, std::span<const DataId>(
RequiredMeshes.data() + 685, 3),
false},
721 {0x000803AD, std::span<const DataId>(
RequiredMeshes.data() + 688, 3),
false},
722 {0x000803AE, std::span<const DataId>(
RequiredMeshes.data() + 691, 3),
false},
723 {0x000803AF, std::span<const DataId>(
RequiredMeshes.data() + 694, 3),
false},
724 {0x000803B1, std::span<const DataId>(
RequiredMeshes.data() + 697, 3),
false},
725 {0x000803B2, std::span<const DataId>(
RequiredMeshes.data() + 700, 1),
false},
726 {0x000803B4, std::span<const DataId>(
RequiredMeshes.data() + 701, 1),
false},
727 {0x000803B6, std::span<const DataId>(
RequiredMeshes.data() + 702, 2),
false},
728 {0x000803B7, std::span<const DataId>(
RequiredMeshes.data() + 704, 2),
false},
729 {0x000803B8, std::span<const DataId>(
RequiredMeshes.data() + 706, 1),
false},
730 {0x000803B9, std::span<const DataId>(
RequiredMeshes.data() + 707, 2),
false},
731 {0x000803BA, std::span<const DataId>(
RequiredMeshes.data() + 709, 1),
false},
732 {0x000803BB, std::span<const DataId>(
RequiredMeshes.data() + 710, 1),
false},
733 {0x000803BC, std::span<const DataId>(
RequiredMeshes.data() + 711, 2),
false},
734 {0x000803BD, std::span<const DataId>(
RequiredMeshes.data() + 713, 2),
false},
735 {0x000803BE, std::span<const DataId>(
RequiredMeshes.data() + 715, 1),
false},
736 {0x000803BF, std::span<const DataId>(
RequiredMeshes.data() + 716, 2),
false},
737 {0x000803C0, std::span<const DataId>(
RequiredMeshes.data() + 718, 1),
false},
738 {0x000803C1, std::span<const DataId>(
RequiredMeshes.data() + 719, 2),
false},
739 {0x000803C3, std::span<const DataId>(
RequiredMeshes.data() + 721, 2),
false},
740 {0x000803C4, std::span<const DataId>(
RequiredMeshes.data() + 723, 2),
false},
741 {0x000803C5, std::span<const DataId>(
RequiredMeshes.data() + 725, 2),
false},
742 {0x000803C6, std::span<const DataId>(
RequiredMeshes.data() + 727, 2),
false},
743 {0x000803C7, std::span<const DataId>(
RequiredMeshes.data() + 729, 2),
false},
744 {0x000803C8, std::span<const DataId>(
RequiredMeshes.data() + 731, 2),
false},
745 {0x000803C9, std::span<const DataId>(
RequiredMeshes.data() + 733, 2),
false},
746 {0x000803CA, std::span<const DataId>(
RequiredMeshes.data() + 735, 2),
false},
747 {0x000803CB, std::span<const DataId>(
RequiredMeshes.data() + 737, 2),
false},
748 {0x000803CD, std::span<const DataId>(
RequiredMeshes.data() + 739, 2),
false},
749 {0x000803CE, std::span<const DataId>(
RequiredMeshes.data() + 741, 3),
false},
750 {0x000803CF, std::span<const DataId>(
RequiredMeshes.data() + 744, 2),
false},
751 {0x000803D0, std::span<const DataId>(
RequiredMeshes.data() + 746, 2),
false},
752 {0x000803D1, std::span<const DataId>(
RequiredMeshes.data() + 748, 2),
false},
753 {0x000803D2, std::span<const DataId>(
RequiredMeshes.data() + 750, 2),
false},
754 {0x000803D3, std::span<const DataId>(
RequiredMeshes.data() + 752, 2),
false},
755 {0x000803D4, std::span<const DataId>(
RequiredMeshes.data() + 754, 2),
false},
756 {0x000803D5, std::span<const DataId>(
RequiredMeshes.data() + 756, 2),
false},
757 {0x000803D6, std::span<const DataId>(
RequiredMeshes.data() + 758, 2),
false},
758 {0x000803D7, std::span<const DataId>(
RequiredMeshes.data() + 760, 2),
false},
759 {0x000803D8, std::span<const DataId>(
RequiredMeshes.data() + 762, 2),
false},
760 {0x000803D9, std::span<const DataId>(
RequiredMeshes.data() + 764, 2),
false},
761 {0x000803DA, std::span<const DataId>(
RequiredMeshes.data() + 766, 2),
false},
762 {0x000803DB, std::span<const DataId>(
RequiredMeshes.data() + 768, 2),
false},
763 {0x000803DC, std::span<const DataId>(
RequiredMeshes.data() + 770, 2),
false},
764 {0x000803DD, std::span<const DataId>(
RequiredMeshes.data() + 772, 2),
false},
765 {0x000803DE, std::span<const DataId>(
RequiredMeshes.data() + 774, 2),
false},
766 {0x000803DF, std::span<const DataId>(
RequiredMeshes.data() + 776, 2),
false},
767 {0x000803E0, std::span<const DataId>(
RequiredMeshes.data() + 778, 2),
false},
768 {0x000803E1, std::span<const DataId>(
RequiredMeshes.data() + 780, 2),
false},
769 {0x000803E2, std::span<const DataId>(
RequiredMeshes.data() + 782, 2),
false},
770 {0x000803E3, std::span<const DataId>(
RequiredMeshes.data() + 784, 2),
false},
771 {0x000803E4, std::span<const DataId>(
RequiredMeshes.data() + 786, 2),
false},
772 {0x000803E5, std::span<const DataId>(
RequiredMeshes.data() + 788, 2),
false},
773 {0x000803E6, std::span<const DataId>(
RequiredMeshes.data() + 790, 2),
false},
774 {0x000803E7, std::span<const DataId>(
RequiredMeshes.data() + 792, 2),
false},
775 {0x000803E8, std::span<const DataId>(
RequiredMeshes.data() + 794, 2),
false},
776 {0x000803E9, std::span<const DataId>(
RequiredMeshes.data() + 796, 2),
false},
777 {0x000803EA, std::span<const DataId>(
RequiredMeshes.data() + 798, 2),
false},
778 {0x000803EB, std::span<const DataId>(
RequiredMeshes.data() + 800, 2),
false},
779 {0x000803EC, std::span<const DataId>(
RequiredMeshes.data() + 802, 2),
false},
780 {0x000803ED, std::span<const DataId>(
RequiredMeshes.data() + 804, 2),
false},
781 {0x000803EE, std::span<const DataId>(
RequiredMeshes.data() + 806, 2),
false},
782 {0x000803EF, std::span<const DataId>(
RequiredMeshes.data() + 808, 2),
false},
783 {0x000803F0, std::span<const DataId>(
RequiredMeshes.data() + 810, 2),
false},
784 {0x000803F1, std::span<const DataId>(
RequiredMeshes.data() + 812, 2),
false},
785 {0x000803F2, std::span<const DataId>(
RequiredMeshes.data() + 814, 2),
false},
786 {0x000803F3, std::span<const DataId>(
RequiredMeshes.data() + 816, 2),
false},
787 {0x000803F4, std::span<const DataId>(
RequiredMeshes.data() + 818, 2),
false},
788 {0x000803F5, std::span<const DataId>(
RequiredMeshes.data() + 820, 2),
false},
789 {0x000803F6, std::span<const DataId>(
RequiredMeshes.data() + 822, 2),
false},
790 {0x000803F7, std::span<const DataId>(
RequiredMeshes.data() + 824, 2),
false},
791 {0x000803F8, std::span<const DataId>(
RequiredMeshes.data() + 826, 2),
false},
792 {0x000803F9, std::span<const DataId>(
RequiredMeshes.data() + 828, 2),
false},
793 {0x000803FA, std::span<const DataId>(
RequiredMeshes.data() + 830, 2),
false},
794 {0x000803FB, std::span<const DataId>(
RequiredMeshes.data() + 832, 2),
false},
795 {0x000803FC, std::span<const DataId>(
RequiredMeshes.data() + 834, 2),
false},
796 {0x000803FD, std::span<const DataId>(
RequiredMeshes.data() + 836, 2),
false},
797 {0x000803FE, std::span<const DataId>(
RequiredMeshes.data() + 838, 2),
false},
798 {0x000803FF, std::span<const DataId>(
RequiredMeshes.data() + 840, 2),
false},
799 {0x00080400, std::span<const DataId>(
RequiredMeshes.data() + 842, 2),
false},
800 {0x00080401, std::span<const DataId>(
RequiredMeshes.data() + 844, 2),
false},
801 {0x00080402, std::span<const DataId>(
RequiredMeshes.data() + 846, 2),
false},
802 {0x00080403, std::span<const DataId>(
RequiredMeshes.data() + 848, 2),
false},
803 {0x00080404, std::span<const DataId>(
RequiredMeshes.data() + 850, 2),
false},
804 {0x00080405, std::span<const DataId>(
RequiredMeshes.data() + 852, 2),
false},
805 {0x00080406, std::span<const DataId>(
RequiredMeshes.data() + 854, 2),
false},
806 {0x00080407, std::span<const DataId>(
RequiredMeshes.data() + 856, 2),
false},
807 {0x00080408, std::span<const DataId>(
RequiredMeshes.data() + 858, 2),
false},
808 {0x00080409, std::span<const DataId>(
RequiredMeshes.data() + 860, 2),
false},
809 {0x0008040A, std::span<const DataId>(
RequiredMeshes.data() + 862, 2),
false},
810 {0x0008040B, std::span<const DataId>(
RequiredMeshes.data() + 864, 2),
false},
811 {0x0008040C, std::span<const DataId>(
RequiredMeshes.data() + 866, 2),
false},
812 {0x0008040D, std::span<const DataId>(
RequiredMeshes.data() + 868, 2),
false},
813 {0x00080417, std::span<const DataId>(
RequiredMeshes.data() + 870, 1),
false},
814 {0x0008041E, std::span<const DataId>(
RequiredMeshes.data() + 871, 1),
false},
815 {0x00080420, std::span<const DataId>(
RequiredMeshes.data() + 872, 1),
false},
816 {0x00080421, std::span<const DataId>(
RequiredMeshes.data() + 873, 1),
false},
817 {0x00080424, std::span<const DataId>(
RequiredMeshes.data() + 874, 1),
false},
818 {0x0008042F, std::span<const DataId>(
RequiredMeshes.data() + 875, 1),
false},
819 {0x000804D9, std::span<const DataId>(
RequiredMeshes.data() + 876, 1),
false},
820 {0x000804DA, std::span<const DataId>(
RequiredMeshes.data() + 877, 1),
false},
821 {0x000804DB, std::span<const DataId>(
RequiredMeshes.data() + 878, 1),
false},
822 {0x000804DC, std::span<const DataId>(
RequiredMeshes.data() + 879, 1),
false},
823 {0x000804DD, std::span<const DataId>(
RequiredMeshes.data() + 880, 1),
false},
824 {0x000804DE, std::span<const DataId>(
RequiredMeshes.data() + 881, 1),
false},
825 {0x000804DF, std::span<const DataId>(
RequiredMeshes.data() + 882, 1),
false},
826 {0x000804E0, std::span<const DataId>(
RequiredMeshes.data() + 883, 1),
false},
827 {0x000804E1, std::span<const DataId>(
RequiredMeshes.data() + 884, 1),
false},
828 {0x000804E2, std::span<const DataId>(
RequiredMeshes.data() + 885, 1),
false},
829 {0x000804E3, std::span<const DataId>(
RequiredMeshes.data() + 886, 1),
false},
830 {0x000804E4, std::span<const DataId>(
RequiredMeshes.data() + 887, 1),
false},
831 {0x000804E5, std::span<const DataId>(
RequiredMeshes.data() + 888, 1),
false},
832 {0x000804E6, std::span<const DataId>(
RequiredMeshes.data() + 889, 1),
false},
833 {0x000804E7, std::span<const DataId>(
RequiredMeshes.data() + 890, 1),
false},
834 {0x000804E8, std::span<const DataId>(
RequiredMeshes.data() + 891, 1),
false},
835 {0x000804E9, std::span<const DataId>(
RequiredMeshes.data() + 892, 1),
false},
836 {0x000804EA, std::span<const DataId>(
RequiredMeshes.data() + 893, 1),
false},
837 {0x000804F2, std::span<const DataId>(
RequiredMeshes.data() + 894, 3),
false},
838 {0x000804F3, std::span<const DataId>(
RequiredMeshes.data() + 897, 3),
false},
839 {0x000804F4, std::span<const DataId>(
RequiredMeshes.data() + 900, 3),
false},
840 {0x000804F5, std::span<const DataId>(
RequiredMeshes.data() + 903, 3),
false},
843 const std::optional<MeshRuntimeError>
NoError;
844 MeshRuntimeError invalid(std::string detail)
850 [](
const auto& definition,
DataId value) { return definition.rootSequenceDataId < value; });
856 [](
const auto& definition,
DataId value) { return definition.state.legacyMeshId < value; });
859 bool contains(std::span<const DataId>
ids,
DataId id)
noexcept
860 {
return std::find(
ids.begin(),
ids.end(),
id) !=
ids.end(); }
865 if (contains(
root.requiredMeshes,
id))
return true;
882 std::optional<DataId> rootSequenceDataId, std::uint16_t
priority)
noexcept
884 const auto*
root = rootSequenceDataId ?
rootDefinition(*rootSequenceDataId) :
nullptr;
885 if (!
root || !contains(
root->requiredMeshes,
meshId))
return false;
890 std::expected<std::shared_ptr<const ModernTokenVariantPack>, MeshRuntimeError>
899 default:
return std::unexpected(invalid(
"unknown modern token variant pack"));
916 ModernTokenVariantCache::loadGeometry(
DataId id)
923 if (!
rest)
return std::unexpected(
rest.error());
928 if (
entry.error)
return std::unexpected(*
entry.error);
931 entry.attempted =
true;
932 auto load = [&]() -> std::expected<std::shared_ptr<const MeshRenderData>, MeshRuntimeError>
935 if (!definition)
return std::unexpected(invalid(
"unqualified modern token HMD"));
937 ModernGltfLoadOptions options;
938 options.unitsPerMeter =
frame.units;
939 options.yawDegrees =
frame.yaw;
940 options.localOffset =
frame.offset;
941 options.groundToZero =
false;
945 auto error = mesh.error();
946 error.detail = std::string(definition->state.relativeGlbPath) +
": " +
error.detail;
947 return std::unexpected(std::move(
error));
952 if (!
definition->runtimeSharedRestGrounding)
return std::move(*mesh);
953 if (
id ==
ShipRest) shipGroundBaseline_ = (*mesh)->bounds.minimum[1];
954 if (!shipGroundBaseline_ || !std::isfinite(*shipGroundBaseline_))
955 return std::unexpected(invalid(
"ship variant pack has an invalid shared grounding baseline"));
956 auto grounded = std::make_shared<MeshRenderData>(**mesh);
957 for (
auto& vertex :
grounded->vertices)
959 vertex.position[1] -= *shipGroundBaseline_;
960 if (!std::isfinite(vertex.position[1]))
961 return std::unexpected(invalid(
"ship shared grounding exceeds finite coordinates"));
963 grounded->bounds.minimum[1] -= *shipGroundBaseline_;
964 grounded->bounds.maximum[1] -= *shipGroundBaseline_;
965 return std::shared_ptr<const MeshRenderData>(std::move(
grounded));
973 catch (
const std::exception&
error)
974 {
entry.error = invalid(std::string(
"token variant geometry loading failed: ") +
error.what()); }
975 if (
entry.error)
return std::unexpected(*
entry.error);
979 std::expected<std::shared_ptr<const ModernTokenVariantPack>, MeshRuntimeError>
980 ModernTokenVariantCache::loadRoot(
DataId id)
try
983 if (!definition)
return std::unexpected(invalid(
"unqualified modern token root"));
984 auto staged = std::make_shared<ModernTokenVariantPack>();
995 return std::
unexpected(invalid(
"token root requires the same authored vertex/triangle correspondence"));
996 return std::shared_ptr<const ModernTokenVariantPack>(std::move(
staged));
998 catch (
const std::exception&
error)
999 {
return std::unexpected(invalid(std::string(
"token root loading failed: ") +
error.what())); }
1002 std::optional<DataId> rootSequenceDataId, std::uint16_t
priority)
1005 auto&
entry = packs_[*rootSequenceDataId];
1006 if (!
entry.attempted)
1008 entry.attempted =
true;
1009 auto loaded = loadRoot(*rootSequenceDataId);
1017 {
return !packs_.empty(); }
1019 {
const auto entry = packs_.find(
id);
return entry != packs_.end() &&
entry->second.attempted; }
1034 geometry.error = invalid(
"shared token geometry rejected after presentation upload failure");
bool runtimeSharedRestGrounding
std::shared_ptr< const MeshRenderData > resolve(DataId meshId, std::optional< DataId > rootSequenceDataId, std::uint16_t priority)
ModernTokenVariantCache(std::filesystem::path modernAssetsRoot)
bool attempted() const noexcept
bool rejectPack(const MeshRenderData *failedState)
const std::optional< MeshRuntimeError > & loadError() const noexcept
std::shared_ptr< const MeshRenderData > resolve(DataId meshId) const noexcept
static std::expected< std::shared_ptr< const ModernTokenVariantPack >, MeshRuntimeError > load(const std::filesystem::path &modernAssetsRoot, ModernTokenVariantKind kind=ModernTokenVariantKind::ShipMovement)
std::expected< Profile, Error > load(const std::filesystem::path &path, int level)
constexpr DataTag dataTag(DataId id) noexcept
constexpr std::uint16_t legacyGroupValue(LegacyGroupId group) noexcept
std::expected< std::shared_ptr< const MeshRenderData >, MeshRuntimeError > loadModernGltfMesh(const std::filesystem::path &path, ModernGltfLoadOptions options)
const std::array< ModernTokenVariantDefinition, 4 > & dogIdleVariantDefinitions() noexcept
std::span< const ModernTokenVariantRootDefinition > modernTokenVariantRootDefinitions() noexcept
const std::array< ModernTokenVariantDefinition, 6 > & horseIdleVariantDefinitions() noexcept
bool qualifiedModernTokenVariantSequence(DataId meshId, std::optional< DataId > rootSequenceDataId, std::uint16_t priority) noexcept
constexpr DataId packDataId(std::uint16_t group, DataTag tag) noexcept
const std::array< ModernTokenVariantDefinition, 2 > & shipMovementVariantDefinitions() noexcept
constexpr std::uint16_t dataGroup(DataId id) noexcept
constexpr std::uint16_t Generic3DPriority
constexpr std::uint16_t TokenPriority
const SquareDefinition & definition(SquareType square)
constexpr PlayerNumber MaxPlayers