@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
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/dist/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.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 +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsGifFormat.js","sources":["../../../../../src/resource/formats/gif/CjsGifFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isGIF,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGifFormat\";\n\n/**\n * GIF format profile that inspects header and frame metadata and reads GIF\n * bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.\n */\nexport class CjsGifFormat extends
|
|
1
|
+
{"version":3,"file":"CjsGifFormat.js","sources":["../../../../../src/resource/formats/gif/CjsGifFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsImageFormat } from \"../../format/CjsImageFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isGIF,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGifFormat\";\n\n/**\n * GIF format profile that inspects header and frame metadata and reads GIF\n * bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.\n */\nexport class CjsGifFormat extends CjsImageFormat\n{\n _values = DEFAULT_VALUES;\n\n /** Creates a CjsGifFormat with caller-provided reader configuration. */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Applies caller-provided options after normalizing supported fields for the\n * GIF format configuration.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Returns a snapshot of the normalized reader options for the GIF format\n * configuration.\n */\n GetValues(options = {})\n {\n return normalizeValues(this._values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Reads the primary public payload representation from the supplied input\n * for the GIF format configuration.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Reads the primary public payload representation asynchronously for the GIF\n * format configuration.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Returns structural metadata without materializing the decoded payload for\n * the GIF format configuration.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Converts the current decoded payload into a JSON-safe representation for\n * the GIF format configuration.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Provides the one-shot GIF payload reader entry point. */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Provides the asynchronous one-shot GIF payload reader entry point. */\n static async readAsync(input, options = {})\n {\n return CjsGifFormat.read(input, options);\n }\n\n /** Provides the one-shot GIF metadata inspection entry point. */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Checks one input against the GIF decoder capability contract. */\n\n /** Provides the one-shot GIF JSON conversion entry point. */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Checks whether caller-provided bytes carry the expected GIF signature. */\n static isGIF(input)\n {\n try\n {\n return isGIF(asUint8Array(input, \"GIF input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static id = \"CjsGifFormat\";\n static mediaTypes = [ \"image\" ];\n static outputs = CjsFormat.defineOutputs({\n image: { decoded: true, probes: [ \"image\", \"rgba\" ] },\n rgba: { decoded: true },\n gifJson: { role: \"debug\", probes: [ \"gifJson\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n /**\n * Fill a HostBitmap through this format's RGBA8 output, for Carbon's ImageIO\n * registry (`CjsGifFormat.carbon`). See CjsImageFormat.readImageFromRgbaPayload.\n *\n * @param {Uint8Array|ArrayBuffer} input Image bytes.\n * @param {object} _loadParameters Load parameters; a single-mip image skips nothing.\n * @param {object} bitmap Destination HostBitmap.\n * @param {object|null} [metadata] Optional Metadata out.\n * @returns {object} ImageIOResult.\n */\n static readImageNative(input, _loadParameters, bitmap, metadata = null)\n {\n return this.readImageFromRgbaPayload(this.read(input, { emit: \"rgba\" }), bitmap, metadata);\n }\n\n static extensions = [ \".gif\" ];\n}\n\nexport default CjsGifFormat;\n"],"names":["FORMAT_NAME","CjsGifFormat","CjsImageFormat","_values","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","toJSON","isGIF","asUint8Array","id","mediaTypes","outputs","CjsFormat","defineOutputs","image","decoded","probes","rgba","gifJson","role","raw","default","passthrough","readImageNative","_loadParameters","bitmap","metadata","readImageFromRgbaPayload","emit","extensions"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { asUint8Array } from '#utils/bytes';
|
|
2
2
|
import { CjsFormat } from '../../format/CjsFormat.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CjsGeometryFormat } from '../../format/CjsGeometryFormat.js';
|
|
4
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, CLASS_KEYS } from './core/helpers.js';
|
|
4
5
|
import { toJsonWithArrayValues } from '../../format/jsonPolicies.js';
|
|
5
6
|
import { isGlb } from './core/parser.js';
|
|
6
7
|
|
|
@@ -16,16 +17,16 @@ const FORMAT_NAME = "CjsGltfFormat";
|
|
|
16
17
|
* CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit
|
|
17
18
|
* debug/output projection rather than an intermediate format contract.
|
|
18
19
|
*/
|
|
19
|
-
class CjsGltfFormat extends
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
class CjsGltfFormat extends CjsGeometryFormat {
|
|
21
|
+
_emit = DEFAULT_VALUES.emit;
|
|
22
|
+
_source = DEFAULT_VALUES.source;
|
|
23
|
+
_buffers = DEFAULT_VALUES.buffers;
|
|
24
|
+
_packTangents = DEFAULT_VALUES.packTangents;
|
|
25
|
+
_uvHandedness = DEFAULT_VALUES.uvHandedness;
|
|
26
|
+
_rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
|
|
27
|
+
_rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
|
|
28
|
+
_rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
|
|
29
|
+
_classes = DEFAULT_VALUES.classes;
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Create a reusable format profile.
|
|
@@ -45,15 +46,15 @@ class CjsGltfFormat extends CjsFormat {
|
|
|
45
46
|
*/
|
|
46
47
|
SetValues(options = {}) {
|
|
47
48
|
const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);
|
|
48
|
-
this
|
|
49
|
-
this
|
|
50
|
-
this
|
|
51
|
-
this
|
|
52
|
-
this
|
|
53
|
-
this
|
|
54
|
-
this
|
|
55
|
-
this
|
|
56
|
-
this
|
|
49
|
+
this._emit = values.emit;
|
|
50
|
+
this._source = values.source;
|
|
51
|
+
this._buffers = values.buffers;
|
|
52
|
+
this._packTangents = values.packTangents;
|
|
53
|
+
this._uvHandedness = values.uvHandedness;
|
|
54
|
+
this._rebuildMissingNormals = values.rebuildMissingNormals;
|
|
55
|
+
this._rebuildMissingTangents = values.rebuildMissingTangents;
|
|
56
|
+
this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;
|
|
57
|
+
this._classes = values.classes;
|
|
57
58
|
return this;
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -65,76 +66,18 @@ class CjsGltfFormat extends CjsFormat {
|
|
|
65
66
|
*/
|
|
66
67
|
GetValues(options = {}) {
|
|
67
68
|
return normalizeValues({
|
|
68
|
-
emit: this
|
|
69
|
-
source: this
|
|
70
|
-
buffers: this
|
|
71
|
-
packTangents: this
|
|
72
|
-
uvHandedness: this
|
|
73
|
-
rebuildMissingNormals: this
|
|
74
|
-
rebuildMissingTangents: this
|
|
75
|
-
rebuildMissingBiNormals: this
|
|
76
|
-
classes: this
|
|
69
|
+
emit: this._emit,
|
|
70
|
+
source: this._source,
|
|
71
|
+
buffers: this._buffers,
|
|
72
|
+
packTangents: this._packTangents,
|
|
73
|
+
uvHandedness: this._uvHandedness,
|
|
74
|
+
rebuildMissingNormals: this._rebuildMissingNormals,
|
|
75
|
+
rebuildMissingTangents: this._rebuildMissingTangents,
|
|
76
|
+
rebuildMissingBiNormals: this._rebuildMissingBiNormals,
|
|
77
|
+
classes: this._classes
|
|
77
78
|
}, options, FORMAT_NAME);
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
/**
|
|
81
|
-
* Set multiple node-class constructors for this profile.
|
|
82
|
-
*
|
|
83
|
-
* @param {object} [classes] Map of node class keys to constructors.
|
|
84
|
-
* @returns {CjsGltfFormat} This format profile.
|
|
85
|
-
*/
|
|
86
|
-
SetClasses(classes = {}) {
|
|
87
|
-
return this.SetValues({
|
|
88
|
-
classes
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Set one node-class constructor for this profile.
|
|
94
|
-
*
|
|
95
|
-
* @param {string} type Node class key.
|
|
96
|
-
* @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
|
|
97
|
-
* @returns {CjsGltfFormat} This format profile.
|
|
98
|
-
*/
|
|
99
|
-
SetClass(type, Class) {
|
|
100
|
-
if (Class === null || Class === undefined) {
|
|
101
|
-
validateClassKey(type, FORMAT_NAME);
|
|
102
|
-
const classes = {
|
|
103
|
-
...this.#classes
|
|
104
|
-
};
|
|
105
|
-
delete classes[type];
|
|
106
|
-
this.#classes = classes;
|
|
107
|
-
return this;
|
|
108
|
-
}
|
|
109
|
-
validateClass(type, Class, FORMAT_NAME);
|
|
110
|
-
return this.SetValues({
|
|
111
|
-
classes: {
|
|
112
|
-
[type]: Class
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Get a configured node-class constructor.
|
|
119
|
-
*
|
|
120
|
-
* @param {string} type Node class key.
|
|
121
|
-
* @returns {Function|undefined} The registered constructor, if any.
|
|
122
|
-
*/
|
|
123
|
-
GetClass(type) {
|
|
124
|
-
validateClassKey(type, FORMAT_NAME);
|
|
125
|
-
return this.#classes[type];
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Whether this format profile has a constructor registered for a node key.
|
|
130
|
-
*
|
|
131
|
-
* @param {string} type Node class key.
|
|
132
|
-
* @returns {boolean} True when a constructor is registered.
|
|
133
|
-
*/
|
|
134
|
-
HasClass(type) {
|
|
135
|
-
return !!this.GetClass(type);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
81
|
/**
|
|
139
82
|
* Read glTF/GLB data with this profile's values.
|
|
140
83
|
*
|
|
@@ -232,16 +175,8 @@ class CjsGltfFormat extends CjsFormat {
|
|
|
232
175
|
/**
|
|
233
176
|
* Emit targets for this format (canonical frozen enum).
|
|
234
177
|
*/
|
|
235
|
-
static
|
|
236
|
-
|
|
237
|
-
GLTF_JSON: OUTPUT_GLTF_JSON,
|
|
238
|
-
SHARED: OUTPUT_SHARED,
|
|
239
|
-
GR2: OUTPUT_GR2,
|
|
240
|
-
CMF: OUTPUT_CMF
|
|
241
|
-
});
|
|
242
|
-
static CLASS_KEYS = CLASS_KEYS;
|
|
243
|
-
static id = "gltf";
|
|
244
|
-
static mediaTypes = Object.freeze(["geometry"]);
|
|
178
|
+
static classKeys = CLASS_KEYS;
|
|
179
|
+
static id = "CjsGltfFormat";
|
|
245
180
|
static outputs = CjsFormat.defineOutputs({
|
|
246
181
|
shared: {
|
|
247
182
|
default: true,
|
|
@@ -262,7 +197,7 @@ class CjsGltfFormat extends CjsFormat {
|
|
|
262
197
|
decoded: true
|
|
263
198
|
}
|
|
264
199
|
});
|
|
265
|
-
static extensions =
|
|
200
|
+
static extensions = [".gltf", ".glb"];
|
|
266
201
|
}
|
|
267
202
|
|
|
268
203
|
export { CjsGltfFormat, CjsGltfFormat as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsGltfFormat.js","sources":["../../../../../src/resource/formats/gltf/CjsGltfFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\n/**\n * Exposed CarbonEngineJS-facing glTF/GLB format class.\n *\n * Keep this file small and reviewable: glTF parsing, accessor decoding,\n * mesh conversion, skin conversion, animation conversion, and geometry helper\n * glue live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GLTF_JSON,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_SHARED,\n inspectWithValues,\n isGlb,\n normalizeValues,\n readWithValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGltfFormat\";\n\n/**\n * glTF/GLB format class that parses documents, decodes accessors, and converts\n * meshes, skins, and animations into shared-mesh, GR2, or CMF output plus debug\n * JSON.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * glTF is the import source; the default public read contract is the shared\n * CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit\n * debug/output projection rather than an intermediate format contract.\n */\nexport class CjsGltfFormat extends CjsFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #buffers = DEFAULT_VALUES.buffers;\n #packTangents = DEFAULT_VALUES.packTangents;\n #uvHandedness = DEFAULT_VALUES.uvHandedness;\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#buffers = values.buffers;\n this.#packTangents = values.packTangents;\n this.#uvHandedness = values.uvHandedness;\n this.#rebuildMissingNormals = values.rebuildMissingNormals;\n this.#rebuildMissingTangents = values.rebuildMissingTangents;\n this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n buffers: this.#buffers,\n packTangents: this.#packTangents,\n uvHandedness: this.#uvHandedness,\n rebuildMissingNormals: this.#rebuildMissingNormals,\n rebuildMissingTangents: this.#rebuildMissingTangents,\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read glTF/GLB data with this profile's values.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Inspect glTF/GLB data without hydrating classes.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsGltfFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Cheap payload sniff for GLB bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload starts with GLB magic.\n */\n static isGlb(input)\n {\n return isGlb(input);\n }\n\n /**\n * Cheap object/text/bytes sniff for glTF-like assets.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input Candidate glTF data.\n * @returns {boolean} True when the input looks like glTF 2.x or GLB.\n */\n static isGltf(input)\n {\n try\n {\n if (isGlb(input)) return true;\n if (input && typeof input === \"object\" && !ArrayBuffer.isView(input) && !(input instanceof ArrayBuffer))\n {\n return !!(input.asset && String(input.asset.version || \"\").startsWith(\"2\"));\n }\n const text = typeof input === \"string\" ? input : new TextDecoder().decode(asUint8Array(input, \"CjsGltfFormat input\"));\n const json = JSON.parse(text);\n return !!(json.asset && String(json.asset.version || \"\").startsWith(\"2\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n GLTF_JSON: OUTPUT_GLTF_JSON,\n SHARED: OUTPUT_SHARED,\n GR2: OUTPUT_GR2,\n CMF: OUTPUT_CMF\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = \"gltf\";\n static mediaTypes = Object.freeze([ \"geometry\" ]);\n static outputs = CjsFormat.defineOutputs({\n shared: { default: true, decoded: true },\n gr2: { decoded: true },\n cmf: { decoded: true },\n json: { role: \"debug\", decoded: true },\n gltfJson: { role: \"debug\", decoded: true }\n });\n static extensions = Object.freeze([ \".gltf\", \".glb\" ]);\n\n}\n\nexport default CjsGltfFormat;\n"],"names":["FORMAT_NAME","CjsGltfFormat","CjsFormat","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","isGlb","isGltf","ArrayBuffer","isView","asset","String","version","startsWith","text","TextDecoder","decode","asUint8Array","json","JSON","parse","Output","Object","freeze","OUTPUT_JSON","GLTF_JSON","OUTPUT_GLTF_JSON","SHARED","OUTPUT_SHARED","GR2","OUTPUT_GR2","CMF","OUTPUT_CMF","CLASS_KEYS","id","mediaTypes","outputs","defineOutputs","shared","default","decoded","gr2","cmf","role","gltfJson","extensions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsGltfFormat.js","sources":["../../../../../src/resource/formats/gltf/CjsGltfFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsGeometryFormat } from \"../../format/CjsGeometryFormat.js\";\n/**\n * Exposed CarbonEngineJS-facing glTF/GLB format class.\n *\n * Keep this file small and reviewable: glTF parsing, accessor decoding,\n * mesh conversion, skin conversion, animation conversion, and geometry helper\n * glue live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GLTF_JSON,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_SHARED,\n inspectWithValues,\n isGlb,\n normalizeValues,\n readWithValues,\n toJsonValue,\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGltfFormat\";\n\n/**\n * glTF/GLB format class that parses documents, decodes accessors, and converts\n * meshes, skins, and animations into shared-mesh, GR2, or CMF output plus debug\n * JSON.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * glTF is the import source; the default public read contract is the shared\n * CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit\n * debug/output projection rather than an intermediate format contract.\n */\nexport class CjsGltfFormat extends CjsGeometryFormat\n{\n\n _emit = DEFAULT_VALUES.emit;\n _source = DEFAULT_VALUES.source;\n _buffers = DEFAULT_VALUES.buffers;\n _packTangents = DEFAULT_VALUES.packTangents;\n _uvHandedness = DEFAULT_VALUES.uvHandedness;\n _rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n _rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n _rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n _classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this._emit = values.emit;\n this._source = values.source;\n this._buffers = values.buffers;\n this._packTangents = values.packTangents;\n this._uvHandedness = values.uvHandedness;\n this._rebuildMissingNormals = values.rebuildMissingNormals;\n this._rebuildMissingTangents = values.rebuildMissingTangents;\n this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this._classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this._emit,\n source: this._source,\n buffers: this._buffers,\n packTangents: this._packTangents,\n uvHandedness: this._uvHandedness,\n rebuildMissingNormals: this._rebuildMissingNormals,\n rebuildMissingTangents: this._rebuildMissingTangents,\n rebuildMissingBiNormals: this._rebuildMissingBiNormals,\n classes: this._classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Read glTF/GLB data with this profile's values.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Inspect glTF/GLB data without hydrating classes.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsGltfFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Cheap payload sniff for GLB bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload starts with GLB magic.\n */\n static isGlb(input)\n {\n return isGlb(input);\n }\n\n /**\n * Cheap object/text/bytes sniff for glTF-like assets.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input Candidate glTF data.\n * @returns {boolean} True when the input looks like glTF 2.x or GLB.\n */\n static isGltf(input)\n {\n try\n {\n if (isGlb(input)) return true;\n if (input && typeof input === \"object\" && !ArrayBuffer.isView(input) && !(input instanceof ArrayBuffer))\n {\n return !!(input.asset && String(input.asset.version || \"\").startsWith(\"2\"));\n }\n const text = typeof input === \"string\" ? input : new TextDecoder().decode(asUint8Array(input, \"CjsGltfFormat input\"));\n const json = JSON.parse(text);\n return !!(json.asset && String(json.asset.version || \"\").startsWith(\"2\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static classKeys = CLASS_KEYS;\n static id = \"CjsGltfFormat\";\n static outputs = CjsFormat.defineOutputs({\n shared: { default: true, decoded: true },\n gr2: { decoded: true },\n cmf: { decoded: true },\n json: { role: \"debug\", decoded: true },\n gltfJson: { role: \"debug\", decoded: true }\n });\n static extensions = [ \".gltf\", \".glb\" ];\n\n}\n\nexport default CjsGltfFormat;\n"],"names":["FORMAT_NAME","CjsGltfFormat","CjsGeometryFormat","_emit","DEFAULT_VALUES","emit","_source","source","_buffers","buffers","_packTangents","packTangents","_uvHandedness","uvHandedness","_rebuildMissingNormals","rebuildMissingNormals","_rebuildMissingTangents","rebuildMissingTangents","_rebuildMissingBiNormals","rebuildMissingBiNormals","_classes","classes","constructor","options","SetValues","values","normalizeValues","GetValues","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","isGlb","isGltf","ArrayBuffer","isView","asset","String","version","startsWith","text","TextDecoder","decode","asUint8Array","json","JSON","parse","classKeys","CLASS_KEYS","id","outputs","CjsFormat","defineOutputs","shared","default","decoded","gr2","cmf","role","gltfJson","extensions"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CjsGeometryFormat } from '../../../format/CjsGeometryFormat.js';
|
|
1
2
|
import { toJsonWithArrayValues } from '../../../format/jsonPolicies.js';
|
|
2
3
|
import { CLASS_KEYS as CLASS_KEYS$1, hydrateShared } from './json.js';
|
|
3
4
|
import { buildCmfFromShared } from '../../cmf/core/shared.js';
|
|
@@ -32,19 +33,9 @@ const DEFAULT_VALUES = Object.freeze({
|
|
|
32
33
|
});
|
|
33
34
|
const OPTION_KEYS = new Set(["emit", "source", "buffers", "packTangents", "uvHandedness", "rebuildMissingNormals", "rebuildMissingTangents", "rebuildMissingBiNormals", "classes"]);
|
|
34
35
|
|
|
35
|
-
/** Validates a requested runtime class key for the glTF format reader. */
|
|
36
|
-
function validateClassKey(key, readerName = "CjsGltfFormat") {
|
|
37
|
-
if (!CLASS_KEYS.includes(key)) {
|
|
38
|
-
throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(", ")}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
36
|
/** Validates a resolved runtime class constructor for the glTF format reader. */
|
|
43
37
|
function validateClass(key, Class, readerName = "CjsGltfFormat") {
|
|
44
|
-
|
|
45
|
-
if (typeof Class !== "function") {
|
|
46
|
-
throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);
|
|
47
|
-
}
|
|
38
|
+
CjsGeometryFormat.validateClass(key, Class, CLASS_KEYS, readerName);
|
|
48
39
|
}
|
|
49
40
|
function mergeClasses(base, classes, readerName) {
|
|
50
41
|
if (!classes || typeof classes !== "object") {
|
|
@@ -283,5 +274,5 @@ function inspectWithValues(input, values) {
|
|
|
283
274
|
});
|
|
284
275
|
}
|
|
285
276
|
|
|
286
|
-
export { CLASS_KEYS, DEFAULT_VALUES, OUTPUT_CMF, OUTPUT_GLTF_JSON, OUTPUT_GR2, OUTPUT_JSON, OUTPUT_SHARED, inspectWithValues, normalizeValues, readWithValues, toJsonWithArrayValues as toJsonValue, validateClass
|
|
277
|
+
export { CLASS_KEYS, DEFAULT_VALUES, OUTPUT_CMF, OUTPUT_GLTF_JSON, OUTPUT_GR2, OUTPUT_JSON, OUTPUT_SHARED, inspectWithValues, normalizeValues, readWithValues, toJsonWithArrayValues as toJsonValue, validateClass };
|
|
287
278
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateShared } from \"./json.js\";\nimport { buildCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { CMF_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport {\n inspectGltf,\n isGlb,\n parseGltfToShared,\n parseInput\n} from \"./parser.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport {\n cross,\n normalize\n} from \"#math/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_SHARED,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/** Validates a requested runtime class key for the glTF format reader. */\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n}\n\n/** Validates a resolved runtime class constructor for the glTF format reader. */\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);\n }\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Normalizes reader options against their supported defaults for the glTF format\n * reader.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_SHARED;\n if (emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED ||\n emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMeshData(format, root, mesh, meshIndex, lodIndex, values)\n{\n const\n common = { options: values, raw: null, shared: root, mesh, meshIndex, lodIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n}\n\nfunction rebuildMissingMeshData(format, shared, values)\n{\n for (let meshIndex = 0; meshIndex < shared.meshes.length; meshIndex++)\n {\n const mesh = shared.meshes[meshIndex];\n const lods = mesh.lods?.length ? mesh.lods : [ mesh ];\n for (let lodIndex = 0; lodIndex < lods.length; lodIndex++)\n {\n rebuildMeshData(format, shared, lods[lodIndex], meshIndex, lodIndex, values);\n }\n if (mesh.lods?.length)\n {\n mesh.vertex = mesh.lods[0].vertex;\n mesh.indices = mesh.lods[0].indices;\n }\n }\n}\n\n/** Reads input using normalized format options for the glTF format reader. */\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const shared = parseGltfToShared(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, shared, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromShared(shared),\n values.classes,\n { source: values.source },\n \"CjsGltfFormat CMF\"\n );\n }\n if (values.emit === OUTPUT_JSON || values.emit === OUTPUT_GLTF_JSON)\n {\n return toJsonValue(shared);\n }\n return hydrateShared(shared, { classes: values.classes, source: values.source });\n}\n\n/** Inspects input using normalized format options for the glTF format reader. */\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\n/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClassKey","key","readerName","includes","Error","JSON","stringify","join","validateClass","Class","TypeError","mergeClasses","base","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMeshData","root","lodIndex","common","raw","shared","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","rebuildMissingMeshData","meshes","lods","readWithValues","input","parsed","parseInput","parseGltfToShared","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","toJsonValue","hydrateShared","inspectWithValues","inspectGltf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { CjsGeometryFormat } from \"../../../format/CjsGeometryFormat.js\";\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateShared } from \"./json.js\";\nimport { buildCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { CMF_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport {\n inspectGltf,\n isGlb,\n parseGltfToShared,\n parseInput\n} from \"./parser.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport {\n cross,\n normalize\n} from \"#math/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_SHARED,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/** Validates a requested runtime class key for the glTF format reader. */\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n CjsGeometryFormat.validateClassKey(key, CLASS_KEYS, readerName);\n}\n\n/** Validates a resolved runtime class constructor for the glTF format reader. */\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n CjsGeometryFormat.validateClass(key, Class, CLASS_KEYS, readerName);\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Normalizes reader options against their supported defaults for the glTF format\n * reader.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_SHARED;\n if (emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED ||\n emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMeshData(format, root, mesh, meshIndex, lodIndex, values)\n{\n const\n common = { options: values, raw: null, shared: root, mesh, meshIndex, lodIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n}\n\nfunction rebuildMissingMeshData(format, shared, values)\n{\n for (let meshIndex = 0; meshIndex < shared.meshes.length; meshIndex++)\n {\n const mesh = shared.meshes[meshIndex];\n const lods = mesh.lods?.length ? mesh.lods : [ mesh ];\n for (let lodIndex = 0; lodIndex < lods.length; lodIndex++)\n {\n rebuildMeshData(format, shared, lods[lodIndex], meshIndex, lodIndex, values);\n }\n if (mesh.lods?.length)\n {\n mesh.vertex = mesh.lods[0].vertex;\n mesh.indices = mesh.lods[0].indices;\n }\n }\n}\n\n/** Reads input using normalized format options for the glTF format reader. */\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const shared = parseGltfToShared(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, shared, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromShared(shared),\n values.classes,\n { source: values.source },\n \"CjsGltfFormat CMF\"\n );\n }\n if (values.emit === OUTPUT_JSON || values.emit === OUTPUT_GLTF_JSON)\n {\n return toJsonValue(shared);\n }\n return hydrateShared(shared, { classes: values.classes, source: values.source });\n}\n\n/** Inspects input using normalized format options for the glTF format reader. */\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\n/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClass","key","Class","readerName","CjsGeometryFormat","mergeClasses","base","TypeError","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","JSON","stringify","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","Error","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMeshData","root","lodIndex","common","raw","shared","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","rebuildMissingMeshData","meshes","lods","readWithValues","input","parsed","parseInput","parseGltfToShared","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","toJsonValue","hydrateShared","inspectWithValues","inspectGltf"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;;AA2BO,MAAMA,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACC,KAAK,CAACC,IAAI,CAAC,IAAIC,GAAG,CAAC,CACvD,GAAGC,YAAc,EACjB,GAAGC,cAAc,CACpB,CAAC,CAAC;AAII,MAAMC,WAAW,GAAG;AACpB,MAAMC,gBAAgB,GAAG;AACzB,MAAMC,aAAa,GAAG;AACtB,MAAMC,UAAU,GAAG;AACnB,MAAMC,UAAU,GAAG;MAEbC,cAAc,GAAGZ,MAAM,CAACC,MAAM,CAAC;AACxCY,EAAAA,IAAI,EAAEJ,aAAa;AACnBK,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,YAAY,EAAE,OAAO;AACrBC,EAAAA,qBAAqB,EAAE,KAAK;AAC5BC,EAAAA,sBAAsB,EAAE,KAAK;AAC7BC,EAAAA,uBAAuB,EAAE,KAAK;AAC9BC,EAAAA,OAAO,EAAErB,MAAM,CAACC,MAAM,CAAC,EAAE;AAC7B,CAAC;AAED,MAAMqB,WAAW,GAAG,IAAIlB,GAAG,CAAC,CACxB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,SAAS,CACZ,CAAC;;AAQF;AACO,SAASmB,aAAaA,CAACC,GAAG,EAAEC,KAAK,EAAEC,UAAU,GAAG,eAAe,EACtE;EACIC,iBAAiB,CAACJ,aAAa,CAACC,GAAG,EAAEC,KAAK,EAAE1B,UAAU,EAAE2B,UAAU,CAAC;AACvE;AAEA,SAASE,YAAYA,CAACC,IAAI,EAAER,OAAO,EAAEK,UAAU,EAC/C;AACI,EAAA,IAAI,CAACL,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACI,IAAA,MAAM,IAAIS,SAAS,CAAC,CAAA,EAAGJ,UAAU,oCAAoC,CAAC;AAC1E,EAAA;AAEA,EAAA,MAAMK,IAAI,GAAG;IAAE,GAAGF;GAAM;AACxB,EAAA,KAAK,MAAM,CAAEL,GAAG,EAAEC,KAAK,CAAE,IAAIzB,MAAM,CAACgC,OAAO,CAACX,OAAO,CAAC,EACpD;AACI,IAAA,IAAII,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKQ,SAAS,EACzC;MACI,OAAOF,IAAI,CAACP,GAAG,CAAC;AAChB,MAAA;AACJ,IAAA;AACAD,IAAAA,aAAa,CAACC,GAAG,EAAEC,KAAK,EAAEC,UAAU,CAAC;AACrCK,IAAAA,IAAI,CAACP,GAAG,CAAC,GAAGC,KAAK;AACrB,EAAA;AACA,EAAA,OAAOM,IAAI;AACf;AAEA,SAASG,YAAYA,CAACC,IAAI,EAAEC,KAAK,EAAEV,UAAU,EAC7C;EACI,IAAI,OAAOU,KAAK,KAAK,SAAS,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE,OAAOA,KAAK;EAC3E,MAAM,IAAIN,SAAS,CAAC,CAAA,EAAGJ,UAAU,CAAA,EAAA,EAAKS,IAAI,qCAAqC,CAAC;AACpF;AAEA,SAASE,qBAAqBA,CAACD,KAAK,EAAEV,UAAU,EAChD;EACI,IAAIU,KAAK,KAAKH,SAAS,IAAIG,KAAK,KAAK,IAAI,EAAE,OAAOxB,cAAc,CAACK,YAAY;AAC7E,EAAA,IAAImB,KAAK,KAAK,OAAO,IAAIA,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,UAAU,EAAE,OAAO,OAAO;AAC5E,EAAA,IAAIA,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAK,UAAU,EAAE,OAAO,MAAM;AAC3E,EAAA,MAAM,IAAIN,SAAS,CAAC,CAAA,EAAGJ,UAAU,0CAA0C,CAAC;AAChF;;AAEA;AACA;AACA;AACA;AACO,SAASY,eAAeA,CAACT,IAAI,EAAEU,OAAO,GAAG,EAAE,EAAEb,UAAU,GAAG,eAAe,EAChF;AACI,EAAA,IAAI,CAACa,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACI,IAAA,MAAM,IAAIT,SAAS,CAAC,CAAA,EAAGJ,UAAU,6BAA6B,CAAC;AACnE,EAAA;EACA,KAAK,MAAMF,GAAG,IAAIxB,MAAM,CAACwC,IAAI,CAACD,OAAO,CAAC,EACtC;AACI,IAAA,IAAI,CAACjB,WAAW,CAACmB,GAAG,CAACjB,GAAG,CAAC,EACzB;AACI,MAAA,MAAM,IAAIM,SAAS,CAAC,CAAA,EAAGJ,UAAU,CAAA,iBAAA,EAAoBgB,IAAI,CAACC,SAAS,CAACnB,GAAG,CAAC,EAAE,CAAC;AAC/E,IAAA;AACJ,EAAA;AAEA,EAAA,MAAMoB,MAAM,GAAG;AAAE,IAAA,GAAGf,IAAI;IAAE,GAAGU;GAAS;EACtC,MAAM1B,IAAI,GAAGgC,aAAa,CAACD,MAAM,CAAC/B,IAAI,EAAEa,UAAU,CAAC;AACnD,EAAA,MAAML,OAAO,GAAGrB,MAAM,CAAC8C,SAAS,CAACC,cAAc,CAACC,IAAI,CAACT,OAAO,EAAE,SAAS,CAAC,GAClEX,YAAY,CAACC,IAAI,CAACR,OAAO,IAAI,EAAE,EAAEkB,OAAO,CAAClB,OAAO,EAAEK,UAAU,CAAC,GAC7D;AAAE,IAAA,IAAIG,IAAI,CAACR,OAAO,IAAI,EAAE;GAAG;AACjC,EAAA,IAAI,CAACR,IAAI,KAAKH,UAAU,IAAIG,IAAI,KAAKF,UAAU,KAAK,CAACsC,UAAU,CAAC5B,OAAO,CAAC,EACxE;IACI,MAAM,IAAIS,SAAS,CAAC,CAAA,EAAGJ,UAAU,CAAA,QAAA,EAAWb,IAAI,6BAA6B,CAAC;AAClF,EAAA;EACA,IAAI,OAAO+B,MAAM,CAAC9B,MAAM,KAAK,QAAQ,IAAI,CAAC8B,MAAM,CAAC9B,MAAM,EACvD;AACI8B,IAAAA,MAAM,CAAC9B,MAAM,GAAGF,cAAc,CAACE,MAAM;AACzC,EAAA;EAEA,OAAO;IACHD,IAAI;IACJC,MAAM,EAAE8B,MAAM,CAAC9B,MAAM;AACrBC,IAAAA,OAAO,EAAE6B,MAAM,CAAC7B,OAAO,IAAI,IAAI;IAC/BC,YAAY,EAAEkB,YAAY,CAAC,cAAc,EAAEU,MAAM,CAAC5B,YAAY,EAAEU,UAAU,CAAC;IAC3ET,YAAY,EAAEoB,qBAAqB,CAACO,MAAM,CAAC3B,YAAY,EAAES,UAAU,CAAC;IACpER,qBAAqB,EAAEgB,YAAY,CAAC,uBAAuB,EAAEU,MAAM,CAAC1B,qBAAqB,EAAEQ,UAAU,CAAC;IACtGP,sBAAsB,EAAEe,YAAY,CAAC,wBAAwB,EAAEU,MAAM,CAACzB,sBAAsB,EAAEO,UAAU,CAAC;IACzGN,uBAAuB,EAAEc,YAAY,CAAC,yBAAyB,EAAEU,MAAM,CAACxB,uBAAuB,EAAEM,UAAU,CAAC;AAC5GL,IAAAA;GACH;AACL;AAEA,SAASwB,aAAaA,CAAChC,IAAI,EAAEa,UAAU,EACvC;EACI,IAAIb,IAAI,KAAKoB,SAAS,IAAIpB,IAAI,KAAK,IAAI,EAAE,OAAOJ,aAAa;EAC7D,IAAII,IAAI,KAAKN,WAAW,IAAIM,IAAI,KAAKL,gBAAgB,IAAIK,IAAI,KAAKJ,aAAa,IAC3EI,IAAI,KAAKH,UAAU,IAAIG,IAAI,KAAKF,UAAU,EAAE,OAAOE,IAAI;EAC3D,MAAM,IAAIiB,SAAS,CAAC,CAAA,EAAGJ,UAAU,CAAA,gBAAA,EAAmBjB,aAAa,OAAOD,gBAAgB,CAAA,IAAA,EAAOE,UAAU,CAAA,OAAA,EAAUC,UAAU,UAAU+B,IAAI,CAACC,SAAS,CAAC9B,IAAI,CAAC,CAAA,CAAE,CAAC;AAClK;AAEA,SAASoC,UAAUA,CAAC5B,OAAO,EAC3B;AACI,EAAA,OAAO,CAAC,CAACA,OAAO,IAAIrB,MAAM,CAAC4C,MAAM,CAACvB,OAAO,CAAC,CAAC6B,IAAI,CAAEzB,KAAK,IAAK,OAAOA,KAAK,KAAK,UAAU,CAAC;AAC3F;AAEA,SAAS0B,gBAAgBA,CAACC,IAAI,EAAEC,OAAO,EACvC;AACI,EAAA,MAAMjB,KAAK,GAAGgB,IAAI,IAAIA,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACD,OAAO,CAAC;EACzD,OAAO,CAAC,CAACjB,KAAK,IAAIA,KAAK,CAACmB,MAAM,GAAG,CAAC;AACtC;AAEA,SAASC,oBAAoBA,CAACJ,IAAI,EAAEK,SAAS,EAAEJ,OAAO,EAAEK,OAAO,EAC/D;AACI,EAAA,MAAMtB,KAAK,GAAGgB,IAAI,IAAIA,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACD,OAAO,CAAC;EACzD,IAAI,CAACjB,KAAK,IAAIA,KAAK,CAACmB,MAAM,KAAK,CAAC,EAChC;AACI,IAAA,MAAMpB,IAAI,GAAGiB,IAAI,IAAIA,IAAI,CAACjB,IAAI,GAAGO,IAAI,CAACC,SAAS,CAACS,IAAI,CAACjB,IAAI,CAAC,GAAG,CAAA,CAAA,EAAIsB,SAAS,CAAA,CAAE;IAC5E,MAAM,IAAIE,KAAK,CAAC,CAAA,eAAA,EAAkBD,OAAO,yBAAyBL,OAAO,CAAA,UAAA,EAAalB,IAAI,CAAA,CAAE,CAAC;AACjG,EAAA;AACA,EAAA,OAAOC,KAAK;AAChB;AAEA,SAASwB,aAAaA,CAACR,IAAI,EAAEK,SAAS,EAAEC,OAAO,EAC/C;EACI,MAAMG,KAAK,GAAG,EAAE;EAChB,KAAK,MAAMC,KAAK,IAAIV,IAAI,CAACW,OAAO,IAAI,EAAE,EACtC;AACI,IAAA,IAAID,KAAK,IAAIA,KAAK,CAACD,KAAK,EAAEA,KAAK,CAACG,IAAI,CAAC,GAAGF,KAAK,CAACD,KAAK,CAAC;AACxD,EAAA;AACA,EAAA,IAAIA,KAAK,CAACN,MAAM,KAAK,CAAC,EACtB;AACI,IAAA,MAAMpB,IAAI,GAAGiB,IAAI,IAAIA,IAAI,CAACjB,IAAI,GAAGO,IAAI,CAACC,SAAS,CAACS,IAAI,CAACjB,IAAI,CAAC,GAAG,CAAA,CAAA,EAAIsB,SAAS,CAAA,CAAE;IAC5E,MAAM,IAAIE,KAAK,CAAC,CAAA,eAAA,EAAkBD,OAAO,CAAA,oCAAA,EAAuCvB,IAAI,EAAE,CAAC;AAC3F,EAAA;AACA,EAAA,OAAO0B,KAAK;AAChB;AAEA,SAASI,mBAAmBA,CAACC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAClD;AACI,EAAA,IAAI,OAAOD,IAAI,KAAK,UAAU,EAC9B;IACI,MAAME,MAAM,GAAGF,IAAI,CAAC;MAAED,MAAM;AAAEI,MAAAA,MAAM,EAAEJ,MAAM;MAAE,GAAGE;AAAQ,KAAC,CAAC;AAC3D,IAAA,IAAI,OAAOC,MAAM,KAAK,SAAS,EAC/B;MACI,MAAM,IAAIvC,SAAS,CAAC,CAAA,eAAA,EAAkBsC,OAAO,CAACV,OAAO,iCAAiC,CAAC;AAC3F,IAAA;AACA,IAAA,OAAOW,MAAM;AACjB,EAAA;AACA,EAAA,OAAOF,IAAI;AACf;AAEA,SAASI,WAAWA,CAACnB,IAAI,EACzB;EACI,OAAOA,IAAI,CAACE,MAAM,CAACkB,QAAQ,CAACjB,MAAM,GAAG,CAAC;AAC1C;AAEA,SAASkB,UAAUA,CAACrB,IAAI,EACxB;EACI,MACIsB,OAAO,GAAGlB,oBAAoB,CAACJ,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,CAAC;AACxEuB,IAAAA,KAAK,GAAGJ,WAAW,CAACnB,IAAI,CAAC;AACzBwB,IAAAA,KAAK,GAAGF,OAAO,CAACnB,MAAM,GAAGoB,KAAK;EAElC,IAAIC,KAAK,KAAK,CAAC,EAAE,OAAOF,OAAO,CAACG,KAAK,EAAE;EACvC,IAAID,KAAK,KAAK,CAAC,EAAE,MAAM,IAAIjB,KAAK,CAAC,uEAAuE,CAAC;EAEzG,MAAMmB,GAAG,GAAG,IAAI5E,KAAK,CAACyE,KAAK,GAAG,CAAC,CAAC;EAChC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAG,CAAC,EAAED,CAAC,GAAGL,OAAO,CAACnB,MAAM,EAAEwB,CAAC,IAAI,CAAC,EAAEC,CAAC,IAAI,CAAC,EACzD;AACIF,IAAAA,GAAG,CAACE,CAAC,CAAC,GAAGN,OAAO,CAACK,CAAC,CAAC;IACnBD,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGN,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC;IAC3BD,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGN,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC;AAC/B,EAAA;AACA,EAAA,OAAOD,GAAG;AACd;AAEA,SAASG,yBAAyBA,CAAC7B,IAAI,EAAER,MAAM,EAC/C;EACI,MACIsC,OAAO,GAAG1B,oBAAoB,CAACJ,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,CAAC;IACxEsB,OAAO,GAAGlB,oBAAoB,CAACJ,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC;AACzEuB,IAAAA,KAAK,GAAGJ,WAAW,CAACnB,IAAI,CAAC;AACzBwB,IAAAA,KAAK,GAAGF,OAAO,CAACnB,MAAM,GAAGoB,KAAK;EAElC,IAAIC,KAAK,KAAK,CAAC,EACf;AACI,IAAA,OAAOO,iBAAiB,CAACD,OAAO,EAAER,OAAO,EAAE;MAAEzD,YAAY,EAAE2B,MAAM,CAAC3B;AAAa,KAAC,CAAC;AACrF,EAAA;EAEA,IAAI2D,KAAK,KAAK,CAAC,EAAE,MAAM,IAAIjB,KAAK,CAAC,uEAAuE,CAAC;EAEzG,MAAMmB,GAAG,GAAG,IAAI5E,KAAK,CAACyE,KAAK,GAAG,CAAC,CAAC;EAChC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAG,CAAC,EAAED,CAAC,GAAGL,OAAO,CAACnB,MAAM,EAAEwB,CAAC,IAAI,CAAC,EAAEC,CAAC,IAAI,CAAC,EACzD;AACI,IAAA,MAAMI,CAAC,GAAGC,SAAS,CACf,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACXC,KAAK,CACD,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACX,CAAEJ,OAAO,CAACF,CAAC,CAAC,EAAEE,OAAO,CAACF,CAAC,GAAG,CAAC,CAAC,EAAEE,OAAO,CAACF,CAAC,GAAG,CAAC,CAAC,CAAE,EAC9C,CAAEN,OAAO,CAACK,CAAC,CAAC,EAAEL,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC,EAAEL,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC,CAChD,CACJ,CAAC;AACD,IAAA,MAAMQ,IAAI,GAAGb,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IACxCD,GAAG,CAACE,CAAC,CAAC,GAAGI,CAAC,CAAC,CAAC,CAAC,GAAGG,IAAI;IACpBT,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGI,CAAC,CAAC,CAAC,CAAC,GAAGG,IAAI;IACxBT,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGI,CAAC,CAAC,CAAC,CAAC,GAAGG,IAAI;AAC5B,EAAA;AACA,EAAA,OAAOT,GAAG;AACd;AAEA,SAASU,eAAeA,CAACtB,MAAM,EAAEuB,IAAI,EAAErC,IAAI,EAAEK,SAAS,EAAEiC,QAAQ,EAAE9C,MAAM,EACxE;AACI,EAAA,MACI+C,MAAM,GAAG;AAAEpD,MAAAA,OAAO,EAAEK,MAAM;AAAEgD,MAAAA,GAAG,EAAE,IAAI;AAAEC,MAAAA,MAAM,EAAEJ,IAAI;MAAErC,IAAI;MAAEK,SAAS;AAAEiC,MAAAA;KAAU;IAChFI,kBAAkB,GAAG7B,mBAAmB,CACpCC,MAAM,EACNtB,MAAM,CAAC5B,YAAY,EACnB;AAAE,MAAA,GAAG2E,MAAM;AAAEjC,MAAAA,OAAO,EAAE,cAAc;AAAEL,MAAAA,OAAO,EAAE;AAAU,KAC7D,CAAC;AAEL,EAAA,IAAI,CAACF,gBAAgB,CAACC,IAAI,EAAE,QAAQ,CAAC,KAAKa,mBAAmB,CACzDC,MAAM,EACNtB,MAAM,CAAC1B,qBAAqB,EAC5B;AAAE,IAAA,GAAGyE,MAAM;AAAEjC,IAAAA,OAAO,EAAE,uBAAuB;AAAEL,IAAAA,OAAO,EAAE;AAAS,GAAC,CAAC,IAAIyC,kBAAkB,CAAC,EAC9F;IACI1C,IAAI,CAACE,MAAM,CAACyC,MAAM,GAAGC,eAAe,CAChCxC,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAC1EG,aAAa,CAACR,IAAI,EAAEK,SAAS,EAAE,uBAAuB,CAC1D,CAAC;AACL,EAAA;AAEA,EAAA,IAAI,CAACN,gBAAgB,CAACC,IAAI,EAAE,SAAS,CAAC,KAAKa,mBAAmB,CAC1DC,MAAM,EACNtB,MAAM,CAACzB,sBAAsB,EAC7B;AAAE,IAAA,GAAGwE,MAAM;AAAEjC,IAAAA,OAAO,EAAE,wBAAwB;AAAEL,IAAAA,OAAO,EAAE;AAAU,GAAC,CAAC,IAAIyC,kBAAkB,CAAC,EAChG;IACI1C,IAAI,CAACE,MAAM,CAACoB,OAAO,GAAGuB,gBAAgB,CAClCzC,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAC3ED,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,QAAQ,EAAE,wBAAwB,CAAC,EACzED,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,EAC5EG,aAAa,CAACR,IAAI,EAAEK,SAAS,EAAE,wBAAwB,CAC3D,CAAC;AACL,EAAA;AAEA,EAAA,IAAI,CAACN,gBAAgB,CAACC,IAAI,EAAE,UAAU,CAAC,KAAKa,mBAAmB,CAC3DC,MAAM,EACNtB,MAAM,CAACxB,uBAAuB,EAC9B;AAAE,IAAA,GAAGuE,MAAM;AAAEjC,IAAAA,OAAO,EAAE,yBAAyB;AAAEL,IAAAA,OAAO,EAAE;AAAW,GAAC,CAAC,IAAIyC,kBAAkB,CAAC,EAClG;IACI1C,IAAI,CAACE,MAAM,CAAC4C,QAAQ,GAAGjB,yBAAyB,CAAC7B,IAAI,EAAER,MAAM,CAAC;AAClE,EAAA;AAEA,EAAA,IAAIkD,kBAAkB,EACtB;AACI1C,IAAAA,IAAI,CAACE,MAAM,CAACoB,OAAO,GAAGyB,iBAAiB,CACnC3C,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,EAC/DgB,UAAU,CAACrB,IAAI,CAAC,EAChBI,oBAAoB,CAACJ,IAAI,EAAEK,SAAS,EAAE,UAAU,EAAE,cAAc,CACpE,CAAC;AACDL,IAAAA,IAAI,CAACE,MAAM,CAACyC,MAAM,GAAG,EAAE;AACvB3C,IAAAA,IAAI,CAACE,MAAM,CAAC4C,QAAQ,GAAG,EAAE;AAC7B,EAAA;AACJ;AAEA,SAASE,sBAAsBA,CAAClC,MAAM,EAAE2B,MAAM,EAAEjD,MAAM,EACtD;AACI,EAAA,KAAK,IAAIa,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGoC,MAAM,CAACQ,MAAM,CAAC9C,MAAM,EAAEE,SAAS,EAAE,EACrE;AACI,IAAA,MAAML,IAAI,GAAGyC,MAAM,CAACQ,MAAM,CAAC5C,SAAS,CAAC;AACrC,IAAA,MAAM6C,IAAI,GAAGlD,IAAI,CAACkD,IAAI,EAAE/C,MAAM,GAAGH,IAAI,CAACkD,IAAI,GAAG,CAAElD,IAAI,CAAE;AACrD,IAAA,KAAK,IAAIsC,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGY,IAAI,CAAC/C,MAAM,EAAEmC,QAAQ,EAAE,EACzD;AACIF,MAAAA,eAAe,CAACtB,MAAM,EAAE2B,MAAM,EAAES,IAAI,CAACZ,QAAQ,CAAC,EAAEjC,SAAS,EAAEiC,QAAQ,EAAE9C,MAAM,CAAC;AAChF,IAAA;AACA,IAAA,IAAIQ,IAAI,CAACkD,IAAI,EAAE/C,MAAM,EACrB;MACIH,IAAI,CAACE,MAAM,GAAGF,IAAI,CAACkD,IAAI,CAAC,CAAC,CAAC,CAAChD,MAAM;MACjCF,IAAI,CAACW,OAAO,GAAGX,IAAI,CAACkD,IAAI,CAAC,CAAC,CAAC,CAACvC,OAAO;AACvC,IAAA;AACJ,EAAA;AACJ;;AAEA;AACO,SAASwC,cAAcA,CAACrC,MAAM,EAAEsC,KAAK,EAAE5D,MAAM,EACpD;AACI,EAAA,MAAM6D,MAAM,GAAGC,UAAU,CAACF,KAAK,CAAC;AAChC,EAAA,MAAMX,MAAM,GAAGc,iBAAiB,CAACF,MAAM,CAACG,IAAI,EAAE;IAC1CC,WAAW,EAAEJ,MAAM,CAACI,WAAW;IAC/B/F,MAAM,EAAE8B,MAAM,CAAC9B,MAAM;IACrBC,OAAO,EAAE6B,MAAM,CAAC7B;AACpB,GAAC,CAAC;AACFqF,EAAAA,sBAAsB,CAAClC,MAAM,EAAE2B,MAAM,EAAEjD,MAAM,CAAC;AAC9C,EAAA,IAAIA,MAAM,CAAC/B,IAAI,KAAKF,UAAU,EAC9B;IACI,OAAOmG,UAAU,CACbC,kBAAkB,CAAClB,MAAM,CAAC,EAC1BjD,MAAM,CAACvB,OAAO,EACd;MAAEP,MAAM,EAAE8B,MAAM,CAAC9B;KAAQ,EACzB,mBACJ,CAAC;AACL,EAAA;EACA,IAAI8B,MAAM,CAAC/B,IAAI,KAAKN,WAAW,IAAIqC,MAAM,CAAC/B,IAAI,KAAKL,gBAAgB,EACnE;IACI,OAAOwG,qBAAW,CAACnB,MAAM,CAAC;AAC9B,EAAA;EACA,OAAOoB,aAAa,CAACpB,MAAM,EAAE;IAAExE,OAAO,EAAEuB,MAAM,CAACvB,OAAO;IAAEP,MAAM,EAAE8B,MAAM,CAAC9B;AAAO,GAAC,CAAC;AACpF;;AAEA;AACO,SAASoG,iBAAiBA,CAACV,KAAK,EAAE5D,MAAM,EAC/C;AACI,EAAA,MAAM6D,MAAM,GAAGC,UAAU,CAACF,KAAK,CAAC;AAChC,EAAA,OAAOW,WAAW,CAACV,MAAM,CAACG,IAAI,EAAE;IAAE1C,MAAM,EAAEuC,MAAM,CAACvC,MAAM;IAAEpD,MAAM,EAAE8B,MAAM,CAAC9B;AAAO,GAAC,CAAC;AACrF;;;;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CjsFormat } from '../../format/CjsFormat.js';
|
|
2
|
+
import { CjsGeometryFormat } from '../../format/CjsGeometryFormat.js';
|
|
2
3
|
import { curves } from './core/curves.js';
|
|
3
4
|
import { GR2_MAGICS, bytesToHex } from './core/reader.js';
|
|
4
5
|
import { tangents } from './core/tangents.js';
|
|
5
6
|
import { isGsfRaw, projectGsf, inspectGsfRaw } from './core/gsf.js';
|
|
6
7
|
import { writeGr2, writeSharedGr2 } from './core/writer.js';
|
|
7
|
-
import { DEFAULT_VALUES, normalizeValues,
|
|
8
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, readRawInput, inspectRawGr2Result, toJsonValue, CLASS_KEYS } from './core/helpers.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* CarbonEngineJS-facing GR2/GSF reader and CMF-first GR2 geometry writer.
|
|
@@ -15,14 +16,14 @@ import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readW
|
|
|
15
16
|
* writes pure-JavaScript GR2 geometry from CMF without pretending those
|
|
16
17
|
* classes are the engine runtime itself.
|
|
17
18
|
*/
|
|
18
|
-
class CjsGr2Format extends
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
class CjsGr2Format extends CjsGeometryFormat {
|
|
20
|
+
_emit = DEFAULT_VALUES.emit;
|
|
21
|
+
_decompressCurves = DEFAULT_VALUES.decompressCurves;
|
|
22
|
+
_unpackTangents = DEFAULT_VALUES.unpackTangents;
|
|
23
|
+
_rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
|
|
24
|
+
_rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
|
|
25
|
+
_rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
|
|
26
|
+
_classes = {};
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* Create a reusable format profile.
|
|
@@ -42,13 +43,13 @@ class CjsGr2Format extends CjsFormat {
|
|
|
42
43
|
*/
|
|
43
44
|
SetValues(options = {}) {
|
|
44
45
|
const values = normalizeValues(this.GetValues(), options);
|
|
45
|
-
this
|
|
46
|
-
this
|
|
47
|
-
this
|
|
48
|
-
this
|
|
49
|
-
this
|
|
50
|
-
this
|
|
51
|
-
this
|
|
46
|
+
this._emit = values.emit;
|
|
47
|
+
this._decompressCurves = values.decompressCurves;
|
|
48
|
+
this._unpackTangents = values.unpackTangents;
|
|
49
|
+
this._rebuildMissingNormals = values.rebuildMissingNormals;
|
|
50
|
+
this._rebuildMissingTangents = values.rebuildMissingTangents;
|
|
51
|
+
this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;
|
|
52
|
+
this._classes = values.classes;
|
|
52
53
|
return this;
|
|
53
54
|
}
|
|
54
55
|
|
|
@@ -60,70 +61,16 @@ class CjsGr2Format extends CjsFormat {
|
|
|
60
61
|
*/
|
|
61
62
|
GetValues(options = {}) {
|
|
62
63
|
return normalizeValues({
|
|
63
|
-
emit: this
|
|
64
|
-
decompressCurves: this
|
|
65
|
-
unpackTangents: this
|
|
66
|
-
rebuildMissingNormals: this
|
|
67
|
-
rebuildMissingTangents: this
|
|
68
|
-
rebuildMissingBiNormals: this
|
|
69
|
-
classes: this
|
|
64
|
+
emit: this._emit,
|
|
65
|
+
decompressCurves: this._decompressCurves,
|
|
66
|
+
unpackTangents: this._unpackTangents,
|
|
67
|
+
rebuildMissingNormals: this._rebuildMissingNormals,
|
|
68
|
+
rebuildMissingTangents: this._rebuildMissingTangents,
|
|
69
|
+
rebuildMissingBiNormals: this._rebuildMissingBiNormals,
|
|
70
|
+
classes: this._classes
|
|
70
71
|
}, options);
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
/**
|
|
74
|
-
* Set multiple GR2 JSON node constructors for this profile.
|
|
75
|
-
*
|
|
76
|
-
* @param {object} [classes] Map of node class keys to constructors.
|
|
77
|
-
* @returns {CjsGr2Format} This format profile.
|
|
78
|
-
*/
|
|
79
|
-
SetClasses(classes = {}) {
|
|
80
|
-
return this.SetValues({
|
|
81
|
-
classes
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Set a GR2 JSON node constructor for this profile.
|
|
87
|
-
*
|
|
88
|
-
* @param {string} type Node class key.
|
|
89
|
-
* @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
|
|
90
|
-
* @returns {CjsGr2Format} This format profile.
|
|
91
|
-
*/
|
|
92
|
-
SetClass(type, Class) {
|
|
93
|
-
validateClassKey(type);
|
|
94
|
-
if (Class === null || Class === undefined) {
|
|
95
|
-
delete this.#classes[type];
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
validateClass(type, Class);
|
|
99
|
-
this.#classes = {
|
|
100
|
-
...this.#classes,
|
|
101
|
-
[type]: Class
|
|
102
|
-
};
|
|
103
|
-
return this;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Get a configured GR2 JSON node constructor.
|
|
108
|
-
*
|
|
109
|
-
* @param {string} type Node class key.
|
|
110
|
-
* @returns {Function|undefined}
|
|
111
|
-
*/
|
|
112
|
-
GetClass(type) {
|
|
113
|
-
validateClassKey(type);
|
|
114
|
-
return this.#classes[type];
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Whether this reader has a constructor for a GR2 JSON node key.
|
|
119
|
-
*
|
|
120
|
-
* @param {string} type Node class key.
|
|
121
|
-
* @returns {boolean}
|
|
122
|
-
*/
|
|
123
|
-
HasClass(type) {
|
|
124
|
-
return !!this.GetClass(type);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
74
|
/**
|
|
128
75
|
* Parse a .gr2 buffer and return JSON by default, classes when configured,
|
|
129
76
|
* or raw reflection data when `emit` is "raw".
|
|
@@ -291,14 +238,8 @@ class CjsGr2Format extends CjsFormat {
|
|
|
291
238
|
static toJSON(value) {
|
|
292
239
|
return toJsonValue(value);
|
|
293
240
|
}
|
|
294
|
-
static
|
|
295
|
-
static
|
|
296
|
-
static OUTPUT_GR2_JSON = OUTPUT_GR2_JSON;
|
|
297
|
-
static OUTPUT_CMF = OUTPUT_CMF;
|
|
298
|
-
static OUTPUT_RAW = OUTPUT_RAW;
|
|
299
|
-
static CLASS_KEYS = CLASS_KEYS;
|
|
300
|
-
static id = "gr2";
|
|
301
|
-
static mediaTypes = Object.freeze(["geometry"]);
|
|
241
|
+
static classKeys = CLASS_KEYS;
|
|
242
|
+
static id = "CjsGr2Format";
|
|
302
243
|
// Same shape as the other geometry writers: a native CMF v1 graph is the
|
|
303
244
|
// default input, and `writeShared` adapts a shared or GR2-shaped root.
|
|
304
245
|
static inputs = CjsFormat.defineInputs({
|
|
@@ -333,14 +274,9 @@ class CjsGr2Format extends CjsFormat {
|
|
|
333
274
|
decoded: true
|
|
334
275
|
}
|
|
335
276
|
});
|
|
336
|
-
static extensions =
|
|
277
|
+
static extensions = [".gr2", ".gsf"];
|
|
337
278
|
static curves = curves;
|
|
338
279
|
static tangents = tangents;
|
|
339
|
-
static gsf = Object.freeze({
|
|
340
|
-
isRaw: isGsfRaw,
|
|
341
|
-
project: projectGsf,
|
|
342
|
-
inspectRaw: inspectGsfRaw
|
|
343
|
-
});
|
|
344
280
|
|
|
345
281
|
/**
|
|
346
282
|
* Cheap magic probe for GR2/GSF byte streams.
|