@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,7 +1,7 @@
1
1
  import { asUint8Array } from '#utils/bytes';
2
2
  import { CjsFormat } from '../../format/CjsFormat.js';
3
3
  import { wwiseIdFromName, joinSoundbanksInfo, buildSoundbanksCatalog, parseSoundbanksInfo, isSoundbanksInfo } from './core/soundbanksInfo.js';
4
- import { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON, normalizeValues, readWithValues, inspectWithValues, toJsonValue, probeSupportWithValues, extractMedia, isBNK, OUTPUT_JSON, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES } from './core/helpers.js';
4
+ import { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON, normalizeValues, readWithValues, inspectWithValues, probeSupportWithValues, extractMedia, isBNK, OUTPUT_JSON, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES } from './core/helpers.js';
5
5
  import { eventMediaFromBanks } from './core/graph.js';
6
6
  import { parseEventAction } from './core/eventAction.js';
7
7
  import { parseGlobalSettings } from './core/globalSettings.js';
@@ -9,6 +9,7 @@ import { parseBusNode, busNodesFromBanks } from './core/busNodes.js';
9
9
  import { parseEffectNode, effectNodesFromBanks } from './core/effectNodes.js';
10
10
  import { parseMusicSwitch, parseMusicPlaylist, parseMusicTrack, parseMusicSegment, musicNodesFromBanks } from './core/musicNodes.js';
11
11
  import { parseSfxLayer, parseSfxSwitch, parseSfxRandomSequence, parseSfxAttenuation, parseSfxActorMixer, sfxNodesFromBanks } from './core/sfxNodes.js';
12
+ import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
12
13
 
13
14
  const FORMAT_NAME = "CjsBnkFormat";
14
15
 
@@ -107,7 +108,7 @@ class CjsBnkFormat extends CjsFormat {
107
108
  * @returns {any} JSON-compatible value.
108
109
  */
109
110
  ToJSON(value) {
110
- return toJsonValue(value);
111
+ return toJsonWithByteSummary(value);
111
112
  }
112
113
 
113
114
  /**
@@ -174,7 +175,7 @@ class CjsBnkFormat extends CjsFormat {
174
175
  * @returns {any} JSON-compatible value.
175
176
  */
176
177
  static toJSON(value) {
177
- return toJsonValue(value);
178
+ return toJsonWithByteSummary(value);
178
179
  }
179
180
 
180
181
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../../src/resource/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n buildSoundbanksCatalog,\n isSoundbanksInfo,\n joinSoundbanksInfo,\n parseSoundbanksInfo,\n wwiseIdFromName\n} from \"./core/soundbanksInfo.js\";\nimport {\n DEFAULT_VALUES,\n HIRC_TYPE_NAMES,\n HIRC_V150_TYPE_NAMES,\n OUTPUT_BNK_JSON,\n OUTPUT_JSON,\n OUTPUT_MEDIA,\n OUTPUT_RAW,\n extractMedia,\n inspectWithValues,\n isBNK,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\nimport { eventMediaFromBanks } from \"./core/graph.js\";\nimport { parseEventAction } from \"./core/eventAction.js\";\nimport { parseGlobalSettings } from \"./core/globalSettings.js\";\nimport {\n busNodesFromBanks,\n parseBusNode\n} from \"./core/busNodes.js\";\nimport {\n effectNodesFromBanks,\n parseEffectNode\n} from \"./core/effectNodes.js\";\nimport {\n musicNodesFromBanks,\n parseMusicPlaylist,\n parseMusicSegment,\n parseMusicSwitch,\n parseMusicTrack\n} from \"./core/musicNodes.js\";\nimport {\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxLayer,\n parseSfxRandomSequence,\n parseSfxSwitch,\n sfxNodesFromBanks\n} from \"./core/sfxNodes.js\";\n\nconst FORMAT_NAME = \"CjsBnkFormat\";\n\n/**\n * Reader for Audiokinetic Wwise soundbank (.bnk) containers.\n *\n * Inspection decodes the bank header, embedded media index, exact v150 global\n * settings, object hierarchy listing (with version-stable typed fields), and\n * referenced bank names without copying payloads. Read can emit the raw bank,\n * debug JSON, or the embedded media items undecoded. The read path stays a\n * pure container reader; the Wwise-domain toolkit (SoundbanksInfo catalog\n * helpers, id hash, event -> media graph resolution) is grouped under the\n * `wwise` static.\n */\nexport class CjsBnkFormat extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Browser-worker module declaration consumed by CjsResManWorkerLoader.\n */\n static worker = Object.freeze({\n module: import.meta.url,\n exportName: \"CjsBnkFormat\",\n outputTypes: Object.freeze([ OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON ]),\n defaultOutput: OUTPUT_RAW\n });\n\n /**\n * Create a reusable bnk format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsBnkFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, options, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, options, FORMAT_NAME);\n }\n\n /**\n * Read soundbank bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Read soundbank bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect soundbank bytes without copying media payloads.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Soundbank metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot asynchronous soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsBnkFormat.read(input, options);\n }\n\n /**\n * One-shot soundbank inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} Soundbank metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot soundbank support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items with undecoded bytes.\n */\n static extractMedia(input, mediaId)\n {\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, DEFAULT_VALUES);\n return extractMedia(bytes, metadata, mediaId);\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a Wwise soundbank.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.\n * @returns {boolean} True when the BKHD header chunk is present.\n */\n static isBNK(input)\n {\n try\n {\n return isBNK(asUint8Array(input, \"Bnk input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Wwise-domain toolkit, grouped apart from the container-reading statics -\n * the single home for the SoundbanksInfo catalog helpers\n * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,\n * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the\n * lowercased name), and event-graph resolution.\n *\n * `eventMediaFromBanks(inspections, options)` is graph interpretation over\n * `inspect()` results, not a read path: banks may split events from their\n * target objects (EVE keeps all events in one bank and their sounds in\n * others), so always pass every related bank to one call. Returns\n * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See\n * core/graph.js for the walk policy.\n *\n * The interactive-music decoders (`musicNodesFromBanks` and the per-type\n * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy\n * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,\n * clips, playlist trees, decision trees, and transition rules. See\n * core/musicNodes.js for the anchored, exact-end-validated parse.\n *\n * The v150 authored-SFX decoders (`sfxNodesFromBanks` and the per-type\n * Global Settings, Event Action, Random/Sequence, Switch, Layer,\n * Actor-Mixer, and Attenuation parsers)\n * preserve raw Wwise semantics for the runtime audio layer's optional builder.\n * NodeBase facts, hierarchy-only Actor-Mixers, and attenuation objects\n * remain distinct from playable container behavior.\n *\n * `busNodesFromBanks` and `parseBusNode` expose qualified complete v150\n * Audio Bus and Auxiliary Bus bodies: ancestry, root output device,\n * properties, aux topology, policy, ducking, effect/metadata references,\n * RTPCs, and state values.\n *\n * `effectNodesFromBanks` and `parseEffectNode` expose complete generic\n * v150 Fx ShareSet and Fx Custom bodies while leaving plug-in parameter\n * blocks opaque for separately qualified DSP adapters.\n */\n static wwise = Object.freeze({\n isSoundbanksInfo,\n parseSoundbanksInfo,\n buildSoundbanksCatalog,\n joinSoundbanksInfo,\n wwiseIdFromName,\n eventMediaFromBanks,\n parseGlobalSettings,\n parseEventAction,\n musicNodesFromBanks,\n parseMusicSegment,\n parseMusicTrack,\n parseMusicPlaylist,\n parseMusicSwitch,\n busNodesFromBanks,\n parseBusNode,\n effectNodesFromBanks,\n parseEffectNode,\n sfxNodesFromBanks,\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxRandomSequence,\n parseSfxSwitch,\n parseSfxLayer\n });\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON,\n BNK_JSON: OUTPUT_BNK_JSON,\n MEDIA: OUTPUT_MEDIA\n });\n\n static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;\n\n static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;\n\n static id = \"bnk\";\n\n static mediaTypes = Object.freeze([ \"audio\" ]);\n\n static outputs = CjsFormat.defineOutputs({\n\n raw: { default: true, passthrough: true },\n\n media: { },\n\n bnkJson: { role: \"debug\", probes: [ \"bnkJson\", \"raw\" ] }\n\n });\n\n static extensions = Object.freeze([ \".bnk\" ]);\n}\n\nexport default CjsBnkFormat;\n"],"names":["FORMAT_NAME","CjsBnkFormat","CjsFormat","DEFAULT_VALUES","worker","Object","freeze","module","import","meta","url","exportName","outputTypes","OUTPUT_RAW","OUTPUT_MEDIA","OUTPUT_BNK_JSON","defaultOutput","constructor","options","SetValues","normalizeValues","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","extractMedia","mediaId","bytes","asUint8Array","metadata","toJSON","isBNK","wwise","isSoundbanksInfo","parseSoundbanksInfo","buildSoundbanksCatalog","joinSoundbanksInfo","wwiseIdFromName","eventMediaFromBanks","parseGlobalSettings","parseEventAction","musicNodesFromBanks","parseMusicSegment","parseMusicTrack","parseMusicPlaylist","parseMusicSwitch","busNodesFromBanks","parseBusNode","effectNodesFromBanks","parseEffectNode","sfxNodesFromBanks","parseSfxActorMixer","parseSfxAttenuation","parseSfxRandomSequence","parseSfxSwitch","parseSfxLayer","Output","RAW","JSON","OUTPUT_JSON","BNK_JSON","MEDIA","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","id","mediaTypes","outputs","defineOutputs","raw","default","passthrough","media","bnkJson","role","probes","extensions"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../../src/resource/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n buildSoundbanksCatalog,\n isSoundbanksInfo,\n joinSoundbanksInfo,\n parseSoundbanksInfo,\n wwiseIdFromName\n} from \"./core/soundbanksInfo.js\";\nimport {\n DEFAULT_VALUES,\n HIRC_TYPE_NAMES,\n HIRC_V150_TYPE_NAMES,\n OUTPUT_BNK_JSON,\n OUTPUT_JSON,\n OUTPUT_MEDIA,\n OUTPUT_RAW,\n extractMedia,\n inspectWithValues,\n isBNK,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\nimport { eventMediaFromBanks } from \"./core/graph.js\";\nimport { parseEventAction } from \"./core/eventAction.js\";\nimport { parseGlobalSettings } from \"./core/globalSettings.js\";\nimport {\n busNodesFromBanks,\n parseBusNode\n} from \"./core/busNodes.js\";\nimport {\n effectNodesFromBanks,\n parseEffectNode\n} from \"./core/effectNodes.js\";\nimport {\n musicNodesFromBanks,\n parseMusicPlaylist,\n parseMusicSegment,\n parseMusicSwitch,\n parseMusicTrack\n} from \"./core/musicNodes.js\";\nimport {\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxLayer,\n parseSfxRandomSequence,\n parseSfxSwitch,\n sfxNodesFromBanks\n} from \"./core/sfxNodes.js\";\n\nconst FORMAT_NAME = \"CjsBnkFormat\";\n\n/**\n * Reader for Audiokinetic Wwise soundbank (.bnk) containers.\n *\n * Inspection decodes the bank header, embedded media index, exact v150 global\n * settings, object hierarchy listing (with version-stable typed fields), and\n * referenced bank names without copying payloads. Read can emit the raw bank,\n * debug JSON, or the embedded media items undecoded. The read path stays a\n * pure container reader; the Wwise-domain toolkit (SoundbanksInfo catalog\n * helpers, id hash, event -> media graph resolution) is grouped under the\n * `wwise` static.\n */\nexport class CjsBnkFormat extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Browser-worker module declaration consumed by CjsResManWorkerLoader.\n */\n static worker = Object.freeze({\n module: import.meta.url,\n exportName: \"CjsBnkFormat\",\n outputTypes: Object.freeze([ OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON ]),\n defaultOutput: OUTPUT_RAW\n });\n\n /**\n * Create a reusable bnk format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsBnkFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, options, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, options, FORMAT_NAME);\n }\n\n /**\n * Read soundbank bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Read soundbank bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect soundbank bytes without copying media payloads.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Soundbank metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot asynchronous soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsBnkFormat.read(input, options);\n }\n\n /**\n * One-shot soundbank inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} Soundbank metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot soundbank support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items with undecoded bytes.\n */\n static extractMedia(input, mediaId)\n {\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, DEFAULT_VALUES);\n return extractMedia(bytes, metadata, mediaId);\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a Wwise soundbank.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.\n * @returns {boolean} True when the BKHD header chunk is present.\n */\n static isBNK(input)\n {\n try\n {\n return isBNK(asUint8Array(input, \"Bnk input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Wwise-domain toolkit, grouped apart from the container-reading statics -\n * the single home for the SoundbanksInfo catalog helpers\n * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,\n * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the\n * lowercased name), and event-graph resolution.\n *\n * `eventMediaFromBanks(inspections, options)` is graph interpretation over\n * `inspect()` results, not a read path: banks may split events from their\n * target objects (EVE keeps all events in one bank and their sounds in\n * others), so always pass every related bank to one call. Returns\n * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See\n * core/graph.js for the walk policy.\n *\n * The interactive-music decoders (`musicNodesFromBanks` and the per-type\n * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy\n * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,\n * clips, playlist trees, decision trees, and transition rules. See\n * core/musicNodes.js for the anchored, exact-end-validated parse.\n *\n * The v150 authored-SFX decoders (`sfxNodesFromBanks` and the per-type\n * Global Settings, Event Action, Random/Sequence, Switch, Layer,\n * Actor-Mixer, and Attenuation parsers)\n * preserve raw Wwise semantics for the runtime audio layer's optional builder.\n * NodeBase facts, hierarchy-only Actor-Mixers, and attenuation objects\n * remain distinct from playable container behavior.\n *\n * `busNodesFromBanks` and `parseBusNode` expose qualified complete v150\n * Audio Bus and Auxiliary Bus bodies: ancestry, root output device,\n * properties, aux topology, policy, ducking, effect/metadata references,\n * RTPCs, and state values.\n *\n * `effectNodesFromBanks` and `parseEffectNode` expose complete generic\n * v150 Fx ShareSet and Fx Custom bodies while leaving plug-in parameter\n * blocks opaque for separately qualified DSP adapters.\n */\n static wwise = Object.freeze({\n isSoundbanksInfo,\n parseSoundbanksInfo,\n buildSoundbanksCatalog,\n joinSoundbanksInfo,\n wwiseIdFromName,\n eventMediaFromBanks,\n parseGlobalSettings,\n parseEventAction,\n musicNodesFromBanks,\n parseMusicSegment,\n parseMusicTrack,\n parseMusicPlaylist,\n parseMusicSwitch,\n busNodesFromBanks,\n parseBusNode,\n effectNodesFromBanks,\n parseEffectNode,\n sfxNodesFromBanks,\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxRandomSequence,\n parseSfxSwitch,\n parseSfxLayer\n });\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON,\n BNK_JSON: OUTPUT_BNK_JSON,\n MEDIA: OUTPUT_MEDIA\n });\n\n static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;\n\n static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;\n\n static id = \"bnk\";\n\n static mediaTypes = Object.freeze([ \"audio\" ]);\n\n static outputs = CjsFormat.defineOutputs({\n\n raw: { default: true, passthrough: true },\n\n media: { },\n\n bnkJson: { role: \"debug\", probes: [ \"bnkJson\", \"raw\" ] }\n\n });\n\n static extensions = Object.freeze([ \".bnk\" ]);\n}\n\nexport default CjsBnkFormat;\n"],"names":["FORMAT_NAME","CjsBnkFormat","CjsFormat","DEFAULT_VALUES","worker","Object","freeze","module","import","meta","url","exportName","outputTypes","OUTPUT_RAW","OUTPUT_MEDIA","OUTPUT_BNK_JSON","defaultOutput","constructor","options","SetValues","normalizeValues","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","extractMedia","mediaId","bytes","asUint8Array","metadata","toJSON","isBNK","wwise","isSoundbanksInfo","parseSoundbanksInfo","buildSoundbanksCatalog","joinSoundbanksInfo","wwiseIdFromName","eventMediaFromBanks","parseGlobalSettings","parseEventAction","musicNodesFromBanks","parseMusicSegment","parseMusicTrack","parseMusicPlaylist","parseMusicSwitch","busNodesFromBanks","parseBusNode","effectNodesFromBanks","parseEffectNode","sfxNodesFromBanks","parseSfxActorMixer","parseSfxAttenuation","parseSfxRandomSequence","parseSfxSwitch","parseSfxLayer","Output","RAW","JSON","OUTPUT_JSON","BNK_JSON","MEDIA","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","id","mediaTypes","outputs","defineOutputs","raw","default","passthrough","media","bnkJson","role","probes","extensions"],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ // The one byte cursor for every exact Wwise payload, and the variable-length
2
+ // integer it reads.
3
+ //
4
+ // SELF-CONTAINED ON PURPOSE. This module imports nothing. It used to live in
5
+ // `nodeBase.js`, which imports `helpers.js`, which imports `eventAction.js` -
6
+ // so the moment `eventAction.js` started using the shared cursor the three
7
+ // formed an import cycle. Rollup tolerated it; ES module cycles are a real
8
+ // hazard and the fix is for the primitive everything reaches for to depend on
9
+ // nothing.
10
+
11
+ /**
12
+ * Reads Wwise's MSB-first base-128 unsigned integer.
13
+ *
14
+ * @returns {{value:number,nextOffset:number}|null} Decoded value and next
15
+ * offset, or null for truncated, overflowed, or non-canonical input.
16
+ */
17
+ function readWwiseVar(bytes, offset = 0) {
18
+ let at = Number(offset);
19
+ let value = 0;
20
+ let count = 0;
21
+ if (!Number.isSafeInteger(at) || at < 0) {
22
+ return null;
23
+ }
24
+ while (at < bytes.byteLength && count < 5) {
25
+ const byte = bytes[at++];
26
+ if (count === 0 && byte === 0x80) {
27
+ return null;
28
+ }
29
+ if (value > 0x01ffffff) {
30
+ return null;
31
+ }
32
+ value = value * 128 + (byte & 0x7f);
33
+ count++;
34
+ if ((byte & 0x80) === 0) {
35
+ return value <= 0xffffffff ? {
36
+ value: value >>> 0,
37
+ nextOffset: at
38
+ } : null;
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+
44
+ /** Bounds-aware little-endian cursor over one HIRC payload. */
45
+ class WwiseCursor {
46
+ /**
47
+ * Creates a cursor over a bounded portion of a Wwise payload.
48
+ *
49
+ * @param {Uint8Array} bytes Payload bytes.
50
+ * @param {number} [offset=0] Initial byte offset.
51
+ * @param {number} [end=bytes.byteLength] Exclusive ending offset.
52
+ */
53
+ constructor(bytes, offset = 0, end = bytes?.byteLength) {
54
+ if (!(bytes instanceof Uint8Array) || !Number.isSafeInteger(offset) || !Number.isSafeInteger(end) || offset < 0 || end < offset || end > bytes.byteLength) {
55
+ throw new TypeError("Invalid Wwise cursor range");
56
+ }
57
+ this.bytes = bytes;
58
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
59
+ this.at = offset;
60
+ this.end = end;
61
+ }
62
+
63
+ /** Gets the number of unread bytes in the bounded range. */
64
+ get remaining() {
65
+ return this.end - this.at;
66
+ }
67
+
68
+ /**
69
+ * Verifies that a read of the requested size stays within the range.
70
+ *
71
+ * @param {number} size Number of bytes to read.
72
+ * @throws {RangeError} The read would exceed the bounded range.
73
+ */
74
+ ensure(size) {
75
+ if (!Number.isSafeInteger(size) || size < 0 || this.at + size > this.end) {
76
+ throw new RangeError("truncated Wwise object");
77
+ }
78
+ }
79
+
80
+ /** Reads an unsigned 8-bit integer. */
81
+ u8() {
82
+ this.ensure(1);
83
+ return this.view.getUint8(this.at++);
84
+ }
85
+
86
+ /** Reads a signed 8-bit integer. */
87
+ s8() {
88
+ this.ensure(1);
89
+ return this.view.getInt8(this.at++);
90
+ }
91
+
92
+ /** Reads a little-endian unsigned 16-bit integer. */
93
+ u16() {
94
+ this.ensure(2);
95
+ const value = this.view.getUint16(this.at, true);
96
+ this.at += 2;
97
+ return value;
98
+ }
99
+
100
+ /** Reads a little-endian unsigned 32-bit integer. */
101
+ u32() {
102
+ this.ensure(4);
103
+ const value = this.view.getUint32(this.at, true);
104
+ this.at += 4;
105
+ return value;
106
+ }
107
+
108
+ /** Reads a little-endian signed 32-bit integer. */
109
+ s32() {
110
+ this.ensure(4);
111
+ const value = this.view.getInt32(this.at, true);
112
+ this.at += 4;
113
+ return value;
114
+ }
115
+
116
+ /** Reads a little-endian 32-bit floating-point value. */
117
+ f32() {
118
+ this.ensure(4);
119
+ const value = this.view.getFloat32(this.at, true);
120
+ this.at += 4;
121
+ return value;
122
+ }
123
+
124
+ /** Reads a little-endian signed 16-bit integer. */
125
+ s16() {
126
+ this.ensure(2);
127
+ const value = this.view.getInt16(this.at, true);
128
+ this.at += 2;
129
+ return value;
130
+ }
131
+
132
+ /** Reads a little-endian 64-bit floating-point value. */
133
+ f64() {
134
+ this.ensure(8);
135
+ const value = this.view.getFloat64(this.at, true);
136
+ this.at += 8;
137
+ return value;
138
+ }
139
+
140
+ /**
141
+ * Reads a 32-bit float and rejects a non-finite result.
142
+ *
143
+ * The cursor advances BEFORE the finiteness check, which is deliberate and
144
+ * was the donor behaviour: the four bytes were consumed either way, and a
145
+ * caller that catches the rejection and inspects the cursor must see it past
146
+ * the field it rejected.
147
+ *
148
+ * @returns {number} A finite float.
149
+ * @throws {RangeError} The stored value is NaN or infinite.
150
+ */
151
+ finiteF32() {
152
+ this.ensure(4);
153
+ const value = this.view.getFloat32(this.at, true);
154
+ this.at += 4;
155
+ if (!Number.isFinite(value)) {
156
+ throw new RangeError("Wwise float must be finite");
157
+ }
158
+ return value;
159
+ }
160
+
161
+ /**
162
+ * Reads a table element count and rejects one the payload cannot hold.
163
+ *
164
+ * A corrupt count is the cheapest way to make a reader allocate for a table
165
+ * that is not there, so it is checked against what remains rather than
166
+ * trusted and discovered later, one truncated element at a time.
167
+ *
168
+ * NAMED FOR THE READ, because this module already has a free
169
+ * `boundedCount(value, remaining, stride, maximum)` that validates a count
170
+ * someone else read, with an explicit ceiling. The two are different checks
171
+ * and must not share a name in one file.
172
+ *
173
+ * @param {number} minimumStride Smallest byte size one element can occupy.
174
+ * @returns {number} The element count.
175
+ * @throws {RangeError} The count exceeds what the remaining bytes allow.
176
+ */
177
+ readBoundedCount(minimumStride) {
178
+ const count = this.u32();
179
+ if (count > Math.floor(this.remaining / minimumStride)) {
180
+ throw new RangeError("Wwise table count exceeds payload");
181
+ }
182
+ return count;
183
+ }
184
+
185
+ /**
186
+ * Reads a NUL-terminated string and consumes its terminator.
187
+ *
188
+ * Decoded byte by byte through `String.fromCharCode`, NOT as UTF-8. That is
189
+ * the donor behaviour and it is load-bearing: the music parsers compare the
190
+ * decoded marker names while validating an exact end offset, so widening the
191
+ * decode would change which banks parse.
192
+ *
193
+ * @returns {string} The string, without its terminator.
194
+ */
195
+ stringZ() {
196
+ let end = this.at;
197
+ while (end < this.end && this.bytes[end] !== 0) end++;
198
+ let value = "";
199
+ for (let index = this.at; index < end; index++) {
200
+ value += String.fromCharCode(this.bytes[index]);
201
+ }
202
+ this.at = end + 1;
203
+ return value;
204
+ }
205
+
206
+ /** Reads a Wwise variable-length unsigned integer. */
207
+ variable() {
208
+ const result = readWwiseVar(this.bytes.subarray(0, this.end), this.at);
209
+ if (!result) {
210
+ throw new RangeError("invalid Wwise variable integer");
211
+ }
212
+ this.at = result.nextOffset;
213
+ return result.value;
214
+ }
215
+ }
216
+
217
+ export { WwiseCursor, readWwiseVar };
218
+ //# sourceMappingURL=WwiseCursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WwiseCursor.js","sources":["../../../../../../src/resource/formats/bnk/core/WwiseCursor.js"],"sourcesContent":["// The one byte cursor for every exact Wwise payload, and the variable-length\n// integer it reads.\n//\n// SELF-CONTAINED ON PURPOSE. This module imports nothing. It used to live in\n// `nodeBase.js`, which imports `helpers.js`, which imports `eventAction.js` -\n// so the moment `eventAction.js` started using the shared cursor the three\n// formed an import cycle. Rollup tolerated it; ES module cycles are a real\n// hazard and the fix is for the primitive everything reaches for to depend on\n// nothing.\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\n/** Bounds-aware little-endian cursor over one HIRC payload. */\nexport class WwiseCursor\n{\n /**\n * Creates a cursor over a bounded portion of a Wwise payload.\n *\n * @param {Uint8Array} bytes Payload bytes.\n * @param {number} [offset=0] Initial byte offset.\n * @param {number} [end=bytes.byteLength] Exclusive ending offset.\n */\n constructor(bytes, offset = 0, end = bytes?.byteLength)\n {\n if (!(bytes instanceof Uint8Array)\n || !Number.isSafeInteger(offset)\n || !Number.isSafeInteger(end)\n || offset < 0\n || end < offset\n || end > bytes.byteLength)\n {\n throw new TypeError(\"Invalid Wwise cursor range\");\n }\n\n this.bytes = bytes;\n this.view = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength,\n );\n this.at = offset;\n this.end = end;\n }\n\n /** Gets the number of unread bytes in the bounded range. */\n get remaining()\n {\n return this.end - this.at;\n }\n\n /**\n * Verifies that a read of the requested size stays within the range.\n *\n * @param {number} size Number of bytes to read.\n * @throws {RangeError} The read would exceed the bounded range.\n */\n ensure(size)\n {\n if (!Number.isSafeInteger(size)\n || size < 0\n || this.at + size > this.end)\n {\n throw new RangeError(\"truncated Wwise object\");\n }\n }\n\n /** Reads an unsigned 8-bit integer. */\n u8()\n {\n this.ensure(1);\n return this.view.getUint8(this.at++);\n }\n\n /** Reads a signed 8-bit integer. */\n s8()\n {\n this.ensure(1);\n return this.view.getInt8(this.at++);\n }\n\n /** Reads a little-endian unsigned 16-bit integer. */\n u16()\n {\n this.ensure(2);\n const value = this.view.getUint16(this.at, true);\n\n this.at += 2;\n return value;\n }\n\n /** Reads a little-endian unsigned 32-bit integer. */\n u32()\n {\n this.ensure(4);\n const value = this.view.getUint32(this.at, true);\n\n this.at += 4;\n return value;\n }\n\n /** Reads a little-endian signed 32-bit integer. */\n s32()\n {\n this.ensure(4);\n const value = this.view.getInt32(this.at, true);\n\n this.at += 4;\n return value;\n }\n\n /** Reads a little-endian 32-bit floating-point value. */\n f32()\n {\n this.ensure(4);\n const value = this.view.getFloat32(this.at, true);\n\n this.at += 4;\n return value;\n }\n\n /** Reads a little-endian signed 16-bit integer. */\n s16()\n {\n this.ensure(2);\n const value = this.view.getInt16(this.at, true);\n\n this.at += 2;\n return value;\n }\n\n /** Reads a little-endian 64-bit floating-point value. */\n f64()\n {\n this.ensure(8);\n const value = this.view.getFloat64(this.at, true);\n\n this.at += 8;\n return value;\n }\n\n /**\n * Reads a 32-bit float and rejects a non-finite result.\n *\n * The cursor advances BEFORE the finiteness check, which is deliberate and\n * was the donor behaviour: the four bytes were consumed either way, and a\n * caller that catches the rejection and inspects the cursor must see it past\n * the field it rejected.\n *\n * @returns {number} A finite float.\n * @throws {RangeError} The stored value is NaN or infinite.\n */\n finiteF32()\n {\n this.ensure(4);\n const value = this.view.getFloat32(this.at, true);\n\n this.at += 4;\n if (!Number.isFinite(value))\n {\n throw new RangeError(\"Wwise float must be finite\");\n }\n return value;\n }\n\n /**\n * Reads a table element count and rejects one the payload cannot hold.\n *\n * A corrupt count is the cheapest way to make a reader allocate for a table\n * that is not there, so it is checked against what remains rather than\n * trusted and discovered later, one truncated element at a time.\n *\n * NAMED FOR THE READ, because this module already has a free\n * `boundedCount(value, remaining, stride, maximum)` that validates a count\n * someone else read, with an explicit ceiling. The two are different checks\n * and must not share a name in one file.\n *\n * @param {number} minimumStride Smallest byte size one element can occupy.\n * @returns {number} The element count.\n * @throws {RangeError} The count exceeds what the remaining bytes allow.\n */\n readBoundedCount(minimumStride)\n {\n const count = this.u32();\n\n if (count > Math.floor(this.remaining / minimumStride))\n {\n throw new RangeError(\"Wwise table count exceeds payload\");\n }\n return count;\n }\n\n /**\n * Reads a NUL-terminated string and consumes its terminator.\n *\n * Decoded byte by byte through `String.fromCharCode`, NOT as UTF-8. That is\n * the donor behaviour and it is load-bearing: the music parsers compare the\n * decoded marker names while validating an exact end offset, so widening the\n * decode would change which banks parse.\n *\n * @returns {string} The string, without its terminator.\n */\n stringZ()\n {\n let end = this.at;\n while (end < this.end && this.bytes[end] !== 0) end++;\n\n let value = \"\";\n for (let index = this.at; index < end; index++)\n {\n value += String.fromCharCode(this.bytes[index]);\n }\n\n this.at = end + 1;\n return value;\n }\n\n /** Reads a Wwise variable-length unsigned integer. */\n variable()\n {\n const result = readWwiseVar(\n this.bytes.subarray(0, this.end),\n this.at,\n );\n\n if (!result)\n {\n throw new RangeError(\"invalid Wwise variable integer\");\n }\n\n this.at = result.nextOffset;\n return result.value;\n }\n}\n"],"names":["readWwiseVar","bytes","offset","at","Number","value","count","isSafeInteger","byteLength","byte","nextOffset","WwiseCursor","constructor","end","Uint8Array","TypeError","view","DataView","buffer","byteOffset","remaining","ensure","size","RangeError","u8","getUint8","s8","getInt8","u16","getUint16","u32","getUint32","s32","getInt32","f32","getFloat32","s16","getInt16","f64","getFloat64","finiteF32","isFinite","readBoundedCount","minimumStride","Math","floor","stringZ","index","String","fromCharCode","variable","result","subarray"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { WwiseCursor, boundedCount, readPositioning, readAux, finite, readInitialRtpcs, readStateChunk } from './nodeBase.js';
1
+ import { boundedCount, readPositioning, readAux, finite, readInitialRtpcs, readStateChunk } from './nodeBase.js';
2
+ import { WwiseCursor } from './WwiseCursor.js';
2
3
 
3
4
  // Exact Wwise v150 Audio Bus and Auxiliary Bus decoding. The HIRC payload
4
5
  // supplied by inspect() starts after the object id. Records preserve authored
@@ -1 +1 @@
1
- {"version":3,"file":"busNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/busNodes.js"],"sourcesContent":["// Exact Wwise v150 Audio Bus and Auxiliary Bus decoding. The HIRC payload\r\n// supplied by inspect() starts after the object id. Records preserve authored\r\n// routing, bus policy, ducking, effect references, metadata, RTPCs, and state\r\n// without assigning runtime mixing or plug-in semantics.\r\n\r\nimport {\r\n boundedCount,\r\n finite,\r\n readAux,\r\n readInitialRtpcs,\r\n readPositioning,\r\n readStateChunk,\r\n WwiseCursor,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = 150;\r\nconst AUDIO_BUS_TYPE = 8;\r\nconst AUXILIARY_BUS_TYPE = 18;\r\nconst BUS_VOLUME_PROPERTY_ID = 0x04;\r\nconst MAKE_UP_GAIN_PROPERTY_ID = 0x05;\r\nconst OUTPUT_BUS_VOLUME_PROPERTY_ID = 0x0d;\r\nconst FINITE_GAIN_PROPERTY_IDS = new Set([\r\n BUS_VOLUME_PROPERTY_ID,\r\n MAKE_UP_GAIN_PROPERTY_ID,\r\n OUTPUT_BUS_VOLUME_PROPERTY_ID,\r\n]);\r\n\r\n/**\r\n * Decodes one complete v150 Audio or Auxiliary Bus body.\r\n *\r\n * @param {Uint8Array} payload Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification.\r\n * @returns {object|null} Typed bus body, or null when it is invalid.\r\n */\r\nexport function parseBusNode(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION\r\n || payload.byteLength < 5)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n const cursor = new WwiseCursor(payload);\r\n const overrideBusId = cursor.u32();\r\n let outputDeviceId = null;\r\n\r\n if (overrideBusId === 0)\r\n {\r\n outputDeviceId = cursor.u32();\r\n }\r\n\r\n const propertyCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 5,\r\n 255,\r\n );\r\n const ids = [];\r\n const seen = new Set();\r\n const properties = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n ids.push(cursor.u8());\r\n }\r\n\r\n for (const id of ids)\r\n {\r\n if (seen.has(id)) return null;\r\n seen.add(id);\r\n\r\n const rawValue = cursor.u32();\r\n const valueBytes = new ArrayBuffer(4);\r\n const valueView = new DataView(valueBytes);\r\n\r\n valueView.setUint32(0, rawValue, true);\r\n const floatValue = valueView.getFloat32(0, true);\r\n\r\n if (FINITE_GAIN_PROPERTY_IDS.has(id)\r\n && !Number.isFinite(floatValue))\r\n {\r\n return null;\r\n }\r\n\r\n properties.push({ id, rawValue, floatValue });\r\n }\r\n\r\n const prefixByteLength = cursor.at;\r\n const positioning = readPositioning(cursor);\r\n const aux = readAux(cursor);\r\n const policyFlags = cursor.u8();\r\n const maxInstances = cursor.u16();\r\n const channelConfigRaw = cursor.u32();\r\n const hdrFlags = cursor.u8();\r\n const recoveryTime = cursor.s32();\r\n const maxDuckVolume = finite(cursor.f32());\r\n const ducks = ReadDucks(cursor);\r\n const fx = ReadEffects(cursor);\r\n const metadata = ReadMetadata(cursor);\r\n const rtpcs = readInitialRtpcs(cursor);\r\n const state = readStateChunk(cursor);\r\n\r\n if (cursor.remaining !== 0) return null;\r\n\r\n const gainValue = id => properties.find(\r\n property => property.id === id,\r\n )?.floatValue ?? null;\r\n\r\n return {\r\n overrideBusId,\r\n outputDeviceId,\r\n properties,\r\n busVolume: gainValue(BUS_VOLUME_PROPERTY_ID),\r\n makeUpGain: gainValue(MAKE_UP_GAIN_PROPERTY_ID),\r\n outputBusVolume: gainValue(OUTPUT_BUS_VOLUME_PROPERTY_ID),\r\n prefixByteLength,\r\n positioning,\r\n aux,\r\n policy: {\r\n flags: policyFlags,\r\n killNewest: Boolean(policyFlags & 0x01),\r\n useVirtualBehavior: Boolean(policyFlags & 0x02),\r\n ignoreParentMaxInstances: Boolean(policyFlags & 0x04),\r\n backgroundMusic: Boolean(policyFlags & 0x08),\r\n maxInstances,\r\n },\r\n channelConfig: {\r\n raw: channelConfigRaw,\r\n channelCount: channelConfigRaw & 0xff,\r\n configType: (channelConfigRaw >>> 8) & 0x0f,\r\n channelMask: channelConfigRaw >>> 12,\r\n },\r\n hdr: {\r\n flags: hdrFlags,\r\n enabled: Boolean(hdrFlags & 0x01),\r\n exponentialRelease: Boolean(hdrFlags & 0x02),\r\n },\r\n recoveryTime,\r\n maxDuckVolume,\r\n ducks,\r\n fx,\r\n metadata,\r\n rtpcs,\r\n state,\r\n byteLength: cursor.at,\r\n };\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n}\r\n\r\nfunction ReadDucks(cursor)\r\n{\r\n const count = boundedCount(cursor.u32(), cursor.remaining, 18, 65535);\r\n const ducks = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const busId = cursor.u32();\r\n const volume = finite(cursor.f32());\r\n const fadeOutTime = cursor.s32();\r\n const fadeInTime = cursor.s32();\r\n const curve = cursor.u8();\r\n const targetPropertyId = cursor.u8();\r\n\r\n if (curve > 9)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise duck curve\");\r\n }\r\n\r\n ducks.push({\r\n busId,\r\n volume,\r\n fadeOutTime,\r\n fadeInTime,\r\n curve,\r\n targetPropertyId,\r\n });\r\n }\r\n\r\n return ducks;\r\n}\r\n\r\nfunction ReadEffects(cursor)\r\n{\r\n const count = boundedCount(cursor.u8(), cursor.remaining, 6, 255);\r\n const bypassAllRaw = count ? cursor.u8() : 0;\r\n const slots = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const flags = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n flags,\r\n bypass: Boolean(flags & 0x01),\r\n shareSet: Boolean(flags & 0x02),\r\n });\r\n }\r\n\r\n return {\r\n bypassAllRaw,\r\n bypassAll: Boolean(bypassAllRaw),\r\n slots,\r\n };\r\n}\r\n\r\nfunction ReadMetadata(cursor)\r\n{\r\n const count = boundedCount(cursor.u8(), cursor.remaining, 6, 255);\r\n const slots = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const shareSetRaw = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n shareSetRaw,\r\n shareSet: Boolean(shareSetRaw),\r\n });\r\n }\r\n\r\n return { slots };\r\n}\r\n\r\n/**\r\n * Decodes every v150 Audio and Auxiliary Bus across inspected banks.\r\n *\r\n * @param {Array<object>|object} inspections Related `CjsBnkFormat.inspect()` results.\r\n * @returns {{buses: Map<number, object>, diagnostics: object}} Typed bus catalog and failures.\r\n */\r\nexport function busNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const buses = new Map();\r\n const failed = [];\r\n const duplicates = [];\r\n const unsupportedVersions = [];\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const bank = inspection?.source || \"\";\r\n const bankVersion = Number(inspection?.bankVersion) >>> 0;\r\n\r\n if (bankVersion !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version: bankVersion });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type !== AUDIO_BUS_TYPE\r\n && entry.type !== AUXILIARY_BUS_TYPE)\r\n {\r\n continue;\r\n }\r\n\r\n const decoded = parseBusNode(entry.payload, { bankVersion });\r\n const type = entry.type === AUDIO_BUS_TYPE\r\n ? \"audio-bus\"\r\n : \"auxiliary-bus\";\r\n\r\n if (!decoded)\r\n {\r\n failed.push({\r\n bank,\r\n version: bankVersion,\r\n type,\r\n id: entry.id,\r\n reason: \"invalid v150 bus body\",\r\n });\r\n continue;\r\n }\r\n if (buses.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: buses.get(entry.id).bank,\r\n bank,\r\n });\r\n }\r\n\r\n parsed++;\r\n buses.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n type,\r\n ...decoded,\r\n });\r\n }\r\n }\r\n\r\n return {\r\n buses,\r\n diagnostics: {\r\n parsed,\r\n failed,\r\n duplicates,\r\n unsupportedVersions,\r\n },\r\n };\r\n}\r\n"],"names":["SUPPORTED_VERSION","AUDIO_BUS_TYPE","AUXILIARY_BUS_TYPE","BUS_VOLUME_PROPERTY_ID","MAKE_UP_GAIN_PROPERTY_ID","OUTPUT_BUS_VOLUME_PROPERTY_ID","FINITE_GAIN_PROPERTY_IDS","Set","parseBusNode","payload","bankVersion","Uint8Array","Number","byteLength","cursor","WwiseCursor","overrideBusId","u32","outputDeviceId","propertyCount","boundedCount","u8","remaining","ids","seen","properties","index","push","id","has","add","rawValue","valueBytes","ArrayBuffer","valueView","DataView","setUint32","floatValue","getFloat32","isFinite","prefixByteLength","at","positioning","readPositioning","aux","readAux","policyFlags","maxInstances","u16","channelConfigRaw","hdrFlags","recoveryTime","s32","maxDuckVolume","finite","f32","ducks","ReadDucks","fx","ReadEffects","metadata","ReadMetadata","rtpcs","readInitialRtpcs","state","readStateChunk","gainValue","find","property","busVolume","makeUpGain","outputBusVolume","policy","flags","killNewest","Boolean","useVirtualBehavior","ignoreParentMaxInstances","backgroundMusic","channelConfig","raw","channelCount","configType","channelMask","hdr","enabled","exponentialRelease","count","busId","volume","fadeOutTime","fadeInTime","curve","targetPropertyId","RangeError","bypassAllRaw","slots","slot","fxId","bypass","shareSet","bypassAll","shareSetRaw","busNodesFromBanks","inspections","banks","Array","isArray","buses","Map","failed","duplicates","unsupportedVersions","parsed","inspection","bank","source","version","entry","hirc","type","decoded","reason","previousBank","get","set","diagnostics"],"mappings":"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"}
1
+ {"version":3,"file":"busNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/busNodes.js"],"sourcesContent":["// Exact Wwise v150 Audio Bus and Auxiliary Bus decoding. The HIRC payload\r\n// supplied by inspect() starts after the object id. Records preserve authored\r\n// routing, bus policy, ducking, effect references, metadata, RTPCs, and state\r\n// without assigning runtime mixing or plug-in semantics.\r\n\r\nimport {\r\n boundedCount,\r\n finite,\r\n readAux,\r\n readInitialRtpcs,\r\n readPositioning,\r\n readStateChunk,\r\n WwiseCursor,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = 150;\r\nconst AUDIO_BUS_TYPE = 8;\r\nconst AUXILIARY_BUS_TYPE = 18;\r\nconst BUS_VOLUME_PROPERTY_ID = 0x04;\r\nconst MAKE_UP_GAIN_PROPERTY_ID = 0x05;\r\nconst OUTPUT_BUS_VOLUME_PROPERTY_ID = 0x0d;\r\nconst FINITE_GAIN_PROPERTY_IDS = new Set([\r\n BUS_VOLUME_PROPERTY_ID,\r\n MAKE_UP_GAIN_PROPERTY_ID,\r\n OUTPUT_BUS_VOLUME_PROPERTY_ID,\r\n]);\r\n\r\n/**\r\n * Decodes one complete v150 Audio or Auxiliary Bus body.\r\n *\r\n * @param {Uint8Array} payload Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification.\r\n * @returns {object|null} Typed bus body, or null when it is invalid.\r\n */\r\nexport function parseBusNode(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION\r\n || payload.byteLength < 5)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n const cursor = new WwiseCursor(payload);\r\n const overrideBusId = cursor.u32();\r\n let outputDeviceId = null;\r\n\r\n if (overrideBusId === 0)\r\n {\r\n outputDeviceId = cursor.u32();\r\n }\r\n\r\n const propertyCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 5,\r\n 255,\r\n );\r\n const ids = [];\r\n const seen = new Set();\r\n const properties = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n ids.push(cursor.u8());\r\n }\r\n\r\n for (const id of ids)\r\n {\r\n if (seen.has(id)) return null;\r\n seen.add(id);\r\n\r\n const rawValue = cursor.u32();\r\n const valueBytes = new ArrayBuffer(4);\r\n const valueView = new DataView(valueBytes);\r\n\r\n valueView.setUint32(0, rawValue, true);\r\n const floatValue = valueView.getFloat32(0, true);\r\n\r\n if (FINITE_GAIN_PROPERTY_IDS.has(id)\r\n && !Number.isFinite(floatValue))\r\n {\r\n return null;\r\n }\r\n\r\n properties.push({ id, rawValue, floatValue });\r\n }\r\n\r\n const prefixByteLength = cursor.at;\r\n const positioning = readPositioning(cursor);\r\n const aux = readAux(cursor);\r\n const policyFlags = cursor.u8();\r\n const maxInstances = cursor.u16();\r\n const channelConfigRaw = cursor.u32();\r\n const hdrFlags = cursor.u8();\r\n const recoveryTime = cursor.s32();\r\n const maxDuckVolume = finite(cursor.f32());\r\n const ducks = ReadDucks(cursor);\r\n const fx = ReadEffects(cursor);\r\n const metadata = ReadMetadata(cursor);\r\n const rtpcs = readInitialRtpcs(cursor);\r\n const state = readStateChunk(cursor);\r\n\r\n if (cursor.remaining !== 0) return null;\r\n\r\n const gainValue = id => properties.find(\r\n property => property.id === id,\r\n )?.floatValue ?? null;\r\n\r\n return {\r\n overrideBusId,\r\n outputDeviceId,\r\n properties,\r\n busVolume: gainValue(BUS_VOLUME_PROPERTY_ID),\r\n makeUpGain: gainValue(MAKE_UP_GAIN_PROPERTY_ID),\r\n outputBusVolume: gainValue(OUTPUT_BUS_VOLUME_PROPERTY_ID),\r\n prefixByteLength,\r\n positioning,\r\n aux,\r\n policy: {\r\n flags: policyFlags,\r\n killNewest: Boolean(policyFlags & 0x01),\r\n useVirtualBehavior: Boolean(policyFlags & 0x02),\r\n ignoreParentMaxInstances: Boolean(policyFlags & 0x04),\r\n backgroundMusic: Boolean(policyFlags & 0x08),\r\n maxInstances,\r\n },\r\n channelConfig: {\r\n raw: channelConfigRaw,\r\n channelCount: channelConfigRaw & 0xff,\r\n configType: (channelConfigRaw >>> 8) & 0x0f,\r\n channelMask: channelConfigRaw >>> 12,\r\n },\r\n hdr: {\r\n flags: hdrFlags,\r\n enabled: Boolean(hdrFlags & 0x01),\r\n exponentialRelease: Boolean(hdrFlags & 0x02),\r\n },\r\n recoveryTime,\r\n maxDuckVolume,\r\n ducks,\r\n fx,\r\n metadata,\r\n rtpcs,\r\n state,\r\n byteLength: cursor.at,\r\n };\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n}\r\n\r\nfunction ReadDucks(cursor)\r\n{\r\n const count = boundedCount(cursor.u32(), cursor.remaining, 18, 65535);\r\n const ducks = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const busId = cursor.u32();\r\n const volume = finite(cursor.f32());\r\n const fadeOutTime = cursor.s32();\r\n const fadeInTime = cursor.s32();\r\n const curve = cursor.u8();\r\n const targetPropertyId = cursor.u8();\r\n\r\n if (curve > 9)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise duck curve\");\r\n }\r\n\r\n ducks.push({\r\n busId,\r\n volume,\r\n fadeOutTime,\r\n fadeInTime,\r\n curve,\r\n targetPropertyId,\r\n });\r\n }\r\n\r\n return ducks;\r\n}\r\n\r\nfunction ReadEffects(cursor)\r\n{\r\n const count = boundedCount(cursor.u8(), cursor.remaining, 6, 255);\r\n const bypassAllRaw = count ? cursor.u8() : 0;\r\n const slots = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const flags = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n flags,\r\n bypass: Boolean(flags & 0x01),\r\n shareSet: Boolean(flags & 0x02),\r\n });\r\n }\r\n\r\n return {\r\n bypassAllRaw,\r\n bypassAll: Boolean(bypassAllRaw),\r\n slots,\r\n };\r\n}\r\n\r\nfunction ReadMetadata(cursor)\r\n{\r\n const count = boundedCount(cursor.u8(), cursor.remaining, 6, 255);\r\n const slots = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const shareSetRaw = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n shareSetRaw,\r\n shareSet: Boolean(shareSetRaw),\r\n });\r\n }\r\n\r\n return { slots };\r\n}\r\n\r\n/**\r\n * Decodes every v150 Audio and Auxiliary Bus across inspected banks.\r\n *\r\n * @param {Array<object>|object} inspections Related `CjsBnkFormat.inspect()` results.\r\n * @returns {{buses: Map<number, object>, diagnostics: object}} Typed bus catalog and failures.\r\n */\r\nexport function busNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const buses = new Map();\r\n const failed = [];\r\n const duplicates = [];\r\n const unsupportedVersions = [];\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const bank = inspection?.source || \"\";\r\n const bankVersion = Number(inspection?.bankVersion) >>> 0;\r\n\r\n if (bankVersion !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version: bankVersion });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type !== AUDIO_BUS_TYPE\r\n && entry.type !== AUXILIARY_BUS_TYPE)\r\n {\r\n continue;\r\n }\r\n\r\n const decoded = parseBusNode(entry.payload, { bankVersion });\r\n const type = entry.type === AUDIO_BUS_TYPE\r\n ? \"audio-bus\"\r\n : \"auxiliary-bus\";\r\n\r\n if (!decoded)\r\n {\r\n failed.push({\r\n bank,\r\n version: bankVersion,\r\n type,\r\n id: entry.id,\r\n reason: \"invalid v150 bus body\",\r\n });\r\n continue;\r\n }\r\n if (buses.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: buses.get(entry.id).bank,\r\n bank,\r\n });\r\n }\r\n\r\n parsed++;\r\n buses.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n type,\r\n ...decoded,\r\n });\r\n }\r\n }\r\n\r\n return {\r\n buses,\r\n diagnostics: {\r\n parsed,\r\n failed,\r\n duplicates,\r\n unsupportedVersions,\r\n },\r\n };\r\n}\r\n"],"names":["SUPPORTED_VERSION","AUDIO_BUS_TYPE","AUXILIARY_BUS_TYPE","BUS_VOLUME_PROPERTY_ID","MAKE_UP_GAIN_PROPERTY_ID","OUTPUT_BUS_VOLUME_PROPERTY_ID","FINITE_GAIN_PROPERTY_IDS","Set","parseBusNode","payload","bankVersion","Uint8Array","Number","byteLength","cursor","WwiseCursor","overrideBusId","u32","outputDeviceId","propertyCount","boundedCount","u8","remaining","ids","seen","properties","index","push","id","has","add","rawValue","valueBytes","ArrayBuffer","valueView","DataView","setUint32","floatValue","getFloat32","isFinite","prefixByteLength","at","positioning","readPositioning","aux","readAux","policyFlags","maxInstances","u16","channelConfigRaw","hdrFlags","recoveryTime","s32","maxDuckVolume","finite","f32","ducks","ReadDucks","fx","ReadEffects","metadata","ReadMetadata","rtpcs","readInitialRtpcs","state","readStateChunk","gainValue","find","property","busVolume","makeUpGain","outputBusVolume","policy","flags","killNewest","Boolean","useVirtualBehavior","ignoreParentMaxInstances","backgroundMusic","channelConfig","raw","channelCount","configType","channelMask","hdr","enabled","exponentialRelease","count","busId","volume","fadeOutTime","fadeInTime","curve","targetPropertyId","RangeError","bypassAllRaw","slots","slot","fxId","bypass","shareSet","bypassAll","shareSetRaw","busNodesFromBanks","inspections","banks","Array","isArray","buses","Map","failed","duplicates","unsupportedVersions","parsed","inspection","bank","source","version","entry","hirc","type","decoded","reason","previousBank","get","set","diagnostics"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { WwiseCursor, boundedCount, readInitialRtpcs, readStateChunk, finite } from './nodeBase.js';
1
+ import { boundedCount, readInitialRtpcs, readStateChunk, finite } from './nodeBase.js';
2
+ import { WwiseCursor } from './WwiseCursor.js';
2
3
 
3
4
  // Exact generic Wwise v150 Fx ShareSet and Fx Custom object decoding. Plug-in
4
5
  // parameter blocks remain opaque bytes; the resource layer preserves identity,
@@ -1 +1 @@
1
- {"version":3,"file":"effectNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/effectNodes.js"],"sourcesContent":["// Exact generic Wwise v150 Fx ShareSet and Fx Custom object decoding. Plug-in\r\n// parameter blocks remain opaque bytes; the resource layer preserves identity,\r\n// media, RTPC, state, and property records without interpreting DSP behavior.\r\n\r\nimport {\r\n boundedCount,\r\n finite,\r\n readInitialRtpcs,\r\n readStateChunk,\r\n WwiseCursor,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = 150;\r\nconst FX_SHARE_SET_TYPE = 16;\r\nconst FX_CUSTOM_TYPE = 17;\r\nconst NO_PLUGIN_ID = 0xffffffff;\r\n\r\n/**\r\n * Decodes one complete v150 Fx ShareSet or Fx Custom body.\r\n *\r\n * @param {Uint8Array} payload Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification.\r\n * @returns {object|null} Typed effect body, or null when it is invalid.\r\n */\r\nexport function parseEffectNode(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION\r\n || payload.byteLength < 4)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n const cursor = new WwiseCursor(payload);\r\n const pluginId = cursor.u32();\r\n let parameterBlock = payload.subarray(cursor.at, cursor.at);\r\n\r\n if (pluginId !== 0 && pluginId !== NO_PLUGIN_ID)\r\n {\r\n const parameterByteLength = cursor.u32();\r\n\r\n cursor.ensure(parameterByteLength);\r\n parameterBlock = payload.subarray(\r\n cursor.at,\r\n cursor.at + parameterByteLength,\r\n );\r\n cursor.at += parameterByteLength;\r\n }\r\n\r\n const mediaCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 5,\r\n 255,\r\n );\r\n const media = [];\r\n\r\n for (let index = 0; index < mediaCount; index++)\r\n {\r\n media.push({\r\n index: cursor.u8(),\r\n sourceId: cursor.u32(),\r\n });\r\n }\r\n\r\n const rtpcs = readInitialRtpcs(cursor);\r\n const state = readStateChunk(cursor);\r\n const propertyCount = boundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 6,\r\n 65535,\r\n );\r\n const propertyValues = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n const propertyId = cursor.variable();\r\n const accumulation = cursor.u8();\r\n const value = finite(cursor.f32());\r\n\r\n if (accumulation > 6)\r\n {\r\n throw new RangeError(\"invalid v150 effect accumulation\");\r\n }\r\n\r\n propertyValues.push({ propertyId, accumulation, value });\r\n }\r\n\r\n if (cursor.remaining !== 0) return null;\r\n\r\n return {\r\n pluginId,\r\n pluginType: pluginId & 0x0f,\r\n companyId: (pluginId >>> 4) & 0x0fff,\r\n pluginClassId: pluginId >>> 16,\r\n parameterBlock,\r\n media,\r\n rtpcs,\r\n state,\r\n propertyValues,\r\n byteLength: cursor.at,\r\n };\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Decodes every v150 Fx ShareSet and Fx Custom across inspected banks.\r\n *\r\n * @param {Array<object>|object} inspections Related `CjsBnkFormat.inspect()` results.\r\n * @returns {{effects: Map<number, object>, diagnostics: object}} Typed effect catalog and failures.\r\n */\r\nexport function effectNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const effects = new Map();\r\n const failed = [];\r\n const duplicates = [];\r\n const unsupportedVersions = [];\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const bank = inspection?.source || \"\";\r\n const bankVersion = Number(inspection?.bankVersion) >>> 0;\r\n\r\n if (bankVersion !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version: bankVersion });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type !== FX_SHARE_SET_TYPE\r\n && entry.type !== FX_CUSTOM_TYPE)\r\n {\r\n continue;\r\n }\r\n\r\n const decoded = parseEffectNode(entry.payload, { bankVersion });\r\n const type = entry.type === FX_SHARE_SET_TYPE\r\n ? \"effect-share-set\"\r\n : \"effect-custom\";\r\n\r\n if (!decoded)\r\n {\r\n failed.push({\r\n bank,\r\n version: bankVersion,\r\n type,\r\n id: entry.id,\r\n reason: \"invalid v150 effect body\",\r\n });\r\n continue;\r\n }\r\n if (effects.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: effects.get(entry.id).bank,\r\n bank,\r\n });\r\n }\r\n\r\n parsed++;\r\n effects.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n type,\r\n ...decoded,\r\n });\r\n }\r\n }\r\n\r\n return {\r\n effects,\r\n diagnostics: {\r\n parsed,\r\n failed,\r\n duplicates,\r\n unsupportedVersions,\r\n },\r\n };\r\n}\r\n"],"names":["SUPPORTED_VERSION","FX_SHARE_SET_TYPE","FX_CUSTOM_TYPE","NO_PLUGIN_ID","parseEffectNode","payload","bankVersion","Uint8Array","Number","byteLength","cursor","WwiseCursor","pluginId","u32","parameterBlock","subarray","at","parameterByteLength","ensure","mediaCount","boundedCount","u8","remaining","media","index","push","sourceId","rtpcs","readInitialRtpcs","state","readStateChunk","propertyCount","u16","propertyValues","propertyId","variable","accumulation","value","finite","f32","RangeError","pluginType","companyId","pluginClassId","effectNodesFromBanks","inspections","banks","Array","isArray","effects","Map","failed","duplicates","unsupportedVersions","parsed","inspection","bank","source","version","entry","hirc","type","decoded","id","reason","has","previousBank","get","set","diagnostics"],"mappings":"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"}
1
+ {"version":3,"file":"effectNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/effectNodes.js"],"sourcesContent":["// Exact generic Wwise v150 Fx ShareSet and Fx Custom object decoding. Plug-in\r\n// parameter blocks remain opaque bytes; the resource layer preserves identity,\r\n// media, RTPC, state, and property records without interpreting DSP behavior.\r\n\r\nimport {\r\n boundedCount,\r\n finite,\r\n readInitialRtpcs,\r\n readStateChunk,\r\n WwiseCursor,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = 150;\r\nconst FX_SHARE_SET_TYPE = 16;\r\nconst FX_CUSTOM_TYPE = 17;\r\nconst NO_PLUGIN_ID = 0xffffffff;\r\n\r\n/**\r\n * Decodes one complete v150 Fx ShareSet or Fx Custom body.\r\n *\r\n * @param {Uint8Array} payload Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification.\r\n * @returns {object|null} Typed effect body, or null when it is invalid.\r\n */\r\nexport function parseEffectNode(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION\r\n || payload.byteLength < 4)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n const cursor = new WwiseCursor(payload);\r\n const pluginId = cursor.u32();\r\n let parameterBlock = payload.subarray(cursor.at, cursor.at);\r\n\r\n if (pluginId !== 0 && pluginId !== NO_PLUGIN_ID)\r\n {\r\n const parameterByteLength = cursor.u32();\r\n\r\n cursor.ensure(parameterByteLength);\r\n parameterBlock = payload.subarray(\r\n cursor.at,\r\n cursor.at + parameterByteLength,\r\n );\r\n cursor.at += parameterByteLength;\r\n }\r\n\r\n const mediaCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 5,\r\n 255,\r\n );\r\n const media = [];\r\n\r\n for (let index = 0; index < mediaCount; index++)\r\n {\r\n media.push({\r\n index: cursor.u8(),\r\n sourceId: cursor.u32(),\r\n });\r\n }\r\n\r\n const rtpcs = readInitialRtpcs(cursor);\r\n const state = readStateChunk(cursor);\r\n const propertyCount = boundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 6,\r\n 65535,\r\n );\r\n const propertyValues = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n const propertyId = cursor.variable();\r\n const accumulation = cursor.u8();\r\n const value = finite(cursor.f32());\r\n\r\n if (accumulation > 6)\r\n {\r\n throw new RangeError(\"invalid v150 effect accumulation\");\r\n }\r\n\r\n propertyValues.push({ propertyId, accumulation, value });\r\n }\r\n\r\n if (cursor.remaining !== 0) return null;\r\n\r\n return {\r\n pluginId,\r\n pluginType: pluginId & 0x0f,\r\n companyId: (pluginId >>> 4) & 0x0fff,\r\n pluginClassId: pluginId >>> 16,\r\n parameterBlock,\r\n media,\r\n rtpcs,\r\n state,\r\n propertyValues,\r\n byteLength: cursor.at,\r\n };\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Decodes every v150 Fx ShareSet and Fx Custom across inspected banks.\r\n *\r\n * @param {Array<object>|object} inspections Related `CjsBnkFormat.inspect()` results.\r\n * @returns {{effects: Map<number, object>, diagnostics: object}} Typed effect catalog and failures.\r\n */\r\nexport function effectNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const effects = new Map();\r\n const failed = [];\r\n const duplicates = [];\r\n const unsupportedVersions = [];\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const bank = inspection?.source || \"\";\r\n const bankVersion = Number(inspection?.bankVersion) >>> 0;\r\n\r\n if (bankVersion !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version: bankVersion });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type !== FX_SHARE_SET_TYPE\r\n && entry.type !== FX_CUSTOM_TYPE)\r\n {\r\n continue;\r\n }\r\n\r\n const decoded = parseEffectNode(entry.payload, { bankVersion });\r\n const type = entry.type === FX_SHARE_SET_TYPE\r\n ? \"effect-share-set\"\r\n : \"effect-custom\";\r\n\r\n if (!decoded)\r\n {\r\n failed.push({\r\n bank,\r\n version: bankVersion,\r\n type,\r\n id: entry.id,\r\n reason: \"invalid v150 effect body\",\r\n });\r\n continue;\r\n }\r\n if (effects.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: effects.get(entry.id).bank,\r\n bank,\r\n });\r\n }\r\n\r\n parsed++;\r\n effects.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n type,\r\n ...decoded,\r\n });\r\n }\r\n }\r\n\r\n return {\r\n effects,\r\n diagnostics: {\r\n parsed,\r\n failed,\r\n duplicates,\r\n unsupportedVersions,\r\n },\r\n };\r\n}\r\n"],"names":["SUPPORTED_VERSION","FX_SHARE_SET_TYPE","FX_CUSTOM_TYPE","NO_PLUGIN_ID","parseEffectNode","payload","bankVersion","Uint8Array","Number","byteLength","cursor","WwiseCursor","pluginId","u32","parameterBlock","subarray","at","parameterByteLength","ensure","mediaCount","boundedCount","u8","remaining","media","index","push","sourceId","rtpcs","readInitialRtpcs","state","readStateChunk","propertyCount","u16","propertyValues","propertyId","variable","accumulation","value","finite","f32","RangeError","pluginType","companyId","pluginClassId","effectNodesFromBanks","inspections","banks","Array","isArray","effects","Map","failed","duplicates","unsupportedVersions","parsed","inspection","bank","source","version","entry","hirc","type","decoded","id","reason","has","previousBank","get","set","diagnostics"],"mappings":"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"}