@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +92 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +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":"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"}
|
|
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,4 @@
|
|
|
1
|
-
import { defaultValueForCarbonField, coerceCarbonMathInto, coerceCarbonTypedArrayInto, normalizeCarbonValue, exportCarbonValue } from './types/carbonTypes.js';
|
|
1
|
+
import { defaultValueForCarbonField, coerceCarbonMathInto, coerceCarbonTypedArrayInto, cloneCarbonValue, normalizeCarbonValue, exportCarbonValue } from './types/carbonTypes.js';
|
|
2
2
|
import { composeNotifyDecorator } from '../compose/notify.js';
|
|
3
3
|
import { cast, composeInterfaceDecorator } from '../compose/interface.js';
|
|
4
4
|
import { createValuesTransport, composeValuesDecorator } from '../compose/values.js';
|
|
@@ -372,7 +372,18 @@ class CjsSchema {
|
|
|
372
372
|
static #statelessTransport = createValuesTransport({
|
|
373
373
|
GetFields: Constructor => getEffectiveFields(Constructor),
|
|
374
374
|
Export: (value, field, options) => exportCarbonValue(value, field.type),
|
|
375
|
-
|
|
375
|
+
// A live instance of a registered class is ALIASED, never copied - the
|
|
376
|
+
// rule the model path applies through its brand (CjsModel.js, the
|
|
377
|
+
// isModelInstance early return). A class off the base carries no brand,
|
|
378
|
+
// so without this a reference field would receive a plain-object copy
|
|
379
|
+
// and shared identity across the graph would silently split.
|
|
380
|
+
Import: (value, field) => {
|
|
381
|
+
if (isLiveSchemaInstance(value)) return value;
|
|
382
|
+
if (Array.isArray(value) && value.some(isLiveSchemaInstance)) {
|
|
383
|
+
return value.map(item => isLiveSchemaInstance(item) ? item : cloneCarbonValue(item));
|
|
384
|
+
}
|
|
385
|
+
return normalizeCarbonValue(value, field.type);
|
|
386
|
+
},
|
|
376
387
|
CoerceInto: (current, incoming, field) => coerceCarbonMathInto(current, incoming, field.type) ?? coerceCarbonTypedArrayInto(current, incoming, field.type),
|
|
377
388
|
IsEquivalent: (a, b) => a === b
|
|
378
389
|
});
|
|
@@ -1213,6 +1224,13 @@ function defineHiddenInheritedFields(Constructor, fieldNames) {
|
|
|
1213
1224
|
schema.hiddenInherited.add(fieldName);
|
|
1214
1225
|
}
|
|
1215
1226
|
}
|
|
1227
|
+
|
|
1228
|
+
// A live instance of a registered class, from this copy or a sibling one -
|
|
1229
|
+
// getClassName reads the cross-copy stamp. Plain bags, arrays, typed arrays
|
|
1230
|
+
// and the reader's `{ _sourceClassName }` carriers all answer false.
|
|
1231
|
+
function isLiveSchemaInstance(value) {
|
|
1232
|
+
return !!value && typeof value === "object" && !Array.isArray(value) && !ArrayBuffer.isView(value) && CjsSchema.getClassName(value.constructor) !== null;
|
|
1233
|
+
}
|
|
1216
1234
|
function getEffectiveFields(Constructor) {
|
|
1217
1235
|
const ordered = [];
|
|
1218
1236
|
const byName = new Map();
|