@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.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 +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.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 +158 -345
- 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 +92 -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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WwiseCursor } from './WwiseCursor.js';
|
|
2
2
|
|
|
3
3
|
// Exact Wwise v150 common audio-node decoding. This module is internal to the
|
|
4
4
|
// BNK toolkit: it preserves authored facts and byte unions without assigning
|
|
@@ -9,101 +9,10 @@ const ATTENUATION_PROPERTY_ID = 0x55;
|
|
|
9
9
|
const LOOP_COUNT_PROPERTY_ID = 0x54;
|
|
10
10
|
const VALID_CURVE_SCALING = new Set([0, 2, 3, 4]);
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
* @param {Uint8Array} bytes Payload bytes.
|
|
18
|
-
* @param {number} [offset=0] Initial byte offset.
|
|
19
|
-
* @param {number} [end=bytes.byteLength] Exclusive ending offset.
|
|
20
|
-
*/
|
|
21
|
-
constructor(bytes, offset = 0, end = bytes?.byteLength) {
|
|
22
|
-
if (!(bytes instanceof Uint8Array) || !Number.isSafeInteger(offset) || !Number.isSafeInteger(end) || offset < 0 || end < offset || end > bytes.byteLength) {
|
|
23
|
-
throw new TypeError("Invalid Wwise cursor range");
|
|
24
|
-
}
|
|
25
|
-
this.bytes = bytes;
|
|
26
|
-
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
27
|
-
this.at = offset;
|
|
28
|
-
this.end = end;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Gets the number of unread bytes in the bounded range. */
|
|
32
|
-
get remaining() {
|
|
33
|
-
return this.end - this.at;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Verifies that a read of the requested size stays within the range.
|
|
38
|
-
*
|
|
39
|
-
* @param {number} size Number of bytes to read.
|
|
40
|
-
* @throws {RangeError} The read would exceed the bounded range.
|
|
41
|
-
*/
|
|
42
|
-
ensure(size) {
|
|
43
|
-
if (!Number.isSafeInteger(size) || size < 0 || this.at + size > this.end) {
|
|
44
|
-
throw new RangeError("truncated Wwise object");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** Reads an unsigned 8-bit integer. */
|
|
49
|
-
u8() {
|
|
50
|
-
this.ensure(1);
|
|
51
|
-
return this.view.getUint8(this.at++);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** Reads a signed 8-bit integer. */
|
|
55
|
-
s8() {
|
|
56
|
-
this.ensure(1);
|
|
57
|
-
return this.view.getInt8(this.at++);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** Reads a little-endian unsigned 16-bit integer. */
|
|
61
|
-
u16() {
|
|
62
|
-
this.ensure(2);
|
|
63
|
-
const value = this.view.getUint16(this.at, true);
|
|
64
|
-
this.at += 2;
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** Reads a little-endian unsigned 32-bit integer. */
|
|
69
|
-
u32() {
|
|
70
|
-
this.ensure(4);
|
|
71
|
-
const value = this.view.getUint32(this.at, true);
|
|
72
|
-
this.at += 4;
|
|
73
|
-
return value;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** Reads a little-endian signed 32-bit integer. */
|
|
77
|
-
s32() {
|
|
78
|
-
this.ensure(4);
|
|
79
|
-
const value = this.view.getInt32(this.at, true);
|
|
80
|
-
this.at += 4;
|
|
81
|
-
return value;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** Reads a little-endian 32-bit floating-point value. */
|
|
85
|
-
f32() {
|
|
86
|
-
this.ensure(4);
|
|
87
|
-
const value = this.view.getFloat32(this.at, true);
|
|
88
|
-
this.at += 4;
|
|
89
|
-
return value;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** Reads a Wwise variable-length unsigned integer. */
|
|
93
|
-
variable() {
|
|
94
|
-
const result = readWwiseVar(this.bytes.subarray(0, this.end), this.at);
|
|
95
|
-
if (!result) {
|
|
96
|
-
throw new RangeError("invalid Wwise variable integer");
|
|
97
|
-
}
|
|
98
|
-
this.at = result.nextOffset;
|
|
99
|
-
return result.value;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Reads one v150 NodeBase from the current cursor position.
|
|
105
|
-
*
|
|
106
|
-
* The cursor is left at the first type-specific byte.
|
|
12
|
+
/**
|
|
13
|
+
* Reads one v150 NodeBase from the current cursor position.
|
|
14
|
+
*
|
|
15
|
+
* The cursor is left at the first type-specific byte.
|
|
107
16
|
*/
|
|
108
17
|
function readNodeBase(cursor) {
|
|
109
18
|
const fx = ReadInitialFx(cursor);
|
|
@@ -353,11 +262,11 @@ function ReadInitialProperties(cursor) {
|
|
|
353
262
|
};
|
|
354
263
|
}
|
|
355
264
|
|
|
356
|
-
/**
|
|
357
|
-
* Reads the v150 positioning block shared by NodeBase and bus records.
|
|
358
|
-
*
|
|
359
|
-
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
360
|
-
* @returns {object} Exact positioning flags and optional automation.
|
|
265
|
+
/**
|
|
266
|
+
* Reads the v150 positioning block shared by NodeBase and bus records.
|
|
267
|
+
*
|
|
268
|
+
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
269
|
+
* @returns {object} Exact positioning flags and optional automation.
|
|
361
270
|
*/
|
|
362
271
|
function readPositioning(cursor) {
|
|
363
272
|
const flags = cursor.u8();
|
|
@@ -432,11 +341,11 @@ function ReadAutomation(cursor) {
|
|
|
432
341
|
};
|
|
433
342
|
}
|
|
434
343
|
|
|
435
|
-
/**
|
|
436
|
-
* Reads the v150 auxiliary-send block shared by NodeBase and bus records.
|
|
437
|
-
*
|
|
438
|
-
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
439
|
-
* @returns {object} Exact auxiliary flags and target identities.
|
|
344
|
+
/**
|
|
345
|
+
* Reads the v150 auxiliary-send block shared by NodeBase and bus records.
|
|
346
|
+
*
|
|
347
|
+
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
348
|
+
* @returns {object} Exact auxiliary flags and target identities.
|
|
440
349
|
*/
|
|
441
350
|
function readAux(cursor) {
|
|
442
351
|
const flags = cursor.u8();
|
|
@@ -482,11 +391,11 @@ function ReadAdvanced(cursor) {
|
|
|
482
391
|
};
|
|
483
392
|
}
|
|
484
393
|
|
|
485
|
-
/**
|
|
486
|
-
* Reads one v150 state-aware property and group chunk.
|
|
487
|
-
*
|
|
488
|
-
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
489
|
-
* @returns {object} Exact state property declarations and values.
|
|
394
|
+
/**
|
|
395
|
+
* Reads one v150 state-aware property and group chunk.
|
|
396
|
+
*
|
|
397
|
+
* @param {WwiseCursor} cursor Bounded object cursor.
|
|
398
|
+
* @returns {object} Exact state property declarations and values.
|
|
490
399
|
*/
|
|
491
400
|
function readStateChunk(cursor) {
|
|
492
401
|
const propertyCount = boundedCount(cursor.variable(), cursor.remaining, 3, 4096);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeBase.js","sources":["../../../../../../src/resource/formats/bnk/core/nodeBase.js"],"sourcesContent":["// Exact Wwise v150 common audio-node decoding. This module is internal to the\r\n// BNK toolkit: it preserves authored facts and byte unions without assigning\r\n// runtime playback or attenuation-curve semantics.\r\n\r\nimport { readWwiseVar } from \"./helpers.js\";\r\n\r\nexport const WWISE_NODE_BASE_VERSION = 150;\r\n\r\nconst ATTENUATION_PROPERTY_ID = 0x55;\r\nconst LOOP_COUNT_PROPERTY_ID = 0x54;\r\nconst VALID_CURVE_SCALING = new Set([ 0, 2, 3, 4 ]);\r\n\r\n/** Bounds-aware little-endian cursor over one HIRC payload. */\r\nexport class WwiseCursor\r\n{\r\n /**\r\n * Creates a cursor over a bounded portion of a Wwise payload.\r\n *\r\n * @param {Uint8Array} bytes Payload bytes.\r\n * @param {number} [offset=0] Initial byte offset.\r\n * @param {number} [end=bytes.byteLength] Exclusive ending offset.\r\n */\r\n constructor(bytes, offset = 0, end = bytes?.byteLength)\r\n {\r\n if (!(bytes instanceof Uint8Array)\r\n || !Number.isSafeInteger(offset)\r\n || !Number.isSafeInteger(end)\r\n || offset < 0\r\n || end < offset\r\n || end > bytes.byteLength)\r\n {\r\n throw new TypeError(\"Invalid Wwise cursor range\");\r\n }\r\n\r\n this.bytes = bytes;\r\n this.view = new DataView(\r\n bytes.buffer,\r\n bytes.byteOffset,\r\n bytes.byteLength,\r\n );\r\n this.at = offset;\r\n this.end = end;\r\n }\r\n\r\n /** Gets the number of unread bytes in the bounded range. */\r\n get remaining()\r\n {\r\n return this.end - this.at;\r\n }\r\n\r\n /**\r\n * Verifies that a read of the requested size stays within the range.\r\n *\r\n * @param {number} size Number of bytes to read.\r\n * @throws {RangeError} The read would exceed the bounded range.\r\n */\r\n ensure(size)\r\n {\r\n if (!Number.isSafeInteger(size)\r\n || size < 0\r\n || this.at + size > this.end)\r\n {\r\n throw new RangeError(\"truncated Wwise object\");\r\n }\r\n }\r\n\r\n /** Reads an unsigned 8-bit integer. */\r\n u8()\r\n {\r\n this.ensure(1);\r\n return this.view.getUint8(this.at++);\r\n }\r\n\r\n /** Reads a signed 8-bit integer. */\r\n s8()\r\n {\r\n this.ensure(1);\r\n return this.view.getInt8(this.at++);\r\n }\r\n\r\n /** Reads a little-endian unsigned 16-bit integer. */\r\n u16()\r\n {\r\n this.ensure(2);\r\n const value = this.view.getUint16(this.at, true);\r\n\r\n this.at += 2;\r\n return value;\r\n }\r\n\r\n /** Reads a little-endian unsigned 32-bit integer. */\r\n u32()\r\n {\r\n this.ensure(4);\r\n const value = this.view.getUint32(this.at, true);\r\n\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a little-endian signed 32-bit integer. */\r\n s32()\r\n {\r\n this.ensure(4);\r\n const value = this.view.getInt32(this.at, true);\r\n\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a little-endian 32-bit floating-point value. */\r\n f32()\r\n {\r\n this.ensure(4);\r\n const value = this.view.getFloat32(this.at, true);\r\n\r\n this.at += 4;\r\n return value;\r\n }\r\n\r\n /** Reads a Wwise variable-length unsigned integer. */\r\n variable()\r\n {\r\n const result = readWwiseVar(\r\n this.bytes.subarray(0, this.end),\r\n this.at,\r\n );\r\n\r\n if (!result)\r\n {\r\n throw new RangeError(\"invalid Wwise variable integer\");\r\n }\r\n\r\n this.at = result.nextOffset;\r\n return result.value;\r\n }\r\n}\r\n\r\n/**\r\n * Reads one v150 NodeBase from the current cursor position.\r\n *\r\n * The cursor is left at the first type-specific byte.\r\n */\r\nexport function readNodeBase(cursor)\r\n{\r\n const fx = ReadInitialFx(cursor);\r\n const metadata = ReadInitialMetadata(cursor);\r\n const overrideBusId = cursor.u32();\r\n const directParentId = cursor.u32();\r\n const priority = ReadPriority(cursor);\r\n const {\r\n properties,\r\n ranges,\r\n attenuationId,\r\n loopCount,\r\n } = ReadInitialProperties(cursor);\r\n const positioning = readPositioning(cursor);\r\n const aux = readAux(cursor);\r\n const advanced = ReadAdvanced(cursor);\r\n const state = readStateChunk(cursor);\r\n const rtpcs = readInitialRtpcs(cursor);\r\n\r\n return {\r\n fx,\r\n metadata,\r\n overrideBusId,\r\n directParentId,\r\n priority,\r\n properties,\r\n ranges,\r\n attenuationId,\r\n loopCount,\r\n positioning,\r\n aux,\r\n advanced,\r\n state,\r\n rtpcs,\r\n };\r\n}\r\n\r\n/** Parses one NodeBase that must consume exactly the supplied byte range. */\r\nexport function parseNodeBaseRange(\r\n bytes,\r\n start,\r\n end,\r\n { bankVersion = WWISE_NODE_BASE_VERSION } = {},\r\n)\r\n{\r\n if (!(bytes instanceof Uint8Array)\r\n || Number(bankVersion) !== WWISE_NODE_BASE_VERSION)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n const cursor = new WwiseCursor(bytes, start, end);\r\n const nodeBase = readNodeBase(cursor);\r\n\r\n return cursor.at === end ? nodeBase : null;\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n}\r\n\r\n/** Reads the v150 initial-RTPC list shared by NodeBase and attenuation. */\r\nexport function readInitialRtpcs(cursor)\r\n{\r\n const count = boundedCount(cursor.u16(), cursor.remaining, 14, 4096);\r\n const rtpcs = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n rtpcs.push(readInitialRtpc(cursor));\r\n }\r\n\r\n return rtpcs;\r\n}\r\n\r\n/** Reads one v150 initial RTPC. */\r\nexport function readInitialRtpc(cursor)\r\n{\r\n const controlId = cursor.u32();\r\n const controlType = cursor.u8();\r\n const accumulation = cursor.u8();\r\n const parameterId = cursor.variable();\r\n const curveId = cursor.u32();\r\n const scaling = cursor.u8();\r\n const pointCount = boundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 12,\r\n 65535,\r\n );\r\n\r\n if (controlType > 4\r\n || accumulation > 6\r\n || !VALID_CURVE_SCALING.has(scaling))\r\n {\r\n throw new RangeError(\"invalid initial RTPC enum\");\r\n }\r\n\r\n return {\r\n controlId,\r\n controlType,\r\n accumulation,\r\n parameterId,\r\n curveId,\r\n scaling,\r\n points: readCurvePoints(cursor, pointCount),\r\n };\r\n}\r\n\r\n/** Reads exact Wwise graph points without inferring curve meaning. */\r\nexport function readCurvePoints(cursor, count)\r\n{\r\n const points = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const from = finite(cursor.f32());\r\n const to = finite(cursor.f32());\r\n const interpolation = cursor.u32();\r\n\r\n if (interpolation > 9)\r\n {\r\n throw new RangeError(\"invalid curve interpolation\");\r\n }\r\n\r\n points.push({ from, to, interpolation });\r\n }\r\n\r\n return points;\r\n}\r\n\r\n/** Validates an encoded count before allocating or iterating it. */\r\nexport function boundedCount(value, remaining, stride, maximum)\r\n{\r\n if (!Number.isSafeInteger(value)\r\n || value < 0\r\n || value > maximum\r\n || value * stride > remaining)\r\n {\r\n throw new RangeError(\"invalid Wwise object count\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/** Rejects non-finite authored curve/position values. */\r\nexport function finite(value)\r\n{\r\n if (!Number.isFinite(value))\r\n {\r\n throw new RangeError(\"non-finite Wwise object value\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction ReadInitialFx(cursor)\r\n{\r\n const overrideParentRaw = cursor.u8();\r\n const count = cursor.u8();\r\n const bypassAllRaw = count ? cursor.u8() : 0;\r\n const slots = [];\r\n\r\n boundedCount(count, cursor.remaining, 6, 255);\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const flags = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n flags,\r\n bypass: Boolean(flags & 0x01),\r\n shareSet: Boolean(flags & 0x02),\r\n rendered: Boolean(flags & 0x04),\r\n });\r\n }\r\n\r\n return {\r\n overrideParentRaw,\r\n overrideParent: Boolean(overrideParentRaw),\r\n bypassAllRaw,\r\n bypassAll: Boolean(bypassAllRaw),\r\n slots,\r\n };\r\n}\r\n\r\nfunction ReadInitialMetadata(cursor)\r\n{\r\n const overrideParentRaw = cursor.u8();\r\n const count = cursor.u8();\r\n const slots = [];\r\n\r\n boundedCount(count, cursor.remaining, 6, 255);\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const slot = cursor.u8();\r\n const fxId = cursor.u32();\r\n const shareSetRaw = cursor.u8();\r\n\r\n slots.push({\r\n index: slot,\r\n fxId,\r\n shareSetRaw,\r\n shareSet: Boolean(shareSetRaw),\r\n });\r\n }\r\n\r\n return {\r\n overrideParentRaw,\r\n overrideParent: Boolean(overrideParentRaw),\r\n slots,\r\n };\r\n}\r\n\r\nfunction ReadPriority(cursor)\r\n{\r\n const flags = cursor.u8();\r\n\r\n return {\r\n flags,\r\n overrideParent: Boolean(flags & 0x01),\r\n applyDistanceFactor: Boolean(flags & 0x02),\r\n overrideMidiEventsBehavior: Boolean(flags & 0x04),\r\n overrideMidiNoteTracking: Boolean(flags & 0x08),\r\n enableMidiNoteTracking: Boolean(flags & 0x10),\r\n midiBreakLoopOnNoteOff: Boolean(flags & 0x20),\r\n };\r\n}\r\n\r\nfunction ReadInitialProperties(cursor)\r\n{\r\n const propertyCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 5,\r\n 255,\r\n );\r\n const propertyIds = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n propertyIds.push(cursor.u8());\r\n }\r\n\r\n const properties = propertyIds.map((id) =>\r\n {\r\n const rawValue = cursor.u32();\r\n\r\n if (id === LOOP_COUNT_PROPERTY_ID)\r\n {\r\n return {\r\n id,\r\n rawValue,\r\n valueType: \"loop-count\",\r\n value: rawValue,\r\n };\r\n }\r\n if (id === ATTENUATION_PROPERTY_ID)\r\n {\r\n return {\r\n id,\r\n rawValue,\r\n valueType: \"id\",\r\n value: rawValue,\r\n };\r\n }\r\n\r\n return {\r\n id,\r\n rawValue,\r\n valueType: \"union\",\r\n floatValue: FloatFromBits(rawValue),\r\n };\r\n });\r\n const rangeCount = boundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 9,\r\n 255,\r\n );\r\n const rangeIds = [];\r\n\r\n for (let index = 0; index < rangeCount; index++)\r\n {\r\n rangeIds.push(cursor.u8());\r\n }\r\n\r\n const ranges = rangeIds.map((id) =>\r\n {\r\n const minRaw = cursor.u32();\r\n const maxRaw = cursor.u32();\r\n\r\n return {\r\n id,\r\n minRaw,\r\n maxRaw,\r\n minFloat: FloatFromBits(minRaw),\r\n maxFloat: FloatFromBits(maxRaw),\r\n };\r\n });\r\n const attenuationProperties = properties.filter(\r\n property => property.id === ATTENUATION_PROPERTY_ID,\r\n );\r\n const loopCountProperties = properties.filter(\r\n property => property.id === LOOP_COUNT_PROPERTY_ID,\r\n );\r\n\r\n if (attenuationProperties.length > 1)\r\n {\r\n throw new RangeError(\"duplicate v150 Wwise attenuation property\");\r\n }\r\n if (loopCountProperties.length > 1)\r\n {\r\n throw new RangeError(\"duplicate v150 Wwise loop-count property\");\r\n }\r\n\r\n const loopCount = loopCountProperties[0]?.value ?? null;\r\n\r\n if (loopCount !== null && loopCount > 32767)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise loop count\");\r\n }\r\n\r\n return {\r\n properties,\r\n ranges,\r\n attenuationId: attenuationProperties[0]?.value ?? null,\r\n // Wwise serializes this property only when looping is enabled.\r\n // Zero means infinite; positive values are finite authored repeats.\r\n loopCount,\r\n };\r\n}\r\n\r\n/**\r\n * Reads the v150 positioning block shared by NodeBase and bus records.\r\n *\r\n * @param {WwiseCursor} cursor Bounded object cursor.\r\n * @returns {object} Exact positioning flags and optional automation.\r\n */\r\nexport function readPositioning(cursor)\r\n{\r\n const flags = cursor.u8();\r\n const overrideParent = Boolean(flags & 0x01);\r\n const listenerRelative = Boolean(flags & 0x02);\r\n const pannerType = (flags >>> 2) & 0x03;\r\n const positionType = (flags >>> 5) & 0x03;\r\n let spatial = null;\r\n let automation = null;\r\n\r\n if (positionType === 3)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise position type\");\r\n }\r\n\r\n if (overrideParent && listenerRelative)\r\n {\r\n const spatialFlags = cursor.u8();\r\n\r\n spatial = {\r\n flags: spatialFlags,\r\n mode: spatialFlags & 0x03,\r\n enableAttenuation: Boolean(spatialFlags & 0x08),\r\n holdEmitterPositionOrientation: Boolean(spatialFlags & 0x10),\r\n holdListenerOrientation: Boolean(spatialFlags & 0x20),\r\n enableDiffraction: Boolean(spatialFlags & 0x40),\r\n };\r\n\r\n if (positionType !== 0)\r\n {\r\n automation = ReadAutomation(cursor);\r\n }\r\n }\r\n\r\n return {\r\n flags,\r\n overrideParent,\r\n listenerRelative,\r\n pannerType,\r\n positionType,\r\n spatial,\r\n automation,\r\n };\r\n}\r\n\r\nfunction ReadAutomation(cursor)\r\n{\r\n const pathMode = cursor.u8();\r\n const transitionTime = cursor.s32();\r\n const vertexCount = boundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 16,\r\n 65535,\r\n );\r\n const vertices = [];\r\n\r\n for (let index = 0; index < vertexCount; index++)\r\n {\r\n vertices.push({\r\n x: finite(cursor.f32()),\r\n y: finite(cursor.f32()),\r\n z: finite(cursor.f32()),\r\n duration: cursor.s32(),\r\n });\r\n }\r\n\r\n const playlistCount = boundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 20,\r\n 65535,\r\n );\r\n const playlist = [];\r\n\r\n for (let index = 0; index < playlistCount; index++)\r\n {\r\n playlist.push({\r\n verticesOffset: cursor.u32(),\r\n numVertices: cursor.u32(),\r\n });\r\n }\r\n\r\n const ranges = [];\r\n\r\n for (let index = 0; index < playlistCount; index++)\r\n {\r\n ranges.push({\r\n x: finite(cursor.f32()),\r\n y: finite(cursor.f32()),\r\n z: finite(cursor.f32()),\r\n });\r\n }\r\n\r\n return {\r\n pathMode,\r\n transitionTime,\r\n vertices,\r\n playlist,\r\n ranges,\r\n };\r\n}\r\n\r\n/**\r\n * Reads the v150 auxiliary-send block shared by NodeBase and bus records.\r\n *\r\n * @param {WwiseCursor} cursor Bounded object cursor.\r\n * @returns {object} Exact auxiliary flags and target identities.\r\n */\r\nexport function readAux(cursor)\r\n{\r\n const flags = cursor.u8();\r\n const hasAux = Boolean(flags & 0x08);\r\n const auxIds = [];\r\n\r\n if (hasAux)\r\n {\r\n for (let index = 0; index < 4; index++)\r\n {\r\n auxIds.push(cursor.u32());\r\n }\r\n }\r\n\r\n return {\r\n flags,\r\n overrideUserAux: Boolean(flags & 0x04),\r\n hasAux,\r\n overrideReflectionsAux: Boolean(flags & 0x10),\r\n auxIds,\r\n reflectionsAuxBusId: cursor.u32(),\r\n };\r\n}\r\n\r\nfunction ReadAdvanced(cursor)\r\n{\r\n const flags = cursor.u8();\r\n const virtualQueueBehavior = cursor.u8();\r\n const maxInstances = cursor.u16();\r\n const belowThresholdBehavior = cursor.u8();\r\n const hdrFlags = cursor.u8();\r\n\r\n if (virtualQueueBehavior > 2 || belowThresholdBehavior > 3)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise advanced setting\");\r\n }\r\n\r\n return {\r\n flags,\r\n killNewest: Boolean(flags & 0x01),\r\n useVirtualBehavior: Boolean(flags & 0x02),\r\n ignoreParentMaxInstances: Boolean(flags & 0x08),\r\n overrideVirtualVoiceBehavior: Boolean(flags & 0x10),\r\n virtualQueueBehavior,\r\n maxInstances,\r\n belowThresholdBehavior,\r\n hdrFlags,\r\n overrideHdrEnvelope: Boolean(hdrFlags & 0x01),\r\n overrideAnalysis: Boolean(hdrFlags & 0x02),\r\n normalizeLoudness: Boolean(hdrFlags & 0x04),\r\n enableEnvelope: Boolean(hdrFlags & 0x08),\r\n };\r\n}\r\n\r\n/**\r\n * Reads one v150 state-aware property and group chunk.\r\n *\r\n * @param {WwiseCursor} cursor Bounded object cursor.\r\n * @returns {object} Exact state property declarations and values.\r\n */\r\nexport function readStateChunk(cursor)\r\n{\r\n const propertyCount = boundedCount(\r\n cursor.variable(),\r\n cursor.remaining,\r\n 3,\r\n 4096,\r\n );\r\n const properties = [];\r\n\r\n for (let index = 0; index < propertyCount; index++)\r\n {\r\n const propertyId = cursor.variable();\r\n const accumulation = cursor.u8();\r\n const inDbRaw = cursor.u8();\r\n\r\n if (accumulation > 6 || inDbRaw > 1)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise state property\");\r\n }\r\n\r\n properties.push({\r\n propertyId,\r\n accumulation,\r\n inDbRaw,\r\n inDb: Boolean(inDbRaw),\r\n });\r\n }\r\n\r\n const groupCount = boundedCount(\r\n cursor.variable(),\r\n cursor.remaining,\r\n 6,\r\n 4096,\r\n );\r\n const groups = [];\r\n\r\n for (let index = 0; index < groupCount; index++)\r\n {\r\n const groupId = cursor.u32();\r\n const syncType = cursor.u8();\r\n const stateCount = boundedCount(\r\n cursor.variable(),\r\n cursor.remaining,\r\n 6,\r\n 4096,\r\n );\r\n const states = [];\r\n\r\n if (syncType > 9)\r\n {\r\n throw new RangeError(\"invalid v150 Wwise state sync type\");\r\n }\r\n\r\n for (let stateIndex = 0; stateIndex < stateCount; stateIndex++)\r\n {\r\n const stateId = cursor.u32();\r\n const valueCount = boundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 6,\r\n 65535,\r\n );\r\n const propertyIds = [];\r\n\r\n for (let valueIndex = 0; valueIndex < valueCount; valueIndex++)\r\n {\r\n propertyIds.push(cursor.u16());\r\n }\r\n\r\n const values = propertyIds.map(propertyId => ({\r\n propertyId,\r\n value: finite(cursor.f32()),\r\n }));\r\n\r\n states.push({ stateId, values });\r\n }\r\n\r\n groups.push({ groupId, syncType, states });\r\n }\r\n\r\n return { properties, groups };\r\n}\r\n\r\nfunction FloatFromBits(value)\r\n{\r\n const bytes = new ArrayBuffer(4);\r\n const view = new DataView(bytes);\r\n\r\n view.setUint32(0, value, true);\r\n return view.getFloat32(0, true);\r\n}\r\n"],"names":["WWISE_NODE_BASE_VERSION","ATTENUATION_PROPERTY_ID","LOOP_COUNT_PROPERTY_ID","VALID_CURVE_SCALING","Set","WwiseCursor","constructor","bytes","offset","end","byteLength","Uint8Array","Number","isSafeInteger","TypeError","view","DataView","buffer","byteOffset","at","remaining","ensure","size","RangeError","u8","getUint8","s8","getInt8","u16","value","getUint16","u32","getUint32","s32","getInt32","f32","getFloat32","variable","result","readWwiseVar","subarray","nextOffset","readNodeBase","cursor","fx","ReadInitialFx","metadata","ReadInitialMetadata","overrideBusId","directParentId","priority","ReadPriority","properties","ranges","attenuationId","loopCount","ReadInitialProperties","positioning","readPositioning","aux","readAux","advanced","ReadAdvanced","state","readStateChunk","rtpcs","readInitialRtpcs","parseNodeBaseRange","start","bankVersion","nodeBase","count","boundedCount","index","push","readInitialRtpc","controlId","controlType","accumulation","parameterId","curveId","scaling","pointCount","has","points","readCurvePoints","from","finite","to","interpolation","stride","maximum","isFinite","overrideParentRaw","bypassAllRaw","slots","slot","fxId","flags","bypass","Boolean","shareSet","rendered","overrideParent","bypassAll","shareSetRaw","applyDistanceFactor","overrideMidiEventsBehavior","overrideMidiNoteTracking","enableMidiNoteTracking","midiBreakLoopOnNoteOff","propertyCount","propertyIds","map","id","rawValue","valueType","floatValue","FloatFromBits","rangeCount","rangeIds","minRaw","maxRaw","minFloat","maxFloat","attenuationProperties","filter","property","loopCountProperties","length","listenerRelative","pannerType","positionType","spatial","automation","spatialFlags","mode","enableAttenuation","holdEmitterPositionOrientation","holdListenerOrientation","enableDiffraction","ReadAutomation","pathMode","transitionTime","vertexCount","vertices","x","y","z","duration","playlistCount","playlist","verticesOffset","numVertices","hasAux","auxIds","overrideUserAux","overrideReflectionsAux","reflectionsAuxBusId","virtualQueueBehavior","maxInstances","belowThresholdBehavior","hdrFlags","killNewest","useVirtualBehavior","ignoreParentMaxInstances","overrideVirtualVoiceBehavior","overrideHdrEnvelope","overrideAnalysis","normalizeLoudness","enableEnvelope","propertyId","inDbRaw","inDb","groupCount","groups","groupId","syncType","stateCount","states","stateIndex","stateId","valueCount","valueIndex","values","ArrayBuffer","setUint32"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodeBase.js","sources":["../../../../../../src/resource/formats/bnk/core/nodeBase.js"],"sourcesContent":["import { WwiseCursor, readWwiseVar } from \"./WwiseCursor.js\";\n// Exact Wwise v150 common audio-node decoding. This module is internal to the\n// BNK toolkit: it preserves authored facts and byte unions without assigning\n// runtime playback or attenuation-curve semantics.\n\n\nexport const WWISE_NODE_BASE_VERSION = 150;\n\nconst ATTENUATION_PROPERTY_ID = 0x55;\nconst LOOP_COUNT_PROPERTY_ID = 0x54;\nconst VALID_CURVE_SCALING = new Set([ 0, 2, 3, 4 ]);\n\n\n/**\n * Reads one v150 NodeBase from the current cursor position.\n *\n * The cursor is left at the first type-specific byte.\n */\nexport function readNodeBase(cursor)\n{\n const fx = ReadInitialFx(cursor);\n const metadata = ReadInitialMetadata(cursor);\n const overrideBusId = cursor.u32();\n const directParentId = cursor.u32();\n const priority = ReadPriority(cursor);\n const {\n properties,\n ranges,\n attenuationId,\n loopCount,\n } = ReadInitialProperties(cursor);\n const positioning = readPositioning(cursor);\n const aux = readAux(cursor);\n const advanced = ReadAdvanced(cursor);\n const state = readStateChunk(cursor);\n const rtpcs = readInitialRtpcs(cursor);\n\n return {\n fx,\n metadata,\n overrideBusId,\n directParentId,\n priority,\n properties,\n ranges,\n attenuationId,\n loopCount,\n positioning,\n aux,\n advanced,\n state,\n rtpcs,\n };\n}\n\n/** Parses one NodeBase that must consume exactly the supplied byte range. */\nexport function parseNodeBaseRange(\n bytes,\n start,\n end,\n { bankVersion = WWISE_NODE_BASE_VERSION } = {},\n)\n{\n if (!(bytes instanceof Uint8Array)\n || Number(bankVersion) !== WWISE_NODE_BASE_VERSION)\n {\n return null;\n }\n\n try\n {\n const cursor = new WwiseCursor(bytes, start, end);\n const nodeBase = readNodeBase(cursor);\n\n return cursor.at === end ? nodeBase : null;\n }\n catch\n {\n return null;\n }\n}\n\n/** Reads the v150 initial-RTPC list shared by NodeBase and attenuation. */\nexport function readInitialRtpcs(cursor)\n{\n const count = boundedCount(cursor.u16(), cursor.remaining, 14, 4096);\n const rtpcs = [];\n\n for (let index = 0; index < count; index++)\n {\n rtpcs.push(readInitialRtpc(cursor));\n }\n\n return rtpcs;\n}\n\n/** Reads one v150 initial RTPC. */\nexport function readInitialRtpc(cursor)\n{\n const controlId = cursor.u32();\n const controlType = cursor.u8();\n const accumulation = cursor.u8();\n const parameterId = cursor.variable();\n const curveId = cursor.u32();\n const scaling = cursor.u8();\n const pointCount = boundedCount(\n cursor.u16(),\n cursor.remaining,\n 12,\n 65535,\n );\n\n if (controlType > 4\n || accumulation > 6\n || !VALID_CURVE_SCALING.has(scaling))\n {\n throw new RangeError(\"invalid initial RTPC enum\");\n }\n\n return {\n controlId,\n controlType,\n accumulation,\n parameterId,\n curveId,\n scaling,\n points: readCurvePoints(cursor, pointCount),\n };\n}\n\n/** Reads exact Wwise graph points without inferring curve meaning. */\nexport function readCurvePoints(cursor, count)\n{\n const points = [];\n\n for (let index = 0; index < count; index++)\n {\n const from = finite(cursor.f32());\n const to = finite(cursor.f32());\n const interpolation = cursor.u32();\n\n if (interpolation > 9)\n {\n throw new RangeError(\"invalid curve interpolation\");\n }\n\n points.push({ from, to, interpolation });\n }\n\n return points;\n}\n\n/** Validates an encoded count before allocating or iterating it. */\nexport function boundedCount(value, remaining, stride, maximum)\n{\n if (!Number.isSafeInteger(value)\n || value < 0\n || value > maximum\n || value * stride > remaining)\n {\n throw new RangeError(\"invalid Wwise object count\");\n }\n\n return value;\n}\n\n/** Rejects non-finite authored curve/position values. */\nexport function finite(value)\n{\n if (!Number.isFinite(value))\n {\n throw new RangeError(\"non-finite Wwise object value\");\n }\n\n return value;\n}\n\nfunction ReadInitialFx(cursor)\n{\n const overrideParentRaw = cursor.u8();\n const count = cursor.u8();\n const bypassAllRaw = count ? cursor.u8() : 0;\n const slots = [];\n\n boundedCount(count, cursor.remaining, 6, 255);\n\n for (let index = 0; index < count; index++)\n {\n const slot = cursor.u8();\n const fxId = cursor.u32();\n const flags = cursor.u8();\n\n slots.push({\n index: slot,\n fxId,\n flags,\n bypass: Boolean(flags & 0x01),\n shareSet: Boolean(flags & 0x02),\n rendered: Boolean(flags & 0x04),\n });\n }\n\n return {\n overrideParentRaw,\n overrideParent: Boolean(overrideParentRaw),\n bypassAllRaw,\n bypassAll: Boolean(bypassAllRaw),\n slots,\n };\n}\n\nfunction ReadInitialMetadata(cursor)\n{\n const overrideParentRaw = cursor.u8();\n const count = cursor.u8();\n const slots = [];\n\n boundedCount(count, cursor.remaining, 6, 255);\n\n for (let index = 0; index < count; index++)\n {\n const slot = cursor.u8();\n const fxId = cursor.u32();\n const shareSetRaw = cursor.u8();\n\n slots.push({\n index: slot,\n fxId,\n shareSetRaw,\n shareSet: Boolean(shareSetRaw),\n });\n }\n\n return {\n overrideParentRaw,\n overrideParent: Boolean(overrideParentRaw),\n slots,\n };\n}\n\nfunction ReadPriority(cursor)\n{\n const flags = cursor.u8();\n\n return {\n flags,\n overrideParent: Boolean(flags & 0x01),\n applyDistanceFactor: Boolean(flags & 0x02),\n overrideMidiEventsBehavior: Boolean(flags & 0x04),\n overrideMidiNoteTracking: Boolean(flags & 0x08),\n enableMidiNoteTracking: Boolean(flags & 0x10),\n midiBreakLoopOnNoteOff: Boolean(flags & 0x20),\n };\n}\n\nfunction ReadInitialProperties(cursor)\n{\n const propertyCount = boundedCount(\n cursor.u8(),\n cursor.remaining,\n 5,\n 255,\n );\n const propertyIds = [];\n\n for (let index = 0; index < propertyCount; index++)\n {\n propertyIds.push(cursor.u8());\n }\n\n const properties = propertyIds.map((id) =>\n {\n const rawValue = cursor.u32();\n\n if (id === LOOP_COUNT_PROPERTY_ID)\n {\n return {\n id,\n rawValue,\n valueType: \"loop-count\",\n value: rawValue,\n };\n }\n if (id === ATTENUATION_PROPERTY_ID)\n {\n return {\n id,\n rawValue,\n valueType: \"id\",\n value: rawValue,\n };\n }\n\n return {\n id,\n rawValue,\n valueType: \"union\",\n floatValue: FloatFromBits(rawValue),\n };\n });\n const rangeCount = boundedCount(\n cursor.u8(),\n cursor.remaining,\n 9,\n 255,\n );\n const rangeIds = [];\n\n for (let index = 0; index < rangeCount; index++)\n {\n rangeIds.push(cursor.u8());\n }\n\n const ranges = rangeIds.map((id) =>\n {\n const minRaw = cursor.u32();\n const maxRaw = cursor.u32();\n\n return {\n id,\n minRaw,\n maxRaw,\n minFloat: FloatFromBits(minRaw),\n maxFloat: FloatFromBits(maxRaw),\n };\n });\n const attenuationProperties = properties.filter(\n property => property.id === ATTENUATION_PROPERTY_ID,\n );\n const loopCountProperties = properties.filter(\n property => property.id === LOOP_COUNT_PROPERTY_ID,\n );\n\n if (attenuationProperties.length > 1)\n {\n throw new RangeError(\"duplicate v150 Wwise attenuation property\");\n }\n if (loopCountProperties.length > 1)\n {\n throw new RangeError(\"duplicate v150 Wwise loop-count property\");\n }\n\n const loopCount = loopCountProperties[0]?.value ?? null;\n\n if (loopCount !== null && loopCount > 32767)\n {\n throw new RangeError(\"invalid v150 Wwise loop count\");\n }\n\n return {\n properties,\n ranges,\n attenuationId: attenuationProperties[0]?.value ?? null,\n // Wwise serializes this property only when looping is enabled.\n // Zero means infinite; positive values are finite authored repeats.\n loopCount,\n };\n}\n\n/**\n * Reads the v150 positioning block shared by NodeBase and bus records.\n *\n * @param {WwiseCursor} cursor Bounded object cursor.\n * @returns {object} Exact positioning flags and optional automation.\n */\nexport function readPositioning(cursor)\n{\n const flags = cursor.u8();\n const overrideParent = Boolean(flags & 0x01);\n const listenerRelative = Boolean(flags & 0x02);\n const pannerType = (flags >>> 2) & 0x03;\n const positionType = (flags >>> 5) & 0x03;\n let spatial = null;\n let automation = null;\n\n if (positionType === 3)\n {\n throw new RangeError(\"invalid v150 Wwise position type\");\n }\n\n if (overrideParent && listenerRelative)\n {\n const spatialFlags = cursor.u8();\n\n spatial = {\n flags: spatialFlags,\n mode: spatialFlags & 0x03,\n enableAttenuation: Boolean(spatialFlags & 0x08),\n holdEmitterPositionOrientation: Boolean(spatialFlags & 0x10),\n holdListenerOrientation: Boolean(spatialFlags & 0x20),\n enableDiffraction: Boolean(spatialFlags & 0x40),\n };\n\n if (positionType !== 0)\n {\n automation = ReadAutomation(cursor);\n }\n }\n\n return {\n flags,\n overrideParent,\n listenerRelative,\n pannerType,\n positionType,\n spatial,\n automation,\n };\n}\n\nfunction ReadAutomation(cursor)\n{\n const pathMode = cursor.u8();\n const transitionTime = cursor.s32();\n const vertexCount = boundedCount(\n cursor.u32(),\n cursor.remaining,\n 16,\n 65535,\n );\n const vertices = [];\n\n for (let index = 0; index < vertexCount; index++)\n {\n vertices.push({\n x: finite(cursor.f32()),\n y: finite(cursor.f32()),\n z: finite(cursor.f32()),\n duration: cursor.s32(),\n });\n }\n\n const playlistCount = boundedCount(\n cursor.u32(),\n cursor.remaining,\n 20,\n 65535,\n );\n const playlist = [];\n\n for (let index = 0; index < playlistCount; index++)\n {\n playlist.push({\n verticesOffset: cursor.u32(),\n numVertices: cursor.u32(),\n });\n }\n\n const ranges = [];\n\n for (let index = 0; index < playlistCount; index++)\n {\n ranges.push({\n x: finite(cursor.f32()),\n y: finite(cursor.f32()),\n z: finite(cursor.f32()),\n });\n }\n\n return {\n pathMode,\n transitionTime,\n vertices,\n playlist,\n ranges,\n };\n}\n\n/**\n * Reads the v150 auxiliary-send block shared by NodeBase and bus records.\n *\n * @param {WwiseCursor} cursor Bounded object cursor.\n * @returns {object} Exact auxiliary flags and target identities.\n */\nexport function readAux(cursor)\n{\n const flags = cursor.u8();\n const hasAux = Boolean(flags & 0x08);\n const auxIds = [];\n\n if (hasAux)\n {\n for (let index = 0; index < 4; index++)\n {\n auxIds.push(cursor.u32());\n }\n }\n\n return {\n flags,\n overrideUserAux: Boolean(flags & 0x04),\n hasAux,\n overrideReflectionsAux: Boolean(flags & 0x10),\n auxIds,\n reflectionsAuxBusId: cursor.u32(),\n };\n}\n\nfunction ReadAdvanced(cursor)\n{\n const flags = cursor.u8();\n const virtualQueueBehavior = cursor.u8();\n const maxInstances = cursor.u16();\n const belowThresholdBehavior = cursor.u8();\n const hdrFlags = cursor.u8();\n\n if (virtualQueueBehavior > 2 || belowThresholdBehavior > 3)\n {\n throw new RangeError(\"invalid v150 Wwise advanced setting\");\n }\n\n return {\n flags,\n killNewest: Boolean(flags & 0x01),\n useVirtualBehavior: Boolean(flags & 0x02),\n ignoreParentMaxInstances: Boolean(flags & 0x08),\n overrideVirtualVoiceBehavior: Boolean(flags & 0x10),\n virtualQueueBehavior,\n maxInstances,\n belowThresholdBehavior,\n hdrFlags,\n overrideHdrEnvelope: Boolean(hdrFlags & 0x01),\n overrideAnalysis: Boolean(hdrFlags & 0x02),\n normalizeLoudness: Boolean(hdrFlags & 0x04),\n enableEnvelope: Boolean(hdrFlags & 0x08),\n };\n}\n\n/**\n * Reads one v150 state-aware property and group chunk.\n *\n * @param {WwiseCursor} cursor Bounded object cursor.\n * @returns {object} Exact state property declarations and values.\n */\nexport function readStateChunk(cursor)\n{\n const propertyCount = boundedCount(\n cursor.variable(),\n cursor.remaining,\n 3,\n 4096,\n );\n const properties = [];\n\n for (let index = 0; index < propertyCount; index++)\n {\n const propertyId = cursor.variable();\n const accumulation = cursor.u8();\n const inDbRaw = cursor.u8();\n\n if (accumulation > 6 || inDbRaw > 1)\n {\n throw new RangeError(\"invalid v150 Wwise state property\");\n }\n\n properties.push({\n propertyId,\n accumulation,\n inDbRaw,\n inDb: Boolean(inDbRaw),\n });\n }\n\n const groupCount = boundedCount(\n cursor.variable(),\n cursor.remaining,\n 6,\n 4096,\n );\n const groups = [];\n\n for (let index = 0; index < groupCount; index++)\n {\n const groupId = cursor.u32();\n const syncType = cursor.u8();\n const stateCount = boundedCount(\n cursor.variable(),\n cursor.remaining,\n 6,\n 4096,\n );\n const states = [];\n\n if (syncType > 9)\n {\n throw new RangeError(\"invalid v150 Wwise state sync type\");\n }\n\n for (let stateIndex = 0; stateIndex < stateCount; stateIndex++)\n {\n const stateId = cursor.u32();\n const valueCount = boundedCount(\n cursor.u16(),\n cursor.remaining,\n 6,\n 65535,\n );\n const propertyIds = [];\n\n for (let valueIndex = 0; valueIndex < valueCount; valueIndex++)\n {\n propertyIds.push(cursor.u16());\n }\n\n const values = propertyIds.map(propertyId => ({\n propertyId,\n value: finite(cursor.f32()),\n }));\n\n states.push({ stateId, values });\n }\n\n groups.push({ groupId, syncType, states });\n }\n\n return { properties, groups };\n}\n\nfunction FloatFromBits(value)\n{\n const bytes = new ArrayBuffer(4);\n const view = new DataView(bytes);\n\n view.setUint32(0, value, true);\n return view.getFloat32(0, true);\n}\n\n// Re-exported because busNodes, sfxNodes and effectNodes import the cursor\n// from this module; the class itself now lives beside the primitive it uses.\nexport { WwiseCursor };\n"],"names":["WWISE_NODE_BASE_VERSION","ATTENUATION_PROPERTY_ID","LOOP_COUNT_PROPERTY_ID","VALID_CURVE_SCALING","Set","readNodeBase","cursor","fx","ReadInitialFx","metadata","ReadInitialMetadata","overrideBusId","u32","directParentId","priority","ReadPriority","properties","ranges","attenuationId","loopCount","ReadInitialProperties","positioning","readPositioning","aux","readAux","advanced","ReadAdvanced","state","readStateChunk","rtpcs","readInitialRtpcs","parseNodeBaseRange","bytes","start","end","bankVersion","Uint8Array","Number","WwiseCursor","nodeBase","at","count","boundedCount","u16","remaining","index","push","readInitialRtpc","controlId","controlType","u8","accumulation","parameterId","variable","curveId","scaling","pointCount","has","RangeError","points","readCurvePoints","from","finite","f32","to","interpolation","value","stride","maximum","isSafeInteger","isFinite","overrideParentRaw","bypassAllRaw","slots","slot","fxId","flags","bypass","Boolean","shareSet","rendered","overrideParent","bypassAll","shareSetRaw","applyDistanceFactor","overrideMidiEventsBehavior","overrideMidiNoteTracking","enableMidiNoteTracking","midiBreakLoopOnNoteOff","propertyCount","propertyIds","map","id","rawValue","valueType","floatValue","FloatFromBits","rangeCount","rangeIds","minRaw","maxRaw","minFloat","maxFloat","attenuationProperties","filter","property","loopCountProperties","length","listenerRelative","pannerType","positionType","spatial","automation","spatialFlags","mode","enableAttenuation","holdEmitterPositionOrientation","holdListenerOrientation","enableDiffraction","ReadAutomation","pathMode","transitionTime","s32","vertexCount","vertices","x","y","z","duration","playlistCount","playlist","verticesOffset","numVertices","hasAux","auxIds","overrideUserAux","overrideReflectionsAux","reflectionsAuxBusId","virtualQueueBehavior","maxInstances","belowThresholdBehavior","hdrFlags","killNewest","useVirtualBehavior","ignoreParentMaxInstances","overrideVirtualVoiceBehavior","overrideHdrEnvelope","overrideAnalysis","normalizeLoudness","enableEnvelope","propertyId","inDbRaw","inDb","groupCount","groups","groupId","syncType","stateCount","states","stateIndex","stateId","valueCount","valueIndex","values","ArrayBuffer","view","DataView","setUint32","getFloat32"],"mappings":";;AACA;AACA;AACA;;AAGO,MAAMA,uBAAuB,GAAG;AAEvC,MAAMC,uBAAuB,GAAG,IAAI;AACpC,MAAMC,sBAAsB,GAAG,IAAI;AACnC,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;;AAGnD;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,MAAM,EACnC;AACI,EAAA,MAAMC,EAAE,GAAGC,aAAa,CAACF,MAAM,CAAC;AAChC,EAAA,MAAMG,QAAQ,GAAGC,mBAAmB,CAACJ,MAAM,CAAC;AAC5C,EAAA,MAAMK,aAAa,GAAGL,MAAM,CAACM,GAAG,EAAE;AAClC,EAAA,MAAMC,cAAc,GAAGP,MAAM,CAACM,GAAG,EAAE;AACnC,EAAA,MAAME,QAAQ,GAAGC,YAAY,CAACT,MAAM,CAAC;EACrC,MAAM;IACFU,UAAU;IACVC,MAAM;IACNC,aAAa;AACbC,IAAAA;AACJ,GAAC,GAAGC,qBAAqB,CAACd,MAAM,CAAC;AACjC,EAAA,MAAMe,WAAW,GAAGC,eAAe,CAAChB,MAAM,CAAC;AAC3C,EAAA,MAAMiB,GAAG,GAAGC,OAAO,CAAClB,MAAM,CAAC;AAC3B,EAAA,MAAMmB,QAAQ,GAAGC,YAAY,CAACpB,MAAM,CAAC;AACrC,EAAA,MAAMqB,KAAK,GAAGC,cAAc,CAACtB,MAAM,CAAC;AACpC,EAAA,MAAMuB,KAAK,GAAGC,gBAAgB,CAACxB,MAAM,CAAC;EAEtC,OAAO;IACHC,EAAE;IACFE,QAAQ;IACRE,aAAa;IACbE,cAAc;IACdC,QAAQ;IACRE,UAAU;IACVC,MAAM;IACNC,aAAa;IACbC,SAAS;IACTE,WAAW;IACXE,GAAG;IACHE,QAAQ;IACRE,KAAK;AACLE,IAAAA;GACH;AACL;;AAEA;AACO,SAASE,kBAAkBA,CAC9BC,KAAK,EACLC,KAAK,EACLC,GAAG,EACH;AAAEC,EAAAA,WAAW,GAAGnC;AAAwB,CAAC,GAAG,EAAE,EAElD;AACI,EAAA,IAAI,EAAEgC,KAAK,YAAYI,UAAU,CAAC,IAC3BC,MAAM,CAACF,WAAW,CAAC,KAAKnC,uBAAuB,EACtD;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,IACA;IACI,MAAMM,MAAM,GAAG,IAAIgC,WAAW,CAACN,KAAK,EAAEC,KAAK,EAAEC,GAAG,CAAC;AACjD,IAAA,MAAMK,QAAQ,GAAGlC,YAAY,CAACC,MAAM,CAAC;IAErC,OAAOA,MAAM,CAACkC,EAAE,KAAKN,GAAG,GAAGK,QAAQ,GAAG,IAAI;AAC9C,EAAA,CAAC,CACD,MACA;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AACJ;;AAEA;AACO,SAAST,gBAAgBA,CAACxB,MAAM,EACvC;AACI,EAAA,MAAMmC,KAAK,GAAGC,YAAY,CAACpC,MAAM,CAACqC,GAAG,EAAE,EAAErC,MAAM,CAACsC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC;EACpE,MAAMf,KAAK,GAAG,EAAE;EAEhB,KAAK,IAAIgB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGJ,KAAK,EAAEI,KAAK,EAAE,EAC1C;AACIhB,IAAAA,KAAK,CAACiB,IAAI,CAACC,eAAe,CAACzC,MAAM,CAAC,CAAC;AACvC,EAAA;AAEA,EAAA,OAAOuB,KAAK;AAChB;;AAEA;AACO,SAASkB,eAAeA,CAACzC,MAAM,EACtC;AACI,EAAA,MAAM0C,SAAS,GAAG1C,MAAM,CAACM,GAAG,EAAE;AAC9B,EAAA,MAAMqC,WAAW,GAAG3C,MAAM,CAAC4C,EAAE,EAAE;AAC/B,EAAA,MAAMC,YAAY,GAAG7C,MAAM,CAAC4C,EAAE,EAAE;AAChC,EAAA,MAAME,WAAW,GAAG9C,MAAM,CAAC+C,QAAQ,EAAE;AACrC,EAAA,MAAMC,OAAO,GAAGhD,MAAM,CAACM,GAAG,EAAE;AAC5B,EAAA,MAAM2C,OAAO,GAAGjD,MAAM,CAAC4C,EAAE,EAAE;AAC3B,EAAA,MAAMM,UAAU,GAAGd,YAAY,CAC3BpC,MAAM,CAACqC,GAAG,EAAE,EACZrC,MAAM,CAACsC,SAAS,EAChB,EAAE,EACF,KACJ,CAAC;AAED,EAAA,IAAIK,WAAW,GAAG,CAAC,IACZE,YAAY,GAAG,CAAC,IAChB,CAAChD,mBAAmB,CAACsD,GAAG,CAACF,OAAO,CAAC,EACxC;AACI,IAAA,MAAM,IAAIG,UAAU,CAAC,2BAA2B,CAAC;AACrD,EAAA;EAEA,OAAO;IACHV,SAAS;IACTC,WAAW;IACXE,YAAY;IACZC,WAAW;IACXE,OAAO;IACPC,OAAO;AACPI,IAAAA,MAAM,EAAEC,eAAe,CAACtD,MAAM,EAAEkD,UAAU;GAC7C;AACL;;AAEA;AACO,SAASI,eAAeA,CAACtD,MAAM,EAAEmC,KAAK,EAC7C;EACI,MAAMkB,MAAM,GAAG,EAAE;EAEjB,KAAK,IAAId,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGJ,KAAK,EAAEI,KAAK,EAAE,EAC1C;IACI,MAAMgB,IAAI,GAAGC,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;IACjC,MAAMC,EAAE,GAAGF,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;AAC/B,IAAA,MAAME,aAAa,GAAG3D,MAAM,CAACM,GAAG,EAAE;IAElC,IAAIqD,aAAa,GAAG,CAAC,EACrB;AACI,MAAA,MAAM,IAAIP,UAAU,CAAC,6BAA6B,CAAC;AACvD,IAAA;IAEAC,MAAM,CAACb,IAAI,CAAC;MAAEe,IAAI;MAAEG,EAAE;AAAEC,MAAAA;AAAc,KAAC,CAAC;AAC5C,EAAA;AAEA,EAAA,OAAON,MAAM;AACjB;;AAEA;AACO,SAASjB,YAAYA,CAACwB,KAAK,EAAEtB,SAAS,EAAEuB,MAAM,EAAEC,OAAO,EAC9D;EACI,IAAI,CAAC/B,MAAM,CAACgC,aAAa,CAACH,KAAK,CAAC,IACzBA,KAAK,GAAG,CAAC,IACTA,KAAK,GAAGE,OAAO,IACfF,KAAK,GAAGC,MAAM,GAAGvB,SAAS,EACjC;AACI,IAAA,MAAM,IAAIc,UAAU,CAAC,4BAA4B,CAAC;AACtD,EAAA;AAEA,EAAA,OAAOQ,KAAK;AAChB;;AAEA;AACO,SAASJ,MAAMA,CAACI,KAAK,EAC5B;AACI,EAAA,IAAI,CAAC7B,MAAM,CAACiC,QAAQ,CAACJ,KAAK,CAAC,EAC3B;AACI,IAAA,MAAM,IAAIR,UAAU,CAAC,+BAA+B,CAAC;AACzD,EAAA;AAEA,EAAA,OAAOQ,KAAK;AAChB;AAEA,SAAS1D,aAAaA,CAACF,MAAM,EAC7B;AACI,EAAA,MAAMiE,iBAAiB,GAAGjE,MAAM,CAAC4C,EAAE,EAAE;AACrC,EAAA,MAAMT,KAAK,GAAGnC,MAAM,CAAC4C,EAAE,EAAE;EACzB,MAAMsB,YAAY,GAAG/B,KAAK,GAAGnC,MAAM,CAAC4C,EAAE,EAAE,GAAG,CAAC;EAC5C,MAAMuB,KAAK,GAAG,EAAE;EAEhB/B,YAAY,CAACD,KAAK,EAAEnC,MAAM,CAACsC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;EAE7C,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGJ,KAAK,EAAEI,KAAK,EAAE,EAC1C;AACI,IAAA,MAAM6B,IAAI,GAAGpE,MAAM,CAAC4C,EAAE,EAAE;AACxB,IAAA,MAAMyB,IAAI,GAAGrE,MAAM,CAACM,GAAG,EAAE;AACzB,IAAA,MAAMgE,KAAK,GAAGtE,MAAM,CAAC4C,EAAE,EAAE;IAEzBuB,KAAK,CAAC3B,IAAI,CAAC;AACPD,MAAAA,KAAK,EAAE6B,IAAI;MACXC,IAAI;MACJC,KAAK;AACLC,MAAAA,MAAM,EAAEC,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC7BG,MAAAA,QAAQ,EAAED,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC/BI,MAAAA,QAAQ,EAAEF,OAAO,CAACF,KAAK,GAAG,IAAI;AAClC,KAAC,CAAC;AACN,EAAA;EAEA,OAAO;IACHL,iBAAiB;AACjBU,IAAAA,cAAc,EAAEH,OAAO,CAACP,iBAAiB,CAAC;IAC1CC,YAAY;AACZU,IAAAA,SAAS,EAAEJ,OAAO,CAACN,YAAY,CAAC;AAChCC,IAAAA;GACH;AACL;AAEA,SAAS/D,mBAAmBA,CAACJ,MAAM,EACnC;AACI,EAAA,MAAMiE,iBAAiB,GAAGjE,MAAM,CAAC4C,EAAE,EAAE;AACrC,EAAA,MAAMT,KAAK,GAAGnC,MAAM,CAAC4C,EAAE,EAAE;EACzB,MAAMuB,KAAK,GAAG,EAAE;EAEhB/B,YAAY,CAACD,KAAK,EAAEnC,MAAM,CAACsC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;EAE7C,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGJ,KAAK,EAAEI,KAAK,EAAE,EAC1C;AACI,IAAA,MAAM6B,IAAI,GAAGpE,MAAM,CAAC4C,EAAE,EAAE;AACxB,IAAA,MAAMyB,IAAI,GAAGrE,MAAM,CAACM,GAAG,EAAE;AACzB,IAAA,MAAMuE,WAAW,GAAG7E,MAAM,CAAC4C,EAAE,EAAE;IAE/BuB,KAAK,CAAC3B,IAAI,CAAC;AACPD,MAAAA,KAAK,EAAE6B,IAAI;MACXC,IAAI;MACJQ,WAAW;MACXJ,QAAQ,EAAED,OAAO,CAACK,WAAW;AACjC,KAAC,CAAC;AACN,EAAA;EAEA,OAAO;IACHZ,iBAAiB;AACjBU,IAAAA,cAAc,EAAEH,OAAO,CAACP,iBAAiB,CAAC;AAC1CE,IAAAA;GACH;AACL;AAEA,SAAS1D,YAAYA,CAACT,MAAM,EAC5B;AACI,EAAA,MAAMsE,KAAK,GAAGtE,MAAM,CAAC4C,EAAE,EAAE;EAEzB,OAAO;IACH0B,KAAK;AACLK,IAAAA,cAAc,EAAEH,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AACrCQ,IAAAA,mBAAmB,EAAEN,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC1CS,IAAAA,0BAA0B,EAAEP,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AACjDU,IAAAA,wBAAwB,EAAER,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC/CW,IAAAA,sBAAsB,EAAET,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC7CY,IAAAA,sBAAsB,EAAEV,OAAO,CAACF,KAAK,GAAG,IAAI;GAC/C;AACL;AAEA,SAASxD,qBAAqBA,CAACd,MAAM,EACrC;AACI,EAAA,MAAMmF,aAAa,GAAG/C,YAAY,CAC9BpC,MAAM,CAAC4C,EAAE,EAAE,EACX5C,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,GACJ,CAAC;EACD,MAAM8C,WAAW,GAAG,EAAE;EAEtB,KAAK,IAAI7C,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG4C,aAAa,EAAE5C,KAAK,EAAE,EAClD;IACI6C,WAAW,CAAC5C,IAAI,CAACxC,MAAM,CAAC4C,EAAE,EAAE,CAAC;AACjC,EAAA;AAEA,EAAA,MAAMlC,UAAU,GAAG0E,WAAW,CAACC,GAAG,CAAEC,EAAE,IACtC;AACI,IAAA,MAAMC,QAAQ,GAAGvF,MAAM,CAACM,GAAG,EAAE;IAE7B,IAAIgF,EAAE,KAAK1F,sBAAsB,EACjC;MACI,OAAO;QACH0F,EAAE;QACFC,QAAQ;AACRC,QAAAA,SAAS,EAAE,YAAY;AACvB5B,QAAAA,KAAK,EAAE2B;OACV;AACL,IAAA;IACA,IAAID,EAAE,KAAK3F,uBAAuB,EAClC;MACI,OAAO;QACH2F,EAAE;QACFC,QAAQ;AACRC,QAAAA,SAAS,EAAE,IAAI;AACf5B,QAAAA,KAAK,EAAE2B;OACV;AACL,IAAA;IAEA,OAAO;MACHD,EAAE;MACFC,QAAQ;AACRC,MAAAA,SAAS,EAAE,OAAO;MAClBC,UAAU,EAAEC,aAAa,CAACH,QAAQ;KACrC;AACL,EAAA,CAAC,CAAC;AACF,EAAA,MAAMI,UAAU,GAAGvD,YAAY,CAC3BpC,MAAM,CAAC4C,EAAE,EAAE,EACX5C,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,GACJ,CAAC;EACD,MAAMsD,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAIrD,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGoD,UAAU,EAAEpD,KAAK,EAAE,EAC/C;IACIqD,QAAQ,CAACpD,IAAI,CAACxC,MAAM,CAAC4C,EAAE,EAAE,CAAC;AAC9B,EAAA;AAEA,EAAA,MAAMjC,MAAM,GAAGiF,QAAQ,CAACP,GAAG,CAAEC,EAAE,IAC/B;AACI,IAAA,MAAMO,MAAM,GAAG7F,MAAM,CAACM,GAAG,EAAE;AAC3B,IAAA,MAAMwF,MAAM,GAAG9F,MAAM,CAACM,GAAG,EAAE;IAE3B,OAAO;MACHgF,EAAE;MACFO,MAAM;MACNC,MAAM;AACNC,MAAAA,QAAQ,EAAEL,aAAa,CAACG,MAAM,CAAC;MAC/BG,QAAQ,EAAEN,aAAa,CAACI,MAAM;KACjC;AACL,EAAA,CAAC,CAAC;AACF,EAAA,MAAMG,qBAAqB,GAAGvF,UAAU,CAACwF,MAAM,CAC3CC,QAAQ,IAAIA,QAAQ,CAACb,EAAE,KAAK3F,uBAChC,CAAC;AACD,EAAA,MAAMyG,mBAAmB,GAAG1F,UAAU,CAACwF,MAAM,CACzCC,QAAQ,IAAIA,QAAQ,CAACb,EAAE,KAAK1F,sBAChC,CAAC;AAED,EAAA,IAAIqG,qBAAqB,CAACI,MAAM,GAAG,CAAC,EACpC;AACI,IAAA,MAAM,IAAIjD,UAAU,CAAC,2CAA2C,CAAC;AACrE,EAAA;AACA,EAAA,IAAIgD,mBAAmB,CAACC,MAAM,GAAG,CAAC,EAClC;AACI,IAAA,MAAM,IAAIjD,UAAU,CAAC,0CAA0C,CAAC;AACpE,EAAA;EAEA,MAAMvC,SAAS,GAAGuF,mBAAmB,CAAC,CAAC,CAAC,EAAExC,KAAK,IAAI,IAAI;AAEvD,EAAA,IAAI/C,SAAS,KAAK,IAAI,IAAIA,SAAS,GAAG,KAAK,EAC3C;AACI,IAAA,MAAM,IAAIuC,UAAU,CAAC,+BAA+B,CAAC;AACzD,EAAA;EAEA,OAAO;IACH1C,UAAU;IACVC,MAAM;IACNC,aAAa,EAAEqF,qBAAqB,CAAC,CAAC,CAAC,EAAErC,KAAK,IAAI,IAAI;AACtD;AACA;AACA/C,IAAAA;GACH;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAAChB,MAAM,EACtC;AACI,EAAA,MAAMsE,KAAK,GAAGtE,MAAM,CAAC4C,EAAE,EAAE;AACzB,EAAA,MAAM+B,cAAc,GAAGH,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC5C,EAAA,MAAMgC,gBAAgB,GAAG9B,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC9C,EAAA,MAAMiC,UAAU,GAAIjC,KAAK,KAAK,CAAC,GAAI,IAAI;AACvC,EAAA,MAAMkC,YAAY,GAAIlC,KAAK,KAAK,CAAC,GAAI,IAAI;EACzC,IAAImC,OAAO,GAAG,IAAI;EAClB,IAAIC,UAAU,GAAG,IAAI;EAErB,IAAIF,YAAY,KAAK,CAAC,EACtB;AACI,IAAA,MAAM,IAAIpD,UAAU,CAAC,kCAAkC,CAAC;AAC5D,EAAA;EAEA,IAAIuB,cAAc,IAAI2B,gBAAgB,EACtC;AACI,IAAA,MAAMK,YAAY,GAAG3G,MAAM,CAAC4C,EAAE,EAAE;AAEhC6D,IAAAA,OAAO,GAAG;AACNnC,MAAAA,KAAK,EAAEqC,YAAY;MACnBC,IAAI,EAAED,YAAY,GAAG,IAAI;AACzBE,MAAAA,iBAAiB,EAAErC,OAAO,CAACmC,YAAY,GAAG,IAAI,CAAC;AAC/CG,MAAAA,8BAA8B,EAAEtC,OAAO,CAACmC,YAAY,GAAG,IAAI,CAAC;AAC5DI,MAAAA,uBAAuB,EAAEvC,OAAO,CAACmC,YAAY,GAAG,IAAI,CAAC;AACrDK,MAAAA,iBAAiB,EAAExC,OAAO,CAACmC,YAAY,GAAG,IAAI;KACjD;IAED,IAAIH,YAAY,KAAK,CAAC,EACtB;AACIE,MAAAA,UAAU,GAAGO,cAAc,CAACjH,MAAM,CAAC;AACvC,IAAA;AACJ,EAAA;EAEA,OAAO;IACHsE,KAAK;IACLK,cAAc;IACd2B,gBAAgB;IAChBC,UAAU;IACVC,YAAY;IACZC,OAAO;AACPC,IAAAA;GACH;AACL;AAEA,SAASO,cAAcA,CAACjH,MAAM,EAC9B;AACI,EAAA,MAAMkH,QAAQ,GAAGlH,MAAM,CAAC4C,EAAE,EAAE;AAC5B,EAAA,MAAMuE,cAAc,GAAGnH,MAAM,CAACoH,GAAG,EAAE;AACnC,EAAA,MAAMC,WAAW,GAAGjF,YAAY,CAC5BpC,MAAM,CAACM,GAAG,EAAE,EACZN,MAAM,CAACsC,SAAS,EAChB,EAAE,EACF,KACJ,CAAC;EACD,MAAMgF,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAI/E,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG8E,WAAW,EAAE9E,KAAK,EAAE,EAChD;IACI+E,QAAQ,CAAC9E,IAAI,CAAC;MACV+E,CAAC,EAAE/D,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;MACvB+D,CAAC,EAAEhE,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;MACvBgE,CAAC,EAAEjE,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;AACvBiE,MAAAA,QAAQ,EAAE1H,MAAM,CAACoH,GAAG;AACxB,KAAC,CAAC;AACN,EAAA;AAEA,EAAA,MAAMO,aAAa,GAAGvF,YAAY,CAC9BpC,MAAM,CAACM,GAAG,EAAE,EACZN,MAAM,CAACsC,SAAS,EAChB,EAAE,EACF,KACJ,CAAC;EACD,MAAMsF,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAIrF,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGoF,aAAa,EAAEpF,KAAK,EAAE,EAClD;IACIqF,QAAQ,CAACpF,IAAI,CAAC;AACVqF,MAAAA,cAAc,EAAE7H,MAAM,CAACM,GAAG,EAAE;AAC5BwH,MAAAA,WAAW,EAAE9H,MAAM,CAACM,GAAG;AAC3B,KAAC,CAAC;AACN,EAAA;EAEA,MAAMK,MAAM,GAAG,EAAE;EAEjB,KAAK,IAAI4B,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGoF,aAAa,EAAEpF,KAAK,EAAE,EAClD;IACI5B,MAAM,CAAC6B,IAAI,CAAC;MACR+E,CAAC,EAAE/D,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;MACvB+D,CAAC,EAAEhE,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE,CAAC;AACvBgE,MAAAA,CAAC,EAAEjE,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE;AAC1B,KAAC,CAAC;AACN,EAAA;EAEA,OAAO;IACHyD,QAAQ;IACRC,cAAc;IACdG,QAAQ;IACRM,QAAQ;AACRjH,IAAAA;GACH;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,OAAOA,CAAClB,MAAM,EAC9B;AACI,EAAA,MAAMsE,KAAK,GAAGtE,MAAM,CAAC4C,EAAE,EAAE;AACzB,EAAA,MAAMmF,MAAM,GAAGvD,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;EACpC,MAAM0D,MAAM,GAAG,EAAE;AAEjB,EAAA,IAAID,MAAM,EACV;IACI,KAAK,IAAIxF,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAE,EACtC;MACIyF,MAAM,CAACxF,IAAI,CAACxC,MAAM,CAACM,GAAG,EAAE,CAAC;AAC7B,IAAA;AACJ,EAAA;EAEA,OAAO;IACHgE,KAAK;AACL2D,IAAAA,eAAe,EAAEzD,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;IACtCyD,MAAM;AACNG,IAAAA,sBAAsB,EAAE1D,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;IAC7C0D,MAAM;AACNG,IAAAA,mBAAmB,EAAEnI,MAAM,CAACM,GAAG;GAClC;AACL;AAEA,SAASc,YAAYA,CAACpB,MAAM,EAC5B;AACI,EAAA,MAAMsE,KAAK,GAAGtE,MAAM,CAAC4C,EAAE,EAAE;AACzB,EAAA,MAAMwF,oBAAoB,GAAGpI,MAAM,CAAC4C,EAAE,EAAE;AACxC,EAAA,MAAMyF,YAAY,GAAGrI,MAAM,CAACqC,GAAG,EAAE;AACjC,EAAA,MAAMiG,sBAAsB,GAAGtI,MAAM,CAAC4C,EAAE,EAAE;AAC1C,EAAA,MAAM2F,QAAQ,GAAGvI,MAAM,CAAC4C,EAAE,EAAE;AAE5B,EAAA,IAAIwF,oBAAoB,GAAG,CAAC,IAAIE,sBAAsB,GAAG,CAAC,EAC1D;AACI,IAAA,MAAM,IAAIlF,UAAU,CAAC,qCAAqC,CAAC;AAC/D,EAAA;EAEA,OAAO;IACHkB,KAAK;AACLkE,IAAAA,UAAU,EAAEhE,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AACjCmE,IAAAA,kBAAkB,EAAEjE,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AACzCoE,IAAAA,wBAAwB,EAAElE,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;AAC/CqE,IAAAA,4BAA4B,EAAEnE,OAAO,CAACF,KAAK,GAAG,IAAI,CAAC;IACnD8D,oBAAoB;IACpBC,YAAY;IACZC,sBAAsB;IACtBC,QAAQ;AACRK,IAAAA,mBAAmB,EAAEpE,OAAO,CAAC+D,QAAQ,GAAG,IAAI,CAAC;AAC7CM,IAAAA,gBAAgB,EAAErE,OAAO,CAAC+D,QAAQ,GAAG,IAAI,CAAC;AAC1CO,IAAAA,iBAAiB,EAAEtE,OAAO,CAAC+D,QAAQ,GAAG,IAAI,CAAC;AAC3CQ,IAAAA,cAAc,EAAEvE,OAAO,CAAC+D,QAAQ,GAAG,IAAI;GAC1C;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASjH,cAAcA,CAACtB,MAAM,EACrC;AACI,EAAA,MAAMmF,aAAa,GAAG/C,YAAY,CAC9BpC,MAAM,CAAC+C,QAAQ,EAAE,EACjB/C,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;EACD,MAAM5B,UAAU,GAAG,EAAE;EAErB,KAAK,IAAI6B,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG4C,aAAa,EAAE5C,KAAK,EAAE,EAClD;AACI,IAAA,MAAMyG,UAAU,GAAGhJ,MAAM,CAAC+C,QAAQ,EAAE;AACpC,IAAA,MAAMF,YAAY,GAAG7C,MAAM,CAAC4C,EAAE,EAAE;AAChC,IAAA,MAAMqG,OAAO,GAAGjJ,MAAM,CAAC4C,EAAE,EAAE;AAE3B,IAAA,IAAIC,YAAY,GAAG,CAAC,IAAIoG,OAAO,GAAG,CAAC,EACnC;AACI,MAAA,MAAM,IAAI7F,UAAU,CAAC,mCAAmC,CAAC;AAC7D,IAAA;IAEA1C,UAAU,CAAC8B,IAAI,CAAC;MACZwG,UAAU;MACVnG,YAAY;MACZoG,OAAO;MACPC,IAAI,EAAE1E,OAAO,CAACyE,OAAO;AACzB,KAAC,CAAC;AACN,EAAA;AAEA,EAAA,MAAME,UAAU,GAAG/G,YAAY,CAC3BpC,MAAM,CAAC+C,QAAQ,EAAE,EACjB/C,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;EACD,MAAM8G,MAAM,GAAG,EAAE;EAEjB,KAAK,IAAI7G,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG4G,UAAU,EAAE5G,KAAK,EAAE,EAC/C;AACI,IAAA,MAAM8G,OAAO,GAAGrJ,MAAM,CAACM,GAAG,EAAE;AAC5B,IAAA,MAAMgJ,QAAQ,GAAGtJ,MAAM,CAAC4C,EAAE,EAAE;AAC5B,IAAA,MAAM2G,UAAU,GAAGnH,YAAY,CAC3BpC,MAAM,CAAC+C,QAAQ,EAAE,EACjB/C,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;IACD,MAAMkH,MAAM,GAAG,EAAE;IAEjB,IAAIF,QAAQ,GAAG,CAAC,EAChB;AACI,MAAA,MAAM,IAAIlG,UAAU,CAAC,oCAAoC,CAAC;AAC9D,IAAA;IAEA,KAAK,IAAIqG,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGF,UAAU,EAAEE,UAAU,EAAE,EAC9D;AACI,MAAA,MAAMC,OAAO,GAAG1J,MAAM,CAACM,GAAG,EAAE;AAC5B,MAAA,MAAMqJ,UAAU,GAAGvH,YAAY,CAC3BpC,MAAM,CAACqC,GAAG,EAAE,EACZrC,MAAM,CAACsC,SAAS,EAChB,CAAC,EACD,KACJ,CAAC;MACD,MAAM8C,WAAW,GAAG,EAAE;MAEtB,KAAK,IAAIwE,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGD,UAAU,EAAEC,UAAU,EAAE,EAC9D;QACIxE,WAAW,CAAC5C,IAAI,CAACxC,MAAM,CAACqC,GAAG,EAAE,CAAC;AAClC,MAAA;AAEA,MAAA,MAAMwH,MAAM,GAAGzE,WAAW,CAACC,GAAG,CAAC2D,UAAU,KAAK;QAC1CA,UAAU;AACVpF,QAAAA,KAAK,EAAEJ,MAAM,CAACxD,MAAM,CAACyD,GAAG,EAAE;AAC9B,OAAC,CAAC,CAAC;MAEH+F,MAAM,CAAChH,IAAI,CAAC;QAAEkH,OAAO;AAAEG,QAAAA;AAAO,OAAC,CAAC;AACpC,IAAA;IAEAT,MAAM,CAAC5G,IAAI,CAAC;MAAE6G,OAAO;MAAEC,QAAQ;AAAEE,MAAAA;AAAO,KAAC,CAAC;AAC9C,EAAA;EAEA,OAAO;IAAE9I,UAAU;AAAE0I,IAAAA;GAAQ;AACjC;AAEA,SAAS1D,aAAaA,CAAC9B,KAAK,EAC5B;AACI,EAAA,MAAMlC,KAAK,GAAG,IAAIoI,WAAW,CAAC,CAAC,CAAC;AAChC,EAAA,MAAMC,IAAI,GAAG,IAAIC,QAAQ,CAACtI,KAAK,CAAC;EAEhCqI,IAAI,CAACE,SAAS,CAAC,CAAC,EAAErG,KAAK,EAAE,IAAI,CAAC;AAC9B,EAAA,OAAOmG,IAAI,CAACG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;AACnC;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { WWISE_NODE_BASE_VERSION, parseNodeBaseRange,
|
|
1
|
+
import { WWISE_NODE_BASE_VERSION, parseNodeBaseRange, readNodeBase, boundedCount, finite, readInitialRtpcs, readCurvePoints, readInitialRtpc } from './nodeBase.js';
|
|
2
|
+
import { WwiseCursor } from './WwiseCursor.js';
|
|
2
3
|
|
|
3
4
|
// Wwise v150 authored-SFX node decoding. Like musicNodes.js, this interprets
|
|
4
5
|
// inspect() payload views outside the BNK read path and accepts a suffix only
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sfxNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/sfxNodes.js"],"sourcesContent":["// Wwise v150 authored-SFX node decoding. Like musicNodes.js, this interprets\r\n// inspect() payload views outside the BNK read path and accepts a suffix only\r\n// when one anchored candidate consumes the payload exactly. Common NodeBase\r\n// facts and non-playable hierarchy/attenuation objects stay separate from the\r\n// playback-node map.\r\n\r\nimport {\r\n WWISE_NODE_BASE_VERSION,\r\n WwiseCursor as SfxCursor,\r\n boundedCount as BoundedCount,\r\n finite as Finite,\r\n parseNodeBaseRange,\r\n readCurvePoints as ReadPoints,\r\n readInitialRtpc as ReadInitialRTPC,\r\n readInitialRtpcs,\r\n readNodeBase,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = WWISE_NODE_BASE_VERSION;\r\nconst SFX_CHILD_TYPES = new Set([ 2, 5, 6, 7, 9 ]);\r\nconst TYPE_NAMES = Object.freeze({\r\n 2: \"sound\",\r\n 5: \"random-sequence-container\",\r\n 6: \"switch-container\",\r\n 7: \"actor-mixer\",\r\n 9: \"blend-container\",\r\n 14: \"attenuation\",\r\n});\r\n\r\n/**\r\n * Decodes one v150 HIRC 5 Random/Sequence payload.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxRandomSequence(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindRandomSequence(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one v150 HIRC 6 Switch payload.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxSwitch(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindSwitch(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one v150 HIRC 9 Layer payload without lowering curve semantics.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxLayer(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindLayer(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one exact v150 HIRC 7 Actor-Mixer hierarchy object.\r\n *\r\n * Actor-Mixers carry inherited NodeBase facts and child identities, but are\r\n * not themselves playable container behavior.\r\n *\r\n * @returns {object|null} Typed hierarchy object, or null when invalid.\r\n */\r\nexport function parseSfxActorMixer(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindActorMixer(payload, bankVersion).node;\r\n}\r\n\r\n/**\r\n * Decodes one exact v150 HIRC 14 attenuation object without assigning curve\r\n * slots semantic names.\r\n *\r\n * @returns {object|null} Typed attenuation object, or null when invalid.\r\n */\r\nexport function parseSfxAttenuation(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindAttenuation(payload, bankVersion).node;\r\n}\r\n\r\n/**\r\n * Decodes typed SFX nodes, events, and actions across inspected v150 banks.\r\n *\r\n * Raw Wwise identities and semantics are preserved. Runtime schema lowering\r\n * and optional authoring-name enrichment belong to the runtime audio builder.\n */\r\nexport function sfxNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections)\r\n ? inspections\r\n : [ inspections ];\r\n const knownObjects = new Map();\r\n const duplicates = [];\r\n\r\n for (const inspection of banks)\r\n {\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (knownObjects.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: knownObjects.get(entry.id).bank,\r\n bank: inspection.source || \"\",\r\n });\r\n }\r\n knownObjects.set(entry.id, {\r\n ...entry,\r\n bank: inspection.source || \"\",\r\n });\r\n }\r\n }\r\n\r\n const nodes = new Map();\r\n const nodeBases = new Map();\r\n const actorMixers = new Map();\r\n const attenuations = new Map();\r\n const events = new Map();\r\n const actions = new Map();\r\n const failed = [];\r\n const nodeBaseFailed = [];\r\n const ambiguous = [];\r\n const unsupportedVersions = [];\r\n const parsedByType = {};\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const version = Number(inspection?.bankVersion) >>> 0;\r\n const bank = inspection?.source || \"\";\r\n\r\n if (version !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type === 4)\r\n {\r\n events.set(entry.id, {\r\n id: entry.id,\r\n type: \"event\",\r\n bank,\r\n actionIds: [ ...(entry.actionIds ?? []) ],\r\n });\r\n continue;\r\n }\r\n if (entry.type === 3)\r\n {\r\n actions.set(entry.id, {\r\n id: entry.id,\r\n type: \"event-action\",\r\n bank,\r\n actionType: entry.actionType,\r\n targetId: entry.targetId,\r\n action: entry.action ?? null,\r\n payload: entry.payload,\r\n });\r\n continue;\r\n }\r\n\r\n let result = null;\r\n\r\n if (entry.type === 2)\r\n {\r\n if (entry.pluginId === undefined\r\n || entry.sourceId === undefined)\r\n {\r\n result = { node: null, reason: \"missing typed sound fields\" };\r\n }\r\n else\r\n {\r\n result = {\r\n node: {\r\n type: \"sound\",\r\n pluginId: entry.pluginId,\r\n pluginType: entry.pluginType\r\n ?? (entry.pluginId & 0x0f),\r\n streamType: entry.streamType,\r\n sourceId: entry.sourceId,\r\n inMemoryMediaSize: entry.inMemoryMediaSize,\r\n },\r\n reason: \"\",\r\n };\r\n }\r\n }\r\n else if (entry.type === 5)\r\n {\r\n result = FindRandomSequence(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 6)\r\n {\r\n result = FindSwitch(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 7)\r\n {\r\n result = FindActorMixer(entry.payload, version);\r\n }\r\n else if (entry.type === 9)\r\n {\r\n result = FindLayer(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 14)\r\n {\r\n result = FindAttenuation(entry.payload, version);\r\n }\r\n else\r\n {\r\n continue;\r\n }\r\n\r\n if (!result.node)\r\n {\r\n const failure = {\r\n bank,\r\n version,\r\n type: TYPE_NAMES[entry.type],\r\n id: entry.id,\r\n reason: result.reason,\r\n };\r\n\r\n failed.push(failure);\r\n if (result.reason === \"ambiguous anchors\")\r\n {\r\n ambiguous.push(failure);\r\n }\r\n continue;\r\n }\r\n\r\n parsed++;\r\n parsedByType[result.node.type] = (\r\n parsedByType[result.node.type] ?? 0\r\n ) + 1;\r\n\r\n if (entry.type === 14)\r\n {\r\n attenuations.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n });\r\n continue;\r\n }\r\n\r\n if (entry.type === 7)\r\n {\r\n actorMixers.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n });\r\n nodeBases.set(entry.id, result.node.nodeBase);\r\n continue;\r\n }\r\n\r\n const node = {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n };\r\n const nodeBaseResult = ReadEntryNodeBase(\r\n entry,\r\n result,\r\n version,\r\n );\r\n\r\n nodes.set(entry.id, node);\r\n\r\n if (nodeBaseResult.nodeBase)\r\n {\r\n nodeBases.set(entry.id, nodeBaseResult.nodeBase);\r\n }\r\n else\r\n {\r\n nodeBaseFailed.push({\r\n bank,\r\n version,\r\n type: TYPE_NAMES[entry.type],\r\n id: entry.id,\r\n reason: nodeBaseResult.reason,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return {\r\n nodes,\r\n nodeBases,\r\n actorMixers,\r\n attenuations,\r\n events,\r\n actions,\r\n diagnostics: {\r\n parsed,\r\n parsedByType,\r\n failed,\r\n nodeBaseFailed,\r\n ambiguous,\r\n unsupportedVersions,\r\n duplicates,\r\n },\r\n };\r\n}\r\n\r\nfunction ReadEntryNodeBase(entry, result, bankVersion)\r\n{\r\n if (entry.type === 2)\r\n {\r\n const start = SoundNodeBaseOffset(entry);\r\n\r\n if (start === null)\r\n {\r\n return {\r\n nodeBase: null,\r\n reason: \"sound NodeBase offset is unavailable\",\r\n };\r\n }\r\n\r\n const nodeBase = parseNodeBaseRange(\r\n entry.payload,\r\n start,\r\n entry.payload.byteLength,\r\n { bankVersion },\r\n );\r\n\r\n return {\r\n nodeBase,\r\n reason: nodeBase\r\n ? \"\"\r\n : \"sound NodeBase did not consume its exact byte range\",\r\n };\r\n }\r\n\r\n if (result.anchor === undefined)\r\n {\r\n return {\r\n nodeBase: null,\r\n reason: \"container NodeBase anchor is unavailable\",\r\n };\r\n }\r\n\r\n const nodeBase = parseNodeBaseRange(\r\n entry.payload,\r\n 0,\r\n result.anchor,\r\n { bankVersion },\r\n );\r\n\r\n return {\r\n nodeBase,\r\n reason: nodeBase\r\n ? \"\"\r\n : \"container NodeBase did not consume its exact byte range\",\r\n };\r\n}\r\n\r\nfunction SoundNodeBaseOffset(entry)\r\n{\r\n const payload = entry?.payload;\r\n\r\n if (!(payload instanceof Uint8Array) || payload.byteLength < 14)\r\n {\r\n return null;\r\n }\r\n\r\n const pluginType = Number(\r\n entry.pluginType ?? (entry.pluginId & 0x0f),\r\n );\r\n\r\n if (pluginType !== 2)\r\n {\r\n return 14;\r\n }\r\n\r\n if (payload.byteLength < 18)\r\n {\r\n return null;\r\n }\r\n\r\n const view = new DataView(\r\n payload.buffer,\r\n payload.byteOffset,\r\n payload.byteLength,\r\n );\r\n const parameterSize = view.getUint32(14, true);\r\n const start = 18 + parameterSize;\r\n\r\n return Number.isSafeInteger(start) && start <= payload.byteLength\r\n ? start\r\n : null;\r\n}\r\n\r\nfunction FindActorMixer(payload, bankVersion)\r\n{\r\n return ParseExact(payload, bankVersion, (cursor) =>\r\n {\r\n const nodeBase = readNodeBase(cursor);\r\n const count = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const children = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n children.push(cursor.u32());\r\n }\r\n\r\n return {\r\n type: \"actor-mixer\",\r\n nodeBase,\r\n children,\r\n };\r\n });\r\n}\r\n\r\nfunction FindAttenuation(payload, bankVersion)\r\n{\r\n return ParseExact(payload, bankVersion, (cursor) =>\r\n {\r\n const heightSpreadRaw = cursor.u8();\r\n const coneFlags = cursor.u8();\r\n let cone = null;\r\n\r\n if (coneFlags & 0x01)\r\n {\r\n cone = {\r\n insideDegrees: Finite(cursor.f32()),\r\n outsideDegrees: Finite(cursor.f32()),\r\n outsideVolume: Finite(cursor.f32()),\r\n lowPass: Finite(cursor.f32()),\r\n highPass: Finite(cursor.f32()),\r\n };\r\n }\r\n\r\n const curveToUse = [];\r\n\r\n for (let index = 0; index < 19; index++)\r\n {\r\n curveToUse.push(cursor.s8());\r\n }\r\n\r\n const curveCount = BoundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 3,\r\n 19,\r\n );\r\n\r\n const curves = [];\r\n\r\n for (let index = 0; index < curveCount; index++)\r\n {\r\n const scaling = cursor.u8();\r\n const pointCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 12,\r\n 65535,\r\n );\r\n const rtpc = ReadInitialRTPCFromCurve(\r\n cursor,\r\n scaling,\r\n pointCount,\r\n );\r\n\r\n curves.push(rtpc);\r\n }\r\n\r\n return {\r\n type: \"attenuation\",\r\n heightSpreadRaw,\r\n heightSpread: Boolean(heightSpreadRaw),\r\n coneFlags,\r\n cone,\r\n curveToUse,\r\n curves,\r\n rtpcs: readInitialRtpcs(cursor),\r\n };\r\n });\r\n}\r\n\r\nfunction ReadInitialRTPCFromCurve(cursor, scaling, pointCount)\r\n{\r\n if (![ 0, 2, 3, 4 ].includes(scaling))\r\n {\r\n throw new RangeError(\"invalid attenuation curve scaling\");\r\n }\r\n\r\n return {\r\n scaling,\r\n points: ReadPoints(cursor, pointCount),\r\n };\r\n}\r\n\r\nfunction FindRandomSequence(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const loopCount = cursor.u16();\r\n const loopModMin = cursor.u16();\r\n const loopModMax = cursor.u16();\r\n const transitionTime = Finite(cursor.f32());\r\n const transitionTimeModMin = Finite(cursor.f32());\r\n const transitionTimeModMax = Finite(cursor.f32());\r\n const avoidRepeatCount = cursor.u16();\r\n const transitionMode = cursor.u8();\r\n const randomMode = cursor.u8();\r\n const containerMode = cursor.u8();\r\n const flags = cursor.u8();\r\n\r\n if (transitionMode > 5\r\n || randomMode > 1\r\n || containerMode > 1\r\n || (flags & ~0x1f))\r\n {\r\n throw new RangeError(\"invalid Random/Sequence enum\");\r\n }\r\n\r\n const children = ReadChildren(cursor, knownObjects);\r\n const playlistCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const childSet = new Set(children);\r\n const playlist = [];\r\n\r\n for (let index = 0; index < playlistCount; index++)\r\n {\r\n const playId = cursor.u32();\r\n const weight = cursor.s32();\r\n\r\n if (!childSet.has(playId) || weight < 0)\r\n {\r\n throw new RangeError(\"invalid Random/Sequence playlist\");\r\n }\r\n playlist.push({ playId, weight });\r\n }\r\n\r\n return {\r\n type: containerMode === 0 ? \"random\" : \"sequence\",\r\n loopCount,\r\n loopModMin,\r\n loopModMax,\r\n transitionTime,\r\n transitionTimeModMin,\r\n transitionTimeModMax,\r\n avoidRepeatCount,\r\n transitionMode,\r\n randomMode,\r\n usingWeight: Boolean(flags & 0x01),\r\n resetPlaylistEachPlay: Boolean(flags & 0x02),\r\n restartBackward: Boolean(flags & 0x04),\r\n continuous: Boolean(flags & 0x08),\r\n global: Boolean(flags & 0x10),\r\n children,\r\n playlist,\r\n };\r\n });\r\n}\r\n\r\nfunction FindSwitch(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const groupType = cursor.u8();\r\n const groupId = cursor.u32();\r\n const defaultValueId = cursor.u32();\r\n const continuousValidation = cursor.u8();\r\n\r\n if (groupType > 1 || continuousValidation > 1)\r\n {\r\n throw new RangeError(\"invalid Switch enum\");\r\n }\r\n\r\n const children = ReadChildren(cursor, knownObjects);\r\n const assignmentCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const assignments = [];\r\n\r\n for (let index = 0; index < assignmentCount; index++)\r\n {\r\n const valueId = cursor.u32();\r\n const itemCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const childIds = [];\r\n\r\n for (let item = 0; item < itemCount; item++)\r\n {\r\n const childId = cursor.u32();\r\n\r\n childIds.push(childId);\r\n }\r\n assignments.push({ valueId, childIds });\r\n }\r\n\r\n const parameterCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 14,\r\n 8192,\r\n );\r\n const parameters = [];\r\n\r\n for (let index = 0; index < parameterCount; index++)\r\n {\r\n const childId = cursor.u32();\r\n const flags1 = cursor.u8();\r\n const flags2 = cursor.u8();\r\n const onSwitchMode = flags2 & 0x07;\r\n\r\n if ((flags1 & ~0x03)\r\n || (flags2 & ~0x07)\r\n || onSwitchMode > 1)\r\n {\r\n throw new RangeError(\"invalid Switch parameter\");\r\n }\r\n parameters.push({\r\n childId,\r\n firstOnly: Boolean(flags1 & 0x01),\r\n continuePlayback: Boolean(flags1 & 0x02),\r\n onSwitchMode,\r\n fadeOutMs: cursor.s32(),\r\n fadeInMs: cursor.s32(),\r\n });\r\n }\r\n\r\n // Essential and partial banks may retain raw SwitchList and parameter\r\n // references to nodes that are not serialized in direct Children.\r\n // Consumers decide whether those referenced nodes are available.\r\n return {\r\n type: \"switch\",\r\n groupType,\r\n groupId,\r\n defaultValueId,\r\n continuousValidation: Boolean(continuousValidation),\r\n children,\r\n assignments,\r\n parameters,\r\n };\r\n });\r\n}\r\n\r\nfunction FindLayer(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const children = ReadChildren(cursor, knownObjects);\r\n const childSet = new Set(children);\r\n const layerCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 15,\r\n 1024,\r\n );\r\n const layers = [];\r\n\r\n for (let index = 0; index < layerCount; index++)\r\n {\r\n const layerId = cursor.u32();\r\n const initialRtpcCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 14,\r\n 4096,\r\n );\r\n const initialRtpcs = [];\r\n\r\n for (let rtpc = 0; rtpc < initialRtpcCount; rtpc++)\r\n {\r\n initialRtpcs.push(ReadInitialRTPC(cursor));\r\n }\r\n\r\n const controlId = cursor.u32();\r\n const controlType = cursor.u8();\r\n const associationCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const associations = [];\r\n\r\n if (controlType > 4)\r\n {\r\n throw new RangeError(\"invalid Layer control type\");\r\n }\r\n\r\n for (let association = 0;\r\n association < associationCount;\r\n association++)\r\n {\r\n const childId = cursor.u32();\r\n const pointCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 12,\r\n 65535,\r\n );\r\n\r\n if (!childSet.has(childId))\r\n {\r\n throw new RangeError(\"invalid Layer association child\");\r\n }\r\n associations.push({\r\n childId,\r\n points: ReadPoints(cursor, pointCount),\r\n });\r\n }\r\n\r\n layers.push({\r\n layerId,\r\n initialRtpcs,\r\n controlId,\r\n controlType,\r\n associations,\r\n });\r\n }\r\n\r\n const continuousValidation = cursor.u8();\r\n\r\n if (continuousValidation > 1)\r\n {\r\n throw new RangeError(\"invalid Layer validation mode\");\r\n }\r\n\r\n return {\r\n type: \"layer\",\r\n children,\r\n layers,\r\n continuousValidation: Boolean(continuousValidation),\r\n };\r\n });\r\n}\r\n\r\nfunction ReadChildren(cursor, knownObjects)\r\n{\r\n const count = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const children = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const id = cursor.u32();\r\n const type = KnownType(knownObjects.get(id));\r\n\r\n if (!SFX_CHILD_TYPES.has(type))\r\n {\r\n throw new RangeError(\"invalid SFX child identity\");\r\n }\r\n children.push(id);\r\n }\r\n return children;\r\n}\r\n\r\nfunction FindUnique(payload, bankVersion, parse)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION)\r\n {\r\n return { node: null, reason: \"unsupported bank version\" };\r\n }\r\n\r\n const candidates = [];\r\n\r\n for (let anchor = 0; anchor < payload.byteLength; anchor++)\r\n {\r\n try\r\n {\r\n const cursor = new SfxCursor(payload, anchor);\r\n const node = parse(cursor);\r\n\r\n if (cursor.at === payload.byteLength)\r\n {\r\n candidates.push({ node, anchor });\r\n }\r\n }\r\n catch\r\n {\r\n // This byte was not the exact type-tail anchor.\r\n }\r\n }\r\n\r\n if (candidates.length === 1)\r\n {\r\n return {\r\n node: candidates[0].node,\r\n anchor: candidates[0].anchor,\r\n reason: \"\",\r\n };\r\n }\r\n if (candidates.length > 1)\r\n {\r\n const exactNodeBase = candidates.filter(candidate =>\r\n parseNodeBaseRange(\r\n payload,\r\n 0,\r\n candidate.anchor,\r\n { bankVersion },\r\n ));\r\n\r\n if (exactNodeBase.length === 1)\r\n {\r\n return {\r\n node: exactNodeBase[0].node,\r\n anchor: exactNodeBase[0].anchor,\r\n reason: \"\",\r\n };\r\n }\r\n }\r\n return {\r\n node: null,\r\n reason: candidates.length ? \"ambiguous anchors\" : \"no exact anchor\",\r\n };\r\n}\r\n\r\nfunction ParseExact(payload, bankVersion, parse)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION)\r\n {\r\n return { node: null, reason: \"unsupported bank version\" };\r\n }\r\n\r\n try\r\n {\r\n const cursor = new SfxCursor(payload);\r\n const node = parse(cursor);\r\n\r\n return cursor.at === payload.byteLength\r\n ? { node, reason: \"\" }\r\n : { node: null, reason: \"trailing bytes\" };\r\n }\r\n catch (cause)\r\n {\r\n return {\r\n node: null,\r\n reason: cause instanceof Error\r\n ? cause.message\r\n : \"invalid object\",\r\n };\r\n }\r\n}\r\n\r\nfunction NormalizeKnownObjects(value)\r\n{\r\n if (value instanceof Map)\r\n {\r\n return value;\r\n }\r\n\r\n const map = new Map();\r\n\r\n for (const entry of value ?? [])\r\n {\r\n if (typeof entry === \"number\")\r\n {\r\n map.set(entry, { type: 2 });\r\n }\r\n else if (entry?.id !== undefined)\r\n {\r\n map.set(Number(entry.id) >>> 0, entry);\r\n }\r\n }\r\n return map;\r\n}\r\n\r\nfunction KnownType(value)\r\n{\r\n return typeof value === \"number\" ? value : value?.type;\r\n}\r\n"],"names":["SUPPORTED_VERSION","WWISE_NODE_BASE_VERSION","SFX_CHILD_TYPES","Set","TYPE_NAMES","Object","freeze","parseSfxRandomSequence","payload","knownObjects","bankVersion","FindRandomSequence","NormalizeKnownObjects","node","parseSfxSwitch","FindSwitch","parseSfxLayer","FindLayer","parseSfxActorMixer","FindActorMixer","parseSfxAttenuation","FindAttenuation","sfxNodesFromBanks","inspections","banks","Array","isArray","Map","duplicates","inspection","entry","hirc","has","id","push","previousBank","get","bank","source","set","nodes","nodeBases","actorMixers","attenuations","events","actions","failed","nodeBaseFailed","ambiguous","unsupportedVersions","parsedByType","parsed","version","Number","type","actionIds","actionType","targetId","action","result","pluginId","undefined","sourceId","reason","pluginType","streamType","inMemoryMediaSize","failure","nodeBase","nodeBaseResult","ReadEntryNodeBase","diagnostics","start","SoundNodeBaseOffset","parseNodeBaseRange","byteLength","anchor","Uint8Array","view","DataView","buffer","byteOffset","parameterSize","getUint32","isSafeInteger","ParseExact","cursor","readNodeBase","count","BoundedCount","u32","remaining","children","index","heightSpreadRaw","u8","coneFlags","cone","insideDegrees","Finite","f32","outsideDegrees","outsideVolume","lowPass","highPass","curveToUse","s8","curveCount","curves","scaling","pointCount","u16","rtpc","ReadInitialRTPCFromCurve","heightSpread","Boolean","rtpcs","readInitialRtpcs","includes","RangeError","points","ReadPoints","FindUnique","loopCount","loopModMin","loopModMax","transitionTime","transitionTimeModMin","transitionTimeModMax","avoidRepeatCount","transitionMode","randomMode","containerMode","flags","ReadChildren","playlistCount","childSet","playlist","playId","weight","s32","usingWeight","resetPlaylistEachPlay","restartBackward","continuous","global","groupType","groupId","defaultValueId","continuousValidation","assignmentCount","assignments","valueId","itemCount","childIds","item","childId","parameterCount","parameters","flags1","flags2","onSwitchMode","firstOnly","continuePlayback","fadeOutMs","fadeInMs","layerCount","layers","layerId","initialRtpcCount","initialRtpcs","ReadInitialRTPC","controlId","controlType","associationCount","associations","association","KnownType","parse","candidates","SfxCursor","at","length","exactNodeBase","filter","candidate","cause","Error","message","value","map"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAcA,MAAMA,iBAAiB,GAAGC,uBAAuB;AACjD,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AAClD,MAAMC,UAAU,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC7B,EAAA,CAAC,EAAE,OAAO;AACV,EAAA,CAAC,EAAE,2BAA2B;AAC9B,EAAA,CAAC,EAAE,kBAAkB;AACrB,EAAA,CAAC,EAAE,aAAa;AAChB,EAAA,CAAC,EAAE,iBAAiB;AACpB,EAAA,EAAE,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CAClCC,OAAO,EACPC,YAAY,EACZ;AAAEC,EAAAA,WAAW,GAAGV;AAAkB,CAAC,GAAG,EAAE,EAE5C;AACI,EAAA,OAAOW,kBAAkB,CACrBH,OAAO,EACPI,qBAAqB,CAACH,YAAY,CAAC,EACnCC,WACJ,CAAC,CAACG,IAAI;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAC1BN,OAAO,EACPC,YAAY,EACZ;AAAEC,EAAAA,WAAW,GAAGV;AAAkB,CAAC,GAAG,EAAE,EAE5C;AACI,EAAA,OAAOe,UAAU,CACbP,OAAO,EACPI,qBAAqB,CAACH,YAAY,CAAC,EACnCC,WACJ,CAAC,CAACG,IAAI;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,aAAaA,CACzBR,OAAO,EACPC,YAAY,EACZ;AAAEC,EAAAA,WAAW,GAAGV;AAAkB,CAAC,GAAG,EAAE,EAE5C;AACI,EAAA,OAAOiB,SAAS,CACZT,OAAO,EACPI,qBAAqB,CAACH,YAAY,CAAC,EACnCC,WACJ,CAAC,CAACG,IAAI;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,kBAAkBA,CAC9BV,OAAO,EACP;AAAEE,EAAAA,WAAW,GAAGV;AAAkB,CAAC,GAAG,EAAE,EAE5C;AACI,EAAA,OAAOmB,cAAc,CAACX,OAAO,EAAEE,WAAW,CAAC,CAACG,IAAI;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,mBAAmBA,CAC/BZ,OAAO,EACP;AAAEE,EAAAA,WAAW,GAAGV;AAAkB,CAAC,GAAG,EAAE,EAE5C;AACI,EAAA,OAAOqB,eAAe,CAACb,OAAO,EAAEE,WAAW,CAAC,CAACG,IAAI;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,iBAAiBA,CAACC,WAAW,EAC7C;AACI,EAAA,MAAMC,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,GAClCA,WAAW,GACX,CAAEA,WAAW,CAAE;AACrB,EAAA,MAAMd,YAAY,GAAG,IAAIkB,GAAG,EAAE;EAC9B,MAAMC,UAAU,GAAG,EAAE;AAErB,EAAA,KAAK,MAAMC,UAAU,IAAIL,KAAK,EAC9B;IACI,KAAK,MAAMM,KAAK,IAAID,UAAU,EAAEE,IAAI,IAAI,EAAE,EAC1C;MACI,IAAItB,YAAY,CAACuB,GAAG,CAACF,KAAK,CAACG,EAAE,CAAC,EAC9B;QACIL,UAAU,CAACM,IAAI,CAAC;UACZD,EAAE,EAAEH,KAAK,CAACG,EAAE;UACZE,YAAY,EAAE1B,YAAY,CAAC2B,GAAG,CAACN,KAAK,CAACG,EAAE,CAAC,CAACI,IAAI;AAC7CA,UAAAA,IAAI,EAAER,UAAU,CAACS,MAAM,IAAI;AAC/B,SAAC,CAAC;AACN,MAAA;AACA7B,MAAAA,YAAY,CAAC8B,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE;AACvB,QAAA,GAAGH,KAAK;AACRO,QAAAA,IAAI,EAAER,UAAU,CAACS,MAAM,IAAI;AAC/B,OAAC,CAAC;AACN,IAAA;AACJ,EAAA;AAEA,EAAA,MAAME,KAAK,GAAG,IAAIb,GAAG,EAAE;AACvB,EAAA,MAAMc,SAAS,GAAG,IAAId,GAAG,EAAE;AAC3B,EAAA,MAAMe,WAAW,GAAG,IAAIf,GAAG,EAAE;AAC7B,EAAA,MAAMgB,YAAY,GAAG,IAAIhB,GAAG,EAAE;AAC9B,EAAA,MAAMiB,MAAM,GAAG,IAAIjB,GAAG,EAAE;AACxB,EAAA,MAAMkB,OAAO,GAAG,IAAIlB,GAAG,EAAE;EACzB,MAAMmB,MAAM,GAAG,EAAE;EACjB,MAAMC,cAAc,GAAG,EAAE;EACzB,MAAMC,SAAS,GAAG,EAAE;EACpB,MAAMC,mBAAmB,GAAG,EAAE;EAC9B,MAAMC,YAAY,GAAG,EAAE;EACvB,IAAIC,MAAM,GAAG,CAAC;AAEd,EAAA,KAAK,MAAMtB,UAAU,IAAIL,KAAK,EAC9B;IACI,MAAM4B,OAAO,GAAGC,MAAM,CAACxB,UAAU,EAAEnB,WAAW,CAAC,KAAK,CAAC;AACrD,IAAA,MAAM2B,IAAI,GAAGR,UAAU,EAAES,MAAM,IAAI,EAAE;IAErC,IAAIc,OAAO,KAAKpD,iBAAiB,EACjC;MACIiD,mBAAmB,CAACf,IAAI,CAAC;QAAEG,IAAI;AAAEe,QAAAA;AAAQ,OAAC,CAAC;AAC3C,MAAA;AACJ,IAAA;IAEA,KAAK,MAAMtB,KAAK,IAAID,UAAU,EAAEE,IAAI,IAAI,EAAE,EAC1C;AACI,MAAA,IAAID,KAAK,CAACwB,IAAI,KAAK,CAAC,EACpB;AACIV,QAAAA,MAAM,CAACL,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE;UACjBA,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZqB,UAAAA,IAAI,EAAE,OAAO;UACbjB,IAAI;UACJkB,SAAS,EAAE,CAAE,IAAIzB,KAAK,CAACyB,SAAS,IAAI,EAAE,CAAC;AAC3C,SAAC,CAAC;AACF,QAAA;AACJ,MAAA;AACA,MAAA,IAAIzB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACpB;AACIT,QAAAA,OAAO,CAACN,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE;UAClBA,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZqB,UAAAA,IAAI,EAAE,cAAc;UACpBjB,IAAI;UACJmB,UAAU,EAAE1B,KAAK,CAAC0B,UAAU;UAC5BC,QAAQ,EAAE3B,KAAK,CAAC2B,QAAQ;AACxBC,UAAAA,MAAM,EAAE5B,KAAK,CAAC4B,MAAM,IAAI,IAAI;UAC5BlD,OAAO,EAAEsB,KAAK,CAACtB;AACnB,SAAC,CAAC;AACF,QAAA;AACJ,MAAA;MAEA,IAAImD,MAAM,GAAG,IAAI;AAEjB,MAAA,IAAI7B,KAAK,CAACwB,IAAI,KAAK,CAAC,EACpB;QACI,IAAIxB,KAAK,CAAC8B,QAAQ,KAAKC,SAAS,IACzB/B,KAAK,CAACgC,QAAQ,KAAKD,SAAS,EACnC;AACIF,UAAAA,MAAM,GAAG;AAAE9C,YAAAA,IAAI,EAAE,IAAI;AAAEkD,YAAAA,MAAM,EAAE;WAA8B;AACjE,QAAA,CAAC,MAED;AACIJ,UAAAA,MAAM,GAAG;AACL9C,YAAAA,IAAI,EAAE;AACFyC,cAAAA,IAAI,EAAE,OAAO;cACbM,QAAQ,EAAE9B,KAAK,CAAC8B,QAAQ;cACxBI,UAAU,EAAElC,KAAK,CAACkC,UAAU,IACpBlC,KAAK,CAAC8B,QAAQ,GAAG,IAAK;cAC9BK,UAAU,EAAEnC,KAAK,CAACmC,UAAU;cAC5BH,QAAQ,EAAEhC,KAAK,CAACgC,QAAQ;cACxBI,iBAAiB,EAAEpC,KAAK,CAACoC;aAC5B;AACDH,YAAAA,MAAM,EAAE;WACX;AACL,QAAA;AACJ,MAAA,CAAC,MACI,IAAIjC,KAAK,CAACwB,IAAI,KAAK,CAAC,EACzB;QACIK,MAAM,GAAGhD,kBAAkB,CACvBmB,KAAK,CAACtB,OAAO,EACbC,YAAY,EACZ2C,OACJ,CAAC;AACL,MAAA,CAAC,MACI,IAAItB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACzB;QACIK,MAAM,GAAG5C,UAAU,CACfe,KAAK,CAACtB,OAAO,EACbC,YAAY,EACZ2C,OACJ,CAAC;AACL,MAAA,CAAC,MACI,IAAItB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACzB;QACIK,MAAM,GAAGxC,cAAc,CAACW,KAAK,CAACtB,OAAO,EAAE4C,OAAO,CAAC;AACnD,MAAA,CAAC,MACI,IAAItB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACzB;QACIK,MAAM,GAAG1C,SAAS,CACda,KAAK,CAACtB,OAAO,EACbC,YAAY,EACZ2C,OACJ,CAAC;AACL,MAAA,CAAC,MACI,IAAItB,KAAK,CAACwB,IAAI,KAAK,EAAE,EAC1B;QACIK,MAAM,GAAGtC,eAAe,CAACS,KAAK,CAACtB,OAAO,EAAE4C,OAAO,CAAC;AACpD,MAAA,CAAC,MAED;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,IAAI,CAACO,MAAM,CAAC9C,IAAI,EAChB;AACI,QAAA,MAAMsD,OAAO,GAAG;UACZ9B,IAAI;UACJe,OAAO;AACPE,UAAAA,IAAI,EAAElD,UAAU,CAAC0B,KAAK,CAACwB,IAAI,CAAC;UAC5BrB,EAAE,EAAEH,KAAK,CAACG,EAAE;UACZ8B,MAAM,EAAEJ,MAAM,CAACI;SAClB;AAEDjB,QAAAA,MAAM,CAACZ,IAAI,CAACiC,OAAO,CAAC;AACpB,QAAA,IAAIR,MAAM,CAACI,MAAM,KAAK,mBAAmB,EACzC;AACIf,UAAAA,SAAS,CAACd,IAAI,CAACiC,OAAO,CAAC;AAC3B,QAAA;AACA,QAAA;AACJ,MAAA;AAEAhB,MAAAA,MAAM,EAAE;MACRD,YAAY,CAACS,MAAM,CAAC9C,IAAI,CAACyC,IAAI,CAAC,GAAG,CAC7BJ,YAAY,CAACS,MAAM,CAAC9C,IAAI,CAACyC,IAAI,CAAC,IAAI,CAAC,IACnC,CAAC;AAEL,MAAA,IAAIxB,KAAK,CAACwB,IAAI,KAAK,EAAE,EACrB;AACIX,QAAAA,YAAY,CAACJ,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE;UACvBA,EAAE,EAAEH,KAAK,CAACG,EAAE;UACZI,IAAI;AACJ,UAAA,GAAGsB,MAAM,CAAC9C;AACd,SAAC,CAAC;AACF,QAAA;AACJ,MAAA;AAEA,MAAA,IAAIiB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACpB;AACIZ,QAAAA,WAAW,CAACH,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE;UACtBA,EAAE,EAAEH,KAAK,CAACG,EAAE;UACZI,IAAI;AACJ,UAAA,GAAGsB,MAAM,CAAC9C;AACd,SAAC,CAAC;AACF4B,QAAAA,SAAS,CAACF,GAAG,CAACT,KAAK,CAACG,EAAE,EAAE0B,MAAM,CAAC9C,IAAI,CAACuD,QAAQ,CAAC;AAC7C,QAAA;AACJ,MAAA;AAEA,MAAA,MAAMvD,IAAI,GAAG;QACToB,EAAE,EAAEH,KAAK,CAACG,EAAE;QACZI,IAAI;AACJ,QAAA,GAAGsB,MAAM,CAAC9C;OACb;MACD,MAAMwD,cAAc,GAAGC,iBAAiB,CACpCxC,KAAK,EACL6B,MAAM,EACNP,OACJ,CAAC;MAEDZ,KAAK,CAACD,GAAG,CAACT,KAAK,CAACG,EAAE,EAAEpB,IAAI,CAAC;MAEzB,IAAIwD,cAAc,CAACD,QAAQ,EAC3B;QACI3B,SAAS,CAACF,GAAG,CAACT,KAAK,CAACG,EAAE,EAAEoC,cAAc,CAACD,QAAQ,CAAC;AACpD,MAAA,CAAC,MAED;QACIrB,cAAc,CAACb,IAAI,CAAC;UAChBG,IAAI;UACJe,OAAO;AACPE,UAAAA,IAAI,EAAElD,UAAU,CAAC0B,KAAK,CAACwB,IAAI,CAAC;UAC5BrB,EAAE,EAAEH,KAAK,CAACG,EAAE;UACZ8B,MAAM,EAAEM,cAAc,CAACN;AAC3B,SAAC,CAAC;AACN,MAAA;AACJ,IAAA;AACJ,EAAA;EAEA,OAAO;IACHvB,KAAK;IACLC,SAAS;IACTC,WAAW;IACXC,YAAY;IACZC,MAAM;IACNC,OAAO;AACP0B,IAAAA,WAAW,EAAE;MACTpB,MAAM;MACND,YAAY;MACZJ,MAAM;MACNC,cAAc;MACdC,SAAS;MACTC,mBAAmB;AACnBrB,MAAAA;AACJ;GACH;AACL;AAEA,SAAS0C,iBAAiBA,CAACxC,KAAK,EAAE6B,MAAM,EAAEjD,WAAW,EACrD;AACI,EAAA,IAAIoB,KAAK,CAACwB,IAAI,KAAK,CAAC,EACpB;AACI,IAAA,MAAMkB,KAAK,GAAGC,mBAAmB,CAAC3C,KAAK,CAAC;IAExC,IAAI0C,KAAK,KAAK,IAAI,EAClB;MACI,OAAO;AACHJ,QAAAA,QAAQ,EAAE,IAAI;AACdL,QAAAA,MAAM,EAAE;OACX;AACL,IAAA;AAEA,IAAA,MAAMK,QAAQ,GAAGM,kBAAkB,CAC/B5C,KAAK,CAACtB,OAAO,EACbgE,KAAK,EACL1C,KAAK,CAACtB,OAAO,CAACmE,UAAU,EACxB;AAAEjE,MAAAA;AAAY,KAClB,CAAC;IAED,OAAO;MACH0D,QAAQ;AACRL,MAAAA,MAAM,EAAEK,QAAQ,GACV,EAAE,GACF;KACT;AACL,EAAA;AAEA,EAAA,IAAIT,MAAM,CAACiB,MAAM,KAAKf,SAAS,EAC/B;IACI,OAAO;AACHO,MAAAA,QAAQ,EAAE,IAAI;AACdL,MAAAA,MAAM,EAAE;KACX;AACL,EAAA;AAEA,EAAA,MAAMK,QAAQ,GAAGM,kBAAkB,CAC/B5C,KAAK,CAACtB,OAAO,EACb,CAAC,EACDmD,MAAM,CAACiB,MAAM,EACb;AAAElE,IAAAA;AAAY,GAClB,CAAC;EAED,OAAO;IACH0D,QAAQ;AACRL,IAAAA,MAAM,EAAEK,QAAQ,GACV,EAAE,GACF;GACT;AACL;AAEA,SAASK,mBAAmBA,CAAC3C,KAAK,EAClC;AACI,EAAA,MAAMtB,OAAO,GAAGsB,KAAK,EAAEtB,OAAO;EAE9B,IAAI,EAAEA,OAAO,YAAYqE,UAAU,CAAC,IAAIrE,OAAO,CAACmE,UAAU,GAAG,EAAE,EAC/D;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAMX,UAAU,GAAGX,MAAM,CACrBvB,KAAK,CAACkC,UAAU,IAAKlC,KAAK,CAAC8B,QAAQ,GAAG,IAC1C,CAAC;EAED,IAAII,UAAU,KAAK,CAAC,EACpB;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,IAAIxD,OAAO,CAACmE,UAAU,GAAG,EAAE,EAC3B;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAMG,IAAI,GAAG,IAAIC,QAAQ,CACrBvE,OAAO,CAACwE,MAAM,EACdxE,OAAO,CAACyE,UAAU,EAClBzE,OAAO,CAACmE,UACZ,CAAC;EACD,MAAMO,aAAa,GAAGJ,IAAI,CAACK,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;AAC9C,EAAA,MAAMX,KAAK,GAAG,EAAE,GAAGU,aAAa;AAEhC,EAAA,OAAO7B,MAAM,CAAC+B,aAAa,CAACZ,KAAK,CAAC,IAAIA,KAAK,IAAIhE,OAAO,CAACmE,UAAU,GAC3DH,KAAK,GACL,IAAI;AACd;AAEA,SAASrD,cAAcA,CAACX,OAAO,EAAEE,WAAW,EAC5C;AACI,EAAA,OAAO2E,UAAU,CAAC7E,OAAO,EAAEE,WAAW,EAAG4E,MAAM,IAC/C;AACI,IAAA,MAAMlB,QAAQ,GAAGmB,YAAY,CAACD,MAAM,CAAC;AACrC,IAAA,MAAME,KAAK,GAAGC,YAAY,CACtBH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;IACD,MAAMC,QAAQ,GAAG,EAAE;IAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGL,KAAK,EAAEK,KAAK,EAAE,EAC1C;MACID,QAAQ,CAAC1D,IAAI,CAACoD,MAAM,CAACI,GAAG,EAAE,CAAC;AAC/B,IAAA;IAEA,OAAO;AACHpC,MAAAA,IAAI,EAAE,aAAa;MACnBc,QAAQ;AACRwB,MAAAA;KACH;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAASvE,eAAeA,CAACb,OAAO,EAAEE,WAAW,EAC7C;AACI,EAAA,OAAO2E,UAAU,CAAC7E,OAAO,EAAEE,WAAW,EAAG4E,MAAM,IAC/C;AACI,IAAA,MAAMQ,eAAe,GAAGR,MAAM,CAACS,EAAE,EAAE;AACnC,IAAA,MAAMC,SAAS,GAAGV,MAAM,CAACS,EAAE,EAAE;IAC7B,IAAIE,IAAI,GAAG,IAAI;IAEf,IAAID,SAAS,GAAG,IAAI,EACpB;AACIC,MAAAA,IAAI,GAAG;QACHC,aAAa,EAAEC,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;QACnCC,cAAc,EAAEF,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;QACpCE,aAAa,EAAEH,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;QACnCG,OAAO,EAAEJ,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;AAC7BI,QAAAA,QAAQ,EAAEL,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE;OAChC;AACL,IAAA;IAEA,MAAMK,UAAU,GAAG,EAAE;IAErB,KAAK,IAAIZ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,EAAE,EAAEA,KAAK,EAAE,EACvC;MACIY,UAAU,CAACvE,IAAI,CAACoD,MAAM,CAACoB,EAAE,EAAE,CAAC;AAChC,IAAA;AAEA,IAAA,MAAMC,UAAU,GAAGlB,YAAY,CAC3BH,MAAM,CAACS,EAAE,EAAE,EACXT,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,EACJ,CAAC;IAED,MAAMiB,MAAM,GAAG,EAAE;IAEjB,KAAK,IAAIf,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGc,UAAU,EAAEd,KAAK,EAAE,EAC/C;AACI,MAAA,MAAMgB,OAAO,GAAGvB,MAAM,CAACS,EAAE,EAAE;AAC3B,MAAA,MAAMe,UAAU,GAAGrB,YAAY,CAC3BH,MAAM,CAACyB,GAAG,EAAE,EACZzB,MAAM,CAACK,SAAS,EAChB,EAAE,EACF,KACJ,CAAC;MACD,MAAMqB,IAAI,GAAGC,wBAAwB,CACjC3B,MAAM,EACNuB,OAAO,EACPC,UACJ,CAAC;AAEDF,MAAAA,MAAM,CAAC1E,IAAI,CAAC8E,IAAI,CAAC;AACrB,IAAA;IAEA,OAAO;AACH1D,MAAAA,IAAI,EAAE,aAAa;MACnBwC,eAAe;AACfoB,MAAAA,YAAY,EAAEC,OAAO,CAACrB,eAAe,CAAC;MACtCE,SAAS;MACTC,IAAI;MACJQ,UAAU;MACVG,MAAM;MACNQ,KAAK,EAAEC,gBAAgB,CAAC/B,MAAM;KACjC;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAAS2B,wBAAwBA,CAAC3B,MAAM,EAAEuB,OAAO,EAAEC,UAAU,EAC7D;AACI,EAAA,IAAI,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAACQ,QAAQ,CAACT,OAAO,CAAC,EACrC;AACI,IAAA,MAAM,IAAIU,UAAU,CAAC,mCAAmC,CAAC;AAC7D,EAAA;EAEA,OAAO;IACHV,OAAO;AACPW,IAAAA,MAAM,EAAEC,eAAU,CAACnC,MAAM,EAAEwB,UAAU;GACxC;AACL;AAEA,SAASnG,kBAAkBA,CAACH,OAAO,EAAEC,YAAY,EAAEC,WAAW,EAC9D;AACI,EAAA,OAAOgH,UAAU,CAAClH,OAAO,EAAEE,WAAW,EAAG4E,MAAM,IAC/C;AACI,IAAA,MAAMqC,SAAS,GAAGrC,MAAM,CAACyB,GAAG,EAAE;AAC9B,IAAA,MAAMa,UAAU,GAAGtC,MAAM,CAACyB,GAAG,EAAE;AAC/B,IAAA,MAAMc,UAAU,GAAGvC,MAAM,CAACyB,GAAG,EAAE;IAC/B,MAAMe,cAAc,GAAG3B,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;IAC3C,MAAM2B,oBAAoB,GAAG5B,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;IACjD,MAAM4B,oBAAoB,GAAG7B,MAAM,CAACb,MAAM,CAACc,GAAG,EAAE,CAAC;AACjD,IAAA,MAAM6B,gBAAgB,GAAG3C,MAAM,CAACyB,GAAG,EAAE;AACrC,IAAA,MAAMmB,cAAc,GAAG5C,MAAM,CAACS,EAAE,EAAE;AAClC,IAAA,MAAMoC,UAAU,GAAG7C,MAAM,CAACS,EAAE,EAAE;AAC9B,IAAA,MAAMqC,aAAa,GAAG9C,MAAM,CAACS,EAAE,EAAE;AACjC,IAAA,MAAMsC,KAAK,GAAG/C,MAAM,CAACS,EAAE,EAAE;AAEzB,IAAA,IAAImC,cAAc,GAAG,CAAC,IACfC,UAAU,GAAG,CAAC,IACdC,aAAa,GAAG,CAAC,IAChBC,KAAK,GAAG,CAAC,IAAK,EACtB;AACI,MAAA,MAAM,IAAId,UAAU,CAAC,8BAA8B,CAAC;AACxD,IAAA;AAEA,IAAA,MAAM3B,QAAQ,GAAG0C,YAAY,CAAChD,MAAM,EAAE7E,YAAY,CAAC;AACnD,IAAA,MAAM8H,aAAa,GAAG9C,YAAY,CAC9BH,MAAM,CAACyB,GAAG,EAAE,EACZzB,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;AACD,IAAA,MAAM6C,QAAQ,GAAG,IAAIrI,GAAG,CAACyF,QAAQ,CAAC;IAClC,MAAM6C,QAAQ,GAAG,EAAE;IAEnB,KAAK,IAAI5C,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG0C,aAAa,EAAE1C,KAAK,EAAE,EAClD;AACI,MAAA,MAAM6C,MAAM,GAAGpD,MAAM,CAACI,GAAG,EAAE;AAC3B,MAAA,MAAMiD,MAAM,GAAGrD,MAAM,CAACsD,GAAG,EAAE;MAE3B,IAAI,CAACJ,QAAQ,CAACxG,GAAG,CAAC0G,MAAM,CAAC,IAAIC,MAAM,GAAG,CAAC,EACvC;AACI,QAAA,MAAM,IAAIpB,UAAU,CAAC,kCAAkC,CAAC;AAC5D,MAAA;MACAkB,QAAQ,CAACvG,IAAI,CAAC;QAAEwG,MAAM;AAAEC,QAAAA;AAAO,OAAC,CAAC;AACrC,IAAA;IAEA,OAAO;AACHrF,MAAAA,IAAI,EAAE8E,aAAa,KAAK,CAAC,GAAG,QAAQ,GAAG,UAAU;MACjDT,SAAS;MACTC,UAAU;MACVC,UAAU;MACVC,cAAc;MACdC,oBAAoB;MACpBC,oBAAoB;MACpBC,gBAAgB;MAChBC,cAAc;MACdC,UAAU;AACVU,MAAAA,WAAW,EAAE1B,OAAO,CAACkB,KAAK,GAAG,IAAI,CAAC;AAClCS,MAAAA,qBAAqB,EAAE3B,OAAO,CAACkB,KAAK,GAAG,IAAI,CAAC;AAC5CU,MAAAA,eAAe,EAAE5B,OAAO,CAACkB,KAAK,GAAG,IAAI,CAAC;AACtCW,MAAAA,UAAU,EAAE7B,OAAO,CAACkB,KAAK,GAAG,IAAI,CAAC;AACjCY,MAAAA,MAAM,EAAE9B,OAAO,CAACkB,KAAK,GAAG,IAAI,CAAC;MAC7BzC,QAAQ;AACR6C,MAAAA;KACH;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAAS1H,UAAUA,CAACP,OAAO,EAAEC,YAAY,EAAEC,WAAW,EACtD;AACI,EAAA,OAAOgH,UAAU,CAAClH,OAAO,EAAEE,WAAW,EAAG4E,MAAM,IAC/C;AACI,IAAA,MAAM4D,SAAS,GAAG5D,MAAM,CAACS,EAAE,EAAE;AAC7B,IAAA,MAAMoD,OAAO,GAAG7D,MAAM,CAACI,GAAG,EAAE;AAC5B,IAAA,MAAM0D,cAAc,GAAG9D,MAAM,CAACI,GAAG,EAAE;AACnC,IAAA,MAAM2D,oBAAoB,GAAG/D,MAAM,CAACS,EAAE,EAAE;AAExC,IAAA,IAAImD,SAAS,GAAG,CAAC,IAAIG,oBAAoB,GAAG,CAAC,EAC7C;AACI,MAAA,MAAM,IAAI9B,UAAU,CAAC,qBAAqB,CAAC;AAC/C,IAAA;AAEA,IAAA,MAAM3B,QAAQ,GAAG0C,YAAY,CAAChD,MAAM,EAAE7E,YAAY,CAAC;AACnD,IAAA,MAAM6I,eAAe,GAAG7D,YAAY,CAChCH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;IACD,MAAM4D,WAAW,GAAG,EAAE;IAEtB,KAAK,IAAI1D,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGyD,eAAe,EAAEzD,KAAK,EAAE,EACpD;AACI,MAAA,MAAM2D,OAAO,GAAGlE,MAAM,CAACI,GAAG,EAAE;AAC5B,MAAA,MAAM+D,SAAS,GAAGhE,YAAY,CAC1BH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;MACD,MAAM+D,QAAQ,GAAG,EAAE;MAEnB,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGF,SAAS,EAAEE,IAAI,EAAE,EAC3C;AACI,QAAA,MAAMC,OAAO,GAAGtE,MAAM,CAACI,GAAG,EAAE;AAE5BgE,QAAAA,QAAQ,CAACxH,IAAI,CAAC0H,OAAO,CAAC;AAC1B,MAAA;MACAL,WAAW,CAACrH,IAAI,CAAC;QAAEsH,OAAO;AAAEE,QAAAA;AAAS,OAAC,CAAC;AAC3C,IAAA;AAEA,IAAA,MAAMG,cAAc,GAAGpE,YAAY,CAC/BH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,EAAE,EACF,IACJ,CAAC;IACD,MAAMmE,UAAU,GAAG,EAAE;IAErB,KAAK,IAAIjE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGgE,cAAc,EAAEhE,KAAK,EAAE,EACnD;AACI,MAAA,MAAM+D,OAAO,GAAGtE,MAAM,CAACI,GAAG,EAAE;AAC5B,MAAA,MAAMqE,MAAM,GAAGzE,MAAM,CAACS,EAAE,EAAE;AAC1B,MAAA,MAAMiE,MAAM,GAAG1E,MAAM,CAACS,EAAE,EAAE;AAC1B,MAAA,MAAMkE,YAAY,GAAGD,MAAM,GAAG,IAAI;AAElC,MAAA,IAAKD,MAAM,GAAG,CAAC,IAAI,IACXC,MAAM,GAAG,CAAC,IAAK,IAChBC,YAAY,GAAG,CAAC,EACvB;AACI,QAAA,MAAM,IAAI1C,UAAU,CAAC,0BAA0B,CAAC;AACpD,MAAA;MACAuC,UAAU,CAAC5H,IAAI,CAAC;QACZ0H,OAAO;AACPM,QAAAA,SAAS,EAAE/C,OAAO,CAAC4C,MAAM,GAAG,IAAI,CAAC;AACjCI,QAAAA,gBAAgB,EAAEhD,OAAO,CAAC4C,MAAM,GAAG,IAAI,CAAC;QACxCE,YAAY;AACZG,QAAAA,SAAS,EAAE9E,MAAM,CAACsD,GAAG,EAAE;AACvByB,QAAAA,QAAQ,EAAE/E,MAAM,CAACsD,GAAG;AACxB,OAAC,CAAC;AACN,IAAA;;AAEA;AACA;AACA;IACA,OAAO;AACHtF,MAAAA,IAAI,EAAE,QAAQ;MACd4F,SAAS;MACTC,OAAO;MACPC,cAAc;AACdC,MAAAA,oBAAoB,EAAElC,OAAO,CAACkC,oBAAoB,CAAC;MACnDzD,QAAQ;MACR2D,WAAW;AACXO,MAAAA;KACH;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAAS7I,SAASA,CAACT,OAAO,EAAEC,YAAY,EAAEC,WAAW,EACrD;AACI,EAAA,OAAOgH,UAAU,CAAClH,OAAO,EAAEE,WAAW,EAAG4E,MAAM,IAC/C;AACI,IAAA,MAAMM,QAAQ,GAAG0C,YAAY,CAAChD,MAAM,EAAE7E,YAAY,CAAC;AACnD,IAAA,MAAM+H,QAAQ,GAAG,IAAIrI,GAAG,CAACyF,QAAQ,CAAC;AAClC,IAAA,MAAM0E,UAAU,GAAG7E,YAAY,CAC3BH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,EAAE,EACF,IACJ,CAAC;IACD,MAAM4E,MAAM,GAAG,EAAE;IAEjB,KAAK,IAAI1E,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGyE,UAAU,EAAEzE,KAAK,EAAE,EAC/C;AACI,MAAA,MAAM2E,OAAO,GAAGlF,MAAM,CAACI,GAAG,EAAE;AAC5B,MAAA,MAAM+E,gBAAgB,GAAGhF,YAAY,CACjCH,MAAM,CAACyB,GAAG,EAAE,EACZzB,MAAM,CAACK,SAAS,EAChB,EAAE,EACF,IACJ,CAAC;MACD,MAAM+E,YAAY,GAAG,EAAE;MAEvB,KAAK,IAAI1D,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGyD,gBAAgB,EAAEzD,IAAI,EAAE,EAClD;AACI0D,QAAAA,YAAY,CAACxI,IAAI,CAACyI,eAAe,CAACrF,MAAM,CAAC,CAAC;AAC9C,MAAA;AAEA,MAAA,MAAMsF,SAAS,GAAGtF,MAAM,CAACI,GAAG,EAAE;AAC9B,MAAA,MAAMmF,WAAW,GAAGvF,MAAM,CAACS,EAAE,EAAE;AAC/B,MAAA,MAAM+E,gBAAgB,GAAGrF,YAAY,CACjCH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;MACD,MAAMoF,YAAY,GAAG,EAAE;MAEvB,IAAIF,WAAW,GAAG,CAAC,EACnB;AACI,QAAA,MAAM,IAAItD,UAAU,CAAC,4BAA4B,CAAC;AACtD,MAAA;MAEA,KAAK,IAAIyD,WAAW,GAAG,CAAC,EACpBA,WAAW,GAAGF,gBAAgB,EAC9BE,WAAW,EAAE,EACjB;AACI,QAAA,MAAMpB,OAAO,GAAGtE,MAAM,CAACI,GAAG,EAAE;AAC5B,QAAA,MAAMoB,UAAU,GAAGrB,YAAY,CAC3BH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,EAAE,EACF,KACJ,CAAC;AAED,QAAA,IAAI,CAAC6C,QAAQ,CAACxG,GAAG,CAAC4H,OAAO,CAAC,EAC1B;AACI,UAAA,MAAM,IAAIrC,UAAU,CAAC,iCAAiC,CAAC;AAC3D,QAAA;QACAwD,YAAY,CAAC7I,IAAI,CAAC;UACd0H,OAAO;AACPpC,UAAAA,MAAM,EAAEC,eAAU,CAACnC,MAAM,EAAEwB,UAAU;AACzC,SAAC,CAAC;AACN,MAAA;MAEAyD,MAAM,CAACrI,IAAI,CAAC;QACRsI,OAAO;QACPE,YAAY;QACZE,SAAS;QACTC,WAAW;AACXE,QAAAA;AACJ,OAAC,CAAC;AACN,IAAA;AAEA,IAAA,MAAM1B,oBAAoB,GAAG/D,MAAM,CAACS,EAAE,EAAE;IAExC,IAAIsD,oBAAoB,GAAG,CAAC,EAC5B;AACI,MAAA,MAAM,IAAI9B,UAAU,CAAC,+BAA+B,CAAC;AACzD,IAAA;IAEA,OAAO;AACHjE,MAAAA,IAAI,EAAE,OAAO;MACbsC,QAAQ;MACR2E,MAAM;MACNlB,oBAAoB,EAAElC,OAAO,CAACkC,oBAAoB;KACrD;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAASf,YAAYA,CAAChD,MAAM,EAAE7E,YAAY,EAC1C;AACI,EAAA,MAAM+E,KAAK,GAAGC,YAAY,CACtBH,MAAM,CAACI,GAAG,EAAE,EACZJ,MAAM,CAACK,SAAS,EAChB,CAAC,EACD,IACJ,CAAC;EACD,MAAMC,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGL,KAAK,EAAEK,KAAK,EAAE,EAC1C;AACI,IAAA,MAAM5D,EAAE,GAAGqD,MAAM,CAACI,GAAG,EAAE;IACvB,MAAMpC,IAAI,GAAG2H,SAAS,CAACxK,YAAY,CAAC2B,GAAG,CAACH,EAAE,CAAC,CAAC;AAE5C,IAAA,IAAI,CAAC/B,eAAe,CAAC8B,GAAG,CAACsB,IAAI,CAAC,EAC9B;AACI,MAAA,MAAM,IAAIiE,UAAU,CAAC,4BAA4B,CAAC;AACtD,IAAA;AACA3B,IAAAA,QAAQ,CAAC1D,IAAI,CAACD,EAAE,CAAC;AACrB,EAAA;AACA,EAAA,OAAO2D,QAAQ;AACnB;AAEA,SAAS8B,UAAUA,CAAClH,OAAO,EAAEE,WAAW,EAAEwK,KAAK,EAC/C;AACI,EAAA,IAAI,EAAE1K,OAAO,YAAYqE,UAAU,CAAC,IAC7BxB,MAAM,CAAC3C,WAAW,CAAC,KAAKV,iBAAiB,EAChD;IACI,OAAO;AAAEa,MAAAA,IAAI,EAAE,IAAI;AAAEkD,MAAAA,MAAM,EAAE;KAA4B;AAC7D,EAAA;EAEA,MAAMoH,UAAU,GAAG,EAAE;AAErB,EAAA,KAAK,IAAIvG,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGpE,OAAO,CAACmE,UAAU,EAAEC,MAAM,EAAE,EAC1D;IACI,IACA;MACI,MAAMU,MAAM,GAAG,IAAI8F,WAAS,CAAC5K,OAAO,EAAEoE,MAAM,CAAC;AAC7C,MAAA,MAAM/D,IAAI,GAAGqK,KAAK,CAAC5F,MAAM,CAAC;AAE1B,MAAA,IAAIA,MAAM,CAAC+F,EAAE,KAAK7K,OAAO,CAACmE,UAAU,EACpC;QACIwG,UAAU,CAACjJ,IAAI,CAAC;UAAErB,IAAI;AAAE+D,UAAAA;AAAO,SAAC,CAAC;AACrC,MAAA;AACJ,IAAA,CAAC,CACD,MACA;AACI;AAAA,IAAA;AAER,EAAA;AAEA,EAAA,IAAIuG,UAAU,CAACG,MAAM,KAAK,CAAC,EAC3B;IACI,OAAO;AACHzK,MAAAA,IAAI,EAAEsK,UAAU,CAAC,CAAC,CAAC,CAACtK,IAAI;AACxB+D,MAAAA,MAAM,EAAEuG,UAAU,CAAC,CAAC,CAAC,CAACvG,MAAM;AAC5Bb,MAAAA,MAAM,EAAE;KACX;AACL,EAAA;AACA,EAAA,IAAIoH,UAAU,CAACG,MAAM,GAAG,CAAC,EACzB;AACI,IAAA,MAAMC,aAAa,GAAGJ,UAAU,CAACK,MAAM,CAACC,SAAS,IAC7C/G,kBAAkB,CACdlE,OAAO,EACP,CAAC,EACDiL,SAAS,CAAC7G,MAAM,EAChB;AAAElE,MAAAA;AAAY,KAClB,CAAC,CAAC;AAEN,IAAA,IAAI6K,aAAa,CAACD,MAAM,KAAK,CAAC,EAC9B;MACI,OAAO;AACHzK,QAAAA,IAAI,EAAE0K,aAAa,CAAC,CAAC,CAAC,CAAC1K,IAAI;AAC3B+D,QAAAA,MAAM,EAAE2G,aAAa,CAAC,CAAC,CAAC,CAAC3G,MAAM;AAC/Bb,QAAAA,MAAM,EAAE;OACX;AACL,IAAA;AACJ,EAAA;EACA,OAAO;AACHlD,IAAAA,IAAI,EAAE,IAAI;AACVkD,IAAAA,MAAM,EAAEoH,UAAU,CAACG,MAAM,GAAG,mBAAmB,GAAG;GACrD;AACL;AAEA,SAASjG,UAAUA,CAAC7E,OAAO,EAAEE,WAAW,EAAEwK,KAAK,EAC/C;AACI,EAAA,IAAI,EAAE1K,OAAO,YAAYqE,UAAU,CAAC,IAC7BxB,MAAM,CAAC3C,WAAW,CAAC,KAAKV,iBAAiB,EAChD;IACI,OAAO;AAAEa,MAAAA,IAAI,EAAE,IAAI;AAAEkD,MAAAA,MAAM,EAAE;KAA4B;AAC7D,EAAA;EAEA,IACA;AACI,IAAA,MAAMuB,MAAM,GAAG,IAAI8F,WAAS,CAAC5K,OAAO,CAAC;AACrC,IAAA,MAAMK,IAAI,GAAGqK,KAAK,CAAC5F,MAAM,CAAC;AAE1B,IAAA,OAAOA,MAAM,CAAC+F,EAAE,KAAK7K,OAAO,CAACmE,UAAU,GACjC;MAAE9D,IAAI;AAAEkD,MAAAA,MAAM,EAAE;AAAG,KAAC,GACpB;AAAElD,MAAAA,IAAI,EAAE,IAAI;AAAEkD,MAAAA,MAAM,EAAE;KAAkB;EAClD,CAAC,CACD,OAAO2H,KAAK,EACZ;IACI,OAAO;AACH7K,MAAAA,IAAI,EAAE,IAAI;MACVkD,MAAM,EAAE2H,KAAK,YAAYC,KAAK,GACxBD,KAAK,CAACE,OAAO,GACb;KACT;AACL,EAAA;AACJ;AAEA,SAAShL,qBAAqBA,CAACiL,KAAK,EACpC;EACI,IAAIA,KAAK,YAAYlK,GAAG,EACxB;AACI,IAAA,OAAOkK,KAAK;AAChB,EAAA;AAEA,EAAA,MAAMC,GAAG,GAAG,IAAInK,GAAG,EAAE;AAErB,EAAA,KAAK,MAAMG,KAAK,IAAI+J,KAAK,IAAI,EAAE,EAC/B;AACI,IAAA,IAAI,OAAO/J,KAAK,KAAK,QAAQ,EAC7B;AACIgK,MAAAA,GAAG,CAACvJ,GAAG,CAACT,KAAK,EAAE;AAAEwB,QAAAA,IAAI,EAAE;AAAE,OAAC,CAAC;AAC/B,IAAA,CAAC,MACI,IAAIxB,KAAK,EAAEG,EAAE,KAAK4B,SAAS,EAChC;AACIiI,MAAAA,GAAG,CAACvJ,GAAG,CAACc,MAAM,CAACvB,KAAK,CAACG,EAAE,CAAC,KAAK,CAAC,EAAEH,KAAK,CAAC;AAC1C,IAAA;AACJ,EAAA;AACA,EAAA,OAAOgK,GAAG;AACd;AAEA,SAASb,SAASA,CAACY,KAAK,EACxB;EACI,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGA,KAAK,EAAEvI,IAAI;AAC1D;;;;"}
|
|
1
|
+
{"version":3,"file":"sfxNodes.js","sources":["../../../../../../src/resource/formats/bnk/core/sfxNodes.js"],"sourcesContent":["// Wwise v150 authored-SFX node decoding. Like musicNodes.js, this interprets\r\n// inspect() payload views outside the BNK read path and accepts a suffix only\r\n// when one anchored candidate consumes the payload exactly. Common NodeBase\r\n// facts and non-playable hierarchy/attenuation objects stay separate from the\r\n// playback-node map.\r\n\r\nimport {\r\n WWISE_NODE_BASE_VERSION,\r\n WwiseCursor as SfxCursor,\r\n boundedCount as BoundedCount,\r\n finite as Finite,\r\n parseNodeBaseRange,\r\n readCurvePoints as ReadPoints,\r\n readInitialRtpc as ReadInitialRTPC,\r\n readInitialRtpcs,\r\n readNodeBase,\r\n} from \"./nodeBase.js\";\r\n\r\nconst SUPPORTED_VERSION = WWISE_NODE_BASE_VERSION;\r\nconst SFX_CHILD_TYPES = new Set([ 2, 5, 6, 7, 9 ]);\r\nconst TYPE_NAMES = Object.freeze({\r\n 2: \"sound\",\r\n 5: \"random-sequence-container\",\r\n 6: \"switch-container\",\r\n 7: \"actor-mixer\",\r\n 9: \"blend-container\",\r\n 14: \"attenuation\",\r\n});\r\n\r\n/**\r\n * Decodes one v150 HIRC 5 Random/Sequence payload.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxRandomSequence(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindRandomSequence(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one v150 HIRC 6 Switch payload.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxSwitch(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindSwitch(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one v150 HIRC 9 Layer payload without lowering curve semantics.\r\n *\r\n * @returns {object|null} Typed node, or null when no unique exact-end anchor\r\n * validates.\r\n */\r\nexport function parseSfxLayer(\r\n payload,\r\n knownObjects,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindLayer(\r\n payload,\r\n NormalizeKnownObjects(knownObjects),\r\n bankVersion,\r\n ).node;\r\n}\r\n\r\n/**\r\n * Decodes one exact v150 HIRC 7 Actor-Mixer hierarchy object.\r\n *\r\n * Actor-Mixers carry inherited NodeBase facts and child identities, but are\r\n * not themselves playable container behavior.\r\n *\r\n * @returns {object|null} Typed hierarchy object, or null when invalid.\r\n */\r\nexport function parseSfxActorMixer(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindActorMixer(payload, bankVersion).node;\r\n}\r\n\r\n/**\r\n * Decodes one exact v150 HIRC 14 attenuation object without assigning curve\r\n * slots semantic names.\r\n *\r\n * @returns {object|null} Typed attenuation object, or null when invalid.\r\n */\r\nexport function parseSfxAttenuation(\r\n payload,\r\n { bankVersion = SUPPORTED_VERSION } = {},\r\n)\r\n{\r\n return FindAttenuation(payload, bankVersion).node;\r\n}\r\n\r\n/**\r\n * Decodes typed SFX nodes, events, and actions across inspected v150 banks.\r\n *\r\n * Raw Wwise identities and semantics are preserved. Runtime schema lowering\r\n * and optional authoring-name enrichment belong to the runtime audio builder.\n */\r\nexport function sfxNodesFromBanks(inspections)\r\n{\r\n const banks = Array.isArray(inspections)\r\n ? inspections\r\n : [ inspections ];\r\n const knownObjects = new Map();\r\n const duplicates = [];\r\n\r\n for (const inspection of banks)\r\n {\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (knownObjects.has(entry.id))\r\n {\r\n duplicates.push({\r\n id: entry.id,\r\n previousBank: knownObjects.get(entry.id).bank,\r\n bank: inspection.source || \"\",\r\n });\r\n }\r\n knownObjects.set(entry.id, {\r\n ...entry,\r\n bank: inspection.source || \"\",\r\n });\r\n }\r\n }\r\n\r\n const nodes = new Map();\r\n const nodeBases = new Map();\r\n const actorMixers = new Map();\r\n const attenuations = new Map();\r\n const events = new Map();\r\n const actions = new Map();\r\n const failed = [];\r\n const nodeBaseFailed = [];\r\n const ambiguous = [];\r\n const unsupportedVersions = [];\r\n const parsedByType = {};\r\n let parsed = 0;\r\n\r\n for (const inspection of banks)\r\n {\r\n const version = Number(inspection?.bankVersion) >>> 0;\r\n const bank = inspection?.source || \"\";\r\n\r\n if (version !== SUPPORTED_VERSION)\r\n {\r\n unsupportedVersions.push({ bank, version });\r\n continue;\r\n }\r\n\r\n for (const entry of inspection?.hirc ?? [])\r\n {\r\n if (entry.type === 4)\r\n {\r\n events.set(entry.id, {\r\n id: entry.id,\r\n type: \"event\",\r\n bank,\r\n actionIds: [ ...(entry.actionIds ?? []) ],\r\n });\r\n continue;\r\n }\r\n if (entry.type === 3)\r\n {\r\n actions.set(entry.id, {\r\n id: entry.id,\r\n type: \"event-action\",\r\n bank,\r\n actionType: entry.actionType,\r\n targetId: entry.targetId,\r\n action: entry.action ?? null,\r\n payload: entry.payload,\r\n });\r\n continue;\r\n }\r\n\r\n let result = null;\r\n\r\n if (entry.type === 2)\r\n {\r\n if (entry.pluginId === undefined\r\n || entry.sourceId === undefined)\r\n {\r\n result = { node: null, reason: \"missing typed sound fields\" };\r\n }\r\n else\r\n {\r\n result = {\r\n node: {\r\n type: \"sound\",\r\n pluginId: entry.pluginId,\r\n pluginType: entry.pluginType\r\n ?? (entry.pluginId & 0x0f),\r\n streamType: entry.streamType,\r\n sourceId: entry.sourceId,\r\n inMemoryMediaSize: entry.inMemoryMediaSize,\r\n },\r\n reason: \"\",\r\n };\r\n }\r\n }\r\n else if (entry.type === 5)\r\n {\r\n result = FindRandomSequence(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 6)\r\n {\r\n result = FindSwitch(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 7)\r\n {\r\n result = FindActorMixer(entry.payload, version);\r\n }\r\n else if (entry.type === 9)\r\n {\r\n result = FindLayer(\r\n entry.payload,\r\n knownObjects,\r\n version,\r\n );\r\n }\r\n else if (entry.type === 14)\r\n {\r\n result = FindAttenuation(entry.payload, version);\r\n }\r\n else\r\n {\r\n continue;\r\n }\r\n\r\n if (!result.node)\r\n {\r\n const failure = {\r\n bank,\r\n version,\r\n type: TYPE_NAMES[entry.type],\r\n id: entry.id,\r\n reason: result.reason,\r\n };\r\n\r\n failed.push(failure);\r\n if (result.reason === \"ambiguous anchors\")\r\n {\r\n ambiguous.push(failure);\r\n }\r\n continue;\r\n }\r\n\r\n parsed++;\r\n parsedByType[result.node.type] = (\r\n parsedByType[result.node.type] ?? 0\r\n ) + 1;\r\n\r\n if (entry.type === 14)\r\n {\r\n attenuations.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n });\r\n continue;\r\n }\r\n\r\n if (entry.type === 7)\r\n {\r\n actorMixers.set(entry.id, {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n });\r\n nodeBases.set(entry.id, result.node.nodeBase);\r\n continue;\r\n }\r\n\r\n const node = {\r\n id: entry.id,\r\n bank,\r\n ...result.node,\r\n };\r\n const nodeBaseResult = ReadEntryNodeBase(\r\n entry,\r\n result,\r\n version,\r\n );\r\n\r\n nodes.set(entry.id, node);\r\n\r\n if (nodeBaseResult.nodeBase)\r\n {\r\n nodeBases.set(entry.id, nodeBaseResult.nodeBase);\r\n }\r\n else\r\n {\r\n nodeBaseFailed.push({\r\n bank,\r\n version,\r\n type: TYPE_NAMES[entry.type],\r\n id: entry.id,\r\n reason: nodeBaseResult.reason,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return {\r\n nodes,\r\n nodeBases,\r\n actorMixers,\r\n attenuations,\r\n events,\r\n actions,\r\n diagnostics: {\r\n parsed,\r\n parsedByType,\r\n failed,\r\n nodeBaseFailed,\r\n ambiguous,\r\n unsupportedVersions,\r\n duplicates,\r\n },\r\n };\r\n}\r\n\r\nfunction ReadEntryNodeBase(entry, result, bankVersion)\r\n{\r\n if (entry.type === 2)\r\n {\r\n const start = SoundNodeBaseOffset(entry);\r\n\r\n if (start === null)\r\n {\r\n return {\r\n nodeBase: null,\r\n reason: \"sound NodeBase offset is unavailable\",\r\n };\r\n }\r\n\r\n const nodeBase = parseNodeBaseRange(\r\n entry.payload,\r\n start,\r\n entry.payload.byteLength,\r\n { bankVersion },\r\n );\r\n\r\n return {\r\n nodeBase,\r\n reason: nodeBase\r\n ? \"\"\r\n : \"sound NodeBase did not consume its exact byte range\",\r\n };\r\n }\r\n\r\n if (result.anchor === undefined)\r\n {\r\n return {\r\n nodeBase: null,\r\n reason: \"container NodeBase anchor is unavailable\",\r\n };\r\n }\r\n\r\n const nodeBase = parseNodeBaseRange(\r\n entry.payload,\r\n 0,\r\n result.anchor,\r\n { bankVersion },\r\n );\r\n\r\n return {\r\n nodeBase,\r\n reason: nodeBase\r\n ? \"\"\r\n : \"container NodeBase did not consume its exact byte range\",\r\n };\r\n}\r\n\r\nfunction SoundNodeBaseOffset(entry)\r\n{\r\n const payload = entry?.payload;\r\n\r\n if (!(payload instanceof Uint8Array) || payload.byteLength < 14)\r\n {\r\n return null;\r\n }\r\n\r\n const pluginType = Number(\r\n entry.pluginType ?? (entry.pluginId & 0x0f),\r\n );\r\n\r\n if (pluginType !== 2)\r\n {\r\n return 14;\r\n }\r\n\r\n if (payload.byteLength < 18)\r\n {\r\n return null;\r\n }\r\n\r\n const view = new DataView(\r\n payload.buffer,\r\n payload.byteOffset,\r\n payload.byteLength,\r\n );\r\n const parameterSize = view.getUint32(14, true);\r\n const start = 18 + parameterSize;\r\n\r\n return Number.isSafeInteger(start) && start <= payload.byteLength\r\n ? start\r\n : null;\r\n}\r\n\r\nfunction FindActorMixer(payload, bankVersion)\r\n{\r\n return ParseExact(payload, bankVersion, (cursor) =>\r\n {\r\n const nodeBase = readNodeBase(cursor);\r\n const count = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const children = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n children.push(cursor.u32());\r\n }\r\n\r\n return {\r\n type: \"actor-mixer\",\r\n nodeBase,\r\n children,\r\n };\r\n });\r\n}\r\n\r\nfunction FindAttenuation(payload, bankVersion)\r\n{\r\n return ParseExact(payload, bankVersion, (cursor) =>\r\n {\r\n const heightSpreadRaw = cursor.u8();\r\n const coneFlags = cursor.u8();\r\n let cone = null;\r\n\r\n if (coneFlags & 0x01)\r\n {\r\n cone = {\r\n insideDegrees: Finite(cursor.f32()),\r\n outsideDegrees: Finite(cursor.f32()),\r\n outsideVolume: Finite(cursor.f32()),\r\n lowPass: Finite(cursor.f32()),\r\n highPass: Finite(cursor.f32()),\r\n };\r\n }\r\n\r\n const curveToUse = [];\r\n\r\n for (let index = 0; index < 19; index++)\r\n {\r\n curveToUse.push(cursor.s8());\r\n }\r\n\r\n const curveCount = BoundedCount(\r\n cursor.u8(),\r\n cursor.remaining,\r\n 3,\r\n 19,\r\n );\r\n\r\n const curves = [];\r\n\r\n for (let index = 0; index < curveCount; index++)\r\n {\r\n const scaling = cursor.u8();\r\n const pointCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 12,\r\n 65535,\r\n );\r\n const rtpc = ReadInitialRTPCFromCurve(\r\n cursor,\r\n scaling,\r\n pointCount,\r\n );\r\n\r\n curves.push(rtpc);\r\n }\r\n\r\n return {\r\n type: \"attenuation\",\r\n heightSpreadRaw,\r\n heightSpread: Boolean(heightSpreadRaw),\r\n coneFlags,\r\n cone,\r\n curveToUse,\r\n curves,\r\n rtpcs: readInitialRtpcs(cursor),\r\n };\r\n });\r\n}\r\n\r\nfunction ReadInitialRTPCFromCurve(cursor, scaling, pointCount)\r\n{\r\n if (![ 0, 2, 3, 4 ].includes(scaling))\r\n {\r\n throw new RangeError(\"invalid attenuation curve scaling\");\r\n }\r\n\r\n return {\r\n scaling,\r\n points: ReadPoints(cursor, pointCount),\r\n };\r\n}\r\n\r\nfunction FindRandomSequence(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const loopCount = cursor.u16();\r\n const loopModMin = cursor.u16();\r\n const loopModMax = cursor.u16();\r\n const transitionTime = Finite(cursor.f32());\r\n const transitionTimeModMin = Finite(cursor.f32());\r\n const transitionTimeModMax = Finite(cursor.f32());\r\n const avoidRepeatCount = cursor.u16();\r\n const transitionMode = cursor.u8();\r\n const randomMode = cursor.u8();\r\n const containerMode = cursor.u8();\r\n const flags = cursor.u8();\r\n\r\n if (transitionMode > 5\r\n || randomMode > 1\r\n || containerMode > 1\r\n || (flags & ~0x1f))\r\n {\r\n throw new RangeError(\"invalid Random/Sequence enum\");\r\n }\r\n\r\n const children = ReadChildren(cursor, knownObjects);\r\n const playlistCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const childSet = new Set(children);\r\n const playlist = [];\r\n\r\n for (let index = 0; index < playlistCount; index++)\r\n {\r\n const playId = cursor.u32();\r\n const weight = cursor.s32();\r\n\r\n if (!childSet.has(playId) || weight < 0)\r\n {\r\n throw new RangeError(\"invalid Random/Sequence playlist\");\r\n }\r\n playlist.push({ playId, weight });\r\n }\r\n\r\n return {\r\n type: containerMode === 0 ? \"random\" : \"sequence\",\r\n loopCount,\r\n loopModMin,\r\n loopModMax,\r\n transitionTime,\r\n transitionTimeModMin,\r\n transitionTimeModMax,\r\n avoidRepeatCount,\r\n transitionMode,\r\n randomMode,\r\n usingWeight: Boolean(flags & 0x01),\r\n resetPlaylistEachPlay: Boolean(flags & 0x02),\r\n restartBackward: Boolean(flags & 0x04),\r\n continuous: Boolean(flags & 0x08),\r\n global: Boolean(flags & 0x10),\r\n children,\r\n playlist,\r\n };\r\n });\r\n}\r\n\r\nfunction FindSwitch(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const groupType = cursor.u8();\r\n const groupId = cursor.u32();\r\n const defaultValueId = cursor.u32();\r\n const continuousValidation = cursor.u8();\r\n\r\n if (groupType > 1 || continuousValidation > 1)\r\n {\r\n throw new RangeError(\"invalid Switch enum\");\r\n }\r\n\r\n const children = ReadChildren(cursor, knownObjects);\r\n const assignmentCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const assignments = [];\r\n\r\n for (let index = 0; index < assignmentCount; index++)\r\n {\r\n const valueId = cursor.u32();\r\n const itemCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const childIds = [];\r\n\r\n for (let item = 0; item < itemCount; item++)\r\n {\r\n const childId = cursor.u32();\r\n\r\n childIds.push(childId);\r\n }\r\n assignments.push({ valueId, childIds });\r\n }\r\n\r\n const parameterCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 14,\r\n 8192,\r\n );\r\n const parameters = [];\r\n\r\n for (let index = 0; index < parameterCount; index++)\r\n {\r\n const childId = cursor.u32();\r\n const flags1 = cursor.u8();\r\n const flags2 = cursor.u8();\r\n const onSwitchMode = flags2 & 0x07;\r\n\r\n if ((flags1 & ~0x03)\r\n || (flags2 & ~0x07)\r\n || onSwitchMode > 1)\r\n {\r\n throw new RangeError(\"invalid Switch parameter\");\r\n }\r\n parameters.push({\r\n childId,\r\n firstOnly: Boolean(flags1 & 0x01),\r\n continuePlayback: Boolean(flags1 & 0x02),\r\n onSwitchMode,\r\n fadeOutMs: cursor.s32(),\r\n fadeInMs: cursor.s32(),\r\n });\r\n }\r\n\r\n // Essential and partial banks may retain raw SwitchList and parameter\r\n // references to nodes that are not serialized in direct Children.\r\n // Consumers decide whether those referenced nodes are available.\r\n return {\r\n type: \"switch\",\r\n groupType,\r\n groupId,\r\n defaultValueId,\r\n continuousValidation: Boolean(continuousValidation),\r\n children,\r\n assignments,\r\n parameters,\r\n };\r\n });\r\n}\r\n\r\nfunction FindLayer(payload, knownObjects, bankVersion)\r\n{\r\n return FindUnique(payload, bankVersion, (cursor) =>\r\n {\r\n const children = ReadChildren(cursor, knownObjects);\r\n const childSet = new Set(children);\r\n const layerCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 15,\r\n 1024,\r\n );\r\n const layers = [];\r\n\r\n for (let index = 0; index < layerCount; index++)\r\n {\r\n const layerId = cursor.u32();\r\n const initialRtpcCount = BoundedCount(\r\n cursor.u16(),\r\n cursor.remaining,\r\n 14,\r\n 4096,\r\n );\r\n const initialRtpcs = [];\r\n\r\n for (let rtpc = 0; rtpc < initialRtpcCount; rtpc++)\r\n {\r\n initialRtpcs.push(ReadInitialRTPC(cursor));\r\n }\r\n\r\n const controlId = cursor.u32();\r\n const controlType = cursor.u8();\r\n const associationCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 8,\r\n 8192,\r\n );\r\n const associations = [];\r\n\r\n if (controlType > 4)\r\n {\r\n throw new RangeError(\"invalid Layer control type\");\r\n }\r\n\r\n for (let association = 0;\r\n association < associationCount;\r\n association++)\r\n {\r\n const childId = cursor.u32();\r\n const pointCount = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 12,\r\n 65535,\r\n );\r\n\r\n if (!childSet.has(childId))\r\n {\r\n throw new RangeError(\"invalid Layer association child\");\r\n }\r\n associations.push({\r\n childId,\r\n points: ReadPoints(cursor, pointCount),\r\n });\r\n }\r\n\r\n layers.push({\r\n layerId,\r\n initialRtpcs,\r\n controlId,\r\n controlType,\r\n associations,\r\n });\r\n }\r\n\r\n const continuousValidation = cursor.u8();\r\n\r\n if (continuousValidation > 1)\r\n {\r\n throw new RangeError(\"invalid Layer validation mode\");\r\n }\r\n\r\n return {\r\n type: \"layer\",\r\n children,\r\n layers,\r\n continuousValidation: Boolean(continuousValidation),\r\n };\r\n });\r\n}\r\n\r\nfunction ReadChildren(cursor, knownObjects)\r\n{\r\n const count = BoundedCount(\r\n cursor.u32(),\r\n cursor.remaining,\r\n 4,\r\n 8192,\r\n );\r\n const children = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const id = cursor.u32();\r\n const type = KnownType(knownObjects.get(id));\r\n\r\n if (!SFX_CHILD_TYPES.has(type))\r\n {\r\n throw new RangeError(\"invalid SFX child identity\");\r\n }\r\n children.push(id);\r\n }\r\n return children;\r\n}\r\n\r\nfunction FindUnique(payload, bankVersion, parse)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION)\r\n {\r\n return { node: null, reason: \"unsupported bank version\" };\r\n }\r\n\r\n const candidates = [];\r\n\r\n for (let anchor = 0; anchor < payload.byteLength; anchor++)\r\n {\r\n try\r\n {\r\n const cursor = new SfxCursor(payload, anchor);\r\n const node = parse(cursor);\r\n\r\n if (cursor.at === payload.byteLength)\r\n {\r\n candidates.push({ node, anchor });\r\n }\r\n }\r\n catch\r\n {\r\n // This byte was not the exact type-tail anchor.\r\n }\r\n }\r\n\r\n if (candidates.length === 1)\r\n {\r\n return {\r\n node: candidates[0].node,\r\n anchor: candidates[0].anchor,\r\n reason: \"\",\r\n };\r\n }\r\n if (candidates.length > 1)\r\n {\r\n const exactNodeBase = candidates.filter(candidate =>\r\n parseNodeBaseRange(\r\n payload,\r\n 0,\r\n candidate.anchor,\r\n { bankVersion },\r\n ));\r\n\r\n if (exactNodeBase.length === 1)\r\n {\r\n return {\r\n node: exactNodeBase[0].node,\r\n anchor: exactNodeBase[0].anchor,\r\n reason: \"\",\r\n };\r\n }\r\n }\r\n return {\r\n node: null,\r\n reason: candidates.length ? \"ambiguous anchors\" : \"no exact anchor\",\r\n };\r\n}\r\n\r\nfunction ParseExact(payload, bankVersion, parse)\r\n{\r\n if (!(payload instanceof Uint8Array)\r\n || Number(bankVersion) !== SUPPORTED_VERSION)\r\n {\r\n return { node: null, reason: \"unsupported bank version\" };\r\n }\r\n\r\n try\r\n {\r\n const cursor = new SfxCursor(payload);\r\n const node = parse(cursor);\r\n\r\n return cursor.at === payload.byteLength\r\n ? { node, reason: \"\" }\r\n : { node: null, reason: \"trailing bytes\" };\r\n }\r\n catch (cause)\r\n {\r\n return {\r\n node: null,\r\n reason: cause instanceof Error\r\n ? cause.message\r\n : \"invalid object\",\r\n };\r\n }\r\n}\r\n\r\nfunction NormalizeKnownObjects(value)\r\n{\r\n if (value instanceof Map)\r\n {\r\n return value;\r\n }\r\n\r\n const map = new Map();\r\n\r\n for (const entry of value ?? [])\r\n {\r\n if (typeof entry === \"number\")\r\n {\r\n map.set(entry, { type: 2 });\r\n }\r\n else if (entry?.id !== undefined)\r\n {\r\n map.set(Number(entry.id) >>> 0, entry);\r\n }\r\n }\r\n return map;\r\n}\r\n\r\nfunction KnownType(value)\r\n{\r\n return typeof value === \"number\" ? value : value?.type;\r\n}\r\n"],"names":["SUPPORTED_VERSION","WWISE_NODE_BASE_VERSION","SFX_CHILD_TYPES","Set","TYPE_NAMES","Object","freeze","parseSfxRandomSequence","payload","knownObjects","bankVersion","FindRandomSequence","NormalizeKnownObjects","node","parseSfxSwitch","FindSwitch","parseSfxLayer","FindLayer","parseSfxActorMixer","FindActorMixer","parseSfxAttenuation","FindAttenuation","sfxNodesFromBanks","inspections","banks","Array","isArray","Map","duplicates","inspection","entry","hirc","has","id","push","previousBank","get","bank","source","set","nodes","nodeBases","actorMixers","attenuations","events","actions","failed","nodeBaseFailed","ambiguous","unsupportedVersions","parsedByType","parsed","version","Number","type","actionIds","actionType","targetId","action","result","pluginId","undefined","sourceId","reason","pluginType","streamType","inMemoryMediaSize","failure","nodeBase","nodeBaseResult","ReadEntryNodeBase","diagnostics","start","SoundNodeBaseOffset","parseNodeBaseRange","byteLength","anchor","Uint8Array","view","DataView","buffer","byteOffset","parameterSize","getUint32","isSafeInteger","ParseExact","cursor","readNodeBase","count","BoundedCount","u32","remaining","children","index","heightSpreadRaw","u8","coneFlags","cone","insideDegrees","Finite","f32","outsideDegrees","outsideVolume","lowPass","highPass","curveToUse","s8","curveCount","curves","scaling","pointCount","u16","rtpc","ReadInitialRTPCFromCurve","heightSpread","Boolean","rtpcs","readInitialRtpcs","includes","RangeError","points","ReadPoints","FindUnique","loopCount","loopModMin","loopModMax","transitionTime","transitionTimeModMin","transitionTimeModMax","avoidRepeatCount","transitionMode","randomMode","containerMode","flags","ReadChildren","playlistCount","childSet","playlist","playId","weight","s32","usingWeight","resetPlaylistEachPlay","restartBackward","continuous","global","groupType","groupId","defaultValueId","continuousValidation","assignmentCount","assignments","valueId","itemCount","childIds","item","childId","parameterCount","parameters","flags1","flags2","onSwitchMode","firstOnly","continuePlayback","fadeOutMs","fadeInMs","layerCount","layers","layerId","initialRtpcCount","initialRtpcs","ReadInitialRTPC","controlId","controlType","associationCount","associations","association","KnownType","parse","candidates","SfxCursor","at","length","exactNodeBase","filter","candidate","cause","Error","message","value","map"],"mappings":"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"}
|