@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +82 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sources":["../../../../src/global/math/pool.js"],"sourcesContent":["import {\r\n GL_BYTE,\r\n GL_UNSIGNED_BYTE,\r\n GL_SHORT,\r\n GL_UNSIGNED_SHORT,\r\n GL_INT,\r\n GL_UNSIGNED_INT,\r\n GL_FLOAT\r\n} from \"../consts/constants.js\";\r\n\r\n\r\nfunction loop(n, f)\r\n{\r\n const result = Array(n);\r\n for (let i = 0; i < n; ++i) result[i] = f(i);\r\n return result;\r\n}\r\n\r\nfunction nextPow16(v)\r\n{\r\n for (let i = 16; i <= (1 << 28); i *= 16)\r\n {\r\n if (v <= i) return i;\r\n }\r\n return 0;\r\n}\r\n\r\nfunction log2(v)\r\n{\r\n let r, shift;\r\n r = (v > 0xFFFF) << 4;\r\n v >>>= r;\r\n shift = (v > 0xFF) << 3;\r\n v >>>= shift;\r\n r |= shift;\r\n shift = (v > 0xF) << 2;\r\n v >>>= shift;\r\n r |= shift;\r\n shift = (v > 0x3) << 1;\r\n v >>>= shift;\r\n r |= shift;\r\n return r | (v >> 1);\r\n}\r\n\r\n/** Creates a reusable typed-array pool for a supported graphics scalar type. */\r\nexport function createPool()\r\n{\r\n\r\n const bufferPool = loop(8, function ()\r\n {\r\n return [];\r\n });\r\n\r\n function free(buf)\r\n {\r\n bufferPool[log2(buf.byteLength) >> 2].push(buf);\r\n }\r\n\r\n function alloc(n)\r\n {\r\n let sz = nextPow16(n),\r\n bin = bufferPool[log2(sz) >> 2];\r\n\r\n if (bin.length > 0) return bin.pop();\r\n\r\n return new ArrayBuffer(sz);\r\n }\r\n\r\n /**\r\n * Shortcut to allocating a
|
|
1
|
+
{"version":3,"file":"pool.js","sources":["../../../../src/global/math/pool.js"],"sourcesContent":["import {\r\n GL_BYTE,\r\n GL_UNSIGNED_BYTE,\r\n GL_SHORT,\r\n GL_UNSIGNED_SHORT,\r\n GL_INT,\r\n GL_UNSIGNED_INT,\r\n GL_FLOAT\r\n} from \"../consts/constants.js\";\r\n\r\n// A LIVE ESM binding, deliberately. gl-matrix reassigns this when a consumer\r\n// calls `setMatrixArrayType`, and an ESM import reflects that reassignment,\r\n// so the pool keeps following it rather than capturing the type at load.\r\nimport { ARRAY_TYPE } from \"gl-matrix/esm/common.js\";\r\n\r\n\r\nfunction loop(n, f)\r\n{\r\n const result = Array(n);\r\n for (let i = 0; i < n; ++i) result[i] = f(i);\r\n return result;\r\n}\r\n\r\nfunction nextPow16(v)\r\n{\r\n for (let i = 16; i <= (1 << 28); i *= 16)\r\n {\r\n if (v <= i) return i;\r\n }\r\n return 0;\r\n}\r\n\r\nfunction log2(v)\r\n{\r\n let r, shift;\r\n r = (v > 0xFFFF) << 4;\r\n v >>>= r;\r\n shift = (v > 0xFF) << 3;\r\n v >>>= shift;\r\n r |= shift;\r\n shift = (v > 0xF) << 2;\r\n v >>>= shift;\r\n r |= shift;\r\n shift = (v > 0x3) << 1;\r\n v >>>= shift;\r\n r |= shift;\r\n return r | (v >> 1);\r\n}\r\n\r\n/** Creates a reusable typed-array pool for a supported graphics scalar type. */\r\nexport function createPool()\r\n{\r\n\r\n const bufferPool = loop(8, function ()\r\n {\r\n return [];\r\n });\r\n\r\n function free(buf)\r\n {\r\n bufferPool[log2(buf.byteLength) >> 2].push(buf);\r\n }\r\n\r\n function alloc(n)\r\n {\r\n let sz = nextPow16(n),\r\n bin = bufferPool[log2(sz) >> 2];\r\n\r\n if (bin.length > 0) return bin.pop();\r\n\r\n return new ArrayBuffer(sz);\r\n }\r\n\r\n /**\r\n * Shortcut to allocating an array of gl-matrix's own scalar type.\r\n *\r\n * The name says F32 and in every environment we ship it IS Float32Array,\r\n * because that is what `glMatrix.ARRAY_TYPE` defaults to. But gl-matrix owns\r\n * that choice and exposes `setMatrixArrayType` to change it, so hardcoding\r\n * the type here is a real defect: `vec3.alloc()` would hand back a narrower\r\n * array than `vec3.create()` the moment anything overrode it, and every\r\n * pooled temporary in the math tree would silently round. Following\r\n * `ARRAY_TYPE` is what makes a pooled vector interchangeable with a created\r\n * one. Inherited from ccpwgl, where the same hardcoding is still present.\r\n *\r\n * @param {Number} length\r\n * @returns {Float32Array|Float64Array} gl-matrix's scalar type.\r\n */\r\n function allocF32(length)\r\n {\r\n // gl-matrix falls back to plain `Array` only where Float32Array does not\r\n // exist, which cannot happen anywhere this runs; the pool hands out views\r\n // over a shared ArrayBuffer, so it needs a real typed array either way.\r\n const\r\n ScalarArray = ARRAY_TYPE.BYTES_PER_ELEMENT ? ARRAY_TYPE : Float32Array,\r\n result = new ScalarArray(alloc(ScalarArray.BYTES_PER_ELEMENT * length), 0, length);\r\n\r\n return result.length !== length ? result.subarray(0, length) : result;\r\n }\r\n\r\n /**\r\n * Allocated a typed array of a given size\r\n * @param {Number|Function}type\r\n * @param {Number} n\r\n * @returns {Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|null}\r\n */\r\n function allocType(type, n)\r\n {\r\n let result = null;\r\n switch (type)\r\n {\r\n case GL_BYTE:\r\n case Int8Array:\r\n result = new Int8Array(alloc(n), 0, n);\r\n break;\r\n\r\n case GL_UNSIGNED_BYTE:\r\n case Uint8Array:\r\n result = new Uint8Array(alloc(n), 0, n);\r\n break;\r\n\r\n case GL_SHORT:\r\n case Int16Array:\r\n result = new Int16Array(alloc(2 * n), 0, n);\r\n break;\r\n\r\n case GL_UNSIGNED_SHORT:\r\n case Uint16Array:\r\n result = new Uint16Array(alloc(2 * n), 0, n);\r\n break;\r\n\r\n case GL_INT:\r\n case Int32Array:\r\n result = new Int32Array(alloc(4 * n), 0, n);\r\n break;\r\n\r\n case GL_UNSIGNED_INT:\r\n case Uint32Array:\r\n result = new Uint32Array(alloc(4 * n), 0, n);\r\n break;\r\n\r\n case GL_FLOAT:\r\n case Float32Array:\r\n result = new Float32Array(alloc(4 * n), 0, n);\r\n break;\r\n\r\n default:\r\n return null;\r\n }\r\n\r\n if (result.length !== n)\r\n {\r\n return result.subarray(0, n);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function freeType(array)\r\n {\r\n free(array.buffer);\r\n }\r\n\r\n return {\r\n allocF32,\r\n allocType,\r\n unalloc: freeType,\r\n freeType,\r\n free\r\n };\r\n\r\n}\r\n\r\nexport const pool = createPool();\r\n\r\nexport const {\r\n allocF32,\r\n allocType,\r\n unalloc,\r\n freeType,\r\n free\r\n} = pool;\r\n"],"names":["loop","n","f","result","Array","i","nextPow16","v","log2","r","shift","createPool","bufferPool","free","buf","byteLength","push","alloc","sz","bin","length","pop","ArrayBuffer","allocF32","ScalarArray","ARRAY_TYPE","BYTES_PER_ELEMENT","Float32Array","subarray","allocType","type","GL_BYTE","Int8Array","GL_UNSIGNED_BYTE","Uint8Array","GL_SHORT","Int16Array","GL_UNSIGNED_SHORT","Uint16Array","GL_INT","Int32Array","GL_UNSIGNED_INT","Uint32Array","GL_FLOAT","freeType","array","buffer","unalloc","pool"],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Source: trinity/trinity/TriMath.cpp
|
|
2
|
+
// trinity/trinity/Curves/Tr2CurveRandomAxisRotation.cpp
|
|
3
|
+
//
|
|
4
|
+
// Carbon reaches for the C++ standard library's Mersenne Twister directly -
|
|
5
|
+
// `std::mt19937 randGen( seed )` in TriPerlinNoise's constructor (TriMath.cpp:
|
|
6
|
+
// 1023), and `std::default_random_engine`, which is mt19937 under MSVC, in
|
|
7
|
+
// Tr2CurveRandomAxisRotation (:5, :9). JavaScript ships no such generator and a
|
|
8
|
+
// persisted seed must reproduce Carbon's sequence exactly, so the engine itself
|
|
9
|
+
// is ported. That is the platform forcing the divergence, not a design choice.
|
|
10
|
+
//
|
|
11
|
+
// It is a CALLABLE, not a class, because that is how Carbon uses it - `randGen()`
|
|
12
|
+
// - and because the math tree declares namespaces of functions, not classes.
|
|
13
|
+
// Two independent copies of this generator existed before it was one: inline in
|
|
14
|
+
// noise.js and as a private class beside Tr2CurveRandomAxisRotation.
|
|
15
|
+
|
|
16
|
+
const random = {};
|
|
17
|
+
const STATE_WORDS = 624;
|
|
18
|
+
const TWIST_OFFSET = 397;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Builds a seeded MT19937 engine.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} seed Unsigned 32-bit seed.
|
|
24
|
+
* @returns {() => number} Returns the next 32-bit unsigned value on each call.
|
|
25
|
+
*/
|
|
26
|
+
random.mt19937 = function (seed) {
|
|
27
|
+
const state = new Uint32Array(STATE_WORDS);
|
|
28
|
+
state[0] = Number(seed) >>> 0;
|
|
29
|
+
for (let index = 1; index < STATE_WORDS; index++) {
|
|
30
|
+
const previous = state[index - 1] ^ state[index - 1] >>> 30;
|
|
31
|
+
state[index] = Math.imul(1812433253, previous) + index >>> 0;
|
|
32
|
+
}
|
|
33
|
+
let cursor = STATE_WORDS;
|
|
34
|
+
return function () {
|
|
35
|
+
if (cursor >= STATE_WORDS) {
|
|
36
|
+
for (let index = 0; index < STATE_WORDS; index++) {
|
|
37
|
+
const bits = state[index] & 0x80000000 | state[(index + 1) % STATE_WORDS] & 0x7fffffff;
|
|
38
|
+
state[index] = state[(index + TWIST_OFFSET) % STATE_WORDS] ^ bits >>> 1 ^ (bits & 1 ? 0x9908b0df : 0);
|
|
39
|
+
}
|
|
40
|
+
cursor = 0;
|
|
41
|
+
}
|
|
42
|
+
let value = state[cursor++];
|
|
43
|
+
value ^= value >>> 11;
|
|
44
|
+
value ^= value << 7 & 0x9d2c5680;
|
|
45
|
+
value ^= value << 15 & 0xefc60000;
|
|
46
|
+
value ^= value >>> 18;
|
|
47
|
+
return value >>> 0;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { random };
|
|
52
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sources":["../../../../src/global/math/random.js"],"sourcesContent":["// Source: trinity/trinity/TriMath.cpp\n// trinity/trinity/Curves/Tr2CurveRandomAxisRotation.cpp\n//\n// Carbon reaches for the C++ standard library's Mersenne Twister directly -\n// `std::mt19937 randGen( seed )` in TriPerlinNoise's constructor (TriMath.cpp:\n// 1023), and `std::default_random_engine`, which is mt19937 under MSVC, in\n// Tr2CurveRandomAxisRotation (:5, :9). JavaScript ships no such generator and a\n// persisted seed must reproduce Carbon's sequence exactly, so the engine itself\n// is ported. That is the platform forcing the divergence, not a design choice.\n//\n// It is a CALLABLE, not a class, because that is how Carbon uses it - `randGen()`\n// - and because the math tree declares namespaces of functions, not classes.\n// Two independent copies of this generator existed before it was one: inline in\n// noise.js and as a private class beside Tr2CurveRandomAxisRotation.\n\nexport const random = {};\n\nconst STATE_WORDS = 624;\nconst TWIST_OFFSET = 397;\n\n/**\n * Builds a seeded MT19937 engine.\n *\n * @param {number} seed Unsigned 32-bit seed.\n * @returns {() => number} Returns the next 32-bit unsigned value on each call.\n */\nrandom.mt19937 = function(seed)\n{\n const state = new Uint32Array(STATE_WORDS);\n\n state[0] = Number(seed) >>> 0;\n for (let index = 1; index < STATE_WORDS; index++)\n {\n const previous = state[index - 1] ^ state[index - 1] >>> 30;\n state[index] = Math.imul(1812433253, previous) + index >>> 0;\n }\n\n let cursor = STATE_WORDS;\n\n return function()\n {\n if (cursor >= STATE_WORDS)\n {\n for (let index = 0; index < STATE_WORDS; index++)\n {\n const bits = state[index] & 0x80000000 | state[(index + 1) % STATE_WORDS] & 0x7fffffff;\n state[index] = state[(index + TWIST_OFFSET) % STATE_WORDS] ^ bits >>> 1 ^ (bits & 1 ? 0x9908b0df : 0);\n }\n cursor = 0;\n }\n\n let value = state[cursor++];\n\n value ^= value >>> 11;\n value ^= value << 7 & 0x9d2c5680;\n value ^= value << 15 & 0xefc60000;\n value ^= value >>> 18;\n return value >>> 0;\n };\n};\n"],"names":["random","STATE_WORDS","TWIST_OFFSET","mt19937","seed","state","Uint32Array","Number","index","previous","Math","imul","cursor","bits","value"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,MAAMA,MAAM,GAAG;AAEtB,MAAMC,WAAW,GAAG,GAAG;AACvB,MAAMC,YAAY,GAAG,GAAG;;AAExB;AACA;AACA;AACA;AACA;AACA;AACAF,MAAM,CAACG,OAAO,GAAG,UAASC,IAAI,EAC9B;AACI,EAAA,MAAMC,KAAK,GAAG,IAAIC,WAAW,CAACL,WAAW,CAAC;EAE1CI,KAAK,CAAC,CAAC,CAAC,GAAGE,MAAM,CAACH,IAAI,CAAC,KAAK,CAAC;EAC7B,KAAK,IAAII,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGP,WAAW,EAAEO,KAAK,EAAE,EAChD;AACI,IAAA,MAAMC,QAAQ,GAAGJ,KAAK,CAACG,KAAK,GAAG,CAAC,CAAC,GAAGH,KAAK,CAACG,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;AAC3DH,IAAAA,KAAK,CAACG,KAAK,CAAC,GAAGE,IAAI,CAACC,IAAI,CAAC,UAAU,EAAEF,QAAQ,CAAC,GAAGD,KAAK,KAAK,CAAC;AAChE,EAAA;EAEA,IAAII,MAAM,GAAGX,WAAW;AAExB,EAAA,OAAO,YACP;IACI,IAAIW,MAAM,IAAIX,WAAW,EACzB;MACI,KAAK,IAAIO,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGP,WAAW,EAAEO,KAAK,EAAE,EAChD;AACI,QAAA,MAAMK,IAAI,GAAGR,KAAK,CAACG,KAAK,CAAC,GAAG,UAAU,GAAGH,KAAK,CAAC,CAACG,KAAK,GAAG,CAAC,IAAIP,WAAW,CAAC,GAAG,UAAU;QACtFI,KAAK,CAACG,KAAK,CAAC,GAAGH,KAAK,CAAC,CAACG,KAAK,GAAGN,YAAY,IAAID,WAAW,CAAC,GAAGY,IAAI,KAAK,CAAC,IAAIA,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;AACzG,MAAA;AACAD,MAAAA,MAAM,GAAG,CAAC;AACd,IAAA;AAEA,IAAA,IAAIE,KAAK,GAAGT,KAAK,CAACO,MAAM,EAAE,CAAC;IAE3BE,KAAK,IAAIA,KAAK,KAAK,EAAE;AACrBA,IAAAA,KAAK,IAAIA,KAAK,IAAI,CAAC,GAAG,UAAU;AAChCA,IAAAA,KAAK,IAAIA,KAAK,IAAI,EAAE,GAAG,UAAU;IACjCA,KAAK,IAAIA,KAAK,KAAK,EAAE;IACrB,OAAOA,KAAK,KAAK,CAAC;EACtB,CAAC;AACL,CAAC;;;;"}
|
package/dist/global/math/tri3.js
CHANGED
|
@@ -208,6 +208,13 @@ tri3.intersectsOrientedBox = function () {
|
|
|
208
208
|
// Nine edge-cross axes, with Carbon's own vertex pairs. Built once: the
|
|
209
209
|
// vectors are stable across calls, and a decal tests every triangle of a
|
|
210
210
|
// hull against this.
|
|
211
|
+
//
|
|
212
|
+
// Each row is read positionally in the loop below, which is what the old
|
|
213
|
+
// destructuring form used to name:
|
|
214
|
+
//
|
|
215
|
+
// [ edge, ax, bx, ay, by, az, bz ]
|
|
216
|
+
//
|
|
217
|
+
// one vertex pair per box axis: x at [1],[2], y at [3],[4], z at [5],[6].
|
|
211
218
|
const edgeAxes = [[e[0], v[0], v[2], v[0], v[2], v[1], v[2]], [e[1], v[0], v[2], v[0], v[2], v[0], v[1]], [e[2], v[0], v[1], v[0], v[1], v[1], v[2]]];
|
|
212
219
|
|
|
213
220
|
// A separating plane at the cross product of a triangle edge and a unit-box
|
|
@@ -252,13 +259,20 @@ tri3.intersectsOrientedBox = function () {
|
|
|
252
259
|
}
|
|
253
260
|
if (vec3.dot(vmin, normal) > 0) return false;
|
|
254
261
|
if (vec3.dot(vmax, normal) < 0) return false;
|
|
255
|
-
|
|
262
|
+
|
|
263
|
+
// An indexed loop, NOT `for...of` with destructuring. A decal runs this
|
|
264
|
+
// over every triangle of a hull, so this is the hottest loop in the file,
|
|
265
|
+
// and that form costs an array iterator plus a seven-way destructure on
|
|
266
|
+
// every call. The rows are read positionally below for the same reason.
|
|
267
|
+
for (let axis = 0; axis < edgeAxes.length; axis++) {
|
|
268
|
+
const row = edgeAxes[axis];
|
|
269
|
+
const edge = row[0];
|
|
256
270
|
const fex = Math.abs(edge[0]);
|
|
257
271
|
const fey = Math.abs(edge[1]);
|
|
258
272
|
const fez = Math.abs(edge[2]);
|
|
259
|
-
if (!axisTest(edge[2], -edge[1], fez, fey,
|
|
260
|
-
if (!axisTest(-edge[2], edge[0], fez, fex,
|
|
261
|
-
if (!axisTest(edge[1], -edge[0], fey, fex,
|
|
273
|
+
if (!axisTest(edge[2], -edge[1], fez, fey, row[1], row[2], 1, 2)) return false;
|
|
274
|
+
if (!axisTest(-edge[2], edge[0], fez, fex, row[3], row[4], 0, 2)) return false;
|
|
275
|
+
if (!axisTest(edge[1], -edge[0], fey, fex, row[5], row[6], 0, 1)) return false;
|
|
262
276
|
}
|
|
263
277
|
return true;
|
|
264
278
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tri3.js","sources":["../../../../src/global/math/tri3.js"],"sourcesContent":["import { vec3 } from \"./vec3.js\";\nimport { mat3 } from \"./mat3.js\";\nimport { pln } from \"./pln.js\";\nimport { lne3 } from \"./lne3.js\";\nimport { pool } from \"./pool.js\";\n\n/**\n * 3d Triangle\n *\n * @typedef {Float32Array} tri3\n */\n\nexport const tri3 = {};\n\n/**\n * Allocates a pooled tri3\n * @returns {Float32Array|tri3}\n */\ntri3.alloc = function()\n{\n return pool.allocF32(9);\n};\n\n/**\n * Unallocates a pooled tri3\n * @param {tri3|Float32Array} a\n */\ntri3.unalloc = function(a)\n{\n pool.freeType(a);\n};\n\n/**\n * Gets a subarray of a tri3's first vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v1 = lne3.$start;\n\n/**\n * Gets a subarray of a tri3's second vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v2 = lne3.$end;\n\n/**\n * Gets a subarray of a tri3's third vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v3 = function(a)\n{\n return a.subarray(6, 9);\n};\n\n/**\n * Gets the area of a triangle\n *\n * @param {tri3} a\n * @returns {number}\n */\ntri3.area = function(a)\n{\n let ax = a[6] - a[3],\n ay = a[7] - a[4],\n az = a[8] - a[5],\n bx = a[0] - a[3],\n by = a[1] - a[4],\n bz = a[2] - a[5];\n // Cross product\n let x = ay * bz - az * by,\n y = az * bx - ax * bz,\n z = ax * by - ay * bx;\n // Return half length\n return Math.sqrt(x * x + y * y + z * z) * 0.5;\n};\n\n/**\n * Creates a tri3\n *\n * @returns {tri3}\n */\ntri3.create = function()\n{\n let out = new Float32Array(9);\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n return out;\n};\n\n/**\n * Clones a tri3\n *\n * @param {tri3} a\n * @returns {tri3}\n */\ntri3.clone = mat3.clone;\n\n/**\n * Checks if a tri3 contains a point\n *\n * @param {tri3} a\n * @param {vec3} point\n * @returns {boolean}\n */\ntri3.contains = (function()\n{\n let vec3_0;\n return function(a, point)\n {\n if (!vec3_0) vec3_0 = vec3.create();\n tri3.getBaryCentricCoordinates(vec3_0, a, point);\n return (vec3_0[0] >= 0) && (vec3_0[1] >= 0) && ((vec3_0[0] + vec3_0[1]) <= 1);\n };\n})();\n\n/**\n * Copies a tri3\n *\n * @param {tri3} a\n * @param {tri3} b\n * @returns {tri3} a\n */\ntri3.copy = mat3.copy;\n\n/**\n * Sets a tri3 from vertices\n *\n * @param {tri3} out\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n * @returns {tri3} out\n */\ntri3.fromVertices = function(out, v1, v2, v3)\n{\n out[0] = v1[0];\n out[1] = v1[1];\n out[2] = v1[2];\n out[3] = v2[0];\n out[4] = v2[1];\n out[5] = v2[2];\n out[6] = v3[0];\n out[7] = v3[1];\n out[8] = v3[2];\n return out;\n};\n\n/**\n * Sets a tri3 from an array at an option offset\n *\n * @param {tri3} out\n * @param {Array} arr\n * @param {number} [offset=0]\n * @returns {tri3} out\n */\n/**\n * Whether a triangle overlaps an axis-aligned box.\n *\n * A cheap reject only: it tests the box's three slabs and answers true whenever\n * no slab separates the triangle, so a triangle that straddles a corner without\n * touching the box still passes. Carbon uses it as the broad phase in front of\n * the oriented-box test (BoundingBox.cpp:569-588) and so should any caller.\n *\n * @param {tri3} a\n * @param {vec3} min\n * @param {vec3} max\n * @returns {boolean} false only when a slab separates the triangle\n */\ntri3.intersectsBounds = function(a, min, max)\n{\n for (let axis = 0; axis < 3; axis++)\n {\n const lo = min[axis];\n const hi = max[axis];\n\n if (a[axis] < lo && a[axis + 3] < lo && a[axis + 6] < lo) return false;\n if (a[axis] > hi && a[axis + 3] > hi && a[axis + 6] > hi) return false;\n }\n\n return true;\n};\n\n/**\n * Whether a triangle overlaps an oriented box, by separating-axis test.\n *\n * The box is given as the INVERSE of the transform that maps the unit box\n * (-1,-1,-1)..(1,1,1) onto it, so the triangle is moved into unit-box space and\n * tested there - which is why no box axes appear below.\n *\n * Ported from Carbon (BoundingBox.cpp:626-732) including the vertex pairs its\n * edge tests use. Those pairs are NOT the symmetric set a textbook\n * separating-axis test would pick, and two of them look like slips; they are\n * reproduced exactly because this decides which hull triangles a decal covers,\n * and a \"corrected\" test would silently disagree with the client about where a\n * decal reaches.\n *\n * @param {tri3} a\n * @param {mat4} invOrientedBox inverse of the box transform\n * @returns {boolean} true when no separating axis was found\n */\ntri3.intersectsOrientedBox = (function()\n{\n const v = [ vec3.create(), vec3.create(), vec3.create() ];\n const e = [ vec3.create(), vec3.create(), vec3.create() ];\n const normal = vec3.create();\n const vmin = vec3.create();\n const vmax = vec3.create();\n\n // Nine edge-cross axes, with Carbon's own vertex pairs. Built once: the\n // vectors are stable across calls, and a decal tests every triangle of a\n // hull against this.\n const edgeAxes = [\n [ e[0], v[0], v[2], v[0], v[2], v[1], v[2] ],\n [ e[1], v[0], v[2], v[0], v[2], v[0], v[1] ],\n [ e[2], v[0], v[1], v[0], v[1], v[1], v[2] ]\n ];\n\n // A separating plane at the cross product of a triangle edge and a unit-box\n // axis. The box half-extent is 1 on every axis, so the radius is just\n // |a| + |b| (Carbon's AxisTest, BoundingBox.cpp:601-611).\n function axisTest(ca, cb, fa, fb, p, q, axis0, axis1)\n {\n let p0 = ca * p[axis0] + cb * p[axis1];\n let p2 = ca * q[axis0] + cb * q[axis1];\n\n if (p2 < p0)\n {\n const swap = p0;\n p0 = p2;\n p2 = swap;\n }\n\n const rad = fa + fb;\n\n return !(p0 > rad || p2 < -rad);\n }\n\n return function(a, invOrientedBox)\n {\n for (let i = 0; i < 3; i++)\n {\n vec3.set(v[i], a[i * 3], a[i * 3 + 1], a[i * 3 + 2]);\n vec3.transformMat4(v[i], v[i], invOrientedBox);\n }\n\n // The unit box's own six faces.\n for (let axis = 0; axis < 3; axis++)\n {\n if (v[0][axis] < -1 && v[1][axis] < -1 && v[2][axis] < -1) return false;\n if (v[0][axis] > 1 && v[1][axis] > 1 && v[2][axis] > 1) return false;\n }\n\n vec3.subtract(e[0], v[1], v[0]);\n vec3.subtract(e[1], v[2], v[1]);\n vec3.subtract(e[2], v[0], v[2]);\n\n // The triangle's own plane.\n vec3.cross(normal, e[0], e[1]);\n\n for (let i = 0; i < 3; i++)\n {\n if (normal[i] > 0)\n {\n vmin[i] = -1 - v[0][i];\n vmax[i] = 1 - v[0][i];\n }\n else\n {\n vmin[i] = 1 - v[0][i];\n vmax[i] = -1 - v[0][i];\n }\n }\n\n if (vec3.dot(vmin, normal) > 0) return false;\n if (vec3.dot(vmax, normal) < 0) return false;\n\n for (const [ edge, ax, bx, ay, by, az, bz ] of edgeAxes)\n {\n const fex = Math.abs(edge[0]);\n const fey = Math.abs(edge[1]);\n const fez = Math.abs(edge[2]);\n\n if (!axisTest(edge[2], -edge[1], fez, fey, ax, bx, 1, 2)) return false;\n if (!axisTest(-edge[2], edge[0], fez, fex, ay, by, 0, 2)) return false;\n if (!axisTest(edge[1], -edge[0], fey, fex, az, bz, 0, 1)) return false;\n }\n\n return true;\n };\n})();\n\ntri3.fromArray = mat3.fromArray;\n\n/**\n * Gets bary centric coordinates\n *\n * @author three.js (converted)\n * @param {vec3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {tri3} out\n */\ntri3.getBaryCentricCoordinates = function(out, a, point)\n{\n let ax = a[6] - a[0],\n ay = a[7] - a[1],\n az = a[8] - a[2],\n\n bx = a[3] - a[0],\n by = a[4] - a[1],\n bz = a[5] - a[2],\n\n cx = point[0] - a[0],\n cy = point[1] - a[1],\n cz = point[2] - a[2];\n\n let dot00 = ax * ax + ay * ay + az * az,\n dot01 = ax * bx + ay * by + az * bz,\n dot02 = ax * cx + ay * cy + az * cz,\n dot11 = bx * bx + by * by + bz * bz,\n dot12 = bx * cx + by * cy + bz * cz;\n\n let denom = (dot00 * dot11 - dot01 * dot01);\n\n if (denom === 0)\n {\n out[0] = -2;\n out[1] = -1;\n out[2] = -1;\n throw new Error(\"Denominator error\");\n }\n else\n {\n let invDenom = 1 / denom;\n let u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n let v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n out[0] = 1 - u - v;\n out[1] = v;\n out[2] = u;\n }\n return out;\n};\n\n/**\n *\n * @author three.js (converted)\n * @param {lne3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {*}\n */\ntri3.getClosestEdgeToPoint = (function()\n{\n let v0, v1, edgeList;\n\n return function getClosestEdgeToPoint(out, a, point, debug)\n {\n if (!v0)\n {\n v0 = vec3.create();\n v1 = vec3.create();\n edgeList = [ lne3.create(), lne3.create(), lne3.create() ];\n }\n\n // Get the closest point on the triangle to the supplied point\n let closestPointOnTriangle = tri3.getClosestPointToPoint(v0, a, point);\n\n // Convert the triangle's vertices to edges\n lne3.set(edgeList[0], a[0], a[1], a[2], a[3], a[4], a[5]); // vert a - vert b\n lne3.set(edgeList[1], a[3], a[4], a[5], a[6], a[7], a[8]); // vert b - vert c\n lne3.set(edgeList[2], a[6], a[7], a[8], a[0], a[1], a[2]); // vert c - vert a\n\n let minDistance = Infinity,\n edgeIndex;\n\n for (let i = 0; i < edgeList.length; i++)\n {\n // Get the closest point on the triangles edge to the closest point on the triangle to the supplied point\n let closestPointOnLine = lne3.getClosestPointToPoint(v1, edgeList[i], closestPointOnTriangle, true);\n let distance = vec3.squaredDistance(closestPointOnLine, closestPointOnTriangle);\n if (distance < minDistance)\n {\n minDistance = distance;\n out[0] = edgeList[i][0];\n out[1] = edgeList[i][1];\n out[2] = edgeList[i][2];\n out[3] = edgeList[i][3];\n out[4] = edgeList[i][4];\n out[5] = edgeList[i][5];\n edgeIndex = i;\n }\n }\n\n // Temporary\n if (debug)\n {\n switch(edgeIndex)\n {\n case 0:\n debug.edgeStart = 0;\n debug.edgeEnd = 1;\n break;\n\n case 1:\n debug.edgeStart = 1;\n debug.edgeEnd = 2;\n break;\n\n default:\n debug.edgeStart = 2;\n debug.edgeEnd = 0;\n break;\n }\n }\n\n return out;\n };\n})();\n\n/**\n * Gets the closest point on a triangle to another point\n *\n * @author three.js (converted)\n * @param {vec3} out - receiving vec3\n * @param {vec3} a - tri3 to operate on\n * @param {vec3} point - the point\n * @returns {vec3} vecOut - receiving vec3\n */\ntri3.getClosestPointToPoint = (function()\n{\n let plane, edgeList, projectedPoint, closestPoint, vec3_0, vec3_1, vec3_2;\n\n return function getClosestPointToPoint(out, a, point)\n {\n if (!plane)\n {\n plane = pln.create();\n edgeList = [ lne3.create(), lne3.create(), lne3.create() ];\n projectedPoint = vec3.create();\n closestPoint = vec3.create();\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n // Replace with subarray tri3.v1 .v2 .v3 ?\n tri3.getV1(vec3_0, a);\n tri3.getV2(vec3_1, a);\n tri3.getV3(vec3_2, a);\n\n // project the point onto the plane of the triangle\n pln.fromCoplanarPoints(plane, vec3_0, vec3_1, vec3_2);\n pln.getProjectedPoint(projectedPoint, plane, point);\n\n // check if the projection lies within the triangle\n if (tri3.contains(a, projectedPoint) === true)\n {\n out[0] = projectedPoint[0];\n out[1] = projectedPoint[1];\n out[2] = projectedPoint[2];\n }\n // if not, the point falls outside the triangle.\n // the result is the closest point to the triangle's edges or vertices\n else\n {\n lne3.set(edgeList[0], a[0], a[1], a[2], a[3], a[4], a[5]);\n lne3.set(edgeList[1], a[3], a[4], a[5], a[6], a[7], a[8]);\n lne3.set(edgeList[2], a[6], a[7], a[8], a[0], a[1], a[2]);\n\n let minDistance = Infinity;\n for (let i = 0; i < edgeList.length; i++)\n {\n lne3.getClosestPointToPoint(closestPoint, edgeList[i], projectedPoint, true);\n let distance = vec3.squaredDistance(projectedPoint, closestPoint);\n if (distance < minDistance)\n {\n minDistance = distance;\n out[0] = closestPoint[0];\n out[1] = closestPoint[1];\n out[2] = closestPoint[2];\n }\n }\n }\n return out;\n };\n})();\n\n/**\n * Gets the closest vertex to a given point\n *\n * @param {vec3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {vec3} out\n */\ntri3.getClosestVertexToPoint = (function()\n{\n let vec3_0, vec3_1, vec3_2;\n\n return function(out, a, point, debug)\n {\n if (!vec3_0)\n {\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n // Get the closest point on the triangle to the supplied point\n tri3.getClosestPointToPoint(out, a, point);\n\n let minDistance = Infinity,\n distance,\n x, y, z,\n vertices = [\n tri3.getV1(vec3_0, a),\n tri3.getV2(vec3_1, a),\n tri3.getV3(vec3_2, a)\n ];\n\n let foundIndex;\n // Find the closest triangle vertex\n for (let i = 0; i < vertices.length; i++)\n {\n distance = vec3.squaredDistance(vertices[i], out);\n if (distance < minDistance)\n {\n minDistance = distance;\n x = vertices[i][0];\n y = vertices[i][1];\n z = vertices[i][2];\n foundIndex = i;\n }\n }\n\n if (debug) debug.closest = foundIndex;\n\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n };\n})();\n\n/**\n * Sets a vec3 as the midpoint of a triangle\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - tri3 to get the midpoint of -\n * @returns {vec3} out - receiving vec3\n */\ntri3.getMidpoint = function(out, a)\n{\n let s = 1 / 3;\n out[0] = (a[0] + a[3] + a[6]) * s;\n out[1] = (a[1] + a[4] + a[7]) * s;\n out[2] = (a[2] + a[5] + a[8]) * s;\n return out;\n};\n\nlet tri3_0 = null;\n\n/**\n * Gets normal vertices\n *\n * @param {vec3} out\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n * @return {vec3} out\n */\ntri3.getNormalFromVertices = function(out, v1, v2, v3)\n{\n if (!tri3_0) tri3_0 = tri3.create();\n tri3.fromVertices(tri3_0, v1, v2, v3);\n return tri3.getNormal(out, tri3_0);\n};\n\n/**\n * Gets a triangle's normal\n *\n * @param {vec3} out\n * @param {tri3} a\n * @returns {vec3} out\n */\ntri3.getNormal = function(out, a)\n{\n let ax = a[6] - a[3],\n ay = a[7] - a[4],\n az = a[8] - a[5],\n bx = a[0] - a[3],\n by = a[1] - a[4],\n bz = a[2] - a[5];\n\n // Get cross product\n let x = ay * bz - az * by,\n y = az * bx - ax * bz,\n z = ax * by - ay * bx;\n\n // Normalize\n let len = x * x + y * y + z * z;\n if (len > 0)\n {\n len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n }\n else\n {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n throw new Error(\"Normalization error\");\n }\n return out;\n};\n\n/**\n * Sets a vec3 with the tri3's first vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV1 = lne3.getStart;\n\n/**\n * Sets a vec3 with the tri3's second vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV2 = lne3.getEnd;\n\n/**\n * Sets a vec3 with the tri3's third vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} v - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV3 = function(out, v)\n{\n out[0] = v[6];\n out[1] = v[7];\n out[2] = v[8];\n return out;\n};\n\n/**\n * Sets the first position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV1 = lne3.setStart;\n\n/**\n * Sets the second position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV2 = lne3.setEnd;\n\n/**\n * Sets the second position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV3 = function(out, v)\n{\n out[6] = v[0];\n out[7] = v[1];\n out[8] = v[2];\n return out;\n};\n\n/**\n * Sets an array at an optional offset\n *\n * @param {mat3} a\n * @param {Array} arr\n * @param {number} [index=0]\n * @returns {mat3} a\n */\ntri3.toArray = mat3.toArray;\n\n/**\n * Extracts the vertices of a tri3\n *\n * @param {tri3} a\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n */\ntri3.toVertices = function(a, v1, v2, v3)\n{\n v1[0] = a[0];\n v1[1] = a[1];\n v1[2] = a[2];\n v2[0] = a[3];\n v2[1] = a[4];\n v2[2] = a[5];\n v3[0] = a[6];\n v3[1] = a[7];\n v3[2] = a[8];\n return a;\n};\n\nlet vec3_0, vec3_1, vec3_2;\n\n/**\n * Transforms a tri3 by a mat4\n * TODO: Optimize\n * @param {tri3} out\n * @param {tri3} a\n * @param {mat4} m\n * @return {tri3}\n */\ntri3.transformMat4 = function(out, a, m)\n{\n if (!vec3_0)\n {\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n tri3.getV1(vec3_0, a);\n tri3.getV2(vec3_1, a);\n tri3.getV3(vec3_2, a);\n\n vec3.transformMat4(vec3_0, vec3_0, m);\n vec3.transformMat4(vec3_1, vec3_1, m);\n vec3.transformMat4(vec3_2, vec3_2, m);\n\n return tri3.fromVertices(out, vec3_0, vec3_1, vec3_2);\n};\n\nexport const {\n alloc,\n unalloc,\n $v1,\n $v2,\n $v3,\n area,\n create,\n clone,\n contains,\n copy,\n fromVertices,\n fromArray,\n getBaryCentricCoordinates,\n getClosestEdgeToPoint,\n getClosestPointToPoint,\n getClosestVertexToPoint,\n getMidpoint,\n getNormalFromVertices,\n getNormal,\n getV1,\n intersectsBounds,\n intersectsOrientedBox,\n getV2,\n getV3,\n setV1,\n setV2,\n setV3,\n toArray,\n toVertices,\n transformMat4\n} = tri3;\n\n"],"names":["tri3","alloc","pool","allocF32","unalloc","a","freeType","$v1","lne3","$start","$v2","$end","$v3","subarray","area","ax","ay","az","bx","by","bz","x","y","z","Math","sqrt","create","out","Float32Array","clone","mat3","contains","vec3_0","point","vec3","getBaryCentricCoordinates","copy","fromVertices","v1","v2","v3","intersectsBounds","min","max","axis","lo","hi","intersectsOrientedBox","v","e","normal","vmin","vmax","edgeAxes","axisTest","ca","cb","fa","fb","p","q","axis0","axis1","p0","p2","swap","rad","invOrientedBox","i","set","transformMat4","subtract","cross","dot","edge","fex","abs","fey","fez","fromArray","cx","cy","cz","dot00","dot01","dot02","dot11","dot12","denom","Error","invDenom","u","getClosestEdgeToPoint","v0","edgeList","debug","closestPointOnTriangle","getClosestPointToPoint","minDistance","Infinity","edgeIndex","length","closestPointOnLine","distance","squaredDistance","edgeStart","edgeEnd","plane","projectedPoint","closestPoint","vec3_1","vec3_2","pln","getV1","getV2","getV3","fromCoplanarPoints","getProjectedPoint","getClosestVertexToPoint","vertices","foundIndex","closest","getMidpoint","s","tri3_0","getNormalFromVertices","getNormal","len","getStart","getEnd","setV1","setStart","setV2","setEnd","setV3","toArray","toVertices","m"],"mappings":";;;;;;AAMA;AACA;AACA;AACA;AACA;;AAEO,MAAMA,IAAI,GAAG;;AAEpB;AACA;AACA;AACA;AACAA,IAAI,CAACC,KAAK,GAAG,YACb;AACI,EAAA,OAAOC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACAH,IAAI,CAACI,OAAO,GAAG,UAASC,CAAC,EACzB;AACIH,EAAAA,IAAI,CAACI,QAAQ,CAACD,CAAC,CAAC;AACpB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACAL,IAAI,CAACO,GAAG,GAAGC,IAAI,CAACC,MAAM;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACAT,IAAI,CAACU,GAAG,GAAGF,IAAI,CAACG,IAAI;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACAX,IAAI,CAACY,GAAG,GAAG,UAASP,CAAC,EACrB;AACI,EAAA,OAAOA,CAAC,CAACQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACAb,IAAI,CAACc,IAAI,GAAG,UAAST,CAAC,EACtB;EACI,IAAIU,EAAE,GAAGV,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBW,EAAE,GAAGX,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBY,EAAE,GAAGZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBa,EAAE,GAAGb,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBc,EAAE,GAAGd,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBe,EAAE,GAAGf,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,IAAIgB,CAAC,GAAGL,EAAE,GAAGI,EAAE,GAAGH,EAAE,GAAGE,EAAE;AACrBG,IAAAA,CAAC,GAAGL,EAAE,GAAGC,EAAE,GAAGH,EAAE,GAAGK,EAAE;AACrBG,IAAAA,CAAC,GAAGR,EAAE,GAAGI,EAAE,GAAGH,EAAE,GAAGE,EAAE;AACzB;AACA,EAAA,OAAOM,IAAI,CAACC,IAAI,CAACJ,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC,GAAG,GAAG;AACjD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAvB,IAAI,CAAC0B,MAAM,GAAG,YACd;AACI,EAAA,IAAIC,GAAG,GAAG,IAAIC,YAAY,CAAC,CAAC,CAAC;AAC7BD,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACV,EAAA,OAAOA,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAAC6B,KAAK,GAAGC,IAAI,CAACD,KAAK;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA7B,IAAI,CAAC+B,QAAQ,GAAI,YACjB;AACI,EAAA,IAAIC,MAAM;AACV,EAAA,OAAO,UAAS3B,CAAC,EAAE4B,KAAK,EACxB;IACI,IAAI,CAACD,MAAM,EAAEA,MAAM,GAAGE,IAAI,CAACR,MAAM,EAAE;IACnC1B,IAAI,CAACmC,yBAAyB,CAACH,MAAM,EAAE3B,CAAC,EAAE4B,KAAK,CAAC;IAChD,OAAQD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAMA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAE,IAAMA,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,IAAK,CAAE;EACjF,CAAC;AACL,CAAC,EAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACAhC,IAAI,CAACoC,IAAI,GAAGN,IAAI,CAACM,IAAI;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACApC,IAAI,CAACqC,YAAY,GAAG,UAASV,GAAG,EAAEW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAC5C;AACIb,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGW,EAAE,CAAC,CAAC,CAAC;AACdX,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGW,EAAE,CAAC,CAAC,CAAC;AACdX,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGW,EAAE,CAAC,CAAC,CAAC;AACdX,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGY,EAAE,CAAC,CAAC,CAAC;AACdZ,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGY,EAAE,CAAC,CAAC,CAAC;AACdZ,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGY,EAAE,CAAC,CAAC,CAAC;AACdZ,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,EAAE,CAAC,CAAC,CAAC;AACdb,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,EAAE,CAAC,CAAC,CAAC;AACdb,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,EAAE,CAAC,CAAC,CAAC;AACd,EAAA,OAAOb,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACyC,gBAAgB,GAAG,UAASpC,CAAC,EAAEqC,GAAG,EAAEC,GAAG,EAC5C;EACI,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;AACI,IAAA,MAAMC,EAAE,GAAGH,GAAG,CAACE,IAAI,CAAC;AACpB,IAAA,MAAME,EAAE,GAAGH,GAAG,CAACC,IAAI,CAAC;IAEpB,IAAIvC,CAAC,CAACuC,IAAI,CAAC,GAAGC,EAAE,IAAIxC,CAAC,CAACuC,IAAI,GAAG,CAAC,CAAC,GAAGC,EAAE,IAAIxC,CAAC,CAACuC,IAAI,GAAG,CAAC,CAAC,GAAGC,EAAE,EAAE,OAAO,KAAK;IACtE,IAAIxC,CAAC,CAACuC,IAAI,CAAC,GAAGE,EAAE,IAAIzC,CAAC,CAACuC,IAAI,GAAG,CAAC,CAAC,GAAGE,EAAE,IAAIzC,CAAC,CAACuC,IAAI,GAAG,CAAC,CAAC,GAAGE,EAAE,EAAE,OAAO,KAAK;AAC1E,EAAA;AAEA,EAAA,OAAO,IAAI;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA9C,IAAI,CAAC+C,qBAAqB,GAAI,YAC9B;EACI,MAAMC,CAAC,GAAG,CAAEd,IAAI,CAACR,MAAM,EAAE,EAAEQ,IAAI,CAACR,MAAM,EAAE,EAAEQ,IAAI,CAACR,MAAM,EAAE,CAAE;EACzD,MAAMuB,CAAC,GAAG,CAAEf,IAAI,CAACR,MAAM,EAAE,EAAEQ,IAAI,CAACR,MAAM,EAAE,EAAEQ,IAAI,CAACR,MAAM,EAAE,CAAE;AACzD,EAAA,MAAMwB,MAAM,GAAGhB,IAAI,CAACR,MAAM,EAAE;AAC5B,EAAA,MAAMyB,IAAI,GAAGjB,IAAI,CAACR,MAAM,EAAE;AAC1B,EAAA,MAAM0B,IAAI,GAAGlB,IAAI,CAACR,MAAM,EAAE;;AAE1B;AACA;AACA;EACA,MAAM2B,QAAQ,GAAG,CACb,CAAEJ,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAE,EAC5C,CAAEC,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAE,EAC5C,CAAEC,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAE,CAC/C;;AAED;AACA;AACA;AACA,EAAA,SAASM,QAAQA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EACpD;AACI,IAAA,IAAIC,EAAE,GAAGR,EAAE,GAAGI,CAAC,CAACE,KAAK,CAAC,GAAGL,EAAE,GAAGG,CAAC,CAACG,KAAK,CAAC;AACtC,IAAA,IAAIE,EAAE,GAAGT,EAAE,GAAGK,CAAC,CAACC,KAAK,CAAC,GAAGL,EAAE,GAAGI,CAAC,CAACE,KAAK,CAAC;IAEtC,IAAIE,EAAE,GAAGD,EAAE,EACX;MACI,MAAME,IAAI,GAAGF,EAAE;AACfA,MAAAA,EAAE,GAAGC,EAAE;AACPA,MAAAA,EAAE,GAAGC,IAAI;AACb,IAAA;AAEA,IAAA,MAAMC,GAAG,GAAGT,EAAE,GAAGC,EAAE;IAEnB,OAAO,EAAEK,EAAE,GAAGG,GAAG,IAAIF,EAAE,GAAG,CAACE,GAAG,CAAC;AACnC,EAAA;AAEA,EAAA,OAAO,UAAS7D,CAAC,EAAE8D,cAAc,EACjC;IACI,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACIlC,MAAAA,IAAI,CAACmC,GAAG,CAACrB,CAAC,CAACoB,CAAC,CAAC,EAAE/D,CAAC,CAAC+D,CAAC,GAAG,CAAC,CAAC,EAAE/D,CAAC,CAAC+D,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE/D,CAAC,CAAC+D,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpDlC,MAAAA,IAAI,CAACoC,aAAa,CAACtB,CAAC,CAACoB,CAAC,CAAC,EAAEpB,CAAC,CAACoB,CAAC,CAAC,EAAED,cAAc,CAAC;AAClD,IAAA;;AAEA;IACA,KAAK,IAAIvB,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;AACI,MAAA,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,EAAE,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,EAAE,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK;AACvE,MAAA,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,CAAC,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,CAAC,IAAII,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;AACxE,IAAA;AAEAV,IAAAA,IAAI,CAACqC,QAAQ,CAACtB,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/Bd,IAAAA,IAAI,CAACqC,QAAQ,CAACtB,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/Bd,IAAAA,IAAI,CAACqC,QAAQ,CAACtB,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE/B;AACAd,IAAAA,IAAI,CAACsC,KAAK,CAACtB,MAAM,EAAED,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,KAAK,IAAImB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACI,MAAA,IAAIlB,MAAM,CAACkB,CAAC,CAAC,GAAG,CAAC,EACjB;AACIjB,QAAAA,IAAI,CAACiB,CAAC,CAAC,GAAG,EAAE,GAAGpB,CAAC,CAAC,CAAC,CAAC,CAACoB,CAAC,CAAC;AACtBhB,QAAAA,IAAI,CAACgB,CAAC,CAAC,GAAG,CAAC,GAAGpB,CAAC,CAAC,CAAC,CAAC,CAACoB,CAAC,CAAC;AACzB,MAAA,CAAC,MAED;AACIjB,QAAAA,IAAI,CAACiB,CAAC,CAAC,GAAG,CAAC,GAAGpB,CAAC,CAAC,CAAC,CAAC,CAACoB,CAAC,CAAC;AACrBhB,QAAAA,IAAI,CAACgB,CAAC,CAAC,GAAG,EAAE,GAAGpB,CAAC,CAAC,CAAC,CAAC,CAACoB,CAAC,CAAC;AAC1B,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIlC,IAAI,CAACuC,GAAG,CAACtB,IAAI,EAAED,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;AAC5C,IAAA,IAAIhB,IAAI,CAACuC,GAAG,CAACrB,IAAI,EAAEF,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;AAE5C,IAAA,KAAK,MAAM,CAAEwB,IAAI,EAAE3D,EAAE,EAAEG,EAAE,EAAEF,EAAE,EAAEG,EAAE,EAAEF,EAAE,EAAEG,EAAE,CAAE,IAAIiC,QAAQ,EACvD;MACI,MAAMsB,GAAG,GAAGnD,IAAI,CAACoD,GAAG,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7B,MAAMG,GAAG,GAAGrD,IAAI,CAACoD,GAAG,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7B,MAAMI,GAAG,GAAGtD,IAAI,CAACoD,GAAG,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAA,IAAI,CAACpB,QAAQ,CAACoB,IAAI,CAAC,CAAC,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC,CAAC,EAAEI,GAAG,EAAED,GAAG,EAAE9D,EAAE,EAAEG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;AACtE,MAAA,IAAI,CAACoC,QAAQ,CAAC,CAACoB,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEI,GAAG,EAAEH,GAAG,EAAE3D,EAAE,EAAEG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;AACtE,MAAA,IAAI,CAACmC,QAAQ,CAACoB,IAAI,CAAC,CAAC,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC,CAAC,EAAEG,GAAG,EAAEF,GAAG,EAAE1D,EAAE,EAAEG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;AAC1E,IAAA;AAEA,IAAA,OAAO,IAAI;EACf,CAAC;AACL,CAAC,EAAG;AAEJpB,IAAI,CAAC+E,SAAS,GAAGjD,IAAI,CAACiD,SAAS;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA/E,IAAI,CAACmC,yBAAyB,GAAG,UAASR,GAAG,EAAEtB,CAAC,EAAE4B,KAAK,EACvD;EACI,IAAIlB,EAAE,GAAGV,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBW,EAAE,GAAGX,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBY,EAAE,GAAGZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAEhBa,EAAE,GAAGb,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBc,EAAE,GAAGd,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBe,EAAE,GAAGf,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAEhB2E,EAAE,GAAG/C,KAAK,CAAC,CAAC,CAAC,GAAG5B,CAAC,CAAC,CAAC,CAAC;IACpB4E,EAAE,GAAGhD,KAAK,CAAC,CAAC,CAAC,GAAG5B,CAAC,CAAC,CAAC,CAAC;IACpB6E,EAAE,GAAGjD,KAAK,CAAC,CAAC,CAAC,GAAG5B,CAAC,CAAC,CAAC,CAAC;AAExB,EAAA,IAAI8E,KAAK,GAAGpE,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE;IACnCmE,KAAK,GAAGrE,EAAE,GAAGG,EAAE,GAAGF,EAAE,GAAGG,EAAE,GAAGF,EAAE,GAAGG,EAAE;IACnCiE,KAAK,GAAGtE,EAAE,GAAGiE,EAAE,GAAGhE,EAAE,GAAGiE,EAAE,GAAGhE,EAAE,GAAGiE,EAAE;IACnCI,KAAK,GAAGpE,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE;IACnCmE,KAAK,GAAGrE,EAAE,GAAG8D,EAAE,GAAG7D,EAAE,GAAG8D,EAAE,GAAG7D,EAAE,GAAG8D,EAAE;EAEvC,IAAIM,KAAK,GAAIL,KAAK,GAAGG,KAAK,GAAGF,KAAK,GAAGA,KAAM;EAE3C,IAAII,KAAK,KAAK,CAAC,EACf;AACI7D,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACXA,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACXA,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACX,IAAA,MAAM,IAAI8D,KAAK,CAAC,mBAAmB,CAAC;AACxC,EAAA,CAAC,MAED;AACI,IAAA,IAAIC,QAAQ,GAAG,CAAC,GAAGF,KAAK;IACxB,IAAIG,CAAC,GAAG,CAACL,KAAK,GAAGD,KAAK,GAAGD,KAAK,GAAGG,KAAK,IAAIG,QAAQ;IAClD,IAAI1C,CAAC,GAAG,CAACmC,KAAK,GAAGI,KAAK,GAAGH,KAAK,GAAGC,KAAK,IAAIK,QAAQ;IAClD/D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGgE,CAAC,GAAG3C,CAAC;AAClBrB,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC;AACVrB,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGgE,CAAC;AACd,EAAA;AACA,EAAA,OAAOhE,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAAC4F,qBAAqB,GAAI,YAC9B;AACI,EAAA,IAAIC,EAAE,EAAEvD,EAAE,EAAEwD,QAAQ;EAEpB,OAAO,SAASF,qBAAqBA,CAACjE,GAAG,EAAEtB,CAAC,EAAE4B,KAAK,EAAE8D,KAAK,EAC1D;IACI,IAAI,CAACF,EAAE,EACP;AACIA,MAAAA,EAAE,GAAG3D,IAAI,CAACR,MAAM,EAAE;AAClBY,MAAAA,EAAE,GAAGJ,IAAI,CAACR,MAAM,EAAE;AAClBoE,MAAAA,QAAQ,GAAG,CAAEtF,IAAI,CAACkB,MAAM,EAAE,EAAElB,IAAI,CAACkB,MAAM,EAAE,EAAElB,IAAI,CAACkB,MAAM,EAAE,CAAE;AAC9D,IAAA;;AAEA;IACA,IAAIsE,sBAAsB,GAAGhG,IAAI,CAACiG,sBAAsB,CAACJ,EAAE,EAAExF,CAAC,EAAE4B,KAAK,CAAC;;AAEtE;AACAzB,IAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1DG,IAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1DG,IAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE1D,IAAI6F,WAAW,GAAGC,QAAQ;MACtBC,SAAS;AAEb,IAAA,KAAK,IAAIhC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0B,QAAQ,CAACO,MAAM,EAAEjC,CAAC,EAAE,EACxC;AACI;AACA,MAAA,IAAIkC,kBAAkB,GAAG9F,IAAI,CAACyF,sBAAsB,CAAC3D,EAAE,EAAEwD,QAAQ,CAAC1B,CAAC,CAAC,EAAE4B,sBAAsB,EAAE,IAAI,CAAC;MACnG,IAAIO,QAAQ,GAAGrE,IAAI,CAACsE,eAAe,CAACF,kBAAkB,EAAEN,sBAAsB,CAAC;MAC/E,IAAIO,QAAQ,GAAGL,WAAW,EAC1B;AACIA,QAAAA,WAAW,GAAGK,QAAQ;QACtB5E,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;QACvBzC,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;QACvBzC,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;QACvBzC,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;QACvBzC,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;QACvBzC,GAAG,CAAC,CAAC,CAAC,GAAGmE,QAAQ,CAAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;AACvBgC,QAAAA,SAAS,GAAGhC,CAAC;AACjB,MAAA;AACJ,IAAA;;AAEA;AACA,IAAA,IAAI2B,KAAK,EACT;AACI,MAAA,QAAOK,SAAS;AAEZ,QAAA,KAAK,CAAC;UACFL,KAAK,CAACU,SAAS,GAAG,CAAC;UACnBV,KAAK,CAACW,OAAO,GAAG,CAAC;AACjB,UAAA;AAEJ,QAAA,KAAK,CAAC;UACFX,KAAK,CAACU,SAAS,GAAG,CAAC;UACnBV,KAAK,CAACW,OAAO,GAAG,CAAC;AACjB,UAAA;AAEJ,QAAA;UACIX,KAAK,CAACU,SAAS,GAAG,CAAC;UACnBV,KAAK,CAACW,OAAO,GAAG,CAAC;AACjB,UAAA;AACR;AACJ,IAAA;AAEA,IAAA,OAAO/E,GAAG;EACd,CAAC;AACL,CAAC,EAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACiG,sBAAsB,GAAI,YAC/B;AACI,EAAA,IAAIU,KAAK,EAAEb,QAAQ,EAAEc,cAAc,EAAEC,YAAY,EAAE7E,MAAM,EAAE8E,MAAM,EAAEC,MAAM;EAEzE,OAAO,SAASd,sBAAsBA,CAACtE,GAAG,EAAEtB,CAAC,EAAE4B,KAAK,EACpD;IACI,IAAI,CAAC0E,KAAK,EACV;AACIA,MAAAA,KAAK,GAAGK,GAAG,CAACtF,MAAM,EAAE;AACpBoE,MAAAA,QAAQ,GAAG,CAAEtF,IAAI,CAACkB,MAAM,EAAE,EAAElB,IAAI,CAACkB,MAAM,EAAE,EAAElB,IAAI,CAACkB,MAAM,EAAE,CAAE;AAC1DkF,MAAAA,cAAc,GAAG1E,IAAI,CAACR,MAAM,EAAE;AAC9BmF,MAAAA,YAAY,GAAG3E,IAAI,CAACR,MAAM,EAAE;AAC5BM,MAAAA,MAAM,GAAGE,IAAI,CAACR,MAAM,EAAE;AACtBoF,MAAAA,MAAM,GAAG5E,IAAI,CAACR,MAAM,EAAE;AACtBqF,MAAAA,MAAM,GAAG7E,IAAI,CAACR,MAAM,EAAE;AAC1B,IAAA;;AAEA;AACA1B,IAAAA,IAAI,CAACiH,KAAK,CAACjF,MAAM,EAAE3B,CAAC,CAAC;AACrBL,IAAAA,IAAI,CAACkH,KAAK,CAACJ,MAAM,EAAEzG,CAAC,CAAC;AACrBL,IAAAA,IAAI,CAACmH,KAAK,CAACJ,MAAM,EAAE1G,CAAC,CAAC;;AAErB;IACA2G,GAAG,CAACI,kBAAkB,CAACT,KAAK,EAAE3E,MAAM,EAAE8E,MAAM,EAAEC,MAAM,CAAC;IACrDC,GAAG,CAACK,iBAAiB,CAACT,cAAc,EAAED,KAAK,EAAE1E,KAAK,CAAC;;AAEnD;IACA,IAAIjC,IAAI,CAAC+B,QAAQ,CAAC1B,CAAC,EAAEuG,cAAc,CAAC,KAAK,IAAI,EAC7C;AACIjF,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGiF,cAAc,CAAC,CAAC,CAAC;AAC1BjF,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGiF,cAAc,CAAC,CAAC,CAAC;AAC1BjF,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGiF,cAAc,CAAC,CAAC,CAAC;AAC9B,IAAA;AACA;AACA;SAEA;AACIpG,MAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AACzDG,MAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AACzDG,MAAAA,IAAI,CAAC6D,GAAG,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAEzF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;MAEzD,IAAI6F,WAAW,GAAGC,QAAQ;AAC1B,MAAA,KAAK,IAAI/B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0B,QAAQ,CAACO,MAAM,EAAEjC,CAAC,EAAE,EACxC;AACI5D,QAAAA,IAAI,CAACyF,sBAAsB,CAACY,YAAY,EAAEf,QAAQ,CAAC1B,CAAC,CAAC,EAAEwC,cAAc,EAAE,IAAI,CAAC;QAC5E,IAAIL,QAAQ,GAAGrE,IAAI,CAACsE,eAAe,CAACI,cAAc,EAAEC,YAAY,CAAC;QACjE,IAAIN,QAAQ,GAAGL,WAAW,EAC1B;AACIA,UAAAA,WAAW,GAAGK,QAAQ;AACtB5E,UAAAA,GAAG,CAAC,CAAC,CAAC,GAAGkF,YAAY,CAAC,CAAC,CAAC;AACxBlF,UAAAA,GAAG,CAAC,CAAC,CAAC,GAAGkF,YAAY,CAAC,CAAC,CAAC;AACxBlF,UAAAA,GAAG,CAAC,CAAC,CAAC,GAAGkF,YAAY,CAAC,CAAC,CAAC;AAC5B,QAAA;AACJ,MAAA;AACJ,IAAA;AACA,IAAA,OAAOlF,GAAG;EACd,CAAC;AACL,CAAC,EAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACsH,uBAAuB,GAAI,YAChC;AACI,EAAA,IAAItF,MAAM,EAAE8E,MAAM,EAAEC,MAAM;EAE1B,OAAO,UAASpF,GAAG,EAAEtB,CAAC,EAAE4B,KAAK,EAAE8D,KAAK,EACpC;IACI,IAAI,CAAC/D,MAAM,EACX;AACIA,MAAAA,MAAM,GAAGE,IAAI,CAACR,MAAM,EAAE;AACtBoF,MAAAA,MAAM,GAAG5E,IAAI,CAACR,MAAM,EAAE;AACtBqF,MAAAA,MAAM,GAAG7E,IAAI,CAACR,MAAM,EAAE;AAC1B,IAAA;;AAEA;IACA1B,IAAI,CAACiG,sBAAsB,CAACtE,GAAG,EAAEtB,CAAC,EAAE4B,KAAK,CAAC;IAE1C,IAAIiE,WAAW,GAAGC,QAAQ;MACtBI,QAAQ;MACRlF,CAAC;MAAEC,CAAC;MAAEC,CAAC;AACPgG,MAAAA,QAAQ,GAAG,CACPvH,IAAI,CAACiH,KAAK,CAACjF,MAAM,EAAE3B,CAAC,CAAC,EACrBL,IAAI,CAACkH,KAAK,CAACJ,MAAM,EAAEzG,CAAC,CAAC,EACrBL,IAAI,CAACmH,KAAK,CAACJ,MAAM,EAAE1G,CAAC,CAAC,CACxB;AAEL,IAAA,IAAImH,UAAU;AACd;AACA,IAAA,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,QAAQ,CAAClB,MAAM,EAAEjC,CAAC,EAAE,EACxC;MACImC,QAAQ,GAAGrE,IAAI,CAACsE,eAAe,CAACe,QAAQ,CAACnD,CAAC,CAAC,EAAEzC,GAAG,CAAC;MACjD,IAAI4E,QAAQ,GAAGL,WAAW,EAC1B;AACIA,QAAAA,WAAW,GAAGK,QAAQ;AACtBlF,QAAAA,CAAC,GAAGkG,QAAQ,CAACnD,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB9C,QAAAA,CAAC,GAAGiG,QAAQ,CAACnD,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB7C,QAAAA,CAAC,GAAGgG,QAAQ,CAACnD,CAAC,CAAC,CAAC,CAAC,CAAC;AAClBoD,QAAAA,UAAU,GAAGpD,CAAC;AAClB,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI2B,KAAK,EAAEA,KAAK,CAAC0B,OAAO,GAAGD,UAAU;AAErC7F,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGN,CAAC;AACVM,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGL,CAAC;AACVK,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGJ,CAAC;AACV,IAAA,OAAOI,GAAG;EACd,CAAC;AACL,CAAC,EAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAAC0H,WAAW,GAAG,UAAS/F,GAAG,EAAEtB,CAAC,EAClC;AACI,EAAA,IAAIsH,CAAC,GAAG,CAAC,GAAG,CAAC;EACbhG,GAAG,CAAC,CAAC,CAAC,GAAG,CAACtB,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIsH,CAAC;EACjChG,GAAG,CAAC,CAAC,CAAC,GAAG,CAACtB,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIsH,CAAC;EACjChG,GAAG,CAAC,CAAC,CAAC,GAAG,CAACtB,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,IAAIsH,CAAC;AACjC,EAAA,OAAOhG,GAAG;AACd,CAAC;AAED,IAAIiG,MAAM,GAAG,IAAI;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA5H,IAAI,CAAC6H,qBAAqB,GAAI,UAASlG,GAAG,EAAEW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EACtD;EACI,IAAI,CAACoF,MAAM,EAAEA,MAAM,GAAG5H,IAAI,CAAC0B,MAAM,EAAE;EACnC1B,IAAI,CAACqC,YAAY,CAACuF,MAAM,EAAEtF,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;AACrC,EAAA,OAAOxC,IAAI,CAAC8H,SAAS,CAACnG,GAAG,EAAEiG,MAAM,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA5H,IAAI,CAAC8H,SAAS,GAAG,UAASnG,GAAG,EAAEtB,CAAC,EAChC;EACI,IAAIU,EAAE,GAAGV,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBW,EAAE,GAAGX,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBY,EAAE,GAAGZ,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBa,EAAE,GAAGb,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBc,EAAE,GAAGd,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;IAChBe,EAAE,GAAGf,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;;AAEpB;EACA,IAAIgB,CAAC,GAAGL,EAAE,GAAGI,EAAE,GAAGH,EAAE,GAAGE,EAAE;AACrBG,IAAAA,CAAC,GAAGL,EAAE,GAAGC,EAAE,GAAGH,EAAE,GAAGK,EAAE;AACrBG,IAAAA,CAAC,GAAGR,EAAE,GAAGI,EAAE,GAAGH,EAAE,GAAGE,EAAE;;AAEzB;AACA,EAAA,IAAI6G,GAAG,GAAG1G,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC;EAC/B,IAAIwG,GAAG,GAAG,CAAC,EACX;IACIA,GAAG,GAAG,CAAC,GAAGvG,IAAI,CAACC,IAAI,CAACsG,GAAG,CAAC;AACxBpG,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGN,CAAC,GAAG0G,GAAG;AAChBpG,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGL,CAAC,GAAGyG,GAAG;AAChBpG,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGJ,CAAC,GAAGwG,GAAG;AACpB,EAAA,CAAC,MAED;AACIpG,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACVA,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACV,IAAA,MAAM,IAAI8D,KAAK,CAAC,qBAAqB,CAAC;AAC1C,EAAA;AACA,EAAA,OAAO9D,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACiH,KAAK,GAAGzG,IAAI,CAACwH,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACAhI,IAAI,CAACkH,KAAK,GAAG1G,IAAI,CAACyH,MAAM;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACAjI,IAAI,CAACmH,KAAK,GAAG,UAASxF,GAAG,EAAEqB,CAAC,EAC5B;AACIrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACbrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACbrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACb,EAAA,OAAOrB,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACkI,KAAK,GAAG1H,IAAI,CAAC2H,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACAnI,IAAI,CAACoI,KAAK,GAAG5H,IAAI,CAAC6H,MAAM;;AAExB;AACA;AACA;AACA;AACA;AACA;AACArI,IAAI,CAACsI,KAAK,GAAG,UAAS3G,GAAG,EAAEqB,CAAC,EAC5B;AACIrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACbrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACbrB,EAAAA,GAAG,CAAC,CAAC,CAAC,GAAGqB,CAAC,CAAC,CAAC,CAAC;AACb,EAAA,OAAOrB,GAAG;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA3B,IAAI,CAACuI,OAAO,GAAGzG,IAAI,CAACyG,OAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAvI,IAAI,CAACwI,UAAU,GAAG,UAASnI,CAAC,EAAEiC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EACxC;AACIF,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGjC,CAAC,CAAC,CAAC,CAAC;AACZiC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGjC,CAAC,CAAC,CAAC,CAAC;AACZiC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGjC,CAAC,CAAC,CAAC,CAAC;AACZkC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGlC,CAAC,CAAC,CAAC,CAAC;AACZkC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGlC,CAAC,CAAC,CAAC,CAAC;AACZkC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGlC,CAAC,CAAC,CAAC,CAAC;AACZmC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGnC,CAAC,CAAC,CAAC,CAAC;AACZmC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGnC,CAAC,CAAC,CAAC,CAAC;AACZmC,EAAAA,EAAE,CAAC,CAAC,CAAC,GAAGnC,CAAC,CAAC,CAAC,CAAC;AACZ,EAAA,OAAOA,CAAC;AACZ,CAAC;AAED,IAAI2B,MAAM,EAAE8E,MAAM,EAAEC,MAAM;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA/G,IAAI,CAACsE,aAAa,GAAG,UAAS3C,GAAG,EAAEtB,CAAC,EAAEoI,CAAC,EACvC;EACI,IAAI,CAACzG,MAAM,EACX;AACIA,IAAAA,MAAM,GAAGE,IAAI,CAACR,MAAM,EAAE;AACtBoF,IAAAA,MAAM,GAAG5E,IAAI,CAACR,MAAM,EAAE;AACtBqF,IAAAA,MAAM,GAAG7E,IAAI,CAACR,MAAM,EAAE;AAC1B,EAAA;AAEA1B,EAAAA,IAAI,CAACiH,KAAK,CAACjF,MAAM,EAAE3B,CAAC,CAAC;AACrBL,EAAAA,IAAI,CAACkH,KAAK,CAACJ,MAAM,EAAEzG,CAAC,CAAC;AACrBL,EAAAA,IAAI,CAACmH,KAAK,CAACJ,MAAM,EAAE1G,CAAC,CAAC;EAErB6B,IAAI,CAACoC,aAAa,CAACtC,MAAM,EAAEA,MAAM,EAAEyG,CAAC,CAAC;EACrCvG,IAAI,CAACoC,aAAa,CAACwC,MAAM,EAAEA,MAAM,EAAE2B,CAAC,CAAC;EACrCvG,IAAI,CAACoC,aAAa,CAACyC,MAAM,EAAEA,MAAM,EAAE0B,CAAC,CAAC;EAErC,OAAOzI,IAAI,CAACqC,YAAY,CAACV,GAAG,EAAEK,MAAM,EAAE8E,MAAM,EAAEC,MAAM,CAAC;AACzD,CAAC;AAEM,MAAM;EACT9G,KAAK;EACLG,OAAO;EACPG,GAAG;EACHG,GAAG;EACHE,GAAG;EACHE,IAAI;EACJY,MAAM;EACNG,KAAK;EACLE,QAAQ;EACRK,IAAI;EACJC,YAAY;EACZ0C,SAAS;EACT5C,yBAAyB;EACzByD,qBAAqB;EACrBK,sBAAsB;EACtBqB,uBAAuB;EACvBI,WAAW;EACXG,qBAAqB;EACrBC,SAAS;EACTb,KAAK;EACLxE,gBAAgB;EAChBM,qBAAqB;EACrBmE,KAAK;EACLC,KAAK;EACLe,KAAK;EACLE,KAAK;EACLE,KAAK;EACLC,OAAO;EACPC,UAAU;AACVlE,EAAAA;AACJ,CAAC,GAAGtE;;;;"}
|
|
1
|
+
{"version":3,"file":"tri3.js","sources":["../../../../src/global/math/tri3.js"],"sourcesContent":["import { vec3 } from \"./vec3.js\";\nimport { mat3 } from \"./mat3.js\";\nimport { pln } from \"./pln.js\";\nimport { lne3 } from \"./lne3.js\";\nimport { pool } from \"./pool.js\";\n\n/**\n * 3d Triangle\n *\n * @typedef {Float32Array} tri3\n */\n\nexport const tri3 = {};\n\n/**\n * Allocates a pooled tri3\n * @returns {Float32Array|tri3}\n */\ntri3.alloc = function()\n{\n return pool.allocF32(9);\n};\n\n/**\n * Unallocates a pooled tri3\n * @param {tri3|Float32Array} a\n */\ntri3.unalloc = function(a)\n{\n pool.freeType(a);\n};\n\n/**\n * Gets a subarray of a tri3's first vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v1 = lne3.$start;\n\n/**\n * Gets a subarray of a tri3's second vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v2 = lne3.$end;\n\n/**\n * Gets a subarray of a tri3's third vertex\n *\n * @param {tri3} a\n * @returns {vec3}\n */\ntri3.$v3 = function(a)\n{\n return a.subarray(6, 9);\n};\n\n/**\n * Gets the area of a triangle\n *\n * @param {tri3} a\n * @returns {number}\n */\ntri3.area = function(a)\n{\n let ax = a[6] - a[3],\n ay = a[7] - a[4],\n az = a[8] - a[5],\n bx = a[0] - a[3],\n by = a[1] - a[4],\n bz = a[2] - a[5];\n // Cross product\n let x = ay * bz - az * by,\n y = az * bx - ax * bz,\n z = ax * by - ay * bx;\n // Return half length\n return Math.sqrt(x * x + y * y + z * z) * 0.5;\n};\n\n/**\n * Creates a tri3\n *\n * @returns {tri3}\n */\ntri3.create = function()\n{\n let out = new Float32Array(9);\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n return out;\n};\n\n/**\n * Clones a tri3\n *\n * @param {tri3} a\n * @returns {tri3}\n */\ntri3.clone = mat3.clone;\n\n/**\n * Checks if a tri3 contains a point\n *\n * @param {tri3} a\n * @param {vec3} point\n * @returns {boolean}\n */\ntri3.contains = (function()\n{\n let vec3_0;\n return function(a, point)\n {\n if (!vec3_0) vec3_0 = vec3.create();\n tri3.getBaryCentricCoordinates(vec3_0, a, point);\n return (vec3_0[0] >= 0) && (vec3_0[1] >= 0) && ((vec3_0[0] + vec3_0[1]) <= 1);\n };\n})();\n\n/**\n * Copies a tri3\n *\n * @param {tri3} a\n * @param {tri3} b\n * @returns {tri3} a\n */\ntri3.copy = mat3.copy;\n\n/**\n * Sets a tri3 from vertices\n *\n * @param {tri3} out\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n * @returns {tri3} out\n */\ntri3.fromVertices = function(out, v1, v2, v3)\n{\n out[0] = v1[0];\n out[1] = v1[1];\n out[2] = v1[2];\n out[3] = v2[0];\n out[4] = v2[1];\n out[5] = v2[2];\n out[6] = v3[0];\n out[7] = v3[1];\n out[8] = v3[2];\n return out;\n};\n\n/**\n * Sets a tri3 from an array at an option offset\n *\n * @param {tri3} out\n * @param {Array} arr\n * @param {number} [offset=0]\n * @returns {tri3} out\n */\n/**\n * Whether a triangle overlaps an axis-aligned box.\n *\n * A cheap reject only: it tests the box's three slabs and answers true whenever\n * no slab separates the triangle, so a triangle that straddles a corner without\n * touching the box still passes. Carbon uses it as the broad phase in front of\n * the oriented-box test (BoundingBox.cpp:569-588) and so should any caller.\n *\n * @param {tri3} a\n * @param {vec3} min\n * @param {vec3} max\n * @returns {boolean} false only when a slab separates the triangle\n */\ntri3.intersectsBounds = function(a, min, max)\n{\n for (let axis = 0; axis < 3; axis++)\n {\n const lo = min[axis];\n const hi = max[axis];\n\n if (a[axis] < lo && a[axis + 3] < lo && a[axis + 6] < lo) return false;\n if (a[axis] > hi && a[axis + 3] > hi && a[axis + 6] > hi) return false;\n }\n\n return true;\n};\n\n/**\n * Whether a triangle overlaps an oriented box, by separating-axis test.\n *\n * The box is given as the INVERSE of the transform that maps the unit box\n * (-1,-1,-1)..(1,1,1) onto it, so the triangle is moved into unit-box space and\n * tested there - which is why no box axes appear below.\n *\n * Ported from Carbon (BoundingBox.cpp:626-732) including the vertex pairs its\n * edge tests use. Those pairs are NOT the symmetric set a textbook\n * separating-axis test would pick, and two of them look like slips; they are\n * reproduced exactly because this decides which hull triangles a decal covers,\n * and a \"corrected\" test would silently disagree with the client about where a\n * decal reaches.\n *\n * @param {tri3} a\n * @param {mat4} invOrientedBox inverse of the box transform\n * @returns {boolean} true when no separating axis was found\n */\ntri3.intersectsOrientedBox = (function()\n{\n const v = [ vec3.create(), vec3.create(), vec3.create() ];\n const e = [ vec3.create(), vec3.create(), vec3.create() ];\n const normal = vec3.create();\n const vmin = vec3.create();\n const vmax = vec3.create();\n\n // Nine edge-cross axes, with Carbon's own vertex pairs. Built once: the\n // vectors are stable across calls, and a decal tests every triangle of a\n // hull against this.\n //\n // Each row is read positionally in the loop below, which is what the old\n // destructuring form used to name:\n //\n // [ edge, ax, bx, ay, by, az, bz ]\n //\n // one vertex pair per box axis: x at [1],[2], y at [3],[4], z at [5],[6].\n const edgeAxes = [\n [ e[0], v[0], v[2], v[0], v[2], v[1], v[2] ],\n [ e[1], v[0], v[2], v[0], v[2], v[0], v[1] ],\n [ e[2], v[0], v[1], v[0], v[1], v[1], v[2] ]\n ];\n\n // A separating plane at the cross product of a triangle edge and a unit-box\n // axis. The box half-extent is 1 on every axis, so the radius is just\n // |a| + |b| (Carbon's AxisTest, BoundingBox.cpp:601-611).\n function axisTest(ca, cb, fa, fb, p, q, axis0, axis1)\n {\n let p0 = ca * p[axis0] + cb * p[axis1];\n let p2 = ca * q[axis0] + cb * q[axis1];\n\n if (p2 < p0)\n {\n const swap = p0;\n p0 = p2;\n p2 = swap;\n }\n\n const rad = fa + fb;\n\n return !(p0 > rad || p2 < -rad);\n }\n\n return function(a, invOrientedBox)\n {\n for (let i = 0; i < 3; i++)\n {\n vec3.set(v[i], a[i * 3], a[i * 3 + 1], a[i * 3 + 2]);\n vec3.transformMat4(v[i], v[i], invOrientedBox);\n }\n\n // The unit box's own six faces.\n for (let axis = 0; axis < 3; axis++)\n {\n if (v[0][axis] < -1 && v[1][axis] < -1 && v[2][axis] < -1) return false;\n if (v[0][axis] > 1 && v[1][axis] > 1 && v[2][axis] > 1) return false;\n }\n\n vec3.subtract(e[0], v[1], v[0]);\n vec3.subtract(e[1], v[2], v[1]);\n vec3.subtract(e[2], v[0], v[2]);\n\n // The triangle's own plane.\n vec3.cross(normal, e[0], e[1]);\n\n for (let i = 0; i < 3; i++)\n {\n if (normal[i] > 0)\n {\n vmin[i] = -1 - v[0][i];\n vmax[i] = 1 - v[0][i];\n }\n else\n {\n vmin[i] = 1 - v[0][i];\n vmax[i] = -1 - v[0][i];\n }\n }\n\n if (vec3.dot(vmin, normal) > 0) return false;\n if (vec3.dot(vmax, normal) < 0) return false;\n\n // An indexed loop, NOT `for...of` with destructuring. A decal runs this\n // over every triangle of a hull, so this is the hottest loop in the file,\n // and that form costs an array iterator plus a seven-way destructure on\n // every call. The rows are read positionally below for the same reason.\n for (let axis = 0; axis < edgeAxes.length; axis++)\n {\n const row = edgeAxes[axis];\n const edge = row[0];\n const fex = Math.abs(edge[0]);\n const fey = Math.abs(edge[1]);\n const fez = Math.abs(edge[2]);\n\n if (!axisTest(edge[2], -edge[1], fez, fey, row[1], row[2], 1, 2)) return false;\n if (!axisTest(-edge[2], edge[0], fez, fex, row[3], row[4], 0, 2)) return false;\n if (!axisTest(edge[1], -edge[0], fey, fex, row[5], row[6], 0, 1)) return false;\n }\n\n return true;\n };\n})();\n\ntri3.fromArray = mat3.fromArray;\n\n/**\n * Gets bary centric coordinates\n *\n * @author three.js (converted)\n * @param {vec3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {tri3} out\n */\ntri3.getBaryCentricCoordinates = function(out, a, point)\n{\n let ax = a[6] - a[0],\n ay = a[7] - a[1],\n az = a[8] - a[2],\n\n bx = a[3] - a[0],\n by = a[4] - a[1],\n bz = a[5] - a[2],\n\n cx = point[0] - a[0],\n cy = point[1] - a[1],\n cz = point[2] - a[2];\n\n let dot00 = ax * ax + ay * ay + az * az,\n dot01 = ax * bx + ay * by + az * bz,\n dot02 = ax * cx + ay * cy + az * cz,\n dot11 = bx * bx + by * by + bz * bz,\n dot12 = bx * cx + by * cy + bz * cz;\n\n let denom = (dot00 * dot11 - dot01 * dot01);\n\n if (denom === 0)\n {\n out[0] = -2;\n out[1] = -1;\n out[2] = -1;\n throw new Error(\"Denominator error\");\n }\n else\n {\n let invDenom = 1 / denom;\n let u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n let v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n out[0] = 1 - u - v;\n out[1] = v;\n out[2] = u;\n }\n return out;\n};\n\n/**\n *\n * @author three.js (converted)\n * @param {lne3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {*}\n */\ntri3.getClosestEdgeToPoint = (function()\n{\n let v0, v1, edgeList;\n\n return function getClosestEdgeToPoint(out, a, point, debug)\n {\n if (!v0)\n {\n v0 = vec3.create();\n v1 = vec3.create();\n edgeList = [ lne3.create(), lne3.create(), lne3.create() ];\n }\n\n // Get the closest point on the triangle to the supplied point\n let closestPointOnTriangle = tri3.getClosestPointToPoint(v0, a, point);\n\n // Convert the triangle's vertices to edges\n lne3.set(edgeList[0], a[0], a[1], a[2], a[3], a[4], a[5]); // vert a - vert b\n lne3.set(edgeList[1], a[3], a[4], a[5], a[6], a[7], a[8]); // vert b - vert c\n lne3.set(edgeList[2], a[6], a[7], a[8], a[0], a[1], a[2]); // vert c - vert a\n\n let minDistance = Infinity,\n edgeIndex;\n\n for (let i = 0; i < edgeList.length; i++)\n {\n // Get the closest point on the triangles edge to the closest point on the triangle to the supplied point\n let closestPointOnLine = lne3.getClosestPointToPoint(v1, edgeList[i], closestPointOnTriangle, true);\n let distance = vec3.squaredDistance(closestPointOnLine, closestPointOnTriangle);\n if (distance < minDistance)\n {\n minDistance = distance;\n out[0] = edgeList[i][0];\n out[1] = edgeList[i][1];\n out[2] = edgeList[i][2];\n out[3] = edgeList[i][3];\n out[4] = edgeList[i][4];\n out[5] = edgeList[i][5];\n edgeIndex = i;\n }\n }\n\n // Temporary\n if (debug)\n {\n switch(edgeIndex)\n {\n case 0:\n debug.edgeStart = 0;\n debug.edgeEnd = 1;\n break;\n\n case 1:\n debug.edgeStart = 1;\n debug.edgeEnd = 2;\n break;\n\n default:\n debug.edgeStart = 2;\n debug.edgeEnd = 0;\n break;\n }\n }\n\n return out;\n };\n})();\n\n/**\n * Gets the closest point on a triangle to another point\n *\n * @author three.js (converted)\n * @param {vec3} out - receiving vec3\n * @param {vec3} a - tri3 to operate on\n * @param {vec3} point - the point\n * @returns {vec3} vecOut - receiving vec3\n */\ntri3.getClosestPointToPoint = (function()\n{\n let plane, edgeList, projectedPoint, closestPoint, vec3_0, vec3_1, vec3_2;\n\n return function getClosestPointToPoint(out, a, point)\n {\n if (!plane)\n {\n plane = pln.create();\n edgeList = [ lne3.create(), lne3.create(), lne3.create() ];\n projectedPoint = vec3.create();\n closestPoint = vec3.create();\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n // Replace with subarray tri3.v1 .v2 .v3 ?\n tri3.getV1(vec3_0, a);\n tri3.getV2(vec3_1, a);\n tri3.getV3(vec3_2, a);\n\n // project the point onto the plane of the triangle\n pln.fromCoplanarPoints(plane, vec3_0, vec3_1, vec3_2);\n pln.getProjectedPoint(projectedPoint, plane, point);\n\n // check if the projection lies within the triangle\n if (tri3.contains(a, projectedPoint) === true)\n {\n out[0] = projectedPoint[0];\n out[1] = projectedPoint[1];\n out[2] = projectedPoint[2];\n }\n // if not, the point falls outside the triangle.\n // the result is the closest point to the triangle's edges or vertices\n else\n {\n lne3.set(edgeList[0], a[0], a[1], a[2], a[3], a[4], a[5]);\n lne3.set(edgeList[1], a[3], a[4], a[5], a[6], a[7], a[8]);\n lne3.set(edgeList[2], a[6], a[7], a[8], a[0], a[1], a[2]);\n\n let minDistance = Infinity;\n for (let i = 0; i < edgeList.length; i++)\n {\n lne3.getClosestPointToPoint(closestPoint, edgeList[i], projectedPoint, true);\n let distance = vec3.squaredDistance(projectedPoint, closestPoint);\n if (distance < minDistance)\n {\n minDistance = distance;\n out[0] = closestPoint[0];\n out[1] = closestPoint[1];\n out[2] = closestPoint[2];\n }\n }\n }\n return out;\n };\n})();\n\n/**\n * Gets the closest vertex to a given point\n *\n * @param {vec3} out\n * @param {tri3} a\n * @param {vec3} point\n * @returns {vec3} out\n */\ntri3.getClosestVertexToPoint = (function()\n{\n let vec3_0, vec3_1, vec3_2;\n\n return function(out, a, point, debug)\n {\n if (!vec3_0)\n {\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n // Get the closest point on the triangle to the supplied point\n tri3.getClosestPointToPoint(out, a, point);\n\n let minDistance = Infinity,\n distance,\n x, y, z,\n vertices = [\n tri3.getV1(vec3_0, a),\n tri3.getV2(vec3_1, a),\n tri3.getV3(vec3_2, a)\n ];\n\n let foundIndex;\n // Find the closest triangle vertex\n for (let i = 0; i < vertices.length; i++)\n {\n distance = vec3.squaredDistance(vertices[i], out);\n if (distance < minDistance)\n {\n minDistance = distance;\n x = vertices[i][0];\n y = vertices[i][1];\n z = vertices[i][2];\n foundIndex = i;\n }\n }\n\n if (debug) debug.closest = foundIndex;\n\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n };\n})();\n\n/**\n * Sets a vec3 as the midpoint of a triangle\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - tri3 to get the midpoint of -\n * @returns {vec3} out - receiving vec3\n */\ntri3.getMidpoint = function(out, a)\n{\n let s = 1 / 3;\n out[0] = (a[0] + a[3] + a[6]) * s;\n out[1] = (a[1] + a[4] + a[7]) * s;\n out[2] = (a[2] + a[5] + a[8]) * s;\n return out;\n};\n\nlet tri3_0 = null;\n\n/**\n * Gets normal vertices\n *\n * @param {vec3} out\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n * @return {vec3} out\n */\ntri3.getNormalFromVertices = function(out, v1, v2, v3)\n{\n if (!tri3_0) tri3_0 = tri3.create();\n tri3.fromVertices(tri3_0, v1, v2, v3);\n return tri3.getNormal(out, tri3_0);\n};\n\n/**\n * Gets a triangle's normal\n *\n * @param {vec3} out\n * @param {tri3} a\n * @returns {vec3} out\n */\ntri3.getNormal = function(out, a)\n{\n let ax = a[6] - a[3],\n ay = a[7] - a[4],\n az = a[8] - a[5],\n bx = a[0] - a[3],\n by = a[1] - a[4],\n bz = a[2] - a[5];\n\n // Get cross product\n let x = ay * bz - az * by,\n y = az * bx - ax * bz,\n z = ax * by - ay * bx;\n\n // Normalize\n let len = x * x + y * y + z * z;\n if (len > 0)\n {\n len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n }\n else\n {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n throw new Error(\"Normalization error\");\n }\n return out;\n};\n\n/**\n * Sets a vec3 with the tri3's first vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV1 = lne3.getStart;\n\n/**\n * Sets a vec3 with the tri3's second vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} a - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV2 = lne3.getEnd;\n\n/**\n * Sets a vec3 with the tri3's third vert\n *\n * @param {vec3} out - receiving vec3\n * @param {tri3} v - source tri3\n * @returns {vec3} [out] - receiving vec3\n */\ntri3.getV3 = function(out, v)\n{\n out[0] = v[6];\n out[1] = v[7];\n out[2] = v[8];\n return out;\n};\n\n/**\n * Sets the first position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV1 = lne3.setStart;\n\n/**\n * Sets the second position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV2 = lne3.setEnd;\n\n/**\n * Sets the second position of a triangle\n * @param {tri3} out\n * @param {vec3} v\n * @returns {tri3} out\n */\ntri3.setV3 = function(out, v)\n{\n out[6] = v[0];\n out[7] = v[1];\n out[8] = v[2];\n return out;\n};\n\n/**\n * Sets an array at an optional offset\n *\n * @param {mat3} a\n * @param {Array} arr\n * @param {number} [index=0]\n * @returns {mat3} a\n */\ntri3.toArray = mat3.toArray;\n\n/**\n * Extracts the vertices of a tri3\n *\n * @param {tri3} a\n * @param {vec3} v1\n * @param {vec3} v2\n * @param {vec3} v3\n */\ntri3.toVertices = function(a, v1, v2, v3)\n{\n v1[0] = a[0];\n v1[1] = a[1];\n v1[2] = a[2];\n v2[0] = a[3];\n v2[1] = a[4];\n v2[2] = a[5];\n v3[0] = a[6];\n v3[1] = a[7];\n v3[2] = a[8];\n return a;\n};\n\nlet vec3_0, vec3_1, vec3_2;\n\n/**\n * Transforms a tri3 by a mat4\n * TODO: Optimize\n * @param {tri3} out\n * @param {tri3} a\n * @param {mat4} m\n * @return {tri3}\n */\ntri3.transformMat4 = function(out, a, m)\n{\n if (!vec3_0)\n {\n vec3_0 = vec3.create();\n vec3_1 = vec3.create();\n vec3_2 = vec3.create();\n }\n\n tri3.getV1(vec3_0, a);\n tri3.getV2(vec3_1, a);\n tri3.getV3(vec3_2, a);\n\n vec3.transformMat4(vec3_0, vec3_0, m);\n vec3.transformMat4(vec3_1, vec3_1, m);\n vec3.transformMat4(vec3_2, vec3_2, m);\n\n return tri3.fromVertices(out, vec3_0, vec3_1, vec3_2);\n};\n\nexport const {\n alloc,\n unalloc,\n $v1,\n $v2,\n $v3,\n area,\n create,\n clone,\n contains,\n copy,\n fromVertices,\n fromArray,\n getBaryCentricCoordinates,\n getClosestEdgeToPoint,\n getClosestPointToPoint,\n getClosestVertexToPoint,\n getMidpoint,\n getNormalFromVertices,\n getNormal,\n getV1,\n intersectsBounds,\n intersectsOrientedBox,\n getV2,\n getV3,\n setV1,\n setV2,\n setV3,\n toArray,\n toVertices,\n transformMat4\n} = tri3;\n\n"],"names":["tri3","alloc","pool","allocF32","unalloc","a","freeType","$v1","lne3","$start","$v2","$end","$v3","subarray","area","ax","ay","az","bx","by","bz","x","y","z","Math","sqrt","create","out","Float32Array","clone","mat3","contains","vec3_0","point","vec3","getBaryCentricCoordinates","copy","fromVertices","v1","v2","v3","intersectsBounds","min","max","axis","lo","hi","intersectsOrientedBox","v","e","normal","vmin","vmax","edgeAxes","axisTest","ca","cb","fa","fb","p","q","axis0","axis1","p0","p2","swap","rad","invOrientedBox","i","set","transformMat4","subtract","cross","dot","length","row","edge","fex","abs","fey","fez","fromArray","cx","cy","cz","dot00","dot01","dot02","dot11","dot12","denom","Error","invDenom","u","getClosestEdgeToPoint","v0","edgeList","debug","closestPointOnTriangle","getClosestPointToPoint","minDistance","Infinity","edgeIndex","closestPointOnLine","distance","squaredDistance","edgeStart","edgeEnd","plane","projectedPoint","closestPoint","vec3_1","vec3_2","pln","getV1","getV2","getV3","fromCoplanarPoints","getProjectedPoint","getClosestVertexToPoint","vertices","foundIndex","closest","getMidpoint","s","tri3_0","getNormalFromVertices","getNormal","len","getStart","getEnd","setV1","setStart","setV2","setEnd","setV3","toArray","toVertices","m"],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
/** Returns a zero-copy Uint8Array view over supported byte input. */
|
|
2
|
+
// One reused conversion view. `hash.js` keeps its own for the same reason:
|
|
3
|
+
// these run per record, and allocating a 4-byte ArrayBuffer each time is
|
|
4
|
+
// pure garbage for a value that is read immediately and never retained.
|
|
5
|
+
const scratch = new DataView(new ArrayBuffer(4));
|
|
2
6
|
function asUint8Array(value, label = "value") {
|
|
3
7
|
if (value instanceof Uint8Array) {
|
|
4
8
|
return value;
|
|
@@ -102,10 +106,24 @@ function readU32LE(bytes, offset) {
|
|
|
102
106
|
* @returns {number} Float value represented by the same bits.
|
|
103
107
|
*/
|
|
104
108
|
function float32FromBits(value) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return view.getFloat32(0, true);
|
|
109
|
+
scratch.setUint32(0, value >>> 0, true);
|
|
110
|
+
return scratch.getFloat32(0, true);
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
/**
|
|
114
|
+
* The bit pattern of a 32-bit float.
|
|
115
|
+
*
|
|
116
|
+
* The inverse of `float32FromBits`, and the reason both live here: a caller that
|
|
117
|
+
* round-trips a float through its bits needs the two halves to agree about byte
|
|
118
|
+
* order, and two modules each owning one half is how they stop agreeing.
|
|
119
|
+
*
|
|
120
|
+
* @param {number} value Float value.
|
|
121
|
+
* @returns {number} Unsigned 32-bit pattern encoding that float.
|
|
122
|
+
*/
|
|
123
|
+
function float32ToBits(value) {
|
|
124
|
+
scratch.setFloat32(0, value, true);
|
|
125
|
+
return scratch.getUint32(0, true);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export { asUint8Array, copyBytes, float32FromBits, float32ToBits, hasBytePrefix, readFourCc, readU16BE, readU16LE, readU24BE, readU24LE, readU32BE, readU32LE, toArrayBuffer };
|
|
111
129
|
//# sourceMappingURL=bytes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sources":["../../../../src/global/utils/bytes.js"],"sourcesContent":["/** Returns a zero-copy Uint8Array view over supported byte input. */\
|
|
1
|
+
{"version":3,"file":"bytes.js","sources":["../../../../src/global/utils/bytes.js"],"sourcesContent":["/** Returns a zero-copy Uint8Array view over supported byte input. */\n// One reused conversion view. `hash.js` keeps its own for the same reason:\n// these run per record, and allocating a 4-byte ArrayBuffer each time is\n// pure garbage for a value that is read immediately and never retained.\nconst scratch = new DataView(new ArrayBuffer(4));\n\nexport function asUint8Array(value, label = \"value\")\n{\n if (value instanceof Uint8Array)\n {\n return value;\n }\n\n if (value instanceof ArrayBuffer)\n {\n return new Uint8Array(value);\n }\n\n if (ArrayBuffer.isView(value))\n {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n\n throw new TypeError(`${label} must be a Uint8Array, ArrayBuffer, or ArrayBuffer view.`);\n}\n\n/** Returns an owned copy of supported byte input. */\nexport function copyBytes(value, label = \"value\")\n{\n return asUint8Array(value, label).slice();\n}\n\n/** Copies exactly the visible byte range into a standalone ArrayBuffer. */\nexport function toArrayBuffer(value, label = \"value\")\n{\n const bytes = asUint8Array(value, label);\n\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n}\n\n/** Tests whether byte input starts with the complete supplied prefix. */\nexport function hasBytePrefix(value, prefix)\n{\n const bytes = asUint8Array(value, \"value\");\n const expected = asUint8Array(prefix, \"prefix\");\n\n if (bytes.byteLength < expected.byteLength)\n {\n return false;\n }\n\n for (let index = 0; index < expected.byteLength; index++)\n {\n if (bytes[index] !== expected[index])\n {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Reads a fixed-length ASCII tag, as container formats use for chunk names.\n *\n * Missing bytes read as zero rather than throwing, because a truncated tag is\n * a failed match at the call site, not an error in the read.\n *\n * @param {Uint8Array} bytes Source bytes.\n * @param {number} offset Byte offset to read from.\n * @param {number} [length=4] Tag length in bytes.\n * @returns {string} The decoded tag.\n */\nexport function readFourCc(bytes, offset, length = 4)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i] || 0);\n return value;\n}\n\n// Container formats read fixed-width big- and little-endian integers\n// constantly, and every reader had grown its own copy. Missing bytes read as\n// zero, matching what the shifting forms already did: `>>> 0` turns the NaN a\n// truncated multiply produces back into a number, so only the two flac copies\n// that omitted it ever returned NaN, and flac bounds-checks before every read.\n\n/** Reads an unsigned big-endian 16-bit integer. */\nexport function readU16BE(bytes, offset)\n{\n return ((bytes[offset] || 0) << 8) | (bytes[offset + 1] || 0);\n}\n\n/** Reads an unsigned little-endian 16-bit integer. */\nexport function readU16LE(bytes, offset)\n{\n return (bytes[offset] || 0) | ((bytes[offset + 1] || 0) << 8);\n}\n\n/** Reads an unsigned big-endian 24-bit integer. */\nexport function readU24BE(bytes, offset)\n{\n return ((bytes[offset] || 0) * 0x10000) + ((bytes[offset + 1] || 0) << 8) + (bytes[offset + 2] || 0);\n}\n\n/** Reads an unsigned little-endian 24-bit integer. */\nexport function readU24LE(bytes, offset)\n{\n return (bytes[offset] || 0) + ((bytes[offset + 1] || 0) << 8) + ((bytes[offset + 2] || 0) * 0x10000);\n}\n\n/** Reads an unsigned big-endian 32-bit integer. */\nexport function readU32BE(bytes, offset)\n{\n return (((bytes[offset] || 0) * 0x1000000)\n + ((bytes[offset + 1] || 0) << 16)\n + ((bytes[offset + 2] || 0) << 8)\n + (bytes[offset + 3] || 0)) >>> 0;\n}\n\n/** Reads an unsigned little-endian 32-bit integer. */\nexport function readU32LE(bytes, offset)\n{\n return ((bytes[offset] || 0)\n + ((bytes[offset + 1] || 0) << 8)\n + ((bytes[offset + 2] || 0) << 16)\n + ((bytes[offset + 3] || 0) * 0x1000000)) >>> 0;\n}\n\n/**\n * Reinterprets the bits of an unsigned 32-bit integer as a float32.\n *\n * Carbon stores float-valued render states and annotation payloads as raw\n * uint32 bit patterns, so a consumer that needs the number rather than the\n * pattern must reinterpret rather than convert.\n *\n * @param {number} value Unsigned 32-bit integer containing float bits.\n * @returns {number} Float value represented by the same bits.\n */\nexport function float32FromBits(value)\n{\n scratch.setUint32(0, value >>> 0, true);\n return scratch.getFloat32(0, true);\n}\n\n/**\n * The bit pattern of a 32-bit float.\n *\n * The inverse of `float32FromBits`, and the reason both live here: a caller that\n * round-trips a float through its bits needs the two halves to agree about byte\n * order, and two modules each owning one half is how they stop agreeing.\n *\n * @param {number} value Float value.\n * @returns {number} Unsigned 32-bit pattern encoding that float.\n */\nexport function float32ToBits(value)\n{\n scratch.setFloat32(0, value, true);\n return scratch.getUint32(0, true);\n}\n"],"names":["scratch","DataView","ArrayBuffer","asUint8Array","value","label","Uint8Array","isView","buffer","byteOffset","byteLength","TypeError","copyBytes","slice","toArrayBuffer","bytes","hasBytePrefix","prefix","expected","index","readFourCc","offset","length","i","String","fromCharCode","readU16BE","readU16LE","readU24BE","readU24LE","readU32BE","readU32LE","float32FromBits","setUint32","getFloat32","float32ToBits","setFloat32","getUint32"],"mappings":"AAAA;AACA;AACA;AACA;AACA,MAAMA,OAAO,GAAG,IAAIC,QAAQ,CAAC,IAAIC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzC,SAASC,YAAYA,CAACC,KAAK,EAAEC,KAAK,GAAG,OAAO,EACnD;EACI,IAAID,KAAK,YAAYE,UAAU,EAC/B;AACI,IAAA,OAAOF,KAAK;AAChB,EAAA;EAEA,IAAIA,KAAK,YAAYF,WAAW,EAChC;AACI,IAAA,OAAO,IAAII,UAAU,CAACF,KAAK,CAAC;AAChC,EAAA;AAEA,EAAA,IAAIF,WAAW,CAACK,MAAM,CAACH,KAAK,CAAC,EAC7B;AACI,IAAA,OAAO,IAAIE,UAAU,CAACF,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,UAAU,EAAEL,KAAK,CAACM,UAAU,CAAC;AAC3E,EAAA;AAEA,EAAA,MAAM,IAAIC,SAAS,CAAC,CAAA,EAAGN,KAAK,0DAA0D,CAAC;AAC3F;;AAEA;AACO,SAASO,SAASA,CAACR,KAAK,EAAEC,KAAK,GAAG,OAAO,EAChD;EACI,OAAOF,YAAY,CAACC,KAAK,EAAEC,KAAK,CAAC,CAACQ,KAAK,EAAE;AAC7C;;AAEA;AACO,SAASC,aAAaA,CAACV,KAAK,EAAEC,KAAK,GAAG,OAAO,EACpD;AACI,EAAA,MAAMU,KAAK,GAAGZ,YAAY,CAACC,KAAK,EAAEC,KAAK,CAAC;AAExC,EAAA,OAAOU,KAAK,CAACP,MAAM,CAACK,KAAK,CAACE,KAAK,CAACN,UAAU,EAAEM,KAAK,CAACN,UAAU,GAAGM,KAAK,CAACL,UAAU,CAAC;AACpF;;AAEA;AACO,SAASM,aAAaA,CAACZ,KAAK,EAAEa,MAAM,EAC3C;AACI,EAAA,MAAMF,KAAK,GAAGZ,YAAY,CAACC,KAAK,EAAE,OAAO,CAAC;AAC1C,EAAA,MAAMc,QAAQ,GAAGf,YAAY,CAACc,MAAM,EAAE,QAAQ,CAAC;AAE/C,EAAA,IAAIF,KAAK,CAACL,UAAU,GAAGQ,QAAQ,CAACR,UAAU,EAC1C;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;AAEA,EAAA,KAAK,IAAIS,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,QAAQ,CAACR,UAAU,EAAES,KAAK,EAAE,EACxD;IACI,IAAIJ,KAAK,CAACI,KAAK,CAAC,KAAKD,QAAQ,CAACC,KAAK,CAAC,EACpC;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AAEA,EAAA,OAAO,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACL,KAAK,EAAEM,MAAM,EAAEC,MAAM,GAAG,CAAC,EACpD;EACI,IAAIlB,KAAK,GAAG,EAAE;EACd,KAAK,IAAImB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,EAAE,EAAEnB,KAAK,IAAIoB,MAAM,CAACC,YAAY,CAACV,KAAK,CAACM,MAAM,GAAGE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,EAAA,OAAOnB,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACO,SAASsB,SAASA,CAACX,KAAK,EAAEM,MAAM,EACvC;AACI,EAAA,OAAQ,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAKN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE;;AAEA;AACO,SAASM,SAASA,CAACZ,KAAK,EAAEM,MAAM,EACvC;AACI,EAAA,OAAO,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,IAAK,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE;AACjE;;AAEA;AACO,SAASO,SAASA,CAACb,KAAK,EAAEM,MAAM,EACvC;AACI,EAAA,OAAQ,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,IAAK,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAIN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACxG;;AAEA;AACO,SAASQ,SAASA,CAACd,KAAK,EAAEM,MAAM,EACvC;AACI,EAAA,OAAO,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,KAAK,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAI,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,OAAQ;AACxG;;AAEA;AACO,SAASS,SAASA,CAACf,KAAK,EAAEM,MAAM,EACvC;EACI,OAAS,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,IAClC,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAC/B,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAC9BN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAM,CAAC;AACzC;;AAEA;AACO,SAASU,SAASA,CAAChB,KAAK,EAAEM,MAAM,EACvC;EACI,OAAQ,CAACN,KAAK,CAACM,MAAM,CAAC,IAAI,CAAC,KACpB,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAC9B,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAC/B,CAACN,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,SAAU,KAAM,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,eAAeA,CAAC5B,KAAK,EACrC;EACIJ,OAAO,CAACiC,SAAS,CAAC,CAAC,EAAE7B,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC;AACvC,EAAA,OAAOJ,OAAO,CAACkC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAAC/B,KAAK,EACnC;EACIJ,OAAO,CAACoC,UAAU,CAAC,CAAC,EAAEhC,KAAK,EAAE,IAAI,CAAC;AAClC,EAAA,OAAOJ,OAAO,CAACqC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;AACrC;;;;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// The two integrity checksums this runtime computes, in one module named for
|
|
2
|
+
// what they are. Sibling of `hash.js`, and the split between them is the job,
|
|
3
|
+
// not the width: FNV hashes address and identify, these two verify that bytes
|
|
4
|
+
// survived a round trip.
|
|
5
|
+
//
|
|
6
|
+
// ONE IMPLEMENTATION EACH, BECAUSE THERE WAS ONE ALGORITHM EACH. Standard
|
|
7
|
+
// CRC-32 was written three times — `cmf/core/binary.js`, `gr2/core/container.js`
|
|
8
|
+
// and `png/core/writer.js` — with the same reflected polynomial, the same
|
|
9
|
+
// initial value and the same final xor, differing only in whether the table was
|
|
10
|
+
// precomputed and how many range arguments the signature took. Adler-32 was
|
|
11
|
+
// written twice, in `png/core/writer.js` and `fbx/core/helpers.js`.
|
|
12
|
+
//
|
|
13
|
+
// WHAT DOES NOT BELONG HERE, and the distinction `hash.js` already draws:
|
|
14
|
+
// a checksum whose POLYNOMIAL or direction is part of a format's wire contract
|
|
15
|
+
// stays with that format. `wem/core/bitStream.js` computes the Ogg page
|
|
16
|
+
// checksum — forward CRC-32 over polynomial 0x04c11db7, zero initial value, no
|
|
17
|
+
// final xor. It shares a name with the function below and nothing else, and its
|
|
18
|
+
// own comment says so.
|
|
19
|
+
//
|
|
20
|
+
// Nor does the independent copy in `test/.../gr2/writer.test.mjs` belong here.
|
|
21
|
+
// A test that verifies a checksum by importing the implementation it is testing
|
|
22
|
+
// proves only that the function equals itself; that copy is a deliberate oracle
|
|
23
|
+
// and is meant to stay separate.
|
|
24
|
+
|
|
25
|
+
/** Reflected CRC-32 polynomial, as used by zlib, PNG, GZIP and Carbon's containers. */
|
|
26
|
+
const CRC32_POLYNOMIAL = 0xedb88320;
|
|
27
|
+
|
|
28
|
+
/** Largest prime below 65536 — Adler-32's modulus. */
|
|
29
|
+
const ADLER32_MODULUS = 65521;
|
|
30
|
+
const CRC32_TABLE = (() => {
|
|
31
|
+
const table = new Uint32Array(256);
|
|
32
|
+
for (let index = 0; index < 256; index++) {
|
|
33
|
+
let value = index;
|
|
34
|
+
for (let bit = 0; bit < 8; bit++) {
|
|
35
|
+
value = value & 1 ? CRC32_POLYNOMIAL ^ value >>> 1 : value >>> 1;
|
|
36
|
+
}
|
|
37
|
+
table[index] = value >>> 0;
|
|
38
|
+
}
|
|
39
|
+
return table;
|
|
40
|
+
})();
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Standard CRC-32 over a byte range.
|
|
44
|
+
*
|
|
45
|
+
* Reflected polynomial, initial value all ones, final one's complement — the
|
|
46
|
+
* variant PNG chunks, zlib streams, CMF containers and GR2 sections all use.
|
|
47
|
+
*
|
|
48
|
+
* @param {Uint8Array} bytes Source bytes.
|
|
49
|
+
* @param {number} [start] First byte offset, inclusive.
|
|
50
|
+
* @param {number} [end] Last byte offset, exclusive.
|
|
51
|
+
* @returns {number} Unsigned 32-bit checksum.
|
|
52
|
+
*/
|
|
53
|
+
function crc32(bytes, start = 0, end = bytes.length) {
|
|
54
|
+
let crc = 0xffffffff;
|
|
55
|
+
for (let index = start; index < end; index++) {
|
|
56
|
+
crc = crc >>> 8 ^ CRC32_TABLE[(crc ^ bytes[index]) & 0xff];
|
|
57
|
+
}
|
|
58
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Adler-32 over a byte range, as zlib streams carry it.
|
|
63
|
+
*
|
|
64
|
+
* @param {Uint8Array} bytes Source bytes.
|
|
65
|
+
* @param {number} [start] First byte offset, inclusive.
|
|
66
|
+
* @param {number} [end] Last byte offset, exclusive.
|
|
67
|
+
* @returns {number} Unsigned 32-bit checksum.
|
|
68
|
+
*/
|
|
69
|
+
function adler32(bytes, start = 0, end = bytes.length) {
|
|
70
|
+
let a = 1,
|
|
71
|
+
b = 0;
|
|
72
|
+
for (let index = start; index < end; index++) {
|
|
73
|
+
a = (a + bytes[index]) % ADLER32_MODULUS;
|
|
74
|
+
b = (b + a) % ADLER32_MODULUS;
|
|
75
|
+
}
|
|
76
|
+
return (b << 16 >>> 0 | a) >>> 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { adler32, crc32 };
|
|
80
|
+
//# sourceMappingURL=checksum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum.js","sources":["../../../../src/global/utils/checksum.js"],"sourcesContent":["// The two integrity checksums this runtime computes, in one module named for\n// what they are. Sibling of `hash.js`, and the split between them is the job,\n// not the width: FNV hashes address and identify, these two verify that bytes\n// survived a round trip.\n//\n// ONE IMPLEMENTATION EACH, BECAUSE THERE WAS ONE ALGORITHM EACH. Standard\n// CRC-32 was written three times — `cmf/core/binary.js`, `gr2/core/container.js`\n// and `png/core/writer.js` — with the same reflected polynomial, the same\n// initial value and the same final xor, differing only in whether the table was\n// precomputed and how many range arguments the signature took. Adler-32 was\n// written twice, in `png/core/writer.js` and `fbx/core/helpers.js`.\n//\n// WHAT DOES NOT BELONG HERE, and the distinction `hash.js` already draws:\n// a checksum whose POLYNOMIAL or direction is part of a format's wire contract\n// stays with that format. `wem/core/bitStream.js` computes the Ogg page\n// checksum — forward CRC-32 over polynomial 0x04c11db7, zero initial value, no\n// final xor. It shares a name with the function below and nothing else, and its\n// own comment says so.\n//\n// Nor does the independent copy in `test/.../gr2/writer.test.mjs` belong here.\n// A test that verifies a checksum by importing the implementation it is testing\n// proves only that the function equals itself; that copy is a deliberate oracle\n// and is meant to stay separate.\n\n/** Reflected CRC-32 polynomial, as used by zlib, PNG, GZIP and Carbon's containers. */\nconst CRC32_POLYNOMIAL = 0xedb88320;\n\n/** Largest prime below 65536 — Adler-32's modulus. */\nconst ADLER32_MODULUS = 65521;\n\nconst CRC32_TABLE = (() =>\n{\n const table = new Uint32Array(256);\n for (let index = 0; index < 256; index++)\n {\n let value = index;\n for (let bit = 0; bit < 8; bit++)\n {\n value = (value & 1) ? (CRC32_POLYNOMIAL ^ (value >>> 1)) : (value >>> 1);\n }\n table[index] = value >>> 0;\n }\n return table;\n})();\n\n/**\n * Standard CRC-32 over a byte range.\n *\n * Reflected polynomial, initial value all ones, final one's complement — the\n * variant PNG chunks, zlib streams, CMF containers and GR2 sections all use.\n *\n * @param {Uint8Array} bytes Source bytes.\n * @param {number} [start] First byte offset, inclusive.\n * @param {number} [end] Last byte offset, exclusive.\n * @returns {number} Unsigned 32-bit checksum.\n */\nexport function crc32(bytes, start = 0, end = bytes.length)\n{\n let crc = 0xffffffff;\n for (let index = start; index < end; index++)\n {\n crc = (crc >>> 8) ^ CRC32_TABLE[(crc ^ bytes[index]) & 0xff];\n }\n return (crc ^ 0xffffffff) >>> 0;\n}\n\n/**\n * Adler-32 over a byte range, as zlib streams carry it.\n *\n * @param {Uint8Array} bytes Source bytes.\n * @param {number} [start] First byte offset, inclusive.\n * @param {number} [end] Last byte offset, exclusive.\n * @returns {number} Unsigned 32-bit checksum.\n */\nexport function adler32(bytes, start = 0, end = bytes.length)\n{\n let\n a = 1,\n b = 0;\n\n for (let index = start; index < end; index++)\n {\n a = (a + bytes[index]) % ADLER32_MODULUS;\n b = (b + a) % ADLER32_MODULUS;\n }\n\n return (((b << 16) >>> 0) | a) >>> 0;\n}\n"],"names":["CRC32_POLYNOMIAL","ADLER32_MODULUS","CRC32_TABLE","table","Uint32Array","index","value","bit","crc32","bytes","start","end","length","crc","adler32","a","b"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMA,gBAAgB,GAAG,UAAU;;AAEnC;AACA,MAAMC,eAAe,GAAG,KAAK;AAE7B,MAAMC,WAAW,GAAG,CAAC,MACrB;AACI,EAAA,MAAMC,KAAK,GAAG,IAAIC,WAAW,CAAC,GAAG,CAAC;EAClC,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,GAAG,EAAEA,KAAK,EAAE,EACxC;IACI,IAAIC,KAAK,GAAGD,KAAK;IACjB,KAAK,IAAIE,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,EAAEA,GAAG,EAAE,EAChC;AACID,MAAAA,KAAK,GAAIA,KAAK,GAAG,CAAC,GAAKN,gBAAgB,GAAIM,KAAK,KAAK,CAAE,GAAKA,KAAK,KAAK,CAAE;AAC5E,IAAA;AACAH,IAAAA,KAAK,CAACE,KAAK,CAAC,GAAGC,KAAK,KAAK,CAAC;AAC9B,EAAA;AACA,EAAA,OAAOH,KAAK;AAChB,CAAC,GAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,KAAKA,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,GAAG,GAAGF,KAAK,CAACG,MAAM,EAC1D;EACI,IAAIC,GAAG,GAAG,UAAU;EACpB,KAAK,IAAIR,KAAK,GAAGK,KAAK,EAAEL,KAAK,GAAGM,GAAG,EAAEN,KAAK,EAAE,EAC5C;AACIQ,IAAAA,GAAG,GAAIA,GAAG,KAAK,CAAC,GAAIX,WAAW,CAAC,CAACW,GAAG,GAAGJ,KAAK,CAACJ,KAAK,CAAC,IAAI,IAAI,CAAC;AAChE,EAAA;AACA,EAAA,OAAO,CAACQ,GAAG,GAAG,UAAU,MAAM,CAAC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,OAAOA,CAACL,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,GAAG,GAAGF,KAAK,CAACG,MAAM,EAC5D;EACI,IACIG,CAAC,GAAG,CAAC;AACLC,IAAAA,CAAC,GAAG,CAAC;EAET,KAAK,IAAIX,KAAK,GAAGK,KAAK,EAAEL,KAAK,GAAGM,GAAG,EAAEN,KAAK,EAAE,EAC5C;IACIU,CAAC,GAAG,CAACA,CAAC,GAAGN,KAAK,CAACJ,KAAK,CAAC,IAAIJ,eAAe;AACxCe,IAAAA,CAAC,GAAG,CAACA,CAAC,GAAGD,CAAC,IAAId,eAAe;AACjC,EAAA;EAEA,OAAO,CAAGe,CAAC,IAAI,EAAE,KAAM,CAAC,GAAID,CAAC,MAAM,CAAC;AACxC;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CjsError } from './CjsError.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_CANCELLATION_MESSAGE = "The operation was cancelled.";
|
|
4
|
+
const CJS_OPERATION_CANCELLED = "CJS_OPERATION_CANCELLED";
|
|
5
|
+
|
|
6
|
+
/** Represents one cancelled operation using Web-compatible abort identity. */
|
|
7
|
+
class CjsCancellationError extends CjsError {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a cancellation error with stable code `CJS_OPERATION_CANCELLED`.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} [message]
|
|
12
|
+
* @param {{cause?: *, details?: object|null}} [options]
|
|
13
|
+
*/
|
|
14
|
+
constructor(message = DEFAULT_CANCELLATION_MESSAGE, options = {}) {
|
|
15
|
+
super(CJS_OPERATION_CANCELLED, message, options);
|
|
16
|
+
this.name = "AbortError";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Checks for this cancellation type, its stable code, or a platform
|
|
21
|
+
* `AbortError` name.
|
|
22
|
+
*/
|
|
23
|
+
static is(error) {
|
|
24
|
+
if (CjsError.hasCode(error, CJS_OPERATION_CANCELLED)) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
return error?.name === "AbortError";
|
|
29
|
+
} catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { CJS_OPERATION_CANCELLED, CjsCancellationError };
|
|
36
|
+
//# sourceMappingURL=CjsCancellationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CjsCancellationError.js","sources":["../../../../../src/global/utils/errors/CjsCancellationError.js"],"sourcesContent":["import { CjsError } from \"./CjsError.js\";\r\n\r\n\r\nconst DEFAULT_CANCELLATION_MESSAGE = \"The operation was cancelled.\";\r\n\r\nexport const CJS_OPERATION_CANCELLED = \"CJS_OPERATION_CANCELLED\";\r\n\r\n\r\n\r\n/** Represents one cancelled operation using Web-compatible abort identity. */\r\nexport class CjsCancellationError extends CjsError\r\n{\r\n\r\n /**\r\n * Creates a cancellation error with stable code `CJS_OPERATION_CANCELLED`.\r\n *\r\n * @param {string} [message]\r\n * @param {{cause?: *, details?: object|null}} [options]\r\n */\r\n constructor(message = DEFAULT_CANCELLATION_MESSAGE, options = {})\r\n {\r\n super(CJS_OPERATION_CANCELLED, message, options);\r\n this.name = \"AbortError\";\r\n }\r\n\r\n /**\r\n * Checks for this cancellation type, its stable code, or a platform\r\n * `AbortError` name.\r\n */\r\n static is(error)\r\n {\r\n if (CjsError.hasCode(error, CJS_OPERATION_CANCELLED))\r\n {\r\n return true;\r\n }\r\n\r\n try\r\n {\r\n return error?.name === \"AbortError\";\r\n }\r\n catch\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n"],"names":["DEFAULT_CANCELLATION_MESSAGE","CJS_OPERATION_CANCELLED","CjsCancellationError","CjsError","constructor","message","options","name","is","error","hasCode"],"mappings":";;AAGA,MAAMA,4BAA4B,GAAG,8BAA8B;AAE5D,MAAMC,uBAAuB,GAAG;;AAIvC;AACO,MAAMC,oBAAoB,SAASC,QAAQ,CAClD;AAEI;AACJ;AACA;AACA;AACA;AACA;EACIC,WAAWA,CAACC,OAAO,GAAGL,4BAA4B,EAAEM,OAAO,GAAG,EAAE,EAChE;AACI,IAAA,KAAK,CAACL,uBAAuB,EAAEI,OAAO,EAAEC,OAAO,CAAC;IAChD,IAAI,CAACC,IAAI,GAAG,YAAY;AAC5B,EAAA;;AAEA;AACJ;AACA;AACA;EACI,OAAOC,EAAEA,CAACC,KAAK,EACf;IACI,IAAIN,QAAQ,CAACO,OAAO,CAACD,KAAK,EAAER,uBAAuB,CAAC,EACpD;AACI,MAAA,OAAO,IAAI;AACf,IAAA;IAEA,IACA;AACI,MAAA,OAAOQ,KAAK,EAAEF,IAAI,KAAK,YAAY;AACvC,IAAA,CAAC,CACD,MACA;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AAEJ;;;;"}
|