format.h 93 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917
  1. #pragma once
  2. #include <array>
  3. #include <cstddef>
  4. #include <cstdint>
  5. #include <type_traits>
  6. namespace sunrise::state::activity_sdk::format {
  7. /** Eight-byte identity at the start of every runtime SDK pack. */
  8. inline constexpr std::array<char, 8> kMagic{'S', 'R', 'S', 'D', 'K', 'P', '0', '1'};
  9. /** Runtime-pack schema version accepted by this reader. */
  10. inline constexpr std::uint32_t kVersion = 42;
  11. /** The ABI contains only activity identity, topology, placement, and panel metadata. */
  12. inline constexpr std::uint32_t kSectionCount = 51;
  13. #if defined(SUNRISE_ACTIVITY_SDK_TESTING)
  14. /** The runtime accepts only the checked generated SDK build. Each pin is a SHA-256 digest. */
  15. inline constexpr std::array<std::byte, 32> kExpectedSdkBuildDigest{
  16. std::byte{0x13}, std::byte{0x1A}, std::byte{0xA4}, std::byte{0x2D}, std::byte{0xE2},
  17. std::byte{0x8E}, std::byte{0xBF}, std::byte{0x73}, std::byte{0x90}, std::byte{0xA1},
  18. std::byte{0xBD}, std::byte{0x47}, std::byte{0x7C}, std::byte{0xC0}, std::byte{0x16},
  19. std::byte{0xBF}, std::byte{0x93}, std::byte{0x0E}, std::byte{0x1B}, std::byte{0x00},
  20. std::byte{0x45}, std::byte{0x9F}, std::byte{0x89}, std::byte{0xDD}, std::byte{0xF4},
  21. std::byte{0x9F}, std::byte{0xBE}, std::byte{0xED}, std::byte{0x3B}, std::byte{0x42},
  22. std::byte{0xA3}, std::byte{0x20},
  23. };
  24. /** The runtime accepts only the full generated row projection for this build. */
  25. inline constexpr std::array<std::byte, 32> kExpectedPayloadDigest{
  26. std::byte{0x39}, std::byte{0xE9}, std::byte{0x03}, std::byte{0x03}, std::byte{0x9B},
  27. std::byte{0xB6}, std::byte{0x0C}, std::byte{0x08}, std::byte{0xCA}, std::byte{0x1E},
  28. std::byte{0xCB}, std::byte{0x7D}, std::byte{0x19}, std::byte{0x9A}, std::byte{0x39},
  29. std::byte{0x24}, std::byte{0xE8}, std::byte{0x3A}, std::byte{0x3F}, std::byte{0xBF},
  30. std::byte{0x05}, std::byte{0x49}, std::byte{0x41}, std::byte{0x7B}, std::byte{0x7D},
  31. std::byte{0xDB}, std::byte{0x53}, std::byte{0xC2}, std::byte{0x3F}, std::byte{0x98},
  32. std::byte{0x0A}, std::byte{0x65},
  33. };
  34. /** The runtime pins the independently replayed package and executable identity. */
  35. inline constexpr std::array<std::byte, 32> kExpectedContentKeyDigest{
  36. std::byte{0xCE}, std::byte{0xFB}, std::byte{0x02}, std::byte{0xD9}, std::byte{0x24},
  37. std::byte{0x98}, std::byte{0x18}, std::byte{0x6D}, std::byte{0x0F}, std::byte{0x9A},
  38. std::byte{0x50}, std::byte{0x9A}, std::byte{0x52}, std::byte{0x10}, std::byte{0x66},
  39. std::byte{0xD3}, std::byte{0x62}, std::byte{0xBF}, std::byte{0xC4}, std::byte{0x76},
  40. std::byte{0xE6}, std::byte{0x41}, std::byte{0x06}, std::byte{0xBD}, std::byte{0x2E},
  41. std::byte{0x53}, std::byte{0x6C}, std::byte{0x71}, std::byte{0x6F}, std::byte{0xB6},
  42. std::byte{0x0F}, std::byte{0x49},
  43. };
  44. /** The runtime pins the complete normalized logical-IR identity. */
  45. inline constexpr std::array<std::byte, 32> kExpectedLogicalIrDigest{
  46. std::byte{0x1E}, std::byte{0x91}, std::byte{0xDC}, std::byte{0xBB}, std::byte{0x7D},
  47. std::byte{0xCD}, std::byte{0x5E}, std::byte{0xE0}, std::byte{0xE5}, std::byte{0x39},
  48. std::byte{0x2A}, std::byte{0xF9}, std::byte{0xF6}, std::byte{0x79}, std::byte{0x0B},
  49. std::byte{0x03}, std::byte{0x68}, std::byte{0xA0}, std::byte{0x61}, std::byte{0x93},
  50. std::byte{0xDB}, std::byte{0xA2}, std::byte{0xC8}, std::byte{0xB8}, std::byte{0xD5},
  51. std::byte{0xFA}, std::byte{0xC6}, std::byte{0x0A}, std::byte{0x88}, std::byte{0xEB},
  52. std::byte{0xF6}, std::byte{0x62},
  53. };
  54. #endif
  55. /** UINT32_MAX is the only out-of-band row or optional-string index. */
  56. inline constexpr std::uint32_t kAbsentIndex = 0xFFFFFFFFU;
  57. /** Activity flags retain the three exact joins and complete scenario extraction. */
  58. inline constexpr std::uint32_t kActivityRootExact = 0x1U;
  59. inline constexpr std::uint32_t kActivityScenarioExact = 0x2U;
  60. inline constexpr std::uint32_t kActivityContentExact = 0x4U;
  61. inline constexpr std::uint32_t kActivityExtractionPresent = 0x8U;
  62. inline constexpr std::uint32_t kActivityExactMask = kActivityRootExact | kActivityScenarioExact
  63. | kActivityContentExact
  64. | kActivityExtractionPresent;
  65. /** Activity-binding flags preserve source presence and the completeness decision. */
  66. inline constexpr std::uint32_t kActivityBindingFullSdkAcceptable = 0x1U;
  67. inline constexpr std::uint32_t kActivityBindingHasInternalName = 0x2U;
  68. inline constexpr std::uint32_t kActivityBindingHasMatchmakingConfig = 0x4U;
  69. inline constexpr std::uint32_t kActivityBindingFlagMask = kActivityBindingFullSdkAcceptable
  70. | kActivityBindingHasInternalName
  71. | kActivityBindingHasMatchmakingConfig;
  72. /** State rows expose only enabled and extraction-complete bits. */
  73. inline constexpr std::uint32_t kStateFlagMask = 0x3U;
  74. /** Slot-value decoding was independently verified for this row. */
  75. inline constexpr std::uint32_t kSlotReaderVerified = 0x1U;
  76. /** The package descriptor and reflected slot schemas joined exactly. */
  77. inline constexpr std::uint32_t kSlotSchemaJoinExact = 0x2U;
  78. /** A type-53 descriptor resolved an exact authored cue list and bounded cue count. */
  79. inline constexpr std::uint32_t kSlotDialogueCuesExact = 0x4U;
  80. /**
  81. * The scene slot's package config references no resource at all: the scene exists but was
  82. * authored empty. A resource that is referenced but cannot be read is a generation error and
  83. * gets no flag.
  84. */
  85. inline constexpr std::uint32_t kSlotAuthoredSceneUnresourced = 0x8U;
  86. /** Slot rows expose only reader, schema-join, authored-dialogue, and unresourced-scene facts. */
  87. inline constexpr std::uint32_t kSlotFlagMask = kSlotReaderVerified | kSlotSchemaJoinExact
  88. | kSlotDialogueCuesExact
  89. | kSlotAuthoredSceneUnresourced;
  90. /** Exact generated slot tuples for authored sequence and cinematic actions. */
  91. inline constexpr std::uint32_t kObjectSlotType = 4U;
  92. inline constexpr std::uint32_t kObjectComponentClass = 0x80809927U;
  93. inline constexpr std::uint32_t kObjectSenseSchema = 0x8080992EU;
  94. inline constexpr std::uint32_t kObjectAuthSchema = 0x8080992FU;
  95. inline constexpr std::uint32_t kSequenceSlotType = 5U;
  96. inline constexpr std::uint32_t kSequenceComponentClass = 0x80804F01U;
  97. inline constexpr std::uint32_t kSequenceAuthSchema = 0x80804F04U;
  98. inline constexpr std::uint32_t kCinematicSlotType = 6U;
  99. inline constexpr std::uint32_t kCinematicComponentClass = 0x80804F06U;
  100. inline constexpr std::uint32_t kCinematicAuthSchema = 0x80804F08U;
  101. /** Exact generated slot tuple for the three-channel device Auth surface. */
  102. inline constexpr std::uint32_t kDeviceSlotType = 23U;
  103. inline constexpr std::uint32_t kDeviceComponentClass = 0x80804F45U;
  104. inline constexpr std::uint32_t kDeviceSenseSchema = 0x80804F47U;
  105. inline constexpr std::uint32_t kDeviceAuthSchema = 0x80804F48U;
  106. /** Exact generated slot tuple for the occupancy-condition Auth surface. */
  107. inline constexpr std::uint32_t kOccupancySlotType = 30U;
  108. inline constexpr std::uint32_t kOccupancyComponentClass = 0x8080952FU;
  109. inline constexpr std::uint32_t kOccupancySenseSchema = 0x80809531U;
  110. inline constexpr std::uint32_t kOccupancyAuthSchema = 0x80809532U;
  111. /** Authored three-lane HUD directive state. */
  112. inline constexpr std::uint32_t kDirectiveSlotType = 68U;
  113. inline constexpr std::uint32_t kDirectiveComponentClass = 0x80804F53U;
  114. inline constexpr std::uint32_t kDirectiveAuthSchema = 0x80804F67U;
  115. /** Packed directive table layout; only the counter bit of an element's flag word is named. */
  116. inline constexpr std::uint32_t kDirectiveTableClass = 0x80804F72U;
  117. inline constexpr std::uint32_t kDirectiveEntryArrayOffset = 0x8U;
  118. inline constexpr std::uint32_t kDirectiveEntryClass = 0x80804F74U;
  119. inline constexpr std::uint32_t kDirectiveEntrySize = 0x28U;
  120. inline constexpr std::uint32_t kDirectiveEntryElementsOffset = 0x18U;
  121. inline constexpr std::uint32_t kDirectiveElementClass = 0x80804F76U;
  122. inline constexpr std::uint32_t kDirectiveElementPackedSize = 0x24U;
  123. inline constexpr std::uint32_t kDirectiveElementTitleOffset = 0x0U;
  124. inline constexpr std::uint32_t kDirectiveElementDescriptionOffset = 0x8U;
  125. inline constexpr std::uint32_t kDirectiveElementProgressOffset = 0x10U;
  126. inline constexpr std::uint32_t kDirectiveElementFlagsOffset = 0x20U;
  127. inline constexpr std::uint32_t kDirectiveElementCounter = 0x1U;
  128. /** Exact generated slot tuple and descriptor field for authored dialogue. */
  129. inline constexpr std::uint32_t kDialogueSlotType = 53U;
  130. inline constexpr std::uint32_t kDialogueComponentClass = 0x80804F4BU;
  131. inline constexpr std::uint32_t kDialogueAuthSchema = 0x80804F77U;
  132. inline constexpr std::uint32_t kDialogueAuthoredListRelativeOffset = 0x58U;
  133. inline constexpr std::uint32_t kDialogueAuthoredListClass = 0x80808D54U;
  134. inline constexpr std::uint32_t kDialogueDefinitionArrayClass = 0x80808D18U;
  135. inline constexpr std::uint32_t kDialogueGroupArrayClass = 0x80808D19U;
  136. inline constexpr std::uint32_t kDialogueMaximumCueCount = 128U;
  137. /** Inspect exposure is read-only and may be rendered by diagnostics. */
  138. inline constexpr std::uint32_t kInspectExposure = 0x1U;
  139. /** Panel-test exposure marks a candidate that still passes runtime gates. */
  140. inline constexpr std::uint32_t kPanelTestExposure = 0x2U;
  141. /** Script exposure marks a capability backed by a typed native mission intent. */
  142. inline constexpr std::uint32_t kScriptExposure = 0x4U;
  143. /** No other exposure bits are part of schema version one. */
  144. inline constexpr std::uint32_t kExposureMask =
  145. kInspectExposure | kPanelTestExposure | kScriptExposure;
  146. /** Signed relative offsets use one value that cannot name a package byte. */
  147. inline constexpr std::int64_t kAbsentRelativeOffset = (-0x7FFFFFFFFFFFFFFFLL - 1);
  148. /** Exact package classes retained by the actor RSAT projection. */
  149. inline constexpr std::uint32_t kActorRsatDescriptorClass = 0x80809BB8U;
  150. inline constexpr std::uint32_t kActorRsatSchemaClass = 0x80809BBBU;
  151. inline constexpr std::uint32_t kActorRsatSchemaFieldClass = 0x80808852U;
  152. /** Actor RSAT descriptor arrays start at this package-row offset. */
  153. inline constexpr std::uint32_t kActorRsatDescriptorArrayOffset = 0x30U;
  154. /** Actor definitions name their package-backed behavior configuration at this offset. */
  155. inline constexpr std::uint32_t kActorBehaviorConfigRelativeOffset = 0x300U;
  156. /** Physical package class of an exact actor behavior configuration reference. */
  157. inline constexpr std::uint32_t kActorBehaviorConfigClass = 0x80809C36U;
  158. /** Engine-semantics rows expose only facts tied to the pinned executable. */
  159. enum class ActorSemanticProvenance : std::uint32_t {
  160. executableStatic = 1,
  161. packageField = 2,
  162. engineZeroDefault = 3,
  163. notPresent = 4,
  164. };
  165. enum class ActorCommandEffect : std::uint32_t {
  166. opaque = 0,
  167. setFaction = 1,
  168. };
  169. /** Row flag bits. `Exact` means every fact of that row came from the pinned executable. */
  170. inline constexpr std::uint32_t kActorMessageSchemaExact = 0x1U;
  171. inline constexpr std::uint32_t kActorCommandDefinitionExact = 0x1U;
  172. inline constexpr std::uint32_t kActorBehaviorProfileExact = 0x1U;
  173. inline constexpr std::uint32_t kSimulationEventDefinitionExact = 0x1U;
  174. inline constexpr std::uint32_t kSimulationEventPrimaryAbsent = 0x2U;
  175. inline constexpr std::uint32_t kSimulationEventSecondaryAbsent = 0x4U;
  176. inline constexpr std::uint32_t kRuntimeSchemaExact = 0x1U;
  177. inline constexpr std::uint32_t kRuntimeSchemaArrayRegion = 0x2U;
  178. inline constexpr std::uint32_t kRuntimeFieldExact = 0x1U;
  179. inline constexpr std::uint32_t kRuntimeFieldPresenceBit = 0x2U;
  180. inline constexpr std::uint32_t kRuntimeFieldDynamicActorCommand = 0x4U;
  181. inline constexpr std::uint32_t kRuntimeFieldNestedSchema = 0x8U;
  182. inline constexpr std::uint32_t kRuntimeFieldDynamicArray = 0x10U;
  183. inline constexpr std::uint32_t kRuntimeFieldCustomCodec = 0x20U;
  184. inline constexpr std::uint32_t kRuntimeTypeDefinitionExact = 0x1U;
  185. inline constexpr std::uint32_t kRuntimeTypeFixed = 0x2U;
  186. inline constexpr std::uint32_t kRuntimeTypeParametric = 0x4U;
  187. inline constexpr std::uint32_t kRuntimeTypeValueDependent = 0x8U;
  188. inline constexpr std::uint32_t kRuntimeTypeNullable = 0x10U;
  189. inline constexpr std::uint32_t kRuntimeTypeNested = 0x20U;
  190. inline constexpr std::uint32_t kRuntimeTypeUnion = 0x40U;
  191. inline constexpr std::uint32_t kRuntimeTypeResolved = 0x80U;
  192. inline constexpr std::uint32_t kRuntimeTypeRemapped = 0x100U;
  193. inline constexpr std::uint32_t kRuntimeTypeUnsupported = 0x200U;
  194. inline constexpr std::uint32_t kRuntimeTypeObfuscated = 0x400U;
  195. inline constexpr std::uint32_t kRuntimeTypeSelectorValidationRequired = 0x800U;
  196. /** Executable reflection field codes used by the published runtime schemas. */
  197. enum class RuntimeFieldType : std::uint32_t {
  198. nested = 1,
  199. boolean = 2,
  200. signed8 = 3,
  201. signed16 = 4,
  202. signed32 = 5,
  203. signed64 = 6,
  204. unsigned8 = 7,
  205. unsigned16 = 8,
  206. unsigned32 = 9,
  207. unsigned64 = 10,
  208. quantizedFloat = 11,
  209. vector3 = 13,
  210. compressedVector = 14,
  211. entityToken = 18,
  212. nullableTag = 22,
  213. dynamicSchema = 23,
  214. variant = 24,
  215. resolvedVariant = 25,
  216. custom28 = 28,
  217. actorCommand = 36,
  218. };
  219. /** Native reflection codec family required by one materialized schema. */
  220. enum class RuntimeCodecFamily : std::uint32_t {
  221. activity = 1,
  222. sobjectModeZero = 2,
  223. sobjectModeOne = 4,
  224. };
  225. /** SObject RSAT and entity-type row flag bits, in the order the extraction sets them. */
  226. inline constexpr std::uint32_t kSobjectRsatExact = 0x1U;
  227. inline constexpr std::uint32_t kSobjectRsatDescriptorDynamicPresenceEligible = 0x1U;
  228. inline constexpr std::uint32_t kEntityTypeDefinitionExact = 0x1U;
  229. inline constexpr std::uint32_t kEntityTypeStockEmittable = 0x2U;
  230. inline constexpr std::uint32_t kEntityTypeUpdateSupported = 0x4U;
  231. inline constexpr std::uint32_t kEntityTypeUpdateUsesSobjectRsat = 0x8U;
  232. inline constexpr std::uint32_t kSobjectRsatFieldBindingExact = 0x1U;
  233. inline constexpr std::uint32_t kSobjectRsatFieldBindingHasRuntimeSchema = 0x2U;
  234. /** RSAT schema field arrays start at this package-row offset. */
  235. inline constexpr std::uint32_t kActorRsatSchemaFieldArrayOffset = 0x20U;
  236. /** Descriptor flags retain only the exact dynamic-tail eligibility bit. */
  237. inline constexpr std::uint32_t kRsatDescriptorDynamicPresenceEligible = 0x1U;
  238. inline constexpr std::uint32_t kRsatDescriptorFlagMask = kRsatDescriptorDynamicPresenceEligible;
  239. /** Schema flags retain eligibility and the typed-array shape. */
  240. inline constexpr std::uint32_t kRsatSchemaDynamicPresenceEligible = 0x1U;
  241. inline constexpr std::uint32_t kRsatSchemaTypedFieldArray = 0x2U;
  242. inline constexpr std::uint32_t kRsatSchemaFlagMask =
  243. kRsatSchemaDynamicPresenceEligible | kRsatSchemaTypedFieldArray;
  244. /** Runnable squads retain all six exact extraction facts. */
  245. inline constexpr std::uint32_t kSquadSourceDescriptorExact = 0x1U;
  246. inline constexpr std::uint32_t kSquadSpawnerRuleEdgeExact = 0x2U;
  247. inline constexpr std::uint32_t kSquadScenarioOccurrenceExact = 0x4U;
  248. inline constexpr std::uint32_t kSquadAllPointsExact = 0x8U;
  249. inline constexpr std::uint32_t kSquadMemberCountValid = 0x10U;
  250. inline constexpr std::uint32_t kSquadCandidateCountsInvariantComplete = 0x20U;
  251. inline constexpr std::uint32_t kSquadFlagMask =
  252. kSquadSourceDescriptorExact | kSquadSpawnerRuleEdgeExact | kSquadScenarioOccurrenceExact
  253. | kSquadAllPointsExact | kSquadMemberCountValid | kSquadCandidateCountsInvariantComplete;
  254. /** A squad runs only with every extraction fact present. */
  255. inline constexpr std::uint32_t kSquadRunnableMask = kSquadFlagMask;
  256. /** Member flags separate actor resolution from count-array completeness. */
  257. inline constexpr std::uint32_t kSquadMemberActorClassExact = 0x1U;
  258. inline constexpr std::uint32_t kSquadMemberCandidateCountsComplete = 0x2U;
  259. inline constexpr std::uint32_t kSquadMemberCandidateCountsInvariant = 0x4U;
  260. inline constexpr std::uint32_t kSquadMemberNoNullCandidates = 0x8U;
  261. /** Every authored candidate resolves to the same four-byte spawn profile. */
  262. inline constexpr std::uint32_t kSquadMemberSpawnProfileExact = 0x10U;
  263. inline constexpr std::uint32_t kSquadMemberFlagMask = 0x1FU;
  264. inline constexpr std::uint32_t kSquadMemberInvariantReadyMask =
  265. kSquadMemberCandidateCountsComplete | kSquadMemberCandidateCountsInvariant
  266. | kSquadMemberNoNullCandidates;
  267. /** Anchor rows carry only the exact placed-entry and position fact. */
  268. inline constexpr std::uint32_t kSquadAnchorExact = 0x1U;
  269. /** The placement came from the spawner's own point set, not from an object list. */
  270. inline constexpr std::uint32_t kSquadAnchorInline = 0x2U;
  271. /** The placement came from a container list or a type-4 descriptor, not the object's own list. */
  272. inline constexpr std::uint32_t kSquadAnchorExternal = 0x4U;
  273. inline constexpr std::uint32_t kSquadAnchorFlagMask =
  274. kSquadAnchorExact | kSquadAnchorInline | kSquadAnchorExternal;
  275. /** Type-43 resource rows carry one exact package descriptor reference. */
  276. inline constexpr std::uint32_t kAuthoredSceneResourceExact = 0x1U;
  277. inline constexpr std::uint32_t kAuthoredSceneResourceFlagMask = kAuthoredSceneResourceExact;
  278. inline constexpr std::uint32_t kAuthoredSceneSlotType = 43U;
  279. inline constexpr std::uint32_t kAuthoredSceneComponentClass = 0x80806382U;
  280. inline constexpr std::uint32_t kAuthoredSceneSenseSchema = 0x8080626AU;
  281. inline constexpr std::uint32_t kAuthoredSceneAuthSchema = 0x8080626BU;
  282. inline constexpr std::uint32_t kAuthoredSceneResourceRelativeOffset = 0x60U;
  283. inline constexpr std::uint32_t kAuthoredSceneResourceClass = 0x80809C0FU;
  284. /**
  285. * The resource names its graph at a fixed field. The graph's gate table is an array field whose
  286. * rows each name one gate body by absolute offset. A body opens with the graph's tag and the row
  287. * class, then carries the event key and the gate's ordinal (-1 opens every scene).
  288. */
  289. inline constexpr std::uint32_t kAuthoredSceneGraphRelativeOffset = 0xC0U;
  290. inline constexpr std::uint32_t kAuthoredSceneGraphClass = 0x80809C36U;
  291. inline constexpr std::uint32_t kPackageArrayMarker = 0x80809FBDU;
  292. inline constexpr std::uint32_t kAuthoredSceneGateTableOffset = 0xE8U;
  293. inline constexpr std::uint32_t kAuthoredSceneGateRowClass = 0x8080637DU;
  294. inline constexpr std::uint32_t kAuthoredSceneGateRowSize = 0xC0U;
  295. inline constexpr std::uint32_t kAuthoredSceneGateBodyClass = 0x8080638AU;
  296. inline constexpr std::uint32_t kAuthoredSceneGateBodyOffset = 0x8U;
  297. inline constexpr std::uint32_t kAuthoredSceneGateSize = 0x60U;
  298. inline constexpr std::uint32_t kAuthoredSceneGateClassOffset = 0x4U;
  299. inline constexpr std::uint32_t kAuthoredSceneGateKeyOffset = 0x10U;
  300. inline constexpr std::uint32_t kAuthoredSceneGateOrdinalOffset = 0x58U;
  301. /** More gates than any installed scene declares; a larger count is a misread graph. */
  302. inline constexpr std::uint32_t kAuthoredSceneGateCapacity = 64U;
  303. inline constexpr std::uint32_t kAuthoredSceneEventKeyExact = 0x1U;
  304. inline constexpr std::uint32_t kAuthoredSceneEventKeyFlagMask = kAuthoredSceneEventKeyExact;
  305. /** Scene-to-squad rows retain one exact same-object package reference. */
  306. inline constexpr std::uint32_t kAuthoredSceneSquadSameObjectExact = 0x1U;
  307. /** A type-42 performance sensor names the same-object squad it drives at descriptor +0x58. */
  308. inline constexpr std::uint32_t kAuthoredSceneSquadPerformanceTargetExact = 0x2U;
  309. inline constexpr std::uint32_t kAuthoredSceneSquadFlagMask =
  310. kAuthoredSceneSquadSameObjectExact | kAuthoredSceneSquadPerformanceTargetExact;
  311. /** The package slot type, classes and descriptor offset that name a performance sensor. */
  312. inline constexpr std::uint32_t kPerformanceSlotType = 42U;
  313. inline constexpr std::uint32_t kPerformanceComponentClass = 0x80809583U;
  314. inline constexpr std::uint32_t kPerformanceAuthSchema = 0x80809586U;
  315. inline constexpr std::uint32_t kPerformanceSquadReferenceRelativeOffset = 0x58U;
  316. /** The actor definition that lists state-machine state names, and that group's name hash. */
  317. inline constexpr std::uint32_t kActorStateMachineDefinitionClass = 0x8080815FU;
  318. inline constexpr std::uint32_t kActorStateMachineGroupHash = 0xAFB11A12U;
  319. inline constexpr std::uint32_t kActorStateNameExact = 0x1U;
  320. inline constexpr std::uint32_t kActorStateNameFlagMask = kActorStateNameExact;
  321. /** Sequence metadata is exact package data; names additionally require a verified FNV-1 match. */
  322. inline constexpr std::uint32_t kActorSequenceExact = 1;
  323. inline constexpr std::uint32_t kActorSequenceNameVerified = 2;
  324. inline constexpr std::uint32_t kActorSequenceSymbolFromPath = 4;
  325. inline constexpr std::uint32_t kActorSequenceEntryFlagMask = 7;
  326. /** Native global and actor-local definition classes own these two action table fields. */
  327. inline constexpr std::uint32_t kActorSequenceGlobalDefinitionClass = 0x8080816CU;
  328. inline constexpr std::uint32_t kActorSequenceLocalDefinitionClass = 0x8080815FU;
  329. inline constexpr std::uint32_t kActorSequenceGlobalArrayOffset = 152;
  330. inline constexpr std::uint32_t kActorSequenceLocalArrayOffset = 16;
  331. inline constexpr std::uint32_t kActorSequenceOwnerSourceClass = 0x808082ECU;
  332. /**
  333. * A type-43 config lists its participants as a table: a 64-bit count, the table class, then one
  334. * 64-bit pointer per participant, each relative to its own field. A pointer lands on a block's
  335. * payload; the block's class sits in the four bytes before it. Only squad blocks become edges.
  336. */
  337. inline constexpr std::uint32_t kAuthoredSceneParticipantCountRelativeOffset = 0x88U;
  338. inline constexpr std::uint32_t kAuthoredSceneParticipantTableClassRelativeOffset = 0x90U;
  339. inline constexpr std::uint32_t kAuthoredSceneParticipantTableRelativeOffset = 0x98U;
  340. inline constexpr std::uint32_t kAuthoredSceneParticipantTableClass = 0x80806268U;
  341. inline constexpr std::uint32_t kAuthoredSceneParticipantPointerSize = 8U;
  342. inline constexpr std::uint32_t kAuthoredSceneParticipantClassSize = 4U;
  343. /** More participants than any installed scene declares; a larger count is a misread config. */
  344. inline constexpr std::uint32_t kAuthoredSceneParticipantCapacity = 64U;
  345. inline constexpr std::uint32_t kAuthoredSceneSquadBlockClass = 0x80806262U;
  346. /** Squad reference inside a squad block's payload: object key, then slot type and index. */
  347. inline constexpr std::uint32_t kAuthoredSceneSquadPayloadReferenceOffset = 0x8U;
  348. /** Exact type-38 task edge to the authored type-3 objective component it mutates. */
  349. inline constexpr std::uint32_t kTaskSlotType = 38U;
  350. inline constexpr std::uint32_t kTaskComponentClass = 0x80807D87U;
  351. inline constexpr std::uint32_t kTaskAuthSchema = 0x80807D89U;
  352. inline constexpr std::uint32_t kTaskReferenceRelativeOffset = 0x58U;
  353. inline constexpr std::uint32_t kTaskBitIndexRelativeOffset = 0x60U;
  354. inline constexpr std::uint32_t kTaskTargetExact = 0x1U;
  355. inline constexpr std::uint32_t kTaskTargetFlagMask = kTaskTargetExact;
  356. inline constexpr std::uint32_t kObjectiveSlotType = 3U;
  357. inline constexpr std::uint32_t kObjectiveComponentClass = 0x80808348U;
  358. inline constexpr std::uint32_t kObjectiveSenseSchema = 0x80807F04U;
  359. inline constexpr std::uint32_t kObjectiveAuthSchema = 0x80807F0CU;
  360. /** Type-1 source slots must retain the exact reflected auth identity. */
  361. inline constexpr std::uint32_t kSquadSlotType = 1U;
  362. inline constexpr std::uint32_t kSquadAuthSchema = 0x80807EC9U;
  363. inline constexpr std::uint32_t kSquadSenseSchema = 0x80807ECCU;
  364. inline constexpr std::uint32_t kSquadComponentClass = 0x80809A3BU;
  365. /** Four bits carry a nonempty list of at most fifteen authored members. */
  366. inline constexpr std::uint32_t kSquadMinimumMemberCount = 1U;
  367. inline constexpr std::uint32_t kSquadMaximumMemberCount = 15U;
  368. /** Each member retains one authored count from all six candidate arrays. */
  369. inline constexpr std::size_t kSquadCandidateCountLaneCount = 6;
  370. /** Captured-estate message total, available only to regression fixtures. */
  371. inline constexpr std::uint32_t kActivityMessageCount = 59U;
  372. /** Message and field rows are data-only declarations, never generic write authority. */
  373. inline constexpr std::uint32_t kActivityMessageDataOnly = 0x1U;
  374. inline constexpr std::uint32_t kActivityMessageFieldPresenceBit = 0x1U;
  375. inline constexpr std::uint32_t kActivityMessageFieldCoinedName = 0x2U;
  376. inline constexpr std::uint32_t kActivityMessageFieldDocumentedRow = 0x4U;
  377. inline constexpr std::uint32_t kActivityMessageFieldRepeatedBlock = 0x8U;
  378. inline constexpr std::uint32_t kActivityMessageFieldDataOnly = 0x10U;
  379. /**
  380. * Operator exposure grants. Neither bit means redacted, so a field a generator never reached shows
  381. * nothing. Both bits together are invalid and the validators refuse the row.
  382. */
  383. inline constexpr std::uint32_t kActivityMessageFieldOperatorValue = 0x40U;
  384. inline constexpr std::uint32_t kActivityMessageFieldProvisionalValue = 0x80U;
  385. inline constexpr std::uint32_t kActivityMessageFieldExposureMask =
  386. kActivityMessageFieldOperatorValue | kActivityMessageFieldProvisionalValue;
  387. /** Three closed exposure grades a decoded scalar can carry toward the operator sidecar. */
  388. enum class ActivityMessageFieldExposure : std::uint32_t {
  389. redacted = 0,
  390. operatorValue = 1,
  391. provisionalValue = 2,
  392. };
  393. /** @return True when the row carries at most one exposure grant. */
  394. [[nodiscard]] constexpr bool valid_field_exposure(std::uint32_t flags) noexcept {
  395. return (flags & kActivityMessageFieldExposureMask) != kActivityMessageFieldExposureMask;
  396. }
  397. /** @return The exposure a field row grants, defaulting to redacted. */
  398. [[nodiscard]] constexpr ActivityMessageFieldExposure field_exposure(std::uint32_t flags) noexcept {
  399. if ((flags & kActivityMessageFieldOperatorValue) != 0) {
  400. return ActivityMessageFieldExposure::operatorValue;
  401. }
  402. if ((flags & kActivityMessageFieldProvisionalValue) != 0) {
  403. return ActivityMessageFieldExposure::provisionalValue;
  404. }
  405. return ActivityMessageFieldExposure::redacted;
  406. }
  407. /** Route rows are data-only declarations, never generic send authority. */
  408. inline constexpr std::uint32_t kActivityCommunicationDataOnly = 0x1U;
  409. /** Generated typed mission surfaces, the capacity a route's surface list is sized from. */
  410. inline constexpr std::uint32_t kMissionSurfaceCount = 30U;
  411. /** Absent signed wire metadata uses the only value outside every admitted field value. */
  412. inline constexpr std::int64_t kAbsentSignedValue = (-0x7FFFFFFFFFFFFFFFLL - 1);
  413. /** Fixed packed byte sizes make producer and consumer ABI drift fail at compile time. */
  414. inline constexpr std::size_t kSectionSize = 16;
  415. inline constexpr std::size_t kHeaderSize = 976;
  416. inline constexpr std::size_t kStringRefSize = 8;
  417. inline constexpr std::size_t kRangeSize = 8;
  418. inline constexpr std::size_t kActivitySize = 124;
  419. inline constexpr std::size_t kActivityBindingTagSize = 4;
  420. inline constexpr std::size_t kActivityBindingLocatorSize = 16;
  421. inline constexpr std::size_t kScenarioSize = 48;
  422. inline constexpr std::size_t kBubbleSize = 40;
  423. inline constexpr std::size_t kStateSize = 64;
  424. inline constexpr std::size_t kObjectSize = 52;
  425. inline constexpr std::size_t kOccurrenceSize = 56;
  426. inline constexpr std::size_t kSlotSize = 80;
  427. inline constexpr std::size_t kTextSize = 16;
  428. inline constexpr std::size_t kCapabilitySize = 56;
  429. inline constexpr std::size_t kGateSize = 48;
  430. inline constexpr std::size_t kRefusalSize = 40;
  431. inline constexpr std::size_t kActorClassSize = 68;
  432. inline constexpr std::size_t kRsatDescriptorSize = 92;
  433. inline constexpr std::size_t kRsatSchemaSize = 64;
  434. inline constexpr std::size_t kRsatFieldSize = 40;
  435. inline constexpr std::size_t kSquadSize = 52;
  436. inline constexpr std::size_t kSquadMemberSize = 48;
  437. inline constexpr std::size_t kSquadAnchorSize = 48;
  438. inline constexpr std::size_t kAuthoredSceneResourceSize = 40;
  439. inline constexpr std::size_t kAuthoredSceneEventKeySize = 40;
  440. inline constexpr std::size_t kAuthoredSceneSquadEdgeSize = 40;
  441. inline constexpr std::size_t kTaskTargetSize = 44;
  442. inline constexpr std::size_t kDialogueCueTextSize = 36;
  443. inline constexpr std::size_t kDirectiveElementSize = 76;
  444. inline constexpr std::size_t kBehaviorProgramSize = 28;
  445. inline constexpr std::size_t kBehaviorInputSize = 36;
  446. inline constexpr std::size_t kBehaviorChannelWriteSize = 16;
  447. inline constexpr std::size_t kBehaviorOwnerSize = 32;
  448. inline constexpr std::size_t kBehaviorActivityBindingSize = 32;
  449. inline constexpr std::size_t kActorMessageSchemaSize = 48;
  450. inline constexpr std::size_t kActorCommandDefinitionSize = 64;
  451. inline constexpr std::size_t kActorBehaviorProfileSize = 32;
  452. inline constexpr std::size_t kSimulationEventDefinitionSize = 56;
  453. inline constexpr std::size_t kRuntimeSchemaSize = 48;
  454. inline constexpr std::size_t kRuntimeFieldSize = 56;
  455. inline constexpr std::size_t kRuntimeTypeDefinitionSize = 56;
  456. inline constexpr std::size_t kSobjectRsatSize = 56;
  457. inline constexpr std::size_t kSobjectRsatDescriptorSize = 72;
  458. inline constexpr std::size_t kEntityTypeDefinitionSize = 56;
  459. inline constexpr std::size_t kSobjectRsatFieldBindingSize = 40;
  460. inline constexpr std::size_t kActorStateNameSize = 24;
  461. inline constexpr std::size_t kActorSequenceTableSize = 24;
  462. inline constexpr std::size_t kActorSequenceEntrySize = 64;
  463. inline constexpr std::size_t kActorSequenceBindingSize = 32;
  464. inline constexpr std::size_t kRsatDescriptorRawRowSize = 32;
  465. inline constexpr std::size_t kRsatSchemaFieldRawRowSize = 40;
  466. /** Expected packed field offsets pin producer-consumer order as well as total row size. */
  467. namespace offset {
  468. /** Every constant below is the current packed byte offset for its named field. */
  469. inline constexpr std::size_t kSectionOffset = 0;
  470. inline constexpr std::size_t kSectionCount = 8;
  471. inline constexpr std::size_t kSectionStride = 12;
  472. inline constexpr std::size_t kHeaderMagic = 0;
  473. inline constexpr std::size_t kHeaderVersion = 8;
  474. inline constexpr std::size_t kHeaderHeaderSize = 12;
  475. inline constexpr std::size_t kHeaderFileSize = 16;
  476. inline constexpr std::size_t kHeaderPayloadSha256 = 24;
  477. inline constexpr std::size_t kHeaderSdkBuildSha256 = 56;
  478. inline constexpr std::size_t kHeaderContentKeySha256 = 88;
  479. inline constexpr std::size_t kHeaderLogicalIrSha256 = 120;
  480. inline constexpr std::size_t kHeaderSectionCount = 152;
  481. inline constexpr std::size_t kHeaderReserved = 156;
  482. inline constexpr std::size_t kHeaderSections = 160;
  483. inline constexpr std::size_t kStringRefOffset = 0;
  484. inline constexpr std::size_t kStringRefLength = 4;
  485. inline constexpr std::size_t kRangeFirst = 0;
  486. inline constexpr std::size_t kRangeCount = 4;
  487. inline constexpr std::size_t kActivityActivityIndex = 0;
  488. inline constexpr std::size_t kActivityDefinitionHash = 4;
  489. inline constexpr std::size_t kActivityId = 8;
  490. inline constexpr std::size_t kActivityInternalName = 16;
  491. inline constexpr std::size_t kActivityDisplayName = 24;
  492. inline constexpr std::size_t kActivityScenarioIndex = 32;
  493. inline constexpr std::size_t kActivityFlags = 36;
  494. inline constexpr std::size_t kActivityAliases = 40;
  495. inline constexpr std::size_t kActivityCapabilities = 48;
  496. inline constexpr std::size_t kActivitySelectedActivityRootTag = 56;
  497. inline constexpr std::size_t kActivitySelectedScenarioTag = 60;
  498. inline constexpr std::size_t kActivityMatchmakingConfigTag = 64;
  499. inline constexpr std::size_t kActivityJoinStatus = 68;
  500. inline constexpr std::size_t kActivityBindingDisposition = 72;
  501. inline constexpr std::size_t kActivityBindingReason = 76;
  502. inline constexpr std::size_t kActivityBindingEvidenceBasis = 80;
  503. inline constexpr std::size_t kActivityRunnableStatus = 84;
  504. inline constexpr std::size_t kActivityBindingFlags = 88;
  505. inline constexpr std::size_t kActivityRootCandidateTags = 92;
  506. inline constexpr std::size_t kActivityScenarioNameCandidateTags = 100;
  507. inline constexpr std::size_t kActivityEvidenceRootTags = 108;
  508. inline constexpr std::size_t kActivityBindingLocators = 116;
  509. inline constexpr std::size_t kActivityBindingTagTag = 0;
  510. inline constexpr std::size_t kActivityBindingLocatorTag = 0;
  511. inline constexpr std::size_t kActivityBindingLocatorReserved = 4;
  512. inline constexpr std::size_t kActivityBindingLocatorOffset = 8;
  513. inline constexpr std::size_t kScenarioTag = 0;
  514. inline constexpr std::size_t kScenarioReserved = 4;
  515. inline constexpr std::size_t kScenarioId = 8;
  516. inline constexpr std::size_t kScenarioName = 16;
  517. inline constexpr std::size_t kScenarioBubbles = 24;
  518. inline constexpr std::size_t kScenarioStates = 32;
  519. inline constexpr std::size_t kScenarioOccurrences = 40;
  520. inline constexpr std::size_t kBubbleId = 0;
  521. inline constexpr std::size_t kBubbleName = 8;
  522. inline constexpr std::size_t kBubbleScenarioIndex = 16;
  523. inline constexpr std::size_t kBubbleBubbleOrdinal = 20;
  524. inline constexpr std::size_t kBubbleNameHash = 24;
  525. inline constexpr std::size_t kBubbleReserved = 28;
  526. inline constexpr std::size_t kBubbleStates = 32;
  527. inline constexpr std::size_t kStateId = 0;
  528. inline constexpr std::size_t kStateEntryId = 8;
  529. inline constexpr std::size_t kStateRegistryId = 16;
  530. inline constexpr std::size_t kStateScenarioIndex = 24;
  531. inline constexpr std::size_t kStateBubbleIndex = 28;
  532. inline constexpr std::size_t kStateStateOrdinal = 32;
  533. inline constexpr std::size_t kStateEntryIndex = 36;
  534. inline constexpr std::size_t kStateSliceSetIndex = 40;
  535. inline constexpr std::size_t kStateMapBubbleIndex = 44;
  536. inline constexpr std::size_t kStateStateHash = 48;
  537. inline constexpr std::size_t kStatePublicValue = 52;
  538. inline constexpr std::size_t kStateFlags = 56;
  539. inline constexpr std::size_t kStateRegistryTag = 60;
  540. inline constexpr std::size_t kObjectId = 0;
  541. inline constexpr std::size_t kObjectObjectTag = 8;
  542. inline constexpr std::size_t kObjectObjectKey = 12;
  543. inline constexpr std::size_t kObjectSlots = 16;
  544. inline constexpr std::size_t kObjectConfigCount = 24;
  545. inline constexpr std::size_t kObjectDescriptorCount = 28;
  546. inline constexpr std::size_t kObjectPlacedSubblockCount = 32;
  547. inline constexpr std::size_t kObjectPlacedLeafCount = 36;
  548. inline constexpr std::size_t kObjectPlacedHopCount = 40;
  549. inline constexpr std::size_t kObjectBareTargetCount = 44;
  550. inline constexpr std::size_t kOccurrenceId = 0;
  551. inline constexpr std::size_t kOccurrenceContextRegistryKey = 8;
  552. inline constexpr std::size_t kOccurrenceRegistryId = 16;
  553. inline constexpr std::size_t kOccurrenceEntryId = 24;
  554. inline constexpr std::size_t kOccurrenceScenarioIndex = 32;
  555. inline constexpr std::size_t kOccurrenceBubbleIndex = 36;
  556. inline constexpr std::size_t kOccurrenceStateIndex = 40;
  557. inline constexpr std::size_t kOccurrenceObjectIndex = 44;
  558. inline constexpr std::size_t kOccurrenceRegistryField = 48;
  559. inline constexpr std::size_t kOccurrenceObjectOrdinal = 52;
  560. inline constexpr std::size_t kSlotId = 0;
  561. inline constexpr std::size_t kSlotName = 8;
  562. inline constexpr std::size_t kSlotSenseSchemaId = 16;
  563. inline constexpr std::size_t kSlotAuthSchemaId = 24;
  564. inline constexpr std::size_t kSlotObjectIndex = 32;
  565. inline constexpr std::size_t kSlotSlotIndex = 36;
  566. inline constexpr std::size_t kSlotSlotType = 40;
  567. inline constexpr std::size_t kSlotComponentClass = 44;
  568. inline constexpr std::size_t kSlotSenseSchema = 48;
  569. inline constexpr std::size_t kSlotAuthSchema = 52;
  570. inline constexpr std::size_t kSlotFlags = 56;
  571. inline constexpr std::size_t kSlotReserved = 60;
  572. inline constexpr std::size_t kSlotAliases = 64;
  573. inline constexpr std::size_t kSlotCapabilities = 72;
  574. inline constexpr std::size_t kTextValue = 0;
  575. inline constexpr std::size_t kTextKind = 8;
  576. inline constexpr std::size_t kTextReserved = 12;
  577. inline constexpr std::size_t kCapabilityId = 0;
  578. inline constexpr std::size_t kCapabilityOperation = 8;
  579. inline constexpr std::size_t kCapabilityValueSchemaId = 16;
  580. inline constexpr std::size_t kCapabilitySubjectKind = 24;
  581. inline constexpr std::size_t kCapabilitySubjectIndex = 28;
  582. inline constexpr std::size_t kCapabilityExposureFlags = 32;
  583. inline constexpr std::size_t kCapabilityCandidateExposureFlags = 36;
  584. inline constexpr std::size_t kCapabilityGates = 40;
  585. inline constexpr std::size_t kCapabilityRefusals = 48;
  586. inline constexpr std::size_t kGateGate = 0;
  587. inline constexpr std::size_t kGateStatus = 8;
  588. inline constexpr std::size_t kGateReasonCode = 16;
  589. inline constexpr std::size_t kGateRequired = 24;
  590. inline constexpr std::size_t kGateObserved = 32;
  591. inline constexpr std::size_t kGateWouldConfirm = 40;
  592. inline constexpr std::size_t kRefusalId = 0;
  593. inline constexpr std::size_t kRefusalExposure = 8;
  594. inline constexpr std::size_t kRefusalStatus = 16;
  595. inline constexpr std::size_t kRefusalReasonCodes = 24;
  596. inline constexpr std::size_t kRefusalCapabilityIndex = 32;
  597. inline constexpr std::size_t kRefusalReserved = 36;
  598. inline constexpr std::size_t kActorClassId = 0;
  599. inline constexpr std::size_t kActorClassDefinitionTag = 8;
  600. inline constexpr std::size_t kActorClassNameHash = 12;
  601. inline constexpr std::size_t kActorClassRsatTag = 16;
  602. inline constexpr std::size_t kActorClassRsatReverseDefinitionTag = 20;
  603. inline constexpr std::size_t kActorClassObjectType = 24;
  604. inline constexpr std::size_t kActorClassDescriptorArrayOffset = 28;
  605. inline constexpr std::size_t kActorClassDescriptorArrayRelative = 32;
  606. inline constexpr std::size_t kActorClassDescriptorArrayHeaderOffset = 40;
  607. inline constexpr std::size_t kActorClassDescriptorArrayDataOffset = 44;
  608. inline constexpr std::size_t kActorClassDescriptorElementClass = 48;
  609. inline constexpr std::size_t kActorClassDescriptors = 52;
  610. inline constexpr std::size_t kActorClassDynamicPresenceTailCount = 60;
  611. inline constexpr std::size_t kActorClassReserved = 64;
  612. inline constexpr std::size_t kRsatDescriptorId = 0;
  613. inline constexpr std::size_t kRsatDescriptorActorClassIndex = 8;
  614. inline constexpr std::size_t kRsatDescriptorRsatTag = 12;
  615. inline constexpr std::size_t kRsatDescriptorOrdinal = 16;
  616. inline constexpr std::size_t kRsatDescriptorOffset = 20;
  617. inline constexpr std::size_t kRsatDescriptorElementClass = 24;
  618. inline constexpr std::size_t kRsatDescriptorComponentTag = 28;
  619. inline constexpr std::size_t kRsatDescriptorSchemaIndex = 32;
  620. inline constexpr std::size_t kRsatDescriptorSchemaTag = 36;
  621. inline constexpr std::size_t kRsatDescriptorSchemaFieldCount = 40;
  622. inline constexpr std::size_t kRsatDescriptorSchemaFirstFieldRuntimeGate = 44;
  623. inline constexpr std::size_t kRsatDescriptorSchemaFirstFieldRawU32At10 = 48;
  624. inline constexpr std::size_t kRsatDescriptorFlags = 52;
  625. inline constexpr std::size_t kRsatDescriptorDynamicPresenceTailOrdinal = 56;
  626. inline constexpr std::size_t kRsatDescriptorRawRow = 60;
  627. inline constexpr std::size_t kRsatSchemaId = 0;
  628. inline constexpr std::size_t kRsatSchemaTag = 8;
  629. inline constexpr std::size_t kRsatSchemaClass = 12;
  630. inline constexpr std::size_t kRsatSchemaFieldCount = 16;
  631. inline constexpr std::size_t kRsatSchemaFieldArrayOffset = 20;
  632. inline constexpr std::size_t kRsatSchemaFieldArrayRelative = 24;
  633. inline constexpr std::size_t kRsatSchemaFieldArrayHeaderOffset = 32;
  634. inline constexpr std::size_t kRsatSchemaFieldArrayDataOffset = 36;
  635. inline constexpr std::size_t kRsatSchemaFieldElementClass = 40;
  636. inline constexpr std::size_t kRsatSchemaFirstFieldRuntimeGate = 44;
  637. inline constexpr std::size_t kRsatSchemaFirstFieldRawU32At10 = 48;
  638. inline constexpr std::size_t kRsatSchemaFlags = 52;
  639. inline constexpr std::size_t kRsatSchemaFields = 56;
  640. inline constexpr std::size_t kRsatFieldRawRow = 0;
  641. inline constexpr std::size_t kSquadId = 0;
  642. inline constexpr std::size_t kSquadScenarioIndex = 8;
  643. inline constexpr std::size_t kSquadObjectIndex = 12;
  644. inline constexpr std::size_t kSquadSlotIndex = 16;
  645. inline constexpr std::size_t kSquadSpawnerConfigTag = 20;
  646. inline constexpr std::size_t kSquadSpawnRuleConfigTag = 24;
  647. inline constexpr std::size_t kSquadFlags = 28;
  648. inline constexpr std::size_t kSquadOccurrenceIndex = 32;
  649. inline constexpr std::size_t kSquadMembers = 36;
  650. inline constexpr std::size_t kSquadAnchors = 44;
  651. inline constexpr std::size_t kSquadMemberId = 0;
  652. inline constexpr std::size_t kSquadMemberSquadIndex = 8;
  653. inline constexpr std::size_t kSquadMemberMemberOrdinal = 12;
  654. inline constexpr std::size_t kSquadMemberMemberKey = 16;
  655. inline constexpr std::size_t kSquadMemberActorClassIndex = 20;
  656. inline constexpr std::size_t kSquadMemberFlags = 24;
  657. inline constexpr std::size_t kSquadMemberCandidateCounts = 28;
  658. inline constexpr std::size_t kSquadMemberDefaultCount = 40;
  659. inline constexpr std::size_t kSquadMemberAuthoredSpawnProfile = 44;
  660. inline constexpr std::size_t kSquadAnchorId = 0;
  661. inline constexpr std::size_t kSquadAnchorSquadIndex = 8;
  662. inline constexpr std::size_t kSquadAnchorPointOrdinal = 12;
  663. inline constexpr std::size_t kSquadAnchorObjectListTag = 16;
  664. inline constexpr std::size_t kSquadAnchorPlacementOrdinal = 20;
  665. inline constexpr std::size_t kSquadAnchorFlags = 24;
  666. inline constexpr std::size_t kSquadAnchorPlacedEntryIdentity = 28;
  667. inline constexpr std::size_t kSquadAnchorPositionBits = 36;
  668. inline constexpr std::size_t kAuthoredSceneResourceId = 0;
  669. inline constexpr std::size_t kAuthoredSceneResourceSlotIndex = 8;
  670. inline constexpr std::size_t kAuthoredSceneResourceConfigTag = 12;
  671. inline constexpr std::size_t kAuthoredSceneResourceDescriptorOffset = 16;
  672. inline constexpr std::size_t kAuthoredSceneResourceFieldOffset = 20;
  673. inline constexpr std::size_t kAuthoredSceneResourceTag = 24;
  674. inline constexpr std::size_t kAuthoredSceneResourceClass = 28;
  675. inline constexpr std::size_t kAuthoredSceneResourceFlags = 32;
  676. inline constexpr std::size_t kAuthoredSceneResourceReserved = 36;
  677. inline constexpr std::size_t kAuthoredSceneSquadEdgeId = 0;
  678. inline constexpr std::size_t kAuthoredSceneSquadEdgeSceneSlotIndex = 8;
  679. inline constexpr std::size_t kAuthoredSceneSquadEdgeSquadSlotIndex = 12;
  680. inline constexpr std::size_t kAuthoredSceneSquadEdgeConfigTag = 16;
  681. inline constexpr std::size_t kAuthoredSceneSquadEdgeDescriptorOffset = 20;
  682. inline constexpr std::size_t kAuthoredSceneSquadEdgeReferenceFieldOffset = 24;
  683. inline constexpr std::size_t kAuthoredSceneSquadEdgeTargetObjectKey = 28;
  684. inline constexpr std::size_t kAuthoredSceneSquadEdgeFlags = 32;
  685. inline constexpr std::size_t kAuthoredSceneSquadEdgeReserved = 36;
  686. inline constexpr std::size_t kTaskTargetId = 0;
  687. inline constexpr std::size_t kTaskTargetTaskSlotIndex = 8;
  688. inline constexpr std::size_t kTaskTargetObjectiveSlotIndex = 12;
  689. inline constexpr std::size_t kTaskTargetConfigTag = 16;
  690. inline constexpr std::size_t kTaskTargetDescriptorOffset = 20;
  691. inline constexpr std::size_t kTaskTargetReferenceFieldOffset = 24;
  692. inline constexpr std::size_t kTaskTargetTargetObjectKey = 28;
  693. inline constexpr std::size_t kTaskTargetBitIndex = 32;
  694. inline constexpr std::size_t kTaskTargetFlags = 36;
  695. inline constexpr std::size_t kTaskTargetReserved = 40;
  696. inline constexpr std::size_t kActorStateNameActorClassIndex = 0;
  697. inline constexpr std::size_t kActorStateNameDefinitionTag = 4;
  698. inline constexpr std::size_t kActorStateNameGroupHash = 8;
  699. inline constexpr std::size_t kActorStateNameNameHash = 12;
  700. inline constexpr std::size_t kActorStateNameOrdinal = 16;
  701. inline constexpr std::size_t kActorStateNameFlags = 20;
  702. } // namespace offset
  703. /** Sections have a fixed order so every row range has one target domain. */
  704. enum class SectionIndex : std::uint32_t {
  705. strings,
  706. activities,
  707. scenarios,
  708. bubbles,
  709. states,
  710. objects,
  711. occurrences,
  712. slots,
  713. texts,
  714. capabilities,
  715. gates,
  716. refusals,
  717. actorClasses,
  718. rsatDescriptors,
  719. rsatSchemas,
  720. rsatFields,
  721. squads,
  722. squadMembers,
  723. squadAnchors,
  724. authoredSceneResources,
  725. authoredSceneSquadEdges,
  726. taskTargets,
  727. dialogueCueTexts,
  728. directiveElements,
  729. activityBindingTags,
  730. activityBindingLocators,
  731. behaviorPrograms,
  732. behaviorInputs,
  733. behaviorChannelWrites,
  734. behaviorOwners,
  735. behaviorActivityBindings,
  736. actorMessageSchemas,
  737. actorCommandDefinitions,
  738. actorBehaviorProfiles,
  739. simulationEventDefinitions,
  740. runtimeSchemas,
  741. runtimeFields,
  742. sobjectRsats,
  743. sobjectRsatDescriptors,
  744. entityTypeDefinitions,
  745. sobjectRsatFieldBindings,
  746. runtimeTypeDefinitions,
  747. actorStateNames,
  748. actorSequenceTables,
  749. actorSequenceEntries,
  750. actorSequenceBindings,
  751. dialogueCues,
  752. combatObjectiveGroups,
  753. actorAbilities,
  754. actorAbilityTargets,
  755. authoredSceneEventKeys,
  756. };
  757. static_assert(static_cast<std::uint32_t>(SectionIndex::authoredSceneEventKeys) + 1
  758. == kSectionCount);
  759. /** Exact activity-name/root join result retained for every activity row. */
  760. enum class ActivityJoinStatus : std::uint32_t {
  761. exact = 0,
  762. liveNameMissing = 1,
  763. sourceNameMissing = 2,
  764. liveNameAmbiguous = 3,
  765. };
  766. /** Exhaustive fixed-scenario applicability result for one activity definition. */
  767. enum class ActivityBindingDisposition : std::uint32_t {
  768. fixedScenario = 0,
  769. namedDefinitionUnavailable = 1,
  770. noDirectFixedActivityName = 2,
  771. unresolvedRunnable = 3,
  772. };
  773. /** Stable explanation for the selected activity-binding disposition. */
  774. enum class ActivityBindingReason : std::uint32_t {
  775. exactActivityRootScenarioEdge = 0,
  776. installedRouteAbsent = 1,
  777. noDirectFixedActivityName = 2,
  778. activityRootNameAmbiguous = 3,
  779. activityRootEdgeMissing = 4,
  780. };
  781. /** Source evidence domain that supports an activity-binding classification. */
  782. enum class ActivityBindingEvidenceBasis : std::uint32_t {
  783. effectiveActivityRootNamePlusPayloadScenarioEdge = 0,
  784. effectiveActivityAndScenarioRootNameCensus = 1,
  785. activityRecordInternalNameEmpty = 2,
  786. effectiveActivityRootNameCensus = 3,
  787. };
  788. /** Runtime interpretation retained independently from fixed-scenario applicability. */
  789. enum class ActivityRunnableStatus : std::uint32_t {
  790. fixedScenarioBound = 0,
  791. unavailableInInstalledEstate = 1,
  792. fixedScenarioNotApplicable = 2,
  793. unresolved = 3,
  794. };
  795. /** Text rows keep aliases and refusal reasons separate without copying strings. */
  796. enum class TextKind : std::uint32_t {
  797. internalAlias = 1,
  798. displayAlias = 2,
  799. slotAlias = 3,
  800. refusalReason = 4,
  801. };
  802. /** A capability subject is one activity, object slot, or catalog-global host API. */
  803. enum class SubjectKind : std::uint32_t {
  804. activity = 1,
  805. slot = 2,
  806. hostApi = 3,
  807. };
  808. /** Direction values are copied from the checked activity-message registry. */
  809. enum class ActivityMessageDirection : std::uint32_t {
  810. remoteToClient = 1,
  811. clientToRemote = 2,
  812. bidirectional = 3,
  813. clientToRemoteSpecial = 4,
  814. nameOnly = 5,
  815. };
  816. /** Coverage values distinguish exact wire grammars from explicit partial or name-only rows. */
  817. enum class ActivityMessageCoverage : std::uint32_t {
  818. fixedWireExact = 1,
  819. customWireExact = 2,
  820. partialDynamicBody = 3,
  821. variableWire = 4,
  822. serviceConversion = 5,
  823. nameOnly = 6,
  824. };
  825. /** Activity messages either start directly or carry the proved delta-root bit. */
  826. enum class ActivityMessageCallForm : std::uint32_t {
  827. direct = 1,
  828. deltaRootBit = 2,
  829. };
  830. /** Definition provenance separates absent, authored, and executable-graph rows. */
  831. enum class ActivityMessageDefinitionState : std::uint32_t {
  832. none = 1,
  833. authored = 2,
  834. graph = 3,
  835. };
  836. /** One field comes from the executable definition graph or a checked authored grammar. */
  837. enum class ActivityMessageFieldSource : std::uint32_t {
  838. graph = 1,
  839. authored = 2,
  840. };
  841. /** Field names retain their evidence grade rather than implying semantic certainty. */
  842. enum class ActivityMessageFieldConfidence : std::uint32_t {
  843. verified = 1,
  844. assumed = 2,
  845. unnamed = 3,
  846. };
  847. #pragma pack(push, 1)
  848. /** One section points at fixed-stride rows inside the mapped file. */
  849. struct Section final {
  850. std::uint64_t offset{};
  851. std::uint32_t count{};
  852. std::uint32_t stride{};
  853. };
  854. /** The header binds the whole payload to one generated SDK identity. */
  855. struct Header final {
  856. std::array<char, 8> magic{};
  857. std::uint32_t version{};
  858. std::uint32_t headerSize{};
  859. std::uint64_t fileSize{};
  860. std::array<std::byte, 32> payloadSha256{};
  861. std::array<std::byte, 32> sdkBuildSha256{};
  862. std::array<std::byte, 32> contentKeySha256{};
  863. std::array<std::byte, 32> logicalIrSha256{};
  864. std::uint32_t sectionCount{};
  865. std::uint32_t reserved{};
  866. std::array<Section, kSectionCount> sections{};
  867. };
  868. /** String offsets are relative to the byte-string section. */
  869. struct StringRef final {
  870. std::uint32_t offset{};
  871. std::uint32_t length{};
  872. };
  873. /** Row ranges are relative to the one section implied by their parent field. */
  874. struct Range final {
  875. std::uint32_t first{};
  876. std::uint32_t count{};
  877. };
  878. /** One investment activity and its exact scenario binding. */
  879. struct Activity final {
  880. std::uint32_t activityIndex{};
  881. std::uint32_t definitionHash{};
  882. StringRef id{};
  883. StringRef internalName{};
  884. StringRef displayName{};
  885. std::uint32_t scenarioIndex{};
  886. std::uint32_t flags{};
  887. Range aliases{};
  888. Range capabilities{};
  889. std::uint32_t selectedActivityRootTag{kAbsentIndex};
  890. std::uint32_t selectedScenarioTag{kAbsentIndex};
  891. std::uint32_t matchmakingConfigTag{kAbsentIndex};
  892. std::uint32_t joinStatus{};
  893. std::uint32_t bindingDisposition{};
  894. std::uint32_t bindingReason{};
  895. std::uint32_t bindingEvidenceBasis{};
  896. std::uint32_t runnableStatus{};
  897. std::uint32_t bindingFlags{};
  898. Range activityRootCandidateTags{};
  899. Range scenarioNameCandidateTags{};
  900. Range evidenceRootTags{};
  901. Range bindingLocators{};
  902. };
  903. /** One canonical package tag in an activity-owned candidate or evidence range. */
  904. struct ActivityBindingTag final {
  905. std::uint32_t tag{};
  906. };
  907. /** One exact package payload location supporting an activity classification. */
  908. struct ActivityBindingLocator final {
  909. std::uint32_t tag{};
  910. std::uint32_t reserved{};
  911. std::uint64_t offset{};
  912. };
  913. /** One scenario owns contiguous bubble, state, and occurrence ranges. */
  914. struct Scenario final {
  915. std::uint32_t tag{};
  916. std::uint32_t reserved{};
  917. StringRef id{};
  918. StringRef name{};
  919. Range bubbles{};
  920. Range states{};
  921. Range occurrences{};
  922. };
  923. /** One scenario bubble owns a contiguous subset of that scenario's states. */
  924. struct Bubble final {
  925. StringRef id{};
  926. StringRef name{};
  927. std::uint32_t scenarioIndex{};
  928. std::uint32_t bubbleOrdinal{};
  929. std::uint32_t nameHash{};
  930. std::uint32_t reserved{};
  931. Range states{};
  932. };
  933. /** One scenario state carries its package entry and registry identities. */
  934. struct State final {
  935. StringRef id{};
  936. StringRef entryId{};
  937. StringRef registryId{};
  938. std::uint32_t scenarioIndex{};
  939. std::uint32_t bubbleIndex{};
  940. std::uint32_t stateOrdinal{};
  941. /** Exact index of this authored state entry in its owning scenario table. */
  942. std::uint32_t entryIndex{};
  943. /** Exact package slice-set index selected by this state; not a membership region. */
  944. std::uint32_t sliceSetIndex{};
  945. std::uint32_t mapBubbleIndex{};
  946. std::uint32_t stateHash{};
  947. std::uint32_t publicValue{};
  948. std::uint32_t flags{};
  949. std::uint32_t registryTag{};
  950. };
  951. /** One object definition owns its reusable slot definitions. */
  952. struct Object final {
  953. StringRef id{};
  954. std::uint32_t objectTag{};
  955. std::uint32_t objectKey{};
  956. Range slots{};
  957. std::uint32_t configCount{};
  958. std::uint32_t descriptorCount{};
  959. std::uint32_t placedSubblockCount{};
  960. std::uint32_t placedLeafCount{};
  961. std::uint32_t placedHopCount{};
  962. std::uint32_t bareTargetCount{};
  963. /** Authored placements the game replicates. Zero with placements means client-built content. */
  964. std::uint32_t replicatedPlacementCount{};
  965. };
  966. /** One scenario-local occurrence binds an object to one registry context. */
  967. struct Occurrence final {
  968. StringRef id{};
  969. StringRef contextRegistryKey{};
  970. StringRef registryId{};
  971. StringRef entryId{};
  972. std::uint32_t scenarioIndex{};
  973. std::uint32_t bubbleIndex{};
  974. std::uint32_t stateIndex{};
  975. std::uint32_t objectIndex{};
  976. std::uint32_t registryField{};
  977. std::uint32_t objectOrdinal{};
  978. };
  979. /** One object slot carries inspectable schema identity and capability ranges. */
  980. struct Slot final {
  981. StringRef id{};
  982. StringRef name{};
  983. StringRef senseSchemaId{};
  984. StringRef authSchemaId{};
  985. std::uint32_t objectIndex{};
  986. std::uint32_t slotIndex{};
  987. std::uint32_t slotType{};
  988. std::uint32_t componentClass{};
  989. std::uint32_t senseSchema{};
  990. std::uint32_t authSchema{};
  991. std::uint32_t flags{};
  992. /** Authored dialogue cue count when kSlotDialogueCuesExact is set; zero otherwise. */
  993. std::uint32_t reserved{};
  994. Range aliases{};
  995. Range capabilities{};
  996. };
  997. /** One typed string row is owned by an alias or refusal range. */
  998. struct Text final {
  999. StringRef value{};
  1000. std::uint32_t kind{};
  1001. std::uint32_t reserved{};
  1002. };
  1003. /** One inspectable or panel-candidate operation carries all of its gates. */
  1004. struct Capability final {
  1005. StringRef id{};
  1006. StringRef operation{};
  1007. StringRef valueSchemaId{};
  1008. std::uint32_t subjectKind{};
  1009. std::uint32_t subjectIndex{};
  1010. std::uint32_t exposureFlags{};
  1011. std::uint32_t candidateExposureFlags{};
  1012. Range gates{};
  1013. Range refusals{};
  1014. };
  1015. /** One capability gate records the required, observed, and refusal state. */
  1016. struct Gate final {
  1017. StringRef gate{};
  1018. StringRef status{};
  1019. StringRef reasonCode{};
  1020. StringRef required{};
  1021. StringRef observed{};
  1022. StringRef wouldConfirm{};
  1023. };
  1024. /** One refused exposure owns stable reason-code text rows. */
  1025. struct Refusal final {
  1026. StringRef id{};
  1027. StringRef exposure{};
  1028. StringRef status{};
  1029. Range reasonCodes{};
  1030. std::uint32_t capabilityIndex{};
  1031. std::uint32_t reserved{};
  1032. };
  1033. /** One actor definition owns its exact package RSAT descriptor sequence. */
  1034. struct ActorClass final {
  1035. StringRef id{};
  1036. std::uint32_t definitionTag{};
  1037. std::uint32_t nameHash{};
  1038. std::uint32_t rsatTag{};
  1039. std::uint32_t rsatReverseDefinitionTag{};
  1040. std::uint32_t objectType{};
  1041. std::uint32_t descriptorArrayOffset{};
  1042. std::int64_t descriptorArrayRelative{};
  1043. std::uint32_t descriptorArrayHeaderOffset{};
  1044. std::uint32_t descriptorArrayDataOffset{};
  1045. std::uint32_t descriptorElementClass{};
  1046. Range descriptors{};
  1047. std::uint32_t dynamicPresenceTailCount{};
  1048. std::array<std::int8_t, 4> authoredSpawnProfile{};
  1049. };
  1050. /** One ordered RSAT descriptor retains the complete 32-byte package row. */
  1051. struct RsatDescriptor final {
  1052. StringRef id{};
  1053. std::uint32_t actorClassIndex{};
  1054. std::uint32_t rsatTag{};
  1055. std::uint32_t descriptorOrdinal{};
  1056. std::uint32_t descriptorOffset{};
  1057. std::uint32_t descriptorElementClass{};
  1058. std::uint32_t componentTag{};
  1059. std::uint32_t schemaIndex{};
  1060. std::uint32_t schemaTag{};
  1061. std::uint32_t schemaFieldCount{};
  1062. std::uint32_t schemaFirstFieldRuntimeGate{};
  1063. std::uint32_t schemaFirstFieldRawU32At10{};
  1064. std::uint32_t flags{};
  1065. std::uint32_t dynamicPresenceTailOrdinal{};
  1066. std::array<std::byte, kRsatDescriptorRawRowSize> rawRow{};
  1067. };
  1068. /** One RSAT schema owns its exact ordered 40-byte field rows. */
  1069. struct RsatSchema final {
  1070. StringRef id{};
  1071. std::uint32_t schemaTag{};
  1072. std::uint32_t schemaClass{};
  1073. std::uint32_t fieldCount{};
  1074. std::uint32_t fieldArrayOffset{};
  1075. std::int64_t fieldArrayRelative{};
  1076. std::uint32_t fieldArrayHeaderOffset{};
  1077. std::uint32_t fieldArrayDataOffset{};
  1078. std::uint32_t fieldElementClass{};
  1079. std::uint32_t firstFieldRuntimeGate{};
  1080. std::uint32_t firstFieldRawU32At10{};
  1081. std::uint32_t flags{};
  1082. Range fields{};
  1083. };
  1084. /** One RSAT field is the unmodified 40-byte package row. */
  1085. struct RsatField final {
  1086. std::array<std::byte, kRsatSchemaFieldRawRowSize> rawRow{};
  1087. };
  1088. /** One scenario-local type-1 source owns its authored members and exact anchors. */
  1089. struct Squad final {
  1090. StringRef id{};
  1091. std::uint32_t scenarioIndex{};
  1092. std::uint32_t objectIndex{};
  1093. std::uint32_t slotIndex{};
  1094. std::uint32_t spawnerConfigTag{};
  1095. std::uint32_t spawnRuleConfigTag{};
  1096. std::uint32_t flags{};
  1097. std::uint32_t occurrenceIndex{};
  1098. Range members{};
  1099. Range anchors{};
  1100. };
  1101. /** One authored squad member retains six candidate-array counts and its invariant default. */
  1102. struct SquadMember final {
  1103. StringRef id{};
  1104. std::uint32_t squadIndex{};
  1105. std::uint32_t memberOrdinal{};
  1106. std::uint32_t memberKey{};
  1107. std::uint32_t actorClassIndex{kAbsentIndex};
  1108. std::uint32_t flags{};
  1109. std::array<std::uint16_t, kSquadCandidateCountLaneCount> candidateCounts{};
  1110. std::int32_t defaultCount{-1};
  1111. std::array<std::int8_t, 4> authoredSpawnProfile{};
  1112. };
  1113. /** One exact authored anchor retains its placed-entry identity and raw position bits. */
  1114. struct SquadAnchor final {
  1115. StringRef id{};
  1116. std::uint32_t squadIndex{};
  1117. std::uint32_t pointOrdinal{};
  1118. std::uint32_t objectListTag{};
  1119. std::uint32_t placementOrdinal{};
  1120. std::uint32_t flags{};
  1121. std::uint64_t placedEntryIdentity{};
  1122. std::array<std::uint32_t, 3> positionBits{};
  1123. };
  1124. /** One row retains a descriptor-relative type-43 package resource tag. */
  1125. struct AuthoredSceneResource final {
  1126. StringRef id{};
  1127. std::uint32_t slotIndex{};
  1128. std::uint32_t configTag{};
  1129. std::uint32_t descriptorOffset{};
  1130. std::uint32_t resourceFieldOffset{};
  1131. std::uint32_t resourceTag{};
  1132. std::uint32_t resourceClass{};
  1133. std::uint32_t flags{};
  1134. std::uint32_t reserved{};
  1135. };
  1136. /** One event gate of a type-43 scene's graph, in the scene's gate order. */
  1137. struct AuthoredSceneEventKey final {
  1138. StringRef id{};
  1139. std::uint32_t sceneSlotIndex{};
  1140. std::uint32_t resourceTag{};
  1141. std::uint32_t graphTag{};
  1142. /** Offset of the gate element inside the graph, the row's provenance. */
  1143. std::uint32_t gateOffset{};
  1144. std::int32_t ordinal{};
  1145. std::uint32_t key{};
  1146. std::uint32_t flags{};
  1147. std::uint32_t reserved{};
  1148. };
  1149. /** One type-43 slot retains an exact same-object reference to one type-1 squad slot. */
  1150. struct AuthoredSceneSquadEdge final {
  1151. StringRef id{};
  1152. std::uint32_t sceneSlotIndex{};
  1153. std::uint32_t squadSlotIndex{};
  1154. std::uint32_t configTag{};
  1155. std::uint32_t descriptorOffset{};
  1156. std::uint32_t referenceFieldOffset{};
  1157. std::uint32_t targetObjectKey{};
  1158. std::uint32_t flags{};
  1159. std::uint32_t reserved{};
  1160. };
  1161. /** One task sensor names the exact objective bit its changed generation clears. */
  1162. struct TaskTarget final {
  1163. StringRef id{};
  1164. std::uint32_t taskSlotIndex{};
  1165. std::uint32_t objectiveSlotIndex{};
  1166. std::uint32_t configTag{};
  1167. std::uint32_t descriptorOffset{};
  1168. std::uint32_t referenceFieldOffset{};
  1169. std::uint32_t targetObjectKey{};
  1170. std::uint32_t bitIndex{};
  1171. std::uint32_t flags{};
  1172. std::uint32_t reserved{};
  1173. };
  1174. /** One exact Type 2 actor owns a group and request in its local ability definition. */
  1175. struct ActorAbility final {
  1176. std::uint32_t slotIndex{};
  1177. std::uint32_t actorClassIndex{};
  1178. std::uint32_t definitionTag{};
  1179. std::uint32_t groupHash{};
  1180. std::uint32_t requestHash{};
  1181. };
  1182. /** One authored Type 58 point bounds the ability evaluator's selector index. */
  1183. struct ActorAbilityTarget final {
  1184. std::uint32_t slotIndex{};
  1185. std::uint32_t resourceTag{};
  1186. std::uint32_t selectorCount{};
  1187. bool operator==(const ActorAbilityTarget&) const = default;
  1188. };
  1189. /** One authored combat group belongs to an exact objective slot. */
  1190. struct CombatObjectiveGroup final {
  1191. std::uint32_t slotIndex{};
  1192. std::uint32_t groupIndex{};
  1193. std::uint32_t taskCount{};
  1194. bool operator==(const CombatObjectiveGroup&) const = default;
  1195. };
  1196. /** A delayed cue expires after this authored window; it is not a playback duration. */
  1197. struct DialogueCue final {
  1198. std::uint32_t slotIndex{};
  1199. std::uint32_t cueIndex{};
  1200. std::uint32_t definitionHash{};
  1201. float authoredWindowSeconds{};
  1202. bool operator==(const DialogueCue&) const = default;
  1203. };
  1204. /** One localized variant belongs to one exact authored type-53 cue definition. */
  1205. struct DialogueCueText final {
  1206. StringRef id{};
  1207. StringRef text{};
  1208. std::uint32_t slotIndex{};
  1209. std::uint32_t cueIndex{};
  1210. std::uint32_t definitionHash{};
  1211. std::uint32_t containerTag{};
  1212. std::uint32_t stringHash{};
  1213. };
  1214. /** One bounded authored type-68 HUD element; an absent field is empty with zero source tags. */
  1215. struct DirectiveElement final {
  1216. StringRef id{};
  1217. StringRef title{};
  1218. StringRef description{};
  1219. std::uint32_t slotIndex{};
  1220. std::uint32_t nameHash{};
  1221. std::int32_t elementIndex{};
  1222. std::uint32_t elementCount{};
  1223. std::uint32_t titleContainerTag{};
  1224. std::uint32_t titleStringHash{};
  1225. std::uint32_t descriptionContainerTag{};
  1226. std::uint32_t descriptionStringHash{};
  1227. StringRef progress{};
  1228. std::uint32_t progressContainerTag{};
  1229. std::uint32_t progressStringHash{};
  1230. std::uint32_t flags{};
  1231. };
  1232. /** One installed compiled behavior root and its complete local channel-edge ranges. */
  1233. struct BehaviorProgram final {
  1234. std::uint32_t rootTag{};
  1235. Range inputs{};
  1236. Range channelWrites{};
  1237. std::uint32_t nodeCount{};
  1238. std::uint32_t expressionCount{};
  1239. };
  1240. /** One exact compiled expression read from an object-local float4 channel. */
  1241. struct BehaviorInput final {
  1242. std::uint32_t programIndex{};
  1243. std::uint32_t nodeOffset{};
  1244. std::uint32_t expressionOffset{};
  1245. std::uint32_t channelHash{};
  1246. std::uint64_t inputOrMode{};
  1247. std::int32_t nativeOverride{};
  1248. std::uint32_t activeField{};
  1249. std::uint8_t selector{};
  1250. std::uint8_t role{};
  1251. std::uint16_t reserved{};
  1252. };
  1253. /** One compiled storage action writing an object-local float4 channel. */
  1254. struct BehaviorChannelWrite final {
  1255. std::uint32_t programIndex{};
  1256. std::uint32_t nodeOffset{};
  1257. std::uint32_t channelHash{};
  1258. std::uint32_t reserved{};
  1259. };
  1260. enum class BehaviorSubmissionKind : std::uint32_t {
  1261. activeNative,
  1262. passive,
  1263. unresolved,
  1264. };
  1265. /** One exact behavior root reference owned by an activity-reached actor class. */
  1266. struct BehaviorOwner final {
  1267. std::uint32_t programIndex{};
  1268. std::uint32_t actorClassIndex{};
  1269. std::uint32_t configTag{};
  1270. std::uint32_t configFieldOffset{};
  1271. std::uint32_t buildOrdinal{};
  1272. std::uint32_t descriptorOrdinal{kAbsentIndex};
  1273. std::uint32_t submitterSubtype{};
  1274. BehaviorSubmissionKind submissionKind{BehaviorSubmissionKind::unresolved};
  1275. };
  1276. /** One exact behavior owner path through a squad member and scenario occurrence. */
  1277. struct BehaviorActivityBinding final {
  1278. std::uint32_t ownerIndex{};
  1279. std::uint32_t squadIndex{};
  1280. std::uint32_t squadMemberIndex{};
  1281. std::uint32_t scenarioIndex{};
  1282. std::uint32_t occurrenceIndex{};
  1283. std::uint32_t stateIndex{};
  1284. std::uint32_t objectIndex{};
  1285. std::uint32_t reserved{};
  1286. };
  1287. /** One executable-derived SObject message schema that carries actor commands. */
  1288. struct ActorMessageSchema final {
  1289. StringRef name{};
  1290. std::uint32_t definitionHandle{};
  1291. std::uint32_t durableKey{};
  1292. std::uint32_t ownerClass{};
  1293. std::uint32_t handlerSlot{};
  1294. std::uint32_t bodyType{};
  1295. ActorSemanticProvenance provenance{ActorSemanticProvenance::executableStatic};
  1296. Range commands{};
  1297. std::uint32_t flags{};
  1298. std::uint32_t reserved{};
  1299. };
  1300. /** One executable-derived actor command with its typed payload and faction values. */
  1301. struct ActorCommandDefinition final {
  1302. StringRef name{};
  1303. StringRef factionNoneName{};
  1304. StringRef factionRemovedName{};
  1305. StringRef factionHostileToAllName{};
  1306. std::uint32_t selector{};
  1307. std::uint32_t payloadHandle{};
  1308. ActorCommandEffect effect{ActorCommandEffect::opaque};
  1309. ActorSemanticProvenance provenance{ActorSemanticProvenance::executableStatic};
  1310. std::int32_t factionNone{};
  1311. std::int32_t factionRemoved{};
  1312. std::int32_t factionHostileToAll{};
  1313. std::uint32_t flags{};
  1314. };
  1315. /** One actor joins its package behavior config to the engine's initial faction rule. */
  1316. struct ActorBehaviorProfile final {
  1317. std::uint32_t actorClassIndex{};
  1318. std::uint32_t behaviorConfigTag{};
  1319. std::uint32_t behaviorConfigClass{};
  1320. std::uint32_t behaviorConfigOffset{};
  1321. std::int32_t defaultFaction{};
  1322. ActorSemanticProvenance behaviorProvenance{ActorSemanticProvenance::packageField};
  1323. ActorSemanticProvenance factionProvenance{ActorSemanticProvenance::engineZeroDefault};
  1324. std::uint32_t flags{};
  1325. };
  1326. /** One executable-derived lane-0 simulation event definition. */
  1327. struct SimulationEventDefinition final {
  1328. StringRef name{};
  1329. std::uint32_t eventType{};
  1330. std::uint32_t primarySchema{kAbsentIndex};
  1331. std::uint32_t secondarySchema{kAbsentIndex};
  1332. ActorSemanticProvenance provenance{ActorSemanticProvenance::executableStatic};
  1333. std::uint64_t descriptorEvidenceAddress{};
  1334. std::uint64_t primaryEvidenceAddress{};
  1335. std::uint64_t secondaryEvidenceAddress{};
  1336. std::uint32_t flags{};
  1337. std::uint32_t reserved{};
  1338. };
  1339. /** One reflected runtime schema required by a generated simulation event. */
  1340. struct RuntimeSchema final {
  1341. std::uint32_t handle{};
  1342. std::uint32_t decodedSize{};
  1343. std::uint32_t definitionHash{};
  1344. ActorSemanticProvenance provenance{ActorSemanticProvenance::executableStatic};
  1345. std::uint32_t definitionClass{};
  1346. std::uint32_t codecFamilies{static_cast<std::uint32_t>(RuntimeCodecFamily::activity)};
  1347. Range fields{};
  1348. std::uint64_t evidenceAddress{};
  1349. std::uint32_t flags{};
  1350. std::uint32_t arrayElementCount{};
  1351. };
  1352. /** One exact reflected field needed by a generated runtime schema. */
  1353. struct RuntimeField final {
  1354. std::uint32_t schemaIndex{};
  1355. std::uint32_t ordinal{};
  1356. std::uint32_t structOffset{};
  1357. std::uint32_t alternateOffset{};
  1358. std::uint32_t typeCode{};
  1359. std::uint32_t nestedHandle{kAbsentIndex};
  1360. std::int64_t bias{kAbsentSignedValue};
  1361. std::uint32_t bits{kAbsentIndex};
  1362. std::array<std::uint32_t, 4> codecParameters{};
  1363. std::uint32_t flags{};
  1364. };
  1365. /** One universal executable reflection type selected by a six-bit union tag. */
  1366. struct RuntimeTypeDefinition final {
  1367. StringRef name{};
  1368. std::uint32_t codecFamilies{};
  1369. std::uint32_t typeCode{};
  1370. std::uint32_t decodedSize{kAbsentIndex};
  1371. std::uint32_t fixedBits{kAbsentIndex};
  1372. std::uint32_t minimumBits{kAbsentIndex};
  1373. std::uint32_t maximumBits{kAbsentIndex};
  1374. std::uint64_t writerEvidenceAddress{};
  1375. std::uint64_t readerEvidenceAddress{};
  1376. std::uint32_t flags{};
  1377. std::uint32_t reserved{};
  1378. };
  1379. /** One installed SObject RSAT and its ordered component descriptor range. */
  1380. struct SobjectRsat final {
  1381. std::uint32_t rsatTag{};
  1382. std::uint32_t reverseDefinitionTag{kAbsentIndex};
  1383. std::uint32_t descriptorArrayOffset{};
  1384. std::int64_t descriptorArrayRelative{};
  1385. std::uint32_t descriptorArrayHeaderOffset{kAbsentIndex};
  1386. std::uint32_t descriptorArrayDataOffset{kAbsentIndex};
  1387. std::uint32_t descriptorElementClass{kAbsentIndex};
  1388. std::uint32_t dynamicPresenceTailCount{};
  1389. ActorSemanticProvenance provenance{ActorSemanticProvenance::packageField};
  1390. Range descriptors{};
  1391. std::uint32_t flags{};
  1392. std::uint32_t reserved{};
  1393. };
  1394. /** One ordered component descriptor from an installed SObject RSAT. */
  1395. struct SobjectRsatDescriptor final {
  1396. std::uint32_t rsatIndex{};
  1397. std::uint32_t descriptorOrdinal{};
  1398. std::uint32_t descriptorOffset{};
  1399. std::uint32_t componentTag{};
  1400. std::uint32_t schemaIndex{kAbsentIndex};
  1401. std::uint32_t schemaTag{};
  1402. std::uint32_t schemaFieldCount{};
  1403. std::uint32_t schemaFirstFieldRuntimeGate{kAbsentIndex};
  1404. std::uint32_t flags{};
  1405. std::uint32_t dynamicPresenceTailOrdinal{kAbsentIndex};
  1406. std::array<std::byte, kRsatDescriptorRawRowSize> rawRow{};
  1407. };
  1408. /** One executable-derived channel-2 entity type contract. */
  1409. struct EntityTypeDefinition final {
  1410. StringRef name{};
  1411. std::uint32_t entityType{};
  1412. std::uint32_t baselineSchema{kAbsentIndex};
  1413. std::uint32_t updateSchema{kAbsentIndex};
  1414. ActorSemanticProvenance provenance{ActorSemanticProvenance::executableStatic};
  1415. std::uint64_t vtableEvidenceAddress{};
  1416. std::uint64_t baselineEvidenceAddress{};
  1417. std::uint64_t updateEvidenceAddress{};
  1418. std::uint32_t flags{};
  1419. std::uint32_t reserved{};
  1420. };
  1421. /** Parsed executable-schema join carried by one package RSAT field row. */
  1422. struct SobjectRsatFieldBinding final {
  1423. std::uint32_t rsatFieldIndex{};
  1424. std::uint32_t runtimeSchemaHandle{kAbsentIndex};
  1425. std::uint32_t parameter14{};
  1426. std::uint32_t parameter18{};
  1427. std::uint64_t decodedOffset{};
  1428. std::uint32_t definitionClass{};
  1429. std::uint32_t codecFamilies{};
  1430. ActorSemanticProvenance provenance{ActorSemanticProvenance::packageField};
  1431. std::uint32_t flags{};
  1432. };
  1433. /** One state-machine state name an actor class's definition declares, in authored order. */
  1434. struct ActorStateName final {
  1435. std::uint32_t actorClassIndex{};
  1436. std::uint32_t definitionTag{};
  1437. std::uint32_t groupHash{};
  1438. std::uint32_t nameHash{};
  1439. std::uint32_t ordinal{};
  1440. std::uint32_t flags{};
  1441. };
  1442. /** One package action table shared by all actors that select it. */
  1443. struct ActorSequenceTable final {
  1444. std::uint32_t definitionTag{};
  1445. std::uint32_t definitionClass{};
  1446. std::uint32_t arrayOffset{};
  1447. Range entries{};
  1448. std::uint32_t flags{};
  1449. };
  1450. /** One authored action key, including unsupported kinds and exact diagnostic source text. */
  1451. struct ActorSequenceEntry final {
  1452. StringRef id{};
  1453. StringRef name{};
  1454. StringRef symbol{};
  1455. StringRef sourcePath{};
  1456. std::uint32_t tableIndex{};
  1457. std::uint32_t ordinal{};
  1458. std::uint32_t sourceOffset{};
  1459. std::uint32_t keyHash{};
  1460. std::uint32_t kind{};
  1461. std::uint32_t resourceTag{};
  1462. std::uint32_t flags{};
  1463. std::uint32_t reserved{};
  1464. };
  1465. /** One declared actor component chooses its global-first and local-fallback action tables. */
  1466. struct ActorSequenceBinding final {
  1467. std::uint32_t actorClassIndex{};
  1468. std::uint32_t componentOrdinal{};
  1469. std::uint32_t configTag{};
  1470. std::uint32_t sourceOffset{};
  1471. std::uint32_t globalTableIndex{kAbsentIndex};
  1472. std::uint32_t localTableIndex{kAbsentIndex};
  1473. std::uint32_t sourceClass{};
  1474. std::uint32_t flags{};
  1475. };
  1476. #pragma pack(pop)
  1477. static_assert(sizeof(Section) == kSectionSize);
  1478. static_assert(sizeof(Header) == kHeaderSize);
  1479. static_assert(sizeof(StringRef) == kStringRefSize);
  1480. static_assert(sizeof(Range) == kRangeSize);
  1481. static_assert(sizeof(Activity) == kActivitySize);
  1482. static_assert(sizeof(ActivityBindingTag) == kActivityBindingTagSize);
  1483. static_assert(sizeof(ActivityBindingLocator) == kActivityBindingLocatorSize);
  1484. static_assert(sizeof(Scenario) == kScenarioSize);
  1485. static_assert(sizeof(Bubble) == kBubbleSize);
  1486. static_assert(sizeof(State) == kStateSize);
  1487. static_assert(sizeof(Object) == kObjectSize);
  1488. static_assert(sizeof(Occurrence) == kOccurrenceSize);
  1489. static_assert(sizeof(Slot) == kSlotSize);
  1490. static_assert(sizeof(Text) == kTextSize);
  1491. static_assert(sizeof(Capability) == kCapabilitySize);
  1492. static_assert(sizeof(Gate) == kGateSize);
  1493. static_assert(sizeof(Refusal) == kRefusalSize);
  1494. static_assert(sizeof(ActorClass) == kActorClassSize);
  1495. static_assert(sizeof(RsatDescriptor) == kRsatDescriptorSize);
  1496. static_assert(sizeof(RsatSchema) == kRsatSchemaSize);
  1497. static_assert(sizeof(RsatField) == kRsatFieldSize);
  1498. static_assert(sizeof(Squad) == kSquadSize);
  1499. static_assert(sizeof(SquadMember) == kSquadMemberSize);
  1500. static_assert(sizeof(SquadAnchor) == kSquadAnchorSize);
  1501. static_assert(sizeof(AuthoredSceneResource) == kAuthoredSceneResourceSize);
  1502. static_assert(sizeof(AuthoredSceneEventKey) == kAuthoredSceneEventKeySize);
  1503. static_assert(sizeof(AuthoredSceneSquadEdge) == kAuthoredSceneSquadEdgeSize);
  1504. static_assert(sizeof(TaskTarget) == kTaskTargetSize);
  1505. static_assert(sizeof(DialogueCueText) == kDialogueCueTextSize);
  1506. static_assert(sizeof(DirectiveElement) == kDirectiveElementSize);
  1507. static_assert(sizeof(BehaviorProgram) == kBehaviorProgramSize);
  1508. static_assert(sizeof(BehaviorInput) == kBehaviorInputSize);
  1509. static_assert(sizeof(BehaviorChannelWrite) == kBehaviorChannelWriteSize);
  1510. static_assert(sizeof(BehaviorOwner) == kBehaviorOwnerSize);
  1511. static_assert(sizeof(BehaviorActivityBinding) == kBehaviorActivityBindingSize);
  1512. static_assert(sizeof(ActorMessageSchema) == kActorMessageSchemaSize);
  1513. static_assert(sizeof(ActorCommandDefinition) == kActorCommandDefinitionSize);
  1514. static_assert(sizeof(ActorBehaviorProfile) == kActorBehaviorProfileSize);
  1515. static_assert(sizeof(SimulationEventDefinition) == kSimulationEventDefinitionSize);
  1516. static_assert(sizeof(RuntimeSchema) == kRuntimeSchemaSize);
  1517. static_assert(sizeof(RuntimeField) == kRuntimeFieldSize);
  1518. static_assert(sizeof(RuntimeTypeDefinition) == kRuntimeTypeDefinitionSize);
  1519. static_assert(sizeof(SobjectRsat) == kSobjectRsatSize);
  1520. static_assert(sizeof(SobjectRsatDescriptor) == kSobjectRsatDescriptorSize);
  1521. static_assert(sizeof(EntityTypeDefinition) == kEntityTypeDefinitionSize);
  1522. static_assert(sizeof(SobjectRsatFieldBinding) == kSobjectRsatFieldBindingSize);
  1523. static_assert(sizeof(ActorStateName) == kActorStateNameSize);
  1524. static_assert(sizeof(ActorSequenceTable) == kActorSequenceTableSize);
  1525. static_assert(sizeof(ActorSequenceEntry) == kActorSequenceEntrySize);
  1526. static_assert(sizeof(ActorSequenceBinding) == kActorSequenceBindingSize);
  1527. static_assert(std::is_trivially_copyable_v<ActorStateName>
  1528. && std::is_standard_layout_v<ActorStateName>);
  1529. static_assert(offsetof(ActorStateName, actorClassIndex) == offset::kActorStateNameActorClassIndex);
  1530. static_assert(offsetof(ActorStateName, definitionTag) == offset::kActorStateNameDefinitionTag);
  1531. static_assert(offsetof(ActorStateName, groupHash) == offset::kActorStateNameGroupHash);
  1532. static_assert(offsetof(ActorStateName, nameHash) == offset::kActorStateNameNameHash);
  1533. static_assert(offsetof(ActorStateName, ordinal) == offset::kActorStateNameOrdinal);
  1534. static_assert(offsetof(ActorStateName, flags) == offset::kActorStateNameFlags);
  1535. static_assert(std::is_trivially_copyable_v<BehaviorProgram>
  1536. && std::is_standard_layout_v<BehaviorProgram>);
  1537. static_assert(std::is_trivially_copyable_v<BehaviorInput>
  1538. && std::is_standard_layout_v<BehaviorInput>);
  1539. static_assert(std::is_trivially_copyable_v<BehaviorChannelWrite>
  1540. && std::is_standard_layout_v<BehaviorChannelWrite>);
  1541. static_assert(std::is_trivially_copyable_v<BehaviorOwner>
  1542. && std::is_standard_layout_v<BehaviorOwner>);
  1543. static_assert(std::is_trivially_copyable_v<BehaviorActivityBinding>
  1544. && std::is_standard_layout_v<BehaviorActivityBinding>);
  1545. static_assert(std::is_trivially_copyable_v<ActorMessageSchema>
  1546. && std::is_standard_layout_v<ActorMessageSchema>);
  1547. static_assert(std::is_trivially_copyable_v<ActorCommandDefinition>
  1548. && std::is_standard_layout_v<ActorCommandDefinition>);
  1549. static_assert(std::is_trivially_copyable_v<ActorBehaviorProfile>
  1550. && std::is_standard_layout_v<ActorBehaviorProfile>);
  1551. static_assert(std::is_trivially_copyable_v<SimulationEventDefinition>
  1552. && std::is_standard_layout_v<SimulationEventDefinition>);
  1553. static_assert(std::is_trivially_copyable_v<RuntimeSchema>
  1554. && std::is_standard_layout_v<RuntimeSchema>);
  1555. static_assert(std::is_trivially_copyable_v<RuntimeField>
  1556. && std::is_standard_layout_v<RuntimeField>);
  1557. static_assert(std::is_trivially_copyable_v<RuntimeTypeDefinition>
  1558. && std::is_standard_layout_v<RuntimeTypeDefinition>);
  1559. static_assert(std::is_trivially_copyable_v<SobjectRsat> && std::is_standard_layout_v<SobjectRsat>);
  1560. static_assert(std::is_trivially_copyable_v<SobjectRsatDescriptor>
  1561. && std::is_standard_layout_v<SobjectRsatDescriptor>);
  1562. static_assert(std::is_trivially_copyable_v<EntityTypeDefinition>
  1563. && std::is_standard_layout_v<EntityTypeDefinition>);
  1564. static_assert(std::is_trivially_copyable_v<SobjectRsatFieldBinding>
  1565. && std::is_standard_layout_v<SobjectRsatFieldBinding>);
  1566. static_assert(offsetof(Section, offset) == offset::kSectionOffset);
  1567. static_assert(offsetof(Section, count) == offset::kSectionCount);
  1568. static_assert(offsetof(Section, stride) == offset::kSectionStride);
  1569. static_assert(offsetof(Header, magic) == offset::kHeaderMagic);
  1570. static_assert(offsetof(Header, version) == offset::kHeaderVersion);
  1571. static_assert(offsetof(Header, headerSize) == offset::kHeaderHeaderSize);
  1572. static_assert(offsetof(Header, fileSize) == offset::kHeaderFileSize);
  1573. static_assert(offsetof(Header, payloadSha256) == offset::kHeaderPayloadSha256);
  1574. static_assert(offsetof(Header, sdkBuildSha256) == offset::kHeaderSdkBuildSha256);
  1575. static_assert(offsetof(Header, contentKeySha256) == offset::kHeaderContentKeySha256);
  1576. static_assert(offsetof(Header, logicalIrSha256) == offset::kHeaderLogicalIrSha256);
  1577. static_assert(offsetof(Header, sectionCount) == offset::kHeaderSectionCount);
  1578. static_assert(offsetof(Header, reserved) == offset::kHeaderReserved);
  1579. static_assert(offsetof(Header, sections) == offset::kHeaderSections);
  1580. static_assert(offsetof(StringRef, offset) == offset::kStringRefOffset);
  1581. static_assert(offsetof(StringRef, length) == offset::kStringRefLength);
  1582. static_assert(offsetof(Range, first) == offset::kRangeFirst);
  1583. static_assert(offsetof(Range, count) == offset::kRangeCount);
  1584. static_assert(offsetof(Activity, activityIndex) == offset::kActivityActivityIndex);
  1585. static_assert(offsetof(Activity, definitionHash) == offset::kActivityDefinitionHash);
  1586. static_assert(offsetof(Activity, id) == offset::kActivityId);
  1587. static_assert(offsetof(Activity, internalName) == offset::kActivityInternalName);
  1588. static_assert(offsetof(Activity, displayName) == offset::kActivityDisplayName);
  1589. static_assert(offsetof(Activity, scenarioIndex) == offset::kActivityScenarioIndex);
  1590. static_assert(offsetof(Activity, flags) == offset::kActivityFlags);
  1591. static_assert(offsetof(Activity, aliases) == offset::kActivityAliases);
  1592. static_assert(offsetof(Activity, capabilities) == offset::kActivityCapabilities);
  1593. static_assert(offsetof(Activity, selectedActivityRootTag)
  1594. == offset::kActivitySelectedActivityRootTag);
  1595. static_assert(offsetof(Activity, selectedScenarioTag) == offset::kActivitySelectedScenarioTag);
  1596. static_assert(offsetof(Activity, matchmakingConfigTag) == offset::kActivityMatchmakingConfigTag);
  1597. static_assert(offsetof(Activity, joinStatus) == offset::kActivityJoinStatus);
  1598. static_assert(offsetof(Activity, bindingDisposition) == offset::kActivityBindingDisposition);
  1599. static_assert(offsetof(Activity, bindingReason) == offset::kActivityBindingReason);
  1600. static_assert(offsetof(Activity, bindingEvidenceBasis) == offset::kActivityBindingEvidenceBasis);
  1601. static_assert(offsetof(Activity, runnableStatus) == offset::kActivityRunnableStatus);
  1602. static_assert(offsetof(Activity, bindingFlags) == offset::kActivityBindingFlags);
  1603. static_assert(offsetof(Activity, activityRootCandidateTags) == offset::kActivityRootCandidateTags);
  1604. static_assert(offsetof(Activity, scenarioNameCandidateTags)
  1605. == offset::kActivityScenarioNameCandidateTags);
  1606. static_assert(offsetof(Activity, evidenceRootTags) == offset::kActivityEvidenceRootTags);
  1607. static_assert(offsetof(Activity, bindingLocators) == offset::kActivityBindingLocators);
  1608. static_assert(offsetof(ActivityBindingTag, tag) == offset::kActivityBindingTagTag);
  1609. static_assert(offsetof(ActivityBindingLocator, tag) == offset::kActivityBindingLocatorTag);
  1610. static_assert(offsetof(ActivityBindingLocator, reserved)
  1611. == offset::kActivityBindingLocatorReserved);
  1612. static_assert(offsetof(ActivityBindingLocator, offset) == offset::kActivityBindingLocatorOffset);
  1613. static_assert(offsetof(Scenario, tag) == offset::kScenarioTag);
  1614. static_assert(offsetof(Scenario, reserved) == offset::kScenarioReserved);
  1615. static_assert(offsetof(Scenario, id) == offset::kScenarioId);
  1616. static_assert(offsetof(Scenario, name) == offset::kScenarioName);
  1617. static_assert(offsetof(Scenario, bubbles) == offset::kScenarioBubbles);
  1618. static_assert(offsetof(Scenario, states) == offset::kScenarioStates);
  1619. static_assert(offsetof(Scenario, occurrences) == offset::kScenarioOccurrences);
  1620. static_assert(offsetof(Bubble, id) == offset::kBubbleId);
  1621. static_assert(offsetof(Bubble, name) == offset::kBubbleName);
  1622. static_assert(offsetof(Bubble, scenarioIndex) == offset::kBubbleScenarioIndex);
  1623. static_assert(offsetof(Bubble, bubbleOrdinal) == offset::kBubbleBubbleOrdinal);
  1624. static_assert(offsetof(Bubble, nameHash) == offset::kBubbleNameHash);
  1625. static_assert(offsetof(Bubble, reserved) == offset::kBubbleReserved);
  1626. static_assert(offsetof(Bubble, states) == offset::kBubbleStates);
  1627. static_assert(offsetof(State, id) == offset::kStateId);
  1628. static_assert(offsetof(State, entryId) == offset::kStateEntryId);
  1629. static_assert(offsetof(State, registryId) == offset::kStateRegistryId);
  1630. static_assert(offsetof(State, scenarioIndex) == offset::kStateScenarioIndex);
  1631. static_assert(offsetof(State, bubbleIndex) == offset::kStateBubbleIndex);
  1632. static_assert(offsetof(State, stateOrdinal) == offset::kStateStateOrdinal);
  1633. static_assert(offsetof(State, entryIndex) == offset::kStateEntryIndex);
  1634. static_assert(offsetof(State, sliceSetIndex) == offset::kStateSliceSetIndex);
  1635. static_assert(offsetof(State, mapBubbleIndex) == offset::kStateMapBubbleIndex);
  1636. static_assert(offsetof(State, stateHash) == offset::kStateStateHash);
  1637. static_assert(offsetof(State, publicValue) == offset::kStatePublicValue);
  1638. static_assert(offsetof(State, flags) == offset::kStateFlags);
  1639. static_assert(offsetof(State, registryTag) == offset::kStateRegistryTag);
  1640. static_assert(offsetof(Object, id) == offset::kObjectId);
  1641. static_assert(offsetof(Object, objectTag) == offset::kObjectObjectTag);
  1642. static_assert(offsetof(Object, objectKey) == offset::kObjectObjectKey);
  1643. static_assert(offsetof(Object, slots) == offset::kObjectSlots);
  1644. static_assert(offsetof(Object, configCount) == offset::kObjectConfigCount);
  1645. static_assert(offsetof(Object, descriptorCount) == offset::kObjectDescriptorCount);
  1646. static_assert(offsetof(Object, placedSubblockCount) == offset::kObjectPlacedSubblockCount);
  1647. static_assert(offsetof(Object, placedLeafCount) == offset::kObjectPlacedLeafCount);
  1648. static_assert(offsetof(Object, placedHopCount) == offset::kObjectPlacedHopCount);
  1649. static_assert(offsetof(Object, bareTargetCount) == offset::kObjectBareTargetCount);
  1650. static_assert(offsetof(Occurrence, id) == offset::kOccurrenceId);
  1651. static_assert(offsetof(Occurrence, contextRegistryKey) == offset::kOccurrenceContextRegistryKey);
  1652. static_assert(offsetof(Occurrence, registryId) == offset::kOccurrenceRegistryId);
  1653. static_assert(offsetof(Occurrence, entryId) == offset::kOccurrenceEntryId);
  1654. static_assert(offsetof(Occurrence, scenarioIndex) == offset::kOccurrenceScenarioIndex);
  1655. static_assert(offsetof(Occurrence, bubbleIndex) == offset::kOccurrenceBubbleIndex);
  1656. static_assert(offsetof(Occurrence, stateIndex) == offset::kOccurrenceStateIndex);
  1657. static_assert(offsetof(Occurrence, objectIndex) == offset::kOccurrenceObjectIndex);
  1658. static_assert(offsetof(Occurrence, registryField) == offset::kOccurrenceRegistryField);
  1659. static_assert(offsetof(Occurrence, objectOrdinal) == offset::kOccurrenceObjectOrdinal);
  1660. static_assert(offsetof(Slot, id) == offset::kSlotId);
  1661. static_assert(offsetof(Slot, name) == offset::kSlotName);
  1662. static_assert(offsetof(Slot, senseSchemaId) == offset::kSlotSenseSchemaId);
  1663. static_assert(offsetof(Slot, authSchemaId) == offset::kSlotAuthSchemaId);
  1664. static_assert(offsetof(Slot, objectIndex) == offset::kSlotObjectIndex);
  1665. static_assert(offsetof(Slot, slotIndex) == offset::kSlotSlotIndex);
  1666. static_assert(offsetof(Slot, slotType) == offset::kSlotSlotType);
  1667. static_assert(offsetof(Slot, componentClass) == offset::kSlotComponentClass);
  1668. static_assert(offsetof(Slot, senseSchema) == offset::kSlotSenseSchema);
  1669. static_assert(offsetof(Slot, authSchema) == offset::kSlotAuthSchema);
  1670. static_assert(offsetof(Slot, flags) == offset::kSlotFlags);
  1671. static_assert(offsetof(Slot, reserved) == offset::kSlotReserved);
  1672. static_assert(offsetof(Slot, aliases) == offset::kSlotAliases);
  1673. static_assert(offsetof(Slot, capabilities) == offset::kSlotCapabilities);
  1674. static_assert(offsetof(Text, value) == offset::kTextValue);
  1675. static_assert(offsetof(Text, kind) == offset::kTextKind);
  1676. static_assert(offsetof(Text, reserved) == offset::kTextReserved);
  1677. static_assert(offsetof(Capability, id) == offset::kCapabilityId);
  1678. static_assert(offsetof(Capability, operation) == offset::kCapabilityOperation);
  1679. static_assert(offsetof(Capability, valueSchemaId) == offset::kCapabilityValueSchemaId);
  1680. static_assert(offsetof(Capability, subjectKind) == offset::kCapabilitySubjectKind);
  1681. static_assert(offsetof(Capability, subjectIndex) == offset::kCapabilitySubjectIndex);
  1682. static_assert(offsetof(Capability, exposureFlags) == offset::kCapabilityExposureFlags);
  1683. static_assert(offsetof(Capability, candidateExposureFlags)
  1684. == offset::kCapabilityCandidateExposureFlags);
  1685. static_assert(offsetof(Capability, gates) == offset::kCapabilityGates);
  1686. static_assert(offsetof(Capability, refusals) == offset::kCapabilityRefusals);
  1687. static_assert(offsetof(Gate, gate) == offset::kGateGate);
  1688. static_assert(offsetof(Gate, status) == offset::kGateStatus);
  1689. static_assert(offsetof(Gate, reasonCode) == offset::kGateReasonCode);
  1690. static_assert(offsetof(Gate, required) == offset::kGateRequired);
  1691. static_assert(offsetof(Gate, observed) == offset::kGateObserved);
  1692. static_assert(offsetof(Gate, wouldConfirm) == offset::kGateWouldConfirm);
  1693. static_assert(offsetof(Refusal, id) == offset::kRefusalId);
  1694. static_assert(offsetof(Refusal, exposure) == offset::kRefusalExposure);
  1695. static_assert(offsetof(Refusal, status) == offset::kRefusalStatus);
  1696. static_assert(offsetof(Refusal, reasonCodes) == offset::kRefusalReasonCodes);
  1697. static_assert(offsetof(Refusal, capabilityIndex) == offset::kRefusalCapabilityIndex);
  1698. static_assert(offsetof(Refusal, reserved) == offset::kRefusalReserved);
  1699. static_assert(offsetof(ActorClass, id) == offset::kActorClassId);
  1700. static_assert(offsetof(ActorClass, definitionTag) == offset::kActorClassDefinitionTag);
  1701. static_assert(offsetof(ActorClass, nameHash) == offset::kActorClassNameHash);
  1702. static_assert(offsetof(ActorClass, rsatTag) == offset::kActorClassRsatTag);
  1703. static_assert(offsetof(ActorClass, rsatReverseDefinitionTag)
  1704. == offset::kActorClassRsatReverseDefinitionTag);
  1705. static_assert(offsetof(ActorClass, objectType) == offset::kActorClassObjectType);
  1706. static_assert(offsetof(ActorClass, descriptorArrayOffset)
  1707. == offset::kActorClassDescriptorArrayOffset);
  1708. static_assert(offsetof(ActorClass, descriptorArrayRelative)
  1709. == offset::kActorClassDescriptorArrayRelative);
  1710. static_assert(offsetof(ActorClass, descriptorArrayHeaderOffset)
  1711. == offset::kActorClassDescriptorArrayHeaderOffset);
  1712. static_assert(offsetof(ActorClass, descriptorArrayDataOffset)
  1713. == offset::kActorClassDescriptorArrayDataOffset);
  1714. static_assert(offsetof(ActorClass, descriptorElementClass)
  1715. == offset::kActorClassDescriptorElementClass);
  1716. static_assert(offsetof(ActorClass, descriptors) == offset::kActorClassDescriptors);
  1717. static_assert(offsetof(ActorClass, dynamicPresenceTailCount)
  1718. == offset::kActorClassDynamicPresenceTailCount);
  1719. static_assert(offsetof(ActorClass, authoredSpawnProfile) == offset::kActorClassReserved);
  1720. static_assert(offsetof(RsatDescriptor, id) == offset::kRsatDescriptorId);
  1721. static_assert(offsetof(RsatDescriptor, actorClassIndex) == offset::kRsatDescriptorActorClassIndex);
  1722. static_assert(offsetof(RsatDescriptor, rsatTag) == offset::kRsatDescriptorRsatTag);
  1723. static_assert(offsetof(RsatDescriptor, descriptorOrdinal) == offset::kRsatDescriptorOrdinal);
  1724. static_assert(offsetof(RsatDescriptor, descriptorOffset) == offset::kRsatDescriptorOffset);
  1725. static_assert(offsetof(RsatDescriptor, descriptorElementClass)
  1726. == offset::kRsatDescriptorElementClass);
  1727. static_assert(offsetof(RsatDescriptor, componentTag) == offset::kRsatDescriptorComponentTag);
  1728. static_assert(offsetof(RsatDescriptor, schemaIndex) == offset::kRsatDescriptorSchemaIndex);
  1729. static_assert(offsetof(RsatDescriptor, schemaTag) == offset::kRsatDescriptorSchemaTag);
  1730. static_assert(offsetof(RsatDescriptor, schemaFieldCount)
  1731. == offset::kRsatDescriptorSchemaFieldCount);
  1732. static_assert(offsetof(RsatDescriptor, schemaFirstFieldRuntimeGate)
  1733. == offset::kRsatDescriptorSchemaFirstFieldRuntimeGate);
  1734. static_assert(offsetof(RsatDescriptor, schemaFirstFieldRawU32At10)
  1735. == offset::kRsatDescriptorSchemaFirstFieldRawU32At10);
  1736. static_assert(offsetof(RsatDescriptor, flags) == offset::kRsatDescriptorFlags);
  1737. static_assert(offsetof(RsatDescriptor, dynamicPresenceTailOrdinal)
  1738. == offset::kRsatDescriptorDynamicPresenceTailOrdinal);
  1739. static_assert(offsetof(RsatDescriptor, rawRow) == offset::kRsatDescriptorRawRow);
  1740. static_assert(offsetof(RsatSchema, id) == offset::kRsatSchemaId);
  1741. static_assert(offsetof(RsatSchema, schemaTag) == offset::kRsatSchemaTag);
  1742. static_assert(offsetof(RsatSchema, schemaClass) == offset::kRsatSchemaClass);
  1743. static_assert(offsetof(RsatSchema, fieldCount) == offset::kRsatSchemaFieldCount);
  1744. static_assert(offsetof(RsatSchema, fieldArrayOffset) == offset::kRsatSchemaFieldArrayOffset);
  1745. static_assert(offsetof(RsatSchema, fieldArrayRelative) == offset::kRsatSchemaFieldArrayRelative);
  1746. static_assert(offsetof(RsatSchema, fieldArrayHeaderOffset)
  1747. == offset::kRsatSchemaFieldArrayHeaderOffset);
  1748. static_assert(offsetof(RsatSchema, fieldArrayDataOffset)
  1749. == offset::kRsatSchemaFieldArrayDataOffset);
  1750. static_assert(offsetof(RsatSchema, fieldElementClass) == offset::kRsatSchemaFieldElementClass);
  1751. static_assert(offsetof(RsatSchema, firstFieldRuntimeGate)
  1752. == offset::kRsatSchemaFirstFieldRuntimeGate);
  1753. static_assert(offsetof(RsatSchema, firstFieldRawU32At10)
  1754. == offset::kRsatSchemaFirstFieldRawU32At10);
  1755. static_assert(offsetof(RsatSchema, flags) == offset::kRsatSchemaFlags);
  1756. static_assert(offsetof(RsatSchema, fields) == offset::kRsatSchemaFields);
  1757. static_assert(offsetof(RsatField, rawRow) == offset::kRsatFieldRawRow);
  1758. static_assert(offsetof(Squad, id) == offset::kSquadId);
  1759. static_assert(offsetof(Squad, scenarioIndex) == offset::kSquadScenarioIndex);
  1760. static_assert(offsetof(Squad, objectIndex) == offset::kSquadObjectIndex);
  1761. static_assert(offsetof(Squad, slotIndex) == offset::kSquadSlotIndex);
  1762. static_assert(offsetof(Squad, spawnerConfigTag) == offset::kSquadSpawnerConfigTag);
  1763. static_assert(offsetof(Squad, spawnRuleConfigTag) == offset::kSquadSpawnRuleConfigTag);
  1764. static_assert(offsetof(Squad, flags) == offset::kSquadFlags);
  1765. static_assert(offsetof(Squad, occurrenceIndex) == offset::kSquadOccurrenceIndex);
  1766. static_assert(offsetof(Squad, members) == offset::kSquadMembers);
  1767. static_assert(offsetof(Squad, anchors) == offset::kSquadAnchors);
  1768. static_assert(offsetof(SquadMember, id) == offset::kSquadMemberId);
  1769. static_assert(offsetof(SquadMember, squadIndex) == offset::kSquadMemberSquadIndex);
  1770. static_assert(offsetof(SquadMember, memberOrdinal) == offset::kSquadMemberMemberOrdinal);
  1771. static_assert(offsetof(SquadMember, memberKey) == offset::kSquadMemberMemberKey);
  1772. static_assert(offsetof(SquadMember, actorClassIndex) == offset::kSquadMemberActorClassIndex);
  1773. static_assert(offsetof(SquadMember, flags) == offset::kSquadMemberFlags);
  1774. static_assert(offsetof(SquadMember, candidateCounts) == offset::kSquadMemberCandidateCounts);
  1775. static_assert(offsetof(SquadMember, defaultCount) == offset::kSquadMemberDefaultCount);
  1776. static_assert(offsetof(SquadMember, authoredSpawnProfile)
  1777. == offset::kSquadMemberAuthoredSpawnProfile);
  1778. static_assert(offsetof(SquadAnchor, id) == offset::kSquadAnchorId);
  1779. static_assert(offsetof(SquadAnchor, squadIndex) == offset::kSquadAnchorSquadIndex);
  1780. static_assert(offsetof(SquadAnchor, pointOrdinal) == offset::kSquadAnchorPointOrdinal);
  1781. static_assert(offsetof(SquadAnchor, objectListTag) == offset::kSquadAnchorObjectListTag);
  1782. static_assert(offsetof(SquadAnchor, placementOrdinal) == offset::kSquadAnchorPlacementOrdinal);
  1783. static_assert(offsetof(SquadAnchor, flags) == offset::kSquadAnchorFlags);
  1784. static_assert(offsetof(SquadAnchor, placedEntryIdentity)
  1785. == offset::kSquadAnchorPlacedEntryIdentity);
  1786. static_assert(offsetof(SquadAnchor, positionBits) == offset::kSquadAnchorPositionBits);
  1787. static_assert(offsetof(AuthoredSceneResource, id) == offset::kAuthoredSceneResourceId);
  1788. static_assert(offsetof(AuthoredSceneResource, slotIndex)
  1789. == offset::kAuthoredSceneResourceSlotIndex);
  1790. static_assert(offsetof(AuthoredSceneResource, configTag)
  1791. == offset::kAuthoredSceneResourceConfigTag);
  1792. static_assert(offsetof(AuthoredSceneResource, descriptorOffset)
  1793. == offset::kAuthoredSceneResourceDescriptorOffset);
  1794. static_assert(offsetof(AuthoredSceneResource, resourceFieldOffset)
  1795. == offset::kAuthoredSceneResourceFieldOffset);
  1796. static_assert(offsetof(AuthoredSceneResource, resourceTag) == offset::kAuthoredSceneResourceTag);
  1797. static_assert(offsetof(AuthoredSceneResource, resourceClass)
  1798. == offset::kAuthoredSceneResourceClass);
  1799. static_assert(offsetof(AuthoredSceneResource, flags) == offset::kAuthoredSceneResourceFlags);
  1800. static_assert(offsetof(AuthoredSceneResource, reserved) == offset::kAuthoredSceneResourceReserved);
  1801. static_assert(offsetof(AuthoredSceneSquadEdge, id) == offset::kAuthoredSceneSquadEdgeId);
  1802. static_assert(offsetof(AuthoredSceneSquadEdge, sceneSlotIndex)
  1803. == offset::kAuthoredSceneSquadEdgeSceneSlotIndex);
  1804. static_assert(offsetof(AuthoredSceneSquadEdge, squadSlotIndex)
  1805. == offset::kAuthoredSceneSquadEdgeSquadSlotIndex);
  1806. static_assert(offsetof(AuthoredSceneSquadEdge, configTag)
  1807. == offset::kAuthoredSceneSquadEdgeConfigTag);
  1808. static_assert(offsetof(AuthoredSceneSquadEdge, descriptorOffset)
  1809. == offset::kAuthoredSceneSquadEdgeDescriptorOffset);
  1810. static_assert(offsetof(AuthoredSceneSquadEdge, referenceFieldOffset)
  1811. == offset::kAuthoredSceneSquadEdgeReferenceFieldOffset);
  1812. static_assert(offsetof(AuthoredSceneSquadEdge, targetObjectKey)
  1813. == offset::kAuthoredSceneSquadEdgeTargetObjectKey);
  1814. static_assert(offsetof(AuthoredSceneSquadEdge, flags) == offset::kAuthoredSceneSquadEdgeFlags);
  1815. static_assert(offsetof(AuthoredSceneSquadEdge, reserved)
  1816. == offset::kAuthoredSceneSquadEdgeReserved);
  1817. static_assert(offsetof(TaskTarget, id) == offset::kTaskTargetId);
  1818. static_assert(offsetof(TaskTarget, taskSlotIndex) == offset::kTaskTargetTaskSlotIndex);
  1819. static_assert(offsetof(TaskTarget, objectiveSlotIndex) == offset::kTaskTargetObjectiveSlotIndex);
  1820. static_assert(offsetof(TaskTarget, configTag) == offset::kTaskTargetConfigTag);
  1821. static_assert(offsetof(TaskTarget, descriptorOffset) == offset::kTaskTargetDescriptorOffset);
  1822. static_assert(offsetof(TaskTarget, referenceFieldOffset)
  1823. == offset::kTaskTargetReferenceFieldOffset);
  1824. static_assert(offsetof(TaskTarget, targetObjectKey) == offset::kTaskTargetTargetObjectKey);
  1825. static_assert(offsetof(TaskTarget, bitIndex) == offset::kTaskTargetBitIndex);
  1826. static_assert(offsetof(TaskTarget, flags) == offset::kTaskTargetFlags);
  1827. static_assert(offsetof(TaskTarget, reserved) == offset::kTaskTargetReserved);
  1828. } // namespace sunrise::state::activity_sdk::format