@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2VolumetricsRenderer.js","sources":["../../../../../src/trinity/core/volumetrics/Tr2VolumetricsRenderer.js"],"sourcesContent":["// Source: trinity/trinity/Tr2VolumetricsRenderer.h\n// Source: trinity/trinity/Tr2VolumetricsRenderer.cpp\n// Source: trinity/trinity/Tr2VolumetricsRenderer_Blue.cpp\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureReference } from \"../../generated/trinityCore/Tr2TextureReference.js\";\nimport { AccumulatePriorityAttribute } from \"../PriorityBlend.js\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\n\n\nconst FROXEL_FOG_COMPONENT = \"FroxelFogSettings\";\nconst FROXEL_NOISE_DEPTH = 64;\nconst FOG_COLOR_SCRATCH = vec3.create();\n\n\n/**\n * Owns portable froxel-fog blending and terminal per-frame constant writes.\n * Physical fog/volumetric textures, passes and environment-map realization\n * remain explicit engine obligations.\n */\n@type.define({ className: \"Tr2VolumetricsRenderer\", family: \"trinityCore\" })\nexport class Tr2VolumetricsRenderer extends CjsModel\n{\n @edit.readwrite\n @type.int32\n @type.enum(\"Tr2VolumerticQuality\")\n quality = Tr2VolumerticQuality.High;\n\n @edit.read\n @type.objectRef(\"Tr2TextureReference\")\n mieEnvironmentMap = new Tr2TextureReference();\n\n @edit.readwrite\n @type.boolean\n blur = true;\n\n @edit.readwrite\n @type.boolean\n logBlending = true;\n\n @edit.readwrite\n @type.float32\n gameBackClip = 1e6;\n\n @edit.read\n @type.float32\n backgroundVisibility = 0;\n\n @edit.read\n @type.float32\n thickness = 0;\n\n @edit.read\n @type.float32\n environmentDirectionality = 0;\n\n @edit.read\n @type.float32\n lightDirectionality = 0;\n\n @edit.read\n @type.float32\n godRayNoiseAnimationSpeed = 0;\n\n @edit.read\n @type.vec3\n fogNoiseMovementSpeed = vec3.create();\n\n @edit.read\n @type.color\n fogColor = vec4.create();\n\n @edit.read\n @type.float32\n godRayNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n fogNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n godRayNoiseIntensity = 0;\n\n @edit.read\n @type.float32\n fogNoiseIntensity = 0;\n\n @edit.readwrite\n @type.float64\n logBlendingSmoothness = 4;\n\n @edit.read\n @type.float32\n environmentIntensity = 0;\n\n @edit.readwrite\n @type.boolean\n castShadows = false;\n\n @edit.readwrite\n @type.boolean\n receiveShadows = false;\n\n @edit.readwrite\n @type.float32\n scaleFactor = 0.7;\n\n #godRayNoiseAnimation = 0;\n\n #fogNoiseMovement = new Float64Array(3);\n\n #planets = [ vec4.fromValues(0, 0, 0, -1), vec4.fromValues(0, 0, 0, -1) ];\n\n #sunAngle = 0;\n\n /** Creates Carbon's logical Mie reference and reserves its texture globals. */\n constructor()\n {\n super();\n const store = Tr2VariableStore.GlobalStore();\n store.RegisterVariable(\"EveSceneFogVolumeMap\");\n store.RegisterVariable(\"VolumetricDepthMap\");\n store.RegisterVariable(\"EveSceneMieEnvironmentMap\");\n store.RegisterVariable(\"EveSceneFroxelFogMap\");\n }\n\n /** Updates all fog attributes from the scene's nominal component registry. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The Eve component registry is supplied directly; Carbon's realized 64-deep noise texture becomes its fixed animation-depth constant while physical noise storage is not ported yet.\")\n UpdateFogSettings(registry, updateContext)\n {\n const settings = Array.from(registry.GetComponents(FROXEL_FOG_COMPONENT), component =>\n component.GetFroxelFogSettings());\n\n const smoothness = this.logBlendingSmoothness;\n for (const value of settings)\n {\n value.logThickness.value = Math.log1p(Number(value.thickness.value) * smoothness);\n value.logThickness.enabled = value.thickness.enabled;\n }\n settings.sort((a, b) => b.priority - a.priority);\n\n this.thickness = AccumulatePriorityAttribute(settings, value => value.thickness);\n this.lightDirectionality = AccumulatePriorityAttribute(settings, value => value.lightDirectionality);\n this.environmentIntensity = AccumulatePriorityAttribute(settings, value => value.environmentIntensity);\n this.environmentDirectionality = AccumulatePriorityAttribute(settings, value => value.environmentDirectionality);\n AccumulatePriorityAttribute(settings, value => value.fogColor, this.fogColor);\n this.backgroundVisibility = AccumulatePriorityAttribute(settings, value => value.backgroundVisibility);\n this.godRayNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.godRayNoiseIntensity);\n this.godRayNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.godRayNoiseFrequency);\n this.godRayNoiseAnimationSpeed = AccumulatePriorityAttribute(settings, value => value.godRayNoiseAnimationSpeed);\n this.fogNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.fogNoiseIntensity);\n this.fogNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.fogNoiseFrequency);\n AccumulatePriorityAttribute(settings, value => value.fogNoiseMovementSpeed, this.fogNoiseMovementSpeed);\n\n if (this.logBlending)\n {\n const logThickness = AccumulatePriorityAttribute(settings, value => value.logThickness);\n this.thickness = Math.expm1(logThickness) / smoothness;\n }\n\n const delta = updateContext.GetDeltaT();\n this.#godRayNoiseAnimation += this.godRayNoiseAnimationSpeed * (delta / FROXEL_NOISE_DEPTH);\n this.#godRayNoiseAnimation -= Math.floor(this.#godRayNoiseAnimation);\n for (let lane = 0; lane < 3; lane++)\n {\n this.#fogNoiseMovement[lane] += this.fogNoiseMovementSpeed[lane] * delta;\n }\n }\n\n /** Reports whether the blended fog thickness is strictly positive. */\n @carbon.method\n @impl.implemented\n HasFog()\n {\n return this.thickness > 0;\n }\n\n /** Writes the inline FroxelPerFrameData fields into canonical RawData. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon writes an inline constant struct; Trinity writes the same terminal scalar/vector bytes through the canonical RawData layout.\")\n PopulatePerFrameData(out)\n {\n FOG_COLOR_SCRATCH[0] = this.fogColor[0];\n FOG_COLOR_SCRATCH[1] = this.fogColor[1];\n FOG_COLOR_SCRATCH[2] = this.fogColor[2];\n out.Set(\"FroxelFogColor\", FOG_COLOR_SCRATCH);\n out.Set(\"FroxelBackgroundVisibility\", Math.min(Math.max(this.backgroundVisibility, 0), 1));\n out.Set(\"FroxelBaseDensity\", this.thickness / this.gameBackClip);\n out.Set(\"FroxelMaxDistance\", this.gameBackClip);\n out.Set(\"FroxelMaxDistanceVisibility\", Math.exp(-this.thickness));\n out.Set(\"FroxelEnvironmentIntensity\", this.environmentIntensity);\n out.Set(\"FroxelEnvironmentG\", -Math.min(Math.max(this.environmentDirectionality, 0.001), 0.999));\n out.SetIndex(\"FroxelPlanets\", 0, this.#planets[0]);\n out.SetIndex(\"FroxelPlanets\", 1, this.#planets[1]);\n return out;\n }\n\n /** Applies Carbon's four quality presets. */\n @carbon.method\n @impl.implemented\n SetQuality(quality)\n {\n this.quality = quality;\n switch (quality)\n {\n case Tr2VolumerticQuality.Ultra:\n this.scaleFactor = 1;\n this.castShadows = true;\n this.receiveShadows = true;\n break;\n case Tr2VolumerticQuality.High:\n this.scaleFactor = 0.7;\n this.castShadows = true;\n this.receiveShadows = false;\n break;\n case Tr2VolumerticQuality.Medium:\n this.scaleFactor = 0.5;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n default:\n this.scaleFactor = 0.3;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n }\n }\n\n /** Copies the two planet spheres used by the fog shader. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon asserts a two-sphere span and memcpy-copies it; JavaScript throws RangeError and copies the two vec4 records.\")\n SetPlanets(planets)\n {\n if (!planets || planets.length !== 2)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.SetPlanets requires exactly two spheres.\");\n }\n vec4.copy(this.#planets[0], planets[0]);\n vec4.copy(this.#planets[1], planets[1]);\n }\n\n /** Stores the sun angle consumed by later fog constant production. */\n @carbon.method\n @impl.implemented\n SetSunAngle(angle)\n {\n this.#sunAngle = angle;\n }\n\n /** Returns the wrapped 0..1 god-ray noise phase and the upload is not ported yet. */\n @impl.custom\n @impl.reason(\"Engines need Carbon's private CPU-produced phase without owning or recomputing its update policy.\")\n GetGodRayNoiseAnimation()\n {\n return this.#godRayNoiseAnimation;\n }\n\n /** Copies Carbon's accumulated double-precision fog-noise movement. */\n @impl.custom\n @impl.reason(\"Engines consume the CPU-produced movement but do not advance it independently.\")\n GetFogNoiseMovement(out)\n {\n out[0] = this.#fogNoiseMovement[0];\n out[1] = this.#fogNoiseMovement[1];\n out[2] = this.#fogNoiseMovement[2];\n return out;\n }\n\n /** Returns the scene-produced sun angle used by fog realization. */\n @impl.custom\n @impl.reason(\"Carbon stores this as private renderer state; the split needs an explicit read boundary.\")\n GetSunAngle()\n {\n return this.#sunAngle;\n }\n\n /** Copies one of the two scene-selected planet spheres. */\n @impl.custom\n @impl.reason(\"Carbon's physical fog pass reads private planet state; the engine executor receives it through this checked copy boundary.\")\n GetPlanet(index, out)\n {\n if (index !== 0 && index !== 1)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.GetPlanet index must be 0 or 1.\");\n }\n return vec4.copy(out, this.#planets[index]);\n }\n\n /**\n * Renders the froxel volume for every volumetric component in the registry.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's froxel compute and raymarch passes (Tr2VolumetricsRenderer.cpp:152-493) have no JS counterpart.\")\n RenderVolumetrics()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderVolumetrics: the froxel passes are unported.\");\n }\n\n /**\n * The neutral volumetric texture, used when nothing volumetric is in view.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or slice count, and no initial subresource data, so a 2D array of four slices cannot be asked for.\")\n static GetEmptyVolumetricTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyVolumetricTexture: needs a pool description \"\n + \"carrying texture type, slice count and initial data.\"\n );\n }\n\n /**\n * Renders the fog volume.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's fog passes (Tr2VolumetricsRenderer.cpp:494-554) have no JS counterpart.\")\n RenderFog()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFog: the fog passes are unported.\");\n }\n\n /**\n * Renders the fog volume into a reflection map.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's reflection-map fog pass (Tr2VolumetricsRenderer.cpp:519-554) has no JS counterpart.\")\n RenderFogIntoReflectionMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFogIntoReflectionMap: the fog passes are unported.\");\n }\n\n /**\n * The neutral froxel-fog texture, used when there is no fog.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or initial subresource data, so a 3D texture cannot be asked for.\")\n static GetEmptyFogTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyFogTexture: needs a pool description \"\n + \"carrying texture type and initial data.\"\n );\n }\n\n /**\n * Rebuilds the Mie environment map.\n *\n * UNPORTED. Carbon's 86-line body renders each cube face through the fog\n * effect (`Tr2VolumetricsRenderer.cpp`), which needs the same unported pass\n * machinery as the fog methods above.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the fog pass machinery, which is unported.\")\n UpdateFogEnvironmentMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.UpdateFogEnvironmentMap: the fog passes are unported.\");\n }\n\n /**\n * Publishes the Mie environment map under the name effects sample it by.\n *\n * Carbon takes no arguments here and registers on the global store\n * (`Tr2VolumetricsRenderer.cpp`, one line). The port had grown a\n * `renderContext` parameter that existed only to reach an executor.\n */\n @carbon.method\n @impl.implemented\n UpdateVariableStore()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSceneMieEnvironmentMap\", this.mieEnvironmentMap);\n }\n\n /**\n * Renders volumetric shadows for the registry's components.\n *\n * UNPORTED. Carbon's 31-line body walks the volumetric components and issues a\n * shadow pass per one, which needs the same unported pass machinery.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the volumetric pass machinery, which is unported.\")\n RenderShadows()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderShadows: the volumetric passes are unported.\");\n }\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n}\n"],"names":["FROXEL_FOG_COMPONENT","FROXEL_NOISE_DEPTH","FOG_COLOR_SCRATCH","vec3","create","_Tr2VolumetricsRender","_identity","Tr2VolumetricsRenderer","CjsModel","e","_init_quality","_init_extra_quality","_init_mieEnvironmentMap","_init_extra_mieEnvironmentMap","_init_blur","_init_extra_blur","_init_logBlending","_init_extra_logBlending","_init_gameBackClip","_init_extra_gameBackClip","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_thickness","_init_extra_thickness","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_lightDirectionality","_init_extra_lightDirectionality","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_fogNoiseMovementSpeed","_init_extra_fogNoiseMovementSpeed","_init_fogColor","_init_extra_fogColor","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_logBlendingSmoothness","_init_extra_logBlendingSmoothness","_init_environmentIntensity","_init_extra_environmentIntensity","_init_castShadows","_init_extra_castShadows","_init_receiveShadows","_init_extra_receiveShadows","_init_scaleFactor","_init_extra_scaleFactor","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","read","objectRef","boolean","float32","color","float64","carbon","method","impl","adapted","reason","implemented","custom","notImplemented","quality","Tr2VolumerticQuality","High","mieEnvironmentMap","Tr2TextureReference","blur","logBlending","gameBackClip","backgroundVisibility","thickness","environmentDirectionality","lightDirectionality","godRayNoiseAnimationSpeed","fogNoiseMovementSpeed","fogColor","vec4","godRayNoiseFrequency","fogNoiseFrequency","godRayNoiseIntensity","fogNoiseIntensity","logBlendingSmoothness","environmentIntensity","castShadows","receiveShadows","scaleFactor","Float64Array","fromValues","constructor","store","Tr2VariableStore","GlobalStore","RegisterVariable","UpdateFogSettings","registry","updateContext","settings","Array","from","GetComponents","component","GetFroxelFogSettings","smoothness","value","logThickness","Math","log1p","Number","enabled","sort","a","b","priority","AccumulatePriorityAttribute","expm1","delta","GetDeltaT","floor","lane","HasFog","PopulatePerFrameData","out","Set","min","max","exp","SetIndex","SetQuality","Ultra","Medium","SetPlanets","planets","length","RangeError","copy","SetSunAngle","angle","GetGodRayNoiseAnimation","GetFogNoiseMovement","GetSunAngle","GetPlanet","index","RenderVolumetrics","Error","GetEmptyVolumetricTexture","_gpuResourcePool","RenderFog","RenderFogIntoReflectionMap","GetEmptyFogTexture","UpdateFogEnvironmentMap","UpdateVariableStore","RenderShadows"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2VolumetricsRenderer.js","sources":["../../../../../src/trinity/core/volumetrics/Tr2VolumetricsRenderer.js"],"sourcesContent":["// Source: trinity/trinity/Tr2VolumetricsRenderer.h\n// Source: trinity/trinity/Tr2VolumetricsRenderer.cpp\n// Source: trinity/trinity/Tr2VolumetricsRenderer_Blue.cpp\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureReference } from \"../Tr2TextureReference.js\";\nimport { AccumulatePriorityAttribute } from \"../PriorityBlend.js\";\nimport { Tr2VariableStore } from \"../variable/Tr2VariableStore.js\";\n\n\nconst FROXEL_FOG_COMPONENT = \"FroxelFogSettings\";\nconst FROXEL_NOISE_DEPTH = 64;\nconst FOG_COLOR_SCRATCH = vec3.create();\n\n\n/**\n * Owns portable froxel-fog blending and terminal per-frame constant writes.\n * Physical fog/volumetric textures, passes and environment-map realization\n * remain explicit engine obligations.\n */\n@type.define({ className: \"Tr2VolumetricsRenderer\", family: \"trinityCore\" })\nexport class Tr2VolumetricsRenderer extends CjsModel\n{\n @edit.readwrite\n @type.int32\n @type.enum(\"Tr2VolumerticQuality\")\n quality = Tr2VolumerticQuality.High;\n\n @edit.read\n @type.objectRef(\"Tr2TextureReference\")\n mieEnvironmentMap = new Tr2TextureReference();\n\n @edit.readwrite\n @type.boolean\n blur = true;\n\n @edit.readwrite\n @type.boolean\n logBlending = true;\n\n @edit.readwrite\n @type.float32\n gameBackClip = 1e6;\n\n @edit.read\n @type.float32\n backgroundVisibility = 0;\n\n @edit.read\n @type.float32\n thickness = 0;\n\n @edit.read\n @type.float32\n environmentDirectionality = 0;\n\n @edit.read\n @type.float32\n lightDirectionality = 0;\n\n @edit.read\n @type.float32\n godRayNoiseAnimationSpeed = 0;\n\n @edit.read\n @type.vec3\n fogNoiseMovementSpeed = vec3.create();\n\n @edit.read\n @type.color\n fogColor = vec4.create();\n\n @edit.read\n @type.float32\n godRayNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n fogNoiseFrequency = 0;\n\n @edit.read\n @type.float32\n godRayNoiseIntensity = 0;\n\n @edit.read\n @type.float32\n fogNoiseIntensity = 0;\n\n @edit.readwrite\n @type.float64\n logBlendingSmoothness = 4;\n\n @edit.read\n @type.float32\n environmentIntensity = 0;\n\n @edit.readwrite\n @type.boolean\n castShadows = false;\n\n @edit.readwrite\n @type.boolean\n receiveShadows = false;\n\n @edit.readwrite\n @type.float32\n scaleFactor = 0.7;\n\n #godRayNoiseAnimation = 0;\n\n #fogNoiseMovement = new Float64Array(3);\n\n #planets = [ vec4.fromValues(0, 0, 0, -1), vec4.fromValues(0, 0, 0, -1) ];\n\n #sunAngle = 0;\n\n /** Creates Carbon's logical Mie reference and reserves its texture globals. */\n constructor()\n {\n super();\n const store = Tr2VariableStore.GlobalStore();\n store.RegisterVariable(\"EveSceneFogVolumeMap\");\n store.RegisterVariable(\"VolumetricDepthMap\");\n store.RegisterVariable(\"EveSceneMieEnvironmentMap\");\n store.RegisterVariable(\"EveSceneFroxelFogMap\");\n }\n\n /** Updates all fog attributes from the scene's nominal component registry. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The Eve component registry is supplied directly; Carbon's realized 64-deep noise texture becomes its fixed animation-depth constant while physical noise storage is not ported yet.\")\n UpdateFogSettings(registry, updateContext)\n {\n const settings = Array.from(registry.GetComponents(FROXEL_FOG_COMPONENT), component =>\n component.GetFroxelFogSettings());\n\n const smoothness = this.logBlendingSmoothness;\n for (const value of settings)\n {\n value.logThickness.value = Math.log1p(Number(value.thickness.value) * smoothness);\n value.logThickness.enabled = value.thickness.enabled;\n }\n settings.sort((a, b) => b.priority - a.priority);\n\n this.thickness = AccumulatePriorityAttribute(settings, value => value.thickness);\n this.lightDirectionality = AccumulatePriorityAttribute(settings, value => value.lightDirectionality);\n this.environmentIntensity = AccumulatePriorityAttribute(settings, value => value.environmentIntensity);\n this.environmentDirectionality = AccumulatePriorityAttribute(settings, value => value.environmentDirectionality);\n AccumulatePriorityAttribute(settings, value => value.fogColor, this.fogColor);\n this.backgroundVisibility = AccumulatePriorityAttribute(settings, value => value.backgroundVisibility);\n this.godRayNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.godRayNoiseIntensity);\n this.godRayNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.godRayNoiseFrequency);\n this.godRayNoiseAnimationSpeed = AccumulatePriorityAttribute(settings, value => value.godRayNoiseAnimationSpeed);\n this.fogNoiseIntensity = AccumulatePriorityAttribute(settings, value => value.fogNoiseIntensity);\n this.fogNoiseFrequency = AccumulatePriorityAttribute(settings, value => value.fogNoiseFrequency);\n AccumulatePriorityAttribute(settings, value => value.fogNoiseMovementSpeed, this.fogNoiseMovementSpeed);\n\n if (this.logBlending)\n {\n const logThickness = AccumulatePriorityAttribute(settings, value => value.logThickness);\n this.thickness = Math.expm1(logThickness) / smoothness;\n }\n\n const delta = updateContext.GetDeltaT();\n this.#godRayNoiseAnimation += this.godRayNoiseAnimationSpeed * (delta / FROXEL_NOISE_DEPTH);\n this.#godRayNoiseAnimation -= Math.floor(this.#godRayNoiseAnimation);\n for (let lane = 0; lane < 3; lane++)\n {\n this.#fogNoiseMovement[lane] += this.fogNoiseMovementSpeed[lane] * delta;\n }\n }\n\n /** Reports whether the blended fog thickness is strictly positive. */\n @carbon.method\n @impl.implemented\n HasFog()\n {\n return this.thickness > 0;\n }\n\n /** Writes the inline FroxelPerFrameData fields into canonical RawData. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon writes an inline constant struct; Trinity writes the same terminal scalar/vector bytes through the canonical RawData layout.\")\n PopulatePerFrameData(out)\n {\n FOG_COLOR_SCRATCH[0] = this.fogColor[0];\n FOG_COLOR_SCRATCH[1] = this.fogColor[1];\n FOG_COLOR_SCRATCH[2] = this.fogColor[2];\n out.Set(\"FroxelFogColor\", FOG_COLOR_SCRATCH);\n out.Set(\"FroxelBackgroundVisibility\", Math.min(Math.max(this.backgroundVisibility, 0), 1));\n out.Set(\"FroxelBaseDensity\", this.thickness / this.gameBackClip);\n out.Set(\"FroxelMaxDistance\", this.gameBackClip);\n out.Set(\"FroxelMaxDistanceVisibility\", Math.exp(-this.thickness));\n out.Set(\"FroxelEnvironmentIntensity\", this.environmentIntensity);\n out.Set(\"FroxelEnvironmentG\", -Math.min(Math.max(this.environmentDirectionality, 0.001), 0.999));\n out.SetIndex(\"FroxelPlanets\", 0, this.#planets[0]);\n out.SetIndex(\"FroxelPlanets\", 1, this.#planets[1]);\n return out;\n }\n\n /** Applies Carbon's four quality presets. */\n @carbon.method\n @impl.implemented\n SetQuality(quality)\n {\n this.quality = quality;\n switch (quality)\n {\n case Tr2VolumerticQuality.Ultra:\n this.scaleFactor = 1;\n this.castShadows = true;\n this.receiveShadows = true;\n break;\n case Tr2VolumerticQuality.High:\n this.scaleFactor = 0.7;\n this.castShadows = true;\n this.receiveShadows = false;\n break;\n case Tr2VolumerticQuality.Medium:\n this.scaleFactor = 0.5;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n default:\n this.scaleFactor = 0.3;\n this.castShadows = false;\n this.receiveShadows = false;\n break;\n }\n }\n\n /** Copies the two planet spheres used by the fog shader. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon asserts a two-sphere span and memcpy-copies it; JavaScript throws RangeError and copies the two vec4 records.\")\n SetPlanets(planets)\n {\n if (!planets || planets.length !== 2)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.SetPlanets requires exactly two spheres.\");\n }\n vec4.copy(this.#planets[0], planets[0]);\n vec4.copy(this.#planets[1], planets[1]);\n }\n\n /** Stores the sun angle consumed by later fog constant production. */\n @carbon.method\n @impl.implemented\n SetSunAngle(angle)\n {\n this.#sunAngle = angle;\n }\n\n /** Returns the wrapped 0..1 god-ray noise phase and the upload is not ported yet. */\n @impl.custom\n @impl.reason(\"Engines need Carbon's private CPU-produced phase without owning or recomputing its update policy.\")\n GetGodRayNoiseAnimation()\n {\n return this.#godRayNoiseAnimation;\n }\n\n /** Copies Carbon's accumulated double-precision fog-noise movement. */\n @impl.custom\n @impl.reason(\"Engines consume the CPU-produced movement but do not advance it independently.\")\n GetFogNoiseMovement(out)\n {\n out[0] = this.#fogNoiseMovement[0];\n out[1] = this.#fogNoiseMovement[1];\n out[2] = this.#fogNoiseMovement[2];\n return out;\n }\n\n /** Returns the scene-produced sun angle used by fog realization. */\n @impl.custom\n @impl.reason(\"Carbon stores this as private renderer state; the split needs an explicit read boundary.\")\n GetSunAngle()\n {\n return this.#sunAngle;\n }\n\n /** Copies one of the two scene-selected planet spheres. */\n @impl.custom\n @impl.reason(\"Carbon's physical fog pass reads private planet state; the engine executor receives it through this checked copy boundary.\")\n GetPlanet(index, out)\n {\n if (index !== 0 && index !== 1)\n {\n throw new RangeError(\"Tr2VolumetricsRenderer.GetPlanet index must be 0 or 1.\");\n }\n return vec4.copy(out, this.#planets[index]);\n }\n\n /**\n * Renders the froxel volume for every volumetric component in the registry.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's froxel compute and raymarch passes (Tr2VolumetricsRenderer.cpp:152-493) have no JS counterpart.\")\n RenderVolumetrics()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderVolumetrics: the froxel passes are unported.\");\n }\n\n /**\n * The neutral volumetric texture, used when nothing volumetric is in view.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or slice count, and no initial subresource data, so a 2D array of four slices cannot be asked for.\")\n static GetEmptyVolumetricTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyVolumetricTexture: needs a pool description \"\n + \"carrying texture type, slice count and initial data.\"\n );\n }\n\n /**\n * Renders the fog volume.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's fog passes (Tr2VolumetricsRenderer.cpp:494-554) have no JS counterpart.\")\n RenderFog()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFog: the fog passes are unported.\");\n }\n\n /**\n * Renders the fog volume into a reflection map.\n *\n * UNPORTED. Carbon's body is the bulk of a 1,150-line file and drives the\n * froxel volume: it sizes the target from the scene depth and a scale factor,\n * counts `ITr2VolumetricRenderable` components off the registry, then runs the\n * compute and raymarch passes. None of that has a JS counterpart yet.\n *\n * It throws rather than returning nothing: a caller that silently got no\n * volumetric texture renders a scene with no fog and looks plausible.\n *\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Carbon's reflection-map fog pass (Tr2VolumetricsRenderer.cpp:519-554) has no JS counterpart.\")\n RenderFogIntoReflectionMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderFogIntoReflectionMap: the fog passes are unported.\");\n }\n\n /**\n * The neutral froxel-fog texture, used when there is no fog.\n *\n * UNPORTED, AND THE BLOCKER IS THE POOL'S DESCRIPTION. Carbon borrows a 1x1\n * black texture seeded with `Tr2SubresourceData` and described by a\n * `Tr2BitmapDimensions` carrying a texture TYPE and a slice count - a 2D array\n * of four slices here, a 3D texture for fog. Our pool takes only\n * `{ width, height, format, gpuUsage }`, which can express neither, and its\n * `initialize` callback has no way to supply initial subresource bytes.\n *\n * Carbon's signature is restored (static, taking the pool) so the shape is\n * right when the pool grows a full description.\n *\n * @param {object} _gpuResourcePool The pool to borrow from.\n * @returns {object} Never; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Tr2GpuResourcePool's description carries no texture type or initial subresource data, so a 3D texture cannot be asked for.\")\n static GetEmptyFogTexture(_gpuResourcePool)\n {\n throw new Error(\n \"Tr2VolumetricsRenderer.GetEmptyFogTexture: needs a pool description \"\n + \"carrying texture type and initial data.\"\n );\n }\n\n /**\n * Rebuilds the Mie environment map.\n *\n * UNPORTED. Carbon's 86-line body renders each cube face through the fog\n * effect (`Tr2VolumetricsRenderer.cpp`), which needs the same unported pass\n * machinery as the fog methods above.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the fog pass machinery, which is unported.\")\n UpdateFogEnvironmentMap()\n {\n throw new Error(\"Tr2VolumetricsRenderer.UpdateFogEnvironmentMap: the fog passes are unported.\");\n }\n\n /**\n * Publishes the Mie environment map under the name effects sample it by.\n *\n * Carbon takes no arguments here and registers on the global store\n * (`Tr2VolumetricsRenderer.cpp`, one line). The port had grown a\n * `renderContext` parameter that existed only to reach an executor.\n */\n @carbon.method\n @impl.implemented\n UpdateVariableStore()\n {\n Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSceneMieEnvironmentMap\", this.mieEnvironmentMap);\n }\n\n /**\n * Renders volumetric shadows for the registry's components.\n *\n * UNPORTED. Carbon's 31-line body walks the volumetric components and issues a\n * shadow pass per one, which needs the same unported pass machinery.\n *\n * @returns {void} Never returns; see above.\n */\n @carbon.method\n @impl.notImplemented\n @impl.reason(\"Needs the volumetric pass machinery, which is unported.\")\n RenderShadows()\n {\n throw new Error(\"Tr2VolumetricsRenderer.RenderShadows: the volumetric passes are unported.\");\n }\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n}\n"],"names":["FROXEL_FOG_COMPONENT","FROXEL_NOISE_DEPTH","FOG_COLOR_SCRATCH","vec3","create","_Tr2VolumetricsRender","_identity","Tr2VolumetricsRenderer","CjsModel","e","_init_quality","_init_extra_quality","_init_mieEnvironmentMap","_init_extra_mieEnvironmentMap","_init_blur","_init_extra_blur","_init_logBlending","_init_extra_logBlending","_init_gameBackClip","_init_extra_gameBackClip","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_thickness","_init_extra_thickness","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_lightDirectionality","_init_extra_lightDirectionality","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_fogNoiseMovementSpeed","_init_extra_fogNoiseMovementSpeed","_init_fogColor","_init_extra_fogColor","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_logBlendingSmoothness","_init_extra_logBlendingSmoothness","_init_environmentIntensity","_init_extra_environmentIntensity","_init_castShadows","_init_extra_castShadows","_init_receiveShadows","_init_extra_receiveShadows","_init_scaleFactor","_init_extra_scaleFactor","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","read","objectRef","boolean","float32","color","float64","carbon","method","impl","adapted","reason","implemented","custom","notImplemented","quality","Tr2VolumerticQuality","High","mieEnvironmentMap","Tr2TextureReference","blur","logBlending","gameBackClip","backgroundVisibility","thickness","environmentDirectionality","lightDirectionality","godRayNoiseAnimationSpeed","fogNoiseMovementSpeed","fogColor","vec4","godRayNoiseFrequency","fogNoiseFrequency","godRayNoiseIntensity","fogNoiseIntensity","logBlendingSmoothness","environmentIntensity","castShadows","receiveShadows","scaleFactor","Float64Array","fromValues","constructor","store","Tr2VariableStore","GlobalStore","RegisterVariable","UpdateFogSettings","registry","updateContext","settings","Array","from","GetComponents","component","GetFroxelFogSettings","smoothness","value","logThickness","Math","log1p","Number","enabled","sort","a","b","priority","AccumulatePriorityAttribute","expm1","delta","GetDeltaT","floor","lane","HasFog","PopulatePerFrameData","out","Set","min","max","exp","SetIndex","SetQuality","Ultra","Medium","SetPlanets","planets","length","RangeError","copy","SetSunAngle","angle","GetGodRayNoiseAnimation","GetFogNoiseMovement","GetSunAngle","GetPlanet","index","RenderVolumetrics","Error","GetEmptyVolumetricTexture","_gpuResourcePool","RenderFog","RenderFogIntoReflectionMap","GetEmptyFogTexture","UpdateFogEnvironmentMap","UpdateVariableStore","RenderShadows"],"mappings":"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"}
|
|
@@ -7,17 +7,20 @@ import { edit, type, carbon, impl } from '#schema';
|
|
|
7
7
|
import { Tr2ScalarFader as _Tr2ScalarFader } from '../curves/curve/Tr2ScalarFader.js';
|
|
8
8
|
import { ImpactConfiguration } from '../generated/include/enums.js';
|
|
9
9
|
import { Tr2Lod } from '#consts/trinity';
|
|
10
|
-
import { EveDamageOverlay as _EveDamageOverlay } from './overlays/EveDamageOverlay.js';
|
|
10
|
+
import { EveDamageOverlay as _EveDamageOverlay, IMPACT_ARMOR_SIZE_MAX, IMPACT_ARMOR_SIZE_FACTOR } from './overlays/EveDamageOverlay.js';
|
|
11
|
+
import { ITr2GenericEmitterUpdateArguments as _ITr2GenericEmitterUp } from '../particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js';
|
|
12
|
+
import '../particle/ITr2GenericEmitter/ITr2GenericEmitter.js';
|
|
11
13
|
|
|
12
14
|
let _initProto, _initClass, _init_name, _init_extra_name, _init_seed, _init_extra_seed, _init_display, _init_extra_display, _init_damageOverlay, _init_extra_damageOverlay, _init_configuration, _init_extra_configuration, _init_impactDataNextIdx, _init_extra_impactDataNextIdx, _init_armorImpactGoalCount, _init_extra_armorImpactGoalCount, _init_armorImpactParentSize, _init_extra_armorImpactParentSize, _init_shieldImpactColorFade, _init_extra_shieldImpactColorFade, _init_shieldImpactParentSize, _init_extra_shieldImpactParentSize, _init_shieldIsEllipsoid, _init_extra_shieldIsEllipsoid, _init_debugForceSpawnDebris, _init_extra_debugForceSpawnDebris, _init_renderPriority, _init_extra_renderPriority, _init_mesh, _init_extra_mesh, _init_dataTextureBlockID, _init_extra_dataTextureBlockID, _init_maxShieldImpacts, _init_extra_maxShieldImpacts, _init_overallShieldImpact, _init_extra_overallShieldImpact, _init_shieldHardening, _init_extra_shieldHardening, _init_shieldBoosting, _init_extra_shieldBoosting, _init_armorDamageShader, _init_extra_armorDamageShader, _init_armorImpactEmitter, _init_extra_armorImpactEmitter, _init_armorRepairing, _init_extra_armorRepairing, _init_armorHardening, _init_extra_armorHardening, _init_hullRepairing, _init_extra_hullRepairing, _init_hullDamageFlickerCurve, _init_extra_hullDamageFlickerCurve, _init_hullDamageFactor, _init_extra_hullDamageFactor, _init_hullImpactEmitter, _init_extra_hullImpactEmitter;
|
|
13
15
|
const IMPACT_SHIELD_SIZE_MAX = 2000;
|
|
14
16
|
const IMPACT_SHIELD_SIZE_MIN = 70;
|
|
15
17
|
const IMPACT_SHIELD_FADEOUT = 1.5;
|
|
18
|
+
const IMPACT_ARMOR_PARTICLE_LOD_FACTOR = 400;
|
|
16
19
|
|
|
17
|
-
/**
|
|
18
|
-
* The damage presentation for one ship: shield, armour and hull impact
|
|
19
|
-
* resources, the faders driving hardening and repair effects, and the
|
|
20
|
-
* data-texture bookkeeping that feeds them.
|
|
20
|
+
/**
|
|
21
|
+
* The damage presentation for one ship: shield, armour and hull impact
|
|
22
|
+
* resources, the faders driving hardening and repair effects, and the
|
|
23
|
+
* data-texture bookkeeping that feeds them.
|
|
21
24
|
*/
|
|
22
25
|
let _EveImpactOverlay;
|
|
23
26
|
new class extends _identity {
|
|
@@ -29,7 +32,7 @@ new class extends _identity {
|
|
|
29
32
|
} = _applyDecs2311(this, [type.define({
|
|
30
33
|
className: "EveImpactOverlay",
|
|
31
34
|
family: "eve/overlays/impact"
|
|
32
|
-
})], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.read, type, type.uint32], 16, "seed"], [[edit, edit.readwrite, type, type.boolean], 16, "display"], [[edit, edit.read, void 0, type.objectRef("EveDamageOverlay")], 16, "damageOverlay"], [[edit, edit.read, type, type.int32, void 0, type.enum("ImpactConfiguration")], 16, "configuration"], [[edit, edit.read, type, type.int32], 16, "impactDataNextIdx"], [[edit, edit.read, type, type.uint64], 16, "armorImpactGoalCount"], [[edit, edit.read, type, type.float32], 16, "armorImpactParentSize"], [[edit, edit.readwrite, type, type.float32], 16, "shieldImpactColorFade"], [[edit, edit.read, type, type.float32], 16, "shieldImpactParentSize"], [[edit, edit.readwrite, type, type.boolean], 16, "shieldIsEllipsoid"], [[edit, edit.readwrite, type, type.boolean], 16, "debugForceSpawnDebris"], [[edit, edit.read, type, type.float32], 16, "renderPriority"], [[edit, edit.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[edit, edit.read, type, type.int32], 16, "dataTextureBlockID"], [[edit, edit.read, type, type.uint32], 16, "maxShieldImpacts"], [[edit, edit.readwrite, type, type.float32], 16, "overallShieldImpact"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldBoosting"], [[edit, edit.persist, void 0, type.objectRef("Tr2Effect")], 16, "armorDamageShader"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "armorImpactEmitter"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorRepairing"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "hullRepairing"], [[edit, edit.persist, void 0, type.objectRef("TriPerlinCurve")], 16, "hullDamageFlickerCurve"], [[edit, edit.readwrite, type, type.float32], 16, "hullDamageFactor"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "hullImpactEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "Set"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetSeed"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorImpactLifeTime"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLastDamageState"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDataTextureOffset"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.adapted], 18, "HasShieldEllipsoid"], [[carbon, carbon.method, impl, impl.adapted], 18, "ToggleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageOverlay"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "Clear"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActivationStrength"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorDamageShader"]], 0, void 0, CjsModel));
|
|
35
|
+
})], [[[edit, edit.persist, type, type.string], 16, "name"], [[edit, edit.read, type, type.uint32], 16, "seed"], [[edit, edit.readwrite, type, type.boolean], 16, "display"], [[edit, edit.read, void 0, type.objectRef("EveDamageOverlay")], 16, "damageOverlay"], [[edit, edit.read, type, type.int32, void 0, type.enum("ImpactConfiguration")], 16, "configuration"], [[edit, edit.read, type, type.int32], 16, "impactDataNextIdx"], [[edit, edit.read, type, type.uint64], 16, "armorImpactGoalCount"], [[edit, edit.read, type, type.float32], 16, "armorImpactParentSize"], [[edit, edit.readwrite, type, type.float32], 16, "shieldImpactColorFade"], [[edit, edit.read, type, type.float32], 16, "shieldImpactParentSize"], [[edit, edit.readwrite, type, type.boolean], 16, "shieldIsEllipsoid"], [[edit, edit.readwrite, type, type.boolean], 16, "debugForceSpawnDebris"], [[edit, edit.read, type, type.float32], 16, "renderPriority"], [[edit, edit.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[edit, edit.read, type, type.int32], 16, "dataTextureBlockID"], [[edit, edit.read, type, type.uint32], 16, "maxShieldImpacts"], [[edit, edit.readwrite, type, type.float32], 16, "overallShieldImpact"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "shieldBoosting"], [[edit, edit.persist, void 0, type.objectRef("Tr2Effect")], 16, "armorDamageShader"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "armorImpactEmitter"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorRepairing"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "armorHardening"], [[edit, edit.readwrite, void 0, type.objectRef("Tr2ScalarFader")], 16, "hullRepairing"], [[edit, edit.persist, void 0, type.objectRef("TriPerlinCurve")], 16, "hullDamageFlickerCurve"], [[edit, edit.readwrite, type, type.float32], 16, "hullDamageFactor"], [[edit, edit.persist, void 0, type.objectRef("Tr2GpuUniqueEmitter")], 16, "hullImpactEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted], 18, "Set"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetSeed"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorImpactLifeTime"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLastDamageState"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDataTextureOffset"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.adapted], 18, "HasShieldEllipsoid"], [[carbon, carbon.method, impl, impl.adapted], 18, "ToggleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageOverlay"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "Clear"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActivationStrength"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "SpawnImpactDebris"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetArmorDamageShader"]], 0, void 0, CjsModel));
|
|
33
36
|
}
|
|
34
37
|
name = (_initProto(this), _init_name(this, ""));
|
|
35
38
|
seed = (_init_extra_name(this), _init_seed(this, 0));
|
|
@@ -73,10 +76,10 @@ new class extends _identity {
|
|
|
73
76
|
return true;
|
|
74
77
|
}
|
|
75
78
|
|
|
76
|
-
/**
|
|
77
|
-
* Assigns the overlay's authored resources in one call - the hull flicker
|
|
78
|
-
* curve, the armour and hull impact emitters, the armour damage shader and the
|
|
79
|
-
* shield impact mesh - together with the shield shape flag.
|
|
79
|
+
/**
|
|
80
|
+
* Assigns the overlay's authored resources in one call - the hull flicker
|
|
81
|
+
* curve, the armour and hull impact emitters, the armour damage shader and the
|
|
82
|
+
* shield impact mesh - together with the shield shape flag.
|
|
80
83
|
*/
|
|
81
84
|
Set(hullDamageFlickerCurve, armorDamageEmitter, hullImpactEmitter, armorDamageShader, shieldImpactMesh, shieldIsEllipsoid) {
|
|
82
85
|
this.shieldIsEllipsoid = !!shieldIsEllipsoid;
|
|
@@ -89,9 +92,9 @@ new class extends _identity {
|
|
|
89
92
|
return true;
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
/**
|
|
93
|
-
* Sets the per-ship random seed that varies impact placement between otherwise
|
|
94
|
-
* identical hulls.
|
|
95
|
+
/**
|
|
96
|
+
* Sets the per-ship random seed that varies impact placement between otherwise
|
|
97
|
+
* identical hulls.
|
|
95
98
|
*/
|
|
96
99
|
SetSeed(seed) {
|
|
97
100
|
this.seed = Number(seed) >>> 0;
|
|
@@ -99,10 +102,10 @@ new class extends _identity {
|
|
|
99
102
|
return true;
|
|
100
103
|
}
|
|
101
104
|
|
|
102
|
-
/**
|
|
103
|
-
* Records how many damage locators the owning object exposes; derived from the
|
|
104
|
-
* owner at lifecycle time, so it is deliberately kept out of the values
|
|
105
|
-
* interchange.
|
|
105
|
+
/**
|
|
106
|
+
* Records how many damage locators the owning object exposes; derived from the
|
|
107
|
+
* owner at lifecycle time, so it is deliberately kept out of the values
|
|
108
|
+
* interchange.
|
|
106
109
|
*/
|
|
107
110
|
SetDamageLocatorCount(count) {
|
|
108
111
|
this.#damageLocatorCount = Number(count) >>> 0;
|
|
@@ -110,9 +113,9 @@ new class extends _identity {
|
|
|
110
113
|
return true;
|
|
111
114
|
}
|
|
112
115
|
|
|
113
|
-
/**
|
|
114
|
-
* Number of damage locators the owning object exposes, as last recorded by
|
|
115
|
-
* SetDamageLocatorCount.
|
|
116
|
+
/**
|
|
117
|
+
* Number of damage locators the owning object exposes, as last recorded by
|
|
118
|
+
* SetDamageLocatorCount.
|
|
116
119
|
*/
|
|
117
120
|
GetDamageLocatorCount() {
|
|
118
121
|
return this.#damageLocatorCount;
|
|
@@ -123,18 +126,18 @@ new class extends _identity {
|
|
|
123
126
|
return this.damageOverlay.GetArmorImpactLifeTime();
|
|
124
127
|
}
|
|
125
128
|
|
|
126
|
-
/**
|
|
127
|
-
* Copies the last recorded shield, armour and hull damage state.
|
|
128
|
-
* @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted
|
|
129
|
-
* @returns {Array} out
|
|
129
|
+
/**
|
|
130
|
+
* Copies the last recorded shield, armour and hull damage state.
|
|
131
|
+
* @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted
|
|
132
|
+
* @returns {Array} out
|
|
130
133
|
*/
|
|
131
134
|
GetLastDamageState(out = vec3.create()) {
|
|
132
135
|
return this.damageOverlay.GetLastDamageState(out);
|
|
133
136
|
}
|
|
134
137
|
|
|
135
|
-
/**
|
|
136
|
-
* Row offset of this overlay's block in the shared impact data texture, or -1
|
|
137
|
-
* while it has no block.
|
|
138
|
+
/**
|
|
139
|
+
* Row offset of this overlay's block in the shared impact data texture, or -1
|
|
140
|
+
* while it has no block.
|
|
138
141
|
*/
|
|
139
142
|
GetDataTextureOffset() {
|
|
140
143
|
return this.damageOverlay.GetDataTextureOffset();
|
|
@@ -145,18 +148,18 @@ new class extends _identity {
|
|
|
145
148
|
return this.damageOverlay.GetImpactConfiguration();
|
|
146
149
|
}
|
|
147
150
|
|
|
148
|
-
/**
|
|
149
|
-
* Whether the shield is presented as a generated ellipsoid rather than the
|
|
150
|
-
* authored shield impact mesh.
|
|
151
|
+
/**
|
|
152
|
+
* Whether the shield is presented as a generated ellipsoid rather than the
|
|
153
|
+
* authored shield impact mesh.
|
|
151
154
|
*/
|
|
152
155
|
HasShieldEllipsoid() {
|
|
153
156
|
return this.shieldIsEllipsoid;
|
|
154
157
|
}
|
|
155
158
|
|
|
156
|
-
/**
|
|
157
|
-
* Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.
|
|
158
|
-
* @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair
|
|
159
|
-
* @returns {Boolean} false when the name matches no fader
|
|
159
|
+
/**
|
|
160
|
+
* Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.
|
|
161
|
+
* @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair
|
|
162
|
+
* @returns {Boolean} false when the name matches no fader
|
|
160
163
|
*/
|
|
161
164
|
ToggleEffect(name, on, duration) {
|
|
162
165
|
if (name === "shieldboost" || name === "shieldhardening") {
|
|
@@ -305,12 +308,12 @@ new class extends _identity {
|
|
|
305
308
|
return -1;
|
|
306
309
|
}
|
|
307
310
|
|
|
308
|
-
/**
|
|
309
|
-
* Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):
|
|
310
|
-
* reuse a close-enough existing impact at the same locator (dot > 0.95),
|
|
311
|
-
* else - at the cap - reuse the closest impact anywhere, else intersect
|
|
312
|
-
* the shield ellipsoid and allocate a new record. Extracted from
|
|
313
|
-
* CreateImpact so the surface matches Carbon's; behaviour unchanged.
|
|
311
|
+
/**
|
|
312
|
+
* Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):
|
|
313
|
+
* reuse a close-enough existing impact at the same locator (dot > 0.95),
|
|
314
|
+
* else - at the cap - reuse the closest impact anywhere, else intersect
|
|
315
|
+
* the shield ellipsoid and allocate a new record. Extracted from
|
|
316
|
+
* CreateImpact so the surface matches Carbon's; behaviour unchanged.
|
|
314
317
|
*/
|
|
315
318
|
#CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent) {
|
|
316
319
|
{
|
|
@@ -373,12 +376,12 @@ new class extends _identity {
|
|
|
373
376
|
}
|
|
374
377
|
}
|
|
375
378
|
|
|
376
|
-
/**
|
|
377
|
-
* Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):
|
|
378
|
-
* ellipsoid shields intersect the impact ray with the shield ellipsoid in
|
|
379
|
-
* object space; non-ellipsoid shields answer the locator position in
|
|
380
|
-
* object space. Reads shieldIsEllipsoid off the instance exactly as
|
|
381
|
-
* Carbon does; the module-level helper carries the math.
|
|
379
|
+
/**
|
|
380
|
+
* Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):
|
|
381
|
+
* ellipsoid shields intersect the impact ray with the shield ellipsoid in
|
|
382
|
+
* object space; non-ellipsoid shields answer the locator position in
|
|
383
|
+
* object space. Reads shieldIsEllipsoid off the instance exactly as
|
|
384
|
+
* Carbon does; the module-level helper carries the math.
|
|
382
385
|
*/
|
|
383
386
|
#GetShieldImpactPosition(parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii, out = vec3.create()) {
|
|
384
387
|
return getShieldImpactPosition(out, this.shieldIsEllipsoid, parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii);
|
|
@@ -420,11 +423,60 @@ new class extends _identity {
|
|
|
420
423
|
}
|
|
421
424
|
|
|
422
425
|
/** Advances shield faders and publishes the shared damage block. */
|
|
423
|
-
UpdateSyncronous(updateContext,
|
|
426
|
+
UpdateSyncronous(updateContext, parent) {
|
|
427
|
+
// Carbon EveImpactOverlay.cpp:96-110: debris spawns BEFORE the activity
|
|
428
|
+
// early-out, so part overlays spawn even while the ship's is idle.
|
|
429
|
+
this.SpawnImpactDebris(updateContext, parent);
|
|
424
430
|
const hasGeneralActivity = this.HasGeneralActivity();
|
|
425
431
|
this.damageOverlay.UpdateBlockData(hasGeneralActivity ? updateContext.GetDataTextureManager() : null, hasGeneralActivity);
|
|
426
432
|
}
|
|
427
433
|
|
|
434
|
+
/**
|
|
435
|
+
* Spawns debris particles once for every armour impact that requested them,
|
|
436
|
+
* on the ship's overlay and then on each part's, offsetting part locators by
|
|
437
|
+
* their range in the merged damage set (Carbon EveImpactOverlay.cpp:116-180).
|
|
438
|
+
* The hull-emitter test reads the SHIP's impact configuration even for a
|
|
439
|
+
* part overlay; ported as written.
|
|
440
|
+
*/
|
|
441
|
+
SpawnImpactDebris(updateContext, parent) {
|
|
442
|
+
if (!_EveDamageOverlay.impactEffectEnabled) return;
|
|
443
|
+
const gpuParticleSystem = updateContext.GetGpuParticleSystem();
|
|
444
|
+
if (!gpuParticleSystem || !this.armorImpactEmitter) return;
|
|
445
|
+
const spawnFromOverlay = (overlay, mergedIndexOffset) => {
|
|
446
|
+
const armorImpactParentSize = overlay.GetArmorImpactParentSize();
|
|
447
|
+
if (armorImpactParentSize <= 0) return;
|
|
448
|
+
for (const impact of overlay.ArmorImpacts().values()) {
|
|
449
|
+
if (!impact.requestSpawnDebris) continue;
|
|
450
|
+
const locatorIndex = mergedIndexOffset + impact.damageLocatorIndex;
|
|
451
|
+
const impactPosWS = vec3.create();
|
|
452
|
+
parent.GetDamageLocatorPosition(locatorIndex, true, impactPosWS);
|
|
453
|
+
this.armorImpactEmitter.SetPosition(impactPosWS);
|
|
454
|
+
const impactDirWS = vec3.fromValues(0, 1, 0);
|
|
455
|
+
parent.GetDamageLocatorDirection(locatorIndex, true, impactDirWS);
|
|
456
|
+
this.armorImpactEmitter.SetDirection(impactDirWS);
|
|
457
|
+
const parentVelocityWS = vec3.create();
|
|
458
|
+
parent.GetWorldVelocity(parentVelocityWS);
|
|
459
|
+
const scale = impact.size * armorImpactParentSize / (IMPACT_ARMOR_SIZE_MAX / IMPACT_ARMOR_SIZE_FACTOR);
|
|
460
|
+
const rateModifier = Math.min(Math.max(overlay.GetRenderPriority() / IMPACT_ARMOR_PARTICLE_LOD_FACTOR, 0), 1);
|
|
461
|
+
const args = new _ITr2GenericEmitterUp();
|
|
462
|
+
args.time = updateContext.GetTime();
|
|
463
|
+
args.system = gpuParticleSystem;
|
|
464
|
+
vec3.copy(args.originShift, updateContext.GetOriginShift());
|
|
465
|
+
this.armorImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);
|
|
466
|
+
impact.requestSpawnDebris = false;
|
|
467
|
+
if (this.hullImpactEmitter && this.damageOverlay.GetImpactConfiguration() === ImpactConfiguration.IMPACT_HULL) {
|
|
468
|
+
this.hullImpactEmitter.SetPosition(impactPosWS);
|
|
469
|
+
this.hullImpactEmitter.SetDirection(impactDirWS);
|
|
470
|
+
this.hullImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
spawnFromOverlay(this.damageOverlay, 0);
|
|
475
|
+
for (const [overlay, start] of parent.CollectPartDamageOverlays([])) {
|
|
476
|
+
spawnFromOverlay(overlay, start);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
428
480
|
/** Ages shield impacts and rebuilds the shared damage rows. */
|
|
429
481
|
UpdateAsyncronous(updateContext, parent) {
|
|
430
482
|
const delta = updateContext.GetDeltaT();
|
|
@@ -496,9 +548,9 @@ new class extends _identity {
|
|
|
496
548
|
this.damageOverlay.SetHullRepairing(this.hullRepairing);
|
|
497
549
|
}
|
|
498
550
|
|
|
499
|
-
/**
|
|
500
|
-
* Maps an effect name to the fader that drives it, or null when the name is
|
|
501
|
-
* unknown.
|
|
551
|
+
/**
|
|
552
|
+
* Maps an effect name to the fader that drives it, or null when the name is
|
|
553
|
+
* unknown.
|
|
502
554
|
*/
|
|
503
555
|
}];
|
|
504
556
|
#effectFader(overlay, name) {
|