activity_sdk_pack_composer.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #pragma once
  2. #include <cstddef>
  3. #include <vector>
  4. #include "../../../state/activity_sdk/generation/pack_writer.h"
  5. namespace sunrise::client::content::activity::sdk_generation::activity_enrichment_inventory {
  6. struct Snapshot;
  7. }
  8. namespace sunrise::client::content::activity::sdk_generation::activity_inventory {
  9. struct Snapshot;
  10. }
  11. namespace sunrise::client::content::activity::sdk_generation::actor_rsat_inventory {
  12. struct Snapshot;
  13. }
  14. namespace sunrise::client::content::activity::sdk_generation::authored_scene_inventory {
  15. struct Snapshot;
  16. }
  17. namespace sunrise::client::content::activity::sdk_generation::behavior_inventory {
  18. struct Snapshot;
  19. }
  20. namespace sunrise::client::content::activity::sdk_generation::policy_inventory {
  21. struct Snapshot;
  22. }
  23. namespace sunrise::client::content::activity::sdk_generation::squad_inventory {
  24. struct Facts;
  25. struct Snapshot;
  26. } // namespace sunrise::client::content::activity::sdk_generation::squad_inventory
  27. namespace sunrise::client::content::activity::sdk_generation::topology_enrichment {
  28. struct Snapshot;
  29. }
  30. namespace sunrise::client::content::activity::sdk_generation::topology_inventory {
  31. struct Snapshot;
  32. }
  33. namespace sunrise::client::content::activity::sdk_generation::pack_composer {
  34. namespace format = state::activity_sdk::format;
  35. namespace pack = state::activity_sdk::generation::pack;
  36. /** Accepted native inventories needed to close every runtime-pack section. */
  37. struct Inputs final {
  38. const activity_inventory::Snapshot* activityInventory{};
  39. const activity_enrichment_inventory::Snapshot* activityEnrichment{};
  40. const topology_inventory::Snapshot* topology{};
  41. const topology_enrichment::Snapshot* topologyEnrichment{};
  42. const policy_inventory::Snapshot* policy{};
  43. const actor_rsat_inventory::Snapshot* actorRsat{};
  44. const squad_inventory::Facts* squadFacts{};
  45. const squad_inventory::Snapshot* squads{};
  46. const authored_scene_inventory::Snapshot* authoredScenes{};
  47. const behavior_inventory::Snapshot* behaviors{};
  48. };
  49. /** Owned final rows whose borrowed view remains valid until this object changes. */
  50. struct Storage final {
  51. std::vector<std::byte> strings{};
  52. std::vector<format::Activity> activities{};
  53. std::vector<format::Scenario> scenarios{};
  54. std::vector<format::Bubble> bubbles{};
  55. std::vector<format::State> states{};
  56. std::vector<format::Object> objects{};
  57. std::vector<format::Occurrence> occurrences{};
  58. std::vector<format::Slot> slots{};
  59. std::vector<format::Text> texts{};
  60. std::vector<format::Capability> capabilities{};
  61. std::vector<format::Gate> gates{};
  62. std::vector<format::Refusal> refusals{};
  63. std::vector<format::ActorClass> actorClasses{};
  64. std::vector<format::RsatDescriptor> rsatDescriptors{};
  65. std::vector<format::RsatSchema> rsatSchemas{};
  66. std::vector<format::RsatField> rsatFields{};
  67. std::vector<format::Squad> squads{};
  68. std::vector<format::SquadMember> squadMembers{};
  69. std::vector<format::SquadAnchor> squadAnchors{};
  70. std::vector<format::AuthoredSceneResource> authoredSceneResources{};
  71. std::vector<format::AuthoredSceneSquadEdge> authoredSceneSquadEdges{};
  72. std::vector<format::TaskTarget> taskTargets{};
  73. std::vector<format::DialogueCueText> dialogueCueTexts{};
  74. std::vector<format::DirectiveElement> directiveElements{};
  75. std::vector<format::ActivityBindingTag> activityBindingTags{};
  76. std::vector<format::ActivityBindingLocator> activityBindingLocators{};
  77. std::vector<format::BehaviorProgram> behaviorPrograms{};
  78. std::vector<format::BehaviorInput> behaviorInputs{};
  79. std::vector<format::BehaviorChannelWrite> behaviorChannelWrites{};
  80. std::vector<format::BehaviorOwner> behaviorOwners{};
  81. std::vector<format::BehaviorActivityBinding> behaviorActivityBindings{};
  82. std::vector<format::ActorMessageSchema> actorMessageSchemas{};
  83. std::vector<format::ActorCommandDefinition> actorCommandDefinitions{};
  84. std::vector<format::ActorBehaviorProfile> actorBehaviorProfiles{};
  85. std::vector<format::SimulationEventDefinition> simulationEventDefinitions{};
  86. std::vector<format::RuntimeSchema> runtimeSchemas{};
  87. std::vector<format::RuntimeField> runtimeFields{};
  88. std::vector<format::RuntimeTypeDefinition> runtimeTypeDefinitions{};
  89. std::vector<format::SobjectRsat> sobjectRsats{};
  90. std::vector<format::SobjectRsatDescriptor> sobjectRsatDescriptors{};
  91. std::vector<format::EntityTypeDefinition> entityTypeDefinitions{};
  92. std::vector<format::SobjectRsatFieldBinding> sobjectRsatFieldBindings{};
  93. std::vector<format::ActorStateName> actorStateNames{};
  94. std::vector<format::ActorSequenceTable> actorSequenceTables{};
  95. std::vector<format::ActorSequenceEntry> actorSequenceEntries{};
  96. std::vector<format::ActorSequenceBinding> actorSequenceBindings{};
  97. std::vector<format::DialogueCue> dialogueCues{};
  98. std::vector<format::CombatObjectiveGroup> combatObjectiveGroups{};
  99. std::vector<format::ActorAbility> actorAbilities{};
  100. std::vector<format::ActorAbilityTarget> actorAbilityTargets{};
  101. std::vector<format::AuthoredSceneEventKey> authoredSceneEventKeys{};
  102. /** @return Borrowed sections in exact current format order. */
  103. [[nodiscard]] pack::Tables tables() const noexcept;
  104. };
  105. /** Links accepted native inventories without building or publishing a file. */
  106. [[nodiscard]] bool compose(const Inputs& inputs, Storage& output) noexcept;
  107. /** Links generation-owned inventories without rerunning their validation passes. */
  108. [[nodiscard]] bool compose_generated(const Inputs& inputs, Storage& output) noexcept;
  109. /** Links all rows and calls the in-memory runtime-pack writer transactionally. */
  110. [[nodiscard]] pack::Status build(const pack::Identity& identity,
  111. const Inputs& inputs,
  112. Storage& tables,
  113. std::vector<std::byte>& image,
  114. pack::Digest& payloadSha256) noexcept;
  115. } // namespace sunrise::client::content::activity::sdk_generation::pack_composer