@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (935) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/schema/CjsSchema.js +20 -2
  80. package/dist/global/schema/CjsSchema.js.map +1 -1
  81. package/dist/global/schema/hydration.js +14 -0
  82. package/dist/global/schema/hydration.js.map +1 -1
  83. package/dist/global/utils/bytes.js +22 -4
  84. package/dist/global/utils/bytes.js.map +1 -1
  85. package/dist/global/utils/checksum.js +80 -0
  86. package/dist/global/utils/checksum.js.map +1 -0
  87. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  88. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  89. package/dist/global/utils/errors/CjsError.js +21 -52
  90. package/dist/global/utils/errors/CjsError.js.map +1 -1
  91. package/dist/global/utils/errors/abort.js +1 -1
  92. package/dist/global/utils/errors/abort.js.map +1 -1
  93. package/dist/global/utils/errors/index.js +2 -1
  94. package/dist/global/utils/errors/index.js.map +1 -1
  95. package/dist/global/utils/index.js +4 -2
  96. package/dist/global/utils/index.js.map +1 -1
  97. package/dist/index.js +95 -35
  98. package/dist/index.js.map +1 -1
  99. package/dist/input/Tr2MainWindow.js +7 -9
  100. package/dist/input/Tr2MainWindow.js.map +1 -1
  101. package/dist/resource/CjsResMan.js +33 -39
  102. package/dist/resource/CjsResMan.js.map +1 -1
  103. package/dist/resource/CjsResource.js +19 -5
  104. package/dist/resource/CjsResource.js.map +1 -1
  105. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  106. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  107. package/dist/resource/audio/CjsAudioRes.js +4 -5
  108. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  109. package/dist/resource/format/CjsBitReader.js +263 -0
  110. package/dist/resource/format/CjsBitReader.js.map +1 -0
  111. package/dist/resource/format/CjsByteReader.js +130 -125
  112. package/dist/resource/format/CjsByteReader.js.map +1 -1
  113. package/dist/resource/format/CjsFormat.js +11 -4
  114. package/dist/resource/format/CjsFormat.js.map +1 -1
  115. package/dist/resource/format/CjsFormatError.js +37 -1
  116. package/dist/resource/format/CjsFormatError.js.map +1 -1
  117. package/dist/resource/format/CjsResourceProbe.js +41 -37
  118. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  119. package/dist/resource/format/carbonRecordGuard.js +33 -0
  120. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  121. package/dist/resource/format/imageSignatures.js +202 -0
  122. package/dist/resource/format/imageSignatures.js.map +1 -0
  123. package/dist/resource/format/index.js +2 -1
  124. package/dist/resource/format/index.js.map +1 -1
  125. package/dist/resource/format/jsonPolicies.js +180 -0
  126. package/dist/resource/format/jsonPolicies.js.map +1 -0
  127. package/dist/resource/formats/black/core/helpers.js +18 -29
  128. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  129. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  130. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  132. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  133. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  134. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  136. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  138. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  140. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  142. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  144. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  145. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  146. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  147. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  148. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  149. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  150. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  151. package/dist/resource/formats/cmf/core/binary.js +54 -60
  152. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  153. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  154. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  155. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  156. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  157. package/dist/resource/formats/dds/core/bc7.js +28 -24
  158. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  159. package/dist/resource/formats/dds/core/helpers.js +7 -133
  160. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  162. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  163. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  164. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  166. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  167. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  168. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  170. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  171. package/dist/resource/formats/flac/core/helpers.js +1 -62
  172. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  174. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  175. package/dist/resource/formats/gif/core/helpers.js +1 -63
  176. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  178. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  179. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  180. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  182. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/container.js +1 -10
  184. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  185. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  186. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/gr2/core/shared.js +193 -189
  188. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  189. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  190. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  191. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  192. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  194. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  195. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  196. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  198. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  199. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  200. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  202. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  203. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  204. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  206. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  207. package/dist/resource/formats/obj/core/helpers.js +93 -115
  208. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  210. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  211. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  212. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  213. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  214. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  215. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  216. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  217. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  218. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  219. package/dist/resource/formats/png/core/helpers.js +13 -152
  220. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/png/core/writer.js +3 -27
  222. package/dist/resource/formats/png/core/writer.js.map +1 -1
  223. package/dist/resource/formats/red/core/helpers.js +19 -29
  224. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  226. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  227. package/dist/resource/formats/stl/core/helpers.js +44 -66
  228. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  230. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  231. package/dist/resource/formats/tga/core/helpers.js +7 -153
  232. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  234. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  235. package/dist/resource/formats/vta/core/helpers.js +1 -17
  236. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  238. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  239. package/dist/resource/formats/wav/core/helpers.js +1 -15
  240. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  241. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  242. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  243. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
  244. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  245. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
  246. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  247. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  248. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  249. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  250. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  251. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  252. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  253. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  254. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  255. package/dist/resource/formats/webm/core/helpers.js +1 -73
  256. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  257. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  258. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  259. package/dist/resource/formats/webp/core/helpers.js +1 -62
  260. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  261. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  262. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  263. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  264. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  265. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  266. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  267. package/dist/resource/formats/wem/core/helpers.js +1 -15
  268. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  269. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  270. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  271. package/dist/resource/geometry/MeshDecalData.js +23 -25
  272. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  273. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  274. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  276. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  278. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  280. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  281. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  282. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  283. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  284. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  285. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  286. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  287. package/dist/resource/geometry/TriJointBinding.js +16 -24
  288. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  289. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  290. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  291. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  292. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  293. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  294. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  295. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  296. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  297. package/dist/resource/index.js +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  299. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  301. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  303. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  305. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  307. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  309. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  310. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  311. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  312. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  313. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  314. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  315. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  316. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  317. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  318. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  319. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  320. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  321. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  322. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  323. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  324. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  325. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  327. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  329. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  333. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  335. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  336. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  337. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  338. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  339. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  340. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  341. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  342. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  343. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  344. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  345. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  346. package/dist/resource/worker/protocol.js +18 -1
  347. package/dist/resource/worker/protocol.js.map +1 -1
  348. package/dist/sof/EveSOF.js +2 -222
  349. package/dist/sof/EveSOF.js.map +1 -1
  350. package/dist/sof/SofDocumentBuilder.js +205 -0
  351. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  352. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  353. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  354. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  355. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  356. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  357. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  358. package/dist/sof/faction/index.js +3 -1
  359. package/dist/sof/faction/index.js.map +1 -1
  360. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  361. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  362. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  363. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  364. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  365. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  366. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  367. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  368. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  369. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  370. package/dist/sof/generic/index.js +5 -1
  371. package/dist/sof/generic/index.js.map +1 -1
  372. package/dist/sof/index.js +23 -7
  373. package/dist/sof/index.js.map +1 -1
  374. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  375. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  376. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  377. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  378. package/dist/sof/pattern/index.js +2 -1
  379. package/dist/sof/pattern/index.js.map +1 -1
  380. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  381. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  382. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  383. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  384. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  385. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  386. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  387. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  388. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  389. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  390. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  391. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  392. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  393. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  395. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  398. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  399. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  400. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  401. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  402. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  403. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  404. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  405. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  406. package/dist/sof/shared/index.js +13 -4
  407. package/dist/sof/shared/index.js.map +1 -1
  408. package/dist/sof/sofDocumentValues.js +33 -0
  409. package/dist/sof/sofDocumentValues.js.map +1 -0
  410. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  411. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  412. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  413. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  414. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  415. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  416. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  417. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  418. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  419. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  420. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  421. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  424. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  425. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  426. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  427. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  428. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  429. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  430. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  431. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  432. package/dist/trinity/controllers/index.js +5 -2
  433. package/dist/trinity/controllers/index.js.map +1 -1
  434. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  435. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  436. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  437. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  438. package/dist/trinity/core/ITr2Updateable.js +2 -1
  439. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  440. package/dist/trinity/core/Tr2Blitter.js +6 -3
  441. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  442. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  443. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  444. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  445. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  446. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  447. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  448. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  449. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  450. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  451. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  452. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  453. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  454. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  455. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  456. package/dist/trinity/core/Tr2Renderer.js +146 -1
  457. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  458. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  459. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  460. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  461. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  462. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  463. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  464. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  465. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  466. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  467. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  468. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  469. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  470. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  471. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  472. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  473. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  474. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  475. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  476. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  477. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  478. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  479. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  480. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  481. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  482. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  483. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  484. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  485. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  486. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  487. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  488. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  489. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  490. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  491. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  492. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  493. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  494. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  495. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  496. package/dist/trinity/core/index.js +42 -15
  497. package/dist/trinity/core/index.js.map +1 -1
  498. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  499. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  500. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  501. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  502. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  503. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  504. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  505. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  506. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  507. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  508. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  509. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  510. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  511. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  512. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  513. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  514. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  515. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  516. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  517. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  519. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  520. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  521. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  522. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  547. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  549. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  550. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  551. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  552. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  553. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  573. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  575. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  577. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  578. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  579. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  580. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  581. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  582. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  583. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  584. package/dist/trinity/core/variable/TriVariable.js +83 -83
  585. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  586. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  587. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  588. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  589. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  590. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  591. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  592. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  593. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  594. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  595. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  596. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  597. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  598. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  599. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  600. package/dist/trinity/eve/IEveTransform.js +2 -1
  601. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  602. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  603. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  604. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  605. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  606. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  607. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  608. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  609. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  610. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  611. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  612. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  613. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  614. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  615. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  616. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  617. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  619. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  621. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  622. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  623. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  624. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  625. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  626. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  627. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  628. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  629. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  631. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  632. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  633. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  634. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  635. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  636. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  639. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  640. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  641. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  643. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  645. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  647. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  648. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  649. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  650. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  651. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  652. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  653. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  654. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  655. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  656. package/dist/trinity/eve/index.js +10 -4
  657. package/dist/trinity/eve/index.js.map +1 -1
  658. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  659. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  660. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  661. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  662. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  663. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  664. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  665. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  666. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  667. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  668. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  669. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  670. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  671. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  672. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  673. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  674. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  675. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  676. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  677. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  678. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  679. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  680. package/dist/trinity/generated/index.js +0 -1
  681. package/dist/trinity/generated/index.js.map +1 -1
  682. package/dist/trinity/generated/trinityCore/index.js +0 -1
  683. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  684. package/dist/trinity/index.js +59 -23
  685. package/dist/trinity/index.js.map +1 -1
  686. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  687. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  688. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  689. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  690. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  691. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  692. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  693. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  694. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  695. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  696. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  697. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  698. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  699. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  700. package/dist/trinity/particle/index.js +2 -1
  701. package/dist/trinity/particle/index.js.map +1 -1
  702. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  703. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  704. package/dist/trinity/shader/Tr2Effect.js +131 -58
  705. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  706. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  707. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  708. package/dist/trinity/shader/Tr2Material.js +21 -4
  709. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  710. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  711. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  712. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  713. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  714. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  715. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  716. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  717. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  718. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  719. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  720. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  721. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  724. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  728. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  729. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  730. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  731. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  732. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  733. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  734. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  735. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  736. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  737. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  740. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  741. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  742. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  743. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  744. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  745. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  746. package/dist/trinityal/index.js +22 -9
  747. package/dist/trinityal/index.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  749. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  751. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  752. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  753. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  754. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  755. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  756. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  757. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  758. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  759. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  761. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  762. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  763. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  764. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  765. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  766. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  767. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  769. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  771. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  772. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  773. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  774. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  775. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  776. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  777. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  778. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  779. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  780. package/dist/trinityal/stub/index.js +8 -4
  781. package/dist/trinityal/stub/index.js.map +1 -1
  782. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  783. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  785. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  787. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  789. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  791. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  793. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  795. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  796. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  797. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  799. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  800. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  801. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  802. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  803. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  804. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  807. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  813. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  815. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  817. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  821. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  822. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  823. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  824. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  825. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  826. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  827. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  828. package/dist/trinityal/webgpu/internal.js +12 -11
  829. package/dist/trinityal/webgpu/internal.js.map +1 -1
  830. package/docs/audio/reference/classes/trinity.md +44 -34
  831. package/docs/character/architecture.md +276 -0
  832. package/docs/character/reference/character-appearance-plans.md +30 -66
  833. package/docs/character/reference/prepared-libraries.md +14 -30
  834. package/docs/global/reference/api.md +2 -1
  835. package/docs/global/reference/classes/README.md +53 -71
  836. package/docs/global/reference/classes/dropped.md +16 -0
  837. package/docs/resource/README.md +19 -15
  838. package/docs/resource/architecture.md +9 -2
  839. package/docs/resource/concepts/format-capabilities.md +124 -80
  840. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  841. package/docs/resource/formats/README.md +230 -224
  842. package/docs/resource/formats/bitknit2.md +221 -0
  843. package/docs/resource/formats/carbon-effect-container.md +184 -269
  844. package/docs/resource/formats/gr2.md +6 -1
  845. package/docs/resource/formats/schemabound.md +28 -48
  846. package/docs/resource/formats/static.md +70 -97
  847. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  848. package/docs/resource/formats/webgl/decl-io.md +165 -256
  849. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  850. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  851. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  852. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  853. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  854. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
  855. package/docs/resource/reference/classes/core.md +256 -236
  856. package/docs/resource/reference/classes/formats.md +1668 -1672
  857. package/docs/resource/reference/workers.md +4 -2
  858. package/docs/sof/reference/classes/core.md +1 -1
  859. package/docs/sof/reference/classes/faction.md +2 -2
  860. package/docs/sof/reference/classes/generic.md +4 -4
  861. package/docs/sof/reference/classes/pattern.md +1 -1
  862. package/docs/sof/reference/classes/shared.md +10 -10
  863. package/docs/trinity/architecture.md +55 -44
  864. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  865. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  866. package/docs/trinity/reference/classes/dropped.md +0 -189
  867. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  868. package/docs/trinity/reference/classes/generated.md +0 -10
  869. package/docs/trinity/reference/classes/particle.md +2 -2
  870. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  871. package/docs/trinity/reference/implementation-status.md +50 -75
  872. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  873. package/docs/trinityal/reference/classes/README.md +77 -27
  874. package/docs/trinityal/reference/classes/dropped.md +92 -0
  875. package/docs/trinityal/webgpu/README.md +3 -1
  876. package/docs/trinityal/webgpu/architecture.md +121 -228
  877. package/docs/trinityal/webgpu/reference/api.md +5 -5
  878. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  879. package/format-notices/gr2/NOTICE +18 -12
  880. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  881. package/package.json +4 -1
  882. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  883. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  884. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  885. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  886. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  887. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  888. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  889. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  890. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  891. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  892. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  893. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  894. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  895. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  896. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  897. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  898. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  899. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  900. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  901. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  902. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  903. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  904. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  905. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  906. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  907. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  908. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  909. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  910. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  911. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  912. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  913. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  914. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  915. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  916. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  917. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  918. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  919. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  920. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  921. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  922. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  923. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  930. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  931. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  932. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  933. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  934. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  935. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\r/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n/**\n * Reads Wwise's MSB-first base-128 unsigned integer.\n *\n * @returns {{value:number,nextOffset:number}|null} Decoded value and next\n * offset, or null for truncated, overflowed, or non-canonical input.\n */\nexport function readWwiseVar(bytes, offset = 0)\n{\n let at = Number(offset);\n let value = 0;\n let count = 0;\n\n if (!Number.isSafeInteger(at) || at < 0)\n {\n return null;\n }\n\n while (at < bytes.byteLength && count < 5)\n {\n const byte = bytes[at++];\n\n if (count === 0 && byte === 0x80)\n {\n return null;\n }\n if (value > 0x01ffffff)\n {\n return null;\n }\n\n value = value * 128 + (byte & 0x7f);\n count++;\n\n if ((byte & 0x80) === 0)\n {\n return value <= 0xffffffff\n ? { value: value >>> 0, nextOffset: at }\n : null;\n }\n }\n\n return null;\n}\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","Number","isSafeInteger","byte","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","toJsonValue","Uint8Array","Array","isArray","output","key","fromCharCode"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { readWwiseVar } from \"./WwiseCursor.js\";\nimport { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\n/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nexport { readWwiseVar };\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","fromCharCode"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { parseNodeBaseRange } from './nodeBase.js';
2
+ import { WwiseCursor } from './WwiseCursor.js';
2
3
 
3
4
  // Wwise interactive-music node decoding: typed payloads for music-segment
4
5
  // (10), music-track (11), music-switch-container (12), and
@@ -20,99 +21,6 @@ import { parseNodeBaseRange } from './nodeBase.js';
20
21
  // head (before NodeBaseParams) and the track's type block is tail-validated
21
22
  // the same way.
22
23
 
23
-
24
- /**
25
- * Little-endian byte cursor over HIRC payload bytes used to decode Wwise
26
- * interactive-music node payloads with exact-end validation.
27
- */
28
- class MusicCursor {
29
- /** Creates an MusicCursor with caller-provided initial state. */
30
- constructor(bytes, offset = 0) {
31
- this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
32
- this.bytes = bytes;
33
- this.at = offset;
34
- }
35
-
36
- /** Returns the number of unread BNK bytes for the BNK format reader. */
37
- get remaining() {
38
- return this.bytes.byteLength - this.at;
39
- }
40
-
41
- /**
42
- * Reads an unsigned 8-bit integer from the BNK cursor for the BNK format
43
- * reader.
44
- */
45
- u8() {
46
- return this.view.getUint8(this.at++);
47
- }
48
-
49
- /**
50
- * Reads an unsigned 16-bit integer from the BNK cursor for the BNK format
51
- * reader.
52
- */
53
- u16() {
54
- const value = this.view.getUint16(this.at, true);
55
- this.at += 2;
56
- return value;
57
- }
58
-
59
- /**
60
- * Reads a signed 16-bit integer from the BNK cursor for the BNK format
61
- * reader.
62
- */
63
- s16() {
64
- const value = this.view.getInt16(this.at, true);
65
- this.at += 2;
66
- return value;
67
- }
68
-
69
- /**
70
- * Reads an unsigned 32-bit integer from the BNK cursor for the BNK format
71
- * reader.
72
- */
73
- u32() {
74
- const value = this.view.getUint32(this.at, true);
75
- this.at += 4;
76
- return value;
77
- }
78
-
79
- /**
80
- * Reads a signed 32-bit integer from the BNK cursor for the BNK format
81
- * reader.
82
- */
83
- s32() {
84
- const value = this.view.getInt32(this.at, true);
85
- this.at += 4;
86
- return value;
87
- }
88
-
89
- /** Reads a 32-bit float from the BNK cursor for the BNK format reader. */
90
- f32() {
91
- const value = this.view.getFloat32(this.at, true);
92
- this.at += 4;
93
- return value;
94
- }
95
-
96
- /** Reads a 64-bit float from the BNK cursor for the BNK format reader. */
97
- f64() {
98
- const value = this.view.getFloat64(this.at, true);
99
- this.at += 8;
100
- return value;
101
- }
102
-
103
- /**
104
- * Reads a null-terminated string from the BNK cursor for the BNK format
105
- * reader.
106
- */
107
- stringZ() {
108
- let end = this.at;
109
- while (end < this.bytes.byteLength && this.bytes[end] !== 0) end++;
110
- let value = "";
111
- for (let i = this.at; i < end; i++) value += String.fromCharCode(this.bytes[i]);
112
- this.at = end + 1;
113
- return value;
114
- }
115
- }
116
24
  function plausibleMeter(view, at, byteLength) {
117
25
  if (at + 22 > byteLength) return false;
118
26
  const grid = view.getFloat64(at, true);
@@ -235,21 +143,21 @@ function readTransRules(cursor) {
235
143
  return rules;
236
144
  }
237
145
 
238
- /**
239
- * Decode a music-segment (HIRC 10) payload: children, meter, stingers,
240
- * duration, and entry/exit markers.
241
- *
242
- * @param {Uint8Array} bytes Entry payload view from `inspect()`.
243
- * @param {Set<number>} knownIds Every HIRC object id in the same bank.
244
- * @param {object} [options] Bank-version qualification for the NodeBase prefix.
245
- * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.
146
+ /**
147
+ * Decode a music-segment (HIRC 10) payload: children, meter, stingers,
148
+ * duration, and entry/exit markers.
149
+ *
150
+ * @param {Uint8Array} bytes Entry payload view from `inspect()`.
151
+ * @param {Set<number>} knownIds Every HIRC object id in the same bank.
152
+ * @param {object} [options] Bank-version qualification for the NodeBase prefix.
153
+ * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.
246
154
  */
247
155
  function parseMusicSegment(bytes, knownIds, options = {}) {
248
156
  for (const anchor of findAnchors(bytes, knownIds)) {
249
157
  try {
250
158
  const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
251
159
  if (!nodeBase) continue;
252
- const cursor = new MusicCursor(bytes, anchor);
160
+ const cursor = new WwiseCursor(bytes, anchor);
253
161
  const node = readMusicNodeTail(cursor);
254
162
  const duration = cursor.f64();
255
163
  if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;
@@ -278,16 +186,16 @@ function parseMusicSegment(bytes, knownIds, options = {}) {
278
186
  return null;
279
187
  }
280
188
 
281
- /**
282
- * Decode a music-track (HIRC 11) payload: sources, clips (play position and
283
- * trims per subtrack), track type, and switch parameters for switch tracks.
284
- *
285
- * @param {Uint8Array} bytes Entry payload view from `inspect()`.
286
- * @param {object} [options] Bank-version qualification for the NodeBase prefix.
287
- * @returns {object|null} Decoded track, or null when neither tail layout validates.
189
+ /**
190
+ * Decode a music-track (HIRC 11) payload: sources, clips (play position and
191
+ * trims per subtrack), track type, and switch parameters for switch tracks.
192
+ *
193
+ * @param {Uint8Array} bytes Entry payload view from `inspect()`.
194
+ * @param {object} [options] Bank-version qualification for the NodeBase prefix.
195
+ * @returns {object|null} Decoded track, or null when neither tail layout validates.
288
196
  */
289
197
  function parseMusicTrack(bytes, options = {}) {
290
- const cursor = new MusicCursor(bytes, 0);
198
+ const cursor = new WwiseCursor(bytes, 0);
291
199
  cursor.u8(); // uFlags (midi/override bits)
292
200
  const sourceCount = cursor.u32();
293
201
  if (sourceCount > 512) return null;
@@ -345,7 +253,7 @@ function parseMusicTrack(bytes, options = {}) {
345
253
  const end = bytes.byteLength;
346
254
  for (let typeAt = headEnd; typeAt <= end - 5; typeAt++) {
347
255
  if (view.getUint8(typeAt) !== 3) continue;
348
- const tail = new MusicCursor(bytes, typeAt + 1);
256
+ const tail = new WwiseCursor(bytes, typeAt + 1);
349
257
  try {
350
258
  const nodeBase = parseNodeBaseRange(bytes, headEnd, typeAt, options);
351
259
  if (!nodeBase) continue;
@@ -408,21 +316,21 @@ function parseMusicTrack(bytes, options = {}) {
408
316
  return null;
409
317
  }
410
318
 
411
- /**
412
- * Decode a music-playlist-container (HIRC 13) payload: children, meter,
413
- * stingers, transition rules, and the flat pre-order playlist tree.
414
- *
415
- * @param {Uint8Array} bytes Entry payload view from `inspect()`.
416
- * @param {Set<number>} knownIds Every HIRC object id in the same bank.
417
- * @param {object} [options] Bank-version qualification for the NodeBase prefix.
418
- * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.
319
+ /**
320
+ * Decode a music-playlist-container (HIRC 13) payload: children, meter,
321
+ * stingers, transition rules, and the flat pre-order playlist tree.
322
+ *
323
+ * @param {Uint8Array} bytes Entry payload view from `inspect()`.
324
+ * @param {Set<number>} knownIds Every HIRC object id in the same bank.
325
+ * @param {object} [options] Bank-version qualification for the NodeBase prefix.
326
+ * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.
419
327
  */
420
328
  function parseMusicPlaylist(bytes, knownIds, options = {}) {
421
329
  for (const anchor of findAnchors(bytes, knownIds)) {
422
330
  try {
423
331
  const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
424
332
  if (!nodeBase) continue;
425
- const cursor = new MusicCursor(bytes, anchor);
333
+ const cursor = new WwiseCursor(bytes, anchor);
426
334
  const node = readMusicNodeTail(cursor);
427
335
  const rules = readTransRules(cursor);
428
336
  const itemCount = cursor.u32();
@@ -458,21 +366,21 @@ function parseMusicPlaylist(bytes, knownIds, options = {}) {
458
366
  return null;
459
367
  }
460
368
 
461
- /**
462
- * Decode a music-switch-container (HIRC 12) payload: children, meter,
463
- * stingers, transition rules, argument groups, and the decision tree.
464
- *
465
- * @param {Uint8Array} bytes Entry payload view from `inspect()`.
466
- * @param {Set<number>} knownIds Every HIRC object id in the same bank.
467
- * @param {object} [options] Bank-version qualification for the NodeBase prefix.
468
- * @returns {object|null} Decoded switch container, or null when no anchored parse validates.
369
+ /**
370
+ * Decode a music-switch-container (HIRC 12) payload: children, meter,
371
+ * stingers, transition rules, argument groups, and the decision tree.
372
+ *
373
+ * @param {Uint8Array} bytes Entry payload view from `inspect()`.
374
+ * @param {Set<number>} knownIds Every HIRC object id in the same bank.
375
+ * @param {object} [options] Bank-version qualification for the NodeBase prefix.
376
+ * @returns {object|null} Decoded switch container, or null when no anchored parse validates.
469
377
  */
470
378
  function parseMusicSwitch(bytes, knownIds, options = {}) {
471
379
  for (const anchor of findAnchors(bytes, knownIds)) {
472
380
  try {
473
381
  const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
474
382
  if (!nodeBase) continue;
475
- const cursor = new MusicCursor(bytes, anchor);
383
+ const cursor = new WwiseCursor(bytes, anchor);
476
384
  const node = readMusicNodeTail(cursor);
477
385
  const rules = readTransRules(cursor);
478
386
  const continuePlayback = cursor.u8() !== 0;
@@ -535,11 +443,11 @@ const MUSIC_TYPE_NAMES = Object.freeze({
535
443
  13: "music-playlist-container"
536
444
  });
537
445
 
538
- /**
539
- * Decode every interactive-music node across one or more inspected banks.
540
- *
541
- * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.
542
- * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.
446
+ /**
447
+ * Decode every interactive-music node across one or more inspected banks.
448
+ *
449
+ * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.
450
+ * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.
543
451
  */
544
452
  function musicNodesFromBanks(inspections) {
545
453
  const banks = Array.isArray(inspections) ? inspections : [inspections];
@@ -1 +1 @@
1
- {"version":3,"file":"musicNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/musicNodes.js"],"sourcesContent":["// Wwise interactive-music node decoding: typed payloads for music-segment\r\n// (10), music-track (11), music-switch-container (12), and\r\n// music-playlist-container (13) HIRC entries. Exposed through\r\n// `CjsBnkFormat.wwise` next to the event graph walk - interpretation over\r\n// `inspect()` results, never part of the format read path.\r\n//\r\n// Verified against EVE soundbanks (bank generator version 150 / Wwise\r\n// 2022.1): 2,484 tracks, 1,326 segments, 214 playlists, and 54 switch\r\n// containers across music.bnk + music_essential.bnk all decode with the\r\n// exact-end validation below (2026-07-19 corpus run).\r\n//\r\n// Approach: consumers of these nodes (music schedulers) only need the fields\r\n// AFTER the variable-length NodeBaseParams block - children, meter, stingers,\r\n// and each type's tail - so segment/playlist/switch payloads are parsed from\r\n// a children+meter ANCHOR (a u32 child count and child ids that exist in the\r\n// bank, followed by a plausible AkMeterInfo) and the parse is accepted only\r\n// when it consumes the payload EXACTLY to its end. Track clips live at the\r\n// head (before NodeBaseParams) and the track's type block is tail-validated\r\n// the same way.\r\n\r\nimport { parseNodeBaseRange } from \"./nodeBase.js\";\r\n\r\n/**\r\n * Little-endian byte cursor over HIRC payload bytes used to decode Wwise\r\n * interactive-music node payloads with exact-end validation.\r\n */\r\nclass MusicCursor\r\n{\r\n /** Creates an MusicCursor with caller-provided initial state. */\r\n constructor(bytes, offset = 0)\r\n {\r\n this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n this.bytes = bytes;\r\n this.at = offset;\r\n }\r\n\r\n /** Returns the number of unread BNK bytes for the BNK format reader. */\r\n get remaining()\r\n {\r\n return this.bytes.byteLength - this.at;\r\n }\r\n\r\n /**\r\n * Reads an unsigned 8-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u8()\r\n {\r\n return this.view.getUint8(this.at++);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 16-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u16()\r\n {\r\n const value = this.view.getUint16(this.at, true);\r\n this.at += 2;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a signed 16-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n s16()\r\n {\r\n const value = this.view.getInt16(this.at, true);\r\n this.at += 2;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads an unsigned 32-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u32()\r\n {\r\n const value = this.view.getUint32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a signed 32-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n s32()\r\n {\r\n const value = this.view.getInt32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a 32-bit float from the BNK cursor for the BNK format reader. */\r\n f32()\r\n {\r\n const value = this.view.getFloat32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a 64-bit float from the BNK cursor for the BNK format reader. */\r\n f64()\r\n {\r\n const value = this.view.getFloat64(this.at, true);\r\n this.at += 8;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a null-terminated string from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n stringZ()\r\n {\r\n let end = this.at;\r\n while (end < this.bytes.byteLength && this.bytes[end] !== 0) end++;\r\n let value = \"\";\r\n for (let i = this.at; i < end; i++) value += String.fromCharCode(this.bytes[i]);\r\n this.at = end + 1;\r\n return value;\r\n }\r\n}\r\n\r\nfunction plausibleMeter(view, at, byteLength)\r\n{\r\n if (at + 22 > byteLength) return false;\r\n const grid = view.getFloat64(at, true);\r\n const offset = view.getFloat64(at + 8, true);\r\n const tempo = view.getFloat32(at + 16, true);\r\n const beats = view.getUint8(at + 20);\r\n const beatValue = view.getUint8(at + 21);\r\n return Number.isFinite(grid) && grid >= 0 && grid < 600000\r\n && Number.isFinite(offset) && offset >= 0 && offset < 600000\r\n && Number.isFinite(tempo) && tempo > 0 && tempo < 1000\r\n && beats >= 1 && beats <= 64\r\n && [ 1, 2, 4, 8, 16, 32 ].includes(beatValue);\r\n}\r\n\r\nfunction findAnchors(bytes, knownIds)\r\n{\r\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n const anchors = [];\r\n for (let at = 1; at + 4 <= bytes.byteLength; at++)\r\n {\r\n const count = view.getUint32(at, true);\r\n if (count > 256 || at + 4 + count * 4 + 22 > bytes.byteLength) continue;\r\n let valid = true;\r\n for (let i = 0; i < count; i++)\r\n {\r\n if (!knownIds.has(view.getUint32(at + 4 + i * 4, true)))\r\n {\r\n valid = false;\r\n break;\r\n }\r\n }\r\n if (valid && plausibleMeter(view, at + 4 + count * 4, bytes.byteLength))\r\n {\r\n anchors.push(at);\r\n }\r\n }\r\n return anchors;\r\n}\r\n\r\nfunction readMusicNodeTail(cursor)\r\n{\r\n const childCount = cursor.u32();\r\n const children = [];\r\n for (let i = 0; i < childCount; i++) children.push(cursor.u32());\r\n const meter = {\r\n gridPeriod: cursor.f64(),\r\n gridOffset: cursor.f64(),\r\n tempo: cursor.f32(),\r\n beatsPerBar: cursor.u8(),\r\n beatValue: cursor.u8()\r\n };\r\n const meterOverride = cursor.u8() !== 0;\r\n const stingerCount = cursor.u32();\r\n const stingers = [];\r\n for (let i = 0; i < stingerCount; i++)\r\n {\r\n stingers.push({\r\n triggerId: cursor.u32(),\r\n segmentId: cursor.u32(),\r\n syncPlayAt: cursor.u32(),\r\n cueFilterHash: cursor.u32(),\r\n dontRepeatTime: cursor.s32(),\r\n numSegmentLookAhead: cursor.u32()\r\n });\r\n }\r\n return { children, meter, meterOverride, stingers };\r\n}\r\n\r\n/** AkMusicTransNodeParams: transition rules shared by playlist + switch containers. */\r\nfunction readTransRules(cursor)\r\n{\r\n const ruleCount = cursor.u32();\r\n if (ruleCount > 4096) throw new RangeError(\"rule count\");\r\n const rules = [];\r\n for (let i = 0; i < ruleCount; i++)\r\n {\r\n const srcCount = cursor.u32();\r\n if (srcCount > 1024) throw new RangeError(\"src count\");\r\n const srcIds = [];\r\n for (let j = 0; j < srcCount; j++) srcIds.push(cursor.s32());\r\n const dstCount = cursor.u32();\r\n if (dstCount > 1024) throw new RangeError(\"dst count\");\r\n const dstIds = [];\r\n for (let j = 0; j < dstCount; j++) dstIds.push(cursor.s32());\r\n const src = {\r\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\r\n syncType: cursor.u32(), cueFilterHash: cursor.u32(), playPostExit: cursor.u8() !== 0\r\n };\r\n const dst = {\r\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\r\n cueFilterHash: cursor.u32(), jumpToId: cursor.u32(), jumpToType: cursor.u16(),\r\n entryType: cursor.u16(), playPreEntry: cursor.u8() !== 0,\r\n matchSourceCueName: cursor.u8() !== 0\r\n };\r\n let transitionSegment = null;\r\n if (cursor.u8() !== 0)\r\n {\r\n transitionSegment = {\r\n segmentId: cursor.u32(),\r\n fadeIn: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\r\n fadeOut: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\r\n playPreEntry: cursor.u8() !== 0,\r\n playPostExit: cursor.u8() !== 0\r\n };\r\n }\r\n rules.push({ srcIds, dstIds, src, dst, transitionSegment });\r\n }\r\n return rules;\r\n}\r\n\r\n/**\r\n * Decode a music-segment (HIRC 10) payload: children, meter, stingers,\r\n * duration, and entry/exit markers.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.\r\n */\r\nexport function parseMusicSegment(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const duration = cursor.f64();\r\n if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;\r\n const markerCount = cursor.u32();\r\n if (markerCount > 1024) continue;\r\n const markers = [];\r\n for (let i = 0; i < markerCount; i++)\r\n {\r\n markers.push({ id: cursor.u32(), position: cursor.f64(), name: cursor.stringZ() });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n if (markers.some(marker => !Number.isFinite(marker.position) || marker.position < 0)) continue;\r\n return { nodeBase, ...node, duration, markers };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-track (HIRC 11) payload: sources, clips (play position and\r\n * trims per subtrack), track type, and switch parameters for switch tracks.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded track, or null when neither tail layout validates.\r\n */\r\nexport function parseMusicTrack(bytes, options = {})\r\n{\r\n const cursor = new MusicCursor(bytes, 0);\r\n cursor.u8(); // uFlags (midi/override bits)\r\n const sourceCount = cursor.u32();\r\n if (sourceCount > 512) return null;\r\n const sources = [];\r\n for (let i = 0; i < sourceCount; i++)\r\n {\r\n const pluginId = cursor.u32();\r\n const streamType = cursor.u8();\r\n const sourceId = cursor.u32();\r\n const inMemoryMediaSize = cursor.u32();\r\n const sourceBits = cursor.u8();\r\n if ((pluginId & 0x0f) === 0x02)\r\n {\r\n const size = cursor.u32();\r\n cursor.at += size;\r\n }\r\n sources.push({ pluginId, streamType, sourceId, inMemoryMediaSize, sourceBits });\r\n }\r\n const clipCount = cursor.u32();\r\n if (clipCount > 4096) return null;\r\n const clips = [];\r\n for (let i = 0; i < clipCount; i++)\r\n {\r\n clips.push({\r\n trackId: cursor.u32(),\r\n sourceId: cursor.u32(),\r\n eventId: cursor.u32(),\r\n playAt: cursor.f64(),\r\n beginTrimOffset: cursor.f64(),\r\n endTrimOffset: cursor.f64(),\r\n srcDuration: cursor.f64()\r\n });\r\n }\r\n const subTrackCount = clipCount > 0 ? cursor.u32() : 0;\r\n const autoCount = cursor.u32();\r\n if (autoCount > 4096) return null;\r\n for (let i = 0; i < autoCount; i++)\r\n {\r\n cursor.u32(); // clip index\r\n cursor.u32(); // automation type\r\n const points = cursor.u32();\r\n if (points > 65536) return null;\r\n cursor.at += points * 12;\r\n }\r\n const headEnd = cursor.at;\r\n\r\n // Tail: [NodeBaseParams...] u8 trackType, [switch+trans params when the\r\n // type is 3], signed s32 iLookAheadTime. The switch layout is tried FIRST because\r\n // it validates every field to the exact payload end - the simple layout\r\n // only checks one byte, and a switch tail ending in zero bytes would\r\n // satisfy it falsely.\r\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n const end = bytes.byteLength;\r\n for (let typeAt = headEnd; typeAt <= end - 5; typeAt++)\r\n {\r\n if (view.getUint8(typeAt) !== 3) continue;\r\n const tail = new MusicCursor(bytes, typeAt + 1);\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n headEnd,\r\n typeAt,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const groupType = tail.u8();\r\n if (groupType > 1) continue;\r\n const groupId = tail.u32();\r\n const defaultSwitch = tail.u32();\r\n const assocCount = tail.u32();\r\n if (assocCount > 1024) continue;\r\n const assoc = [];\r\n for (let i = 0; i < assocCount; i++) assoc.push(tail.u32());\r\n const trans = {\r\n srcTransitionTime: tail.s32(), srcFadeCurve: tail.u32(), srcFadeOffset: tail.s32(),\r\n syncType: tail.u32(), cueFilterHash: tail.u32(),\r\n dstTransitionTime: tail.s32(), dstFadeCurve: tail.u32(), dstFadeOffset: tail.s32()\r\n };\r\n const lookAheadTime = tail.s32();\r\n if (tail.at !== end) continue;\r\n return {\r\n sources, clips, subTrackCount,\r\n nodeBase,\r\n trackType: 3,\r\n lookAheadTime,\r\n switchParams: { groupType, groupId, defaultSwitch, assoc, trans }\r\n };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n const simpleAt = end - 5;\r\n if (simpleAt >= headEnd)\r\n {\r\n const type = view.getUint8(simpleAt);\r\n if (type <= 2)\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n headEnd,\r\n simpleAt,\r\n options,\r\n );\r\n\r\n if (!nodeBase) return null;\r\n return {\r\n sources, clips, subTrackCount,\r\n nodeBase,\r\n trackType: type,\r\n lookAheadTime: view.getInt32(end - 4, true),\r\n switchParams: null\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-playlist-container (HIRC 13) payload: children, meter,\r\n * stingers, transition rules, and the flat pre-order playlist tree.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.\r\n */\r\nexport function parseMusicPlaylist(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const rules = readTransRules(cursor);\r\n const itemCount = cursor.u32();\r\n if (itemCount > 8192) continue;\r\n if (cursor.remaining !== itemCount * 30) continue;\r\n const items = [];\r\n for (let i = 0; i < itemCount; i++)\r\n {\r\n items.push({\r\n segmentId: cursor.u32(),\r\n playlistItemId: cursor.u32(),\r\n childCount: cursor.u32(),\r\n rsType: cursor.s32(),\r\n loop: cursor.s16(),\r\n loopMin: cursor.s16(),\r\n loopMax: cursor.s16(),\r\n weight: cursor.u32(),\r\n avoidRepeatCount: cursor.u16(),\r\n usingWeight: cursor.u8() !== 0,\r\n shuffle: cursor.u8() !== 0\r\n });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n return { nodeBase, ...node, rules, playlist: items };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-switch-container (HIRC 12) payload: children, meter,\r\n * stingers, transition rules, argument groups, and the decision tree.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded switch container, or null when no anchored parse validates.\r\n */\r\nexport function parseMusicSwitch(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const rules = readTransRules(cursor);\r\n const continuePlayback = cursor.u8() !== 0;\r\n const treeDepth = cursor.u32();\r\n if (treeDepth > 16) continue;\r\n const argumentGroups = [];\r\n for (let i = 0; i < treeDepth; i++) argumentGroups.push({ groupId: cursor.u32() });\r\n for (let i = 0; i < treeDepth; i++) argumentGroups[i].groupType = cursor.u8();\r\n const treeDataSize = cursor.u32();\r\n const mode = cursor.u8();\r\n if (cursor.remaining !== treeDataSize) continue;\r\n if (treeDataSize % 12 !== 0) continue;\r\n const treeNodes = [];\r\n const nodeCount = treeDataSize / 12;\r\n for (let i = 0; i < nodeCount; i++)\r\n {\r\n const key = cursor.u32();\r\n // 4-byte union: leaf = audioNodeId, internal = childrenIdx + count.\r\n const audioNodeId = cursor.view.getUint32(cursor.at, true);\r\n const childrenIdx = cursor.u16();\r\n const childrenCount = cursor.u16();\r\n const weight = cursor.u16();\r\n const probability = cursor.u16();\r\n treeNodes.push({ key, audioNodeId, childrenIdx, childrenCount, weight, probability });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n return {\r\n nodeBase,\r\n ...node,\r\n rules,\r\n continuePlayback,\r\n argumentGroups,\r\n mode,\r\n treeNodes,\r\n };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nconst MUSIC_PARSERS = Object.freeze({\r\n 10: (payload, knownIds, options) => parseMusicSegment(payload, knownIds, options),\r\n 11: (payload, knownIds, options) => parseMusicTrack(payload, options),\r\n 12: (payload, knownIds, options) => parseMusicSwitch(payload, knownIds, options),\r\n 13: (payload, knownIds, options) => parseMusicPlaylist(payload, knownIds, options)\r\n});\r\n\r\nconst MUSIC_TYPE_NAMES = Object.freeze({\r\n 10: \"music-segment\",\r\n 11: \"music-track\",\r\n 12: \"music-switch-container\",\r\n 13: \"music-playlist-container\"\r\n});\r\n\r\n/**\r\n * Decode every interactive-music node across one or more inspected banks.\r\n *\r\n * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.\r\n * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.\r\n */\r\nexport function musicNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const nodes = new Map();\r\n const failed = [];\r\n let parsed = 0;\r\n for (const inspection of banks)\r\n {\r\n const knownIds = new Set();\r\n for (const entry of inspection.hirc ?? []) knownIds.add(entry.id);\r\n for (const entry of inspection.hirc ?? [])\r\n {\r\n const parser = MUSIC_PARSERS[entry.type];\r\n if (!parser) continue;\r\n const payload = entry.payload instanceof Uint8Array ? entry.payload : null;\r\n const decoded = payload\r\n ? parser(payload, knownIds, {\r\n bankVersion: inspection.bankVersion,\r\n })\r\n : null;\r\n if (!decoded)\r\n {\r\n failed.push({ bank: inspection.source || \"\", type: MUSIC_TYPE_NAMES[entry.type], id: entry.id });\r\n continue;\r\n }\r\n parsed++;\r\n nodes.set(entry.id, { id: entry.id, type: MUSIC_TYPE_NAMES[entry.type], bank: inspection.source || \"\", ...decoded });\r\n }\r\n }\r\n return { nodes, diagnostics: { parsed, failed } };\r\n}\r\n"],"names":["MusicCursor","constructor","bytes","offset","view","DataView","buffer","byteOffset","byteLength","at","remaining","u8","getUint8","u16","value","getUint16","s16","getInt16","u32","getUint32","s32","getInt32","f32","getFloat32","f64","getFloat64","stringZ","end","i","String","fromCharCode","plausibleMeter","grid","tempo","beats","beatValue","Number","isFinite","includes","findAnchors","knownIds","anchors","count","valid","has","push","readMusicNodeTail","cursor","childCount","children","meter","gridPeriod","gridOffset","beatsPerBar","meterOverride","stingerCount","stingers","triggerId","segmentId","syncPlayAt","cueFilterHash","dontRepeatTime","numSegmentLookAhead","readTransRules","ruleCount","RangeError","rules","srcCount","srcIds","j","dstCount","dstIds","src","transitionTime","fadeCurve","fadeOffset","syncType","playPostExit","dst","jumpToId","jumpToType","entryType","playPreEntry","matchSourceCueName","transitionSegment","fadeIn","fadeOut","parseMusicSegment","options","anchor","nodeBase","parseNodeBaseRange","node","duration","markerCount","markers","id","position","name","some","marker","parseMusicTrack","sourceCount","sources","pluginId","streamType","sourceId","inMemoryMediaSize","sourceBits","size","clipCount","clips","trackId","eventId","playAt","beginTrimOffset","endTrimOffset","srcDuration","subTrackCount","autoCount","points","headEnd","typeAt","tail","groupType","groupId","defaultSwitch","assocCount","assoc","trans","srcTransitionTime","srcFadeCurve","srcFadeOffset","dstTransitionTime","dstFadeCurve","dstFadeOffset","lookAheadTime","trackType","switchParams","simpleAt","type","parseMusicPlaylist","itemCount","items","playlistItemId","rsType","loop","loopMin","loopMax","weight","avoidRepeatCount","usingWeight","shuffle","playlist","parseMusicSwitch","continuePlayback","treeDepth","argumentGroups","treeDataSize","mode","treeNodes","nodeCount","key","audioNodeId","childrenIdx","childrenCount","probability","MUSIC_PARSERS","Object","freeze","payload","MUSIC_TYPE_NAMES","musicNodesFromBanks","inspections","banks","Array","isArray","nodes","Map","failed","parsed","inspection","Set","entry","hirc","add","parser","Uint8Array","decoded","bankVersion","bank","source","set","diagnostics"],"mappings":"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"}
1
+ {"version":3,"file":"musicNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/musicNodes.js"],"sourcesContent":["// Wwise interactive-music node decoding: typed payloads for music-segment\n// (10), music-track (11), music-switch-container (12), and\n// music-playlist-container (13) HIRC entries. Exposed through\n// `CjsBnkFormat.wwise` next to the event graph walk - interpretation over\n// `inspect()` results, never part of the format read path.\n//\n// Verified against EVE soundbanks (bank generator version 150 / Wwise\n// 2022.1): 2,484 tracks, 1,326 segments, 214 playlists, and 54 switch\n// containers across music.bnk + music_essential.bnk all decode with the\n// exact-end validation below (2026-07-19 corpus run).\n//\n// Approach: consumers of these nodes (music schedulers) only need the fields\n// AFTER the variable-length NodeBaseParams block - children, meter, stingers,\n// and each type's tail - so segment/playlist/switch payloads are parsed from\n// a children+meter ANCHOR (a u32 child count and child ids that exist in the\n// bank, followed by a plausible AkMeterInfo) and the parse is accepted only\n// when it consumes the payload EXACTLY to its end. Track clips live at the\n// head (before NodeBaseParams) and the track's type block is tail-validated\n// the same way.\n\nimport { WwiseCursor, parseNodeBaseRange } from \"./nodeBase.js\";\n\n\nfunction plausibleMeter(view, at, byteLength)\n{\n if (at + 22 > byteLength) return false;\n const grid = view.getFloat64(at, true);\n const offset = view.getFloat64(at + 8, true);\n const tempo = view.getFloat32(at + 16, true);\n const beats = view.getUint8(at + 20);\n const beatValue = view.getUint8(at + 21);\n return Number.isFinite(grid) && grid >= 0 && grid < 600000\n && Number.isFinite(offset) && offset >= 0 && offset < 600000\n && Number.isFinite(tempo) && tempo > 0 && tempo < 1000\n && beats >= 1 && beats <= 64\n && [ 1, 2, 4, 8, 16, 32 ].includes(beatValue);\n}\n\nfunction findAnchors(bytes, knownIds)\n{\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const anchors = [];\n for (let at = 1; at + 4 <= bytes.byteLength; at++)\n {\n const count = view.getUint32(at, true);\n if (count > 256 || at + 4 + count * 4 + 22 > bytes.byteLength) continue;\n let valid = true;\n for (let i = 0; i < count; i++)\n {\n if (!knownIds.has(view.getUint32(at + 4 + i * 4, true)))\n {\n valid = false;\n break;\n }\n }\n if (valid && plausibleMeter(view, at + 4 + count * 4, bytes.byteLength))\n {\n anchors.push(at);\n }\n }\n return anchors;\n}\n\nfunction readMusicNodeTail(cursor)\n{\n const childCount = cursor.u32();\n const children = [];\n for (let i = 0; i < childCount; i++) children.push(cursor.u32());\n const meter = {\n gridPeriod: cursor.f64(),\n gridOffset: cursor.f64(),\n tempo: cursor.f32(),\n beatsPerBar: cursor.u8(),\n beatValue: cursor.u8()\n };\n const meterOverride = cursor.u8() !== 0;\n const stingerCount = cursor.u32();\n const stingers = [];\n for (let i = 0; i < stingerCount; i++)\n {\n stingers.push({\n triggerId: cursor.u32(),\n segmentId: cursor.u32(),\n syncPlayAt: cursor.u32(),\n cueFilterHash: cursor.u32(),\n dontRepeatTime: cursor.s32(),\n numSegmentLookAhead: cursor.u32()\n });\n }\n return { children, meter, meterOverride, stingers };\n}\n\n/** AkMusicTransNodeParams: transition rules shared by playlist + switch containers. */\nfunction readTransRules(cursor)\n{\n const ruleCount = cursor.u32();\n if (ruleCount > 4096) throw new RangeError(\"rule count\");\n const rules = [];\n for (let i = 0; i < ruleCount; i++)\n {\n const srcCount = cursor.u32();\n if (srcCount > 1024) throw new RangeError(\"src count\");\n const srcIds = [];\n for (let j = 0; j < srcCount; j++) srcIds.push(cursor.s32());\n const dstCount = cursor.u32();\n if (dstCount > 1024) throw new RangeError(\"dst count\");\n const dstIds = [];\n for (let j = 0; j < dstCount; j++) dstIds.push(cursor.s32());\n const src = {\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\n syncType: cursor.u32(), cueFilterHash: cursor.u32(), playPostExit: cursor.u8() !== 0\n };\n const dst = {\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\n cueFilterHash: cursor.u32(), jumpToId: cursor.u32(), jumpToType: cursor.u16(),\n entryType: cursor.u16(), playPreEntry: cursor.u8() !== 0,\n matchSourceCueName: cursor.u8() !== 0\n };\n let transitionSegment = null;\n if (cursor.u8() !== 0)\n {\n transitionSegment = {\n segmentId: cursor.u32(),\n fadeIn: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\n fadeOut: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\n playPreEntry: cursor.u8() !== 0,\n playPostExit: cursor.u8() !== 0\n };\n }\n rules.push({ srcIds, dstIds, src, dst, transitionSegment });\n }\n return rules;\n}\n\n/**\n * Decode a music-segment (HIRC 10) payload: children, meter, stingers,\n * duration, and entry/exit markers.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.\n */\nexport function parseMusicSegment(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const duration = cursor.f64();\n if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;\n const markerCount = cursor.u32();\n if (markerCount > 1024) continue;\n const markers = [];\n for (let i = 0; i < markerCount; i++)\n {\n markers.push({ id: cursor.u32(), position: cursor.f64(), name: cursor.stringZ() });\n }\n if (cursor.at !== bytes.byteLength) continue;\n if (markers.some(marker => !Number.isFinite(marker.position) || marker.position < 0)) continue;\n return { nodeBase, ...node, duration, markers };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\n/**\n * Decode a music-track (HIRC 11) payload: sources, clips (play position and\n * trims per subtrack), track type, and switch parameters for switch tracks.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded track, or null when neither tail layout validates.\n */\nexport function parseMusicTrack(bytes, options = {})\n{\n const cursor = new WwiseCursor(bytes, 0);\n cursor.u8(); // uFlags (midi/override bits)\n const sourceCount = cursor.u32();\n if (sourceCount > 512) return null;\n const sources = [];\n for (let i = 0; i < sourceCount; i++)\n {\n const pluginId = cursor.u32();\n const streamType = cursor.u8();\n const sourceId = cursor.u32();\n const inMemoryMediaSize = cursor.u32();\n const sourceBits = cursor.u8();\n if ((pluginId & 0x0f) === 0x02)\n {\n const size = cursor.u32();\n cursor.at += size;\n }\n sources.push({ pluginId, streamType, sourceId, inMemoryMediaSize, sourceBits });\n }\n const clipCount = cursor.u32();\n if (clipCount > 4096) return null;\n const clips = [];\n for (let i = 0; i < clipCount; i++)\n {\n clips.push({\n trackId: cursor.u32(),\n sourceId: cursor.u32(),\n eventId: cursor.u32(),\n playAt: cursor.f64(),\n beginTrimOffset: cursor.f64(),\n endTrimOffset: cursor.f64(),\n srcDuration: cursor.f64()\n });\n }\n const subTrackCount = clipCount > 0 ? cursor.u32() : 0;\n const autoCount = cursor.u32();\n if (autoCount > 4096) return null;\n for (let i = 0; i < autoCount; i++)\n {\n cursor.u32(); // clip index\n cursor.u32(); // automation type\n const points = cursor.u32();\n if (points > 65536) return null;\n cursor.at += points * 12;\n }\n const headEnd = cursor.at;\n\n // Tail: [NodeBaseParams...] u8 trackType, [switch+trans params when the\n // type is 3], signed s32 iLookAheadTime. The switch layout is tried FIRST because\n // it validates every field to the exact payload end - the simple layout\n // only checks one byte, and a switch tail ending in zero bytes would\n // satisfy it falsely.\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const end = bytes.byteLength;\n for (let typeAt = headEnd; typeAt <= end - 5; typeAt++)\n {\n if (view.getUint8(typeAt) !== 3) continue;\n const tail = new WwiseCursor(bytes, typeAt + 1);\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n headEnd,\n typeAt,\n options,\n );\n\n if (!nodeBase) continue;\n const groupType = tail.u8();\n if (groupType > 1) continue;\n const groupId = tail.u32();\n const defaultSwitch = tail.u32();\n const assocCount = tail.u32();\n if (assocCount > 1024) continue;\n const assoc = [];\n for (let i = 0; i < assocCount; i++) assoc.push(tail.u32());\n const trans = {\n srcTransitionTime: tail.s32(), srcFadeCurve: tail.u32(), srcFadeOffset: tail.s32(),\n syncType: tail.u32(), cueFilterHash: tail.u32(),\n dstTransitionTime: tail.s32(), dstFadeCurve: tail.u32(), dstFadeOffset: tail.s32()\n };\n const lookAheadTime = tail.s32();\n if (tail.at !== end) continue;\n return {\n sources, clips, subTrackCount,\n nodeBase,\n trackType: 3,\n lookAheadTime,\n switchParams: { groupType, groupId, defaultSwitch, assoc, trans }\n };\n }\n catch\n {\n continue;\n }\n }\n const simpleAt = end - 5;\n if (simpleAt >= headEnd)\n {\n const type = view.getUint8(simpleAt);\n if (type <= 2)\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n headEnd,\n simpleAt,\n options,\n );\n\n if (!nodeBase) return null;\n return {\n sources, clips, subTrackCount,\n nodeBase,\n trackType: type,\n lookAheadTime: view.getInt32(end - 4, true),\n switchParams: null\n };\n }\n }\n return null;\n}\n\n/**\n * Decode a music-playlist-container (HIRC 13) payload: children, meter,\n * stingers, transition rules, and the flat pre-order playlist tree.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.\n */\nexport function parseMusicPlaylist(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const rules = readTransRules(cursor);\n const itemCount = cursor.u32();\n if (itemCount > 8192) continue;\n if (cursor.remaining !== itemCount * 30) continue;\n const items = [];\n for (let i = 0; i < itemCount; i++)\n {\n items.push({\n segmentId: cursor.u32(),\n playlistItemId: cursor.u32(),\n childCount: cursor.u32(),\n rsType: cursor.s32(),\n loop: cursor.s16(),\n loopMin: cursor.s16(),\n loopMax: cursor.s16(),\n weight: cursor.u32(),\n avoidRepeatCount: cursor.u16(),\n usingWeight: cursor.u8() !== 0,\n shuffle: cursor.u8() !== 0\n });\n }\n if (cursor.at !== bytes.byteLength) continue;\n return { nodeBase, ...node, rules, playlist: items };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\n/**\n * Decode a music-switch-container (HIRC 12) payload: children, meter,\n * stingers, transition rules, argument groups, and the decision tree.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded switch container, or null when no anchored parse validates.\n */\nexport function parseMusicSwitch(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const rules = readTransRules(cursor);\n const continuePlayback = cursor.u8() !== 0;\n const treeDepth = cursor.u32();\n if (treeDepth > 16) continue;\n const argumentGroups = [];\n for (let i = 0; i < treeDepth; i++) argumentGroups.push({ groupId: cursor.u32() });\n for (let i = 0; i < treeDepth; i++) argumentGroups[i].groupType = cursor.u8();\n const treeDataSize = cursor.u32();\n const mode = cursor.u8();\n if (cursor.remaining !== treeDataSize) continue;\n if (treeDataSize % 12 !== 0) continue;\n const treeNodes = [];\n const nodeCount = treeDataSize / 12;\n for (let i = 0; i < nodeCount; i++)\n {\n const key = cursor.u32();\n // 4-byte union: leaf = audioNodeId, internal = childrenIdx + count.\n const audioNodeId = cursor.view.getUint32(cursor.at, true);\n const childrenIdx = cursor.u16();\n const childrenCount = cursor.u16();\n const weight = cursor.u16();\n const probability = cursor.u16();\n treeNodes.push({ key, audioNodeId, childrenIdx, childrenCount, weight, probability });\n }\n if (cursor.at !== bytes.byteLength) continue;\n return {\n nodeBase,\n ...node,\n rules,\n continuePlayback,\n argumentGroups,\n mode,\n treeNodes,\n };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\nconst MUSIC_PARSERS = Object.freeze({\n 10: (payload, knownIds, options) => parseMusicSegment(payload, knownIds, options),\n 11: (payload, knownIds, options) => parseMusicTrack(payload, options),\n 12: (payload, knownIds, options) => parseMusicSwitch(payload, knownIds, options),\n 13: (payload, knownIds, options) => parseMusicPlaylist(payload, knownIds, options)\n});\n\nconst MUSIC_TYPE_NAMES = Object.freeze({\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\"\n});\n\n/**\n * Decode every interactive-music node across one or more inspected banks.\n *\n * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.\n * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.\n */\nexport function musicNodesFromBanks(inspections)\n{\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\n const nodes = new Map();\n const failed = [];\n let parsed = 0;\n for (const inspection of banks)\n {\n const knownIds = new Set();\n for (const entry of inspection.hirc ?? []) knownIds.add(entry.id);\n for (const entry of inspection.hirc ?? [])\n {\n const parser = MUSIC_PARSERS[entry.type];\n if (!parser) continue;\n const payload = entry.payload instanceof Uint8Array ? entry.payload : null;\n const decoded = payload\n ? parser(payload, knownIds, {\n bankVersion: inspection.bankVersion,\n })\n : null;\n if (!decoded)\n {\n failed.push({ bank: inspection.source || \"\", type: MUSIC_TYPE_NAMES[entry.type], id: entry.id });\n continue;\n }\n parsed++;\n nodes.set(entry.id, { id: entry.id, type: MUSIC_TYPE_NAMES[entry.type], bank: inspection.source || \"\", ...decoded });\n }\n }\n return { nodes, diagnostics: { parsed, failed } };\n}\n"],"names":["plausibleMeter","view","at","byteLength","grid","getFloat64","offset","tempo","getFloat32","beats","getUint8","beatValue","Number","isFinite","includes","findAnchors","bytes","knownIds","DataView","buffer","byteOffset","anchors","count","getUint32","valid","i","has","push","readMusicNodeTail","cursor","childCount","u32","children","meter","gridPeriod","f64","gridOffset","f32","beatsPerBar","u8","meterOverride","stingerCount","stingers","triggerId","segmentId","syncPlayAt","cueFilterHash","dontRepeatTime","s32","numSegmentLookAhead","readTransRules","ruleCount","RangeError","rules","srcCount","srcIds","j","dstCount","dstIds","src","transitionTime","fadeCurve","fadeOffset","syncType","playPostExit","dst","jumpToId","jumpToType","u16","entryType","playPreEntry","matchSourceCueName","transitionSegment","fadeIn","fadeOut","parseMusicSegment","options","anchor","nodeBase","parseNodeBaseRange","WwiseCursor","node","duration","markerCount","markers","id","position","name","stringZ","some","marker","parseMusicTrack","sourceCount","sources","pluginId","streamType","sourceId","inMemoryMediaSize","sourceBits","size","clipCount","clips","trackId","eventId","playAt","beginTrimOffset","endTrimOffset","srcDuration","subTrackCount","autoCount","points","headEnd","end","typeAt","tail","groupType","groupId","defaultSwitch","assocCount","assoc","trans","srcTransitionTime","srcFadeCurve","srcFadeOffset","dstTransitionTime","dstFadeCurve","dstFadeOffset","lookAheadTime","trackType","switchParams","simpleAt","type","getInt32","parseMusicPlaylist","itemCount","remaining","items","playlistItemId","rsType","loop","s16","loopMin","loopMax","weight","avoidRepeatCount","usingWeight","shuffle","playlist","parseMusicSwitch","continuePlayback","treeDepth","argumentGroups","treeDataSize","mode","treeNodes","nodeCount","key","audioNodeId","childrenIdx","childrenCount","probability","MUSIC_PARSERS","Object","freeze","payload","MUSIC_TYPE_NAMES","musicNodesFromBanks","inspections","banks","Array","isArray","nodes","Map","failed","parsed","inspection","Set","entry","hirc","add","parser","Uint8Array","decoded","bankVersion","bank","source","set","diagnostics"],"mappings":"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"}