@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
package/dist/sof/EveSOF.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSOF.js","sources":["../../../src/sof/EveSOF.js"],"sourcesContent":["import { normalizeResourcePath } from \"#utils/path\";\r\n\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.h\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.cpp\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { CjsBlackFormat } from \"#resource/formats/black\";\r\nimport { EveSOFDataHullDecalSetItem } from \"./hull/EveSOFDataHullDecalSetItem.js\";\r\nimport { EveSOFDataHullBanner } from \"./hull/EveSOFDataHullBanner.js\";\r\nimport { EveSOFDataHullBannerSetItem } from \"./hull/EveSOFDataHullBannerSetItem.js\";\r\nimport { EveSOFDataHullHazeSet } from \"./hull/EveSOFDataHullHazeSet.js\";\r\nimport { EveSOFDataHullLightSetItem } from \"./hull/EveSOFDataHullLightSetItem.js\";\r\nimport { EveSOFDataHullPlaneSet } from \"./hull/EveSOFDataHullPlaneSet.js\";\r\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\r\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\r\nimport { EveSOFDataInstancedMesh } from \"./shared/EveSOFDataInstancedMesh.js\";\r\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\r\nimport { CjsCarbonDocument } from \"#model/document\";\r\nimport { EveSOFDNA } from \"./EveSOFDNA.js\";\r\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\r\nimport { CjsSofLibraryBuilder } from \"./CjsSofLibraryBuilder.js\";\r\nimport { planSofLayouts } from \"./layoutPlanner.js\";\r\nimport { SofDocumentBuilder } from \"./SofDocumentBuilder.js\";\r\nimport { IsModelValuesReference, IsModelValuesRoot, VALUES_LITERAL_DOLLAR_REF, remapImportedValue } from \"./sofDocumentValues.js\";\r\n\r\n\r\nconst BUILD_CLASS_TYPES = Object.freeze({\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SHIP]: \"EveShip2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_MOBILE]: \"EveMobile\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_STATIONARY]: \"EveStation2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SWARM]: \"EveSwarm\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION]: \"EveMobile\"\r\n});\r\n\r\nconst SPACE_OBJECT_ROOT_KINDS = new Set([\r\n \"EveSpaceObject2\",\r\n \"EveShip2\",\r\n \"EveMobile\",\r\n \"EveStation2\",\r\n \"EveSwarm\"\r\n]);\r\n\r\nconst DECAL_EFFECT_NAMES = Object.freeze([\r\n \"decalv5.fx\",\r\n \"decalcounterv5.fx\",\r\n \"decalholev5.fx\",\r\n \"decalcylindricv5.fx\",\r\n \"decalglowcylindricv5.fx\",\r\n \"decalglowv5.fx\",\r\n \"decalv5.fx\"\r\n]);\r\n\r\nconst BANNER_EXTERNAL_PARAMETER_NAMES = Object.freeze([\r\n \"AllianceLogoResPath\",\r\n \"CorpLogoResPath\",\r\n \"CeoPortraitResPath\",\r\n \"VerticalBannerResPath\",\r\n \"HorizontalBannerResPath\",\r\n \"TargetSystemAllianceLogoResPath\",\r\n \"TargetSystemVerticalBannerResPath\",\r\n \"TargetSystemHorizontalBannerResPath\",\r\n \"TargetSystemInfo0ResPath\",\r\n \"TargetSystemInfo1ResPath\",\r\n \"TargetSystemInfo2ResPath\",\r\n \"TargetSystemInfo3ResPath\",\r\n \"TargetSystemInfo4ResPath\",\r\n \"TargetSystemStatusResPath\",\r\n \"CurrentSystemAllianceLogoResPath\",\r\n \"CurrentSystemVerticalBannerResPath\",\r\n \"CurrentSystemHorizontalBannerResPath\",\r\n \"PublicityPosterResPath\",\r\n \"PublicityPortraitResPath\",\r\n \"RecruitmentInformation0ResPath\",\r\n \"RecruitmentInformation1ResPath\",\r\n \"RecruitmentInformation2ResPath\",\r\n \"RecruitmentInformation3ResPath\",\r\n \"RecruitmentInformation4ResPath\"\r\n]);\r\n\r\nconst MIN_MESH_SCREEN_SIZE = 2.5;\r\n\r\n// Tr2Lod value stamped on distortion areas after fill (EveSOF.cpp:2149-2153);\r\n// The SOF layer stays free of a Trinity-layer import, so the enum value from\r\n// Tr2LodResource.h is mirrored here.\r\nconst TR2_LOD_HIGH = 2;\r\n\r\n// Carbon validates every resolved resource root against the interface its\r\n// role requires before attaching it: children must cast to EveTransform or\r\n// IEveSpaceObjectChild (EveSOF.cpp:1786-1844,1949-2004), controllers load as\r\n// ITr2Controller (2014-2033), and model curves load as ITriQuaternionFunction\r\n// / ITriVectorFunction (1668-1691). The GPU-free builder has no class\r\n// registry, so conformance comes from the descriptor's explicit `implements`\r\n// claim or from these Carbon-source kind inventories.\r\nconst CHILD_TRANSFORM_KINDS = new Set([\r\n \"EveTransform\",\r\n \"EveRootTransform\",\r\n \"EveMissileWarhead\"\r\n]);\r\n\r\nconst SPACE_OBJECT_CHILD_KINDS = new Set([\r\n \"EveChildAudio\",\r\n \"EveChildBehaviorSystem\",\r\n \"EveChildBulletStorm\",\r\n \"EveChildCloud\",\r\n \"EveChildCloud2\",\r\n \"EveChildContainer\",\r\n \"EveChildEffectPropagator\",\r\n \"EveChildExplosion\",\r\n \"EveChildFogVolume\",\r\n \"EveChildInstanceContainer\",\r\n \"EveChildInstanceMeshRenderer\",\r\n \"EveChildInstancedMeshes\",\r\n \"EveChildLightingOverride\",\r\n \"EveChildLineSet\",\r\n \"EveChildLink\",\r\n \"EveChildMesh\",\r\n \"EveChildParticleSphere\",\r\n \"EveChildParticleSystem\",\r\n \"EveChildPlug\",\r\n \"EveChildPostProcessVolume\",\r\n \"EveChildProceduralContainer\",\r\n \"EveChildQuad\",\r\n \"EveChildRef\",\r\n \"EveChildSmartLightSet\",\r\n \"EveChildSocket\",\r\n \"EveChildSpherePin\",\r\n \"EveEllipseSet\"\r\n]);\r\n\r\nconst OBJECT_RESOURCE_ROLE_GATES = Object.freeze({\r\n controller: {\r\n interfaceName: \"ITr2Controller\",\r\n kinds: new Set([\r\n \"Tr2Controller\",\r\n \"Tr2ControllerReference\",\r\n \"Tr2TimelineController\"\r\n ])\r\n },\r\n modelRotationCurve: {\r\n interfaceName: \"ITriQuaternionFunction\",\r\n kinds: new Set([\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveEulerRotation\",\r\n \"Tr2CurveEulerRotationExpression\",\r\n \"Tr2CurveQuaternion\",\r\n \"Tr2CurveRandomAxisRotation\",\r\n \"Tr2QuaternionLerpCurve\",\r\n \"Tr2RotationAdapter\",\r\n \"TriRigidOrientation\"\r\n ])\r\n },\r\n modelTranslationCurve: {\r\n interfaceName: \"ITriVectorFunction\",\r\n kinds: new Set([\r\n \"EveLocalPositionCurve\",\r\n \"EveRemotePositionCurve\",\r\n \"Tr2CurveCombiner\",\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveVector3\",\r\n \"Tr2CurveVector3Expression\",\r\n \"Tr2CurveVector3Lerp\",\r\n \"Tr2FollowCurve\",\r\n \"Tr2TranslationAdapter\",\r\n \"Tr2VectorFunctionModifier\",\r\n \"TriVectorSequencer\"\r\n ])\r\n }\r\n});\r\n\r\n// Sentinel returned when a resolved child root fails Carbon's type gate; the\r\n// callers mirror Carbon's early return rather than skipping one item.\r\nconst WRONG_TYPE_CHILD = Symbol(\"wrong-type-child\");\r\n\r\nfunction descriptorClaimsInterface(descriptor, interfaceName)\r\n{\r\n return Array.isArray(descriptor.implements) && descriptor.implements.includes(interfaceName);\r\n}\r\n// EveChildInheritProperties field order (src/trinity is the authority for\r\n// these names); dna.GetColorSet() is index-aligned with this Carbon color-slot\r\n// order, so the authored color set projects onto named, persisted fields.\r\nconst INHERIT_COLOR_PROPERTIES = Object.freeze([\r\n \"Primary\",\r\n \"Secondary\",\r\n \"Tertiary\",\r\n \"Black\",\r\n \"White\",\r\n \"Yellow\",\r\n \"Orange\",\r\n \"Red\",\r\n \"Blue\",\r\n \"Green\",\r\n \"Cyan\",\r\n \"Fire\",\r\n \"Hull\",\r\n \"Glass\",\r\n \"Reactor\",\r\n \"Darkhull\",\r\n \"Booster\",\r\n \"Killmark\",\r\n \"PrimaryLight\",\r\n \"SecondaryLight\",\r\n \"TertiaryLight\",\r\n \"WhiteLight\",\r\n \"PrimaryHologram\",\r\n \"SecondaryHologram\",\r\n \"TertiaryHologram\",\r\n \"State0\",\r\n \"State1\",\r\n \"State2\",\r\n \"State3\",\r\n \"StateVulnerable\",\r\n \"StateInvulnerable\",\r\n \"PrimaryForcefield\",\r\n \"SecondaryForcefield\",\r\n \"PrimaryBanner\",\r\n \"PrimaryFx\",\r\n \"SecondaryFx\",\r\n \"PrimarySpotlight\",\r\n \"SecondarySpotlight\",\r\n \"TertiarySpotlight\",\r\n \"PrimaryBillboard\",\r\n \"PrimaryWarpFx\",\r\n \"PrimaryAttackFx\",\r\n \"PrimarySiegeFx\",\r\n \"PrimaryDockedFx\"\r\n]);\r\n\r\nconst SWARM_BEHAVIOR_FIELD_NAMES = Object.freeze([\r\n \"mass\",\r\n \"speedMultiplier\",\r\n \"speedMinimum\",\r\n \"maxDistance0\",\r\n \"maxDistance1\",\r\n \"maxTime\",\r\n \"timeMultiplier\",\r\n \"agility\",\r\n \"speed0\",\r\n \"speed1\",\r\n \"weightFormation\",\r\n \"weightCohesion\",\r\n \"weightSeparation\",\r\n \"weightAlign\",\r\n \"weightWander\",\r\n \"weightAnchor\",\r\n \"anchorRadius0\",\r\n \"anchorRadius1\",\r\n \"maxDeceleration\",\r\n \"separationDistance\",\r\n \"formationDistance\",\r\n \"wanderFluctuation\",\r\n \"wanderDistance\",\r\n \"wanderRadius\"\r\n]);\r\n\r\nconst SOF_INSTANCE_LAYOUT = Object.freeze([\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 0, type: \"FLOAT32_4\", name: \"transform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 1, type: \"FLOAT32_4\", name: \"transform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 2, type: \"FLOAT32_4\", name: \"transform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 3, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 4, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 5, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 6, type: \"BYTE_4\", name: \"boneIndex\" })\r\n]);\r\n\r\n/** Carbon-first SOF builder whose sole supported public output is a GPU-free model-values graph. */\r\n@type.define({ className: \"EveSOF\", family: \"eve\" })\r\nexport class EveSOF extends CjsModel\r\n{\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n allowFileCaching = true;\r\n\r\n // Carbon registers this as the global TRI setting \"alphaCutoutShadowsEnabled\"\r\n // (EveSOF.cpp:61-62, default false); decal (alpha-cutout) areas take their\r\n // castsShadows state from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.boolean\r\n alphaCutoutShadowsEnabled = false;\r\n\r\n // Carbon registers this as the global TRI setting \"volumetricTrailPath\"\r\n // (EveSOF.cpp:64-65, default empty); the booster trail set takes its mesh\r\n // resource path from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.string\r\n volumetricTrailPath = \"\";\r\n\r\n // Carbon initializes each light's startTime from the current frame time,\r\n // phase-offsetting noise flicker by when the object was built. Injected\r\n // here per builder (default 0 keeps builds deterministic); the engine\r\n // passes its clock when it wants Carbon's de-synced flicker.\r\n @edit.readwrite\r\n @type.float64\r\n buildTime = 0;\r\n\r\n @edit.read\r\n @type.objectRef(\"EveSOFDataMgr\")\r\n dataMgr = new EveSOFDataMgr();\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n editorMode = false;\r\n\r\n #resourceExists = null;\r\n\r\n #childResourceResolver = null;\r\n\r\n #objectResourceResolver = null;\r\n\r\n #existingFilesCache = new Map();\r\n\r\n #asyncResources = Object.freeze({ getObject: null, exists: null });\r\n\r\n #dataPath = \"\";\r\n\r\n #dataLoadOperations = new Map();\r\n\r\n #sofLibraryBuilder = null;\r\n\r\n // Build-scope counterpart of Carbon's CCP_LOGERR sites: records in\r\n // layoutPlanner diagnostic shape ({ code, ...context }), reset by each\r\n // every values or deprecated document build and readable through\r\n // GetBuildDiagnostics().\r\n #buildDiagnostics = [];\r\n\r\n /** Add standalone SOF configuration or accept CjsLibrary topic forwarding. */\r\n Register(options = {})\r\n {\r\n if (!options || typeof options !== \"object\" || Array.isArray(options))\r\n {\r\n throw new TypeError(\"EveSOF.Register options must be an object\");\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(options, \"dataPath\"))\r\n {\r\n this.#dataPath = normalizeResourcePath(options.dataPath);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resources\"))\r\n {\r\n const resources = options.resources ?? {};\r\n if (typeof resources !== \"object\" || Array.isArray(resources))\r\n {\r\n throw new TypeError(\"EveSOF resources must be an object or null\");\r\n }\r\n if (resources.getObject !== undefined && resources.getObject !== null && typeof resources.getObject !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.getObject must be a function or null\");\r\n }\r\n if (resources.exists !== undefined && resources.exists !== null && typeof resources.exists !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.exists must be a function or null\");\r\n }\r\n const getObject = Object.hasOwn(resources, \"getObject\")\r\n ? resources.getObject ?? null\r\n : this.#asyncResources.getObject;\r\n const exists = Object.hasOwn(resources, \"exists\")\r\n ? resources.exists ?? null\r\n : this.#asyncResources.exists;\r\n if (exists !== this.#asyncResources.exists) this.#existingFilesCache.clear();\r\n this.#asyncResources = {\r\n getObject,\r\n exists\r\n };\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"lazyData\"))\r\n {\r\n const lazyData = options.lazyData;\r\n if (lazyData === false || lazyData === null)\r\n {\r\n this.#sofLibraryBuilder = null;\r\n }\r\n else if (lazyData instanceof CjsSofLibraryBuilder)\r\n {\r\n this.SetSofLibraryBuilder(lazyData);\r\n }\r\n else\r\n {\r\n if (lazyData !== true && (!lazyData || typeof lazyData !== \"object\" || Array.isArray(lazyData)))\r\n {\r\n throw new TypeError(\"EveSOF lazyData must be true, false, null, a CjsSofLibraryBuilder, or builder options.\");\r\n }\r\n const builderOptions = lazyData === true ? {} : lazyData;\r\n const source = builderOptions.source ?? ((path, context) =>\r\n {\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n throw new Error(\"EveSOF lazyData requires resources.getObject or a source function.\");\r\n }\r\n return getObject(path, { ...context, output: \"runtime\" });\r\n });\r\n this.SetSofLibraryBuilder(new CjsSofLibraryBuilder({\r\n ...builderOptions,\r\n dataMgr: this.dataMgr,\r\n source\r\n }));\r\n }\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"allowFileCaching\"))\r\n {\r\n this.allowFileCaching = Boolean(options.allowFileCaching);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"alphaCutoutShadowsEnabled\"))\r\n {\r\n this.alphaCutoutShadowsEnabled = Boolean(options.alphaCutoutShadowsEnabled);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"volumetricTrailPath\"))\r\n {\r\n this.volumetricTrailPath = String(options.volumetricTrailPath ?? \"\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"buildTime\"))\r\n {\r\n this.buildTime = Number(options.buildTime ?? 0);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resFileIndex\"))\r\n {\r\n // The resfileindex is the synchronous existence oracle Carbon gets from\r\n // its file system: authored res paths either appear in the index or do\r\n // not. Texture resPathInsert selection needs only this membership test,\r\n // so providing the index keeps the sync build pure while matching\r\n // Carbon's existence-driven path rewriting. Rich tool-owned indexes are\r\n // adapted to this list/predicate boundary by their composition layer.\r\n const index = options.resFileIndex;\r\n if (index === null) this.SetResourceExistsResolver(null);\r\n else if (Array.isArray(index))\r\n {\r\n // The canonical shape: a plain list of res file names, from wherever\r\n // the caller got them. Existence is case-insensitive membership,\r\n // matching Carbon's file-system semantics.\r\n const names = new Set(index.map(name => String(name ?? \"\").toLowerCase()));\r\n this.SetResourceExistsResolver(path => names.has(String(path ?? \"\").toLowerCase()));\r\n }\r\n else if (typeof index === \"function\") this.SetResourceExistsResolver(path => Boolean(index(path)));\r\n else if (index instanceof Set || index instanceof Map) this.SetResourceExistsResolver(path => index.has(path));\r\n else throw new TypeError(\"EveSOF resFileIndex must be an array of file names, a predicate, a Set, a Map, or null\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"editorMode\"))\r\n {\r\n this.editorMode = Boolean(options.editorMode);\r\n }\r\n return this;\r\n }\r\n\r\n /** Supplies the synchronous resource-existence probe used by texture inserts. */\r\n SetResourceExistsResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be a function or null\");\r\n }\r\n this.#resourceExists = resolver === null ? null : path =>\r\n {\r\n const result = resolver(path);\r\n if (result && typeof result.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be synchronous\");\r\n }\r\n return result === true;\r\n };\r\n this.#existingFilesCache.clear();\r\n return this;\r\n }\r\n\r\n /**\r\n * Supplies Carbon's synchronous `.red` child-object compatibility boundary.\r\n *\r\n * The resolver receives `(redFilePath, context)` and returns either null, a\r\n * self-describing model-values root, `{ values, target?, implements?, raw? }`,\r\n * a local `{ kind, target, fields, raw }` descriptor, or\r\n * `{ document, root?, target?, implements?, raw? }` for a legacy complete\r\n * compatibility fragment consumed by the internal builder.\r\n *\r\n * Values fragments require `_type` on every model because the SOF layer does\r\n * not import the class library needed to infer an untagged nested model's\r\n * schema.\r\n * Target is `children` for an EveTransform root or `effectChildren` for an\r\n * IEveSpaceObjectChild root.\r\n */\r\n SetChildResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be a function or null\");\r\n }\r\n this.#childResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Supplies synchronous controller and model-curve values or legacy compatibility fragments. */\r\n SetObjectResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be a function or null\");\r\n }\r\n this.#objectResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Installs the nominal partial-catalog builder used by asynchronous DNA builds. */\r\n SetSofLibraryBuilder(builder)\r\n {\r\n if (builder !== null && !(builder instanceof CjsSofLibraryBuilder))\r\n {\r\n throw new TypeError(\"EveSOF library builder must be a CjsSofLibraryBuilder or null.\");\r\n }\r\n if (builder && builder.GetDataManager() !== this.dataMgr)\r\n {\r\n throw new TypeError(\"EveSOF library builder must update this factory's data manager.\");\r\n }\r\n this.#sofLibraryBuilder = builder;\r\n return this;\r\n }\r\n\r\n /** Returns the installed partial-catalog builder, or null. */\r\n GetSofLibraryBuilder()\r\n {\r\n return this.#sofLibraryBuilder;\r\n }\r\n\r\n /** Boots configured lazy generic data or the configured monolithic catalog. */\r\n async InitializeAsync(options = {})\r\n {\r\n if (this.#dataPath)\r\n {\r\n await this.LoadDataAsync(this.#dataPath);\r\n }\r\n else if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.InitializeAsync(options.catalog ?? {});\r\n }\r\n return this;\r\n }\r\n\r\n /** Routes Carbon's resource load call through the SOF data manager. */\r\n @carbon.method\r\n @impl.implemented\r\n LoadData(filePath)\r\n {\r\n return this.dataMgr.LoadData(filePath);\r\n }\r\n\r\n /** Load SOF data through the configured promise-capable object resolver. */\r\n async LoadDataAsync(filePath = this.#dataPath)\r\n {\r\n const path = normalizeResourcePath(filePath);\r\n if (!path) throw new TypeError(\"EveSOF.LoadDataAsync requires a data path\");\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n return this.dataMgr.LoadDataAsync(path);\r\n }\r\n\r\n const existing = this.#dataLoadOperations.get(path);\r\n if (existing) return existing;\r\n const operation = ResolveSofDependency(\r\n () => getObject(path, { role: \"sofData\", output: \"runtime\" }),\r\n path,\r\n \"sofData\",\r\n new Map()\r\n )\r\n .then(data => this.#sofLibraryBuilder\r\n ? (this.#sofLibraryBuilder.SetData(data), true)\r\n : this.dataMgr.SetData(data));\r\n this.#dataLoadOperations.set(path, operation);\r\n const clear = () =>\r\n {\r\n if (this.#dataLoadOperations.get(path) === operation) this.#dataLoadOperations.delete(path);\r\n };\r\n operation.then(clear, clear);\r\n return operation;\r\n }\r\n\r\n /** Creates and resolves one DNA instance against the loaded SOF library. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n return dna.IsValid() ? dna : null;\r\n }\r\n\r\n /**\r\n * Reports the visibility groups one DNA resolves, without building a graph.\r\n *\r\n * Visibility groups are how a faction turns hull attachment sets on and off,\r\n * so this answers which groups the selected hulls author, which the faction\r\n * declares, and therefore which sets a build emits. Carbon keeps only the\r\n * FNV1 hashes at runtime (EveSOFDataMgr.cpp:1301-1310) and has no equivalent\r\n * query; the names come from the catalog projection.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDnaVisibilityGroups(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (dna === null) return null;\r\n\r\n const declared = [...new Set(dna.factionData?.visibilityGroups ?? [])];\r\n const declaredSet = new Set(declared);\r\n const sets = [];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.hullDatas?.[hullIndex];\r\n if (!hull) continue;\r\n // A gated set is any hull collection whose records carry a visibility\r\n // group, so this follows the catalog rather than a second list of the\r\n // set kinds Carbon happens to gate today.\r\n for (const [field, values] of Object.entries(hull))\r\n {\r\n if (!Array.isArray(values)) continue;\r\n for (const value of values)\r\n {\r\n if (!value || value.visibilityGroupName === undefined) continue;\r\n const group = String(value.visibilityGroupName);\r\n sets.push({\r\n kind: field,\r\n // Carbon's projected sets keep the visibility hash, not the\r\n // authored set name, so name is present only where a projection\r\n // already carries one.\r\n name: String(value.name ?? \"\"),\r\n hullIndex,\r\n visibilityGroup: group,\r\n visible: declaredSet.has(group)\r\n });\r\n }\r\n }\r\n }\r\n\r\n const authored = [...new Set(sets.map(item => item.visibilityGroup))].sort();\r\n return {\r\n dna: String(dnaString),\r\n hulls: [...(dna.hullNames ?? [])],\r\n faction: String(dna.factionName ?? \"\"),\r\n race: String(dna.raceName ?? \"\"),\r\n declared: declared,\r\n authored: authored,\r\n visible: authored.filter(name => declaredSet.has(name)),\r\n hidden: authored.filter(name => !declaredSet.has(name)),\r\n sets: sets.map(item => item)\r\n };\r\n }\r\n\r\n /** Inspects one DNA selection without creating a graph or runtime values. */\r\n InspectDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n const buildable = dna.IsValid();\r\n const valid = buildable && dna.ValidateContent();\r\n return {\r\n buildable,\r\n valid,\r\n error: dna.GetParseError() ?? (valid ? null : \"invalid-content\")\r\n };\r\n }\r\n\r\n /** Performs Carbon's separate slow/offline DNA validation path. */\r\n @carbon.method\r\n @impl.implemented\r\n ValidateDNA(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna !== null && dna.ValidateContent();\r\n }\r\n\r\n /**\r\n * Builds the legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValues(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Build(hullName, factionName, raceName)\r\n {\r\n return this.BuildFromDNA(`${hullName}:${factionName}:${raceName}`);\r\n }\r\n\r\n /**\r\n * Promise-facing legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValuesAsync(...).\r\n */\r\n BuildAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Returns diagnostics from the most recent values build or deprecated document build. */\r\n GetBuildDiagnostics()\r\n {\r\n return this.#buildDiagnostics.map(entry => ({ ...entry }));\r\n }\r\n\r\n /** Builds the supported public model-values graph from three selections. */\r\n BuildValues(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNA(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Builds the supported public model-values graph asynchronously. */\r\n BuildValuesAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /**\r\n * Builds the supported public model-values graph for a DNA string.\r\n *\r\n * The result is one nested, JSON-serializable root value carrying `_type` on\r\n * polymorphic nodes and `_id`/`_ref` only where topology demands shared\r\n * identity. There is no node table, `kind`/`fields` record, or `raw` payload.\r\n *\r\n * **No class registry is required, and none should be passed.** The SOF layer\r\n * must remain independent of Trinity classes, and JSON does not need the\r\n * classes it names. Building this used to hydrate\r\n * a document into live runtime objects and re-export them, which made a\r\n * registry mandatory and relocated a Trinity-layer dependency onto every\r\n * caller rather than removing it. Anything that takes a registry here is the\r\n * round trip growing back.\r\n *\r\n * Constructing objects is the caller's option, performed on the result:\r\n * `RootClass.from(values)` against whatever classes that caller has. The\r\n * direction matters — objects are built *from* the values, never in order to\r\n * produce them.\r\n *\r\n * The output is sparse by default: it carries what SOF set, and class\r\n * defaults belong to whoever constructs. Pass `populateDefaults: true` to\r\n * overlay defaults from the class families the caller has registered with\r\n * `CjsSchema`; SOF still does not import those families. The audio emitter is\r\n * ordinary declared data, an `AudEmitter` node in\r\n * `TriObserverLocal.observer`, so either form is a complete rebuild source.\r\n */\r\n BuildValuesFromDNA(dnaString, options = {})\r\n {\r\n const document = this.BuildFromDNA(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Builds one modular hull into an existing space-object values graph.\r\n *\r\n * Carbon mutates a live EveSpaceObject2. The device-free runtime keeps the\r\n * same owner-first and boolean contract while composing through its canonical\r\n * model-values boundary; a live CjsModel owner is exported, composed, then\r\n * populated through SetValues without importing Trinity into SOF.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Runtime SOF remains Trinity-free, so Carbon's live EveSpaceObject2 mutation is performed through the caller-supplied model-values contract.\")\r\n BuildChild(owner, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n const isModel = owner instanceof CjsModel;\r\n const source = isModel\r\n ? owner.GetValues({ refs: true, forceTypeTags: true })\r\n : owner;\r\n const values = this.BuildChildValues(source, dnaString, partTag, transform, options);\r\n if (!values) return false;\r\n\r\n if (isModel)\r\n {\r\n const hydrationOptions = options?.hydration ?? {};\r\n owner.SetValues(values, Object.hasOwn(options ?? {}, \"registry\")\r\n ? { ...hydrationOptions, registry: options.registry }\r\n : hydrationOptions);\r\n }\r\n else\r\n {\r\n replacePlainValues(owner, values);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns a new space-object values graph with one Carbon modular hull\r\n * contribution. Invalid DNA returns null without changing the input graph.\r\n */\r\n @impl.custom\r\n @impl.reason(\"Provides the immutable values form needed to compose a modular graph before optional Trinity hydration.\")\r\n BuildChildValues(ownerValues, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n if (!ownerValues || typeof ownerValues !== \"object\" || Array.isArray(ownerValues))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChildValues requires a self-describing space-object values root\");\r\n }\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const tag = normalizePartTag(partTag);\r\n const placementTransform = normalizePlacementTransform(transform);\r\n dna.SetParentBoundingSphere(null);\r\n dna.SetParentShapeEllipsoidInfo(null);\r\n\r\n const document = new SofDocumentBuilder();\r\n const rootRef = document.ImportValuesRoot(ownerValues);\r\n const root = document.GetNode(rootRef.$ref);\r\n if (!SPACE_OBJECT_ROOT_KINDS.has(root?.kind))\r\n {\r\n throw new TypeError(`EveSOF.BuildChildValues requires an EveSpaceObject2 values root, received ${root?.kind ?? \"unknown\"}`);\r\n }\r\n document.AddRoot(\"default\", rootRef);\r\n ensureSpaceObjectBuildFields(root.fields);\r\n this.#BuildChildIntoDocument(\r\n document,\r\n root.fields,\r\n dna,\r\n tag,\r\n placementTransform,\r\n options?.layout ?? options ?? {}\r\n );\r\n return EveSOF.projectDocumentValues(document.ToJSON(), options);\r\n }\r\n\r\n /** Supported async values build; dependency collection currently reuses the deprecated internal document builder. */\r\n async BuildValuesFromDNAAsync(dnaString, options = {})\r\n {\r\n const document = await this.BuildFromDNAAsync(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Canonical pure-data instantiation: the decoded (or raw black) sof catalog\r\n * plus a plain list of res file names.\r\n *\r\n * The catalog is mandatory - a factory without its data is useless. The\r\n * file list is the sole build-time resource dependency (resPathInsert\r\n * existence); without it every insert lookup reports missing and texture\r\n * paths fall back to their base values, with a one-time console warning.\r\n * The factory never fetches, never parses index formats, and never touches\r\n * the network: callers hand it bytes or data they acquired however they\r\n * chose.\r\n *\r\n * (`Create`, not `from` - CjsModel.from is the schema hydration contract\r\n * and keeps its signature.)\r\n */\r\n static Create({ black, resFileIndex } = {})\r\n {\r\n if (black === undefined || black === null)\r\n {\r\n throw new TypeError(\"EveSOF.Create requires the sof catalog: data.black bytes or its decoded data\");\r\n }\r\n const sof = new EveSOF();\r\n const data = (black instanceof ArrayBuffer || ArrayBuffer.isView(black))\r\n ? CjsBlackFormat.readPayload(\r\n ArrayBuffer.isView(black)\r\n ? black.buffer.slice(black.byteOffset, black.byteOffset + black.byteLength)\r\n : black,\r\n {}\r\n ).object\r\n : black;\r\n if (!sof.dataMgr.SetData(data))\r\n {\r\n throw new TypeError(\"EveSOF.Create could not ingest the sof catalog\");\r\n }\r\n if (resFileIndex === undefined || resFileIndex === null)\r\n {\r\n console.warn(\"EveSOF.Create: no resFileIndex file list provided; resPathInsert existence checks will report missing and texture paths fall back to their base values.\");\r\n }\r\n else\r\n {\r\n sof.Register({ resFileIndex });\r\n }\r\n return sof;\r\n }\r\n\r\n /**\r\n * Internal structural projection from the builder's `carbon.document`\r\n * intermediate to supported plain model values.\r\n *\r\n * Both forms are JSON describing one graph, so this is a structural rewrite\r\n * and nothing more: a node table becomes a tree, `kind` becomes `_type`, and\r\n * `{ $ref }` becomes a `{ _ref }` back-reference paired with an `_id` on the\r\n * first occurrence. `fields` and `raw` are envelopes, so their contents move\r\n * onto the node itself.\r\n *\r\n * **No class library is imported, by requirement.** The SOF layer must remain\r\n * independent of Trinity classes, and sparse JSON never needs the classes it\r\n * names. The previous implementation\r\n * hydrated the document into live runtime objects and called `GetValues` on\r\n * the root, which made a class registry mandatory and pushed a Trinity-layer\r\n * dependency onto every caller. Constructing objects to serialize a graph we\r\n * already hold is a round trip; building objects from these values is a thing\r\n * a caller may choose to do afterwards, with `RootClass.from(values)`.\r\n *\r\n * The output is therefore sparse unless `options.populateDefaults` is true.\r\n * That opt-in runs `CjsSchema.applyDefaults` after the structural projection,\r\n * using only class families the caller has already imported and registered.\r\n * It does not construct or initialize the authored graph and does not add a\r\n * SOF-to-Trinity dependency.\r\n *\r\n * @internal The document form is not a supported consumer boundary.\r\n */\r\n static projectDocumentValues(document, options = {})\r\n {\r\n const normalized = CjsCarbonDocument.normalize(document);\r\n const nodeById = new Map(normalized.nodes.map(node => [Number(node.id), node]));\r\n const rootRef = normalized.roots?.[0]?.ref;\r\n\r\n if (!CjsCarbonDocument.isRef(rootRef))\r\n {\r\n throw new TypeError(\"EveSOF values projection requires a document with one root reference.\");\r\n }\r\n\r\n // A node reachable more than once is shared topology and needs an identity;\r\n // one reachable once is ordinary nesting and needs none. Counting first\r\n // keeps `_id` off the great majority of nodes.\r\n const visits = new Map();\r\n CountDocumentVisits(rootRef, nodeById, visits);\r\n\r\n const values = ProjectDocumentNode(rootRef, nodeById, visits, new Map(), { nextId: 1 });\r\n const populateDefaults = options?.populateDefaults ?? false;\r\n if (typeof populateDefaults !== \"boolean\")\r\n {\r\n throw new TypeError(\"EveSOF populateDefaults option must be a boolean.\");\r\n }\r\n return populateDefaults ? CjsSchema.applyDefaults(values) : values;\r\n }\r\n\r\n /**\r\n * Deprecated async `carbon.document` assembly used internally by\r\n * `BuildValuesFromDNAAsync`.\r\n *\r\n * Resolve selected child/object dependencies without converting the\r\n * deterministic synchronous builder into an async state machine.\r\n *\r\n * A collection build records only dependencies selected by the normal SOF\r\n * filters. They are fetched concurrently, then the unchanged builder runs a\r\n * second time against synchronous per-call caches.\r\n *\r\n * @deprecated Use BuildValuesFromDNAAsync(...).\r\n */\r\n async BuildFromDNAAsync(dnaString, options = {})\r\n {\r\n if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.EnsureFromDNA(dnaString, options.catalog ?? {});\r\n }\r\n const getObject = this.#asyncResources.getObject;\r\n const exists = this.#asyncResources.exists;\r\n if (!getObject && !exists) return this.BuildFromDNA(dnaString, options);\r\n\r\n const documentRequests = new Map();\r\n const existenceRequests = new Map();\r\n const collectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", \"child\", context);\r\n return null;\r\n };\r\n this.#objectResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", context?.role || \"object\", context);\r\n return null;\r\n };\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path =>\r\n {\r\n CollectSofRequest(existenceRequests, path, \"boolean\", \"exists\");\r\n return false;\r\n };\r\n }\r\n this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = collectionPrevious.child;\r\n this.#objectResourceResolver = collectionPrevious.object;\r\n this.#resourceExists = collectionPrevious.exists;\r\n this.allowFileCaching = collectionPrevious.allowFileCaching;\r\n }\r\n\r\n const documentResults = new Map();\r\n const existenceResults = new Map();\r\n await Promise.all([\r\n ...[ ...documentRequests.values() ].map(request => ResolveSofDependency(\r\n () => getObject(request.path, { ...request.context, role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n documentResults,\r\n request.key\r\n )),\r\n ...[ ...existenceRequests.values() ].map(request => ResolveSofDependency(\r\n () => exists(request.path, { role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n existenceResults,\r\n request.key\r\n ))\r\n ]);\r\n\r\n const projectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n this.#objectResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path => existenceResults.get(SofRequestKey(path, \"boolean\")) === true;\r\n }\r\n return this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = projectionPrevious.child;\r\n this.#objectResourceResolver = projectionPrevious.object;\r\n this.#resourceExists = projectionPrevious.exists;\r\n this.allowFileCaching = projectionPrevious.allowFileCaching;\r\n }\r\n }\r\n\r\n /** Returns Carbon's layout selection and transform work as a detached CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n PlanLayoutFromDNA(dnaString, options = {})\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna ? planSofLayouts(dna, options ?? {}) : null;\r\n }\r\n\r\n /**\r\n * Emits the deprecated internal `carbon.document` assembly form, including\r\n * deterministic layouts. `BuildValuesFromDNA` currently projects this\r\n * intermediate to the supported output. Layout options may be passed\r\n * directly or under an `options.layout` object.\r\n *\r\n * @deprecated Use BuildValuesFromDNA(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n BuildFromDNA(dnaString, options = {})\r\n {\r\n this.#buildDiagnostics = [];\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const buildClass = dna.GetBuildClass();\r\n const typeName = BUILD_CLASS_TYPES[buildClass];\r\n if (!typeName) return null;\r\n const hull = dna.hullDatas[0];\r\n const sphere = dna.GetHullBoundingSphere() ?? [0, 0, 0, -1];\r\n const document = new SofDocumentBuilder();\r\n const isExtension = buildClass === EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION;\r\n const hasShipInterface = typeName === \"EveShip2\" || typeName === \"EveSwarm\";\r\n const swarmBehavior = typeName === \"EveSwarm\"\r\n ? createSwarmBehaviorFields(dna.GetGenericSwarmProperties())\r\n : null;\r\n const mesh = isExtension ? document.AddNode(\"Tr2Mesh\", {}) : this.CreateMesh(dna, document);\r\n if (!mesh) return null;\r\n const rootFields = {\r\n dna: dna.GetDnaString(),\r\n boundingSphereCenter: Array.from(sphere).slice(0, 3),\r\n boundingSphereRadius: Number(sphere[3] ?? -1),\r\n shapeEllipsoidCenter: isExtension ? [0, 0, 0] : arrayValue(hull.shapeEllipsoidCenter, [0, 0, 0]),\r\n shapeEllipsoidRadius: isExtension ? [-1, -1, -1] : arrayValue(hull.shapeEllipsoidRadius, [-1, -1, -1]),\r\n dynamicBoundingSphereEnabled: isExtension ? false : dna.DynamicBoundingSphereEnabled(),\r\n castShadow: isExtension ? false : dna.CastShadow(),\r\n isAnimated: isExtension ? false : dna.IsHullAnimated(),\r\n reflectionMode: isExtension ? 3 : dna.GetReflectionMode(),\r\n mesh,\r\n effectChildren: [],\r\n children: [],\r\n curveSets: [],\r\n modelRotationCurve: null,\r\n modelTranslationCurve: null,\r\n attachments: [],\r\n decals: [],\r\n impactOverlay: null,\r\n customMasks: [],\r\n lights: [],\r\n externalParameters: [],\r\n controllers: [],\r\n observers: [],\r\n locators: [],\r\n locatorSets: []\r\n };\r\n if (hasShipInterface) rootFields.boosters = null;\r\n if (swarmBehavior) Object.assign(rootFields, swarmBehavior);\r\n if (isExtension)\r\n {\r\n if (!this.SetupExtensionBuild(document, rootFields, dna, options?.layout ?? options ?? {})) return null;\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n this.SetupCustomMask(document, rootFields, dna);\r\n this.SetupDecalSets(document, rootFields, dna);\r\n this.SetupLocators(document, rootFields, dna);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupAttachments(document, rootFields, dna);\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n this.SetupEffects(document, rootFields, rootFields, dna, [identityMatrix()], EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupAudio(document, rootFields, dna, identityMatrix());\r\n this.SetupControllers(document, rootFields, dna, EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupModelCurves(document, rootFields, dna);\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, options?.layout ?? options ?? {});\r\n if (hasShipInterface) this.SetupBoosters(document, rootFields, dna);\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n\r\n /** Ports Carbon's modular child construction into an existing document root. */\r\n #BuildChildIntoDocument(document, rootFields, dna, partTag, transform, layoutOptions)\r\n {\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n const hasControllers = dna.GetHullControllers().length !== 0;\r\n const hasAnimation = dna.IsHullAnimated();\r\n const hasEmitters = dna.GetHullSoundEmitters().length !== 0;\r\n const hasLayouts = dna.GetLayoutCount() > 0;\r\n let hasAttachments = false;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n if (dna.GetHullSpriteSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpotlightSets(hullIndex).length !== 0 ||\r\n dna.GetHullPlaneSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpriteLineSets(hullIndex).length !== 0 ||\r\n dna.GetHullHazeSets(hullIndex).length !== 0 ||\r\n dna.GetHullBanners(hullIndex).length !== 0 ||\r\n dna.GetHullBannerSets(hullIndex).length !== 0 ||\r\n dna.GetHullLightSets(hullIndex).length !== 0)\r\n {\r\n hasAttachments = true;\r\n break;\r\n }\r\n }\r\n\r\n // hasBoosters forces the placement container, as in Carbon (EveSOF.cpp:360).\r\n const hasBoosters = dna.GetHullBoosterCount() > 0;\r\n const needsPlacementContainer = hasControllers || hasAnimation || hasEmitters ||\r\n hasChildEffects || hasLayouts || hasAttachments || hasBoosters;\r\n const buildFlags = hasAnimation\r\n ? EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n : EveSOFDataHull.BuildFilter.INSTANCED_PLACEMENT;\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, translation, scaling);\r\n\r\n let placementRef = null;\r\n let placementFields = null;\r\n if (needsPlacementContainer)\r\n {\r\n placementFields = {\r\n ...createLayoutContainerFields(dna.GetHullNames()[0]),\r\n partTag,\r\n staticTransform: true,\r\n scaling: Array.from(scaling),\r\n rotation: Array.from(rotation),\r\n translation: Array.from(translation)\r\n };\r\n placementRef = document.AddNode(\"EveChildContainer\", placementFields);\r\n rootFields.effectChildren.push(placementRef);\r\n }\r\n\r\n if (hasAnimation)\r\n {\r\n const childFields = {\r\n name: dna.GetHullNames()[0],\r\n partTag,\r\n mesh: this.CreateMesh(dna, document),\r\n reflectionMode: dna.GetReflectionMode(),\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: document.AddNode(\"Tr2GrannyAnimation\", {})\r\n };\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const childRef = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(childRef);\r\n placementFields.animationOwner = childRef;\r\n }\r\n else\r\n {\r\n const shared = ensureSharedInstancedMeshes(document, rootFields);\r\n const areas = this.CreateSharedLayoutAreas(document, dna);\r\n if (areas.length !== 0)\r\n {\r\n const instance = document.AddNode(\"EveChildInstancedMeshInstance\", {\r\n transform: transform.slice(),\r\n sphereIndex: 0\r\n });\r\n shared.meshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: dna.GetHullGeometryResPath(),\r\n castsShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances: [instance],\r\n partTags: [partTag],\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: \"\",\r\n display: true\r\n }));\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAttachments(document, placementFields, dna, [transform], true);\r\n }\r\n }\r\n\r\n const instanceSphere = transformLayoutSphere(dna.GetHullBoundingSphere(), transform);\r\n if (instanceSphere)\r\n {\r\n rootFields.boundingSphereCenter = instanceSphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = instanceSphere[3];\r\n }\r\n const ellipsoidBounds = transformLayoutEllipsoid(\r\n dna.GetHullShapeEllipsoid(),\r\n instanceSphere,\r\n transform\r\n );\r\n if (ellipsoidBounds)\r\n {\r\n const center = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n const radius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidCenter = center;\r\n rootFields.shapeEllipsoidRadius = radius;\r\n dna.SetParentShapeEllipsoidInfo({ center, radius });\r\n }\r\n\r\n if (hasControllers)\r\n {\r\n this.SetupControllers(document, placementFields, dna, buildFlags);\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAudio(document, placementFields, dna, transform);\r\n }\r\n if (hasBoosters && placementFields)\r\n {\r\n this.SetupChildBoosters(document, placementFields, dna);\r\n }\r\n if (hasChildEffects)\r\n {\r\n this.SetupEffects(document, rootFields, placementFields, dna, [transform], buildFlags);\r\n }\r\n if (!rootFields.impactOverlay)\r\n {\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n }\r\n this.SetupLocatorSets(document, rootFields, dna, [transform], partTag);\r\n this.SetupLayout(document, rootFields, dna, {\r\n ...(layoutOptions ?? {}),\r\n offsets: [transform]\r\n }, placementFields, {\r\n partTag\r\n });\r\n if (placementRef)\r\n {\r\n stampDocumentChildPartTag(document, placementRef, partTag);\r\n }\r\n }\r\n\r\n /** Emits Carbon's special extension-root path through a fake solo placement. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupExtensionBuild(document, rootFields, dna, layoutOptions = {})\r\n {\r\n const extensionFields = {\r\n ...createLayoutContainerFields(\"Extension Container\"),\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const needsPlacementContainer = dna.IsHullAnimated() || dna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? createLayoutContainerFields(\"Solo Placement\")\r\n : extensionFields;\r\n const childFields = {\r\n name: \"Hull\",\r\n mesh: this.CreateMesh(dna, document),\r\n castShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: dna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) return null;\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(child);\r\n\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(\r\n document,\r\n placementFields,\r\n dna,\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n }\r\n this.SetupAudio(document, placementFields, dna, identityMatrix());\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(\r\n document,\r\n rootFields,\r\n fakeFields,\r\n dna,\r\n [identityMatrix()],\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n if (needsPlacementContainer) placementFields.objects.push(...fakeFields.effectChildren);\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n placementFields.animationOwner = dna.IsHullAnimated() ? child : null;\r\n extensionFields.objects.push(document.AddNode(\"EveChildContainer\", placementFields));\r\n }\r\n\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, layoutOptions, extensionFields);\r\n extensionFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", extensionFields));\r\n return child;\r\n }\r\n\r\n /** Creates the base Tr2Mesh graph and populates its SOF shader areas. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateMesh(dna, document)\r\n {\r\n const fields = {\r\n geometryResPath: dna.GetHullGeometryResPath(),\r\n opaqueAreas: [],\r\n transparentAreas: [],\r\n additiveAreas: [],\r\n distortionAreas: [],\r\n depthAreas: []\r\n };\r\n const transparent = [];\r\n // Carbon's CreateMesh never fails: missing shader records degrade to\r\n // partially filled area vectors with a build diagnostic (EveSOF.cpp:500-515).\r\n this.SetupShaders(dna, document, fields, transparent);\r\n this.GenerateDepthFromAreaVector(document, fields.depthAreas, transparent, dna);\r\n return document.AddNode(\"Tr2Mesh\", fields);\r\n }\r\n\r\n /** Populates all five Carbon hull-area categories in source order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupShaders(dna, document, meshFields, transparent)\r\n {\r\n let meshIndexOffset = 0;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n let count = 0;\r\n const fills = [\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE],\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_DECAL],\r\n [meshFields.transparentAreas, TriBatchType.TRIBATCHTYPE_TRANSPARENT],\r\n [meshFields.additiveAreas, TriBatchType.TRIBATCHTYPE_ADDITIVE],\r\n [meshFields.distortionAreas, TriBatchType.TRIBATCHTYPE_DISTORTION]\r\n ];\r\n for (const [target, batchType] of fills)\r\n {\r\n const result = this.FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document);\r\n count += result.count;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT) transparent.push(...result.areas);\r\n }\r\n meshIndexOffset += count;\r\n }\r\n return true;\r\n }\r\n\r\n /** Converts one Carbon HullAreas vector into Tr2MeshArea/effect graph nodes. */\r\n @carbon.method\r\n @impl.implemented\r\n FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document)\r\n {\r\n // A missing source vector cannot occur in Carbon (hull area vectors always\r\n // exist for a valid hull index); treat it as empty rather than diagnosing.\r\n const source = dna.GetHullMeshAreas(batchType, hullIndex);\r\n if (!source) return { count: 0, areas: [] };\r\n const pending = [];\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData)\r\n {\r\n // Carbon logs and returns zero for this source, keeping the areas it\r\n // already appended and continuing with the remaining batches and\r\n // hulls (EveSOF.cpp:564-569); the build itself never aborts.\r\n this.#buildDiagnostics.push({\r\n code: \"missing-generic-shader\",\r\n batchType,\r\n hullIndex,\r\n shader: String(area.shader ?? \"\"),\r\n area: String(area.name ?? \"\")\r\n });\r\n target.push(...pending.map(item => item.ref));\r\n return { count: 0, areas: pending };\r\n }\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n meshIndexOffset,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n );\r\n pending.push(built);\r\n }\r\n target.push(...pending.map(item => item.ref));\r\n return { count: source.length, areas: pending };\r\n }\r\n\r\n /** Emits depth clones for transparent areas requesting Carbon depth generation. */\r\n @carbon.method\r\n @impl.implemented\r\n GenerateDepthFromAreaVector(document, depthAreas, transparentAreas, dna)\r\n {\r\n const depthShader = dna.GetGenericAreaShaderData(\"depthonlyv5.fx\");\r\n for (const source of transparentAreas)\r\n {\r\n if (!source.generateDepthArea) continue;\r\n const sourceEffect = document.GetNode(source.effect.$ref);\r\n let effectFields = cloneFields(sourceEffect.fields);\r\n if (depthShader)\r\n {\r\n const resource = source.resourceRefs.get(depthShader.transparencyTextureName);\r\n effectFields = {\r\n ...effectFields,\r\n effectFilePath: dna.GetCompleteShaderPath(\"depthonlyv5.fx\"),\r\n constParameters: [],\r\n parameters: [],\r\n resources: resource ? [resource] : []\r\n };\r\n }\r\n const effect = document.AddNode(\"Tr2Effect\", effectFields);\r\n const areaFields = { ...source.fields, effect };\r\n depthAreas.push(document.AddNode(\"Tr2MeshArea\", areaFields));\r\n }\r\n }\r\n\r\n /** Emits enabled pattern projections as EveCustomMask graph nodes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupCustomMask(document, rootFields, dna)\r\n {\r\n const application = dna.GetPatternApplicationData();\r\n if (!application) return;\r\n const layerCount = dna.GetPatternLayerCount();\r\n for (let layerIndex = 0; layerIndex < layerCount; layerIndex++)\r\n {\r\n const projection = dna.GetPatternProjectionData(application, layerIndex);\r\n if (!projection?.enabled) continue;\r\n const layer = dna.GetPatternLayerData(application, layerIndex);\r\n const targetMaterials = dna.GetMaterialTargets(layer);\r\n if (!layer || !targetMaterials) continue;\r\n rootFields.customMasks.push(document.AddNode(\"EveCustomMask\", {\r\n position: arrayValue(projection.position, [0, 0, 0]),\r\n scaling: arrayValue(projection.scaling, [1, 1, 1]),\r\n rotation: arrayValue(projection.rotation, [0, 0, 0, 1]),\r\n isMirrored: projection.isMirrored === true,\r\n clampU: layer.projectionAddressModeU === 3,\r\n clampV: layer.projectionAddressModeV === 3,\r\n materialIndex: Number(layer.materialSourceID ?? 0),\r\n targetMaterials: arrayValue(targetMaterials, [0, 0, 0, 0])\r\n }));\r\n }\r\n }\r\n\r\n /** Emits Carbon decal sets and records private static indices for SOF hydration. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupDecalSets(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n const combinedGeometryPath = dna.GetHullGeometryResPath().toLowerCase();\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const decalSet of dna.GetHullDecalSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(decalSet.visibilityGroup)) continue;\r\n for (const item of decalSet.items)\r\n {\r\n const usage = Number(item.usage);\r\n const effectName = DECAL_EFFECT_NAMES[usage];\r\n if (!effectName) continue;\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO && !dna.HasLogoSet(item.logoType)) continue;\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n const selectorFields = {};\r\n if (usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_STANDARD && usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const color = dna.GetColorSet()[item.glowColorType];\r\n if (color)\r\n {\r\n selectorFields._glowColorType = Number(item.glowColorType ?? 0);\r\n parameterNames.add(\"DecalGlowColor\");\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"DecalGlowColor\",\r\n value: Array.from(color)\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(item.parameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(item.parameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n const addResource = (name, resourcePath) => {\r\n if (resourceNames.has(name)) return;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", { name, resourcePath }));\r\n };\r\n for (const name of sortedKeys(item.textures)) addResource(name, item.textures.get(name).resFilePath);\r\n\r\n const shaderData = dna.GetGenericDecalShaderData(effectName);\r\n if (shaderData)\r\n {\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n addResource(name, shaderData.defaultTextures.get(name).resFilePath);\r\n }\r\n if (item.meshIndex !== -1)\r\n {\r\n for (const name of shaderData.parentTextures)\r\n {\r\n const resourcePath = dna.GetHullTextureWithMeshIndex(\r\n name,\r\n item.meshIndex,\r\n hullIndex,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null\r\n );\r\n if (resourcePath !== null) addResource(name, resourcePath);\r\n }\r\n }\r\n }\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const logo = dna.GetLogo(item.logoType);\r\n selectorFields._logoType = Number(item.logoType ?? 0);\r\n for (const name of sortedKeys(logo.textures)) addResource(name, logo.textures.get(name).resFilePath);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetDecalShaderLocationResPath()}/${dna.GetShaderPrefix(false)}${effectName}`,\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n addOffset(position, hullOffset);\r\n const indexBuffers = selectDecalIndexBuffers(item, dna.GetMultiHullCount(), combinedGeometryPath);\r\n rootFields.decals.push(document.AddNode(\"EveSpaceObjectDecal\", {\r\n // These underscored fields retain the original SOF selectors in\r\n // JSON only; target Trinity classes intentionally ignore them.\r\n ...selectorFields,\r\n position,\r\n rotation: arrayValue(item.rotation, [0, 0, 0, 1]),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n parentBoneIndex: item.boneIndex,\r\n minScreenSize: 10,\r\n decalEffect: effect,\r\n staticIndexBuffers: indexBuffers\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's CPU-side armor, hull, flicker, and shield impact graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupImpactEffects(document, rootFields, dna)\r\n {\r\n const impactType = dna.GetImpactEffectType();\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE) return;\r\n const damage = dna.GetGenericDamageData();\r\n const hullDamage = dna.GetGenericHullDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return;\r\n\r\n let shieldMesh = null;\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID)\r\n {\r\n const shieldEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetAreaShaderLocationResPath()}/${dna.GetImpactShieldShader()}`,\r\n constParameters: effectParameters(document, raceDamage.shieldDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.shieldDamageTextures)\r\n });\r\n const shieldArea = document.AddNode(\"Tr2MeshArea\", { effect: shieldEffect });\r\n shieldMesh = document.AddNode(\"Tr2Mesh\", {\r\n geometryResPath: damage.shieldGeometryResFilePath,\r\n additiveAreas: [shieldArea]\r\n });\r\n }\r\n\r\n const armorDamageShader = this.CreateArmorDamageEffect(document, dna);\r\n const armorImpactEmitter = createImpactEmitter(document, {\r\n rate: damage.armorParticleRate,\r\n angle: damage.armorParticleAngle,\r\n innerAngle: 0,\r\n minMaxSpeed: damage.armorParticleMinMaxSpeed,\r\n minMaxLifeTime: damage.armorParticleMinMaxLifeTime,\r\n sizes: damage.armorParticleSizes,\r\n colors: damage.armorParticleColors,\r\n textureIndex: damage.armorParticleTextureIndex,\r\n velocityStretchRotation: damage.armorParticleVelocityStretchRotation,\r\n drag: damage.armorParticleDrag,\r\n turbulenceAmplitude: damage.armorParticleTurbulenceAmplitude,\r\n turbulenceFrequency: damage.armorParticleTurbulenceFrequency,\r\n colorMidpoint: damage.armorParticleColorMidPoint\r\n });\r\n const hullImpactEmitter = hullDamage ? createImpactEmitter(document, {\r\n rate: hullDamage.hullParticleRate,\r\n angle: hullDamage.hullParticleAngle,\r\n innerAngle: hullDamage.hullParticleInnerAngle,\r\n minMaxSpeed: hullDamage.hullParticleMinMaxSpeed,\r\n minMaxLifeTime: hullDamage.hullParticleMinMaxLifeTime,\r\n sizes: hullDamage.hullParticleSizes,\r\n colors: hullDamage.hullParticleColors,\r\n textureIndex: hullDamage.hullParticleTextureIndex,\r\n velocityStretchRotation: hullDamage.hullParticleVelocityStretchRotation,\r\n drag: hullDamage.hullParticleDrag,\r\n turbulenceAmplitude: hullDamage.hullParticleTurbulenceAmplitude,\r\n turbulenceFrequency: hullDamage.hullParticleTurbulenceFrequency,\r\n colorMidpoint: hullDamage.hullParticleColorMidpoint\r\n }) : null;\r\n const flickerCurve = document.AddNode(\"TriPerlinCurve\", {\r\n alpha: damage.flickerPerlinAlpha,\r\n beta: damage.flickerPerlinBeta,\r\n N: damage.flickerPerlinN,\r\n speed: damage.flickerPerlinSpeed,\r\n offset: 1,\r\n scale: 0\r\n });\r\n const shieldIsEllipsoid = impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID;\r\n rootFields.impactOverlay = document.AddNode(\"EveImpactOverlay\", {\r\n mesh: shieldMesh,\r\n shieldIsEllipsoid,\r\n armorDamageShader,\r\n armorImpactEmitter,\r\n hullDamageFlickerCurve: flickerCurve,\r\n hullImpactEmitter\r\n });\r\n }\r\n\r\n /** Selects Carbon's legacy or SOF6 effect-child path. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffects(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n if (dna.UsingSof6())\r\n {\r\n this.SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n else\r\n {\r\n this.SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n }\r\n\r\n /** Emits legacy path-resolved children and Carbon's authored animation graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n const emitterTargetsById = new Map();\r\n for (const child of dna.GetHullChildren())\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const factionChild = dna.GetFactionChildData(child.groupIndex);\r\n if (factionChild && !factionChild.isVisible) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, false);\r\n // Carbon returns from SetupChildrenAndAnimations on a wrong-type child,\r\n // skipping the remaining children AND the animation pass (EveSOF.cpp:\r\n // 1840-1844); an unresolvable resource only skips the one child (1779-1783).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n // Emitter rate bindings reach INTO the loaded child's graph; a deferred\r\n // EveChildRef has no graph to bind yet, so the binding is recorded as a\r\n // diagnostic instead of silently dropped. Embedding resolvers keep the\r\n // full Carbon binding behavior.\r\n if (descriptor.reference && Number(child.id ?? -1) !== -1)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"deferred-child-animation-binding\",\r\n path: String(child.redFilePath ?? \"\"),\r\n id: Number(child.id)\r\n });\r\n }\r\n for (const offset of offsets)\r\n {\r\n const animationId = Number(child.id ?? -1);\r\n const ref = this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n if (animationId !== -1)\r\n {\r\n if (!emitterTargetsById.has(animationId)) emitterTargetsById.set(animationId, []);\r\n emitterTargetsById.get(animationId).push(...collectDynamicEmitterRefs(document, ref, descriptor.target));\r\n }\r\n }\r\n }\r\n\r\n for (const animation of dna.GetHullAnimations())\r\n {\r\n const curves = [];\r\n const bindings = [];\r\n if (Number(animation.id) !== -1 && Number(animation.startRate) !== -1)\r\n {\r\n const scalar = document.AddNode(\"Tr2CurveScalar\", {\r\n keys: [\r\n scalarKey(0, animation.startRate),\r\n scalarKey(1, animation.endRate)\r\n ]\r\n });\r\n for (const emitter of emitterTargetsById.get(Number(animation.id)) ?? [])\r\n {\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: scalar,\r\n destinationAttribute: \"rate\",\r\n destinationObject: emitter\r\n }));\r\n }\r\n curves.push(scalar);\r\n }\r\n if (Number(animation.startRotationTime) !== -1)\r\n {\r\n const curve = document.AddNode(\"Tr2CurveQuaternion\", {\r\n keys: [\r\n quaternionKey(animation.startRotationTime, animation.startRotationValue),\r\n quaternionKey(animation.endRotationTime, animation.endRotationValue)\r\n ]\r\n });\r\n curves.push(curve);\r\n if (!objectFields.modelRotationCurve)\r\n {\r\n objectFields.modelRotationCurve = document.AddNode(\"Tr2RotationAdapter\", {});\r\n }\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: curve,\r\n destinationAttribute: \"value\",\r\n destinationObject: objectFields.modelRotationCurve\r\n }));\r\n }\r\n objectFields.curveSets.push(document.AddNode(\"TriCurveSet\", {\r\n name: String(animation.name ?? \"\"),\r\n curves,\r\n bindings\r\n }));\r\n // Carbon also leaves authored translation animation as a TODO.\r\n }\r\n }\r\n\r\n /** Emits SOF6 child sets after visibility and build-filter selection. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const childSet of dna.GetHullChildSets())\r\n {\r\n if (!dna.IsInVisibilityData(childSet.visibilityGroup)) continue;\r\n for (const child of childSet.items)\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, true);\r\n // Carbon returns from SetupEffectChildren entirely on a wrong-type\r\n // child, skipping the remaining child sets (EveSOF.cpp:2000-2004).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n for (const offset of offsets)\r\n {\r\n this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Normalizes a child resource into an embeddable descriptor, preserving\r\n * resolver-free builds as EveChildRef nodes and rejecting roots outside\r\n * Carbon's child interfaces.\r\n */\r\n #resolveChildResource(redFilePath, child, sof6)\r\n {\r\n // Without a resolver the build stays complete AS DATA through Carbon's\r\n // own deferred-loading node: EveChildRef persists resPath, placement, and\r\n // loadChildAutomatically, and the runtime loads and attaches the child\r\n // when it pleases (EveChildRef_Blue.cpp:22-34). The type-based\r\n // children/effectChildren routing then happens at load time, where the\r\n // real root type is known. A configured resolver instead embeds the\r\n // child inline (the resolver supplies the type Carbon's cast would see).\r\n if (!this.#childResourceResolver)\r\n {\r\n return {\r\n kind: \"EveChildRef\",\r\n target: \"effectChildren\",\r\n reference: true,\r\n fields: {\r\n resPath: String(redFilePath ?? \"\"),\r\n loadChildAutomatically: true\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#childResourceResolver(String(redFilePath ?? \"\"), { child, sof6 });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: CCP_LOGERR(\"resource file %s is invalid!\") and the child is\r\n // skipped (EveSOF.cpp:1779-1783,1942-1946).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-child-resource\",\r\n reason: \"not-resolved\",\r\n path: String(redFilePath ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must return a child descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF child document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF child values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor requires a root kind\");\r\n }\r\n const isTransform = CHILD_TRANSFORM_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"EveTransform\");\r\n const isSpaceObjectChild = SPACE_OBJECT_CHILD_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"IEveSpaceObjectChild\");\r\n const target = descriptor.target ?? (isTransform ? \"children\" : \"effectChildren\");\r\n if (target !== \"children\" && target !== \"effectChildren\")\r\n {\r\n throw new TypeError(\"EveSOF child resource target must be children or effectChildren\");\r\n }\r\n // Carbon casts the loaded root: EveTransform joins the children list,\r\n // IEveSpaceObjectChild joins the effect children, and anything else logs\r\n // \"not of correct type\" and aborts the surrounding setup pass\r\n // (EveSOF.cpp:1786-1844,1949-2004).\r\n if (target === \"children\" ? !isTransform : !isSpaceObjectChild)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"child-resource-wrong-type\",\r\n path: String(redFilePath ?? \"\"),\r\n kind,\r\n target\r\n });\r\n return WRONG_TYPE_CHILD;\r\n }\r\n return {\r\n kind,\r\n target,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Composes child placement, imports or allocates the resolved node, and\r\n * appends its reference to the selected owner list.\r\n */\r\n #addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset)\r\n {\r\n const placement = composeChildPlacement(child, offset);\r\n // \"children\"-target hosts accept only the SRT placement; effect children\r\n // additionally receive Carbon's LOD gate and placement origin.\r\n const placementFields = descriptor.target === \"children\"\r\n ? {\r\n scaling: placement.scaling,\r\n rotation: placement.rotation,\r\n translation: placement.translation\r\n }\r\n : placement;\r\n let ref;\r\n if (descriptor.fragment || descriptor.values)\r\n {\r\n ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n const node = document.GetNode(ref.$ref);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n Object.assign(node.fields, cloneValue(placementFields));\r\n }\r\n else\r\n {\r\n ref = document.AddNode(\r\n descriptor.kind,\r\n { ...cloneFields(descriptor.fields), ...cloneValue(placementFields) },\r\n descriptor.raw ? cloneValue(descriptor.raw) : null\r\n );\r\n }\r\n const ownerFields = descriptor.target === \"children\" ? objectFields : childOwnerFields;\r\n ownerFields[descriptor.target].push(ref);\r\n return ref;\r\n }\r\n\r\n /** Emits local observers while retaining audio-backend construction intent. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAudio(document, rootFields, dna, parentOffset = identityMatrix())\r\n {\r\n const ignoredScale = vec3.create();\r\n const parentRotation = quat.create();\r\n const ignoredTranslation = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(parentOffset, identityMatrix()),\r\n parentRotation,\r\n ignoredTranslation,\r\n ignoredScale\r\n );\r\n for (const emitter of dna.GetHullSoundEmitters())\r\n {\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n arrayValue(emitter.position, [0, 0, 0]),\r\n arrayValue(parentOffset, identityMatrix())\r\n );\r\n const rotation = quat.multiply(\r\n quat.create(),\r\n parentRotation,\r\n arrayValue(emitter.rotation, [0, 0, 0, 1])\r\n );\r\n const front = vec3.transformQuat(vec3.create(), [0, 0, 1], rotation);\r\n // The emitter is a declared node in the observer's own `observer` slot,\r\n // not a descriptor hidden beside it. TriObserverLocal exists to hold \"an\r\n // audio or placement observer\" and forwards placement to it through\r\n // `observer.UpdatePlacement`, so this is the field the class was written\r\n // for; leaving it null and stashing a class name in `raw` described the\r\n // graph instead of being it.\r\n //\r\n // This emits a declarative identity and constructs nothing. Building the\r\n // live emitter remains src/audio's alone, which is what the runtime\r\n // architecture permits a producer to carry. The node also keeps the SOF\r\n // layer independent: no audio import is needed\r\n // to name a node any more than to name a Trinity one.\r\n rootFields.observers.push(document.AddNode(\"TriObserverLocal\", {\r\n name: String(emitter.name ?? \"\"),\r\n position: Array.from(position),\r\n front: Array.from(front),\r\n observer: document.AddNode(\"AudEmitter\", {\r\n name: String(emitter.name ?? \"\"),\r\n eventPrefix: String(emitter.prefix ?? \"\"),\r\n position: Array.from(position),\r\n scalingFactor: Number(emitter.attenuationScalingFactor ?? 1)\r\n })\r\n }));\r\n }\r\n }\r\n\r\n /** Loads filtered controller graph resources through the CPU document seam. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupControllers(document, rootFields, dna, buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const controller of dna.GetHullControllers())\r\n {\r\n if (((Number(controller.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveObjectResource(controller.path, \"controller\");\r\n if (descriptor) rootFields.controllers.push(this.#addObjectResource(document, descriptor));\r\n }\r\n }\r\n\r\n /** Loads authored model curve resources after legacy animation bindings. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupModelCurves(document, rootFields, dna)\r\n {\r\n const rotationPath = dna.GetModelRotationCurvePath();\r\n if (rotationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(rotationPath, \"modelRotationCurve\");\r\n if (descriptor) rootFields.modelRotationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n const translationPath = dna.GetModelTranslationCurvePath();\r\n if (translationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(translationPath, \"modelTranslationCurve\");\r\n if (descriptor) rootFields.modelTranslationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n }\r\n\r\n /** Emits Carbon's first-hull instanced attachment container and child meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupInstancedMeshes(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullInstanced = dna.GetHullInstancedMeshes();\r\n if (hullInstanced.length === 0) return null;\r\n\r\n let meshContainer = null;\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildContainer\" && node.fields?.name === \"Instanced Meshes\")\r\n {\r\n meshContainer = ref;\r\n break;\r\n }\r\n }\r\n if (!meshContainer)\r\n {\r\n meshContainer = document.AddNode(\"EveChildContainer\", {\r\n name: \"Instanced Meshes\",\r\n objects: []\r\n });\r\n rootFields.effectChildren.push(meshContainer);\r\n }\r\n const containerFields = document.GetNode(meshContainer.$ref).fields;\r\n if (!Array.isArray(containerFields.objects)) containerFields.objects = [];\r\n\r\n for (const source of hullInstanced)\r\n {\r\n if (!Array.isArray(source.instances) || source.instances.length === 0) continue;\r\n const propagated = propagateInstancedMeshInstances(source.instances, offsets);\r\n const built = this.CreateInstancedMesh(document, propagated.instances, source.geometryResPath);\r\n if (!built) continue;\r\n\r\n const shaderData = dna.GetGenericAreaShaderData(source.shader);\r\n if (shaderData)\r\n {\r\n built.opaqueAreas.push(createInstancedMeshArea(\r\n document,\r\n dna,\r\n source,\r\n shaderData,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n ));\r\n }\r\n\r\n const child = document.AddNode(\"EveChildMesh\", {\r\n name: \"\",\r\n mesh: built.ref,\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n instanceTransforms: propagated.instanceTransforms\r\n });\r\n\r\n if (Number(source.displayModifier) !== EveSOFDataInstancedMesh.DisplayQualityModifier.SHADER_ALL)\r\n {\r\n containerFields.objects.push(document.AddNode(\"EveChildContainer\", {\r\n name: \"Shader Quality Controlled Instanced Mesh\",\r\n displayFilter: Number(source.displayModifier ?? 0),\r\n objects: [child]\r\n }));\r\n }\r\n else\r\n {\r\n containerFields.objects.push(child);\r\n }\r\n }\r\n return meshContainer;\r\n }\r\n\r\n /** Creates the CPU-document half of Carbon's Tr2InstancedMesh pair. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateInstancedMesh(document, instances, resourcePath)\r\n {\r\n if (!Array.isArray(instances) || instances.length === 0) return null;\r\n const bounds = translationBounds(instances);\r\n const maxScale = maximumInstanceScale(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n const opaqueAreas = [];\r\n const ref = document.AddNode(\"Tr2InstancedMesh\", {\r\n geometryResPath: String(resourcePath ?? \"\"),\r\n opaqueAreas,\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(resourcePath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maxScale\r\n });\r\n return { ref, instanceData, opaqueAreas, bounds, maxScale };\r\n }\r\n\r\n /** Emits Carbon layout placement batches from the deterministic CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLayout(document, rootFields, dna, options = {}, targetFields = null, buildContext = {})\r\n {\r\n const plan = planSofLayouts(dna, options ?? {});\r\n if (plan.placements.length === 0) return plan;\r\n\r\n const layoutFields = targetFields ?? {\r\n name: \"layouts\",\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: [],\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const batches = groupLayoutPlacements(plan.placements);\r\n const shared = findSharedInstancedMeshes(document, rootFields);\r\n let sharedRef = shared?.ref ?? null;\r\n let sharedMeshes = shared?.meshes ?? null;\r\n const hasPartTag = Object.hasOwn(buildContext, \"partTag\");\r\n const fixedPartTag = hasPartTag ? normalizePartTag(buildContext.partTag) : 0;\r\n\r\n for (const occurrences of batches)\r\n {\r\n const first = occurrences[0];\r\n const extensionDna = this.CreateDna(first.dna);\r\n if (!extensionDna) continue;\r\n if (first.isInstanced) extensionDna.DisableAnimation();\r\n const transforms = occurrences.map(value => arrayValue(value.transform, identityMatrix()));\r\n updateLayoutBounds(rootFields, extensionDna, occurrences);\r\n const needsPlacementContainer = extensionDna.IsHullAnimated()\r\n || extensionDna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? occurrences.map(() => createLayoutContainerFields(first.name))\r\n : [];\r\n const placementAnimationOwners = needsPlacementContainer\r\n ? occurrences.map(() => null)\r\n : [];\r\n\r\n if (first.isInstanced && first.isShared)\r\n {\r\n const areas = this.CreateSharedLayoutAreas(document, extensionDna);\r\n if (areas.length !== 0)\r\n {\r\n if (!sharedRef)\r\n {\r\n sharedMeshes = [];\r\n sharedRef = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes: sharedMeshes\r\n });\r\n rootFields.effectChildren.push(sharedRef);\r\n }\r\n const instances = transforms.map((transform, sphereIndex) => document.AddNode(\r\n \"EveChildInstancedMeshInstance\",\r\n { transform, sphereIndex }\r\n ));\r\n sharedMeshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: extensionDna.GetHullGeometryResPath(),\r\n castsShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances,\r\n ...(hasPartTag ? { partTags: transforms.map(() => fixedPartTag) } : {}),\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: this.editorMode ? first.locatorSetName : \"\",\r\n display: true\r\n }));\r\n }\r\n }\r\n else if (first.isInstanced)\r\n {\r\n const instances = occurrences.map(value => packInstanceMatrix(value.transform, value.locator?.boneIndex));\r\n const built = this.CreateLayoutInstancedMesh(document, extensionDna, instances);\r\n if (built)\r\n {\r\n const childFields = {\r\n name: \"Instanced Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n mesh: built.ref,\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n decals: [],\r\n attachments: [],\r\n lights: []\r\n };\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n addChildMeshShaderOption(\r\n document,\r\n childFields,\r\n \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n \"SOIA_ENABLED\"\r\n );\r\n childFields.instanceTransforms = transforms;\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n layoutFields.objects.push(document.AddNode(\"EveChildMesh\", childFields));\r\n }\r\n }\r\n else\r\n {\r\n // Non-instanced placements own their locator sets and, when they own\r\n // damage locators, their own armour-damage shader; the parent merges\r\n // and poses them at runtime (Carbon EveSOF.cpp:3899-3908,3971-3972).\r\n const ownedLocatorSets = this.BuildHullLocalLocatorSets(document, extensionDna);\r\n const partArmorDamageShader = extensionDna.GetLocatorCount(\"damage\") > 0\r\n ? this.CreateArmorDamageEffect(document, extensionDna)\r\n : null;\r\n for (let occurrenceIndex = 0; occurrenceIndex < occurrences.length; occurrenceIndex++)\r\n {\r\n const occurrence = occurrences[occurrenceIndex];\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(occurrence.transform, rotation, translation, ignoredScale);\r\n const childFields = {\r\n name: \"Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n ownedLocatorSets,\r\n armorDamageShader: partArmorDamageShader,\r\n mesh: this.CreateMesh(extensionDna, document),\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: extensionDna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) continue;\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n this.SetupAttachments(document, childFields, extensionDna, [identityMatrix()], false);\r\n childFields.scaling = arrayValue(occurrence.randomizedScaling, [1, 1, 1]);\r\n childFields.rotation = Array.from(rotation);\r\n childFields.translation = Array.from(translation);\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n childFields.sofLocatorIndex = this.editorMode ? String(occurrence.locatorIndex) : \"\";\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n if (needsPlacementContainer)\r\n {\r\n placementFields[occurrenceIndex].objects.push(child);\r\n if (extensionDna.IsHullAnimated()) placementAnimationOwners[occurrenceIndex] = child;\r\n }\r\n else\r\n {\r\n layoutFields.objects.push(child);\r\n }\r\n }\r\n }\r\n\r\n if (first.isInstanced)\r\n {\r\n this.SetupAttachments(document, layoutFields, extensionDna, transforms, true);\r\n }\r\n for (let index = 0; index < occurrences.length; index++)\r\n {\r\n const target = needsPlacementContainer ? placementFields[index] : layoutFields;\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(document, target, extensionDna, first.buildFlags);\r\n }\r\n this.SetupAudio(document, target, extensionDna, transforms[index]);\r\n }\r\n const hasChildEffects = extensionDna.UsingSof6()\r\n ? extensionDna.GetHullChildSets().length !== 0\r\n : extensionDna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(document, rootFields, fakeFields, extensionDna, transforms, first.buildFlags);\r\n if (needsPlacementContainer)\r\n {\r\n fakeFields.effectChildren.forEach((ref, index) => {\r\n placementFields[index % placementFields.length].objects.push(ref);\r\n });\r\n }\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n for (let index = 0; index < placementFields.length; index++)\r\n {\r\n const fields = placementFields[index];\r\n if (!layoutContainerIsEmpty(fields))\r\n {\r\n const owner = placementAnimationOwners[index];\r\n if (owner) fields.animationOwner = owner;\r\n layoutFields.objects.push(document.AddNode(\"EveChildContainer\", fields));\r\n }\r\n }\r\n }\r\n this.SetupInstancedMeshes(document, rootFields, extensionDna, transforms);\r\n // Only instanced placements bake their locators into the root sets;\r\n // non-instanced children own theirs and the object merges them at\r\n // runtime (Carbon EveSOF.cpp:4171-4174).\r\n if (first.isInstanced)\r\n {\r\n this.SetupLocatorSets(\r\n document,\r\n rootFields,\r\n extensionDna,\r\n transforms,\r\n hasPartTag ? fixedPartTag : null\r\n );\r\n }\r\n }\r\n\r\n if (!targetFields && layoutFields.objects.length !== 0)\r\n {\r\n layoutFields.origin = 1;\r\n layoutFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", layoutFields));\r\n }\r\n return plan;\r\n }\r\n\r\n /** Creates typed effect-area records for EveChildInstancedMeshes.meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateSharedLayoutAreas(document, dna)\r\n {\r\n const result = [];\r\n const types = [\r\n TriBatchType.TRIBATCHTYPE_OPAQUE,\r\n TriBatchType.TRIBATCHTYPE_DECAL,\r\n TriBatchType.TRIBATCHTYPE_TRANSPARENT,\r\n TriBatchType.TRIBATCHTYPE_ADDITIVE,\r\n TriBatchType.TRIBATCHTYPE_DISTORTION\r\n ];\r\n for (const batchType of types)\r\n {\r\n const source = dna.GetHullMeshAreas(batchType, 0);\r\n if (!source) continue;\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData) continue;\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n 0,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n false\r\n );\r\n addEffectShaderOption(document, built.effect, \"SPACE_OBJECT_INSTANCED_ATTACHMENT\", \"SOIA_SHARED\");\r\n result.push(document.AddNode(\"EveChildInstancedMeshArea\", {\r\n effect: built.effect,\r\n batchType: batchType === TriBatchType.TRIBATCHTYPE_DECAL\r\n ? TriBatchType.TRIBATCHTYPE_OPAQUE\r\n : batchType,\r\n areaIndex: Number(built.fields.index) >>> 0,\r\n areaCount: Number(built.fields.count) >>> 0,\r\n // Carbon EveSOF.cpp:434-440/4069-4075 copies the built area's\r\n // cutout/winding flags so instanced occluder raycasts classify\r\n // backfaces correctly.\r\n alphaCutout: !!built.fields.alphaCutout,\r\n reversed: !!built.fields.reversed\r\n }));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /** Converts a placement transform batch into Carbon's non-shared instanced mesh graph. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateLayoutInstancedMesh(document, dna, instances)\r\n {\r\n if (!instances.length) return null;\r\n const ref = this.CreateMesh(dna, document);\r\n if (!ref) return null;\r\n const node = document.GetNode(ref.$ref);\r\n const bounds = translationBounds(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n node.kind = \"Tr2InstancedMesh\";\r\n Object.assign(node.fields, {\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(node.fields.geometryResPath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maximumInstanceScale(instances)\r\n });\r\n return { ref, instanceData, bounds };\r\n }\r\n\r\n /** Emits Carbon's ship-only booster graph and booster locator records. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBoosters(document, rootFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n\r\n let alwaysOn = false;\r\n let hasTrails = false;\r\n let locatorIndex = 0;\r\n const items = [];\r\n const boosterLocatorRefs = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { alwaysOn: false, hasTrails: true, items: [] };\r\n alwaysOn = hull.alwaysOn === true;\r\n hasTrails ||= hull.hasTrails === true;\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: `locator_booster_${++locatorIndex}`,\r\n transform\r\n }));\r\n\r\n const ignoredScale = vec3.create();\r\n const rotation = quat.create();\r\n const position = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(item.transform, identityMatrix()),\r\n rotation,\r\n position,\r\n ignoredScale\r\n );\r\n position[0] += hullOffset[0];\r\n position[1] += hullOffset[1];\r\n position[2] += hullOffset[2];\r\n boosterLocatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: [0, 0, 0],\r\n boneIndex: -1\r\n }));\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n functionality: arrayValue(item.functionality, [0, 1, 1, 1]),\r\n hasTrail: item.hasTrail !== false,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, \"boosters\", boosterLocatorRefs);\r\n\r\n const effect = createBoosterEffect(document, race, \"BOOSTER_LOD_HIGH\");\r\n const effectFar = createBoosterEffect(document, race, \"BOOSTER_LOD_LOW\");\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", {\r\n sprites: [],\r\n effect: glowEffect\r\n });\r\n\r\n let trails = null;\r\n if (hasTrails)\r\n {\r\n const trailEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/VolumetricTrails.fx\",\r\n options: [],\r\n constParameters: [\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailSize\",\r\n value: arrayValue(race.trailSize, [0, 0, 0, 0])\r\n }),\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailColor\",\r\n value: arrayValue(race.trailColor, [0, 0, 0, 0])\r\n })\r\n ],\r\n parameters: [],\r\n resources: [],\r\n samplerOverrides: []\r\n });\r\n trails = document.AddNode(\"EveTrailsSet\", {\r\n // Carbon: trail->SetMeshResPath(g_volumetricTrailPath) (EveSOF.cpp:2720).\r\n geometryResPath: this.volumetricTrailPath,\r\n effect: trailEffect\r\n });\r\n }\r\n\r\n rootFields.boosters = document.AddNode(\"EveBoosterSet2\", {\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n alwaysOn,\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n trails,\r\n items\r\n });\r\n return rootFields.boosters;\r\n }\r\n\r\n /**\r\n * Emits the child-graph booster set into a placement container (Carbon\r\n * EveSOF::SetupChildBoosters, EveSOF.cpp:3049-3132): per-hull\r\n * driveName/effectPath/parameter/texture overrides with the\r\n * EveChildBoosterSet defaults as fallback, the LOD effect pair, one glow\r\n * sprite set, and every hull's items with the cumulative multi-hull\r\n * offset. Quad-renderer registration and PrepareResources are engine\r\n * realizations; the booster set node carries everything else.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildBoosters(document, placementFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n const hull0 = dna.GetHullBoosterData(0) ?? {};\r\n\r\n // EveChildBoosterSet.DEFAULT_DRIVE_NAME / DEFAULT_EFFECT_PATH\r\n // (EveChildBoosterSet.h:94-96); SOF stays import-free of trinity.\r\n const driveName = hull0.driveName || \"ThrustMain\";\r\n const effectPath = hull0.effectPath ||\r\n \"res:/Graphics/Effect/Managed/Space/Booster/ChildBoosterVolumetric.fx\";\r\n const effect = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_HIGH\", effectPath, hull0.parameters, hull0.textures);\r\n const effectFar = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_LOW\", effectPath, hull0.parameters, hull0.textures);\r\n\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", { sprites: [], effect: glowEffect });\r\n\r\n const items = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { items: [] };\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n\r\n const ref = document.AddNode(\"EveChildBoosterSet\", {\r\n name: \"Boosters\",\r\n driveName,\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n items\r\n });\r\n placementFields.objects.push(ref);\r\n return ref;\r\n }\r\n\r\n /**\r\n * Normalizes a controller or model-curve resource, retaining resolver-free\r\n * references and enforcing the Carbon interface required by its role.\r\n */\r\n #resolveObjectResource(path, role)\r\n {\r\n if (!this.#objectResourceResolver)\r\n {\r\n // Controllers have Carbon's own deferred node: Tr2ControllerReference\r\n // persists the path and loads the controller at runtime\r\n // (Tr2ControllerReference_Blue.cpp:16-23).\r\n if (role === \"controller\")\r\n {\r\n return {\r\n kind: \"Tr2ControllerReference\",\r\n reference: true,\r\n fields: { path: String(path ?? \"\") },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n // Model curves have no Carbon reference node - Carbon inline-loads\r\n // them only because its blocking BeResMan made that free; nothing\r\n // about the loaded curve feeds back into composition. They defer\r\n // through the CarbonEngineJS-original CjsExternalRef, carrying the\r\n // interface gate for the loader to enforce at splice time.\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n return {\r\n kind: \"CjsExternalRef\",\r\n reference: true,\r\n fields: {\r\n resPath: String(path ?? \"\"),\r\n expects: gate ? gate.interfaceName : \"\"\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#objectResourceResolver(String(path ?? \"\"), { role });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: controllers log \"controller resource file %s is invalid!\"\r\n // (EveSOF.cpp:2028-2031); model curves skip silently (1672-1690).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-object-resource\",\r\n reason: \"not-resolved\",\r\n role,\r\n path: String(path ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must return an object descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF object document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF object values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor requires a root kind\");\r\n }\r\n // Carbon loads these roles through typed LoadObject calls, so a root that\r\n // does not implement the role's interface never attaches: controllers log\r\n // and skip (EveSOF.cpp:2024-2031); model curves skip (1672-1690).\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n if (gate && !gate.kinds.has(kind) && !descriptorClaimsInterface(descriptor, gate.interfaceName))\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"object-resource-wrong-type\",\r\n role,\r\n path: String(path ?? \"\"),\r\n kind,\r\n expected: gate.interfaceName\r\n });\r\n return null;\r\n }\r\n return {\r\n kind,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Imports a resolved values or document root into the builder, or allocates a\r\n * standalone node, then overlays any raw fields.\r\n */\r\n #addObjectResource(document, descriptor)\r\n {\r\n if (!descriptor.fragment && !descriptor.values)\r\n {\r\n return document.AddNode(descriptor.kind, cloneFields(descriptor.fields), cloneValue(descriptor.raw));\r\n }\r\n const ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n const node = document.GetNode(ref.$ref);\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n return ref;\r\n }\r\n\r\n /** Emits the currently maintained Carbon attachment stages in source order. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAttachments(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n // Carbon caches this effect on the EveSOF instance. Document-local sharing\r\n // avoids cross-build graph identity; do not widen it without an operational\r\n // consumer that requires mutable identity across builds.\r\n const sharedSpriteEffect = { ref: null };\r\n this.SetupSpriteSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupSpotlightSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupPlaneSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupSpriteLineSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupHazeSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n // Carbon gates banners on the owner's root object casting to EveSpaceObject2;\r\n // only space-object roots carry the externalParameters banner surface.\r\n if (Array.isArray(rootFields.externalParameters))\r\n {\r\n if (dna.UsingSof6()) this.SetupBannerSets(document, rootFields, dna, offsets);\r\n else this.SetupBanners(document, rootFields, dna, offsets);\r\n }\r\n this.SetupLights(document, rootFields, dna, offsets);\r\n }\r\n\r\n /** Emits visible EveSpriteSet attachments and their SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const sprites = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = Array.from(sourceColor, value => Number(value) * Number(item.intensity ?? 1));\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n arrayValue(offset, identityMatrix())\r\n );\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n sprites.push(document.AddNode(\"EveSpriteSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n falloff: Number(item.falloff ?? 0),\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n color\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + position[0],\r\n Number(item.light.translation?.[1] ?? 0) + position[1],\r\n Number(item.light.translation?.[2] ?? 0) + position[2]\r\n ],\r\n rotation: arrayValue(item.light.rotation, [0, 0, 0, 1]),\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteSet\", {\r\n effect: sharedEffect.ref,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n sprites,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon spotlight geometry, effects, and authored SOF6 light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpotlightSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpotlightSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n\r\n const coneEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightconepool.fx\",\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"zOffset\",\r\n value: Array(4).fill(Number(set.zOffset ?? 0))\r\n })],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.coneTextureResPath ?? \"\")\r\n })]\r\n });\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightglowpool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.glowTextureResPath ?? \"\")\r\n })]\r\n });\r\n const spotlightItems = [];\r\n const lights = [];\r\n let index = 0;\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n let coneColor;\r\n let flareColor;\r\n let spriteColor;\r\n let lightColor;\r\n if (dna.UsingSof6())\r\n {\r\n lightColor = dna.GetColorSet()[item.colorType];\r\n if (!lightColor) continue;\r\n coneColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.75, 0.5), item.coneIntensity);\r\n flareColor = multiplyColor(modifyColor(lightColor, item.saturation, 1), item.flareIntensity);\r\n spriteColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.9, 0.75), item.spriteIntensity);\r\n }\r\n else\r\n {\r\n const faction = dna.GetFactionSpotlightSetData(item.groupIndex);\r\n if (!faction) continue;\r\n coneColor = multiplyColor(faction.coneColor, item.coneIntensity);\r\n flareColor = multiplyColor(faction.flareColor, item.flareIntensity);\r\n spriteColor = multiplyColor(faction.spriteColor, item.spriteIntensity);\r\n lightColor = faction.coneColor;\r\n }\r\n const selectorFields = dna.UsingSof6()\r\n ? { _colorType: Number(item.colorType ?? 0) }\r\n : {};\r\n\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n mat4.multiply(\r\n transform,\r\n mat4.fromTranslation(mat4.create(), hullOffset),\r\n transform\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n\r\n spotlightItems.push(document.AddNode(\"EveSpotlightSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n coneColor,\r\n flareColor,\r\n spriteColor,\r\n spriteScale: arrayValue(item.spriteScale, [1, 1, 1]),\r\n transform\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, scaling);\r\n const scale = Array.from(scaling, Math.abs);\r\n const angle = scale[2] > 0\r\n ? Math.atan(Math.max(scale[0], scale[1]) / (2 * scale[2])) * 180 / Math.PI\r\n : 0;\r\n const localPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(item.light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(localPosition, localPosition, position);\r\n lights.push(document.AddNode(\"EveSpotlightLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(localPosition),\r\n rotation: Array.from(rotation),\r\n color: saturateColor(lightColor, item.saturation * item.light.saturation),\r\n innerAngle: Number(item.light.innerAngleMultiplier ?? 0.5) * angle,\r\n outerAngle: Number(item.light.outerAngleMultiplier ?? 1) * angle,\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1) * scale[2],\r\n radius: Number(item.light.outerScaleMultiplier ?? 1) * scale[2],\r\n brightness: Number(item.light.intensity ?? 1) * Number(item.coneIntensity ?? 0),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n texturePath: String(item.light.lightProfilePath ?? \"\"),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\"),\r\n boosterGainInfluence: item.boosterGainInfluence === true\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveSpotlightSet\", {\r\n coneEffect,\r\n glowEffect,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spotlightItems\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon plane-set effects, items, and authored SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupPlaneSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullPlaneSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n const skinned = set.skinned === true && !isInstancedPlacement;\r\n const resources = [];\r\n let imageMap = null;\r\n let pickBufferID = 0;\r\n if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/inspacevideos\"\r\n });\r\n resources.push(imageMap);\r\n }\r\n else if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/hangarvideos\"\r\n });\r\n resources.push(imageMap);\r\n pickBufferID = 100;\r\n }\r\n const layerMap1 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer1Map\",\r\n resourcePath: String(set.layer1MapResPath ?? \"\")\r\n });\r\n const layerMap2 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer2Map\",\r\n resourcePath: String(set.layer2MapResPath ?? \"\")\r\n });\r\n const maskMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"MaskMap\",\r\n resourcePath: String(set.maskMapResPath ?? \"\")\r\n });\r\n resources.push(layerMap1, layerMap2, maskMap);\r\n const planeData = [\r\n set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HAZE ? 1 : 0,\r\n Number(set.atlasSize ?? 1),\r\n Math.floor(Number(set.atlasAspectRatio?.[0] ?? 1)),\r\n Math.floor(Number(set.atlasAspectRatio?.[1] ?? 1))\r\n ];\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: getPlaneSetEffectPath(set.usage, skinned),\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"PlaneData\",\r\n value: planeData\r\n })],\r\n parameters: [],\r\n resources\r\n });\r\n\r\n const planes = [];\r\n const lights = [];\r\n let usesLightParameters = false;\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n let color;\r\n let selectorFields = {};\r\n if (dna.UsingSof6())\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n color = saturateColor(multiplyColor(sourceColor, item.intensity), item.saturation);\r\n selectorFields = { _colorType: Number(item.colorType ?? 0) };\r\n }\r\n else\r\n {\r\n color = arrayValue(item.color, [1, 1, 1, 1]);\r\n const faction = dna.GetFactionPlaneSetData(item.groupIndex);\r\n if (faction) color = arrayValue(faction.color, [0, 0, 0, 0]);\r\n }\r\n\r\n const blinkData = [\r\n Number(item.rate ?? 1),\r\n Number(item.phase ?? 0),\r\n Number(item.dutyCycle ?? 1),\r\n Number(item.blinkMode ?? 0)\r\n ];\r\n planes.push(document.AddNode(\"EvePlaneSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n color,\r\n layer1Scroll: arrayValue(item.layer1Scroll, [0, 0, 0, 0]),\r\n layer1Transform: arrayValue(item.layer1Transform, [0, 0, 0, 0]),\r\n layer2Scroll: arrayValue(item.layer2Scroll, [0, 0, 0, 0]),\r\n layer2Transform: arrayValue(item.layer2Transform, [0, 0, 0, 0]),\r\n maskAtlasID: Number(item.maskMapAtlasIndex ?? 0) >>> 0,\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n blinkData\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.lights.length) usesLightParameters = true;\r\n for (const light of item.lights)\r\n {\r\n const maxScale = Math.max(...arrayValue(item.scaling, [1, 1, 1]));\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n lights.push(document.AddNode(\"EvePlaneLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(color, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n lightProfilePath: String(light.lightProfilePath ?? \"\"),\r\n fadeType: Number(item.blinkMode ?? 0),\r\n blinkPhase: Number(item.phase ?? 0),\r\n blinkRate: Number(item.rate ?? 1)\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EvePlaneSet\", {\r\n effect,\r\n lights,\r\n pickBufferID,\r\n planes,\r\n skinned,\r\n imageMapParameter: usesLightParameters ? imageMap : null,\r\n layerMap1Parameter: usesLightParameters ? layerMap1 : null,\r\n layerMap2Parameter: usesLightParameters ? layerMap2 : null,\r\n maskMapParameter: usesLightParameters ? maskMap : null\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon sprite-line geometry and authored SOF6 per-sprite lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteLineSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteLineSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const spriteLines = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.intensity);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n const line = {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkPhaseShift: Number(item.blinkPhaseShift ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n color,\r\n falloff: Number(item.falloff ?? 0),\r\n isCircle: item.isCircle === true,\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n spacing: Number(item.spacing ?? 1)\r\n };\r\n spriteLines.push(document.AddNode(\"EveSpriteLineSetItem\", line));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n let lightRotation = arrayValue(item.light.rotation, [0, 0, 0, 1]);\r\n const positions = getSpriteLinePositions(line);\r\n for (let spriteIndex = 0; spriteIndex < positions.length; spriteIndex++)\r\n {\r\n lightRotation = Array.from(quat.normalize(\r\n quat.create(),\r\n quat.multiply(quat.create(), line.rotation, lightRotation)\r\n ));\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + positions[spriteIndex][0] + line.position[0],\r\n Number(item.light.translation?.[1] ?? 0) + positions[spriteIndex][1] + line.position[1],\r\n Number(item.light.translation?.[2] ?? 0) + positions[spriteIndex][2] + line.position[2]\r\n ],\r\n rotation: lightRotation,\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0) + Number(item.blinkPhaseShift ?? 0) * spriteIndex,\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteLineSet\", {\r\n effect: sharedEffect.ref,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spriteLines\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon haze geometry and authored SOF6 point-light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupHazeSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n // Carbon keeps three haze effects on the EveSOF instance. The document\r\n // contract shares by path only inside this build, matching its identity\r\n // boundary while the effects remain immutable.\r\n const effects = new Map();\r\n const getEffect = (path) =>\r\n {\r\n if (!path) return null;\r\n if (!effects.has(path))\r\n {\r\n effects.set(path, document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: path,\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n }));\r\n }\r\n return effects.get(path);\r\n };\r\n\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullHazeSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n let effectPath = \"\";\r\n if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_SPHERICAL)\r\n {\r\n effectPath = set.skinned === true && !isInstancedPlacement\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_hazespherical.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/hazespherical.fx\";\r\n }\r\n else if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_HALFSPHERICAL)\r\n {\r\n effectPath = \"res:/graphics/effect/managed/space/spaceobject/fx/hazehalfspherical.fx\";\r\n }\r\n\r\n const hazes = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.hazeBrightness);\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n hazes.push(document.AddNode(\"EveHazeSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n color,\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n position: Array.from(position),\r\n hazeData: [\r\n Number(item.hazeFalloff ?? 6),\r\n Number(item.sourceSize ?? 0.2),\r\n Number(item.sourceBrightness ?? 2),\r\n item.boosterGainInfluence === true ? 1 : 0\r\n ]\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n for (const light of item.lights)\r\n {\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveHazeSetLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(sourceColor, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveHazeSet\", {\r\n effect: getEffect(effectPath),\r\n display: true,\r\n hazes,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's legacy per-item-visible banner groups. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBanners(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBanners(hullIndex))\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of set.items)\r\n {\r\n if (!dna.IsInVisibilityData(value.visibilityGroup)) continue;\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.bannerLight;\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const radius = Number(light.radiusMultiplier ?? 1) * Math.max(scaling[0], scaling[1], scaling[2]);\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: item.position,\r\n rotation: [0, 0, 0, 1],\r\n color: [0, 0, 0, 0],\r\n radius,\r\n innerRadius: radius * Number(light.innerRadiusMultiplier ?? 0.3),\r\n brightness: Number(light.brightness ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index: index++,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: \"\"\r\n }));\r\n }\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(set.usage), banners, lights, EveSOFDataHullBanner.Usage._USAGE_COUNT);\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's SOF6 visibility-grouped banner sets. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBannerSets(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBannerSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup) || set.bannerTypes.size === 0) continue;\r\n for (const [usage, values] of set.bannerTypes)\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of values)\r\n {\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.light;\r\n if (light)\r\n {\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n item.rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, item.position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n item.rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: [0, 0, 0, 0],\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(usage), banners, lights, EveSOFDataHullBannerSetItem.Usage._USAGE_COUNT);\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon hull lights with faction visibility, color, and multi-hull transforms. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLights(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const lightSet of dna.GetHullLightSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(lightSet.visibilityGroup)) continue;\r\n for (const item of lightSet.items)\r\n {\r\n const lightKind = getLightKind(item.type);\r\n const color = dna.GetColorSet()[item.lightColor];\r\n if (!lightKind || !color) continue;\r\n\r\n for (const offset of offsets)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n // Flattened emission (2026-07-23 LightData flatten decision): the\r\n // Tr2 light classes persist the Blue-mapped LightData members as\r\n // flat fields, so hull lights emit Carbon's flat Blue shape. The\r\n // packed-set light items above still emit nested lightData bags\r\n // until their classes migrate. startTime carries the injected\r\n // buildTime, matching Carbon's GetCurrentTime() stamp at build.\r\n const lightFields = {\r\n ...(lightKind.className !== \"Tr2TexturedPointLight\"\r\n ? { _lightColor: Number(item.lightColor ?? 0) }\r\n : {}),\r\n startTime: this.buildTime,\r\n flags: Number(item.flags ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n radius: Number(item.radius ?? 0),\r\n innerRadius: Number(item.innerRadius ?? 0),\r\n color: Array.from(color),\r\n brightness: Number(item.brightness ?? 0),\r\n noiseAmplitude: Number(item.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.noiseOctaves ?? 1),\r\n castsShadows: 0,\r\n isVolumetric: false\r\n };\r\n if (lightKind.className === \"Tr2SpotLight\")\r\n {\r\n lightFields.innerAngle = Number(item.innerAngle ?? 0);\r\n lightFields.outerAngle = Number(item.outerAngle ?? 0);\r\n }\r\n if (lightKind.className === \"Tr2TexturedPointLight\")\r\n {\r\n lightFields.texturePath = String(item.texturePath ?? \"\");\r\n }\r\n rootFields.lights.push(document.AddNode(lightKind.className, {\r\n ...lightFields,\r\n type: lightKind.type,\r\n ...(lightKind.isDynamic ? { isDynamic: true } : {})\r\n }));\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Adds turret and last-hull audio locators with Carbon multi-hull offsets. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocators(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const locator of dna.GetHullTurretLocators(hullIndex))\r\n {\r\n const transform = arrayValue(locator.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: locator.name,\r\n transform\r\n }));\r\n }\r\n const audioPosition = dna.GetHullAudioPosition(hullIndex);\r\n if (audioPosition)\r\n {\r\n const transform = identityMatrix();\r\n transform[12] = Number(audioPosition[0] ?? 0) + hullOffset[0];\r\n transform[13] = Number(audioPosition[1] ?? 0) + hullOffset[1];\r\n transform[14] = Number(audioPosition[2] ?? 0) + hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: \"locator_audio_booster\",\r\n transform\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Builds the armour-damage shader effect node, or null when the DNA lacks\r\n * damage data (Carbon EveSOF.cpp:2579-2603 CreateArmorDamageEffect; the\r\n * ArmorDamageEffectCache keyed on race+animated is a performance follow-up).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateArmorDamageEffect(document, dna)\r\n {\r\n const damage = dna.GetGenericDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return null;\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(damage.armorShader),\r\n constParameters: effectParameters(document, raceDamage.armorDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.armorDamageTextures)\r\n });\r\n }\r\n\r\n /**\r\n * Emits the hull's locator sets UNTRANSFORMED - only the multi-hull offset\r\n * applied - for a placement child to own, so the object merges them at\r\n * runtime through the child's live transform and skeleton (Carbon\r\n * EveSOF.cpp:3384-3432 BuildHullLocalLocatorSets). Same-name sets across\r\n * hulls merge into one node; bone indices stay authored because they\r\n * address the CHILD's skeleton.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n BuildHullLocalLocatorSets(document, dna)\r\n {\r\n const bySetName = new Map();\r\n const result = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n if (!locators.length) continue;\r\n let target = bySetName.get(name);\r\n if (!target)\r\n {\r\n target = [];\r\n bySetName.set(name, target);\r\n result.push(document.AddNode(\"EveLocatorSets\", { name, locators: target }));\r\n }\r\n for (const locator of locators)\r\n {\r\n target.push(document.AddNode(\"Locator\", {\r\n position: [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n direction: arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1)\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n return result;\r\n }\r\n\r\n /** Merges same-name locator sets across all hulls in Carbon map order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocatorSets(document, rootFields, dna, offsets = [identityMatrix()], partTag = null)\r\n {\r\n const transforms = Array.isArray(offsets) && offsets.length !== 0\r\n ? offsets\r\n : [identityMatrix()];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n const locatorRefs = [];\r\n for (const offset of transforms)\r\n {\r\n for (const locator of locators)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n const composed = mat4.multiply(\r\n mat4.create(),\r\n arrayValue(offset, identityMatrix()),\r\n transform\r\n );\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(composed, rotation, position, ignoredScale);\r\n locatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1),\r\n ...(partTag === null ? {} : { partTag: normalizePartTag(partTag) })\r\n }));\r\n }\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, name, locatorRefs);\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Overwrites turret shader constants or vector parameters with the\r\n * primary-area material selected by a faction catalog entry.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromFaction(turretSet, factionName)\r\n {\r\n const factionData = this.dataMgr.GetFactionData(factionName);\r\n if (!factionData) return;\r\n const genericData = this.dataMgr.GetGenericData();\r\n turretSet.ApplySofTurretMaterial(parameterName => findTurretFactionParameter(\r\n this.dataMgr,\r\n genericData,\r\n factionData,\r\n parameterName\r\n ));\r\n }\r\n\r\n /**\r\n * Parses the parent DNA and applies its faction turret values to matching\r\n * shader constants or vector parameters.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromDNA(turretSet, dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return;\r\n turretSet.ApplySofTurretMaterial(parameterName => dna.GetFactionTurretParameters(parameterName));\r\n }\r\n\r\n}\r\n\r\nfunction findTurretFactionParameter(dataMgr, genericData, factionData, parameterName)\r\n{\r\n const prefixes = genericData?.materialPrefixes ?? [];\r\n const info = new EveSOFUtilsParameterName(prefixes, parameterName);\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialIndex = info.GetMaterialIdx();\r\n const usageIndex = Number(\r\n factionData.materialUsageList?.[materialIndex] ?? materialIndex\r\n );\r\n info.ChangeMaterialIdx(genericData, usageIndex);\r\n }\r\n return findTurretAreaParameter(\r\n dataMgr,\r\n factionData.colorData?.colors ?? [],\r\n factionData.areaMaterials,\r\n EveSOFDataArea.AreaType.TYPE_PRIMARY,\r\n info\r\n );\r\n}\r\n\r\nfunction findTurretAreaParameter(dataMgr, colors, areaMaterials, areaType, info)\r\n{\r\n if (!areaMaterials) return null;\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialName = areaMaterials.materialNames?.get(\r\n `${areaType}:${info.GetMaterialIdx()}`\r\n );\r\n const value = dataMgr.GetMaterialData(materialName)?.parameters?.get(info.GetShortName());\r\n if (value) return value;\r\n }\r\n else\r\n {\r\n const colorType = areaMaterials.glowColor?.get(`${areaType}:${info.GetFullName()}`);\r\n if (colorType !== undefined) return colors[colorType] ?? null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction arrayValue(value, fallback)\r\n{\r\n return value ? Array.from(value) : fallback.slice();\r\n}\r\n\r\nfunction composeChildPlacement(source, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n arrayValue(source.translation, [0, 0, 0]),\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n translation: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n origin: 1\r\n };\r\n}\r\n\r\nfunction createInheritProperties(document, dna)\r\n{\r\n const colorSet = dna.GetColorSet();\r\n const fields = {};\r\n for (let index = 0; index < INHERIT_COLOR_PROPERTIES.length; index++)\r\n {\r\n fields[INHERIT_COLOR_PROPERTIES[index]] = arrayValue(colorSet?.[index], [0, 0, 0, 0]);\r\n }\r\n return document.AddNode(\"EveChildInheritProperties\", fields);\r\n}\r\n\r\nfunction collectDynamicEmitterRefs(document, rootRef, target)\r\n{\r\n const result = [];\r\n const seen = new Set();\r\n const addEmitters = node =>\r\n {\r\n for (const ref of Array.isArray(node?.fields?.particleEmitters) ? node.fields.particleEmitters : [])\r\n {\r\n const emitter = document.GetNode(Number(ref?.$ref));\r\n if (emitter?.kind === \"Tr2DynamicEmitter\" && !seen.has(emitter.id))\r\n {\r\n seen.add(emitter.id);\r\n result.push({ $ref: emitter.id });\r\n }\r\n }\r\n };\r\n const visitTransform = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`transform:${node.id}`)) return;\r\n seen.add(`transform:${node.id}`);\r\n addEmitters(node);\r\n for (const childRef of Array.isArray(node.fields?.children) ? node.fields.children : [])\r\n {\r\n const child = document.GetNode(Number(childRef?.$ref));\r\n if (child?.kind === \"EveTransform\") visitTransform(childRef);\r\n }\r\n };\r\n const visitEffectChild = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`effect:${node.id}`)) return;\r\n seen.add(`effect:${node.id}`);\r\n if (node.kind === \"EveChildParticleSystem\")\r\n {\r\n addEmitters(node);\r\n }\r\n else if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const childRef of Array.isArray(node.fields?.objects) ? node.fields.objects : [])\r\n {\r\n visitEffectChild(childRef);\r\n }\r\n }\r\n };\r\n if (target === \"children\") visitTransform(rootRef);\r\n else visitEffectChild(rootRef);\r\n return result;\r\n}\r\n\r\nfunction scalarKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: Number(value),\r\n leftTangent: 0,\r\n rightTangent: 0,\r\n id: 0,\r\n interpolation: 1,\r\n tangentType: 1\r\n };\r\n}\r\n\r\nfunction quaternionKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: arrayValue(value, [0, 0, 0, 1]),\r\n id: 0,\r\n interpolation: 1\r\n };\r\n}\r\n\r\nfunction identityMatrix()\r\n{\r\n return [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ];\r\n}\r\n\r\nfunction decomposeCarbonMatrix(matrix, rotation, translation, scaling)\r\n{\r\n const scaleX = Math.hypot(matrix[0], matrix[1], matrix[2]);\r\n const scaleY = Math.hypot(matrix[4], matrix[5], matrix[6]);\r\n const scaleZ = Math.hypot(matrix[8], matrix[9], matrix[10]);\r\n scaling[0] = scaleX;\r\n scaling[1] = scaleY;\r\n scaling[2] = scaleZ;\r\n translation[0] = matrix[12];\r\n translation[1] = matrix[13];\r\n translation[2] = matrix[14];\r\n\r\n if (scaleX === 0 || scaleY === 0 || scaleZ === 0)\r\n {\r\n rotation[0] = 0;\r\n rotation[1] = 0;\r\n rotation[2] = 0;\r\n rotation[3] = 1;\r\n return matrix;\r\n }\r\n\r\n const normalized = mat4.create();\r\n normalized[0] = matrix[0] / scaleX;\r\n normalized[1] = matrix[1] / scaleX;\r\n normalized[2] = matrix[2] / scaleX;\r\n normalized[4] = matrix[4] / scaleY;\r\n normalized[5] = matrix[5] / scaleY;\r\n normalized[6] = matrix[6] / scaleY;\r\n normalized[8] = matrix[8] / scaleZ;\r\n normalized[9] = matrix[9] / scaleZ;\r\n normalized[10] = matrix[10] / scaleZ;\r\n mat4.getRotation(rotation, normalized);\r\n return matrix;\r\n}\r\n\r\nfunction addOffset(target, value)\r\n{\r\n if (!value) return;\r\n target[0] += Number(value[0] ?? 0);\r\n target[1] += Number(value[1] ?? 0);\r\n target[2] += Number(value[2] ?? 0);\r\n}\r\n\r\nfunction getLightKind(value)\r\n{\r\n switch (Number(value))\r\n {\r\n case EveSOFDataHullLightSetItem.LightType.POINT_LIGHT:\r\n return { className: \"Tr2PointLight\", type: 1, isDynamic: false };\r\n case EveSOFDataHullLightSetItem.LightType.TEXTURED_POINT_LIGHT:\r\n return { className: \"Tr2TexturedPointLight\", type: 1, isDynamic: true };\r\n case EveSOFDataHullLightSetItem.LightType.SPOT_LIGHT:\r\n return { className: \"Tr2SpotLight\", type: 2, isDynamic: false };\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction saturateColor(value, saturation)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n if (Number(saturation) === 1) return source;\r\n const intensity = source[0] * 0.299 + source[1] * 0.587 + source[2] * 0.114;\r\n const factor = Math.max(0, Number(saturation));\r\n return [\r\n intensity + (source[0] - intensity) * factor,\r\n intensity + (source[1] - intensity) * factor,\r\n intensity + (source[2] - intensity) * factor,\r\n source[3]\r\n ];\r\n}\r\n\r\nfunction multiplyColor(value, multiplier)\r\n{\r\n return arrayValue(value, [0, 0, 0, 0]).map(component => component * Number(multiplier ?? 0));\r\n}\r\n\r\nfunction modifyColor(value, saturation, brightness)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n const divisor = Math.max(source[0], source[1], source[2], 1);\r\n const red = source[0] / divisor;\r\n const green = source[1] / divisor;\r\n const blue = source[2] / divisor;\r\n const maximum = Math.max(red, green, blue);\r\n const minimum = Math.min(red, green, blue);\r\n const delta = maximum - minimum;\r\n let hue = 0;\r\n let hsvSaturation = 0;\r\n if (delta !== 0)\r\n {\r\n hsvSaturation = maximum !== 0 ? delta / maximum : 0;\r\n if (red === maximum) hue = (green - blue) / delta;\r\n else if (green === maximum) hue = 2 + (blue - red) / delta;\r\n else hue = 4 + (red - green) / delta;\r\n hue *= 60;\r\n if (hue < 0) hue += 360;\r\n }\r\n hsvSaturation *= Number(saturation);\r\n const hsvValue = maximum * Number(brightness);\r\n return [...hsvToRgb(hue, hsvSaturation, hsvValue), source[3]];\r\n}\r\n\r\nfunction hsvToRgb(hue, saturation, value)\r\n{\r\n const nextSaturation = saturation === 0 ? 1e-9 : saturation;\r\n const sector = hue / 60;\r\n const index = Math.floor(sector);\r\n const fraction = sector - index;\r\n const p = value * (1 - nextSaturation);\r\n const q = value * (1 - nextSaturation * fraction);\r\n const t = value * (1 - nextSaturation * (1 - fraction));\r\n switch (index)\r\n {\r\n case 0: return [value, t, p];\r\n case 1: return [q, value, p];\r\n case 2: return [p, value, t];\r\n case 3: return [p, q, value];\r\n case 4: return [t, p, value];\r\n default: return [value, p, q];\r\n }\r\n}\r\n\r\nfunction getPlaneSetEffectPath(usage, skinned)\r\n{\r\n switch (Number(usage))\r\n {\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_STANDARD:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HAZE:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planeglow.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planeglow.fx\";\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planehologram.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planehologram.fx\";\r\n default:\r\n return \"\";\r\n }\r\n}\r\n\r\nfunction getSpriteLinePositions(item)\r\n{\r\n const result = [];\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n const rotation = arrayValue(item.rotation, [0, 0, 0, 1]);\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n if (item.isCircle)\r\n {\r\n const count = Math.max(0, Math.trunc(Number(item.spacing ?? 1)));\r\n for (let index = 0; index < count; index++)\r\n {\r\n const angle = index * Math.PI * 2 / Number(item.spacing);\r\n const point = vec3.transformQuat(\r\n vec3.create(),\r\n [scaling[0] * Math.sin(angle), 0, scaling[1] * Math.cos(angle)],\r\n rotation\r\n );\r\n vec3.add(point, point, position);\r\n result.push(Array.from(point));\r\n }\r\n }\r\n else\r\n {\r\n const count = Math.max(0, Math.trunc(Number(scaling[0] ?? 0)));\r\n const direction = vec3.transformQuat(vec3.create(), [1, 0, 0], rotation);\r\n const point = position.slice();\r\n for (let index = 0; index < count; index++)\r\n {\r\n result.push(point.slice());\r\n point[0] += Number(item.spacing ?? 1) * direction[0];\r\n point[1] += Number(item.spacing ?? 1) * direction[1];\r\n point[2] += Number(item.spacing ?? 1) * direction[2];\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction addBannerItem(document, source, hullOffset, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(source.position?.[0] ?? 0) + hullOffset[0],\r\n Number(source.position?.[1] ?? 0) + hullOffset[1],\r\n Number(source.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n ref: document.AddNode(\"EveBannerItem\", {\r\n bone: Number(source.bone ?? -1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n angleX: Number(source.angleX ?? 0),\r\n angleY: Number(source.angleY ?? 0),\r\n reference: Number(source.reference ?? 0) | 0\r\n }),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation)\r\n };\r\n}\r\n\r\nfunction addBannerSet(document, rootFields, dna, usage, banners, lights, usageCount)\r\n{\r\n const shader = dna.GetGenericBannerShaderData() ?? {\r\n shader: \"\",\r\n defaultParameters: new Map(),\r\n defaultTextures: new Map()\r\n };\r\n const constParameters = sortedKeys(shader.defaultParameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: arrayValue(shader.defaultParameters.get(name), [0, 0, 0, 0])\r\n }));\r\n const resources = sortedKeys(shader.defaultTextures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: String(shader.defaultTextures.get(name)?.resFilePath ?? \"\")\r\n }));\r\n const imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"\"\r\n });\r\n resources.push(imageMap);\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: String(shader.shader ?? \"\"),\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n rootFields.attachments.push(document.AddNode(\"EveBannerSet\", {\r\n banners,\r\n effect,\r\n isPickable: false,\r\n display: true,\r\n key: usage,\r\n lights,\r\n primaryTextureParameter: imageMap\r\n }));\r\n rootFields.externalParameters.push(document.AddNode(\"Tr2ExternalParameter\", {\r\n name: usage >= 0 && usage < usageCount ? BANNER_EXTERNAL_PARAMETER_NAMES[usage] : \"\",\r\n destinationObject: imageMap,\r\n destinationAttribute: \"resourcePath\"\r\n }));\r\n}\r\n\r\nfunction buildMeshArea(document, dna, area, shaderData, batchType, meshIndexOffset, resolveTexturePath, alphaCutoutShadowsEnabled = false, emitArea = true)\r\n{\r\n // FillMeshAreaVector's runtime state (EveSOF.cpp:576-592,668-672): opaque\r\n // areas cast shadows, decal areas follow the alpha-cutout setting, all other\r\n // batch types do not; depth generation comes from the generic shader data.\r\n let castsShadows = false;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE) castsShadows = true;\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_DECAL) castsShadows = alphaCutoutShadowsEnabled;\r\n const options = [];\r\n if (batchType === TriBatchType.TRIBATCHTYPE_DECAL)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_CLIP\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_TRANSPARENT\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_OPAQUE\"\r\n }));\r\n }\r\n\r\n const patternLayerCount = dna.GetPatternLayerCount();\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_PPT_ENABLED\",\r\n value: patternLayerCount > 0 ? \"SOPPT_ENABLED\" : \"SOPPT_DISABLED\"\r\n }));\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(area.areaType, name, area.parameters, area.blockedMaterials);\r\n if (value)\r\n {\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n parameterNames.add(name);\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceRefs = new Map();\r\n for (const name of sortedKeys(area.textures))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(area.textures.get(name).resFilePath)\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n const samplerOverrides = [];\r\n const samplerNames = new Set();\r\n const pattern = patternLayerCount > 0 ? dna.GetPatternApplicationData() : null;\r\n for (let layerIndex = 0; layerIndex < patternLayerCount; layerIndex++)\r\n {\r\n const layer = dna.GetPatternLayerData(pattern, layerIndex);\r\n if (!dna.IsPatternLayerApplicableToArea(layer, area.areaType)) continue;\r\n if (!resourceRefs.has(layer.textureName))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name: layer.textureName,\r\n resourcePath: layer.textureResFilePath\r\n });\r\n resourceRefs.set(layer.textureName, ref);\r\n resources.push(ref);\r\n }\r\n const samplerName = `${layer.textureName}Sampler`;\r\n if (!samplerNames.has(samplerName))\r\n {\r\n samplerNames.add(samplerName);\r\n samplerOverrides.push(document.AddNode(\"Tr2SamplerOverride\", {\r\n name: samplerName,\r\n addressU: layer.projectionAddressModeU,\r\n addressV: layer.projectionAddressModeV,\r\n addressW: 1,\r\n filter: 3,\r\n mipFilter: 2,\r\n lodBias: 0,\r\n maxMipLevel: 0,\r\n maxAnisotropy: 4\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceRefs.has(name)) continue;\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n name: area.name,\r\n effectFilePath: dna.GetCompleteShaderPath(area.shader),\r\n options,\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides\r\n });\r\n const fields = {\r\n _areaType: Number(area.areaType ?? 0),\r\n name: area.name,\r\n index: area.index + meshIndexOffset,\r\n count: area.count,\r\n reversed: false,\r\n // Decal areas fold into opaque as one-sided alpha cutouts\r\n // (Carbon EveSOF.cpp:883); occluder backface tests skip them.\r\n alphaCutout: batchType === TriBatchType.TRIBATCHTYPE_DECAL,\r\n useSHLighting: false,\r\n castsShadows,\r\n generateDepthArea: Boolean(shaderData.doGenerateDepthArea),\r\n // Carbon limits distortion areas to high LOD after fill (EveSOF.cpp:2149-2153).\r\n minLod: batchType === TriBatchType.TRIBATCHTYPE_DISTORTION ? TR2_LOD_HIGH : -1,\r\n effect\r\n };\r\n return {\r\n ref: emitArea ? document.AddNode(\"Tr2MeshArea\", fields) : null,\r\n fields,\r\n effect,\r\n generateDepthArea: shaderData.doGenerateDepthArea,\r\n resourceRefs\r\n };\r\n}\r\n\r\nfunction createLayoutContainerFields(name)\r\n{\r\n return {\r\n name: String(name ?? \"\"),\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: []\r\n };\r\n}\r\n\r\nfunction ensureSpaceObjectBuildFields(fields)\r\n{\r\n for (const name of [\r\n \"effectChildren\",\r\n \"children\",\r\n \"curveSets\",\r\n \"attachments\",\r\n \"decals\",\r\n \"customMasks\",\r\n \"lights\",\r\n \"externalParameters\",\r\n \"controllers\",\r\n \"observers\",\r\n \"locators\",\r\n \"locatorSets\"\r\n ])\r\n {\r\n if (!Array.isArray(fields[name])) fields[name] = [];\r\n }\r\n if (!Object.hasOwn(fields, \"impactOverlay\")) fields.impactOverlay = null;\r\n}\r\n\r\nfunction normalizePartTag(value)\r\n{\r\n const number = Number(value);\r\n if (!Number.isInteger(number) || number < 0 || number > 0xffffffff)\r\n {\r\n throw new RangeError(\"EveSOF partTag must be an unsigned 32-bit integer\");\r\n }\r\n return number >>> 0;\r\n}\r\n\r\nfunction normalizePlacementTransform(value)\r\n{\r\n if (!value || value.length !== 16)\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform must contain 16 values\");\r\n }\r\n const result = Array.from(value, Number);\r\n if (result.some(item => !Number.isFinite(item)))\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform values must be finite numbers\");\r\n }\r\n return result;\r\n}\r\n\r\nfunction replacePlainValues(target, values)\r\n{\r\n if (!target || typeof target !== \"object\" || Array.isArray(target))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChild requires a CjsModel or plain model-values root\");\r\n }\r\n for (const key of Object.keys(target)) delete target[key];\r\n Object.assign(target, values);\r\n}\r\n\r\nfunction findSharedInstancedMeshes(document, rootFields)\r\n{\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildInstancedMeshes\")\r\n {\r\n if (!Array.isArray(node.fields.meshes)) node.fields.meshes = [];\r\n return { ref, meshes: node.fields.meshes };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction ensureSharedInstancedMeshes(document, rootFields)\r\n{\r\n const existing = findSharedInstancedMeshes(document, rootFields);\r\n if (existing) return existing;\r\n const meshes = [];\r\n const ref = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes\r\n });\r\n rootFields.effectChildren.push(ref);\r\n return { ref, meshes };\r\n}\r\n\r\nfunction stampDocumentChildPartTag(document, ref, partTag, visited = new Set())\r\n{\r\n const id = Number(ref?.$ref);\r\n if (!Number.isInteger(id) || visited.has(id)) return;\r\n visited.add(id);\r\n const node = document.GetNode(id);\r\n if (!node) return;\r\n node.fields.partTag = partTag;\r\n if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const child of node.fields.objects ?? [])\r\n {\r\n stampDocumentChildPartTag(document, child, partTag, visited);\r\n }\r\n }\r\n}\r\n\r\nfunction layoutContainerIsEmpty(fields)\r\n{\r\n return [\"objects\", \"curveSets\", \"attachments\", \"observers\", \"lights\", \"controllers\"]\r\n .every(name => !Array.isArray(fields[name]) || fields[name].length === 0);\r\n}\r\n\r\nfunction updateLayoutBounds(rootFields, dna, occurrences)\r\n{\r\n let sphere = [\r\n ...arrayValue(rootFields.boundingSphereCenter, [0, 0, 0]),\r\n Number(rootFields.boundingSphereRadius ?? -1)\r\n ];\r\n let ellipsoidBounds = ellipsoidToBounds(\r\n rootFields.shapeEllipsoidCenter,\r\n rootFields.shapeEllipsoidRadius\r\n );\r\n const sourceSphere = dna.GetHullBoundingSphere();\r\n const sourceEllipsoid = dna.GetHullShapeEllipsoid();\r\n for (const occurrence of occurrences)\r\n {\r\n const transform = arrayValue(occurrence.transform, identityMatrix());\r\n const transformedSphere = transformLayoutSphere(sourceSphere, transform);\r\n if (occurrence.extendsBoundingSphere)\r\n {\r\n sphere = includeLayoutSphere(sphere, transformedSphere);\r\n }\r\n if (occurrence.extendsShieldEllipsoid)\r\n {\r\n const bounds = transformLayoutEllipsoid(sourceEllipsoid, transformedSphere, transform);\r\n ellipsoidBounds = includeBounds(ellipsoidBounds, bounds);\r\n }\r\n }\r\n rootFields.boundingSphereCenter = sphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = sphere[3];\r\n if (ellipsoidBounds)\r\n {\r\n rootFields.shapeEllipsoidCenter = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidRadius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n }\r\n}\r\n\r\nfunction transformLayoutSphere(source, transform)\r\n{\r\n if (!source || Number(source[3]) < 0) return null;\r\n const center = vec3.transformMat4(vec3.create(), source, transform);\r\n const scale = mat4.getScaling(vec3.create(), transform);\r\n const maxScale = Math.max(Math.abs(scale[0]), Math.abs(scale[1]), Math.abs(scale[2]));\r\n return [center[0], center[1], center[2], Number(source[3]) * maxScale];\r\n}\r\n\r\nfunction includeLayoutSphere(current, next)\r\n{\r\n if (!next || next[3] < 0) return current;\r\n if (!current || current[3] < 0) return next.slice();\r\n const dx = next[0] - current[0];\r\n const dy = next[1] - current[1];\r\n const dz = next[2] - current[2];\r\n const distance = Math.hypot(dx, dy, dz);\r\n if (current[3] >= distance + next[3]) return current;\r\n if (next[3] >= distance + current[3]) return next.slice();\r\n const radius = (distance + current[3] + next[3]) * 0.5;\r\n if (distance === 0) return [current[0], current[1], current[2], radius];\r\n const factor = (radius - current[3]) / distance;\r\n return [\r\n current[0] + dx * factor,\r\n current[1] + dy * factor,\r\n current[2] + dz * factor,\r\n radius\r\n ];\r\n}\r\n\r\nfunction ellipsoidToBounds(centerValue, radiusValue)\r\n{\r\n const center = arrayValue(centerValue, [0, 0, 0]);\r\n const radius = arrayValue(radiusValue, [-1, -1, -1]);\r\n if (radius.some(value => value < 0)) return null;\r\n return {\r\n min: center.map((value, index) => value - radius[index]),\r\n max: center.map((value, index) => value + radius[index])\r\n };\r\n}\r\n\r\nfunction transformLayoutEllipsoid(source, fallbackSphere, transform)\r\n{\r\n const sourceBounds = ellipsoidToBounds(source?.center, source?.radius);\r\n if (!sourceBounds)\r\n {\r\n if (!fallbackSphere) return null;\r\n return {\r\n min: fallbackSphere.slice(0, 3).map(value => value - fallbackSphere[3]),\r\n max: fallbackSphere.slice(0, 3).map(value => value + fallbackSphere[3])\r\n };\r\n }\r\n let result = null;\r\n for (const x of [sourceBounds.min[0], sourceBounds.max[0]])\r\n {\r\n for (const y of [sourceBounds.min[1], sourceBounds.max[1]])\r\n {\r\n for (const z of [sourceBounds.min[2], sourceBounds.max[2]])\r\n {\r\n const point = vec3.transformMat4(vec3.create(), [x, y, z], transform);\r\n result = includeBounds(result, { min: Array.from(point), max: Array.from(point) });\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction includeBounds(current, next)\r\n{\r\n if (!next) return current;\r\n if (!current) return { min: next.min.slice(), max: next.max.slice() };\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n current.min[axis] = Math.min(current.min[axis], next.min[axis]);\r\n current.max[axis] = Math.max(current.max[axis], next.max[axis]);\r\n }\r\n return current;\r\n}\r\n\r\nfunction groupLayoutPlacements(placements)\r\n{\r\n const groups = new Map();\r\n for (const placement of placements)\r\n {\r\n if (!groups.has(placement.batchKey)) groups.set(placement.batchKey, []);\r\n groups.get(placement.batchKey).push(placement);\r\n }\r\n return groups.values();\r\n}\r\n\r\nfunction addEffectShaderOption(document, effectRef, name, value)\r\n{\r\n const effect = document.GetNode(effectRef?.$ref);\r\n if (!effect) return;\r\n if (!Array.isArray(effect.fields.options)) effect.fields.options = [];\r\n const duplicate = effect.fields.options.some(ref => {\r\n const option = document.GetNode(ref?.$ref);\r\n return option?.fields?.name === name;\r\n });\r\n if (!duplicate)\r\n {\r\n effect.fields.options.push(document.AddNode(\"Tr2ShaderOption\", { name, value }));\r\n }\r\n}\r\n\r\nfunction addMeshShaderOption(document, meshFields, name, value)\r\n{\r\n for (const field of [\"opaqueAreas\", \"transparentAreas\", \"additiveAreas\", \"distortionAreas\", \"depthAreas\"])\r\n {\r\n for (const areaRef of meshFields[field] ?? [])\r\n {\r\n const area = document.GetNode(areaRef?.$ref);\r\n addEffectShaderOption(document, area?.fields?.effect, name, value);\r\n }\r\n }\r\n}\r\n\r\nfunction addChildMeshShaderOption(document, childFields, name, value)\r\n{\r\n const mesh = document.GetNode(childFields.mesh?.$ref);\r\n if (mesh) addMeshShaderOption(document, mesh.fields, name, value);\r\n for (const decalRef of childFields.decals ?? [])\r\n {\r\n const decal = document.GetNode(decalRef?.$ref);\r\n addEffectShaderOption(document, decal?.fields?.decalEffect, name, value);\r\n }\r\n}\r\n\r\nfunction propagateInstancedMeshInstances(sourceInstances, requestedOffsets)\r\n{\r\n const offsets = Array.isArray(requestedOffsets) && requestedOffsets.length\r\n ? requestedOffsets.map(value => arrayValue(value, identityMatrix()))\r\n : [identityMatrix()];\r\n const identityFastPath = offsets.length === 1 && isIdentityMatrix(offsets[0]);\r\n const instances = [];\r\n const instanceTransforms = [];\r\n if (identityFastPath)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n instances.push(clonePackedInstance(source));\r\n instanceTransforms.push(Array.from(unpackInstanceMatrix(source)));\r\n }\r\n return { instances, instanceTransforms };\r\n }\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n const combined = mat4.multiply(\r\n mat4.create(),\r\n offset,\r\n unpackInstanceMatrix(source)\r\n );\r\n instances.push(packInstanceMatrix(combined, source.boneIndex));\r\n // Carbon retains the transposed product in this auxiliary list on the\r\n // general path, unlike its ordinary-matrix identity fast path.\r\n instanceTransforms.push(Array.from(mat4.transpose(mat4.create(), combined)));\r\n }\r\n }\r\n return { instances, instanceTransforms };\r\n}\r\n\r\nfunction clonePackedInstance(source)\r\n{\r\n return {\r\n transform0: arrayValue(source.transform0, [1, 0, 0, 0]),\r\n transform1: arrayValue(source.transform1, [0, 1, 0, 0]),\r\n transform2: arrayValue(source.transform2, [0, 0, 1, 0]),\r\n lastTransform0: arrayValue(source.lastTransform0, source.transform0 ?? [1, 0, 0, 0]),\r\n lastTransform1: arrayValue(source.lastTransform1, source.transform1 ?? [0, 1, 0, 0]),\r\n lastTransform2: arrayValue(source.lastTransform2, source.transform2 ?? [0, 0, 1, 0]),\r\n boneIndex: Number(source.boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction unpackInstanceMatrix(source)\r\n{\r\n const t0 = arrayValue(source.transform0, [1, 0, 0, 0]);\r\n const t1 = arrayValue(source.transform1, [0, 1, 0, 0]);\r\n const t2 = arrayValue(source.transform2, [0, 0, 1, 0]);\r\n return new Float32Array([\r\n t0[0], t1[0], t2[0], 0,\r\n t0[1], t1[1], t2[1], 0,\r\n t0[2], t1[2], t2[2], 0,\r\n t0[3], t1[3], t2[3], 1\r\n ]);\r\n}\r\n\r\nfunction packInstanceMatrix(matrix, boneIndex)\r\n{\r\n const transform0 = [matrix[0], matrix[4], matrix[8], matrix[12]];\r\n const transform1 = [matrix[1], matrix[5], matrix[9], matrix[13]];\r\n const transform2 = [matrix[2], matrix[6], matrix[10], matrix[14]];\r\n return {\r\n transform0,\r\n transform1,\r\n transform2,\r\n lastTransform0: transform0.slice(),\r\n lastTransform1: transform1.slice(),\r\n lastTransform2: transform2.slice(),\r\n boneIndex: Number(boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction isIdentityMatrix(value)\r\n{\r\n const identity = identityMatrix();\r\n return identity.every((item, index) => Number(value[index]) === item);\r\n}\r\n\r\nfunction translationBounds(instances)\r\n{\r\n const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];\r\n const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];\r\n for (const instance of instances)\r\n {\r\n const point = [\r\n Number(instance.transform0?.[3] ?? 0),\r\n Number(instance.transform1?.[3] ?? 0),\r\n Number(instance.transform2?.[3] ?? 0)\r\n ];\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n min[axis] = Math.min(min[axis], point[axis]);\r\n max[axis] = Math.max(max[axis], point[axis]);\r\n }\r\n }\r\n return { min, max };\r\n}\r\n\r\nfunction maximumInstanceScale(instances)\r\n{\r\n let maxLengthSquared = 0;\r\n for (const instance of instances)\r\n {\r\n for (const row of [instance.transform0, instance.transform1, instance.transform2])\r\n {\r\n const value = arrayValue(row, [0, 0, 0, 0]);\r\n maxLengthSquared = Math.max(\r\n maxLengthSquared,\r\n value[0] * value[0] + value[1] * value[1] + value[2] * value[2]\r\n );\r\n }\r\n }\r\n return Math.sqrt(maxLengthSquared);\r\n}\r\n\r\nfunction createInstancedMeshArea(document, dna, source, shaderData, resolveTexturePath)\r\n{\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(EveSOFDataArea.AreaType.TYPE_PRIMARY, name);\r\n if (!value || parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n for (const name of sortedKeys(source.textures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(source.textures.get(name).resFilePath)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n }));\r\n }\r\n\r\n const option = document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n value: \"SOIA_ENABLED\"\r\n });\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(source.shader),\r\n options: [option],\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides: []\r\n });\r\n return document.AddNode(\"Tr2MeshArea\", {\r\n name: \"hull\",\r\n index: 0,\r\n count: 1,\r\n reversed: false,\r\n useSHLighting: false,\r\n effect\r\n });\r\n}\r\n\r\n// Carbon EveSOF::CreateBoosterEffect (EveSOF.cpp:2853-2899, EveSOF.h:145):\r\n// the path defaults to the ship booster shader, and per-hull DNA parameters\r\n// are added BEFORE the race-shape parameters, matching Carbon's insertion\r\n// order. Only SetupChildBoosters passes overrides (with\r\n// EveChildBoosterSet.DEFAULT_EFFECT_PATH as its own fallback); ship boosters\r\n// always use the defaults.\r\nfunction createBoosterEffect(document, race, lodOption,\r\n effectPath = \"res:/Graphics/Effect/Managed/Space/Booster/BoosterVolumetric.fx\",\r\n parameters = null, textureOverrides = null)\r\n{\r\n const constParameters = [];\r\n const add = (name, value) => {\r\n const vector = Array.isArray(value) || ArrayBuffer.isView(value)\r\n ? arrayValue(value, [0, 0, 0, 0])\r\n : [Number(value ?? 0), Number(value ?? 0), Number(value ?? 0), Number(value ?? 0)];\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", { name, value: vector }));\r\n };\r\n if (parameters)\r\n {\r\n for (const [ name, value ] of parameters) add(name, value);\r\n }\r\n add(\"NoiseSpeed0\", race.shape0.noiseSpeed);\r\n add(\"NoiseAmplitudeStart0\", race.shape0.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd0\", race.shape0.noiseAmplitureEnd);\r\n add(\"NoiseFrequency0\", race.shape0.noiseFrequency);\r\n add(\"Color0\", race.shape0.color);\r\n add(\"NoiseSpeed1\", race.shape1.noiseSpeed);\r\n add(\"NoiseAmplitudeStart1\", race.shape1.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd1\", race.shape1.noiseAmplitureEnd);\r\n add(\"Color1\", race.shape1.color);\r\n add(\"WarpNoiseSpeed0\", race.warpShape0.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart0\", race.warpShape0.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd0\", race.warpShape0.noiseAmplitureEnd);\r\n add(\"WarpNoiseFrequency0\", race.warpShape0.noiseFrequency);\r\n add(\"WarpColor0\", race.warpShape0.color);\r\n add(\"WarpNoiseSpeed1\", race.warpShape1.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart1\", race.warpShape1.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd1\", race.warpShape1.noiseAmplitureEnd);\r\n add(\"WarpColor1\", race.warpShape1.color);\r\n add(\"ShapeAtlasSize\", [race.shapeAtlasHeight, race.shapeAtlasCount, 0, 0]);\r\n add(\"BoosterScale\", race.scale);\r\n\r\n // Per-hull texture overrides replace a default by name or append (Carbon\r\n // SetResourceTexture2D semantics, EveSOF.cpp:3095-3099).\r\n const textures = new Map([\r\n [ \"ShapeMap\", String(race.shapeAtlasResPath ?? \"\") ],\r\n [ \"GradientMap0\", String(race.gradient0ResPath ?? \"\") ],\r\n [ \"GradientMap1\", String(race.gradient1ResPath ?? \"\") ],\r\n [ \"NoiseMap\", \"res:/Texture/Global/noise32cube_volume.dds\" ]\r\n ]);\r\n if (textureOverrides)\r\n {\r\n for (const [ name, record ] of textureOverrides)\r\n {\r\n textures.set(String(name), String(record?.resFilePath ?? record ?? \"\"));\r\n }\r\n }\r\n\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: effectPath,\r\n options: [document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"BOOSTER_LOD\",\r\n value: lodOption\r\n })],\r\n constParameters,\r\n parameters: [],\r\n resources: [...textures].map(([ name, resourcePath ]) =>\r\n document.AddNode(\"TriTextureParameter\", { name, resourcePath })),\r\n samplerOverrides: []\r\n });\r\n}\r\n\r\nfunction mergeDocumentLocatorSet(document, rootFields, name, locatorRefs)\r\n{\r\n if (locatorRefs.length === 0) return null;\r\n for (const ref of rootFields.locatorSets)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveLocatorSets\" && node.fields?.name === name)\r\n {\r\n node.fields.locators.push(...locatorRefs);\r\n return ref;\r\n }\r\n }\r\n const ref = document.AddNode(\"EveLocatorSets\", { name, locators: locatorRefs });\r\n rootFields.locatorSets.push(ref);\r\n return ref;\r\n}\r\n\r\nfunction sortedKeys(map)\r\n{\r\n return [...map.keys()].sort((a, b) => a.localeCompare(b));\r\n}\r\n\r\nfunction selectDecalIndexBuffers(item, hullCount, combinedGeometryPath)\r\n{\r\n if (hullCount === 1) return item.indexBuffers.map(indices => indices.slice());\r\n for (const entry of item.multiHullIndexBuffers)\r\n {\r\n if (entry.combinedGeometryResPath === combinedGeometryPath)\r\n {\r\n return entry.indexBuffers.map(indices => indices.slice());\r\n }\r\n }\r\n return [];\r\n}\r\n\r\nfunction effectParameters(document, parameters)\r\n{\r\n return sortedKeys(parameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(parameters.get(name))\r\n }));\r\n}\r\n\r\nfunction effectResources(document, textures)\r\n{\r\n return sortedKeys(textures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: textures.get(name).resFilePath\r\n }));\r\n}\r\n\r\nfunction createImpactEmitter(document, values)\r\n{\r\n const emitterData = {\r\n angle: Number(values.angle ?? 0),\r\n innerAngle: Number(values.innerAngle ?? 0),\r\n minSpeed: Number(values.minMaxSpeed?.[0] ?? 0),\r\n maxSpeed: Number(values.minMaxSpeed?.[1] ?? 0)\r\n };\r\n const paramsData = {\r\n minLifeTime: Number(values.minMaxLifeTime?.[0] ?? 0),\r\n maxLifeTime: Number(values.minMaxLifeTime?.[1] ?? 0),\r\n sizes: [\r\n Number(values.sizes?.[0] ?? 0),\r\n Number(values.sizes?.[1] ?? 0),\r\n Number(values.sizes?.[2] ?? 0)\r\n ],\r\n sizeVariance: Number(values.sizes?.[3] ?? 0),\r\n colors: [0, 1, 2, 3].map(index => arrayValue(values.colors?.[index], [0, 0, 0, 0])),\r\n textureIndex: Number(values.textureIndex ?? 0) >>> 0,\r\n velocityStretchRotation: Number(values.velocityStretchRotation ?? 0),\r\n drag: Number(values.drag ?? 0),\r\n turbulenceAmplitude: Number(values.turbulenceAmplitude ?? 0),\r\n turbulenceFrequency: Number(values.turbulenceFrequency ?? 0) >>> 0,\r\n colorMidpoint: Number(values.colorMidpoint ?? 0)\r\n };\r\n return document.AddNode(\"Tr2GpuUniqueEmitter\", {\r\n rate: Number(values.rate ?? 0),\r\n angle: emitterData.angle,\r\n innerAngle: emitterData.innerAngle,\r\n minSpeed: emitterData.minSpeed,\r\n maxSpeed: emitterData.maxSpeed,\r\n minLifeTime: paramsData.minLifeTime,\r\n maxLifeTime: paramsData.maxLifeTime,\r\n sizes: paramsData.sizes,\r\n sizeVariance: paramsData.sizeVariance,\r\n color0: paramsData.colors[0],\r\n color1: paramsData.colors[1],\r\n color2: paramsData.colors[2],\r\n color3: paramsData.colors[3],\r\n textureIndex: paramsData.textureIndex,\r\n colorMidpoint: paramsData.colorMidpoint,\r\n velocityStretchRotation: paramsData.velocityStretchRotation,\r\n drag: paramsData.drag,\r\n turbulenceAmplitude: paramsData.turbulenceAmplitude,\r\n turbulenceFrequency: paramsData.turbulenceFrequency\r\n });\r\n}\r\n\r\n/**\r\n * Counts how many times each node is reached from a starting reference.\r\n *\r\n * Recursion stops at a node already seen, so a cycle terminates and every node\r\n * on it still records more than one visit — which is exactly the condition for\r\n * giving it an identity.\r\n */\r\nfunction CountDocumentVisits(value, nodeById, visits)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n return;\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n const seen = visits.get(id) ?? 0;\r\n visits.set(id, seen + 1);\r\n if (seen) return;\r\n\r\n const node = nodeById.get(id);\r\n if (!node) return;\r\n\r\n CountDocumentVisits(node.fields ?? {}, nodeById, visits);\r\n CountDocumentVisits(node.raw ?? {}, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n for (const item of value) CountDocumentVisits(item, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n }\r\n}\r\n\r\n/**\r\n * Rewrites one document value into its plain-values form.\r\n *\r\n * `emitted` maps a node id to the `_id` it was given on first emission, so a\r\n * later occurrence becomes `{ _ref }`. Ids are allocated in emission order\r\n * rather than reusing document ids, so the output does not carry the node\r\n * table's numbering as a hidden dependency.\r\n */\r\nfunction ProjectDocumentNode(value, nodeById, visits, emitted, state)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n\r\n if (emitted.has(id)) return { _ref: emitted.get(id) };\r\n\r\n const node = nodeById.get(id);\r\n if (!node) throw new TypeError(`EveSOF values projection found no node for ref ${id}.`);\r\n\r\n const projected = { _type: node.kind };\r\n\r\n if ((visits.get(id) ?? 0) > 1)\r\n {\r\n const valueId = state.nextId++;\r\n emitted.set(id, valueId);\r\n projected._id = valueId;\r\n }\r\n\r\n // `fields` and `raw` are transport envelopes rather than data: the reader\r\n // of a values graph sees one object whose properties are the node's.\r\n for (const [key, item] of Object.entries({ ...node.fields, ...node.raw }))\r\n {\r\n projected[key] = ProjectDocumentNode(item, nodeById, visits, emitted, state);\r\n }\r\n\r\n return projected;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n return value.map(item => ProjectDocumentNode(item, nodeById, visits, emitted, state));\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction cloneFields(fields)\r\n{\r\n return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, cloneValue(value)]));\r\n}\r\n\r\nfunction cloneValue(value)\r\n{\r\n if (Array.isArray(value)) return value.map(cloneValue);\r\n if (!value || typeof value !== \"object\") return value;\r\n return { ...value };\r\n}\r\n\r\n\r\nfunction createSwarmBehaviorFields(source)\r\n{\r\n if (!source) return null;\r\n const result = {};\r\n for (const name of SWARM_BEHAVIOR_FIELD_NAMES)\r\n {\r\n result[name] = Number(source[name]);\r\n }\r\n result.weightDeceleration = Number(source.weightDecelerate ?? source.weightDeceleration);\r\n return result;\r\n}\r\n\r\n\r\n\r\nfunction SofRequestKey(path, output)\r\n{\r\n return `${normalizeResourcePath(path)}\\0${output}`;\r\n}\r\n\r\nfunction CollectSofRequest(requests, path, output, role, context = null)\r\n{\r\n const normalizedPath = normalizeResourcePath(path);\r\n if (!normalizedPath) return null;\r\n const key = SofRequestKey(normalizedPath, output);\r\n if (!requests.has(key))\r\n {\r\n requests.set(key, { key, path: normalizedPath, output, role, context });\r\n }\r\n return key;\r\n}\r\n\r\nfunction IsCarbonDocument(value)\r\n{\r\n return value?.schema === \"carbon.document\"\r\n && Array.isArray(value.roots)\r\n && Array.isArray(value.nodes);\r\n}\r\n\r\n\r\n\r\nasync function ResolveSofDependency(load, path, role, results, resultKey = path)\r\n{\r\n try\r\n {\r\n const value = await load();\r\n results.set(resultKey, value);\r\n return value;\r\n }\r\n catch (cause)\r\n {\r\n const error = new Error(`EveSOF failed to resolve ${role} resource: ${path}`, { cause });\r\n error.code = \"EVE_SOF_RESOURCE_RESOLUTION_FAILED\";\r\n error.path = path;\r\n error.role = role;\r\n throw error;\r\n }\r\n}\r\n\r\n"],"names":["BUILD_CLASS_TYPES","Object","freeze","EveSOFDataHull","BuildClass","BUILDCLASS_SHIP","BUILDCLASS_MOBILE","BUILDCLASS_STATIONARY","BUILDCLASS_SWARM","BUILDCLASS_EXTENSION","SPACE_OBJECT_ROOT_KINDS","Set","DECAL_EFFECT_NAMES","BANNER_EXTERNAL_PARAMETER_NAMES","MIN_MESH_SCREEN_SIZE","TR2_LOD_HIGH","CHILD_TRANSFORM_KINDS","SPACE_OBJECT_CHILD_KINDS","OBJECT_RESOURCE_ROLE_GATES","controller","interfaceName","kinds","modelRotationCurve","modelTranslationCurve","WRONG_TYPE_CHILD","Symbol","descriptorClaimsInterface","descriptor","Array","isArray","implements","includes","INHERIT_COLOR_PROPERTIES","SWARM_BEHAVIOR_FIELD_NAMES","SOF_INSTANCE_LAYOUT","usage","usageIndex","type","name","_EveSOF","EveSOF","CjsModel","e","_init_allowFileCaching","_init_extra_allowFileCaching","_init_alphaCutoutShadowsEnabled","_init_extra_alphaCutoutShadowsEnabled","_init_volumetricTrailPath","_init_extra_volumetricTrailPath","_init_buildTime","_init_extra_buildTime","_init_dataMgr","_init_extra_dataMgr","_init_editorMode","_init_extra_editorMode","_initProto","c","_initClass","_applyDecs","define","className","family","edit","readwrite","boolean","string","float64","read","objectRef","carbon","method","impl","implemented","adapted","reason","custom","allowFileCaching","alphaCutoutShadowsEnabled","volumetricTrailPath","buildTime","dataMgr","EveSOFDataMgr","editorMode","Map","getObject","exists","Register","options","TypeError","prototype","hasOwnProperty","call","normalizeResourcePath","dataPath","resources","undefined","hasOwn","clear","lazyData","CjsSofLibraryBuilder","SetSofLibraryBuilder","builderOptions","source","path","context","Error","output","Boolean","String","Number","index","resFileIndex","SetResourceExistsResolver","names","map","toLowerCase","has","resolver","result","then","SetChildResourceResolver","SetObjectResourceResolver","builder","GetDataManager","GetSofLibraryBuilder","InitializeAsync","LoadDataAsync","catalog","LoadData","filePath","existing","get","operation","ResolveSofDependency","role","data","SetData","set","delete","CreateDna","dnaString","dna","EveSOFDNA","Setup","IsValid","GetDnaVisibilityGroups","declared","factionData","visibilityGroups","declaredSet","sets","hullIndex","GetMultiHullCount","hull","hullDatas","field","values","entries","value","visibilityGroupName","group","push","kind","visibilityGroup","visible","authored","item","sort","hulls","hullNames","faction","factionName","race","raceName","filter","hidden","InspectDna","buildable","valid","ValidateContent","error","GetParseError","ValidateDNA","Build","hullName","BuildFromDNA","BuildAsync","BuildFromDNAAsync","GetBuildDiagnostics","entry","BuildValues","BuildValuesFromDNA","BuildValuesAsync","BuildValuesFromDNAAsync","document","projectDocumentValues","BuildChild","owner","partTag","transform","identityMatrix","isModel","GetValues","refs","forceTypeTags","BuildChildValues","hydrationOptions","hydration","SetValues","registry","replacePlainValues","ownerValues","tag","normalizePartTag","placementTransform","normalizePlacementTransform","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","SofDocumentBuilder","rootRef","ImportValuesRoot","root","GetNode","$ref","AddRoot","ensureSpaceObjectBuildFields","fields","layout","ToJSON","Create","black","sof","ArrayBuffer","isView","CjsBlackFormat","readPayload","buffer","slice","byteOffset","byteLength","object","console","warn","normalized","CjsCarbonDocument","normalize","nodeById","nodes","node","id","roots","ref","isRef","visits","CountDocumentVisits","ProjectDocumentNode","nextId","populateDefaults","CjsSchema","applyDefaults","EnsureFromDNA","documentRequests","existenceRequests","collectionPrevious","child","CollectSofRequest","documentResults","existenceResults","Promise","all","request","key","projectionPrevious","SofRequestKey","PlanLayoutFromDNA","planSofLayouts","buildClass","GetBuildClass","typeName","sphere","GetHullBoundingSphere","isExtension","hasShipInterface","swarmBehavior","createSwarmBehaviorFields","GetGenericSwarmProperties","mesh","AddNode","CreateMesh","rootFields","GetDnaString","boundingSphereCenter","from","boundingSphereRadius","shapeEllipsoidCenter","arrayValue","shapeEllipsoidRadius","dynamicBoundingSphereEnabled","DynamicBoundingSphereEnabled","castShadow","CastShadow","isAnimated","IsHullAnimated","reflectionMode","GetReflectionMode","effectChildren","children","curveSets","attachments","decals","impactOverlay","customMasks","lights","externalParameters","controllers","observers","locators","locatorSets","boosters","assign","SetupExtensionBuild","inheritProperties","createInheritProperties","SetupCustomMask","SetupDecalSets","SetupLocators","SetupLocatorSets","SetupAttachments","SetupImpactEffects","SetupEffects","BuildFilter","STANDALONE","SetupAudio","SetupControllers","SetupModelCurves","SetupInstancedMeshes","SetupLayout","SetupBoosters","#BuildChildIntoDocument","layoutOptions","hasChildEffects","UsingSof6","GetHullChildSets","length","GetHullChildren","hasControllers","GetHullControllers","hasAnimation","hasEmitters","GetHullSoundEmitters","hasLayouts","GetLayoutCount","hasAttachments","GetHullSpriteSets","GetHullSpotlightSets","GetHullPlaneSets","GetHullSpriteLineSets","GetHullHazeSets","GetHullBanners","GetHullBannerSets","GetHullLightSets","hasBoosters","GetHullBoosterCount","needsPlacementContainer","buildFlags","NON_INSTANCED_PLACEMENT","INSTANCED_PLACEMENT","rotation","quat","create","translation","vec3","scaling","decomposeCarbonMatrix","placementRef","placementFields","createLayoutContainerFields","GetHullNames","staticTransform","childFields","minScreenSize","lowestLodVisible","animationUpdater","childRef","objects","animationOwner","shared","ensureSharedInstancedMeshes","areas","CreateSharedLayoutAreas","instance","sphereIndex","meshes","geometryPath","GetHullGeometryResPath","castsShadow","meshIndex","instances","partTags","sofHullName","sofLocatorSetName","display","instanceSphere","transformLayoutSphere","ellipsoidBounds","transformLayoutEllipsoid","GetHullShapeEllipsoid","center","min","max","radius","SetupChildBoosters","offsets","stampDocumentChildPartTag","extensionFields","alwaysOn","origin","fakeFields","isPlacementRoot","geometryResPath","opaqueAreas","transparentAreas","additiveAreas","distortionAreas","depthAreas","transparent","SetupShaders","GenerateDepthFromAreaVector","meshFields","meshIndexOffset","count","fills","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","TRIBATCHTYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","TRIBATCHTYPE_DISTORTION","target","batchType","FillMeshAreaVector","GetHullMeshAreas","pending","area","shaderData","GetGenericAreaShaderData","shader","code","built","buildMeshArea","ModifyTextureResPath","depthShader","generateDepthArea","sourceEffect","effect","effectFields","cloneFields","resource","resourceRefs","transparencyTextureName","effectFilePath","GetCompleteShaderPath","constParameters","parameters","areaFields","application","GetPatternApplicationData","layerCount","GetPatternLayerCount","layerIndex","projection","GetPatternProjectionData","enabled","layer","GetPatternLayerData","targetMaterials","GetMaterialTargets","position","isMirrored","clampU","projectionAddressModeU","clampV","projectionAddressModeV","materialIndex","materialSourceID","hullOffset","combinedGeometryPath","decalSet","GetHullDecalSets","IsInVisibilityData","items","effectName","EveSOFDataHullDecalSetItem","Usage","USAGE_LOGO","HasLogoSet","logoType","parameterNames","selectorFields","USAGE_STANDARD","color","GetColorSet","glowColorType","_glowColorType","add","sortedKeys","resourceNames","addResource","resourcePath","textures","resFilePath","GetGenericDecalShaderData","defaultTextures","parentTextures","GetHullTextureWithMeshIndex","logo","GetLogo","_logoType","GetDecalShaderLocationResPath","GetShaderPrefix","addOffset","indexBuffers","selectDecalIndexBuffers","parentBoneIndex","boneIndex","decalEffect","staticIndexBuffers","GetHullNextSubsystemOffset","impactType","GetImpactEffectType","ImpactEffectType","IMPACTEFFECT_NONE","damage","GetGenericDamageData","hullDamage","GetGenericHullDamageData","raceDamage","GetRaceDamageData","shieldMesh","IMPACTEFFECT_ELLIPSOID","shieldEffect","GetAreaShaderLocationResPath","GetImpactShieldShader","effectParameters","shieldDamageParameters","effectResources","shieldDamageTextures","shieldArea","shieldGeometryResFilePath","armorDamageShader","CreateArmorDamageEffect","armorImpactEmitter","createImpactEmitter","rate","armorParticleRate","angle","armorParticleAngle","innerAngle","minMaxSpeed","armorParticleMinMaxSpeed","minMaxLifeTime","armorParticleMinMaxLifeTime","sizes","armorParticleSizes","colors","armorParticleColors","textureIndex","armorParticleTextureIndex","velocityStretchRotation","armorParticleVelocityStretchRotation","drag","armorParticleDrag","turbulenceAmplitude","armorParticleTurbulenceAmplitude","turbulenceFrequency","armorParticleTurbulenceFrequency","colorMidpoint","armorParticleColorMidPoint","hullImpactEmitter","hullParticleRate","hullParticleAngle","hullParticleInnerAngle","hullParticleMinMaxSpeed","hullParticleMinMaxLifeTime","hullParticleSizes","hullParticleColors","hullParticleTextureIndex","hullParticleVelocityStretchRotation","hullParticleDrag","hullParticleTurbulenceAmplitude","hullParticleTurbulenceFrequency","hullParticleColorMidpoint","flickerCurve","alpha","flickerPerlinAlpha","beta","flickerPerlinBeta","N","flickerPerlinN","speed","flickerPerlinSpeed","offset","scale","shieldIsEllipsoid","hullDamageFlickerCurve","objectFields","childOwnerFields","SetupEffectChildren","SetupChildrenAndAnimations","emitterTargetsById","buildFilter","factionChild","GetFactionChildData","groupIndex","isVisible","redFilePath","reference","animationId","collectDynamicEmitterRefs","animation","GetHullAnimations","curves","bindings","startRate","scalar","keys","scalarKey","endRate","emitter","sourceAttribute","sourceObject","destinationAttribute","destinationObject","startRotationTime","curve","quaternionKey","startRotationValue","endRotationTime","endRotationValue","childSet","#resolveChildResource","sof6","resPath","loadChildAutomatically","raw","fragment","IsModelValuesRoot","IsCarbonDocument","isInteger","find","_type","isTransform","isSpaceObjectChild","#addResolvedChild","placement","composeChildPlacement","ImportRoot","cloneValue","ownerFields","parentOffset","ignoredScale","parentRotation","ignoredTranslation","transformMat4","multiply","front","transformQuat","observer","eventPrefix","prefix","scalingFactor","attenuationScalingFactor","rotationPath","GetModelRotationCurvePath","translationPath","GetModelTranslationCurvePath","hullInstanced","GetHullInstancedMeshes","meshContainer","containerFields","propagated","propagateInstancedMeshInstances","CreateInstancedMesh","createInstancedMeshArea","instanceTransforms","displayModifier","EveSOFDataInstancedMesh","DisplayQualityModifier","SHADER_ALL","displayFilter","bounds","translationBounds","maxScale","maximumInstanceScale","instanceData","particleSystem","rows","explicitBoundingBox","aabbMin","aabbMax","boundsMethod","instanceGeometryResPath","instanceGeometryResource","instanceMeshIndex","minBounds","maxBounds","maxInstanceSize","targetFields","buildContext","plan","placements","layoutFields","batches","groupLayoutPlacements","findSharedInstancedMeshes","sharedRef","sharedMeshes","hasPartTag","fixedPartTag","occurrences","first","extensionDna","isInstanced","DisableAnimation","transforms","updateLayoutBounds","placementAnimationOwners","isShared","locatorSetName","packInstanceMatrix","locator","CreateLayoutInstancedMesh","addChildMeshShaderOption","sofDna","sofParentHullName","ownedLocatorSets","BuildHullLocalLocatorSets","partArmorDamageShader","GetLocatorCount","occurrenceIndex","occurrence","randomizedScaling","sofLocatorIndex","locatorIndex","forEach","layoutContainerIsEmpty","types","addEffectShaderOption","areaIndex","areaCount","alphaCutout","reversed","GetRaceBoosterData","hasTrails","boosterLocatorRefs","GetHullBoosterData","direction","functionality","hasTrail","atlasIndex0","atlasIndex1","lightScale","mergeDocumentLocatorSet","createBoosterEffect","effectFar","glowEffect","samplerOverrides","glows","sprites","trails","trailEffect","trailSize","trailColor","glowScale","glowColor","warpGlowColor","symHaloScale","haloScaleX","haloScaleY","haloColor","warpHaloColor","lightOffset","lightFlickerAmplitude","lightFlickerFrequency","lightRadius","lightColor","lightWarpRadius","lightWarpColor","hull0","driveName","effectPath","#resolveObjectResource","gate","expects","expected","#addObjectResource","isInstancedPlacement","sharedSpriteEffect","SetupSpriteSets","SetupSpotlightSets","SetupPlaneSets","SetupSpriteLineSets","SetupHazeSets","SetupBannerSets","SetupBanners","SetupLights","sharedEffect","sourceColor","colorType","intensity","saturateColor","saturation","_colorType","blinkPhase","blinkRate","falloff","minScale","light","lightData","outerScaleMultiplier","innerRadius","innerScaleMultiplier","brightness","noiseAmplitude","noiseFrequency","noiseOctaves","flags","startTime","castsShadows","isVolumetric","lightProfilePath","skinned","coneEffect","fill","zOffset","coneTextureResPath","glowTextureResPath","spotlightItems","coneColor","flareColor","spriteColor","multiplyColor","modifyColor","coneIntensity","flareIntensity","spriteIntensity","GetFactionSpotlightSetData","mat4","fromTranslation","boosterGainInfluence","spriteScale","Math","abs","atan","PI","localPosition","innerAngleMultiplier","outerAngle","outerAngleMultiplier","texturePath","imageMap","pickBufferID","EveSOFDataHullPlaneSet","USAGE_SPACE_VIDEO","USAGE_HANGAR_VIDEO","layerMap1","layer1MapResPath","layerMap2","layer2MapResPath","maskMap","maskMapResPath","planeData","USAGE_HAZE","atlasSize","floor","atlasAspectRatio","getPlaneSetEffectPath","planes","usesLightParameters","fromRotationTranslationScale","GetFactionPlaneSetData","blinkData","phase","dutyCycle","blinkMode","layer1Scroll","layer1Transform","layer2Scroll","layer2Transform","maskAtlasID","maskMapAtlasIndex","lightRotation","lightPosition","fadeType","imageMapParameter","layerMap1Parameter","layerMap2Parameter","maskMapParameter","spriteLines","line","blinkPhaseShift","isCircle","spacing","positions","getSpriteLinePositions","spriteIndex","effects","getEffect","hazeType","EveSOFDataHullHazeSet","HazeType","TYPE_SPHERICAL","TYPE_HALFSPHERICAL","hazes","hazeBrightness","hazeData","hazeFalloff","sourceSize","sourceBrightness","boneMatrix","banners","addBannerItem","bannerLight","radiusMultiplier","innerRadiusMultiplier","addBannerSet","EveSOFDataHullBanner","_USAGE_COUNT","bannerTypes","size","EveSOFDataHullBannerSetItem","lightSet","lightKind","getLightKind","lightFields","_lightColor","isDynamic","GetHullTurretLocators","audioPosition","GetHullAudioPosition","armorShader","armorDamageParameters","armorDamageTextures","bySetName","GetHullLocatorSetNames","GetHullLocators","locatorRefs","composed","SetupTurretMaterialFromFaction","turretSet","GetFactionData","genericData","GetGenericData","ApplySofTurretMaterial","parameterName","findTurretFactionParameter","SetupTurretMaterialFromDNA","GetFactionTurretParameters","prefixes","materialPrefixes","info","EveSOFUtilsParameterName","IsMaterialIdxValid","GetMaterialIdx","materialUsageList","ChangeMaterialIdx","findTurretAreaParameter","colorData","areaMaterials","EveSOFDataArea","AreaType","TYPE_PRIMARY","areaType","materialName","materialNames","GetMaterialData","GetShortName","GetFullName","fallback","colorSet","seen","addEmitters","particleEmitters","visitTransform","visitEffectChild","time","leftTangent","rightTangent","interpolation","tangentType","matrix","scaleX","hypot","scaleY","scaleZ","getRotation","EveSOFDataHullLightSetItem","LightType","POINT_LIGHT","TEXTURED_POINT_LIGHT","SPOT_LIGHT","factor","multiplier","component","divisor","red","green","blue","maximum","minimum","delta","hue","hsvSaturation","hsvValue","hsvToRgb","nextSaturation","sector","fraction","p","q","t","trunc","point","sin","cos","bone","angleX","angleY","usageCount","GetGenericBannerShaderData","defaultParameters","isPickable","primaryTextureParameter","resolveTexturePath","emitArea","patternLayerCount","GetMeshAreaParameter","blockedMaterials","samplerNames","pattern","IsPatternLayerApplicableToArea","textureName","textureResFilePath","samplerName","addressU","addressV","addressW","mipFilter","lodBias","maxMipLevel","maxAnisotropy","_areaType","useSHLighting","doGenerateDepthArea","minLod","number","RangeError","some","isFinite","visited","every","ellipsoidToBounds","sourceSphere","sourceEllipsoid","transformedSphere","extendsBoundingSphere","includeLayoutSphere","extendsShieldEllipsoid","includeBounds","getScaling","current","next","dx","dy","dz","distance","centerValue","radiusValue","fallbackSphere","sourceBounds","x","y","z","axis","groups","batchKey","effectRef","duplicate","option","addMeshShaderOption","areaRef","decalRef","decal","sourceInstances","requestedOffsets","identityFastPath","isIdentityMatrix","clonePackedInstance","unpackInstanceMatrix","combined","transpose","transform0","transform1","transform2","lastTransform0","lastTransform1","lastTransform2","t0","t1","t2","Float32Array","identity","POSITIVE_INFINITY","NEGATIVE_INFINITY","maxLengthSquared","row","sqrt","lodOption","textureOverrides","vector","shape0","noiseSpeed","noiseAmplitureStart","noiseAmplitureEnd","shape1","warpShape0","warpShape1","shapeAtlasHeight","shapeAtlasCount","shapeAtlasResPath","gradient0ResPath","gradient1ResPath","record","a","b","localeCompare","hullCount","indices","multiHullIndexBuffers","combinedGeometryResPath","emitterData","minSpeed","maxSpeed","paramsData","minLifeTime","maxLifeTime","sizeVariance","color0","color1","color2","color3","VALUES_LITERAL_DOLLAR_REF","emitted","state","fromEntries","_ref","projected","valueId","_id","weightDeceleration","weightDecelerate","requests","normalizedPath","schema","load","results","resultKey","cause"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSOF.js","sources":["../../../src/sof/EveSOF.js"],"sourcesContent":["import { normalizeResourcePath } from \"#utils/path\";\r\n\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.h\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.cpp\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { CjsBlackFormat } from \"#resource/formats/black\";\r\nimport { EveSOFDataHullDecalSetItem } from \"./hull/EveSOFDataHullDecalSetItem.js\";\r\nimport { EveSOFDataHullBanner } from \"./hull/EveSOFDataHullBanner.js\";\r\nimport { EveSOFDataHullBannerSetItem } from \"./hull/EveSOFDataHullBannerSetItem.js\";\r\nimport { EveSOFDataHullHazeSet } from \"./hull/EveSOFDataHullHazeSet.js\";\r\nimport { EveSOFDataHullLightSetItem } from \"./hull/EveSOFDataHullLightSetItem.js\";\r\nimport { EveSOFDataHullPlaneSet } from \"./hull/EveSOFDataHullPlaneSet.js\";\r\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\r\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\r\nimport { EveSOFDataInstancedMesh } from \"./shared/EveSOFDataInstancedMesh.js\";\r\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\r\nimport { CjsCarbonDocument } from \"#model/document\";\r\nimport { EveSOFDNA } from \"./EveSOFDNA.js\";\r\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\r\nimport { CjsSofLibraryBuilder } from \"./CjsSofLibraryBuilder.js\";\r\nimport { planSofLayouts } from \"./layoutPlanner.js\";\r\nimport { SofDocumentBuilder } from \"./SofDocumentBuilder.js\";\r\nimport { IsModelValuesReference, IsModelValuesRoot, VALUES_LITERAL_DOLLAR_REF, remapImportedValue } from \"./sofDocumentValues.js\";\r\n\r\n\r\nconst BUILD_CLASS_TYPES = Object.freeze({\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SHIP]: \"EveShip2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_MOBILE]: \"EveMobile\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_STATIONARY]: \"EveStation2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SWARM]: \"EveSwarm\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION]: \"EveMobile\"\r\n});\r\n\r\nconst SPACE_OBJECT_ROOT_KINDS = new Set([\r\n \"EveSpaceObject2\",\r\n \"EveShip2\",\r\n \"EveMobile\",\r\n \"EveStation2\",\r\n \"EveSwarm\"\r\n]);\r\n\r\nconst DECAL_EFFECT_NAMES = Object.freeze([\r\n \"decalv5.fx\",\r\n \"decalcounterv5.fx\",\r\n \"decalholev5.fx\",\r\n \"decalcylindricv5.fx\",\r\n \"decalglowcylindricv5.fx\",\r\n \"decalglowv5.fx\",\r\n \"decalv5.fx\"\r\n]);\r\n\r\nconst BANNER_EXTERNAL_PARAMETER_NAMES = Object.freeze([\r\n \"AllianceLogoResPath\",\r\n \"CorpLogoResPath\",\r\n \"CeoPortraitResPath\",\r\n \"VerticalBannerResPath\",\r\n \"HorizontalBannerResPath\",\r\n \"TargetSystemAllianceLogoResPath\",\r\n \"TargetSystemVerticalBannerResPath\",\r\n \"TargetSystemHorizontalBannerResPath\",\r\n \"TargetSystemInfo0ResPath\",\r\n \"TargetSystemInfo1ResPath\",\r\n \"TargetSystemInfo2ResPath\",\r\n \"TargetSystemInfo3ResPath\",\r\n \"TargetSystemInfo4ResPath\",\r\n \"TargetSystemStatusResPath\",\r\n \"CurrentSystemAllianceLogoResPath\",\r\n \"CurrentSystemVerticalBannerResPath\",\r\n \"CurrentSystemHorizontalBannerResPath\",\r\n \"PublicityPosterResPath\",\r\n \"PublicityPortraitResPath\",\r\n \"RecruitmentInformation0ResPath\",\r\n \"RecruitmentInformation1ResPath\",\r\n \"RecruitmentInformation2ResPath\",\r\n \"RecruitmentInformation3ResPath\",\r\n \"RecruitmentInformation4ResPath\"\r\n]);\r\n\r\nconst MIN_MESH_SCREEN_SIZE = 2.5;\r\n\r\n// Tr2Lod value stamped on distortion areas after fill (EveSOF.cpp:2149-2153);\r\n// The SOF layer stays free of a Trinity-layer import, so the enum value from\r\n// Tr2LodResource.h is mirrored here.\r\nconst TR2_LOD_HIGH = 2;\r\n\r\n// Carbon validates every resolved resource root against the interface its\r\n// role requires before attaching it: children must cast to EveTransform or\r\n// IEveSpaceObjectChild (EveSOF.cpp:1786-1844,1949-2004), controllers load as\r\n// ITr2Controller (2014-2033), and model curves load as ITriQuaternionFunction\r\n// / ITriVectorFunction (1668-1691). The GPU-free builder has no class\r\n// registry, so conformance comes from the descriptor's explicit `implements`\r\n// claim or from these Carbon-source kind inventories.\r\nconst CHILD_TRANSFORM_KINDS = new Set([\r\n \"EveTransform\",\r\n \"EveRootTransform\",\r\n \"EveMissileWarhead\"\r\n]);\r\n\r\nconst SPACE_OBJECT_CHILD_KINDS = new Set([\r\n \"EveChildAudio\",\r\n \"EveChildBehaviorSystem\",\r\n \"EveChildBulletStorm\",\r\n \"EveChildCloud\",\r\n \"EveChildCloud2\",\r\n \"EveChildContainer\",\r\n \"EveChildEffectPropagator\",\r\n \"EveChildExplosion\",\r\n \"EveChildFogVolume\",\r\n \"EveChildInstanceContainer\",\r\n \"EveChildInstanceMeshRenderer\",\r\n \"EveChildInstancedMeshes\",\r\n \"EveChildLightingOverride\",\r\n \"EveChildLineSet\",\r\n \"EveChildLink\",\r\n \"EveChildMesh\",\r\n \"EveChildParticleSphere\",\r\n \"EveChildParticleSystem\",\r\n \"EveChildPlug\",\r\n \"EveChildPostProcessVolume\",\r\n \"EveChildProceduralContainer\",\r\n \"EveChildQuad\",\r\n \"EveChildRef\",\r\n \"EveChildSmartLightSet\",\r\n \"EveChildSocket\",\r\n \"EveChildSpherePin\",\r\n \"EveEllipseSet\"\r\n]);\r\n\r\nconst OBJECT_RESOURCE_ROLE_GATES = Object.freeze({\r\n controller: {\r\n interfaceName: \"ITr2Controller\",\r\n kinds: new Set([\r\n \"Tr2Controller\",\r\n \"Tr2ControllerReference\",\r\n \"Tr2TimelineController\"\r\n ])\r\n },\r\n modelRotationCurve: {\r\n interfaceName: \"ITriQuaternionFunction\",\r\n kinds: new Set([\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveEulerRotation\",\r\n \"Tr2CurveEulerRotationExpression\",\r\n \"Tr2CurveQuaternion\",\r\n \"Tr2CurveRandomAxisRotation\",\r\n \"Tr2QuaternionLerpCurve\",\r\n \"Tr2RotationAdapter\",\r\n \"TriRigidOrientation\"\r\n ])\r\n },\r\n modelTranslationCurve: {\r\n interfaceName: \"ITriVectorFunction\",\r\n kinds: new Set([\r\n \"EveLocalPositionCurve\",\r\n \"EveRemotePositionCurve\",\r\n \"Tr2CurveCombiner\",\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveVector3\",\r\n \"Tr2CurveVector3Expression\",\r\n \"Tr2CurveVector3Lerp\",\r\n \"Tr2FollowCurve\",\r\n \"Tr2TranslationAdapter\",\r\n \"Tr2VectorFunctionModifier\",\r\n \"TriVectorSequencer\"\r\n ])\r\n }\r\n});\r\n\r\n// Sentinel returned when a resolved child root fails Carbon's type gate; the\r\n// callers mirror Carbon's early return rather than skipping one item.\r\nconst WRONG_TYPE_CHILD = Symbol(\"wrong-type-child\");\r\n\r\nfunction descriptorClaimsInterface(descriptor, interfaceName)\r\n{\r\n return Array.isArray(descriptor.implements) && descriptor.implements.includes(interfaceName);\r\n}\r\n// EveChildInheritProperties field order (src/trinity is the authority for\r\n// these names); dna.GetColorSet() is index-aligned with this Carbon color-slot\r\n// order, so the authored color set projects onto named, persisted fields.\r\nconst INHERIT_COLOR_PROPERTIES = Object.freeze([\r\n \"Primary\",\r\n \"Secondary\",\r\n \"Tertiary\",\r\n \"Black\",\r\n \"White\",\r\n \"Yellow\",\r\n \"Orange\",\r\n \"Red\",\r\n \"Blue\",\r\n \"Green\",\r\n \"Cyan\",\r\n \"Fire\",\r\n \"Hull\",\r\n \"Glass\",\r\n \"Reactor\",\r\n \"Darkhull\",\r\n \"Booster\",\r\n \"Killmark\",\r\n \"PrimaryLight\",\r\n \"SecondaryLight\",\r\n \"TertiaryLight\",\r\n \"WhiteLight\",\r\n \"PrimaryHologram\",\r\n \"SecondaryHologram\",\r\n \"TertiaryHologram\",\r\n \"State0\",\r\n \"State1\",\r\n \"State2\",\r\n \"State3\",\r\n \"StateVulnerable\",\r\n \"StateInvulnerable\",\r\n \"PrimaryForcefield\",\r\n \"SecondaryForcefield\",\r\n \"PrimaryBanner\",\r\n \"PrimaryFx\",\r\n \"SecondaryFx\",\r\n \"PrimarySpotlight\",\r\n \"SecondarySpotlight\",\r\n \"TertiarySpotlight\",\r\n \"PrimaryBillboard\",\r\n \"PrimaryWarpFx\",\r\n \"PrimaryAttackFx\",\r\n \"PrimarySiegeFx\",\r\n \"PrimaryDockedFx\"\r\n]);\r\n\r\nconst SWARM_BEHAVIOR_FIELD_NAMES = Object.freeze([\r\n \"mass\",\r\n \"speedMultiplier\",\r\n \"speedMinimum\",\r\n \"maxDistance0\",\r\n \"maxDistance1\",\r\n \"maxTime\",\r\n \"timeMultiplier\",\r\n \"agility\",\r\n \"speed0\",\r\n \"speed1\",\r\n \"weightFormation\",\r\n \"weightCohesion\",\r\n \"weightSeparation\",\r\n \"weightAlign\",\r\n \"weightWander\",\r\n \"weightAnchor\",\r\n \"anchorRadius0\",\r\n \"anchorRadius1\",\r\n \"maxDeceleration\",\r\n \"separationDistance\",\r\n \"formationDistance\",\r\n \"wanderFluctuation\",\r\n \"wanderDistance\",\r\n \"wanderRadius\"\r\n]);\r\n\r\nconst SOF_INSTANCE_LAYOUT = Object.freeze([\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 0, type: \"FLOAT32_4\", name: \"transform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 1, type: \"FLOAT32_4\", name: \"transform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 2, type: \"FLOAT32_4\", name: \"transform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 3, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 4, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 5, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 6, type: \"BYTE_4\", name: \"boneIndex\" })\r\n]);\r\n\r\n/** Carbon-first SOF builder whose sole supported public output is a GPU-free model-values graph. */\r\n@type.define({ className: \"EveSOF\", family: \"eve\" })\r\nexport class EveSOF extends CjsModel\r\n{\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n allowFileCaching = true;\r\n\r\n // Carbon registers this as the global TRI setting \"alphaCutoutShadowsEnabled\"\r\n // (EveSOF.cpp:61-62, default false); decal (alpha-cutout) areas take their\r\n // castsShadows state from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.boolean\r\n alphaCutoutShadowsEnabled = false;\r\n\r\n // Carbon registers this as the global TRI setting \"volumetricTrailPath\"\r\n // (EveSOF.cpp:64-65, default empty); the booster trail set takes its mesh\r\n // resource path from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.string\r\n volumetricTrailPath = \"\";\r\n\r\n // Carbon initializes each light's startTime from the current frame time,\r\n // phase-offsetting noise flicker by when the object was built. Injected\r\n // here per builder (default 0 keeps builds deterministic); the engine\r\n // passes its clock when it wants Carbon's de-synced flicker.\r\n @edit.readwrite\r\n @type.float64\r\n buildTime = 0;\r\n\r\n @edit.read\r\n @type.objectRef(\"EveSOFDataMgr\")\r\n dataMgr = new EveSOFDataMgr();\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n editorMode = false;\r\n\r\n #resourceExists = null;\r\n\r\n #childResourceResolver = null;\r\n\r\n #objectResourceResolver = null;\r\n\r\n #existingFilesCache = new Map();\r\n\r\n #asyncResources = Object.freeze({ getObject: null, exists: null });\r\n\r\n #dataPath = \"\";\r\n\r\n #dataLoadOperations = new Map();\r\n\r\n #sofLibraryBuilder = null;\r\n\r\n // Build-scope counterpart of Carbon's CCP_LOGERR sites: records in\r\n // layoutPlanner diagnostic shape ({ code, ...context }), reset by each\r\n // every values or deprecated document build and readable through\r\n // GetBuildDiagnostics().\r\n #buildDiagnostics = [];\r\n\r\n /** Add standalone SOF configuration or accept CjsLibrary topic forwarding. */\r\n Register(options = {})\r\n {\r\n if (!options || typeof options !== \"object\" || Array.isArray(options))\r\n {\r\n throw new TypeError(\"EveSOF.Register options must be an object\");\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(options, \"dataPath\"))\r\n {\r\n this.#dataPath = normalizeResourcePath(options.dataPath);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resources\"))\r\n {\r\n const resources = options.resources ?? {};\r\n if (typeof resources !== \"object\" || Array.isArray(resources))\r\n {\r\n throw new TypeError(\"EveSOF resources must be an object or null\");\r\n }\r\n if (resources.getObject !== undefined && resources.getObject !== null && typeof resources.getObject !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.getObject must be a function or null\");\r\n }\r\n if (resources.exists !== undefined && resources.exists !== null && typeof resources.exists !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.exists must be a function or null\");\r\n }\r\n const getObject = Object.hasOwn(resources, \"getObject\")\r\n ? resources.getObject ?? null\r\n : this.#asyncResources.getObject;\r\n const exists = Object.hasOwn(resources, \"exists\")\r\n ? resources.exists ?? null\r\n : this.#asyncResources.exists;\r\n if (exists !== this.#asyncResources.exists) this.#existingFilesCache.clear();\r\n this.#asyncResources = {\r\n getObject,\r\n exists\r\n };\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"lazyData\"))\r\n {\r\n const lazyData = options.lazyData;\r\n if (lazyData === false || lazyData === null)\r\n {\r\n this.#sofLibraryBuilder = null;\r\n }\r\n else if (lazyData instanceof CjsSofLibraryBuilder)\r\n {\r\n this.SetSofLibraryBuilder(lazyData);\r\n }\r\n else\r\n {\r\n if (lazyData !== true && (!lazyData || typeof lazyData !== \"object\" || Array.isArray(lazyData)))\r\n {\r\n throw new TypeError(\"EveSOF lazyData must be true, false, null, a CjsSofLibraryBuilder, or builder options.\");\r\n }\r\n const builderOptions = lazyData === true ? {} : lazyData;\r\n const source = builderOptions.source ?? ((path, context) =>\r\n {\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n throw new Error(\"EveSOF lazyData requires resources.getObject or a source function.\");\r\n }\r\n return getObject(path, { ...context, output: \"runtime\" });\r\n });\r\n this.SetSofLibraryBuilder(new CjsSofLibraryBuilder({\r\n ...builderOptions,\r\n dataMgr: this.dataMgr,\r\n source\r\n }));\r\n }\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"allowFileCaching\"))\r\n {\r\n this.allowFileCaching = Boolean(options.allowFileCaching);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"alphaCutoutShadowsEnabled\"))\r\n {\r\n this.alphaCutoutShadowsEnabled = Boolean(options.alphaCutoutShadowsEnabled);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"volumetricTrailPath\"))\r\n {\r\n this.volumetricTrailPath = String(options.volumetricTrailPath ?? \"\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"buildTime\"))\r\n {\r\n this.buildTime = Number(options.buildTime ?? 0);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resFileIndex\"))\r\n {\r\n // The resfileindex is the synchronous existence oracle Carbon gets from\r\n // its file system: authored res paths either appear in the index or do\r\n // not. Texture resPathInsert selection needs only this membership test,\r\n // so providing the index keeps the sync build pure while matching\r\n // Carbon's existence-driven path rewriting. Rich tool-owned indexes are\r\n // adapted to this list/predicate boundary by their composition layer.\r\n const index = options.resFileIndex;\r\n if (index === null) this.SetResourceExistsResolver(null);\r\n else if (Array.isArray(index))\r\n {\r\n // The canonical shape: a plain list of res file names, from wherever\r\n // the caller got them. Existence is case-insensitive membership,\r\n // matching Carbon's file-system semantics.\r\n const names = new Set(index.map(name => String(name ?? \"\").toLowerCase()));\r\n this.SetResourceExistsResolver(path => names.has(String(path ?? \"\").toLowerCase()));\r\n }\r\n else if (typeof index === \"function\") this.SetResourceExistsResolver(path => Boolean(index(path)));\r\n else if (index instanceof Set || index instanceof Map) this.SetResourceExistsResolver(path => index.has(path));\r\n else throw new TypeError(\"EveSOF resFileIndex must be an array of file names, a predicate, a Set, a Map, or null\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"editorMode\"))\r\n {\r\n this.editorMode = Boolean(options.editorMode);\r\n }\r\n return this;\r\n }\r\n\r\n /** Supplies the synchronous resource-existence probe used by texture inserts. */\r\n SetResourceExistsResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be a function or null\");\r\n }\r\n this.#resourceExists = resolver === null ? null : path =>\r\n {\r\n const result = resolver(path);\r\n if (result && typeof result.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be synchronous\");\r\n }\r\n return result === true;\r\n };\r\n this.#existingFilesCache.clear();\r\n return this;\r\n }\r\n\r\n /**\r\n * Supplies Carbon's synchronous `.red` child-object compatibility boundary.\r\n *\r\n * The resolver receives `(redFilePath, context)` and returns either null, a\r\n * self-describing model-values root, `{ values, target?, implements?, raw? }`,\r\n * a local `{ kind, target, fields, raw }` descriptor, or\r\n * `{ document, root?, target?, implements?, raw? }` for a legacy complete\r\n * compatibility fragment consumed by the internal builder.\r\n *\r\n * Values fragments require `_type` on every model because the SOF layer does\r\n * not import the class library needed to infer an untagged nested model's\r\n * schema.\r\n * Target is `children` for an EveTransform root or `effectChildren` for an\r\n * IEveSpaceObjectChild root.\r\n */\r\n SetChildResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be a function or null\");\r\n }\r\n this.#childResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Supplies synchronous controller and model-curve values or legacy compatibility fragments. */\r\n SetObjectResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be a function or null\");\r\n }\r\n this.#objectResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Installs the nominal partial-catalog builder used by asynchronous DNA builds. */\r\n SetSofLibraryBuilder(builder)\r\n {\r\n if (builder !== null && !(builder instanceof CjsSofLibraryBuilder))\r\n {\r\n throw new TypeError(\"EveSOF library builder must be a CjsSofLibraryBuilder or null.\");\r\n }\r\n if (builder && builder.GetDataManager() !== this.dataMgr)\r\n {\r\n throw new TypeError(\"EveSOF library builder must update this factory's data manager.\");\r\n }\r\n this.#sofLibraryBuilder = builder;\r\n return this;\r\n }\r\n\r\n /** Returns the installed partial-catalog builder, or null. */\r\n GetSofLibraryBuilder()\r\n {\r\n return this.#sofLibraryBuilder;\r\n }\r\n\r\n /** Boots configured lazy generic data or the configured monolithic catalog. */\r\n async InitializeAsync(options = {})\r\n {\r\n if (this.#dataPath)\r\n {\r\n await this.LoadDataAsync(this.#dataPath);\r\n }\r\n else if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.InitializeAsync(options.catalog ?? {});\r\n }\r\n return this;\r\n }\r\n\r\n /** Routes Carbon's resource load call through the SOF data manager. */\r\n @carbon.method\r\n @impl.implemented\r\n LoadData(filePath)\r\n {\r\n return this.dataMgr.LoadData(filePath);\r\n }\r\n\r\n /** Load SOF data through the configured promise-capable object resolver. */\r\n async LoadDataAsync(filePath = this.#dataPath)\r\n {\r\n const path = normalizeResourcePath(filePath);\r\n if (!path) throw new TypeError(\"EveSOF.LoadDataAsync requires a data path\");\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n return this.dataMgr.LoadDataAsync(path);\r\n }\r\n\r\n const existing = this.#dataLoadOperations.get(path);\r\n if (existing) return existing;\r\n const operation = ResolveSofDependency(\r\n () => getObject(path, { role: \"sofData\", output: \"runtime\" }),\r\n path,\r\n \"sofData\",\r\n new Map()\r\n )\r\n .then(data => this.#sofLibraryBuilder\r\n ? (this.#sofLibraryBuilder.SetData(data), true)\r\n : this.dataMgr.SetData(data));\r\n this.#dataLoadOperations.set(path, operation);\r\n const clear = () =>\r\n {\r\n if (this.#dataLoadOperations.get(path) === operation) this.#dataLoadOperations.delete(path);\r\n };\r\n operation.then(clear, clear);\r\n return operation;\r\n }\r\n\r\n /** Creates and resolves one DNA instance against the loaded SOF library. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n return dna.IsValid() ? dna : null;\r\n }\r\n\r\n /**\r\n * Reports the visibility groups one DNA resolves, without building a graph.\r\n *\r\n * Visibility groups are how a faction turns hull attachment sets on and off,\r\n * so this answers which groups the selected hulls author, which the faction\r\n * declares, and therefore which sets a build emits. Carbon keeps only the\r\n * FNV1 hashes at runtime (EveSOFDataMgr.cpp:1301-1310) and has no equivalent\r\n * query; the names come from the catalog projection.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDnaVisibilityGroups(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (dna === null) return null;\r\n\r\n const declared = [...new Set(dna.factionData?.visibilityGroups ?? [])];\r\n const declaredSet = new Set(declared);\r\n const sets = [];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.hullDatas?.[hullIndex];\r\n if (!hull) continue;\r\n // A gated set is any hull collection whose records carry a visibility\r\n // group, so this follows the catalog rather than a second list of the\r\n // set kinds Carbon happens to gate today.\r\n for (const [field, values] of Object.entries(hull))\r\n {\r\n if (!Array.isArray(values)) continue;\r\n for (const value of values)\r\n {\r\n if (!value || value.visibilityGroupName === undefined) continue;\r\n const group = String(value.visibilityGroupName);\r\n sets.push({\r\n kind: field,\r\n // Carbon's projected sets keep the visibility hash, not the\r\n // authored set name, so name is present only where a projection\r\n // already carries one.\r\n name: String(value.name ?? \"\"),\r\n hullIndex,\r\n visibilityGroup: group,\r\n visible: declaredSet.has(group)\r\n });\r\n }\r\n }\r\n }\r\n\r\n const authored = [...new Set(sets.map(item => item.visibilityGroup))].sort();\r\n return {\r\n dna: String(dnaString),\r\n hulls: [...(dna.hullNames ?? [])],\r\n faction: String(dna.factionName ?? \"\"),\r\n race: String(dna.raceName ?? \"\"),\r\n declared: declared,\r\n authored: authored,\r\n visible: authored.filter(name => declaredSet.has(name)),\r\n hidden: authored.filter(name => !declaredSet.has(name)),\r\n sets: sets.map(item => item)\r\n };\r\n }\r\n\r\n /** Inspects one DNA selection without creating a graph or runtime values. */\r\n InspectDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n const buildable = dna.IsValid();\r\n const valid = buildable && dna.ValidateContent();\r\n return {\r\n buildable,\r\n valid,\r\n error: dna.GetParseError() ?? (valid ? null : \"invalid-content\")\r\n };\r\n }\r\n\r\n /** Performs Carbon's separate slow/offline DNA validation path. */\r\n @carbon.method\r\n @impl.implemented\r\n ValidateDNA(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna !== null && dna.ValidateContent();\r\n }\r\n\r\n /**\r\n * Builds the legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValues(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Build(hullName, factionName, raceName)\r\n {\r\n return this.BuildFromDNA(`${hullName}:${factionName}:${raceName}`);\r\n }\r\n\r\n /**\r\n * Promise-facing legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValuesAsync(...).\r\n */\r\n BuildAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Returns diagnostics from the most recent values build or deprecated document build. */\r\n GetBuildDiagnostics()\r\n {\r\n return this.#buildDiagnostics.map(entry => ({ ...entry }));\r\n }\r\n\r\n /** Builds the supported public model-values graph from three selections. */\r\n BuildValues(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNA(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Builds the supported public model-values graph asynchronously. */\r\n BuildValuesAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /**\r\n * Builds the supported public model-values graph for a DNA string.\r\n *\r\n * The result is one nested, JSON-serializable root value carrying `_type` on\r\n * polymorphic nodes and `_id`/`_ref` only where topology demands shared\r\n * identity. There is no node table, `kind`/`fields` record, or `raw` payload.\r\n *\r\n * **No class registry is required, and none should be passed.** The SOF layer\r\n * must remain independent of Trinity classes, and JSON does not need the\r\n * classes it names. Building this used to hydrate\r\n * a document into live runtime objects and re-export them, which made a\r\n * registry mandatory and relocated a Trinity-layer dependency onto every\r\n * caller rather than removing it. Anything that takes a registry here is the\r\n * round trip growing back.\r\n *\r\n * Constructing objects is the caller's option, performed on the result:\r\n * `RootClass.from(values)` against whatever classes that caller has. The\r\n * direction matters — objects are built *from* the values, never in order to\r\n * produce them.\r\n *\r\n * The output is sparse by default: it carries what SOF set, and class\r\n * defaults belong to whoever constructs. Pass `populateDefaults: true` to\r\n * overlay defaults from the class families the caller has registered with\r\n * `CjsSchema`; SOF still does not import those families. The audio emitter is\r\n * ordinary declared data, an `AudEmitter` node in\r\n * `TriObserverLocal.observer`, so either form is a complete rebuild source.\r\n */\r\n BuildValuesFromDNA(dnaString, options = {})\r\n {\r\n const document = this.BuildFromDNA(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Builds one modular hull into an existing space-object values graph.\r\n *\r\n * Carbon mutates a live EveSpaceObject2. The device-free runtime keeps the\r\n * same owner-first and boolean contract while composing through its canonical\r\n * model-values boundary; a live CjsModel owner is exported, composed, then\r\n * populated through SetValues without importing Trinity into SOF.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Runtime SOF remains Trinity-free, so Carbon's live EveSpaceObject2 mutation is performed through the caller-supplied model-values contract.\")\r\n BuildChild(owner, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n const isModel = owner instanceof CjsModel;\r\n const source = isModel\r\n ? owner.GetValues({ refs: true, forceTypeTags: true })\r\n : owner;\r\n const values = this.BuildChildValues(source, dnaString, partTag, transform, options);\r\n if (!values) return false;\r\n\r\n if (isModel)\r\n {\r\n const hydrationOptions = options?.hydration ?? {};\r\n owner.SetValues(values, Object.hasOwn(options ?? {}, \"registry\")\r\n ? { ...hydrationOptions, registry: options.registry }\r\n : hydrationOptions);\r\n }\r\n else\r\n {\r\n replacePlainValues(owner, values);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns a new space-object values graph with one Carbon modular hull\r\n * contribution. Invalid DNA returns null without changing the input graph.\r\n */\r\n @impl.custom\r\n @impl.reason(\"Provides the immutable values form needed to compose a modular graph before optional Trinity hydration.\")\r\n BuildChildValues(ownerValues, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n if (!ownerValues || typeof ownerValues !== \"object\" || Array.isArray(ownerValues))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChildValues requires a self-describing space-object values root\");\r\n }\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const tag = normalizePartTag(partTag);\r\n const placementTransform = normalizePlacementTransform(transform);\r\n dna.SetParentBoundingSphere(null);\r\n dna.SetParentShapeEllipsoidInfo(null);\r\n\r\n const document = new SofDocumentBuilder();\r\n const rootRef = document.ImportValuesRoot(ownerValues);\r\n const root = document.GetNode(rootRef.$ref);\r\n if (!SPACE_OBJECT_ROOT_KINDS.has(root?.kind))\r\n {\r\n throw new TypeError(`EveSOF.BuildChildValues requires an EveSpaceObject2 values root, received ${root?.kind ?? \"unknown\"}`);\r\n }\r\n document.AddRoot(\"default\", rootRef);\r\n ensureSpaceObjectBuildFields(root.fields);\r\n this.#BuildChildIntoDocument(\r\n document,\r\n root.fields,\r\n dna,\r\n tag,\r\n placementTransform,\r\n options?.layout ?? options ?? {}\r\n );\r\n return EveSOF.projectDocumentValues(document.ToJSON(), options);\r\n }\r\n\r\n /** Supported async values build; dependency collection currently reuses the deprecated internal document builder. */\r\n async BuildValuesFromDNAAsync(dnaString, options = {})\r\n {\r\n const document = await this.BuildFromDNAAsync(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Canonical pure-data instantiation: the decoded (or raw black) sof catalog\r\n * plus a plain list of res file names.\r\n *\r\n * The catalog is mandatory - a factory without its data is useless. The\r\n * file list is the sole build-time resource dependency (resPathInsert\r\n * existence); without it every insert lookup reports missing and texture\r\n * paths fall back to their base values, with a one-time console warning.\r\n * The factory never fetches, never parses index formats, and never touches\r\n * the network: callers hand it bytes or data they acquired however they\r\n * chose.\r\n *\r\n * (`Create`, not `from` - CjsModel.from is the schema hydration contract\r\n * and keeps its signature.)\r\n */\r\n static Create({ black, resFileIndex } = {})\r\n {\r\n if (black === undefined || black === null)\r\n {\r\n throw new TypeError(\"EveSOF.Create requires the sof catalog: data.black bytes or its decoded data\");\r\n }\r\n const sof = new EveSOF();\r\n const data = (black instanceof ArrayBuffer || ArrayBuffer.isView(black))\r\n ? CjsBlackFormat.readPayload(\r\n ArrayBuffer.isView(black)\r\n ? black.buffer.slice(black.byteOffset, black.byteOffset + black.byteLength)\r\n : black,\r\n {}\r\n ).object\r\n : black;\r\n if (!sof.dataMgr.SetData(data))\r\n {\r\n throw new TypeError(\"EveSOF.Create could not ingest the sof catalog\");\r\n }\r\n if (resFileIndex === undefined || resFileIndex === null)\r\n {\r\n console.warn(\"EveSOF.Create: no resFileIndex file list provided; resPathInsert existence checks will report missing and texture paths fall back to their base values.\");\r\n }\r\n else\r\n {\r\n sof.Register({ resFileIndex });\r\n }\r\n return sof;\r\n }\r\n\r\n /**\r\n * Internal structural projection from the builder's `carbon.document`\r\n * intermediate to supported plain model values.\r\n *\r\n * Both forms are JSON describing one graph, so this is a structural rewrite\r\n * and nothing more: a node table becomes a tree, `kind` becomes `_type`, and\r\n * `{ $ref }` becomes a `{ _ref }` back-reference paired with an `_id` on the\r\n * first occurrence. `fields` and `raw` are envelopes, so their contents move\r\n * onto the node itself.\r\n *\r\n * **No class library is imported, by requirement.** The SOF layer must remain\r\n * independent of Trinity classes, and sparse JSON never needs the classes it\r\n * names. The previous implementation\r\n * hydrated the document into live runtime objects and called `GetValues` on\r\n * the root, which made a class registry mandatory and pushed a Trinity-layer\r\n * dependency onto every caller. Constructing objects to serialize a graph we\r\n * already hold is a round trip; building objects from these values is a thing\r\n * a caller may choose to do afterwards, with `RootClass.from(values)`.\r\n *\r\n * The output is therefore sparse unless `options.populateDefaults` is true.\r\n * That opt-in runs `CjsSchema.applyDefaults` after the structural projection,\r\n * using only class families the caller has already imported and registered.\r\n * It does not construct or initialize the authored graph and does not add a\r\n * SOF-to-Trinity dependency.\r\n *\r\n * @internal The document form is not a supported consumer boundary.\r\n */\r\n static projectDocumentValues(document, options = {})\r\n {\r\n const normalized = CjsCarbonDocument.normalize(document);\r\n const nodeById = new Map(normalized.nodes.map(node => [Number(node.id), node]));\r\n const rootRef = normalized.roots?.[0]?.ref;\r\n\r\n if (!CjsCarbonDocument.isRef(rootRef))\r\n {\r\n throw new TypeError(\"EveSOF values projection requires a document with one root reference.\");\r\n }\r\n\r\n // A node reachable more than once is shared topology and needs an identity;\r\n // one reachable once is ordinary nesting and needs none. Counting first\r\n // keeps `_id` off the great majority of nodes.\r\n const visits = new Map();\r\n CountDocumentVisits(rootRef, nodeById, visits);\r\n\r\n const values = ProjectDocumentNode(rootRef, nodeById, visits, new Map(), { nextId: 1 });\r\n const populateDefaults = options?.populateDefaults ?? false;\r\n if (typeof populateDefaults !== \"boolean\")\r\n {\r\n throw new TypeError(\"EveSOF populateDefaults option must be a boolean.\");\r\n }\r\n return populateDefaults ? CjsSchema.applyDefaults(values) : values;\r\n }\r\n\r\n /**\r\n * Deprecated async `carbon.document` assembly used internally by\r\n * `BuildValuesFromDNAAsync`.\r\n *\r\n * Resolve selected child/object dependencies without converting the\r\n * deterministic synchronous builder into an async state machine.\r\n *\r\n * A collection build records only dependencies selected by the normal SOF\r\n * filters. They are fetched concurrently, then the unchanged builder runs a\r\n * second time against synchronous per-call caches.\r\n *\r\n * @deprecated Use BuildValuesFromDNAAsync(...).\r\n */\r\n async BuildFromDNAAsync(dnaString, options = {})\r\n {\r\n if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.EnsureFromDNA(dnaString, options.catalog ?? {});\r\n }\r\n const getObject = this.#asyncResources.getObject;\r\n const exists = this.#asyncResources.exists;\r\n if (!getObject && !exists) return this.BuildFromDNA(dnaString, options);\r\n\r\n const documentRequests = new Map();\r\n const existenceRequests = new Map();\r\n const collectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", \"child\", context);\r\n return null;\r\n };\r\n this.#objectResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", context?.role || \"object\", context);\r\n return null;\r\n };\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path =>\r\n {\r\n CollectSofRequest(existenceRequests, path, \"boolean\", \"exists\");\r\n return false;\r\n };\r\n }\r\n this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = collectionPrevious.child;\r\n this.#objectResourceResolver = collectionPrevious.object;\r\n this.#resourceExists = collectionPrevious.exists;\r\n this.allowFileCaching = collectionPrevious.allowFileCaching;\r\n }\r\n\r\n const documentResults = new Map();\r\n const existenceResults = new Map();\r\n await Promise.all([\r\n ...[ ...documentRequests.values() ].map(request => ResolveSofDependency(\r\n () => getObject(request.path, { ...request.context, role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n documentResults,\r\n request.key\r\n )),\r\n ...[ ...existenceRequests.values() ].map(request => ResolveSofDependency(\r\n () => exists(request.path, { role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n existenceResults,\r\n request.key\r\n ))\r\n ]);\r\n\r\n const projectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n this.#objectResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path => existenceResults.get(SofRequestKey(path, \"boolean\")) === true;\r\n }\r\n return this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = projectionPrevious.child;\r\n this.#objectResourceResolver = projectionPrevious.object;\r\n this.#resourceExists = projectionPrevious.exists;\r\n this.allowFileCaching = projectionPrevious.allowFileCaching;\r\n }\r\n }\r\n\r\n /** Returns Carbon's layout selection and transform work as a detached CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n PlanLayoutFromDNA(dnaString, options = {})\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna ? planSofLayouts(dna, options ?? {}) : null;\r\n }\r\n\r\n /**\r\n * Emits the deprecated internal `carbon.document` assembly form, including\r\n * deterministic layouts. `BuildValuesFromDNA` currently projects this\r\n * intermediate to the supported output. Layout options may be passed\r\n * directly or under an `options.layout` object.\r\n *\r\n * @deprecated Use BuildValuesFromDNA(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n BuildFromDNA(dnaString, options = {})\r\n {\r\n this.#buildDiagnostics = [];\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const buildClass = dna.GetBuildClass();\r\n const typeName = BUILD_CLASS_TYPES[buildClass];\r\n if (!typeName) return null;\r\n const hull = dna.hullDatas[0];\r\n const sphere = dna.GetHullBoundingSphere() ?? [0, 0, 0, -1];\r\n const document = new SofDocumentBuilder();\r\n const isExtension = buildClass === EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION;\r\n const hasShipInterface = typeName === \"EveShip2\" || typeName === \"EveSwarm\";\r\n const swarmBehavior = typeName === \"EveSwarm\"\r\n ? createSwarmBehaviorFields(dna.GetGenericSwarmProperties())\r\n : null;\r\n const mesh = isExtension ? document.AddNode(\"Tr2Mesh\", {}) : this.CreateMesh(dna, document);\r\n if (!mesh) return null;\r\n const rootFields = {\r\n dna: dna.GetDnaString(),\r\n boundingSphereCenter: Array.from(sphere).slice(0, 3),\r\n boundingSphereRadius: Number(sphere[3] ?? -1),\r\n shapeEllipsoidCenter: isExtension ? [0, 0, 0] : arrayValue(hull.shapeEllipsoidCenter, [0, 0, 0]),\r\n shapeEllipsoidRadius: isExtension ? [-1, -1, -1] : arrayValue(hull.shapeEllipsoidRadius, [-1, -1, -1]),\r\n dynamicBoundingSphereEnabled: isExtension ? false : dna.DynamicBoundingSphereEnabled(),\r\n castShadow: isExtension ? false : dna.CastShadow(),\r\n isAnimated: isExtension ? false : dna.IsHullAnimated(),\r\n reflectionMode: isExtension ? 3 : dna.GetReflectionMode(),\r\n mesh,\r\n effectChildren: [],\r\n children: [],\r\n curveSets: [],\r\n modelRotationCurve: null,\r\n modelTranslationCurve: null,\r\n attachments: [],\r\n decals: [],\r\n impactOverlay: null,\r\n customMasks: [],\r\n lights: [],\r\n externalParameters: [],\r\n controllers: [],\r\n observers: [],\r\n locators: [],\r\n locatorSets: []\r\n };\r\n if (hasShipInterface) rootFields.boosters = null;\r\n if (swarmBehavior) Object.assign(rootFields, swarmBehavior);\r\n if (isExtension)\r\n {\r\n if (!this.SetupExtensionBuild(document, rootFields, dna, options?.layout ?? options ?? {})) return null;\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n this.SetupCustomMask(document, rootFields, dna);\r\n this.SetupDecalSets(document, rootFields, dna);\r\n this.SetupLocators(document, rootFields, dna);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupAttachments(document, rootFields, dna);\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n this.SetupEffects(document, rootFields, rootFields, dna, [identityMatrix()], EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupAudio(document, rootFields, dna, identityMatrix());\r\n this.SetupControllers(document, rootFields, dna, EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupModelCurves(document, rootFields, dna);\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, options?.layout ?? options ?? {});\r\n if (hasShipInterface) this.SetupBoosters(document, rootFields, dna);\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n\r\n /** Ports Carbon's modular child construction into an existing document root. */\r\n #BuildChildIntoDocument(document, rootFields, dna, partTag, transform, layoutOptions)\r\n {\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n const hasControllers = dna.GetHullControllers().length !== 0;\r\n const hasAnimation = dna.IsHullAnimated();\r\n const hasEmitters = dna.GetHullSoundEmitters().length !== 0;\r\n const hasLayouts = dna.GetLayoutCount() > 0;\r\n let hasAttachments = false;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n if (dna.GetHullSpriteSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpotlightSets(hullIndex).length !== 0 ||\r\n dna.GetHullPlaneSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpriteLineSets(hullIndex).length !== 0 ||\r\n dna.GetHullHazeSets(hullIndex).length !== 0 ||\r\n dna.GetHullBanners(hullIndex).length !== 0 ||\r\n dna.GetHullBannerSets(hullIndex).length !== 0 ||\r\n dna.GetHullLightSets(hullIndex).length !== 0)\r\n {\r\n hasAttachments = true;\r\n break;\r\n }\r\n }\r\n\r\n // hasBoosters forces the placement container, as in Carbon (EveSOF.cpp:360).\r\n const hasBoosters = dna.GetHullBoosterCount() > 0;\r\n const needsPlacementContainer = hasControllers || hasAnimation || hasEmitters ||\r\n hasChildEffects || hasLayouts || hasAttachments || hasBoosters;\r\n const buildFlags = hasAnimation\r\n ? EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n : EveSOFDataHull.BuildFilter.INSTANCED_PLACEMENT;\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, translation, scaling);\r\n\r\n let placementRef = null;\r\n let placementFields = null;\r\n if (needsPlacementContainer)\r\n {\r\n placementFields = {\r\n ...createLayoutContainerFields(dna.GetHullNames()[0]),\r\n partTag,\r\n staticTransform: true,\r\n scaling: Array.from(scaling),\r\n rotation: Array.from(rotation),\r\n translation: Array.from(translation)\r\n };\r\n placementRef = document.AddNode(\"EveChildContainer\", placementFields);\r\n rootFields.effectChildren.push(placementRef);\r\n }\r\n\r\n if (hasAnimation)\r\n {\r\n const childFields = {\r\n name: dna.GetHullNames()[0],\r\n partTag,\r\n mesh: this.CreateMesh(dna, document),\r\n reflectionMode: dna.GetReflectionMode(),\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: document.AddNode(\"Tr2GrannyAnimation\", {}),\r\n // The part owns its hull-local locators and, with damage locators,\r\n // its own armour shader (Carbon EveSOF.cpp:395-399).\r\n ownedLocatorSets: this.BuildHullLocalLocatorSets(document, dna),\r\n armorDamageShader: dna.GetLocatorCount(\"damage\") > 0\r\n ? this.CreateArmorDamageEffect(document, dna)\r\n : null\r\n };\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const childRef = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(childRef);\r\n placementFields.animationOwner = childRef;\r\n }\r\n else\r\n {\r\n const shared = ensureSharedInstancedMeshes(document, rootFields);\r\n const areas = this.CreateSharedLayoutAreas(document, dna);\r\n if (areas.length !== 0)\r\n {\r\n const instance = document.AddNode(\"EveChildInstancedMeshInstance\", {\r\n transform: transform.slice(),\r\n sphereIndex: 0\r\n });\r\n shared.meshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: dna.GetHullGeometryResPath(),\r\n castsShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances: [instance],\r\n partTags: [partTag],\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: \"\",\r\n // Carbon EveSOF.cpp:450-470: the shared part carries its own\r\n // locators and armour shader through AddMesh.\r\n ownedLocatorSets: this.BuildHullLocalLocatorSets(document, dna),\r\n armorDamageShader: dna.GetLocatorCount(\"damage\") > 0\r\n ? this.CreateArmorDamageEffect(document, dna)\r\n : null,\r\n display: true\r\n }));\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAttachments(document, placementFields, dna, [transform], true);\r\n }\r\n }\r\n\r\n const instanceSphere = transformLayoutSphere(dna.GetHullBoundingSphere(), transform);\r\n if (instanceSphere)\r\n {\r\n rootFields.boundingSphereCenter = instanceSphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = instanceSphere[3];\r\n }\r\n const ellipsoidBounds = transformLayoutEllipsoid(\r\n dna.GetHullShapeEllipsoid(),\r\n instanceSphere,\r\n transform\r\n );\r\n if (ellipsoidBounds)\r\n {\r\n const center = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n const radius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidCenter = center;\r\n rootFields.shapeEllipsoidRadius = radius;\r\n dna.SetParentShapeEllipsoidInfo({ center, radius });\r\n }\r\n\r\n if (hasControllers)\r\n {\r\n this.SetupControllers(document, placementFields, dna, buildFlags);\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAudio(document, placementFields, dna, transform);\r\n }\r\n if (hasBoosters && placementFields)\r\n {\r\n this.SetupChildBoosters(document, placementFields, dna);\r\n }\r\n if (hasChildEffects)\r\n {\r\n this.SetupEffects(document, rootFields, placementFields, dna, [transform], buildFlags);\r\n }\r\n if (!rootFields.impactOverlay)\r\n {\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n }\r\n // No SetupLocatorSets here: the part's locators travel with its child and\r\n // the object merges them (Carbon removed the call in trinity 108ab454).\r\n this.SetupLayout(document, rootFields, dna, {\r\n ...(layoutOptions ?? {}),\r\n offsets: [transform]\r\n }, placementFields, {\r\n partTag\r\n });\r\n if (placementRef)\r\n {\r\n stampDocumentChildPartTag(document, placementRef, partTag);\r\n }\r\n }\r\n\r\n /** Emits Carbon's special extension-root path through a fake solo placement. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupExtensionBuild(document, rootFields, dna, layoutOptions = {})\r\n {\r\n const extensionFields = {\r\n ...createLayoutContainerFields(\"Extension Container\"),\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const needsPlacementContainer = dna.IsHullAnimated() || dna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? createLayoutContainerFields(\"Solo Placement\")\r\n : extensionFields;\r\n const childFields = {\r\n name: \"Hull\",\r\n mesh: this.CreateMesh(dna, document),\r\n castShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: dna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) return null;\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(child);\r\n\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(\r\n document,\r\n placementFields,\r\n dna,\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n }\r\n this.SetupAudio(document, placementFields, dna, identityMatrix());\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(\r\n document,\r\n rootFields,\r\n fakeFields,\r\n dna,\r\n [identityMatrix()],\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n if (needsPlacementContainer) placementFields.objects.push(...fakeFields.effectChildren);\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n placementFields.animationOwner = dna.IsHullAnimated() ? child : null;\r\n extensionFields.objects.push(document.AddNode(\"EveChildContainer\", placementFields));\r\n }\r\n\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, layoutOptions, extensionFields);\r\n extensionFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", extensionFields));\r\n return child;\r\n }\r\n\r\n /** Creates the base Tr2Mesh graph and populates its SOF shader areas. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateMesh(dna, document)\r\n {\r\n const fields = {\r\n geometryResPath: dna.GetHullGeometryResPath(),\r\n opaqueAreas: [],\r\n transparentAreas: [],\r\n additiveAreas: [],\r\n distortionAreas: [],\r\n depthAreas: []\r\n };\r\n const transparent = [];\r\n // Carbon's CreateMesh never fails: missing shader records degrade to\r\n // partially filled area vectors with a build diagnostic (EveSOF.cpp:500-515).\r\n this.SetupShaders(dna, document, fields, transparent);\r\n this.GenerateDepthFromAreaVector(document, fields.depthAreas, transparent, dna);\r\n return document.AddNode(\"Tr2Mesh\", fields);\r\n }\r\n\r\n /** Populates all five Carbon hull-area categories in source order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupShaders(dna, document, meshFields, transparent)\r\n {\r\n let meshIndexOffset = 0;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n let count = 0;\r\n const fills = [\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE],\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_DECAL],\r\n [meshFields.transparentAreas, TriBatchType.TRIBATCHTYPE_TRANSPARENT],\r\n [meshFields.additiveAreas, TriBatchType.TRIBATCHTYPE_ADDITIVE],\r\n [meshFields.distortionAreas, TriBatchType.TRIBATCHTYPE_DISTORTION]\r\n ];\r\n for (const [target, batchType] of fills)\r\n {\r\n const result = this.FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document);\r\n count += result.count;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT) transparent.push(...result.areas);\r\n }\r\n meshIndexOffset += count;\r\n }\r\n return true;\r\n }\r\n\r\n /** Converts one Carbon HullAreas vector into Tr2MeshArea/effect graph nodes. */\r\n @carbon.method\r\n @impl.implemented\r\n FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document)\r\n {\r\n // A missing source vector cannot occur in Carbon (hull area vectors always\r\n // exist for a valid hull index); treat it as empty rather than diagnosing.\r\n const source = dna.GetHullMeshAreas(batchType, hullIndex);\r\n if (!source) return { count: 0, areas: [] };\r\n const pending = [];\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData)\r\n {\r\n // Carbon logs and returns zero for this source, keeping the areas it\r\n // already appended and continuing with the remaining batches and\r\n // hulls (EveSOF.cpp:564-569); the build itself never aborts.\r\n this.#buildDiagnostics.push({\r\n code: \"missing-generic-shader\",\r\n batchType,\r\n hullIndex,\r\n shader: String(area.shader ?? \"\"),\r\n area: String(area.name ?? \"\")\r\n });\r\n target.push(...pending.map(item => item.ref));\r\n return { count: 0, areas: pending };\r\n }\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n meshIndexOffset,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n );\r\n pending.push(built);\r\n }\r\n target.push(...pending.map(item => item.ref));\r\n return { count: source.length, areas: pending };\r\n }\r\n\r\n /** Emits depth clones for transparent areas requesting Carbon depth generation. */\r\n @carbon.method\r\n @impl.implemented\r\n GenerateDepthFromAreaVector(document, depthAreas, transparentAreas, dna)\r\n {\r\n const depthShader = dna.GetGenericAreaShaderData(\"depthonlyv5.fx\");\r\n for (const source of transparentAreas)\r\n {\r\n if (!source.generateDepthArea) continue;\r\n const sourceEffect = document.GetNode(source.effect.$ref);\r\n let effectFields = cloneFields(sourceEffect.fields);\r\n if (depthShader)\r\n {\r\n const resource = source.resourceRefs.get(depthShader.transparencyTextureName);\r\n effectFields = {\r\n ...effectFields,\r\n effectFilePath: dna.GetCompleteShaderPath(\"depthonlyv5.fx\"),\r\n constParameters: [],\r\n parameters: [],\r\n resources: resource ? [resource] : []\r\n };\r\n }\r\n const effect = document.AddNode(\"Tr2Effect\", effectFields);\r\n const areaFields = { ...source.fields, effect };\r\n depthAreas.push(document.AddNode(\"Tr2MeshArea\", areaFields));\r\n }\r\n }\r\n\r\n /** Emits enabled pattern projections as EveCustomMask graph nodes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupCustomMask(document, rootFields, dna)\r\n {\r\n const application = dna.GetPatternApplicationData();\r\n if (!application) return;\r\n const layerCount = dna.GetPatternLayerCount();\r\n for (let layerIndex = 0; layerIndex < layerCount; layerIndex++)\r\n {\r\n const projection = dna.GetPatternProjectionData(application, layerIndex);\r\n if (!projection?.enabled) continue;\r\n const layer = dna.GetPatternLayerData(application, layerIndex);\r\n const targetMaterials = dna.GetMaterialTargets(layer);\r\n if (!layer || !targetMaterials) continue;\r\n rootFields.customMasks.push(document.AddNode(\"EveCustomMask\", {\r\n position: arrayValue(projection.position, [0, 0, 0]),\r\n scaling: arrayValue(projection.scaling, [1, 1, 1]),\r\n rotation: arrayValue(projection.rotation, [0, 0, 0, 1]),\r\n isMirrored: projection.isMirrored === true,\r\n clampU: layer.projectionAddressModeU === 3,\r\n clampV: layer.projectionAddressModeV === 3,\r\n materialIndex: Number(layer.materialSourceID ?? 0),\r\n targetMaterials: arrayValue(targetMaterials, [0, 0, 0, 0])\r\n }));\r\n }\r\n }\r\n\r\n /** Emits Carbon decal sets and records private static indices for SOF hydration. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupDecalSets(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n const combinedGeometryPath = dna.GetHullGeometryResPath().toLowerCase();\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const decalSet of dna.GetHullDecalSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(decalSet.visibilityGroup)) continue;\r\n for (const item of decalSet.items)\r\n {\r\n const usage = Number(item.usage);\r\n const effectName = DECAL_EFFECT_NAMES[usage];\r\n if (!effectName) continue;\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO && !dna.HasLogoSet(item.logoType)) continue;\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n const selectorFields = {};\r\n if (usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_STANDARD && usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const color = dna.GetColorSet()[item.glowColorType];\r\n if (color)\r\n {\r\n selectorFields._glowColorType = Number(item.glowColorType ?? 0);\r\n parameterNames.add(\"DecalGlowColor\");\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"DecalGlowColor\",\r\n value: Array.from(color)\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(item.parameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(item.parameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n const addResource = (name, resourcePath) => {\r\n if (resourceNames.has(name)) return;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", { name, resourcePath }));\r\n };\r\n for (const name of sortedKeys(item.textures)) addResource(name, item.textures.get(name).resFilePath);\r\n\r\n const shaderData = dna.GetGenericDecalShaderData(effectName);\r\n if (shaderData)\r\n {\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n addResource(name, shaderData.defaultTextures.get(name).resFilePath);\r\n }\r\n if (item.meshIndex !== -1)\r\n {\r\n for (const name of shaderData.parentTextures)\r\n {\r\n const resourcePath = dna.GetHullTextureWithMeshIndex(\r\n name,\r\n item.meshIndex,\r\n hullIndex,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null\r\n );\r\n if (resourcePath !== null) addResource(name, resourcePath);\r\n }\r\n }\r\n }\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const logo = dna.GetLogo(item.logoType);\r\n selectorFields._logoType = Number(item.logoType ?? 0);\r\n for (const name of sortedKeys(logo.textures)) addResource(name, logo.textures.get(name).resFilePath);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetDecalShaderLocationResPath()}/${dna.GetShaderPrefix(false)}${effectName}`,\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n addOffset(position, hullOffset);\r\n const indexBuffers = selectDecalIndexBuffers(item, dna.GetMultiHullCount(), combinedGeometryPath);\r\n rootFields.decals.push(document.AddNode(\"EveSpaceObjectDecal\", {\r\n // These underscored fields retain the original SOF selectors in\r\n // JSON only; target Trinity classes intentionally ignore them.\r\n ...selectorFields,\r\n position,\r\n rotation: arrayValue(item.rotation, [0, 0, 0, 1]),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n parentBoneIndex: item.boneIndex,\r\n minScreenSize: 10,\r\n decalEffect: effect,\r\n staticIndexBuffers: indexBuffers\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's CPU-side armor, hull, flicker, and shield impact graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupImpactEffects(document, rootFields, dna)\r\n {\r\n const impactType = dna.GetImpactEffectType();\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE) return;\r\n const damage = dna.GetGenericDamageData();\r\n const hullDamage = dna.GetGenericHullDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return;\r\n\r\n let shieldMesh = null;\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID)\r\n {\r\n const shieldEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetAreaShaderLocationResPath()}/${dna.GetImpactShieldShader()}`,\r\n constParameters: effectParameters(document, raceDamage.shieldDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.shieldDamageTextures)\r\n });\r\n const shieldArea = document.AddNode(\"Tr2MeshArea\", { effect: shieldEffect });\r\n shieldMesh = document.AddNode(\"Tr2Mesh\", {\r\n geometryResPath: damage.shieldGeometryResFilePath,\r\n additiveAreas: [shieldArea]\r\n });\r\n }\r\n\r\n const armorDamageShader = this.CreateArmorDamageEffect(document, dna);\r\n const armorImpactEmitter = createImpactEmitter(document, {\r\n rate: damage.armorParticleRate,\r\n angle: damage.armorParticleAngle,\r\n innerAngle: 0,\r\n minMaxSpeed: damage.armorParticleMinMaxSpeed,\r\n minMaxLifeTime: damage.armorParticleMinMaxLifeTime,\r\n sizes: damage.armorParticleSizes,\r\n colors: damage.armorParticleColors,\r\n textureIndex: damage.armorParticleTextureIndex,\r\n velocityStretchRotation: damage.armorParticleVelocityStretchRotation,\r\n drag: damage.armorParticleDrag,\r\n turbulenceAmplitude: damage.armorParticleTurbulenceAmplitude,\r\n turbulenceFrequency: damage.armorParticleTurbulenceFrequency,\r\n colorMidpoint: damage.armorParticleColorMidPoint\r\n });\r\n const hullImpactEmitter = hullDamage ? createImpactEmitter(document, {\r\n rate: hullDamage.hullParticleRate,\r\n angle: hullDamage.hullParticleAngle,\r\n innerAngle: hullDamage.hullParticleInnerAngle,\r\n minMaxSpeed: hullDamage.hullParticleMinMaxSpeed,\r\n minMaxLifeTime: hullDamage.hullParticleMinMaxLifeTime,\r\n sizes: hullDamage.hullParticleSizes,\r\n colors: hullDamage.hullParticleColors,\r\n textureIndex: hullDamage.hullParticleTextureIndex,\r\n velocityStretchRotation: hullDamage.hullParticleVelocityStretchRotation,\r\n drag: hullDamage.hullParticleDrag,\r\n turbulenceAmplitude: hullDamage.hullParticleTurbulenceAmplitude,\r\n turbulenceFrequency: hullDamage.hullParticleTurbulenceFrequency,\r\n colorMidpoint: hullDamage.hullParticleColorMidpoint\r\n }) : null;\r\n const flickerCurve = document.AddNode(\"TriPerlinCurve\", {\r\n alpha: damage.flickerPerlinAlpha,\r\n beta: damage.flickerPerlinBeta,\r\n N: damage.flickerPerlinN,\r\n speed: damage.flickerPerlinSpeed,\r\n offset: 1,\r\n scale: 0\r\n });\r\n const shieldIsEllipsoid = impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID;\r\n rootFields.impactOverlay = document.AddNode(\"EveImpactOverlay\", {\r\n mesh: shieldMesh,\r\n shieldIsEllipsoid,\r\n armorDamageShader,\r\n armorImpactEmitter,\r\n hullDamageFlickerCurve: flickerCurve,\r\n hullImpactEmitter\r\n });\r\n }\r\n\r\n /** Selects Carbon's legacy or SOF6 effect-child path. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffects(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n if (dna.UsingSof6())\r\n {\r\n this.SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n else\r\n {\r\n this.SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n }\r\n\r\n /** Emits legacy path-resolved children and Carbon's authored animation graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n const emitterTargetsById = new Map();\r\n for (const child of dna.GetHullChildren())\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const factionChild = dna.GetFactionChildData(child.groupIndex);\r\n if (factionChild && !factionChild.isVisible) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, false);\r\n // Carbon returns from SetupChildrenAndAnimations on a wrong-type child,\r\n // skipping the remaining children AND the animation pass (EveSOF.cpp:\r\n // 1840-1844); an unresolvable resource only skips the one child (1779-1783).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n // Emitter rate bindings reach INTO the loaded child's graph; a deferred\r\n // EveChildRef has no graph to bind yet, so the binding is recorded as a\r\n // diagnostic instead of silently dropped. Embedding resolvers keep the\r\n // full Carbon binding behavior.\r\n if (descriptor.reference && Number(child.id ?? -1) !== -1)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"deferred-child-animation-binding\",\r\n path: String(child.redFilePath ?? \"\"),\r\n id: Number(child.id)\r\n });\r\n }\r\n for (const offset of offsets)\r\n {\r\n const animationId = Number(child.id ?? -1);\r\n const ref = this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n if (animationId !== -1)\r\n {\r\n if (!emitterTargetsById.has(animationId)) emitterTargetsById.set(animationId, []);\r\n emitterTargetsById.get(animationId).push(...collectDynamicEmitterRefs(document, ref, descriptor.target));\r\n }\r\n }\r\n }\r\n\r\n for (const animation of dna.GetHullAnimations())\r\n {\r\n const curves = [];\r\n const bindings = [];\r\n if (Number(animation.id) !== -1 && Number(animation.startRate) !== -1)\r\n {\r\n const scalar = document.AddNode(\"Tr2CurveScalar\", {\r\n keys: [\r\n scalarKey(0, animation.startRate),\r\n scalarKey(1, animation.endRate)\r\n ]\r\n });\r\n for (const emitter of emitterTargetsById.get(Number(animation.id)) ?? [])\r\n {\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: scalar,\r\n destinationAttribute: \"rate\",\r\n destinationObject: emitter\r\n }));\r\n }\r\n curves.push(scalar);\r\n }\r\n if (Number(animation.startRotationTime) !== -1)\r\n {\r\n const curve = document.AddNode(\"Tr2CurveQuaternion\", {\r\n keys: [\r\n quaternionKey(animation.startRotationTime, animation.startRotationValue),\r\n quaternionKey(animation.endRotationTime, animation.endRotationValue)\r\n ]\r\n });\r\n curves.push(curve);\r\n if (!objectFields.modelRotationCurve)\r\n {\r\n objectFields.modelRotationCurve = document.AddNode(\"Tr2RotationAdapter\", {});\r\n }\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: curve,\r\n destinationAttribute: \"value\",\r\n destinationObject: objectFields.modelRotationCurve\r\n }));\r\n }\r\n objectFields.curveSets.push(document.AddNode(\"TriCurveSet\", {\r\n name: String(animation.name ?? \"\"),\r\n curves,\r\n bindings\r\n }));\r\n // Carbon also leaves authored translation animation as a TODO.\r\n }\r\n }\r\n\r\n /** Emits SOF6 child sets after visibility and build-filter selection. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const childSet of dna.GetHullChildSets())\r\n {\r\n if (!dna.IsInVisibilityData(childSet.visibilityGroup)) continue;\r\n for (const child of childSet.items)\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, true);\r\n // Carbon returns from SetupEffectChildren entirely on a wrong-type\r\n // child, skipping the remaining child sets (EveSOF.cpp:2000-2004).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n for (const offset of offsets)\r\n {\r\n this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Normalizes a child resource into an embeddable descriptor, preserving\r\n * resolver-free builds as EveChildRef nodes and rejecting roots outside\r\n * Carbon's child interfaces.\r\n */\r\n #resolveChildResource(redFilePath, child, sof6)\r\n {\r\n // Without a resolver the build stays complete AS DATA through Carbon's\r\n // own deferred-loading node: EveChildRef persists resPath, placement, and\r\n // loadChildAutomatically, and the runtime loads and attaches the child\r\n // when it pleases (EveChildRef_Blue.cpp:22-34). The type-based\r\n // children/effectChildren routing then happens at load time, where the\r\n // real root type is known. A configured resolver instead embeds the\r\n // child inline (the resolver supplies the type Carbon's cast would see).\r\n if (!this.#childResourceResolver)\r\n {\r\n return {\r\n kind: \"EveChildRef\",\r\n target: \"effectChildren\",\r\n reference: true,\r\n fields: {\r\n resPath: String(redFilePath ?? \"\"),\r\n loadChildAutomatically: true\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#childResourceResolver(String(redFilePath ?? \"\"), { child, sof6 });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: CCP_LOGERR(\"resource file %s is invalid!\") and the child is\r\n // skipped (EveSOF.cpp:1779-1783,1942-1946).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-child-resource\",\r\n reason: \"not-resolved\",\r\n path: String(redFilePath ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must return a child descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF child document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF child values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor requires a root kind\");\r\n }\r\n const isTransform = CHILD_TRANSFORM_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"EveTransform\");\r\n const isSpaceObjectChild = SPACE_OBJECT_CHILD_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"IEveSpaceObjectChild\");\r\n const target = descriptor.target ?? (isTransform ? \"children\" : \"effectChildren\");\r\n if (target !== \"children\" && target !== \"effectChildren\")\r\n {\r\n throw new TypeError(\"EveSOF child resource target must be children or effectChildren\");\r\n }\r\n // Carbon casts the loaded root: EveTransform joins the children list,\r\n // IEveSpaceObjectChild joins the effect children, and anything else logs\r\n // \"not of correct type\" and aborts the surrounding setup pass\r\n // (EveSOF.cpp:1786-1844,1949-2004).\r\n if (target === \"children\" ? !isTransform : !isSpaceObjectChild)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"child-resource-wrong-type\",\r\n path: String(redFilePath ?? \"\"),\r\n kind,\r\n target\r\n });\r\n return WRONG_TYPE_CHILD;\r\n }\r\n return {\r\n kind,\r\n target,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Composes child placement, imports or allocates the resolved node, and\r\n * appends its reference to the selected owner list.\r\n */\r\n #addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset)\r\n {\r\n const placement = composeChildPlacement(child, offset);\r\n // \"children\"-target hosts accept only the SRT placement; effect children\r\n // additionally receive Carbon's LOD gate and placement origin.\r\n const placementFields = descriptor.target === \"children\"\r\n ? {\r\n scaling: placement.scaling,\r\n rotation: placement.rotation,\r\n translation: placement.translation\r\n }\r\n : placement;\r\n let ref;\r\n if (descriptor.fragment || descriptor.values)\r\n {\r\n ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n const node = document.GetNode(ref.$ref);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n Object.assign(node.fields, cloneValue(placementFields));\r\n }\r\n else\r\n {\r\n ref = document.AddNode(\r\n descriptor.kind,\r\n { ...cloneFields(descriptor.fields), ...cloneValue(placementFields) },\r\n descriptor.raw ? cloneValue(descriptor.raw) : null\r\n );\r\n }\r\n const ownerFields = descriptor.target === \"children\" ? objectFields : childOwnerFields;\r\n ownerFields[descriptor.target].push(ref);\r\n return ref;\r\n }\r\n\r\n /** Emits local observers while retaining audio-backend construction intent. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAudio(document, rootFields, dna, parentOffset = identityMatrix())\r\n {\r\n const ignoredScale = vec3.create();\r\n const parentRotation = quat.create();\r\n const ignoredTranslation = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(parentOffset, identityMatrix()),\r\n parentRotation,\r\n ignoredTranslation,\r\n ignoredScale\r\n );\r\n for (const emitter of dna.GetHullSoundEmitters())\r\n {\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n arrayValue(emitter.position, [0, 0, 0]),\r\n arrayValue(parentOffset, identityMatrix())\r\n );\r\n const rotation = quat.multiply(\r\n quat.create(),\r\n parentRotation,\r\n arrayValue(emitter.rotation, [0, 0, 0, 1])\r\n );\r\n const front = vec3.transformQuat(vec3.create(), [0, 0, 1], rotation);\r\n // The emitter is a declared node in the observer's own `observer` slot,\r\n // not a descriptor hidden beside it. TriObserverLocal exists to hold \"an\r\n // audio or placement observer\" and forwards placement to it through\r\n // `observer.UpdatePlacement`, so this is the field the class was written\r\n // for; leaving it null and stashing a class name in `raw` described the\r\n // graph instead of being it.\r\n //\r\n // This emits a declarative identity and constructs nothing. Building the\r\n // live emitter remains src/audio's alone, which is what the runtime\r\n // architecture permits a producer to carry. The node also keeps the SOF\r\n // layer independent: no audio import is needed\r\n // to name a node any more than to name a Trinity one.\r\n rootFields.observers.push(document.AddNode(\"TriObserverLocal\", {\r\n name: String(emitter.name ?? \"\"),\r\n position: Array.from(position),\r\n front: Array.from(front),\r\n observer: document.AddNode(\"AudEmitter\", {\r\n name: String(emitter.name ?? \"\"),\r\n eventPrefix: String(emitter.prefix ?? \"\"),\r\n position: Array.from(position),\r\n scalingFactor: Number(emitter.attenuationScalingFactor ?? 1)\r\n })\r\n }));\r\n }\r\n }\r\n\r\n /** Loads filtered controller graph resources through the CPU document seam. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupControllers(document, rootFields, dna, buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const controller of dna.GetHullControllers())\r\n {\r\n if (((Number(controller.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveObjectResource(controller.path, \"controller\");\r\n if (descriptor) rootFields.controllers.push(this.#addObjectResource(document, descriptor));\r\n }\r\n }\r\n\r\n /** Loads authored model curve resources after legacy animation bindings. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupModelCurves(document, rootFields, dna)\r\n {\r\n const rotationPath = dna.GetModelRotationCurvePath();\r\n if (rotationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(rotationPath, \"modelRotationCurve\");\r\n if (descriptor) rootFields.modelRotationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n const translationPath = dna.GetModelTranslationCurvePath();\r\n if (translationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(translationPath, \"modelTranslationCurve\");\r\n if (descriptor) rootFields.modelTranslationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n }\r\n\r\n /** Emits Carbon's first-hull instanced attachment container and child meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupInstancedMeshes(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullInstanced = dna.GetHullInstancedMeshes();\r\n if (hullInstanced.length === 0) return null;\r\n\r\n let meshContainer = null;\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildContainer\" && node.fields?.name === \"Instanced Meshes\")\r\n {\r\n meshContainer = ref;\r\n break;\r\n }\r\n }\r\n if (!meshContainer)\r\n {\r\n meshContainer = document.AddNode(\"EveChildContainer\", {\r\n name: \"Instanced Meshes\",\r\n objects: []\r\n });\r\n rootFields.effectChildren.push(meshContainer);\r\n }\r\n const containerFields = document.GetNode(meshContainer.$ref).fields;\r\n if (!Array.isArray(containerFields.objects)) containerFields.objects = [];\r\n\r\n for (const source of hullInstanced)\r\n {\r\n if (!Array.isArray(source.instances) || source.instances.length === 0) continue;\r\n const propagated = propagateInstancedMeshInstances(source.instances, offsets);\r\n const built = this.CreateInstancedMesh(document, propagated.instances, source.geometryResPath);\r\n if (!built) continue;\r\n\r\n const shaderData = dna.GetGenericAreaShaderData(source.shader);\r\n if (shaderData)\r\n {\r\n built.opaqueAreas.push(createInstancedMeshArea(\r\n document,\r\n dna,\r\n source,\r\n shaderData,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n ));\r\n }\r\n\r\n const child = document.AddNode(\"EveChildMesh\", {\r\n name: \"\",\r\n mesh: built.ref,\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n instanceTransforms: propagated.instanceTransforms\r\n });\r\n\r\n if (Number(source.displayModifier) !== EveSOFDataInstancedMesh.DisplayQualityModifier.SHADER_ALL)\r\n {\r\n containerFields.objects.push(document.AddNode(\"EveChildContainer\", {\r\n name: \"Shader Quality Controlled Instanced Mesh\",\r\n displayFilter: Number(source.displayModifier ?? 0),\r\n objects: [child]\r\n }));\r\n }\r\n else\r\n {\r\n containerFields.objects.push(child);\r\n }\r\n }\r\n return meshContainer;\r\n }\r\n\r\n /** Creates the CPU-document half of Carbon's Tr2InstancedMesh pair. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateInstancedMesh(document, instances, resourcePath)\r\n {\r\n if (!Array.isArray(instances) || instances.length === 0) return null;\r\n const bounds = translationBounds(instances);\r\n const maxScale = maximumInstanceScale(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n const opaqueAreas = [];\r\n const ref = document.AddNode(\"Tr2InstancedMesh\", {\r\n geometryResPath: String(resourcePath ?? \"\"),\r\n opaqueAreas,\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(resourcePath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maxScale\r\n });\r\n return { ref, instanceData, opaqueAreas, bounds, maxScale };\r\n }\r\n\r\n /** Emits Carbon layout placement batches from the deterministic CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLayout(document, rootFields, dna, options = {}, targetFields = null, buildContext = {})\r\n {\r\n const plan = planSofLayouts(dna, options ?? {});\r\n if (plan.placements.length === 0) return plan;\r\n\r\n const layoutFields = targetFields ?? {\r\n name: \"layouts\",\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: [],\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const batches = groupLayoutPlacements(plan.placements);\r\n const shared = findSharedInstancedMeshes(document, rootFields);\r\n let sharedRef = shared?.ref ?? null;\r\n let sharedMeshes = shared?.meshes ?? null;\r\n const hasPartTag = Object.hasOwn(buildContext, \"partTag\");\r\n const fixedPartTag = hasPartTag ? normalizePartTag(buildContext.partTag) : 0;\r\n\r\n for (const occurrences of batches)\r\n {\r\n const first = occurrences[0];\r\n const extensionDna = this.CreateDna(first.dna);\r\n if (!extensionDna) continue;\r\n if (first.isInstanced) extensionDna.DisableAnimation();\r\n const transforms = occurrences.map(value => arrayValue(value.transform, identityMatrix()));\r\n updateLayoutBounds(rootFields, extensionDna, occurrences);\r\n const needsPlacementContainer = extensionDna.IsHullAnimated()\r\n || extensionDna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? occurrences.map(() => createLayoutContainerFields(first.name))\r\n : [];\r\n const placementAnimationOwners = needsPlacementContainer\r\n ? occurrences.map(() => null)\r\n : [];\r\n\r\n if (first.isInstanced && first.isShared)\r\n {\r\n const areas = this.CreateSharedLayoutAreas(document, extensionDna);\r\n if (areas.length !== 0)\r\n {\r\n if (!sharedRef)\r\n {\r\n sharedMeshes = [];\r\n sharedRef = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes: sharedMeshes\r\n });\r\n rootFields.effectChildren.push(sharedRef);\r\n }\r\n const instances = transforms.map((transform, sphereIndex) => document.AddNode(\r\n \"EveChildInstancedMeshInstance\",\r\n { transform, sphereIndex }\r\n ));\r\n sharedMeshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: extensionDna.GetHullGeometryResPath(),\r\n castsShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances,\r\n ...(hasPartTag ? { partTags: transforms.map(() => fixedPartTag) } : {}),\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: this.editorMode ? first.locatorSetName : \"\",\r\n display: true\r\n }));\r\n }\r\n }\r\n else if (first.isInstanced)\r\n {\r\n const instances = occurrences.map(value => packInstanceMatrix(value.transform, value.locator?.boneIndex));\r\n const built = this.CreateLayoutInstancedMesh(document, extensionDna, instances);\r\n if (built)\r\n {\r\n const childFields = {\r\n name: \"Instanced Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n mesh: built.ref,\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n decals: [],\r\n attachments: [],\r\n lights: []\r\n };\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n addChildMeshShaderOption(\r\n document,\r\n childFields,\r\n \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n \"SOIA_ENABLED\"\r\n );\r\n childFields.instanceTransforms = transforms;\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n layoutFields.objects.push(document.AddNode(\"EveChildMesh\", childFields));\r\n }\r\n }\r\n else\r\n {\r\n // Non-instanced placements own their locator sets and, when they own\r\n // damage locators, their own armour-damage shader; the parent merges\r\n // and poses them at runtime (Carbon EveSOF.cpp:3899-3908,3971-3972).\r\n const ownedLocatorSets = this.BuildHullLocalLocatorSets(document, extensionDna);\r\n const partArmorDamageShader = extensionDna.GetLocatorCount(\"damage\") > 0\r\n ? this.CreateArmorDamageEffect(document, extensionDna)\r\n : null;\r\n for (let occurrenceIndex = 0; occurrenceIndex < occurrences.length; occurrenceIndex++)\r\n {\r\n const occurrence = occurrences[occurrenceIndex];\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(occurrence.transform, rotation, translation, ignoredScale);\r\n const childFields = {\r\n name: \"Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n ownedLocatorSets,\r\n armorDamageShader: partArmorDamageShader,\r\n mesh: this.CreateMesh(extensionDna, document),\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: extensionDna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) continue;\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n this.SetupAttachments(document, childFields, extensionDna, [identityMatrix()], false);\r\n childFields.scaling = arrayValue(occurrence.randomizedScaling, [1, 1, 1]);\r\n childFields.rotation = Array.from(rotation);\r\n childFields.translation = Array.from(translation);\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n childFields.sofLocatorIndex = this.editorMode ? String(occurrence.locatorIndex) : \"\";\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n if (needsPlacementContainer)\r\n {\r\n placementFields[occurrenceIndex].objects.push(child);\r\n if (extensionDna.IsHullAnimated()) placementAnimationOwners[occurrenceIndex] = child;\r\n }\r\n else\r\n {\r\n layoutFields.objects.push(child);\r\n }\r\n }\r\n }\r\n\r\n if (first.isInstanced)\r\n {\r\n this.SetupAttachments(document, layoutFields, extensionDna, transforms, true);\r\n }\r\n for (let index = 0; index < occurrences.length; index++)\r\n {\r\n const target = needsPlacementContainer ? placementFields[index] : layoutFields;\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(document, target, extensionDna, first.buildFlags);\r\n }\r\n this.SetupAudio(document, target, extensionDna, transforms[index]);\r\n }\r\n const hasChildEffects = extensionDna.UsingSof6()\r\n ? extensionDna.GetHullChildSets().length !== 0\r\n : extensionDna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(document, rootFields, fakeFields, extensionDna, transforms, first.buildFlags);\r\n if (needsPlacementContainer)\r\n {\r\n fakeFields.effectChildren.forEach((ref, index) => {\r\n placementFields[index % placementFields.length].objects.push(ref);\r\n });\r\n }\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n for (let index = 0; index < placementFields.length; index++)\r\n {\r\n const fields = placementFields[index];\r\n if (!layoutContainerIsEmpty(fields))\r\n {\r\n const owner = placementAnimationOwners[index];\r\n if (owner) fields.animationOwner = owner;\r\n layoutFields.objects.push(document.AddNode(\"EveChildContainer\", fields));\r\n }\r\n }\r\n }\r\n this.SetupInstancedMeshes(document, rootFields, extensionDna, transforms);\r\n // Only instanced placements bake their locators into the root sets;\r\n // non-instanced children own theirs and the object merges them at\r\n // runtime (Carbon EveSOF.cpp:4171-4174).\r\n if (first.isInstanced)\r\n {\r\n this.SetupLocatorSets(\r\n document,\r\n rootFields,\r\n extensionDna,\r\n transforms,\r\n hasPartTag ? fixedPartTag : null\r\n );\r\n }\r\n }\r\n\r\n if (!targetFields && layoutFields.objects.length !== 0)\r\n {\r\n layoutFields.origin = 1;\r\n layoutFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", layoutFields));\r\n }\r\n return plan;\r\n }\r\n\r\n /** Creates typed effect-area records for EveChildInstancedMeshes.meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateSharedLayoutAreas(document, dna)\r\n {\r\n const result = [];\r\n const types = [\r\n TriBatchType.TRIBATCHTYPE_OPAQUE,\r\n TriBatchType.TRIBATCHTYPE_DECAL,\r\n TriBatchType.TRIBATCHTYPE_TRANSPARENT,\r\n TriBatchType.TRIBATCHTYPE_ADDITIVE,\r\n TriBatchType.TRIBATCHTYPE_DISTORTION\r\n ];\r\n for (const batchType of types)\r\n {\r\n const source = dna.GetHullMeshAreas(batchType, 0);\r\n if (!source) continue;\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData) continue;\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n 0,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n false\r\n );\r\n addEffectShaderOption(document, built.effect, \"SPACE_OBJECT_INSTANCED_ATTACHMENT\", \"SOIA_SHARED\");\r\n result.push(document.AddNode(\"EveChildInstancedMeshArea\", {\r\n effect: built.effect,\r\n batchType: batchType === TriBatchType.TRIBATCHTYPE_DECAL\r\n ? TriBatchType.TRIBATCHTYPE_OPAQUE\r\n : batchType,\r\n areaIndex: Number(built.fields.index) >>> 0,\r\n areaCount: Number(built.fields.count) >>> 0,\r\n // Carbon EveSOF.cpp:434-440/4069-4075 copies the built area's\r\n // cutout/winding flags so instanced occluder raycasts classify\r\n // backfaces correctly.\r\n alphaCutout: !!built.fields.alphaCutout,\r\n reversed: !!built.fields.reversed\r\n }));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /** Converts a placement transform batch into Carbon's non-shared instanced mesh graph. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateLayoutInstancedMesh(document, dna, instances)\r\n {\r\n if (!instances.length) return null;\r\n const ref = this.CreateMesh(dna, document);\r\n if (!ref) return null;\r\n const node = document.GetNode(ref.$ref);\r\n const bounds = translationBounds(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n node.kind = \"Tr2InstancedMesh\";\r\n Object.assign(node.fields, {\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(node.fields.geometryResPath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maximumInstanceScale(instances)\r\n });\r\n return { ref, instanceData, bounds };\r\n }\r\n\r\n /** Emits Carbon's ship-only booster graph and booster locator records. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBoosters(document, rootFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n\r\n let alwaysOn = false;\r\n let hasTrails = false;\r\n let locatorIndex = 0;\r\n const items = [];\r\n const boosterLocatorRefs = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { alwaysOn: false, hasTrails: true, items: [] };\r\n alwaysOn = hull.alwaysOn === true;\r\n hasTrails ||= hull.hasTrails === true;\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: `locator_booster_${++locatorIndex}`,\r\n transform\r\n }));\r\n\r\n const ignoredScale = vec3.create();\r\n const rotation = quat.create();\r\n const position = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(item.transform, identityMatrix()),\r\n rotation,\r\n position,\r\n ignoredScale\r\n );\r\n position[0] += hullOffset[0];\r\n position[1] += hullOffset[1];\r\n position[2] += hullOffset[2];\r\n boosterLocatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: [0, 0, 0],\r\n boneIndex: -1\r\n }));\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n functionality: arrayValue(item.functionality, [0, 1, 1, 1]),\r\n hasTrail: item.hasTrail !== false,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, \"boosters\", boosterLocatorRefs);\r\n\r\n const effect = createBoosterEffect(document, race, \"BOOSTER_LOD_HIGH\");\r\n const effectFar = createBoosterEffect(document, race, \"BOOSTER_LOD_LOW\");\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", {\r\n sprites: [],\r\n effect: glowEffect\r\n });\r\n\r\n let trails = null;\r\n if (hasTrails)\r\n {\r\n const trailEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/VolumetricTrails.fx\",\r\n options: [],\r\n constParameters: [\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailSize\",\r\n value: arrayValue(race.trailSize, [0, 0, 0, 0])\r\n }),\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailColor\",\r\n value: arrayValue(race.trailColor, [0, 0, 0, 0])\r\n })\r\n ],\r\n parameters: [],\r\n resources: [],\r\n samplerOverrides: []\r\n });\r\n trails = document.AddNode(\"EveTrailsSet\", {\r\n // Carbon: trail->SetMeshResPath(g_volumetricTrailPath) (EveSOF.cpp:2720).\r\n geometryResPath: this.volumetricTrailPath,\r\n effect: trailEffect\r\n });\r\n }\r\n\r\n rootFields.boosters = document.AddNode(\"EveBoosterSet2\", {\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n alwaysOn,\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n trails,\r\n items\r\n });\r\n return rootFields.boosters;\r\n }\r\n\r\n /**\r\n * Emits the child-graph booster set into a placement container (Carbon\r\n * EveSOF::SetupChildBoosters, EveSOF.cpp:3049-3132): per-hull\r\n * driveName/effectPath/parameter/texture overrides with the\r\n * EveChildBoosterSet defaults as fallback, the LOD effect pair, one glow\r\n * sprite set, and every hull's items with the cumulative multi-hull\r\n * offset. Quad-renderer registration and PrepareResources are engine\r\n * realizations; the booster set node carries everything else.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildBoosters(document, placementFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n const hull0 = dna.GetHullBoosterData(0) ?? {};\r\n\r\n // EveChildBoosterSet.DEFAULT_DRIVE_NAME / DEFAULT_EFFECT_PATH\r\n // (EveChildBoosterSet.h:94-96); SOF stays import-free of trinity.\r\n const driveName = hull0.driveName || \"ThrustMain\";\r\n const effectPath = hull0.effectPath ||\r\n \"res:/Graphics/Effect/Managed/Space/Booster/ChildBoosterVolumetric.fx\";\r\n const effect = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_HIGH\", effectPath, hull0.parameters, hull0.textures);\r\n const effectFar = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_LOW\", effectPath, hull0.parameters, hull0.textures);\r\n\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", { sprites: [], effect: glowEffect });\r\n\r\n const items = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { items: [] };\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n\r\n const ref = document.AddNode(\"EveChildBoosterSet\", {\r\n name: \"Boosters\",\r\n driveName,\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n items\r\n });\r\n placementFields.objects.push(ref);\r\n return ref;\r\n }\r\n\r\n /**\r\n * Normalizes a controller or model-curve resource, retaining resolver-free\r\n * references and enforcing the Carbon interface required by its role.\r\n */\r\n #resolveObjectResource(path, role)\r\n {\r\n if (!this.#objectResourceResolver)\r\n {\r\n // Controllers have Carbon's own deferred node: Tr2ControllerReference\r\n // persists the path and loads the controller at runtime\r\n // (Tr2ControllerReference_Blue.cpp:16-23).\r\n if (role === \"controller\")\r\n {\r\n return {\r\n kind: \"Tr2ControllerReference\",\r\n reference: true,\r\n fields: { path: String(path ?? \"\") },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n // Model curves have no Carbon reference node - Carbon inline-loads\r\n // them only because its blocking BeResMan made that free; nothing\r\n // about the loaded curve feeds back into composition. They defer\r\n // through the CarbonEngineJS-original CjsExternalRef, carrying the\r\n // interface gate for the loader to enforce at splice time.\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n return {\r\n kind: \"CjsExternalRef\",\r\n reference: true,\r\n fields: {\r\n resPath: String(path ?? \"\"),\r\n expects: gate ? gate.interfaceName : \"\"\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#objectResourceResolver(String(path ?? \"\"), { role });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: controllers log \"controller resource file %s is invalid!\"\r\n // (EveSOF.cpp:2028-2031); model curves skip silently (1672-1690).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-object-resource\",\r\n reason: \"not-resolved\",\r\n role,\r\n path: String(path ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must return an object descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF object document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF object values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor requires a root kind\");\r\n }\r\n // Carbon loads these roles through typed LoadObject calls, so a root that\r\n // does not implement the role's interface never attaches: controllers log\r\n // and skip (EveSOF.cpp:2024-2031); model curves skip (1672-1690).\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n if (gate && !gate.kinds.has(kind) && !descriptorClaimsInterface(descriptor, gate.interfaceName))\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"object-resource-wrong-type\",\r\n role,\r\n path: String(path ?? \"\"),\r\n kind,\r\n expected: gate.interfaceName\r\n });\r\n return null;\r\n }\r\n return {\r\n kind,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Imports a resolved values or document root into the builder, or allocates a\r\n * standalone node, then overlays any raw fields.\r\n */\r\n #addObjectResource(document, descriptor)\r\n {\r\n if (!descriptor.fragment && !descriptor.values)\r\n {\r\n return document.AddNode(descriptor.kind, cloneFields(descriptor.fields), cloneValue(descriptor.raw));\r\n }\r\n const ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n const node = document.GetNode(ref.$ref);\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n return ref;\r\n }\r\n\r\n /** Emits the currently maintained Carbon attachment stages in source order. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAttachments(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n // Carbon caches this effect on the EveSOF instance. Document-local sharing\r\n // avoids cross-build graph identity; do not widen it without an operational\r\n // consumer that requires mutable identity across builds.\r\n const sharedSpriteEffect = { ref: null };\r\n this.SetupSpriteSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupSpotlightSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupPlaneSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupSpriteLineSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupHazeSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n // Carbon gates banners on the owner's root object casting to EveSpaceObject2;\r\n // only space-object roots carry the externalParameters banner surface.\r\n if (Array.isArray(rootFields.externalParameters))\r\n {\r\n if (dna.UsingSof6()) this.SetupBannerSets(document, rootFields, dna, offsets);\r\n else this.SetupBanners(document, rootFields, dna, offsets);\r\n }\r\n this.SetupLights(document, rootFields, dna, offsets);\r\n }\r\n\r\n /** Emits visible EveSpriteSet attachments and their SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const sprites = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = Array.from(sourceColor, value => Number(value) * Number(item.intensity ?? 1));\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n arrayValue(offset, identityMatrix())\r\n );\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n sprites.push(document.AddNode(\"EveSpriteSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n falloff: Number(item.falloff ?? 0),\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n color\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + position[0],\r\n Number(item.light.translation?.[1] ?? 0) + position[1],\r\n Number(item.light.translation?.[2] ?? 0) + position[2]\r\n ],\r\n rotation: arrayValue(item.light.rotation, [0, 0, 0, 1]),\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteSet\", {\r\n effect: sharedEffect.ref,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n sprites,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon spotlight geometry, effects, and authored SOF6 light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpotlightSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpotlightSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n\r\n const coneEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightconepool.fx\",\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"zOffset\",\r\n value: Array(4).fill(Number(set.zOffset ?? 0))\r\n })],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.coneTextureResPath ?? \"\")\r\n })]\r\n });\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightglowpool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.glowTextureResPath ?? \"\")\r\n })]\r\n });\r\n const spotlightItems = [];\r\n const lights = [];\r\n let index = 0;\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n let coneColor;\r\n let flareColor;\r\n let spriteColor;\r\n let lightColor;\r\n if (dna.UsingSof6())\r\n {\r\n lightColor = dna.GetColorSet()[item.colorType];\r\n if (!lightColor) continue;\r\n coneColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.75, 0.5), item.coneIntensity);\r\n flareColor = multiplyColor(modifyColor(lightColor, item.saturation, 1), item.flareIntensity);\r\n spriteColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.9, 0.75), item.spriteIntensity);\r\n }\r\n else\r\n {\r\n const faction = dna.GetFactionSpotlightSetData(item.groupIndex);\r\n if (!faction) continue;\r\n coneColor = multiplyColor(faction.coneColor, item.coneIntensity);\r\n flareColor = multiplyColor(faction.flareColor, item.flareIntensity);\r\n spriteColor = multiplyColor(faction.spriteColor, item.spriteIntensity);\r\n lightColor = faction.coneColor;\r\n }\r\n const selectorFields = dna.UsingSof6()\r\n ? { _colorType: Number(item.colorType ?? 0) }\r\n : {};\r\n\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n mat4.multiply(\r\n transform,\r\n mat4.fromTranslation(mat4.create(), hullOffset),\r\n transform\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n\r\n spotlightItems.push(document.AddNode(\"EveSpotlightSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n coneColor,\r\n flareColor,\r\n spriteColor,\r\n spriteScale: arrayValue(item.spriteScale, [1, 1, 1]),\r\n transform\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, scaling);\r\n const scale = Array.from(scaling, Math.abs);\r\n const angle = scale[2] > 0\r\n ? Math.atan(Math.max(scale[0], scale[1]) / (2 * scale[2])) * 180 / Math.PI\r\n : 0;\r\n const localPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(item.light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(localPosition, localPosition, position);\r\n lights.push(document.AddNode(\"EveSpotlightLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(localPosition),\r\n rotation: Array.from(rotation),\r\n color: saturateColor(lightColor, item.saturation * item.light.saturation),\r\n innerAngle: Number(item.light.innerAngleMultiplier ?? 0.5) * angle,\r\n outerAngle: Number(item.light.outerAngleMultiplier ?? 1) * angle,\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1) * scale[2],\r\n radius: Number(item.light.outerScaleMultiplier ?? 1) * scale[2],\r\n brightness: Number(item.light.intensity ?? 1) * Number(item.coneIntensity ?? 0),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n texturePath: String(item.light.lightProfilePath ?? \"\"),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\"),\r\n boosterGainInfluence: item.boosterGainInfluence === true\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveSpotlightSet\", {\r\n coneEffect,\r\n glowEffect,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spotlightItems\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon plane-set effects, items, and authored SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupPlaneSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullPlaneSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n const skinned = set.skinned === true && !isInstancedPlacement;\r\n const resources = [];\r\n let imageMap = null;\r\n let pickBufferID = 0;\r\n if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/inspacevideos\"\r\n });\r\n resources.push(imageMap);\r\n }\r\n else if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/hangarvideos\"\r\n });\r\n resources.push(imageMap);\r\n pickBufferID = 100;\r\n }\r\n const layerMap1 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer1Map\",\r\n resourcePath: String(set.layer1MapResPath ?? \"\")\r\n });\r\n const layerMap2 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer2Map\",\r\n resourcePath: String(set.layer2MapResPath ?? \"\")\r\n });\r\n const maskMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"MaskMap\",\r\n resourcePath: String(set.maskMapResPath ?? \"\")\r\n });\r\n resources.push(layerMap1, layerMap2, maskMap);\r\n const planeData = [\r\n set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HAZE ? 1 : 0,\r\n Number(set.atlasSize ?? 1),\r\n Math.floor(Number(set.atlasAspectRatio?.[0] ?? 1)),\r\n Math.floor(Number(set.atlasAspectRatio?.[1] ?? 1))\r\n ];\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: getPlaneSetEffectPath(set.usage, skinned),\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"PlaneData\",\r\n value: planeData\r\n })],\r\n parameters: [],\r\n resources\r\n });\r\n\r\n const planes = [];\r\n const lights = [];\r\n let usesLightParameters = false;\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n let color;\r\n let selectorFields = {};\r\n if (dna.UsingSof6())\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n color = saturateColor(multiplyColor(sourceColor, item.intensity), item.saturation);\r\n selectorFields = { _colorType: Number(item.colorType ?? 0) };\r\n }\r\n else\r\n {\r\n color = arrayValue(item.color, [1, 1, 1, 1]);\r\n const faction = dna.GetFactionPlaneSetData(item.groupIndex);\r\n if (faction) color = arrayValue(faction.color, [0, 0, 0, 0]);\r\n }\r\n\r\n const blinkData = [\r\n Number(item.rate ?? 1),\r\n Number(item.phase ?? 0),\r\n Number(item.dutyCycle ?? 1),\r\n Number(item.blinkMode ?? 0)\r\n ];\r\n planes.push(document.AddNode(\"EvePlaneSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n color,\r\n layer1Scroll: arrayValue(item.layer1Scroll, [0, 0, 0, 0]),\r\n layer1Transform: arrayValue(item.layer1Transform, [0, 0, 0, 0]),\r\n layer2Scroll: arrayValue(item.layer2Scroll, [0, 0, 0, 0]),\r\n layer2Transform: arrayValue(item.layer2Transform, [0, 0, 0, 0]),\r\n maskAtlasID: Number(item.maskMapAtlasIndex ?? 0) >>> 0,\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n blinkData\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.lights.length) usesLightParameters = true;\r\n for (const light of item.lights)\r\n {\r\n const maxScale = Math.max(...arrayValue(item.scaling, [1, 1, 1]));\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n lights.push(document.AddNode(\"EvePlaneLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(color, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n lightProfilePath: String(light.lightProfilePath ?? \"\"),\r\n fadeType: Number(item.blinkMode ?? 0),\r\n blinkPhase: Number(item.phase ?? 0),\r\n blinkRate: Number(item.rate ?? 1)\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EvePlaneSet\", {\r\n effect,\r\n lights,\r\n pickBufferID,\r\n planes,\r\n skinned,\r\n imageMapParameter: usesLightParameters ? imageMap : null,\r\n layerMap1Parameter: usesLightParameters ? layerMap1 : null,\r\n layerMap2Parameter: usesLightParameters ? layerMap2 : null,\r\n maskMapParameter: usesLightParameters ? maskMap : null\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon sprite-line geometry and authored SOF6 per-sprite lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteLineSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteLineSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const spriteLines = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.intensity);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n const line = {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkPhaseShift: Number(item.blinkPhaseShift ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n color,\r\n falloff: Number(item.falloff ?? 0),\r\n isCircle: item.isCircle === true,\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n spacing: Number(item.spacing ?? 1)\r\n };\r\n spriteLines.push(document.AddNode(\"EveSpriteLineSetItem\", line));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n let lightRotation = arrayValue(item.light.rotation, [0, 0, 0, 1]);\r\n const positions = getSpriteLinePositions(line);\r\n for (let spriteIndex = 0; spriteIndex < positions.length; spriteIndex++)\r\n {\r\n lightRotation = Array.from(quat.normalize(\r\n quat.create(),\r\n quat.multiply(quat.create(), line.rotation, lightRotation)\r\n ));\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + positions[spriteIndex][0] + line.position[0],\r\n Number(item.light.translation?.[1] ?? 0) + positions[spriteIndex][1] + line.position[1],\r\n Number(item.light.translation?.[2] ?? 0) + positions[spriteIndex][2] + line.position[2]\r\n ],\r\n rotation: lightRotation,\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0) + Number(item.blinkPhaseShift ?? 0) * spriteIndex,\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteLineSet\", {\r\n effect: sharedEffect.ref,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spriteLines\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon haze geometry and authored SOF6 point-light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupHazeSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n // Carbon keeps three haze effects on the EveSOF instance. The document\r\n // contract shares by path only inside this build, matching its identity\r\n // boundary while the effects remain immutable.\r\n const effects = new Map();\r\n const getEffect = (path) =>\r\n {\r\n if (!path) return null;\r\n if (!effects.has(path))\r\n {\r\n effects.set(path, document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: path,\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n }));\r\n }\r\n return effects.get(path);\r\n };\r\n\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullHazeSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n let effectPath = \"\";\r\n if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_SPHERICAL)\r\n {\r\n effectPath = set.skinned === true && !isInstancedPlacement\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_hazespherical.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/hazespherical.fx\";\r\n }\r\n else if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_HALFSPHERICAL)\r\n {\r\n effectPath = \"res:/graphics/effect/managed/space/spaceobject/fx/hazehalfspherical.fx\";\r\n }\r\n\r\n const hazes = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.hazeBrightness);\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n hazes.push(document.AddNode(\"EveHazeSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n color,\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n position: Array.from(position),\r\n hazeData: [\r\n Number(item.hazeFalloff ?? 6),\r\n Number(item.sourceSize ?? 0.2),\r\n Number(item.sourceBrightness ?? 2),\r\n item.boosterGainInfluence === true ? 1 : 0\r\n ]\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n for (const light of item.lights)\r\n {\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveHazeSetLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(sourceColor, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveHazeSet\", {\r\n effect: getEffect(effectPath),\r\n display: true,\r\n hazes,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's legacy per-item-visible banner groups. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBanners(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBanners(hullIndex))\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of set.items)\r\n {\r\n if (!dna.IsInVisibilityData(value.visibilityGroup)) continue;\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.bannerLight;\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const radius = Number(light.radiusMultiplier ?? 1) * Math.max(scaling[0], scaling[1], scaling[2]);\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: item.position,\r\n rotation: [0, 0, 0, 1],\r\n color: [0, 0, 0, 0],\r\n radius,\r\n innerRadius: radius * Number(light.innerRadiusMultiplier ?? 0.3),\r\n brightness: Number(light.brightness ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index: index++,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: \"\"\r\n }));\r\n }\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(set.usage), banners, lights, EveSOFDataHullBanner.Usage._USAGE_COUNT);\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's SOF6 visibility-grouped banner sets. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBannerSets(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBannerSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup) || set.bannerTypes.size === 0) continue;\r\n for (const [usage, values] of set.bannerTypes)\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of values)\r\n {\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.light;\r\n if (light)\r\n {\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n item.rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, item.position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n item.rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: [0, 0, 0, 0],\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(usage), banners, lights, EveSOFDataHullBannerSetItem.Usage._USAGE_COUNT);\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon hull lights with faction visibility, color, and multi-hull transforms. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLights(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const lightSet of dna.GetHullLightSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(lightSet.visibilityGroup)) continue;\r\n for (const item of lightSet.items)\r\n {\r\n const lightKind = getLightKind(item.type);\r\n const color = dna.GetColorSet()[item.lightColor];\r\n if (!lightKind || !color) continue;\r\n\r\n for (const offset of offsets)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n // Flattened emission (2026-07-23 LightData flatten decision): the\r\n // Tr2 light classes persist the Blue-mapped LightData members as\r\n // flat fields, so hull lights emit Carbon's flat Blue shape. The\r\n // packed-set light items above still emit nested lightData bags\r\n // until their classes migrate. startTime carries the injected\r\n // buildTime, matching Carbon's GetCurrentTime() stamp at build.\r\n const lightFields = {\r\n ...(lightKind.className !== \"Tr2TexturedPointLight\"\r\n ? { _lightColor: Number(item.lightColor ?? 0) }\r\n : {}),\r\n startTime: this.buildTime,\r\n flags: Number(item.flags ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n radius: Number(item.radius ?? 0),\r\n innerRadius: Number(item.innerRadius ?? 0),\r\n color: Array.from(color),\r\n brightness: Number(item.brightness ?? 0),\r\n noiseAmplitude: Number(item.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.noiseOctaves ?? 1),\r\n castsShadows: 0,\r\n isVolumetric: false\r\n };\r\n if (lightKind.className === \"Tr2SpotLight\")\r\n {\r\n lightFields.innerAngle = Number(item.innerAngle ?? 0);\r\n lightFields.outerAngle = Number(item.outerAngle ?? 0);\r\n }\r\n if (lightKind.className === \"Tr2TexturedPointLight\")\r\n {\r\n lightFields.texturePath = String(item.texturePath ?? \"\");\r\n }\r\n rootFields.lights.push(document.AddNode(lightKind.className, {\r\n ...lightFields,\r\n type: lightKind.type,\r\n ...(lightKind.isDynamic ? { isDynamic: true } : {})\r\n }));\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Adds turret and last-hull audio locators with Carbon multi-hull offsets. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocators(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const locator of dna.GetHullTurretLocators(hullIndex))\r\n {\r\n const transform = arrayValue(locator.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: locator.name,\r\n transform\r\n }));\r\n }\r\n const audioPosition = dna.GetHullAudioPosition(hullIndex);\r\n if (audioPosition)\r\n {\r\n const transform = identityMatrix();\r\n transform[12] = Number(audioPosition[0] ?? 0) + hullOffset[0];\r\n transform[13] = Number(audioPosition[1] ?? 0) + hullOffset[1];\r\n transform[14] = Number(audioPosition[2] ?? 0) + hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: \"locator_audio_booster\",\r\n transform\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Builds the armour-damage shader effect node, or null when the DNA lacks\r\n * damage data (Carbon EveSOF.cpp:2579-2603 CreateArmorDamageEffect; the\r\n * ArmorDamageEffectCache keyed on race+animated is a performance follow-up).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateArmorDamageEffect(document, dna)\r\n {\r\n const damage = dna.GetGenericDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return null;\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(damage.armorShader),\r\n constParameters: effectParameters(document, raceDamage.armorDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.armorDamageTextures)\r\n });\r\n }\r\n\r\n /**\r\n * Emits the hull's locator sets UNTRANSFORMED - only the multi-hull offset\r\n * applied - for a placement child to own, so the object merges them at\r\n * runtime through the child's live transform and skeleton (Carbon\r\n * EveSOF.cpp:3384-3432 BuildHullLocalLocatorSets). Same-name sets across\r\n * hulls merge into one node; bone indices stay authored because they\r\n * address the CHILD's skeleton.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n BuildHullLocalLocatorSets(document, dna)\r\n {\r\n const bySetName = new Map();\r\n const result = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n if (!locators.length) continue;\r\n let target = bySetName.get(name);\r\n if (!target)\r\n {\r\n target = [];\r\n bySetName.set(name, target);\r\n result.push(document.AddNode(\"EveLocatorSets\", { name, locators: target }));\r\n }\r\n for (const locator of locators)\r\n {\r\n target.push(document.AddNode(\"Locator\", {\r\n position: [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n direction: arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1)\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n return result;\r\n }\r\n\r\n /** Merges same-name locator sets across all hulls in Carbon map order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocatorSets(document, rootFields, dna, offsets = [identityMatrix()], partTag = null)\r\n {\r\n const transforms = Array.isArray(offsets) && offsets.length !== 0\r\n ? offsets\r\n : [identityMatrix()];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n const locatorRefs = [];\r\n for (const offset of transforms)\r\n {\r\n for (const locator of locators)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n const composed = mat4.multiply(\r\n mat4.create(),\r\n arrayValue(offset, identityMatrix()),\r\n transform\r\n );\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(composed, rotation, position, ignoredScale);\r\n locatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1),\r\n ...(partTag === null ? {} : { partTag: normalizePartTag(partTag) })\r\n }));\r\n }\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, name, locatorRefs);\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Overwrites turret shader constants or vector parameters with the\r\n * turret-area material selected by a faction catalog entry (Carbon\r\n * EveSOF.cpp:4260-4269).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromFaction(turretSet, factionName)\r\n {\r\n const factionData = this.dataMgr.GetFactionData(factionName);\r\n if (!factionData) return;\r\n this.ApplyFactionToTurretShader(turretSet, this.dataMgr.GetGenericData(), factionData);\r\n }\r\n\r\n /**\r\n * Overrides turret shader parameters with a faction's turret-area material\r\n * (Carbon EveSOF.cpp:4201-4254). Carbon receives the Tr2Effect; here the\r\n * turret that owns the effects receives the resolved values, because SOF\r\n * cannot import the Trinity layer that walks a Tr2Effect.\r\n * @param {Object} turret - an EveTurretSet or EveChildTurret\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"SOF cannot import Trinity, so the Tr2Effect walk is delegated to the turret's ApplySofTurretMaterial; the faction value resolution is Carbon's.\")\r\n ApplyFactionToTurretShader(turret, genericData, factionData)\r\n {\r\n turret.ApplySofTurretMaterial(parameterName => findTurretFactionParameter(\r\n this.dataMgr,\r\n genericData,\r\n factionData,\r\n parameterName\r\n ));\r\n }\r\n\r\n /**\r\n * Applies a faction's turret-area material to every opaque area of a child\r\n * turret's mesh (Carbon EveSOF.cpp:4271-4298).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupChildTurretMaterialFromFaction(childTurret, factionName)\r\n {\r\n const factionData = this.dataMgr.GetFactionData(factionName);\r\n if (!childTurret || !factionData) return;\r\n this.ApplyFactionToTurretShader(childTurret, this.dataMgr.GetGenericData(), factionData);\r\n }\r\n\r\n /**\r\n * Parses the parent DNA and applies its faction turret values to matching\r\n * shader constants or vector parameters.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromDNA(turretSet, dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return;\r\n turretSet.ApplySofTurretMaterial(parameterName => dna.GetFactionTurretParameters(parameterName));\r\n }\r\n\r\n}\r\n\r\nfunction findTurretFactionParameter(dataMgr, genericData, factionData, parameterName)\r\n{\r\n const prefixes = genericData?.materialPrefixes ?? [];\r\n const info = new EveSOFUtilsParameterName(prefixes, parameterName);\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialIndex = info.GetMaterialIdx();\r\n const usageIndex = Number(\r\n factionData.materialUsageList?.[materialIndex] ?? materialIndex\r\n );\r\n info.ChangeMaterialIdx(genericData, usageIndex);\r\n }\r\n // Carbon EveSOF.cpp:4223 and :4243 read the generic turret area type\r\n // (default TYPE_PRIMARY) since trinity bc9cb374.\r\n return findTurretAreaParameter(\r\n dataMgr,\r\n factionData.colorData?.colors ?? [],\r\n factionData.areaMaterials,\r\n Number(genericData?.turretAreaType ?? EveSOFDataArea.AreaType.TYPE_PRIMARY),\r\n info\r\n );\r\n}\r\n\r\nfunction findTurretAreaParameter(dataMgr, colors, areaMaterials, areaType, info)\r\n{\r\n if (!areaMaterials) return null;\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialName = areaMaterials.materialNames?.get(\r\n `${areaType}:${info.GetMaterialIdx()}`\r\n );\r\n const value = dataMgr.GetMaterialData(materialName)?.parameters?.get(info.GetShortName());\r\n if (value) return value;\r\n }\r\n else\r\n {\r\n const colorType = areaMaterials.glowColor?.get(`${areaType}:${info.GetFullName()}`);\r\n if (colorType !== undefined) return colors[colorType] ?? null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction arrayValue(value, fallback)\r\n{\r\n return value ? Array.from(value) : fallback.slice();\r\n}\r\n\r\nfunction composeChildPlacement(source, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n arrayValue(source.translation, [0, 0, 0]),\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n translation: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n origin: 1\r\n };\r\n}\r\n\r\nfunction createInheritProperties(document, dna)\r\n{\r\n const colorSet = dna.GetColorSet();\r\n const fields = {};\r\n for (let index = 0; index < INHERIT_COLOR_PROPERTIES.length; index++)\r\n {\r\n fields[INHERIT_COLOR_PROPERTIES[index]] = arrayValue(colorSet?.[index], [0, 0, 0, 0]);\r\n }\r\n return document.AddNode(\"EveChildInheritProperties\", fields);\r\n}\r\n\r\nfunction collectDynamicEmitterRefs(document, rootRef, target)\r\n{\r\n const result = [];\r\n const seen = new Set();\r\n const addEmitters = node =>\r\n {\r\n for (const ref of Array.isArray(node?.fields?.particleEmitters) ? node.fields.particleEmitters : [])\r\n {\r\n const emitter = document.GetNode(Number(ref?.$ref));\r\n if (emitter?.kind === \"Tr2DynamicEmitter\" && !seen.has(emitter.id))\r\n {\r\n seen.add(emitter.id);\r\n result.push({ $ref: emitter.id });\r\n }\r\n }\r\n };\r\n const visitTransform = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`transform:${node.id}`)) return;\r\n seen.add(`transform:${node.id}`);\r\n addEmitters(node);\r\n for (const childRef of Array.isArray(node.fields?.children) ? node.fields.children : [])\r\n {\r\n const child = document.GetNode(Number(childRef?.$ref));\r\n if (child?.kind === \"EveTransform\") visitTransform(childRef);\r\n }\r\n };\r\n const visitEffectChild = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`effect:${node.id}`)) return;\r\n seen.add(`effect:${node.id}`);\r\n if (node.kind === \"EveChildParticleSystem\")\r\n {\r\n addEmitters(node);\r\n }\r\n else if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const childRef of Array.isArray(node.fields?.objects) ? node.fields.objects : [])\r\n {\r\n visitEffectChild(childRef);\r\n }\r\n }\r\n };\r\n if (target === \"children\") visitTransform(rootRef);\r\n else visitEffectChild(rootRef);\r\n return result;\r\n}\r\n\r\nfunction scalarKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: Number(value),\r\n leftTangent: 0,\r\n rightTangent: 0,\r\n id: 0,\r\n interpolation: 1,\r\n tangentType: 1\r\n };\r\n}\r\n\r\nfunction quaternionKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: arrayValue(value, [0, 0, 0, 1]),\r\n id: 0,\r\n interpolation: 1\r\n };\r\n}\r\n\r\nfunction identityMatrix()\r\n{\r\n return [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ];\r\n}\r\n\r\nfunction decomposeCarbonMatrix(matrix, rotation, translation, scaling)\r\n{\r\n const scaleX = Math.hypot(matrix[0], matrix[1], matrix[2]);\r\n const scaleY = Math.hypot(matrix[4], matrix[5], matrix[6]);\r\n const scaleZ = Math.hypot(matrix[8], matrix[9], matrix[10]);\r\n scaling[0] = scaleX;\r\n scaling[1] = scaleY;\r\n scaling[2] = scaleZ;\r\n translation[0] = matrix[12];\r\n translation[1] = matrix[13];\r\n translation[2] = matrix[14];\r\n\r\n if (scaleX === 0 || scaleY === 0 || scaleZ === 0)\r\n {\r\n rotation[0] = 0;\r\n rotation[1] = 0;\r\n rotation[2] = 0;\r\n rotation[3] = 1;\r\n return matrix;\r\n }\r\n\r\n const normalized = mat4.create();\r\n normalized[0] = matrix[0] / scaleX;\r\n normalized[1] = matrix[1] / scaleX;\r\n normalized[2] = matrix[2] / scaleX;\r\n normalized[4] = matrix[4] / scaleY;\r\n normalized[5] = matrix[5] / scaleY;\r\n normalized[6] = matrix[6] / scaleY;\r\n normalized[8] = matrix[8] / scaleZ;\r\n normalized[9] = matrix[9] / scaleZ;\r\n normalized[10] = matrix[10] / scaleZ;\r\n mat4.getRotation(rotation, normalized);\r\n return matrix;\r\n}\r\n\r\nfunction addOffset(target, value)\r\n{\r\n if (!value) return;\r\n target[0] += Number(value[0] ?? 0);\r\n target[1] += Number(value[1] ?? 0);\r\n target[2] += Number(value[2] ?? 0);\r\n}\r\n\r\nfunction getLightKind(value)\r\n{\r\n switch (Number(value))\r\n {\r\n case EveSOFDataHullLightSetItem.LightType.POINT_LIGHT:\r\n return { className: \"Tr2PointLight\", type: 1, isDynamic: false };\r\n case EveSOFDataHullLightSetItem.LightType.TEXTURED_POINT_LIGHT:\r\n return { className: \"Tr2TexturedPointLight\", type: 1, isDynamic: true };\r\n case EveSOFDataHullLightSetItem.LightType.SPOT_LIGHT:\r\n return { className: \"Tr2SpotLight\", type: 2, isDynamic: false };\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction saturateColor(value, saturation)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n if (Number(saturation) === 1) return source;\r\n const intensity = source[0] * 0.299 + source[1] * 0.587 + source[2] * 0.114;\r\n const factor = Math.max(0, Number(saturation));\r\n return [\r\n intensity + (source[0] - intensity) * factor,\r\n intensity + (source[1] - intensity) * factor,\r\n intensity + (source[2] - intensity) * factor,\r\n source[3]\r\n ];\r\n}\r\n\r\nfunction multiplyColor(value, multiplier)\r\n{\r\n return arrayValue(value, [0, 0, 0, 0]).map(component => component * Number(multiplier ?? 0));\r\n}\r\n\r\nfunction modifyColor(value, saturation, brightness)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n const divisor = Math.max(source[0], source[1], source[2], 1);\r\n const red = source[0] / divisor;\r\n const green = source[1] / divisor;\r\n const blue = source[2] / divisor;\r\n const maximum = Math.max(red, green, blue);\r\n const minimum = Math.min(red, green, blue);\r\n const delta = maximum - minimum;\r\n let hue = 0;\r\n let hsvSaturation = 0;\r\n if (delta !== 0)\r\n {\r\n hsvSaturation = maximum !== 0 ? delta / maximum : 0;\r\n if (red === maximum) hue = (green - blue) / delta;\r\n else if (green === maximum) hue = 2 + (blue - red) / delta;\r\n else hue = 4 + (red - green) / delta;\r\n hue *= 60;\r\n if (hue < 0) hue += 360;\r\n }\r\n hsvSaturation *= Number(saturation);\r\n const hsvValue = maximum * Number(brightness);\r\n return [...hsvToRgb(hue, hsvSaturation, hsvValue), source[3]];\r\n}\r\n\r\nfunction hsvToRgb(hue, saturation, value)\r\n{\r\n const nextSaturation = saturation === 0 ? 1e-9 : saturation;\r\n const sector = hue / 60;\r\n const index = Math.floor(sector);\r\n const fraction = sector - index;\r\n const p = value * (1 - nextSaturation);\r\n const q = value * (1 - nextSaturation * fraction);\r\n const t = value * (1 - nextSaturation * (1 - fraction));\r\n switch (index)\r\n {\r\n case 0: return [value, t, p];\r\n case 1: return [q, value, p];\r\n case 2: return [p, value, t];\r\n case 3: return [p, q, value];\r\n case 4: return [t, p, value];\r\n default: return [value, p, q];\r\n }\r\n}\r\n\r\nfunction getPlaneSetEffectPath(usage, skinned)\r\n{\r\n switch (Number(usage))\r\n {\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_STANDARD:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HAZE:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planeglow.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planeglow.fx\";\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planehologram.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planehologram.fx\";\r\n default:\r\n return \"\";\r\n }\r\n}\r\n\r\nfunction getSpriteLinePositions(item)\r\n{\r\n const result = [];\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n const rotation = arrayValue(item.rotation, [0, 0, 0, 1]);\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n if (item.isCircle)\r\n {\r\n const count = Math.max(0, Math.trunc(Number(item.spacing ?? 1)));\r\n for (let index = 0; index < count; index++)\r\n {\r\n const angle = index * Math.PI * 2 / Number(item.spacing);\r\n const point = vec3.transformQuat(\r\n vec3.create(),\r\n [scaling[0] * Math.sin(angle), 0, scaling[1] * Math.cos(angle)],\r\n rotation\r\n );\r\n vec3.add(point, point, position);\r\n result.push(Array.from(point));\r\n }\r\n }\r\n else\r\n {\r\n const count = Math.max(0, Math.trunc(Number(scaling[0] ?? 0)));\r\n const direction = vec3.transformQuat(vec3.create(), [1, 0, 0], rotation);\r\n const point = position.slice();\r\n for (let index = 0; index < count; index++)\r\n {\r\n result.push(point.slice());\r\n point[0] += Number(item.spacing ?? 1) * direction[0];\r\n point[1] += Number(item.spacing ?? 1) * direction[1];\r\n point[2] += Number(item.spacing ?? 1) * direction[2];\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction addBannerItem(document, source, hullOffset, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(source.position?.[0] ?? 0) + hullOffset[0],\r\n Number(source.position?.[1] ?? 0) + hullOffset[1],\r\n Number(source.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n ref: document.AddNode(\"EveBannerItem\", {\r\n bone: Number(source.bone ?? -1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n angleX: Number(source.angleX ?? 0),\r\n angleY: Number(source.angleY ?? 0),\r\n reference: Number(source.reference ?? 0) | 0\r\n }),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation)\r\n };\r\n}\r\n\r\nfunction addBannerSet(document, rootFields, dna, usage, banners, lights, usageCount)\r\n{\r\n const shader = dna.GetGenericBannerShaderData() ?? {\r\n shader: \"\",\r\n defaultParameters: new Map(),\r\n defaultTextures: new Map()\r\n };\r\n const constParameters = sortedKeys(shader.defaultParameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: arrayValue(shader.defaultParameters.get(name), [0, 0, 0, 0])\r\n }));\r\n const resources = sortedKeys(shader.defaultTextures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: String(shader.defaultTextures.get(name)?.resFilePath ?? \"\")\r\n }));\r\n const imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"\"\r\n });\r\n resources.push(imageMap);\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: String(shader.shader ?? \"\"),\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n rootFields.attachments.push(document.AddNode(\"EveBannerSet\", {\r\n banners,\r\n effect,\r\n isPickable: false,\r\n display: true,\r\n key: usage,\r\n lights,\r\n primaryTextureParameter: imageMap\r\n }));\r\n rootFields.externalParameters.push(document.AddNode(\"Tr2ExternalParameter\", {\r\n name: usage >= 0 && usage < usageCount ? BANNER_EXTERNAL_PARAMETER_NAMES[usage] : \"\",\r\n destinationObject: imageMap,\r\n destinationAttribute: \"resourcePath\"\r\n }));\r\n}\r\n\r\nfunction buildMeshArea(document, dna, area, shaderData, batchType, meshIndexOffset, resolveTexturePath, alphaCutoutShadowsEnabled = false, emitArea = true)\r\n{\r\n // FillMeshAreaVector's runtime state (EveSOF.cpp:576-592,668-672): opaque\r\n // areas cast shadows, decal areas follow the alpha-cutout setting, all other\r\n // batch types do not; depth generation comes from the generic shader data.\r\n let castsShadows = false;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE) castsShadows = true;\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_DECAL) castsShadows = alphaCutoutShadowsEnabled;\r\n const options = [];\r\n if (batchType === TriBatchType.TRIBATCHTYPE_DECAL)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_CLIP\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_TRANSPARENT\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_OPAQUE\"\r\n }));\r\n }\r\n\r\n const patternLayerCount = dna.GetPatternLayerCount();\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_PPT_ENABLED\",\r\n value: patternLayerCount > 0 ? \"SOPPT_ENABLED\" : \"SOPPT_DISABLED\"\r\n }));\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(area.areaType, name, area.parameters, area.blockedMaterials);\r\n if (value)\r\n {\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n parameterNames.add(name);\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceRefs = new Map();\r\n for (const name of sortedKeys(area.textures))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(area.textures.get(name).resFilePath)\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n const samplerOverrides = [];\r\n const samplerNames = new Set();\r\n const pattern = patternLayerCount > 0 ? dna.GetPatternApplicationData() : null;\r\n for (let layerIndex = 0; layerIndex < patternLayerCount; layerIndex++)\r\n {\r\n const layer = dna.GetPatternLayerData(pattern, layerIndex);\r\n if (!dna.IsPatternLayerApplicableToArea(layer, area.areaType)) continue;\r\n if (!resourceRefs.has(layer.textureName))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name: layer.textureName,\r\n resourcePath: layer.textureResFilePath\r\n });\r\n resourceRefs.set(layer.textureName, ref);\r\n resources.push(ref);\r\n }\r\n const samplerName = `${layer.textureName}Sampler`;\r\n if (!samplerNames.has(samplerName))\r\n {\r\n samplerNames.add(samplerName);\r\n samplerOverrides.push(document.AddNode(\"Tr2SamplerOverride\", {\r\n name: samplerName,\r\n addressU: layer.projectionAddressModeU,\r\n addressV: layer.projectionAddressModeV,\r\n addressW: 1,\r\n filter: 3,\r\n mipFilter: 2,\r\n lodBias: 0,\r\n maxMipLevel: 0,\r\n maxAnisotropy: 4\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceRefs.has(name)) continue;\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n name: area.name,\r\n effectFilePath: dna.GetCompleteShaderPath(area.shader),\r\n options,\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides\r\n });\r\n const fields = {\r\n _areaType: Number(area.areaType ?? 0),\r\n name: area.name,\r\n index: area.index + meshIndexOffset,\r\n count: area.count,\r\n reversed: false,\r\n // Decal areas fold into opaque as one-sided alpha cutouts\r\n // (Carbon EveSOF.cpp:883); occluder backface tests skip them.\r\n alphaCutout: batchType === TriBatchType.TRIBATCHTYPE_DECAL,\r\n useSHLighting: false,\r\n castsShadows,\r\n generateDepthArea: Boolean(shaderData.doGenerateDepthArea),\r\n // Carbon limits distortion areas to high LOD after fill (EveSOF.cpp:2149-2153).\r\n minLod: batchType === TriBatchType.TRIBATCHTYPE_DISTORTION ? TR2_LOD_HIGH : -1,\r\n effect\r\n };\r\n return {\r\n ref: emitArea ? document.AddNode(\"Tr2MeshArea\", fields) : null,\r\n fields,\r\n effect,\r\n generateDepthArea: shaderData.doGenerateDepthArea,\r\n resourceRefs\r\n };\r\n}\r\n\r\nfunction createLayoutContainerFields(name)\r\n{\r\n return {\r\n name: String(name ?? \"\"),\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: []\r\n };\r\n}\r\n\r\nfunction ensureSpaceObjectBuildFields(fields)\r\n{\r\n for (const name of [\r\n \"effectChildren\",\r\n \"children\",\r\n \"curveSets\",\r\n \"attachments\",\r\n \"decals\",\r\n \"customMasks\",\r\n \"lights\",\r\n \"externalParameters\",\r\n \"controllers\",\r\n \"observers\",\r\n \"locators\",\r\n \"locatorSets\"\r\n ])\r\n {\r\n if (!Array.isArray(fields[name])) fields[name] = [];\r\n }\r\n if (!Object.hasOwn(fields, \"impactOverlay\")) fields.impactOverlay = null;\r\n}\r\n\r\nfunction normalizePartTag(value)\r\n{\r\n const number = Number(value);\r\n if (!Number.isInteger(number) || number < 0 || number > 0xffffffff)\r\n {\r\n throw new RangeError(\"EveSOF partTag must be an unsigned 32-bit integer\");\r\n }\r\n return number >>> 0;\r\n}\r\n\r\nfunction normalizePlacementTransform(value)\r\n{\r\n if (!value || value.length !== 16)\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform must contain 16 values\");\r\n }\r\n const result = Array.from(value, Number);\r\n if (result.some(item => !Number.isFinite(item)))\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform values must be finite numbers\");\r\n }\r\n return result;\r\n}\r\n\r\nfunction replacePlainValues(target, values)\r\n{\r\n if (!target || typeof target !== \"object\" || Array.isArray(target))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChild requires a CjsModel or plain model-values root\");\r\n }\r\n for (const key of Object.keys(target)) delete target[key];\r\n Object.assign(target, values);\r\n}\r\n\r\nfunction findSharedInstancedMeshes(document, rootFields)\r\n{\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildInstancedMeshes\")\r\n {\r\n if (!Array.isArray(node.fields.meshes)) node.fields.meshes = [];\r\n return { ref, meshes: node.fields.meshes };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction ensureSharedInstancedMeshes(document, rootFields)\r\n{\r\n const existing = findSharedInstancedMeshes(document, rootFields);\r\n if (existing) return existing;\r\n const meshes = [];\r\n const ref = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes\r\n });\r\n rootFields.effectChildren.push(ref);\r\n return { ref, meshes };\r\n}\r\n\r\nfunction stampDocumentChildPartTag(document, ref, partTag, visited = new Set())\r\n{\r\n const id = Number(ref?.$ref);\r\n if (!Number.isInteger(id) || visited.has(id)) return;\r\n visited.add(id);\r\n const node = document.GetNode(id);\r\n if (!node) return;\r\n node.fields.partTag = partTag;\r\n if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const child of node.fields.objects ?? [])\r\n {\r\n stampDocumentChildPartTag(document, child, partTag, visited);\r\n }\r\n }\r\n}\r\n\r\nfunction layoutContainerIsEmpty(fields)\r\n{\r\n return [\"objects\", \"curveSets\", \"attachments\", \"observers\", \"lights\", \"controllers\"]\r\n .every(name => !Array.isArray(fields[name]) || fields[name].length === 0);\r\n}\r\n\r\nfunction updateLayoutBounds(rootFields, dna, occurrences)\r\n{\r\n let sphere = [\r\n ...arrayValue(rootFields.boundingSphereCenter, [0, 0, 0]),\r\n Number(rootFields.boundingSphereRadius ?? -1)\r\n ];\r\n let ellipsoidBounds = ellipsoidToBounds(\r\n rootFields.shapeEllipsoidCenter,\r\n rootFields.shapeEllipsoidRadius\r\n );\r\n const sourceSphere = dna.GetHullBoundingSphere();\r\n const sourceEllipsoid = dna.GetHullShapeEllipsoid();\r\n for (const occurrence of occurrences)\r\n {\r\n const transform = arrayValue(occurrence.transform, identityMatrix());\r\n const transformedSphere = transformLayoutSphere(sourceSphere, transform);\r\n if (occurrence.extendsBoundingSphere)\r\n {\r\n sphere = includeLayoutSphere(sphere, transformedSphere);\r\n }\r\n if (occurrence.extendsShieldEllipsoid)\r\n {\r\n const bounds = transformLayoutEllipsoid(sourceEllipsoid, transformedSphere, transform);\r\n ellipsoidBounds = includeBounds(ellipsoidBounds, bounds);\r\n }\r\n }\r\n rootFields.boundingSphereCenter = sphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = sphere[3];\r\n if (ellipsoidBounds)\r\n {\r\n rootFields.shapeEllipsoidCenter = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidRadius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n }\r\n}\r\n\r\nfunction transformLayoutSphere(source, transform)\r\n{\r\n if (!source || Number(source[3]) < 0) return null;\r\n const center = vec3.transformMat4(vec3.create(), source, transform);\r\n const scale = mat4.getScaling(vec3.create(), transform);\r\n const maxScale = Math.max(Math.abs(scale[0]), Math.abs(scale[1]), Math.abs(scale[2]));\r\n return [center[0], center[1], center[2], Number(source[3]) * maxScale];\r\n}\r\n\r\nfunction includeLayoutSphere(current, next)\r\n{\r\n if (!next || next[3] < 0) return current;\r\n if (!current || current[3] < 0) return next.slice();\r\n const dx = next[0] - current[0];\r\n const dy = next[1] - current[1];\r\n const dz = next[2] - current[2];\r\n const distance = Math.hypot(dx, dy, dz);\r\n if (current[3] >= distance + next[3]) return current;\r\n if (next[3] >= distance + current[3]) return next.slice();\r\n const radius = (distance + current[3] + next[3]) * 0.5;\r\n if (distance === 0) return [current[0], current[1], current[2], radius];\r\n const factor = (radius - current[3]) / distance;\r\n return [\r\n current[0] + dx * factor,\r\n current[1] + dy * factor,\r\n current[2] + dz * factor,\r\n radius\r\n ];\r\n}\r\n\r\nfunction ellipsoidToBounds(centerValue, radiusValue)\r\n{\r\n const center = arrayValue(centerValue, [0, 0, 0]);\r\n const radius = arrayValue(radiusValue, [-1, -1, -1]);\r\n if (radius.some(value => value < 0)) return null;\r\n return {\r\n min: center.map((value, index) => value - radius[index]),\r\n max: center.map((value, index) => value + radius[index])\r\n };\r\n}\r\n\r\nfunction transformLayoutEllipsoid(source, fallbackSphere, transform)\r\n{\r\n const sourceBounds = ellipsoidToBounds(source?.center, source?.radius);\r\n if (!sourceBounds)\r\n {\r\n if (!fallbackSphere) return null;\r\n return {\r\n min: fallbackSphere.slice(0, 3).map(value => value - fallbackSphere[3]),\r\n max: fallbackSphere.slice(0, 3).map(value => value + fallbackSphere[3])\r\n };\r\n }\r\n let result = null;\r\n for (const x of [sourceBounds.min[0], sourceBounds.max[0]])\r\n {\r\n for (const y of [sourceBounds.min[1], sourceBounds.max[1]])\r\n {\r\n for (const z of [sourceBounds.min[2], sourceBounds.max[2]])\r\n {\r\n const point = vec3.transformMat4(vec3.create(), [x, y, z], transform);\r\n result = includeBounds(result, { min: Array.from(point), max: Array.from(point) });\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction includeBounds(current, next)\r\n{\r\n if (!next) return current;\r\n if (!current) return { min: next.min.slice(), max: next.max.slice() };\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n current.min[axis] = Math.min(current.min[axis], next.min[axis]);\r\n current.max[axis] = Math.max(current.max[axis], next.max[axis]);\r\n }\r\n return current;\r\n}\r\n\r\nfunction groupLayoutPlacements(placements)\r\n{\r\n const groups = new Map();\r\n for (const placement of placements)\r\n {\r\n if (!groups.has(placement.batchKey)) groups.set(placement.batchKey, []);\r\n groups.get(placement.batchKey).push(placement);\r\n }\r\n return groups.values();\r\n}\r\n\r\nfunction addEffectShaderOption(document, effectRef, name, value)\r\n{\r\n const effect = document.GetNode(effectRef?.$ref);\r\n if (!effect) return;\r\n if (!Array.isArray(effect.fields.options)) effect.fields.options = [];\r\n const duplicate = effect.fields.options.some(ref => {\r\n const option = document.GetNode(ref?.$ref);\r\n return option?.fields?.name === name;\r\n });\r\n if (!duplicate)\r\n {\r\n effect.fields.options.push(document.AddNode(\"Tr2ShaderOption\", { name, value }));\r\n }\r\n}\r\n\r\nfunction addMeshShaderOption(document, meshFields, name, value)\r\n{\r\n for (const field of [\"opaqueAreas\", \"transparentAreas\", \"additiveAreas\", \"distortionAreas\", \"depthAreas\"])\r\n {\r\n for (const areaRef of meshFields[field] ?? [])\r\n {\r\n const area = document.GetNode(areaRef?.$ref);\r\n addEffectShaderOption(document, area?.fields?.effect, name, value);\r\n }\r\n }\r\n}\r\n\r\nfunction addChildMeshShaderOption(document, childFields, name, value)\r\n{\r\n const mesh = document.GetNode(childFields.mesh?.$ref);\r\n if (mesh) addMeshShaderOption(document, mesh.fields, name, value);\r\n for (const decalRef of childFields.decals ?? [])\r\n {\r\n const decal = document.GetNode(decalRef?.$ref);\r\n addEffectShaderOption(document, decal?.fields?.decalEffect, name, value);\r\n }\r\n}\r\n\r\nfunction propagateInstancedMeshInstances(sourceInstances, requestedOffsets)\r\n{\r\n const offsets = Array.isArray(requestedOffsets) && requestedOffsets.length\r\n ? requestedOffsets.map(value => arrayValue(value, identityMatrix()))\r\n : [identityMatrix()];\r\n const identityFastPath = offsets.length === 1 && isIdentityMatrix(offsets[0]);\r\n const instances = [];\r\n const instanceTransforms = [];\r\n if (identityFastPath)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n instances.push(clonePackedInstance(source));\r\n instanceTransforms.push(Array.from(unpackInstanceMatrix(source)));\r\n }\r\n return { instances, instanceTransforms };\r\n }\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n const combined = mat4.multiply(\r\n mat4.create(),\r\n offset,\r\n unpackInstanceMatrix(source)\r\n );\r\n instances.push(packInstanceMatrix(combined, source.boneIndex));\r\n // Carbon retains the transposed product in this auxiliary list on the\r\n // general path, unlike its ordinary-matrix identity fast path.\r\n instanceTransforms.push(Array.from(mat4.transpose(mat4.create(), combined)));\r\n }\r\n }\r\n return { instances, instanceTransforms };\r\n}\r\n\r\nfunction clonePackedInstance(source)\r\n{\r\n return {\r\n transform0: arrayValue(source.transform0, [1, 0, 0, 0]),\r\n transform1: arrayValue(source.transform1, [0, 1, 0, 0]),\r\n transform2: arrayValue(source.transform2, [0, 0, 1, 0]),\r\n lastTransform0: arrayValue(source.lastTransform0, source.transform0 ?? [1, 0, 0, 0]),\r\n lastTransform1: arrayValue(source.lastTransform1, source.transform1 ?? [0, 1, 0, 0]),\r\n lastTransform2: arrayValue(source.lastTransform2, source.transform2 ?? [0, 0, 1, 0]),\r\n boneIndex: Number(source.boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction unpackInstanceMatrix(source)\r\n{\r\n const t0 = arrayValue(source.transform0, [1, 0, 0, 0]);\r\n const t1 = arrayValue(source.transform1, [0, 1, 0, 0]);\r\n const t2 = arrayValue(source.transform2, [0, 0, 1, 0]);\r\n return new Float32Array([\r\n t0[0], t1[0], t2[0], 0,\r\n t0[1], t1[1], t2[1], 0,\r\n t0[2], t1[2], t2[2], 0,\r\n t0[3], t1[3], t2[3], 1\r\n ]);\r\n}\r\n\r\nfunction packInstanceMatrix(matrix, boneIndex)\r\n{\r\n const transform0 = [matrix[0], matrix[4], matrix[8], matrix[12]];\r\n const transform1 = [matrix[1], matrix[5], matrix[9], matrix[13]];\r\n const transform2 = [matrix[2], matrix[6], matrix[10], matrix[14]];\r\n return {\r\n transform0,\r\n transform1,\r\n transform2,\r\n lastTransform0: transform0.slice(),\r\n lastTransform1: transform1.slice(),\r\n lastTransform2: transform2.slice(),\r\n boneIndex: Number(boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction isIdentityMatrix(value)\r\n{\r\n const identity = identityMatrix();\r\n return identity.every((item, index) => Number(value[index]) === item);\r\n}\r\n\r\nfunction translationBounds(instances)\r\n{\r\n const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];\r\n const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];\r\n for (const instance of instances)\r\n {\r\n const point = [\r\n Number(instance.transform0?.[3] ?? 0),\r\n Number(instance.transform1?.[3] ?? 0),\r\n Number(instance.transform2?.[3] ?? 0)\r\n ];\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n min[axis] = Math.min(min[axis], point[axis]);\r\n max[axis] = Math.max(max[axis], point[axis]);\r\n }\r\n }\r\n return { min, max };\r\n}\r\n\r\nfunction maximumInstanceScale(instances)\r\n{\r\n let maxLengthSquared = 0;\r\n for (const instance of instances)\r\n {\r\n for (const row of [instance.transform0, instance.transform1, instance.transform2])\r\n {\r\n const value = arrayValue(row, [0, 0, 0, 0]);\r\n maxLengthSquared = Math.max(\r\n maxLengthSquared,\r\n value[0] * value[0] + value[1] * value[1] + value[2] * value[2]\r\n );\r\n }\r\n }\r\n return Math.sqrt(maxLengthSquared);\r\n}\r\n\r\nfunction createInstancedMeshArea(document, dna, source, shaderData, resolveTexturePath)\r\n{\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(EveSOFDataArea.AreaType.TYPE_PRIMARY, name);\r\n if (!value || parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n for (const name of sortedKeys(source.textures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(source.textures.get(name).resFilePath)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n }));\r\n }\r\n\r\n const option = document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n value: \"SOIA_ENABLED\"\r\n });\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(source.shader),\r\n options: [option],\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides: []\r\n });\r\n return document.AddNode(\"Tr2MeshArea\", {\r\n name: \"hull\",\r\n index: 0,\r\n count: 1,\r\n reversed: false,\r\n useSHLighting: false,\r\n effect\r\n });\r\n}\r\n\r\n// Carbon EveSOF::CreateBoosterEffect (EveSOF.cpp:2853-2899, EveSOF.h:145):\r\n// the path defaults to the ship booster shader, and per-hull DNA parameters\r\n// are added BEFORE the race-shape parameters, matching Carbon's insertion\r\n// order. Only SetupChildBoosters passes overrides (with\r\n// EveChildBoosterSet.DEFAULT_EFFECT_PATH as its own fallback); ship boosters\r\n// always use the defaults.\r\nfunction createBoosterEffect(document, race, lodOption,\r\n effectPath = \"res:/Graphics/Effect/Managed/Space/Booster/BoosterVolumetric.fx\",\r\n parameters = null, textureOverrides = null)\r\n{\r\n const constParameters = [];\r\n const add = (name, value) => {\r\n const vector = Array.isArray(value) || ArrayBuffer.isView(value)\r\n ? arrayValue(value, [0, 0, 0, 0])\r\n : [Number(value ?? 0), Number(value ?? 0), Number(value ?? 0), Number(value ?? 0)];\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", { name, value: vector }));\r\n };\r\n if (parameters)\r\n {\r\n for (const [ name, value ] of parameters) add(name, value);\r\n }\r\n add(\"NoiseSpeed0\", race.shape0.noiseSpeed);\r\n add(\"NoiseAmplitudeStart0\", race.shape0.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd0\", race.shape0.noiseAmplitureEnd);\r\n add(\"NoiseFrequency0\", race.shape0.noiseFrequency);\r\n add(\"Color0\", race.shape0.color);\r\n add(\"NoiseSpeed1\", race.shape1.noiseSpeed);\r\n add(\"NoiseAmplitudeStart1\", race.shape1.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd1\", race.shape1.noiseAmplitureEnd);\r\n add(\"Color1\", race.shape1.color);\r\n add(\"WarpNoiseSpeed0\", race.warpShape0.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart0\", race.warpShape0.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd0\", race.warpShape0.noiseAmplitureEnd);\r\n add(\"WarpNoiseFrequency0\", race.warpShape0.noiseFrequency);\r\n add(\"WarpColor0\", race.warpShape0.color);\r\n add(\"WarpNoiseSpeed1\", race.warpShape1.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart1\", race.warpShape1.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd1\", race.warpShape1.noiseAmplitureEnd);\r\n add(\"WarpColor1\", race.warpShape1.color);\r\n add(\"ShapeAtlasSize\", [race.shapeAtlasHeight, race.shapeAtlasCount, 0, 0]);\r\n add(\"BoosterScale\", race.scale);\r\n\r\n // Per-hull texture overrides replace a default by name or append (Carbon\r\n // SetResourceTexture2D semantics, EveSOF.cpp:3095-3099).\r\n const textures = new Map([\r\n [ \"ShapeMap\", String(race.shapeAtlasResPath ?? \"\") ],\r\n [ \"GradientMap0\", String(race.gradient0ResPath ?? \"\") ],\r\n [ \"GradientMap1\", String(race.gradient1ResPath ?? \"\") ],\r\n [ \"NoiseMap\", \"res:/Texture/Global/noise32cube_volume.dds\" ]\r\n ]);\r\n if (textureOverrides)\r\n {\r\n for (const [ name, record ] of textureOverrides)\r\n {\r\n textures.set(String(name), String(record?.resFilePath ?? record ?? \"\"));\r\n }\r\n }\r\n\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: effectPath,\r\n options: [document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"BOOSTER_LOD\",\r\n value: lodOption\r\n })],\r\n constParameters,\r\n parameters: [],\r\n resources: [...textures].map(([ name, resourcePath ]) =>\r\n document.AddNode(\"TriTextureParameter\", { name, resourcePath })),\r\n samplerOverrides: []\r\n });\r\n}\r\n\r\nfunction mergeDocumentLocatorSet(document, rootFields, name, locatorRefs)\r\n{\r\n if (locatorRefs.length === 0) return null;\r\n for (const ref of rootFields.locatorSets)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveLocatorSets\" && node.fields?.name === name)\r\n {\r\n node.fields.locators.push(...locatorRefs);\r\n return ref;\r\n }\r\n }\r\n const ref = document.AddNode(\"EveLocatorSets\", { name, locators: locatorRefs });\r\n rootFields.locatorSets.push(ref);\r\n return ref;\r\n}\r\n\r\nfunction sortedKeys(map)\r\n{\r\n return [...map.keys()].sort((a, b) => a.localeCompare(b));\r\n}\r\n\r\nfunction selectDecalIndexBuffers(item, hullCount, combinedGeometryPath)\r\n{\r\n if (hullCount === 1) return item.indexBuffers.map(indices => indices.slice());\r\n for (const entry of item.multiHullIndexBuffers)\r\n {\r\n if (entry.combinedGeometryResPath === combinedGeometryPath)\r\n {\r\n return entry.indexBuffers.map(indices => indices.slice());\r\n }\r\n }\r\n return [];\r\n}\r\n\r\nfunction effectParameters(document, parameters)\r\n{\r\n return sortedKeys(parameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(parameters.get(name))\r\n }));\r\n}\r\n\r\nfunction effectResources(document, textures)\r\n{\r\n return sortedKeys(textures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: textures.get(name).resFilePath\r\n }));\r\n}\r\n\r\nfunction createImpactEmitter(document, values)\r\n{\r\n const emitterData = {\r\n angle: Number(values.angle ?? 0),\r\n innerAngle: Number(values.innerAngle ?? 0),\r\n minSpeed: Number(values.minMaxSpeed?.[0] ?? 0),\r\n maxSpeed: Number(values.minMaxSpeed?.[1] ?? 0)\r\n };\r\n const paramsData = {\r\n minLifeTime: Number(values.minMaxLifeTime?.[0] ?? 0),\r\n maxLifeTime: Number(values.minMaxLifeTime?.[1] ?? 0),\r\n sizes: [\r\n Number(values.sizes?.[0] ?? 0),\r\n Number(values.sizes?.[1] ?? 0),\r\n Number(values.sizes?.[2] ?? 0)\r\n ],\r\n sizeVariance: Number(values.sizes?.[3] ?? 0),\r\n colors: [0, 1, 2, 3].map(index => arrayValue(values.colors?.[index], [0, 0, 0, 0])),\r\n textureIndex: Number(values.textureIndex ?? 0) >>> 0,\r\n velocityStretchRotation: Number(values.velocityStretchRotation ?? 0),\r\n drag: Number(values.drag ?? 0),\r\n turbulenceAmplitude: Number(values.turbulenceAmplitude ?? 0),\r\n turbulenceFrequency: Number(values.turbulenceFrequency ?? 0) >>> 0,\r\n colorMidpoint: Number(values.colorMidpoint ?? 0)\r\n };\r\n return document.AddNode(\"Tr2GpuUniqueEmitter\", {\r\n rate: Number(values.rate ?? 0),\r\n angle: emitterData.angle,\r\n innerAngle: emitterData.innerAngle,\r\n minSpeed: emitterData.minSpeed,\r\n maxSpeed: emitterData.maxSpeed,\r\n minLifeTime: paramsData.minLifeTime,\r\n maxLifeTime: paramsData.maxLifeTime,\r\n sizes: paramsData.sizes,\r\n sizeVariance: paramsData.sizeVariance,\r\n color0: paramsData.colors[0],\r\n color1: paramsData.colors[1],\r\n color2: paramsData.colors[2],\r\n color3: paramsData.colors[3],\r\n textureIndex: paramsData.textureIndex,\r\n colorMidpoint: paramsData.colorMidpoint,\r\n velocityStretchRotation: paramsData.velocityStretchRotation,\r\n drag: paramsData.drag,\r\n turbulenceAmplitude: paramsData.turbulenceAmplitude,\r\n turbulenceFrequency: paramsData.turbulenceFrequency\r\n });\r\n}\r\n\r\n/**\r\n * Counts how many times each node is reached from a starting reference.\r\n *\r\n * Recursion stops at a node already seen, so a cycle terminates and every node\r\n * on it still records more than one visit — which is exactly the condition for\r\n * giving it an identity.\r\n */\r\nfunction CountDocumentVisits(value, nodeById, visits)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n return;\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n const seen = visits.get(id) ?? 0;\r\n visits.set(id, seen + 1);\r\n if (seen) return;\r\n\r\n const node = nodeById.get(id);\r\n if (!node) return;\r\n\r\n CountDocumentVisits(node.fields ?? {}, nodeById, visits);\r\n CountDocumentVisits(node.raw ?? {}, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n for (const item of value) CountDocumentVisits(item, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n }\r\n}\r\n\r\n/**\r\n * Rewrites one document value into its plain-values form.\r\n *\r\n * `emitted` maps a node id to the `_id` it was given on first emission, so a\r\n * later occurrence becomes `{ _ref }`. Ids are allocated in emission order\r\n * rather than reusing document ids, so the output does not carry the node\r\n * table's numbering as a hidden dependency.\r\n */\r\nfunction ProjectDocumentNode(value, nodeById, visits, emitted, state)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n\r\n if (emitted.has(id)) return { _ref: emitted.get(id) };\r\n\r\n const node = nodeById.get(id);\r\n if (!node) throw new TypeError(`EveSOF values projection found no node for ref ${id}.`);\r\n\r\n const projected = { _type: node.kind };\r\n\r\n if ((visits.get(id) ?? 0) > 1)\r\n {\r\n const valueId = state.nextId++;\r\n emitted.set(id, valueId);\r\n projected._id = valueId;\r\n }\r\n\r\n // `fields` and `raw` are transport envelopes rather than data: the reader\r\n // of a values graph sees one object whose properties are the node's.\r\n for (const [key, item] of Object.entries({ ...node.fields, ...node.raw }))\r\n {\r\n projected[key] = ProjectDocumentNode(item, nodeById, visits, emitted, state);\r\n }\r\n\r\n return projected;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n return value.map(item => ProjectDocumentNode(item, nodeById, visits, emitted, state));\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction cloneFields(fields)\r\n{\r\n return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, cloneValue(value)]));\r\n}\r\n\r\nfunction cloneValue(value)\r\n{\r\n if (Array.isArray(value)) return value.map(cloneValue);\r\n if (!value || typeof value !== \"object\") return value;\r\n return { ...value };\r\n}\r\n\r\n\r\nfunction createSwarmBehaviorFields(source)\r\n{\r\n if (!source) return null;\r\n const result = {};\r\n for (const name of SWARM_BEHAVIOR_FIELD_NAMES)\r\n {\r\n result[name] = Number(source[name]);\r\n }\r\n result.weightDeceleration = Number(source.weightDecelerate ?? source.weightDeceleration);\r\n return result;\r\n}\r\n\r\n\r\n\r\nfunction SofRequestKey(path, output)\r\n{\r\n return `${normalizeResourcePath(path)}\\0${output}`;\r\n}\r\n\r\nfunction CollectSofRequest(requests, path, output, role, context = null)\r\n{\r\n const normalizedPath = normalizeResourcePath(path);\r\n if (!normalizedPath) return null;\r\n const key = SofRequestKey(normalizedPath, output);\r\n if (!requests.has(key))\r\n {\r\n requests.set(key, { key, path: normalizedPath, output, role, context });\r\n }\r\n return key;\r\n}\r\n\r\nfunction IsCarbonDocument(value)\r\n{\r\n return value?.schema === \"carbon.document\"\r\n && Array.isArray(value.roots)\r\n && Array.isArray(value.nodes);\r\n}\r\n\r\n\r\n\r\nasync function ResolveSofDependency(load, path, role, results, resultKey = path)\r\n{\r\n try\r\n {\r\n const value = await load();\r\n results.set(resultKey, value);\r\n return value;\r\n }\r\n catch (cause)\r\n {\r\n const error = new Error(`EveSOF failed to resolve ${role} resource: ${path}`, { cause });\r\n error.code = \"EVE_SOF_RESOURCE_RESOLUTION_FAILED\";\r\n error.path = path;\r\n error.role = role;\r\n throw error;\r\n }\r\n}\r\n\r\n"],"names":["BUILD_CLASS_TYPES","Object","freeze","EveSOFDataHull","BuildClass","BUILDCLASS_SHIP","BUILDCLASS_MOBILE","BUILDCLASS_STATIONARY","BUILDCLASS_SWARM","BUILDCLASS_EXTENSION","SPACE_OBJECT_ROOT_KINDS","Set","DECAL_EFFECT_NAMES","BANNER_EXTERNAL_PARAMETER_NAMES","MIN_MESH_SCREEN_SIZE","TR2_LOD_HIGH","CHILD_TRANSFORM_KINDS","SPACE_OBJECT_CHILD_KINDS","OBJECT_RESOURCE_ROLE_GATES","controller","interfaceName","kinds","modelRotationCurve","modelTranslationCurve","WRONG_TYPE_CHILD","Symbol","descriptorClaimsInterface","descriptor","Array","isArray","implements","includes","INHERIT_COLOR_PROPERTIES","SWARM_BEHAVIOR_FIELD_NAMES","SOF_INSTANCE_LAYOUT","usage","usageIndex","type","name","_EveSOF","EveSOF","CjsModel","e","_init_allowFileCaching","_init_extra_allowFileCaching","_init_alphaCutoutShadowsEnabled","_init_extra_alphaCutoutShadowsEnabled","_init_volumetricTrailPath","_init_extra_volumetricTrailPath","_init_buildTime","_init_extra_buildTime","_init_dataMgr","_init_extra_dataMgr","_init_editorMode","_init_extra_editorMode","_initProto","c","_initClass","_applyDecs","define","className","family","edit","readwrite","boolean","string","float64","read","objectRef","carbon","method","impl","implemented","adapted","reason","custom","allowFileCaching","alphaCutoutShadowsEnabled","volumetricTrailPath","buildTime","dataMgr","EveSOFDataMgr","editorMode","Map","getObject","exists","Register","options","TypeError","prototype","hasOwnProperty","call","normalizeResourcePath","dataPath","resources","undefined","hasOwn","clear","lazyData","CjsSofLibraryBuilder","SetSofLibraryBuilder","builderOptions","source","path","context","Error","output","Boolean","String","Number","index","resFileIndex","SetResourceExistsResolver","names","map","toLowerCase","has","resolver","result","then","SetChildResourceResolver","SetObjectResourceResolver","builder","GetDataManager","GetSofLibraryBuilder","InitializeAsync","LoadDataAsync","catalog","LoadData","filePath","existing","get","operation","ResolveSofDependency","role","data","SetData","set","delete","CreateDna","dnaString","dna","EveSOFDNA","Setup","IsValid","GetDnaVisibilityGroups","declared","factionData","visibilityGroups","declaredSet","sets","hullIndex","GetMultiHullCount","hull","hullDatas","field","values","entries","value","visibilityGroupName","group","push","kind","visibilityGroup","visible","authored","item","sort","hulls","hullNames","faction","factionName","race","raceName","filter","hidden","InspectDna","buildable","valid","ValidateContent","error","GetParseError","ValidateDNA","Build","hullName","BuildFromDNA","BuildAsync","BuildFromDNAAsync","GetBuildDiagnostics","entry","BuildValues","BuildValuesFromDNA","BuildValuesAsync","BuildValuesFromDNAAsync","document","projectDocumentValues","BuildChild","owner","partTag","transform","identityMatrix","isModel","GetValues","refs","forceTypeTags","BuildChildValues","hydrationOptions","hydration","SetValues","registry","replacePlainValues","ownerValues","tag","normalizePartTag","placementTransform","normalizePlacementTransform","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","SofDocumentBuilder","rootRef","ImportValuesRoot","root","GetNode","$ref","AddRoot","ensureSpaceObjectBuildFields","fields","layout","ToJSON","Create","black","sof","ArrayBuffer","isView","CjsBlackFormat","readPayload","buffer","slice","byteOffset","byteLength","object","console","warn","normalized","CjsCarbonDocument","normalize","nodeById","nodes","node","id","roots","ref","isRef","visits","CountDocumentVisits","ProjectDocumentNode","nextId","populateDefaults","CjsSchema","applyDefaults","EnsureFromDNA","documentRequests","existenceRequests","collectionPrevious","child","CollectSofRequest","documentResults","existenceResults","Promise","all","request","key","projectionPrevious","SofRequestKey","PlanLayoutFromDNA","planSofLayouts","buildClass","GetBuildClass","typeName","sphere","GetHullBoundingSphere","isExtension","hasShipInterface","swarmBehavior","createSwarmBehaviorFields","GetGenericSwarmProperties","mesh","AddNode","CreateMesh","rootFields","GetDnaString","boundingSphereCenter","from","boundingSphereRadius","shapeEllipsoidCenter","arrayValue","shapeEllipsoidRadius","dynamicBoundingSphereEnabled","DynamicBoundingSphereEnabled","castShadow","CastShadow","isAnimated","IsHullAnimated","reflectionMode","GetReflectionMode","effectChildren","children","curveSets","attachments","decals","impactOverlay","customMasks","lights","externalParameters","controllers","observers","locators","locatorSets","boosters","assign","SetupExtensionBuild","inheritProperties","createInheritProperties","SetupCustomMask","SetupDecalSets","SetupLocators","SetupLocatorSets","SetupAttachments","SetupImpactEffects","SetupEffects","BuildFilter","STANDALONE","SetupAudio","SetupControllers","SetupModelCurves","SetupInstancedMeshes","SetupLayout","SetupBoosters","#BuildChildIntoDocument","layoutOptions","hasChildEffects","UsingSof6","GetHullChildSets","length","GetHullChildren","hasControllers","GetHullControllers","hasAnimation","hasEmitters","GetHullSoundEmitters","hasLayouts","GetLayoutCount","hasAttachments","GetHullSpriteSets","GetHullSpotlightSets","GetHullPlaneSets","GetHullSpriteLineSets","GetHullHazeSets","GetHullBanners","GetHullBannerSets","GetHullLightSets","hasBoosters","GetHullBoosterCount","needsPlacementContainer","buildFlags","NON_INSTANCED_PLACEMENT","INSTANCED_PLACEMENT","rotation","quat","create","translation","vec3","scaling","decomposeCarbonMatrix","placementRef","placementFields","createLayoutContainerFields","GetHullNames","staticTransform","childFields","minScreenSize","lowestLodVisible","animationUpdater","ownedLocatorSets","BuildHullLocalLocatorSets","armorDamageShader","GetLocatorCount","CreateArmorDamageEffect","childRef","objects","animationOwner","shared","ensureSharedInstancedMeshes","areas","CreateSharedLayoutAreas","instance","sphereIndex","meshes","geometryPath","GetHullGeometryResPath","castsShadow","meshIndex","instances","partTags","sofHullName","sofLocatorSetName","display","instanceSphere","transformLayoutSphere","ellipsoidBounds","transformLayoutEllipsoid","GetHullShapeEllipsoid","center","min","max","radius","SetupChildBoosters","offsets","stampDocumentChildPartTag","extensionFields","alwaysOn","origin","fakeFields","isPlacementRoot","geometryResPath","opaqueAreas","transparentAreas","additiveAreas","distortionAreas","depthAreas","transparent","SetupShaders","GenerateDepthFromAreaVector","meshFields","meshIndexOffset","count","fills","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","TRIBATCHTYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","TRIBATCHTYPE_DISTORTION","target","batchType","FillMeshAreaVector","GetHullMeshAreas","pending","area","shaderData","GetGenericAreaShaderData","shader","code","built","buildMeshArea","ModifyTextureResPath","depthShader","generateDepthArea","sourceEffect","effect","effectFields","cloneFields","resource","resourceRefs","transparencyTextureName","effectFilePath","GetCompleteShaderPath","constParameters","parameters","areaFields","application","GetPatternApplicationData","layerCount","GetPatternLayerCount","layerIndex","projection","GetPatternProjectionData","enabled","layer","GetPatternLayerData","targetMaterials","GetMaterialTargets","position","isMirrored","clampU","projectionAddressModeU","clampV","projectionAddressModeV","materialIndex","materialSourceID","hullOffset","combinedGeometryPath","decalSet","GetHullDecalSets","IsInVisibilityData","items","effectName","EveSOFDataHullDecalSetItem","Usage","USAGE_LOGO","HasLogoSet","logoType","parameterNames","selectorFields","USAGE_STANDARD","color","GetColorSet","glowColorType","_glowColorType","add","sortedKeys","resourceNames","addResource","resourcePath","textures","resFilePath","GetGenericDecalShaderData","defaultTextures","parentTextures","GetHullTextureWithMeshIndex","logo","GetLogo","_logoType","GetDecalShaderLocationResPath","GetShaderPrefix","addOffset","indexBuffers","selectDecalIndexBuffers","parentBoneIndex","boneIndex","decalEffect","staticIndexBuffers","GetHullNextSubsystemOffset","impactType","GetImpactEffectType","ImpactEffectType","IMPACTEFFECT_NONE","damage","GetGenericDamageData","hullDamage","GetGenericHullDamageData","raceDamage","GetRaceDamageData","shieldMesh","IMPACTEFFECT_ELLIPSOID","shieldEffect","GetAreaShaderLocationResPath","GetImpactShieldShader","effectParameters","shieldDamageParameters","effectResources","shieldDamageTextures","shieldArea","shieldGeometryResFilePath","armorImpactEmitter","createImpactEmitter","rate","armorParticleRate","angle","armorParticleAngle","innerAngle","minMaxSpeed","armorParticleMinMaxSpeed","minMaxLifeTime","armorParticleMinMaxLifeTime","sizes","armorParticleSizes","colors","armorParticleColors","textureIndex","armorParticleTextureIndex","velocityStretchRotation","armorParticleVelocityStretchRotation","drag","armorParticleDrag","turbulenceAmplitude","armorParticleTurbulenceAmplitude","turbulenceFrequency","armorParticleTurbulenceFrequency","colorMidpoint","armorParticleColorMidPoint","hullImpactEmitter","hullParticleRate","hullParticleAngle","hullParticleInnerAngle","hullParticleMinMaxSpeed","hullParticleMinMaxLifeTime","hullParticleSizes","hullParticleColors","hullParticleTextureIndex","hullParticleVelocityStretchRotation","hullParticleDrag","hullParticleTurbulenceAmplitude","hullParticleTurbulenceFrequency","hullParticleColorMidpoint","flickerCurve","alpha","flickerPerlinAlpha","beta","flickerPerlinBeta","N","flickerPerlinN","speed","flickerPerlinSpeed","offset","scale","shieldIsEllipsoid","hullDamageFlickerCurve","objectFields","childOwnerFields","SetupEffectChildren","SetupChildrenAndAnimations","emitterTargetsById","buildFilter","factionChild","GetFactionChildData","groupIndex","isVisible","redFilePath","reference","animationId","collectDynamicEmitterRefs","animation","GetHullAnimations","curves","bindings","startRate","scalar","keys","scalarKey","endRate","emitter","sourceAttribute","sourceObject","destinationAttribute","destinationObject","startRotationTime","curve","quaternionKey","startRotationValue","endRotationTime","endRotationValue","childSet","#resolveChildResource","sof6","resPath","loadChildAutomatically","raw","fragment","IsModelValuesRoot","IsCarbonDocument","isInteger","find","_type","isTransform","isSpaceObjectChild","#addResolvedChild","placement","composeChildPlacement","ImportRoot","cloneValue","ownerFields","parentOffset","ignoredScale","parentRotation","ignoredTranslation","transformMat4","multiply","front","transformQuat","observer","eventPrefix","prefix","scalingFactor","attenuationScalingFactor","rotationPath","GetModelRotationCurvePath","translationPath","GetModelTranslationCurvePath","hullInstanced","GetHullInstancedMeshes","meshContainer","containerFields","propagated","propagateInstancedMeshInstances","CreateInstancedMesh","createInstancedMeshArea","instanceTransforms","displayModifier","EveSOFDataInstancedMesh","DisplayQualityModifier","SHADER_ALL","displayFilter","bounds","translationBounds","maxScale","maximumInstanceScale","instanceData","particleSystem","rows","explicitBoundingBox","aabbMin","aabbMax","boundsMethod","instanceGeometryResPath","instanceGeometryResource","instanceMeshIndex","minBounds","maxBounds","maxInstanceSize","targetFields","buildContext","plan","placements","layoutFields","batches","groupLayoutPlacements","findSharedInstancedMeshes","sharedRef","sharedMeshes","hasPartTag","fixedPartTag","occurrences","first","extensionDna","isInstanced","DisableAnimation","transforms","updateLayoutBounds","placementAnimationOwners","isShared","locatorSetName","packInstanceMatrix","locator","CreateLayoutInstancedMesh","addChildMeshShaderOption","sofDna","sofParentHullName","partArmorDamageShader","occurrenceIndex","occurrence","randomizedScaling","sofLocatorIndex","locatorIndex","forEach","layoutContainerIsEmpty","types","addEffectShaderOption","areaIndex","areaCount","alphaCutout","reversed","GetRaceBoosterData","hasTrails","boosterLocatorRefs","GetHullBoosterData","direction","functionality","hasTrail","atlasIndex0","atlasIndex1","lightScale","mergeDocumentLocatorSet","createBoosterEffect","effectFar","glowEffect","samplerOverrides","glows","sprites","trails","trailEffect","trailSize","trailColor","glowScale","glowColor","warpGlowColor","symHaloScale","haloScaleX","haloScaleY","haloColor","warpHaloColor","lightOffset","lightFlickerAmplitude","lightFlickerFrequency","lightRadius","lightColor","lightWarpRadius","lightWarpColor","hull0","driveName","effectPath","#resolveObjectResource","gate","expects","expected","#addObjectResource","isInstancedPlacement","sharedSpriteEffect","SetupSpriteSets","SetupSpotlightSets","SetupPlaneSets","SetupSpriteLineSets","SetupHazeSets","SetupBannerSets","SetupBanners","SetupLights","sharedEffect","sourceColor","colorType","intensity","saturateColor","saturation","_colorType","blinkPhase","blinkRate","falloff","minScale","light","lightData","outerScaleMultiplier","innerRadius","innerScaleMultiplier","brightness","noiseAmplitude","noiseFrequency","noiseOctaves","flags","startTime","castsShadows","isVolumetric","lightProfilePath","skinned","coneEffect","fill","zOffset","coneTextureResPath","glowTextureResPath","spotlightItems","coneColor","flareColor","spriteColor","multiplyColor","modifyColor","coneIntensity","flareIntensity","spriteIntensity","GetFactionSpotlightSetData","mat4","fromTranslation","boosterGainInfluence","spriteScale","Math","abs","atan","PI","localPosition","innerAngleMultiplier","outerAngle","outerAngleMultiplier","texturePath","imageMap","pickBufferID","EveSOFDataHullPlaneSet","USAGE_SPACE_VIDEO","USAGE_HANGAR_VIDEO","layerMap1","layer1MapResPath","layerMap2","layer2MapResPath","maskMap","maskMapResPath","planeData","USAGE_HAZE","atlasSize","floor","atlasAspectRatio","getPlaneSetEffectPath","planes","usesLightParameters","fromRotationTranslationScale","GetFactionPlaneSetData","blinkData","phase","dutyCycle","blinkMode","layer1Scroll","layer1Transform","layer2Scroll","layer2Transform","maskAtlasID","maskMapAtlasIndex","lightRotation","lightPosition","fadeType","imageMapParameter","layerMap1Parameter","layerMap2Parameter","maskMapParameter","spriteLines","line","blinkPhaseShift","isCircle","spacing","positions","getSpriteLinePositions","spriteIndex","effects","getEffect","hazeType","EveSOFDataHullHazeSet","HazeType","TYPE_SPHERICAL","TYPE_HALFSPHERICAL","hazes","hazeBrightness","hazeData","hazeFalloff","sourceSize","sourceBrightness","boneMatrix","banners","addBannerItem","bannerLight","radiusMultiplier","innerRadiusMultiplier","addBannerSet","EveSOFDataHullBanner","_USAGE_COUNT","bannerTypes","size","EveSOFDataHullBannerSetItem","lightSet","lightKind","getLightKind","lightFields","_lightColor","isDynamic","GetHullTurretLocators","audioPosition","GetHullAudioPosition","armorShader","armorDamageParameters","armorDamageTextures","bySetName","GetHullLocatorSetNames","GetHullLocators","locatorRefs","composed","SetupTurretMaterialFromFaction","turretSet","GetFactionData","ApplyFactionToTurretShader","GetGenericData","turret","genericData","ApplySofTurretMaterial","parameterName","findTurretFactionParameter","SetupChildTurretMaterialFromFaction","childTurret","SetupTurretMaterialFromDNA","GetFactionTurretParameters","prefixes","materialPrefixes","info","EveSOFUtilsParameterName","IsMaterialIdxValid","GetMaterialIdx","materialUsageList","ChangeMaterialIdx","findTurretAreaParameter","colorData","areaMaterials","turretAreaType","EveSOFDataArea","AreaType","TYPE_PRIMARY","areaType","materialName","materialNames","GetMaterialData","GetShortName","GetFullName","fallback","colorSet","seen","addEmitters","particleEmitters","visitTransform","visitEffectChild","time","leftTangent","rightTangent","interpolation","tangentType","matrix","scaleX","hypot","scaleY","scaleZ","getRotation","EveSOFDataHullLightSetItem","LightType","POINT_LIGHT","TEXTURED_POINT_LIGHT","SPOT_LIGHT","factor","multiplier","component","divisor","red","green","blue","maximum","minimum","delta","hue","hsvSaturation","hsvValue","hsvToRgb","nextSaturation","sector","fraction","p","q","t","trunc","point","sin","cos","bone","angleX","angleY","usageCount","GetGenericBannerShaderData","defaultParameters","isPickable","primaryTextureParameter","resolveTexturePath","emitArea","patternLayerCount","GetMeshAreaParameter","blockedMaterials","samplerNames","pattern","IsPatternLayerApplicableToArea","textureName","textureResFilePath","samplerName","addressU","addressV","addressW","mipFilter","lodBias","maxMipLevel","maxAnisotropy","_areaType","useSHLighting","doGenerateDepthArea","minLod","number","RangeError","some","isFinite","visited","every","ellipsoidToBounds","sourceSphere","sourceEllipsoid","transformedSphere","extendsBoundingSphere","includeLayoutSphere","extendsShieldEllipsoid","includeBounds","getScaling","current","next","dx","dy","dz","distance","centerValue","radiusValue","fallbackSphere","sourceBounds","x","y","z","axis","groups","batchKey","effectRef","duplicate","option","addMeshShaderOption","areaRef","decalRef","decal","sourceInstances","requestedOffsets","identityFastPath","isIdentityMatrix","clonePackedInstance","unpackInstanceMatrix","combined","transpose","transform0","transform1","transform2","lastTransform0","lastTransform1","lastTransform2","t0","t1","t2","Float32Array","identity","POSITIVE_INFINITY","NEGATIVE_INFINITY","maxLengthSquared","row","sqrt","lodOption","textureOverrides","vector","shape0","noiseSpeed","noiseAmplitureStart","noiseAmplitureEnd","shape1","warpShape0","warpShape1","shapeAtlasHeight","shapeAtlasCount","shapeAtlasResPath","gradient0ResPath","gradient1ResPath","record","a","b","localeCompare","hullCount","indices","multiHullIndexBuffers","combinedGeometryResPath","emitterData","minSpeed","maxSpeed","paramsData","minLifeTime","maxLifeTime","sizeVariance","color0","color1","color2","color3","VALUES_LITERAL_DOLLAR_REF","emitted","state","fromEntries","_ref","projected","valueId","_id","weightDeceleration","weightDecelerate","requests","normalizedPath","schema","load","results","resultKey","cause"],"mappings":"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"}
|