@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
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.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +82 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\r/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n/**\n * Reads Wwise's MSB-first base-128 unsigned integer.\n *\n * @returns {{value:number,nextOffset:number}|null} Decoded value and next\n * offset, or null for truncated, overflowed, or non-canonical input.\n */\nexport function readWwiseVar(bytes, offset = 0)\n{\n let at = Number(offset);\n let value = 0;\n let count = 0;\n\n if (!Number.isSafeInteger(at) || at < 0)\n {\n return null;\n }\n\n while (at < bytes.byteLength && count < 5)\n {\n const byte = bytes[at++];\n\n if (count === 0 && byte === 0x80)\n {\n return null;\n }\n if (value > 0x01ffffff)\n {\n return null;\n }\n\n value = value * 128 + (byte & 0x7f);\n count++;\n\n if ((byte & 0x80) === 0)\n {\n return value <= 0xffffffff\n ? { value: value >>> 0, nextOffset: at }\n : null;\n }\n }\n\n return null;\n}\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","Number","isSafeInteger","byte","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","toJsonValue","Uint8Array","Array","isArray","output","key","fromCharCode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { readWwiseVar } from \"./WwiseCursor.js\";\nimport { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\n/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nexport { readWwiseVar };\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","fromCharCode"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseNodeBaseRange } from './nodeBase.js';
|
|
2
|
+
import { WwiseCursor } from './WwiseCursor.js';
|
|
2
3
|
|
|
3
4
|
// Wwise interactive-music node decoding: typed payloads for music-segment
|
|
4
5
|
// (10), music-track (11), music-switch-container (12), and
|
|
@@ -20,99 +21,6 @@ import { parseNodeBaseRange } from './nodeBase.js';
|
|
|
20
21
|
// head (before NodeBaseParams) and the track's type block is tail-validated
|
|
21
22
|
// the same way.
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Little-endian byte cursor over HIRC payload bytes used to decode Wwise
|
|
26
|
-
* interactive-music node payloads with exact-end validation.
|
|
27
|
-
*/
|
|
28
|
-
class MusicCursor {
|
|
29
|
-
/** Creates an MusicCursor with caller-provided initial state. */
|
|
30
|
-
constructor(bytes, offset = 0) {
|
|
31
|
-
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
32
|
-
this.bytes = bytes;
|
|
33
|
-
this.at = offset;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/** Returns the number of unread BNK bytes for the BNK format reader. */
|
|
37
|
-
get remaining() {
|
|
38
|
-
return this.bytes.byteLength - this.at;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Reads an unsigned 8-bit integer from the BNK cursor for the BNK format
|
|
43
|
-
* reader.
|
|
44
|
-
*/
|
|
45
|
-
u8() {
|
|
46
|
-
return this.view.getUint8(this.at++);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Reads an unsigned 16-bit integer from the BNK cursor for the BNK format
|
|
51
|
-
* reader.
|
|
52
|
-
*/
|
|
53
|
-
u16() {
|
|
54
|
-
const value = this.view.getUint16(this.at, true);
|
|
55
|
-
this.at += 2;
|
|
56
|
-
return value;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Reads a signed 16-bit integer from the BNK cursor for the BNK format
|
|
61
|
-
* reader.
|
|
62
|
-
*/
|
|
63
|
-
s16() {
|
|
64
|
-
const value = this.view.getInt16(this.at, true);
|
|
65
|
-
this.at += 2;
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Reads an unsigned 32-bit integer from the BNK cursor for the BNK format
|
|
71
|
-
* reader.
|
|
72
|
-
*/
|
|
73
|
-
u32() {
|
|
74
|
-
const value = this.view.getUint32(this.at, true);
|
|
75
|
-
this.at += 4;
|
|
76
|
-
return value;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Reads a signed 32-bit integer from the BNK cursor for the BNK format
|
|
81
|
-
* reader.
|
|
82
|
-
*/
|
|
83
|
-
s32() {
|
|
84
|
-
const value = this.view.getInt32(this.at, true);
|
|
85
|
-
this.at += 4;
|
|
86
|
-
return value;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Reads a 32-bit float from the BNK cursor for the BNK format reader. */
|
|
90
|
-
f32() {
|
|
91
|
-
const value = this.view.getFloat32(this.at, true);
|
|
92
|
-
this.at += 4;
|
|
93
|
-
return value;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/** Reads a 64-bit float from the BNK cursor for the BNK format reader. */
|
|
97
|
-
f64() {
|
|
98
|
-
const value = this.view.getFloat64(this.at, true);
|
|
99
|
-
this.at += 8;
|
|
100
|
-
return value;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Reads a null-terminated string from the BNK cursor for the BNK format
|
|
105
|
-
* reader.
|
|
106
|
-
*/
|
|
107
|
-
stringZ() {
|
|
108
|
-
let end = this.at;
|
|
109
|
-
while (end < this.bytes.byteLength && this.bytes[end] !== 0) end++;
|
|
110
|
-
let value = "";
|
|
111
|
-
for (let i = this.at; i < end; i++) value += String.fromCharCode(this.bytes[i]);
|
|
112
|
-
this.at = end + 1;
|
|
113
|
-
return value;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
24
|
function plausibleMeter(view, at, byteLength) {
|
|
117
25
|
if (at + 22 > byteLength) return false;
|
|
118
26
|
const grid = view.getFloat64(at, true);
|
|
@@ -235,21 +143,21 @@ function readTransRules(cursor) {
|
|
|
235
143
|
return rules;
|
|
236
144
|
}
|
|
237
145
|
|
|
238
|
-
/**
|
|
239
|
-
* Decode a music-segment (HIRC 10) payload: children, meter, stingers,
|
|
240
|
-
* duration, and entry/exit markers.
|
|
241
|
-
*
|
|
242
|
-
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
243
|
-
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
244
|
-
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
245
|
-
* @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.
|
|
146
|
+
/**
|
|
147
|
+
* Decode a music-segment (HIRC 10) payload: children, meter, stingers,
|
|
148
|
+
* duration, and entry/exit markers.
|
|
149
|
+
*
|
|
150
|
+
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
151
|
+
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
152
|
+
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
153
|
+
* @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.
|
|
246
154
|
*/
|
|
247
155
|
function parseMusicSegment(bytes, knownIds, options = {}) {
|
|
248
156
|
for (const anchor of findAnchors(bytes, knownIds)) {
|
|
249
157
|
try {
|
|
250
158
|
const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
|
|
251
159
|
if (!nodeBase) continue;
|
|
252
|
-
const cursor = new
|
|
160
|
+
const cursor = new WwiseCursor(bytes, anchor);
|
|
253
161
|
const node = readMusicNodeTail(cursor);
|
|
254
162
|
const duration = cursor.f64();
|
|
255
163
|
if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;
|
|
@@ -278,16 +186,16 @@ function parseMusicSegment(bytes, knownIds, options = {}) {
|
|
|
278
186
|
return null;
|
|
279
187
|
}
|
|
280
188
|
|
|
281
|
-
/**
|
|
282
|
-
* Decode a music-track (HIRC 11) payload: sources, clips (play position and
|
|
283
|
-
* trims per subtrack), track type, and switch parameters for switch tracks.
|
|
284
|
-
*
|
|
285
|
-
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
286
|
-
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
287
|
-
* @returns {object|null} Decoded track, or null when neither tail layout validates.
|
|
189
|
+
/**
|
|
190
|
+
* Decode a music-track (HIRC 11) payload: sources, clips (play position and
|
|
191
|
+
* trims per subtrack), track type, and switch parameters for switch tracks.
|
|
192
|
+
*
|
|
193
|
+
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
194
|
+
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
195
|
+
* @returns {object|null} Decoded track, or null when neither tail layout validates.
|
|
288
196
|
*/
|
|
289
197
|
function parseMusicTrack(bytes, options = {}) {
|
|
290
|
-
const cursor = new
|
|
198
|
+
const cursor = new WwiseCursor(bytes, 0);
|
|
291
199
|
cursor.u8(); // uFlags (midi/override bits)
|
|
292
200
|
const sourceCount = cursor.u32();
|
|
293
201
|
if (sourceCount > 512) return null;
|
|
@@ -345,7 +253,7 @@ function parseMusicTrack(bytes, options = {}) {
|
|
|
345
253
|
const end = bytes.byteLength;
|
|
346
254
|
for (let typeAt = headEnd; typeAt <= end - 5; typeAt++) {
|
|
347
255
|
if (view.getUint8(typeAt) !== 3) continue;
|
|
348
|
-
const tail = new
|
|
256
|
+
const tail = new WwiseCursor(bytes, typeAt + 1);
|
|
349
257
|
try {
|
|
350
258
|
const nodeBase = parseNodeBaseRange(bytes, headEnd, typeAt, options);
|
|
351
259
|
if (!nodeBase) continue;
|
|
@@ -408,21 +316,21 @@ function parseMusicTrack(bytes, options = {}) {
|
|
|
408
316
|
return null;
|
|
409
317
|
}
|
|
410
318
|
|
|
411
|
-
/**
|
|
412
|
-
* Decode a music-playlist-container (HIRC 13) payload: children, meter,
|
|
413
|
-
* stingers, transition rules, and the flat pre-order playlist tree.
|
|
414
|
-
*
|
|
415
|
-
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
416
|
-
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
417
|
-
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
418
|
-
* @returns {object|null} Decoded playlist container, or null when no anchored parse validates.
|
|
319
|
+
/**
|
|
320
|
+
* Decode a music-playlist-container (HIRC 13) payload: children, meter,
|
|
321
|
+
* stingers, transition rules, and the flat pre-order playlist tree.
|
|
322
|
+
*
|
|
323
|
+
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
324
|
+
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
325
|
+
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
326
|
+
* @returns {object|null} Decoded playlist container, or null when no anchored parse validates.
|
|
419
327
|
*/
|
|
420
328
|
function parseMusicPlaylist(bytes, knownIds, options = {}) {
|
|
421
329
|
for (const anchor of findAnchors(bytes, knownIds)) {
|
|
422
330
|
try {
|
|
423
331
|
const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
|
|
424
332
|
if (!nodeBase) continue;
|
|
425
|
-
const cursor = new
|
|
333
|
+
const cursor = new WwiseCursor(bytes, anchor);
|
|
426
334
|
const node = readMusicNodeTail(cursor);
|
|
427
335
|
const rules = readTransRules(cursor);
|
|
428
336
|
const itemCount = cursor.u32();
|
|
@@ -458,21 +366,21 @@ function parseMusicPlaylist(bytes, knownIds, options = {}) {
|
|
|
458
366
|
return null;
|
|
459
367
|
}
|
|
460
368
|
|
|
461
|
-
/**
|
|
462
|
-
* Decode a music-switch-container (HIRC 12) payload: children, meter,
|
|
463
|
-
* stingers, transition rules, argument groups, and the decision tree.
|
|
464
|
-
*
|
|
465
|
-
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
466
|
-
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
467
|
-
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
468
|
-
* @returns {object|null} Decoded switch container, or null when no anchored parse validates.
|
|
369
|
+
/**
|
|
370
|
+
* Decode a music-switch-container (HIRC 12) payload: children, meter,
|
|
371
|
+
* stingers, transition rules, argument groups, and the decision tree.
|
|
372
|
+
*
|
|
373
|
+
* @param {Uint8Array} bytes Entry payload view from `inspect()`.
|
|
374
|
+
* @param {Set<number>} knownIds Every HIRC object id in the same bank.
|
|
375
|
+
* @param {object} [options] Bank-version qualification for the NodeBase prefix.
|
|
376
|
+
* @returns {object|null} Decoded switch container, or null when no anchored parse validates.
|
|
469
377
|
*/
|
|
470
378
|
function parseMusicSwitch(bytes, knownIds, options = {}) {
|
|
471
379
|
for (const anchor of findAnchors(bytes, knownIds)) {
|
|
472
380
|
try {
|
|
473
381
|
const nodeBase = parseNodeBaseRange(bytes, 1, anchor, options);
|
|
474
382
|
if (!nodeBase) continue;
|
|
475
|
-
const cursor = new
|
|
383
|
+
const cursor = new WwiseCursor(bytes, anchor);
|
|
476
384
|
const node = readMusicNodeTail(cursor);
|
|
477
385
|
const rules = readTransRules(cursor);
|
|
478
386
|
const continuePlayback = cursor.u8() !== 0;
|
|
@@ -535,11 +443,11 @@ const MUSIC_TYPE_NAMES = Object.freeze({
|
|
|
535
443
|
13: "music-playlist-container"
|
|
536
444
|
});
|
|
537
445
|
|
|
538
|
-
/**
|
|
539
|
-
* Decode every interactive-music node across one or more inspected banks.
|
|
540
|
-
*
|
|
541
|
-
* @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.
|
|
542
|
-
* @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.
|
|
446
|
+
/**
|
|
447
|
+
* Decode every interactive-music node across one or more inspected banks.
|
|
448
|
+
*
|
|
449
|
+
* @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.
|
|
450
|
+
* @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.
|
|
543
451
|
*/
|
|
544
452
|
function musicNodesFromBanks(inspections) {
|
|
545
453
|
const banks = Array.isArray(inspections) ? inspections : [inspections];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"musicNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/musicNodes.js"],"sourcesContent":["// Wwise interactive-music node decoding: typed payloads for music-segment\r\n// (10), music-track (11), music-switch-container (12), and\r\n// music-playlist-container (13) HIRC entries. Exposed through\r\n// `CjsBnkFormat.wwise` next to the event graph walk - interpretation over\r\n// `inspect()` results, never part of the format read path.\r\n//\r\n// Verified against EVE soundbanks (bank generator version 150 / Wwise\r\n// 2022.1): 2,484 tracks, 1,326 segments, 214 playlists, and 54 switch\r\n// containers across music.bnk + music_essential.bnk all decode with the\r\n// exact-end validation below (2026-07-19 corpus run).\r\n//\r\n// Approach: consumers of these nodes (music schedulers) only need the fields\r\n// AFTER the variable-length NodeBaseParams block - children, meter, stingers,\r\n// and each type's tail - so segment/playlist/switch payloads are parsed from\r\n// a children+meter ANCHOR (a u32 child count and child ids that exist in the\r\n// bank, followed by a plausible AkMeterInfo) and the parse is accepted only\r\n// when it consumes the payload EXACTLY to its end. Track clips live at the\r\n// head (before NodeBaseParams) and the track's type block is tail-validated\r\n// the same way.\r\n\r\nimport { parseNodeBaseRange } from \"./nodeBase.js\";\r\n\r\n/**\r\n * Little-endian byte cursor over HIRC payload bytes used to decode Wwise\r\n * interactive-music node payloads with exact-end validation.\r\n */\r\nclass MusicCursor\r\n{\r\n /** Creates an MusicCursor with caller-provided initial state. */\r\n constructor(bytes, offset = 0)\r\n {\r\n this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n this.bytes = bytes;\r\n this.at = offset;\r\n }\r\n\r\n /** Returns the number of unread BNK bytes for the BNK format reader. */\r\n get remaining()\r\n {\r\n return this.bytes.byteLength - this.at;\r\n }\r\n\r\n /**\r\n * Reads an unsigned 8-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u8()\r\n {\r\n return this.view.getUint8(this.at++);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 16-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u16()\r\n {\r\n const value = this.view.getUint16(this.at, true);\r\n this.at += 2;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a signed 16-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n s16()\r\n {\r\n const value = this.view.getInt16(this.at, true);\r\n this.at += 2;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads an unsigned 32-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n u32()\r\n {\r\n const value = this.view.getUint32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a signed 32-bit integer from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n s32()\r\n {\r\n const value = this.view.getInt32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a 32-bit float from the BNK cursor for the BNK format reader. */\r\n f32()\r\n {\r\n const value = this.view.getFloat32(this.at, true);\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a 64-bit float from the BNK cursor for the BNK format reader. */\r\n f64()\r\n {\r\n const value = this.view.getFloat64(this.at, true);\r\n this.at += 8;\r\n return value;\r\n }\r\n\r\n /**\r\n * Reads a null-terminated string from the BNK cursor for the BNK format\r\n * reader.\r\n */\r\n stringZ()\r\n {\r\n let end = this.at;\r\n while (end < this.bytes.byteLength && this.bytes[end] !== 0) end++;\r\n let value = \"\";\r\n for (let i = this.at; i < end; i++) value += String.fromCharCode(this.bytes[i]);\r\n this.at = end + 1;\r\n return value;\r\n }\r\n}\r\n\r\nfunction plausibleMeter(view, at, byteLength)\r\n{\r\n if (at + 22 > byteLength) return false;\r\n const grid = view.getFloat64(at, true);\r\n const offset = view.getFloat64(at + 8, true);\r\n const tempo = view.getFloat32(at + 16, true);\r\n const beats = view.getUint8(at + 20);\r\n const beatValue = view.getUint8(at + 21);\r\n return Number.isFinite(grid) && grid >= 0 && grid < 600000\r\n && Number.isFinite(offset) && offset >= 0 && offset < 600000\r\n && Number.isFinite(tempo) && tempo > 0 && tempo < 1000\r\n && beats >= 1 && beats <= 64\r\n && [ 1, 2, 4, 8, 16, 32 ].includes(beatValue);\r\n}\r\n\r\nfunction findAnchors(bytes, knownIds)\r\n{\r\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n const anchors = [];\r\n for (let at = 1; at + 4 <= bytes.byteLength; at++)\r\n {\r\n const count = view.getUint32(at, true);\r\n if (count > 256 || at + 4 + count * 4 + 22 > bytes.byteLength) continue;\r\n let valid = true;\r\n for (let i = 0; i < count; i++)\r\n {\r\n if (!knownIds.has(view.getUint32(at + 4 + i * 4, true)))\r\n {\r\n valid = false;\r\n break;\r\n }\r\n }\r\n if (valid && plausibleMeter(view, at + 4 + count * 4, bytes.byteLength))\r\n {\r\n anchors.push(at);\r\n }\r\n }\r\n return anchors;\r\n}\r\n\r\nfunction readMusicNodeTail(cursor)\r\n{\r\n const childCount = cursor.u32();\r\n const children = [];\r\n for (let i = 0; i < childCount; i++) children.push(cursor.u32());\r\n const meter = {\r\n gridPeriod: cursor.f64(),\r\n gridOffset: cursor.f64(),\r\n tempo: cursor.f32(),\r\n beatsPerBar: cursor.u8(),\r\n beatValue: cursor.u8()\r\n };\r\n const meterOverride = cursor.u8() !== 0;\r\n const stingerCount = cursor.u32();\r\n const stingers = [];\r\n for (let i = 0; i < stingerCount; i++)\r\n {\r\n stingers.push({\r\n triggerId: cursor.u32(),\r\n segmentId: cursor.u32(),\r\n syncPlayAt: cursor.u32(),\r\n cueFilterHash: cursor.u32(),\r\n dontRepeatTime: cursor.s32(),\r\n numSegmentLookAhead: cursor.u32()\r\n });\r\n }\r\n return { children, meter, meterOverride, stingers };\r\n}\r\n\r\n/** AkMusicTransNodeParams: transition rules shared by playlist + switch containers. */\r\nfunction readTransRules(cursor)\r\n{\r\n const ruleCount = cursor.u32();\r\n if (ruleCount > 4096) throw new RangeError(\"rule count\");\r\n const rules = [];\r\n for (let i = 0; i < ruleCount; i++)\r\n {\r\n const srcCount = cursor.u32();\r\n if (srcCount > 1024) throw new RangeError(\"src count\");\r\n const srcIds = [];\r\n for (let j = 0; j < srcCount; j++) srcIds.push(cursor.s32());\r\n const dstCount = cursor.u32();\r\n if (dstCount > 1024) throw new RangeError(\"dst count\");\r\n const dstIds = [];\r\n for (let j = 0; j < dstCount; j++) dstIds.push(cursor.s32());\r\n const src = {\r\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\r\n syncType: cursor.u32(), cueFilterHash: cursor.u32(), playPostExit: cursor.u8() !== 0\r\n };\r\n const dst = {\r\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\r\n cueFilterHash: cursor.u32(), jumpToId: cursor.u32(), jumpToType: cursor.u16(),\r\n entryType: cursor.u16(), playPreEntry: cursor.u8() !== 0,\r\n matchSourceCueName: cursor.u8() !== 0\r\n };\r\n let transitionSegment = null;\r\n if (cursor.u8() !== 0)\r\n {\r\n transitionSegment = {\r\n segmentId: cursor.u32(),\r\n fadeIn: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\r\n fadeOut: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\r\n playPreEntry: cursor.u8() !== 0,\r\n playPostExit: cursor.u8() !== 0\r\n };\r\n }\r\n rules.push({ srcIds, dstIds, src, dst, transitionSegment });\r\n }\r\n return rules;\r\n}\r\n\r\n/**\r\n * Decode a music-segment (HIRC 10) payload: children, meter, stingers,\r\n * duration, and entry/exit markers.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.\r\n */\r\nexport function parseMusicSegment(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const duration = cursor.f64();\r\n if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;\r\n const markerCount = cursor.u32();\r\n if (markerCount > 1024) continue;\r\n const markers = [];\r\n for (let i = 0; i < markerCount; i++)\r\n {\r\n markers.push({ id: cursor.u32(), position: cursor.f64(), name: cursor.stringZ() });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n if (markers.some(marker => !Number.isFinite(marker.position) || marker.position < 0)) continue;\r\n return { nodeBase, ...node, duration, markers };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-track (HIRC 11) payload: sources, clips (play position and\r\n * trims per subtrack), track type, and switch parameters for switch tracks.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded track, or null when neither tail layout validates.\r\n */\r\nexport function parseMusicTrack(bytes, options = {})\r\n{\r\n const cursor = new MusicCursor(bytes, 0);\r\n cursor.u8(); // uFlags (midi/override bits)\r\n const sourceCount = cursor.u32();\r\n if (sourceCount > 512) return null;\r\n const sources = [];\r\n for (let i = 0; i < sourceCount; i++)\r\n {\r\n const pluginId = cursor.u32();\r\n const streamType = cursor.u8();\r\n const sourceId = cursor.u32();\r\n const inMemoryMediaSize = cursor.u32();\r\n const sourceBits = cursor.u8();\r\n if ((pluginId & 0x0f) === 0x02)\r\n {\r\n const size = cursor.u32();\r\n cursor.at += size;\r\n }\r\n sources.push({ pluginId, streamType, sourceId, inMemoryMediaSize, sourceBits });\r\n }\r\n const clipCount = cursor.u32();\r\n if (clipCount > 4096) return null;\r\n const clips = [];\r\n for (let i = 0; i < clipCount; i++)\r\n {\r\n clips.push({\r\n trackId: cursor.u32(),\r\n sourceId: cursor.u32(),\r\n eventId: cursor.u32(),\r\n playAt: cursor.f64(),\r\n beginTrimOffset: cursor.f64(),\r\n endTrimOffset: cursor.f64(),\r\n srcDuration: cursor.f64()\r\n });\r\n }\r\n const subTrackCount = clipCount > 0 ? cursor.u32() : 0;\r\n const autoCount = cursor.u32();\r\n if (autoCount > 4096) return null;\r\n for (let i = 0; i < autoCount; i++)\r\n {\r\n cursor.u32(); // clip index\r\n cursor.u32(); // automation type\r\n const points = cursor.u32();\r\n if (points > 65536) return null;\r\n cursor.at += points * 12;\r\n }\r\n const headEnd = cursor.at;\r\n\r\n // Tail: [NodeBaseParams...] u8 trackType, [switch+trans params when the\r\n // type is 3], signed s32 iLookAheadTime. The switch layout is tried FIRST because\r\n // it validates every field to the exact payload end - the simple layout\r\n // only checks one byte, and a switch tail ending in zero bytes would\r\n // satisfy it falsely.\r\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n const end = bytes.byteLength;\r\n for (let typeAt = headEnd; typeAt <= end - 5; typeAt++)\r\n {\r\n if (view.getUint8(typeAt) !== 3) continue;\r\n const tail = new MusicCursor(bytes, typeAt + 1);\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n headEnd,\r\n typeAt,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const groupType = tail.u8();\r\n if (groupType > 1) continue;\r\n const groupId = tail.u32();\r\n const defaultSwitch = tail.u32();\r\n const assocCount = tail.u32();\r\n if (assocCount > 1024) continue;\r\n const assoc = [];\r\n for (let i = 0; i < assocCount; i++) assoc.push(tail.u32());\r\n const trans = {\r\n srcTransitionTime: tail.s32(), srcFadeCurve: tail.u32(), srcFadeOffset: tail.s32(),\r\n syncType: tail.u32(), cueFilterHash: tail.u32(),\r\n dstTransitionTime: tail.s32(), dstFadeCurve: tail.u32(), dstFadeOffset: tail.s32()\r\n };\r\n const lookAheadTime = tail.s32();\r\n if (tail.at !== end) continue;\r\n return {\r\n sources, clips, subTrackCount,\r\n nodeBase,\r\n trackType: 3,\r\n lookAheadTime,\r\n switchParams: { groupType, groupId, defaultSwitch, assoc, trans }\r\n };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n const simpleAt = end - 5;\r\n if (simpleAt >= headEnd)\r\n {\r\n const type = view.getUint8(simpleAt);\r\n if (type <= 2)\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n headEnd,\r\n simpleAt,\r\n options,\r\n );\r\n\r\n if (!nodeBase) return null;\r\n return {\r\n sources, clips, subTrackCount,\r\n nodeBase,\r\n trackType: type,\r\n lookAheadTime: view.getInt32(end - 4, true),\r\n switchParams: null\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-playlist-container (HIRC 13) payload: children, meter,\r\n * stingers, transition rules, and the flat pre-order playlist tree.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.\r\n */\r\nexport function parseMusicPlaylist(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const rules = readTransRules(cursor);\r\n const itemCount = cursor.u32();\r\n if (itemCount > 8192) continue;\r\n if (cursor.remaining !== itemCount * 30) continue;\r\n const items = [];\r\n for (let i = 0; i < itemCount; i++)\r\n {\r\n items.push({\r\n segmentId: cursor.u32(),\r\n playlistItemId: cursor.u32(),\r\n childCount: cursor.u32(),\r\n rsType: cursor.s32(),\r\n loop: cursor.s16(),\r\n loopMin: cursor.s16(),\r\n loopMax: cursor.s16(),\r\n weight: cursor.u32(),\r\n avoidRepeatCount: cursor.u16(),\r\n usingWeight: cursor.u8() !== 0,\r\n shuffle: cursor.u8() !== 0\r\n });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n return { nodeBase, ...node, rules, playlist: items };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Decode a music-switch-container (HIRC 12) payload: children, meter,\r\n * stingers, transition rules, argument groups, and the decision tree.\r\n *\r\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\r\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\r\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\r\n * @returns {object|null} Decoded switch container, or null when no anchored parse validates.\r\n */\r\nexport function parseMusicSwitch(bytes, knownIds, options = {})\r\n{\r\n for (const anchor of findAnchors(bytes, knownIds))\r\n {\r\n try\r\n {\r\n const nodeBase = parseNodeBaseRange(\r\n bytes,\r\n 1,\r\n anchor,\r\n options,\r\n );\r\n\r\n if (!nodeBase) continue;\r\n const cursor = new MusicCursor(bytes, anchor);\r\n const node = readMusicNodeTail(cursor);\r\n const rules = readTransRules(cursor);\r\n const continuePlayback = cursor.u8() !== 0;\r\n const treeDepth = cursor.u32();\r\n if (treeDepth > 16) continue;\r\n const argumentGroups = [];\r\n for (let i = 0; i < treeDepth; i++) argumentGroups.push({ groupId: cursor.u32() });\r\n for (let i = 0; i < treeDepth; i++) argumentGroups[i].groupType = cursor.u8();\r\n const treeDataSize = cursor.u32();\r\n const mode = cursor.u8();\r\n if (cursor.remaining !== treeDataSize) continue;\r\n if (treeDataSize % 12 !== 0) continue;\r\n const treeNodes = [];\r\n const nodeCount = treeDataSize / 12;\r\n for (let i = 0; i < nodeCount; i++)\r\n {\r\n const key = cursor.u32();\r\n // 4-byte union: leaf = audioNodeId, internal = childrenIdx + count.\r\n const audioNodeId = cursor.view.getUint32(cursor.at, true);\r\n const childrenIdx = cursor.u16();\r\n const childrenCount = cursor.u16();\r\n const weight = cursor.u16();\r\n const probability = cursor.u16();\r\n treeNodes.push({ key, audioNodeId, childrenIdx, childrenCount, weight, probability });\r\n }\r\n if (cursor.at !== bytes.byteLength) continue;\r\n return {\r\n nodeBase,\r\n ...node,\r\n rules,\r\n continuePlayback,\r\n argumentGroups,\r\n mode,\r\n treeNodes,\r\n };\r\n }\r\n catch\r\n {\r\n continue;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nconst MUSIC_PARSERS = Object.freeze({\r\n 10: (payload, knownIds, options) => parseMusicSegment(payload, knownIds, options),\r\n 11: (payload, knownIds, options) => parseMusicTrack(payload, options),\r\n 12: (payload, knownIds, options) => parseMusicSwitch(payload, knownIds, options),\r\n 13: (payload, knownIds, options) => parseMusicPlaylist(payload, knownIds, options)\r\n});\r\n\r\nconst MUSIC_TYPE_NAMES = Object.freeze({\r\n 10: \"music-segment\",\r\n 11: \"music-track\",\r\n 12: \"music-switch-container\",\r\n 13: \"music-playlist-container\"\r\n});\r\n\r\n/**\r\n * Decode every interactive-music node across one or more inspected banks.\r\n *\r\n * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.\r\n * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.\r\n */\r\nexport function musicNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\r\n const nodes = new Map();\r\n const failed = [];\r\n let parsed = 0;\r\n for (const inspection of banks)\r\n {\r\n const knownIds = new Set();\r\n for (const entry of inspection.hirc ?? []) knownIds.add(entry.id);\r\n for (const entry of inspection.hirc ?? [])\r\n {\r\n const parser = MUSIC_PARSERS[entry.type];\r\n if (!parser) continue;\r\n const payload = entry.payload instanceof Uint8Array ? entry.payload : null;\r\n const decoded = payload\r\n ? parser(payload, knownIds, {\r\n bankVersion: inspection.bankVersion,\r\n })\r\n : null;\r\n if (!decoded)\r\n {\r\n failed.push({ bank: inspection.source || \"\", type: MUSIC_TYPE_NAMES[entry.type], id: entry.id });\r\n continue;\r\n }\r\n parsed++;\r\n nodes.set(entry.id, { id: entry.id, type: MUSIC_TYPE_NAMES[entry.type], bank: inspection.source || \"\", ...decoded });\r\n }\r\n }\r\n return { nodes, diagnostics: { parsed, failed } };\r\n}\r\n"],"names":["MusicCursor","constructor","bytes","offset","view","DataView","buffer","byteOffset","byteLength","at","remaining","u8","getUint8","u16","value","getUint16","s16","getInt16","u32","getUint32","s32","getInt32","f32","getFloat32","f64","getFloat64","stringZ","end","i","String","fromCharCode","plausibleMeter","grid","tempo","beats","beatValue","Number","isFinite","includes","findAnchors","knownIds","anchors","count","valid","has","push","readMusicNodeTail","cursor","childCount","children","meter","gridPeriod","gridOffset","beatsPerBar","meterOverride","stingerCount","stingers","triggerId","segmentId","syncPlayAt","cueFilterHash","dontRepeatTime","numSegmentLookAhead","readTransRules","ruleCount","RangeError","rules","srcCount","srcIds","j","dstCount","dstIds","src","transitionTime","fadeCurve","fadeOffset","syncType","playPostExit","dst","jumpToId","jumpToType","entryType","playPreEntry","matchSourceCueName","transitionSegment","fadeIn","fadeOut","parseMusicSegment","options","anchor","nodeBase","parseNodeBaseRange","node","duration","markerCount","markers","id","position","name","some","marker","parseMusicTrack","sourceCount","sources","pluginId","streamType","sourceId","inMemoryMediaSize","sourceBits","size","clipCount","clips","trackId","eventId","playAt","beginTrimOffset","endTrimOffset","srcDuration","subTrackCount","autoCount","points","headEnd","typeAt","tail","groupType","groupId","defaultSwitch","assocCount","assoc","trans","srcTransitionTime","srcFadeCurve","srcFadeOffset","dstTransitionTime","dstFadeCurve","dstFadeOffset","lookAheadTime","trackType","switchParams","simpleAt","type","parseMusicPlaylist","itemCount","items","playlistItemId","rsType","loop","loopMin","loopMax","weight","avoidRepeatCount","usingWeight","shuffle","playlist","parseMusicSwitch","continuePlayback","treeDepth","argumentGroups","treeDataSize","mode","treeNodes","nodeCount","key","audioNodeId","childrenIdx","childrenCount","probability","MUSIC_PARSERS","Object","freeze","payload","MUSIC_TYPE_NAMES","musicNodesFromBanks","inspections","banks","Array","isArray","nodes","Map","failed","parsed","inspection","Set","entry","hirc","add","parser","Uint8Array","decoded","bankVersion","bank","source","set","diagnostics"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"musicNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/musicNodes.js"],"sourcesContent":["// Wwise interactive-music node decoding: typed payloads for music-segment\n// (10), music-track (11), music-switch-container (12), and\n// music-playlist-container (13) HIRC entries. Exposed through\n// `CjsBnkFormat.wwise` next to the event graph walk - interpretation over\n// `inspect()` results, never part of the format read path.\n//\n// Verified against EVE soundbanks (bank generator version 150 / Wwise\n// 2022.1): 2,484 tracks, 1,326 segments, 214 playlists, and 54 switch\n// containers across music.bnk + music_essential.bnk all decode with the\n// exact-end validation below (2026-07-19 corpus run).\n//\n// Approach: consumers of these nodes (music schedulers) only need the fields\n// AFTER the variable-length NodeBaseParams block - children, meter, stingers,\n// and each type's tail - so segment/playlist/switch payloads are parsed from\n// a children+meter ANCHOR (a u32 child count and child ids that exist in the\n// bank, followed by a plausible AkMeterInfo) and the parse is accepted only\n// when it consumes the payload EXACTLY to its end. Track clips live at the\n// head (before NodeBaseParams) and the track's type block is tail-validated\n// the same way.\n\nimport { WwiseCursor, parseNodeBaseRange } from \"./nodeBase.js\";\n\n\nfunction plausibleMeter(view, at, byteLength)\n{\n if (at + 22 > byteLength) return false;\n const grid = view.getFloat64(at, true);\n const offset = view.getFloat64(at + 8, true);\n const tempo = view.getFloat32(at + 16, true);\n const beats = view.getUint8(at + 20);\n const beatValue = view.getUint8(at + 21);\n return Number.isFinite(grid) && grid >= 0 && grid < 600000\n && Number.isFinite(offset) && offset >= 0 && offset < 600000\n && Number.isFinite(tempo) && tempo > 0 && tempo < 1000\n && beats >= 1 && beats <= 64\n && [ 1, 2, 4, 8, 16, 32 ].includes(beatValue);\n}\n\nfunction findAnchors(bytes, knownIds)\n{\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const anchors = [];\n for (let at = 1; at + 4 <= bytes.byteLength; at++)\n {\n const count = view.getUint32(at, true);\n if (count > 256 || at + 4 + count * 4 + 22 > bytes.byteLength) continue;\n let valid = true;\n for (let i = 0; i < count; i++)\n {\n if (!knownIds.has(view.getUint32(at + 4 + i * 4, true)))\n {\n valid = false;\n break;\n }\n }\n if (valid && plausibleMeter(view, at + 4 + count * 4, bytes.byteLength))\n {\n anchors.push(at);\n }\n }\n return anchors;\n}\n\nfunction readMusicNodeTail(cursor)\n{\n const childCount = cursor.u32();\n const children = [];\n for (let i = 0; i < childCount; i++) children.push(cursor.u32());\n const meter = {\n gridPeriod: cursor.f64(),\n gridOffset: cursor.f64(),\n tempo: cursor.f32(),\n beatsPerBar: cursor.u8(),\n beatValue: cursor.u8()\n };\n const meterOverride = cursor.u8() !== 0;\n const stingerCount = cursor.u32();\n const stingers = [];\n for (let i = 0; i < stingerCount; i++)\n {\n stingers.push({\n triggerId: cursor.u32(),\n segmentId: cursor.u32(),\n syncPlayAt: cursor.u32(),\n cueFilterHash: cursor.u32(),\n dontRepeatTime: cursor.s32(),\n numSegmentLookAhead: cursor.u32()\n });\n }\n return { children, meter, meterOverride, stingers };\n}\n\n/** AkMusicTransNodeParams: transition rules shared by playlist + switch containers. */\nfunction readTransRules(cursor)\n{\n const ruleCount = cursor.u32();\n if (ruleCount > 4096) throw new RangeError(\"rule count\");\n const rules = [];\n for (let i = 0; i < ruleCount; i++)\n {\n const srcCount = cursor.u32();\n if (srcCount > 1024) throw new RangeError(\"src count\");\n const srcIds = [];\n for (let j = 0; j < srcCount; j++) srcIds.push(cursor.s32());\n const dstCount = cursor.u32();\n if (dstCount > 1024) throw new RangeError(\"dst count\");\n const dstIds = [];\n for (let j = 0; j < dstCount; j++) dstIds.push(cursor.s32());\n const src = {\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\n syncType: cursor.u32(), cueFilterHash: cursor.u32(), playPostExit: cursor.u8() !== 0\n };\n const dst = {\n transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32(),\n cueFilterHash: cursor.u32(), jumpToId: cursor.u32(), jumpToType: cursor.u16(),\n entryType: cursor.u16(), playPreEntry: cursor.u8() !== 0,\n matchSourceCueName: cursor.u8() !== 0\n };\n let transitionSegment = null;\n if (cursor.u8() !== 0)\n {\n transitionSegment = {\n segmentId: cursor.u32(),\n fadeIn: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\n fadeOut: { transitionTime: cursor.s32(), fadeCurve: cursor.u32(), fadeOffset: cursor.s32() },\n playPreEntry: cursor.u8() !== 0,\n playPostExit: cursor.u8() !== 0\n };\n }\n rules.push({ srcIds, dstIds, src, dst, transitionSegment });\n }\n return rules;\n}\n\n/**\n * Decode a music-segment (HIRC 10) payload: children, meter, stingers,\n * duration, and entry/exit markers.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded segment, or null when no anchored parse consumes the payload exactly.\n */\nexport function parseMusicSegment(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const duration = cursor.f64();\n if (!Number.isFinite(duration) || duration < 0 || duration > 36000000) continue;\n const markerCount = cursor.u32();\n if (markerCount > 1024) continue;\n const markers = [];\n for (let i = 0; i < markerCount; i++)\n {\n markers.push({ id: cursor.u32(), position: cursor.f64(), name: cursor.stringZ() });\n }\n if (cursor.at !== bytes.byteLength) continue;\n if (markers.some(marker => !Number.isFinite(marker.position) || marker.position < 0)) continue;\n return { nodeBase, ...node, duration, markers };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\n/**\n * Decode a music-track (HIRC 11) payload: sources, clips (play position and\n * trims per subtrack), track type, and switch parameters for switch tracks.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded track, or null when neither tail layout validates.\n */\nexport function parseMusicTrack(bytes, options = {})\n{\n const cursor = new WwiseCursor(bytes, 0);\n cursor.u8(); // uFlags (midi/override bits)\n const sourceCount = cursor.u32();\n if (sourceCount > 512) return null;\n const sources = [];\n for (let i = 0; i < sourceCount; i++)\n {\n const pluginId = cursor.u32();\n const streamType = cursor.u8();\n const sourceId = cursor.u32();\n const inMemoryMediaSize = cursor.u32();\n const sourceBits = cursor.u8();\n if ((pluginId & 0x0f) === 0x02)\n {\n const size = cursor.u32();\n cursor.at += size;\n }\n sources.push({ pluginId, streamType, sourceId, inMemoryMediaSize, sourceBits });\n }\n const clipCount = cursor.u32();\n if (clipCount > 4096) return null;\n const clips = [];\n for (let i = 0; i < clipCount; i++)\n {\n clips.push({\n trackId: cursor.u32(),\n sourceId: cursor.u32(),\n eventId: cursor.u32(),\n playAt: cursor.f64(),\n beginTrimOffset: cursor.f64(),\n endTrimOffset: cursor.f64(),\n srcDuration: cursor.f64()\n });\n }\n const subTrackCount = clipCount > 0 ? cursor.u32() : 0;\n const autoCount = cursor.u32();\n if (autoCount > 4096) return null;\n for (let i = 0; i < autoCount; i++)\n {\n cursor.u32(); // clip index\n cursor.u32(); // automation type\n const points = cursor.u32();\n if (points > 65536) return null;\n cursor.at += points * 12;\n }\n const headEnd = cursor.at;\n\n // Tail: [NodeBaseParams...] u8 trackType, [switch+trans params when the\n // type is 3], signed s32 iLookAheadTime. The switch layout is tried FIRST because\n // it validates every field to the exact payload end - the simple layout\n // only checks one byte, and a switch tail ending in zero bytes would\n // satisfy it falsely.\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const end = bytes.byteLength;\n for (let typeAt = headEnd; typeAt <= end - 5; typeAt++)\n {\n if (view.getUint8(typeAt) !== 3) continue;\n const tail = new WwiseCursor(bytes, typeAt + 1);\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n headEnd,\n typeAt,\n options,\n );\n\n if (!nodeBase) continue;\n const groupType = tail.u8();\n if (groupType > 1) continue;\n const groupId = tail.u32();\n const defaultSwitch = tail.u32();\n const assocCount = tail.u32();\n if (assocCount > 1024) continue;\n const assoc = [];\n for (let i = 0; i < assocCount; i++) assoc.push(tail.u32());\n const trans = {\n srcTransitionTime: tail.s32(), srcFadeCurve: tail.u32(), srcFadeOffset: tail.s32(),\n syncType: tail.u32(), cueFilterHash: tail.u32(),\n dstTransitionTime: tail.s32(), dstFadeCurve: tail.u32(), dstFadeOffset: tail.s32()\n };\n const lookAheadTime = tail.s32();\n if (tail.at !== end) continue;\n return {\n sources, clips, subTrackCount,\n nodeBase,\n trackType: 3,\n lookAheadTime,\n switchParams: { groupType, groupId, defaultSwitch, assoc, trans }\n };\n }\n catch\n {\n continue;\n }\n }\n const simpleAt = end - 5;\n if (simpleAt >= headEnd)\n {\n const type = view.getUint8(simpleAt);\n if (type <= 2)\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n headEnd,\n simpleAt,\n options,\n );\n\n if (!nodeBase) return null;\n return {\n sources, clips, subTrackCount,\n nodeBase,\n trackType: type,\n lookAheadTime: view.getInt32(end - 4, true),\n switchParams: null\n };\n }\n }\n return null;\n}\n\n/**\n * Decode a music-playlist-container (HIRC 13) payload: children, meter,\n * stingers, transition rules, and the flat pre-order playlist tree.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded playlist container, or null when no anchored parse validates.\n */\nexport function parseMusicPlaylist(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const rules = readTransRules(cursor);\n const itemCount = cursor.u32();\n if (itemCount > 8192) continue;\n if (cursor.remaining !== itemCount * 30) continue;\n const items = [];\n for (let i = 0; i < itemCount; i++)\n {\n items.push({\n segmentId: cursor.u32(),\n playlistItemId: cursor.u32(),\n childCount: cursor.u32(),\n rsType: cursor.s32(),\n loop: cursor.s16(),\n loopMin: cursor.s16(),\n loopMax: cursor.s16(),\n weight: cursor.u32(),\n avoidRepeatCount: cursor.u16(),\n usingWeight: cursor.u8() !== 0,\n shuffle: cursor.u8() !== 0\n });\n }\n if (cursor.at !== bytes.byteLength) continue;\n return { nodeBase, ...node, rules, playlist: items };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\n/**\n * Decode a music-switch-container (HIRC 12) payload: children, meter,\n * stingers, transition rules, argument groups, and the decision tree.\n *\n * @param {Uint8Array} bytes Entry payload view from `inspect()`.\n * @param {Set<number>} knownIds Every HIRC object id in the same bank.\n * @param {object} [options] Bank-version qualification for the NodeBase prefix.\n * @returns {object|null} Decoded switch container, or null when no anchored parse validates.\n */\nexport function parseMusicSwitch(bytes, knownIds, options = {})\n{\n for (const anchor of findAnchors(bytes, knownIds))\n {\n try\n {\n const nodeBase = parseNodeBaseRange(\n bytes,\n 1,\n anchor,\n options,\n );\n\n if (!nodeBase) continue;\n const cursor = new WwiseCursor(bytes, anchor);\n const node = readMusicNodeTail(cursor);\n const rules = readTransRules(cursor);\n const continuePlayback = cursor.u8() !== 0;\n const treeDepth = cursor.u32();\n if (treeDepth > 16) continue;\n const argumentGroups = [];\n for (let i = 0; i < treeDepth; i++) argumentGroups.push({ groupId: cursor.u32() });\n for (let i = 0; i < treeDepth; i++) argumentGroups[i].groupType = cursor.u8();\n const treeDataSize = cursor.u32();\n const mode = cursor.u8();\n if (cursor.remaining !== treeDataSize) continue;\n if (treeDataSize % 12 !== 0) continue;\n const treeNodes = [];\n const nodeCount = treeDataSize / 12;\n for (let i = 0; i < nodeCount; i++)\n {\n const key = cursor.u32();\n // 4-byte union: leaf = audioNodeId, internal = childrenIdx + count.\n const audioNodeId = cursor.view.getUint32(cursor.at, true);\n const childrenIdx = cursor.u16();\n const childrenCount = cursor.u16();\n const weight = cursor.u16();\n const probability = cursor.u16();\n treeNodes.push({ key, audioNodeId, childrenIdx, childrenCount, weight, probability });\n }\n if (cursor.at !== bytes.byteLength) continue;\n return {\n nodeBase,\n ...node,\n rules,\n continuePlayback,\n argumentGroups,\n mode,\n treeNodes,\n };\n }\n catch\n {\n continue;\n }\n }\n return null;\n}\n\nconst MUSIC_PARSERS = Object.freeze({\n 10: (payload, knownIds, options) => parseMusicSegment(payload, knownIds, options),\n 11: (payload, knownIds, options) => parseMusicTrack(payload, options),\n 12: (payload, knownIds, options) => parseMusicSwitch(payload, knownIds, options),\n 13: (payload, knownIds, options) => parseMusicPlaylist(payload, knownIds, options)\n});\n\nconst MUSIC_TYPE_NAMES = Object.freeze({\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\"\n});\n\n/**\n * Decode every interactive-music node across one or more inspected banks.\n *\n * @param {Array<object>} inspections `CjsBnkFormat.inspect()` results for every related music bank.\n * @returns {{nodes: Map<number, object>, diagnostics: {parsed: number, failed: Array<{bank: string, type: string, id: number}>}}} Decoded nodes keyed by object id plus per-entry failures.\n */\nexport function musicNodesFromBanks(inspections)\n{\n const banks = Array.isArray(inspections) ? inspections : [ inspections ];\n const nodes = new Map();\n const failed = [];\n let parsed = 0;\n for (const inspection of banks)\n {\n const knownIds = new Set();\n for (const entry of inspection.hirc ?? []) knownIds.add(entry.id);\n for (const entry of inspection.hirc ?? [])\n {\n const parser = MUSIC_PARSERS[entry.type];\n if (!parser) continue;\n const payload = entry.payload instanceof Uint8Array ? entry.payload : null;\n const decoded = payload\n ? parser(payload, knownIds, {\n bankVersion: inspection.bankVersion,\n })\n : null;\n if (!decoded)\n {\n failed.push({ bank: inspection.source || \"\", type: MUSIC_TYPE_NAMES[entry.type], id: entry.id });\n continue;\n }\n parsed++;\n nodes.set(entry.id, { id: entry.id, type: MUSIC_TYPE_NAMES[entry.type], bank: inspection.source || \"\", ...decoded });\n }\n }\n return { nodes, diagnostics: { parsed, failed } };\n}\n"],"names":["plausibleMeter","view","at","byteLength","grid","getFloat64","offset","tempo","getFloat32","beats","getUint8","beatValue","Number","isFinite","includes","findAnchors","bytes","knownIds","DataView","buffer","byteOffset","anchors","count","getUint32","valid","i","has","push","readMusicNodeTail","cursor","childCount","u32","children","meter","gridPeriod","f64","gridOffset","f32","beatsPerBar","u8","meterOverride","stingerCount","stingers","triggerId","segmentId","syncPlayAt","cueFilterHash","dontRepeatTime","s32","numSegmentLookAhead","readTransRules","ruleCount","RangeError","rules","srcCount","srcIds","j","dstCount","dstIds","src","transitionTime","fadeCurve","fadeOffset","syncType","playPostExit","dst","jumpToId","jumpToType","u16","entryType","playPreEntry","matchSourceCueName","transitionSegment","fadeIn","fadeOut","parseMusicSegment","options","anchor","nodeBase","parseNodeBaseRange","WwiseCursor","node","duration","markerCount","markers","id","position","name","stringZ","some","marker","parseMusicTrack","sourceCount","sources","pluginId","streamType","sourceId","inMemoryMediaSize","sourceBits","size","clipCount","clips","trackId","eventId","playAt","beginTrimOffset","endTrimOffset","srcDuration","subTrackCount","autoCount","points","headEnd","end","typeAt","tail","groupType","groupId","defaultSwitch","assocCount","assoc","trans","srcTransitionTime","srcFadeCurve","srcFadeOffset","dstTransitionTime","dstFadeCurve","dstFadeOffset","lookAheadTime","trackType","switchParams","simpleAt","type","getInt32","parseMusicPlaylist","itemCount","remaining","items","playlistItemId","rsType","loop","s16","loopMin","loopMax","weight","avoidRepeatCount","usingWeight","shuffle","playlist","parseMusicSwitch","continuePlayback","treeDepth","argumentGroups","treeDataSize","mode","treeNodes","nodeCount","key","audioNodeId","childrenIdx","childrenCount","probability","MUSIC_PARSERS","Object","freeze","payload","MUSIC_TYPE_NAMES","musicNodesFromBanks","inspections","banks","Array","isArray","nodes","Map","failed","parsed","inspection","Set","entry","hirc","add","parser","Uint8Array","decoded","bankVersion","bank","source","set","diagnostics"],"mappings":"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"}
|