@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":"EveImpactOverlay.js","sources":["../../../../src/trinity/eve/EveImpactOverlay.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay.h\r\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay.cpp\r\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay_Blue.cpp\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { CjsModel } from \"#model\";\r\nimport { carbon, impl, edit, type } from \"#schema\";\r\nimport { Tr2ScalarFader } from \"../curves/curve/Tr2ScalarFader.js\";\r\nimport { ImpactConfiguration } from \"../generated/include/enums.js\";\r\nimport { Tr2Lod } from \"./EveLODHelper.js\";\r\nimport { EveDamageOverlay } from \"./overlays/EveDamageOverlay.js\";\r\n\r\n\r\nconst IMPACT_SHIELD_SIZE_MAX = 2000;\r\nconst IMPACT_SHIELD_SIZE_MIN = 70;\r\nconst IMPACT_SHIELD_FADEOUT = 1.5;\r\n\r\n\r\n/**\r\n * The damage presentation for one ship: shield, armour and hull impact\r\n * resources, the faders driving hardening and repair effects, and the\r\n * data-texture bookkeeping that feeds them.\r\n */\r\n@type.define({ className: \"EveImpactOverlay\", family: \"eve/overlays/impact\" })\r\nexport class EveImpactOverlay extends CjsModel\r\n{\r\n @edit.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @edit.read\r\n @type.uint32\r\n seed = 0;\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n display = true;\r\n\r\n @edit.read\r\n @type.objectRef(\"EveDamageOverlay\")\r\n damageOverlay = new EveDamageOverlay();\r\n\r\n @edit.read\r\n @type.int32\r\n @type.enum(\"ImpactConfiguration\")\r\n configuration = 0;\r\n\r\n @edit.read\r\n @type.int32\r\n impactDataNextIdx = 1;\r\n\r\n @edit.read\r\n @type.uint64\r\n armorImpactGoalCount = 0;\r\n\r\n @edit.read\r\n @type.float32\r\n armorImpactParentSize = 0;\r\n\r\n @edit.readwrite\r\n @type.float32\r\n shieldImpactColorFade = 0;\r\n\r\n @edit.read\r\n @type.float32\r\n shieldImpactParentSize = 0;\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n shieldIsEllipsoid = true;\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n debugForceSpawnDebris = false;\r\n\r\n @edit.read\r\n @type.float32\r\n renderPriority = 0;\r\n\r\n @edit.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n @edit.read\r\n @type.int32\r\n dataTextureBlockID = -1;\r\n\r\n @edit.read\r\n @type.uint32\r\n maxShieldImpacts = 8;\r\n\r\n @edit.readwrite\r\n @type.float32\r\n overallShieldImpact = -1;\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"Tr2ScalarFader\")\r\n shieldHardening = new Tr2ScalarFader();\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"Tr2ScalarFader\")\r\n shieldBoosting = new Tr2ScalarFader();\r\n\r\n @edit.persist\r\n @type.objectRef(\"Tr2Effect\")\r\n armorDamageShader = null;\r\n\r\n @edit.persist\r\n @type.objectRef(\"Tr2GpuUniqueEmitter\")\r\n armorImpactEmitter = null;\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"Tr2ScalarFader\")\r\n armorRepairing = new Tr2ScalarFader();\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"Tr2ScalarFader\")\r\n armorHardening = new Tr2ScalarFader();\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"Tr2ScalarFader\")\r\n hullRepairing = new Tr2ScalarFader();\r\n\r\n @edit.persist\r\n @type.objectRef(\"TriPerlinCurve\")\r\n hullDamageFlickerCurve = null;\r\n\r\n @edit.readwrite\r\n @type.float32\r\n hullDamageFactor = 0;\r\n\r\n @edit.persist\r\n @type.objectRef(\"Tr2GpuUniqueEmitter\")\r\n hullImpactEmitter = null;\r\n\r\n // Derived at lifecycle time from the owner's \"damage\" locator set; not an\r\n // authored value, so it never enters the values interchange.\r\n #damageLocatorCount = 0;\r\n\r\n #armorImpactLifeTime = 10;\r\n\r\n #dataTextureOffset = -1;\r\n\r\n #lastDamageState = vec3.fromValues(1, 1, 1);\r\n\r\n #shieldImpacts = new Map();\r\n\r\n /** Post-hydration hook; the overlay needs no additional setup. */\r\n @carbon.method\r\n @impl.implemented\r\n Initialize()\r\n {\r\n this.#SyncLegacyDamageFieldsToOverlay();\r\n return true;\r\n }\r\n\r\n /**\r\n * Assigns the overlay's authored resources in one call - the hull flicker\r\n * curve, the armour and hull impact emitters, the armour damage shader and the\r\n * shield impact mesh - together with the shield shape flag.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Set(hullDamageFlickerCurve, armorDamageEmitter, hullImpactEmitter, armorDamageShader, shieldImpactMesh, shieldIsEllipsoid)\r\n {\r\n this.shieldIsEllipsoid = !!shieldIsEllipsoid;\r\n this.hullDamageFlickerCurve = hullDamageFlickerCurve ?? null;\r\n this.armorImpactEmitter = armorDamageEmitter ?? null;\r\n this.hullImpactEmitter = hullImpactEmitter ?? null;\r\n this.armorDamageShader = armorDamageShader ?? null;\r\n this.mesh = shieldImpactMesh ?? null;\r\n this.#SyncLegacyDamageFieldsToOverlay();\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the per-ship random seed that varies impact placement between otherwise\r\n * identical hulls.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetSeed(seed)\r\n {\r\n this.seed = Number(seed) >>> 0;\r\n this.damageOverlay.SetSeed(this.seed);\r\n return true;\r\n }\r\n\r\n /**\r\n * Records how many damage locators the owning object exposes; derived from the\r\n * owner at lifecycle time, so it is deliberately kept out of the values\r\n * interchange.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetDamageLocatorCount(count)\r\n {\r\n this.#damageLocatorCount = Number(count) >>> 0;\r\n this.damageOverlay.SetDamageLocatorCount(this.#damageLocatorCount);\r\n return true;\r\n }\r\n\r\n /**\r\n * Number of damage locators the owning object exposes, as last recorded by\r\n * SetDamageLocatorCount.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDamageLocatorCount()\r\n {\r\n return this.#damageLocatorCount;\r\n }\r\n\r\n /** Seconds an armour impact stays alive before it is retired. */\r\n @carbon.method\r\n @impl.implemented\r\n GetArmorImpactLifeTime()\r\n {\r\n return this.damageOverlay.GetArmorImpactLifeTime();\r\n }\r\n\r\n /**\r\n * Copies the last recorded shield, armour and hull damage state.\r\n * @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted\r\n * @returns {Array} out\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLastDamageState(out = vec3.create())\r\n {\r\n return this.damageOverlay.GetLastDamageState(out);\r\n }\r\n\r\n /**\r\n * Row offset of this overlay's block in the shared impact data texture, or -1\r\n * while it has no block.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDataTextureOffset()\r\n {\r\n return this.damageOverlay.GetDataTextureOffset();\r\n }\r\n\r\n /** Which ImpactConfiguration this overlay was authored for. */\r\n @carbon.method\r\n @impl.adapted\r\n GetImpactConfiguration()\r\n {\r\n return this.damageOverlay.GetImpactConfiguration();\r\n }\r\n\r\n /**\r\n * Whether the shield is presented as a generated ellipsoid rather than the\r\n * authored shield impact mesh.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n HasShieldEllipsoid()\r\n {\r\n return this.shieldIsEllipsoid;\r\n }\r\n\r\n /**\r\n * Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.\r\n * @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair\r\n * @returns {Boolean} false when the name matches no fader\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n ToggleEffect(name, on, duration)\r\n {\r\n if (name === \"shieldboost\" || name === \"shieldhardening\")\r\n {\r\n const fader = EveImpactOverlay.#effectFader(this, name);\r\n fader.StartFade(!!on, Number(duration) / 4);\r\n return true;\r\n }\r\n return this.damageOverlay.ToggleEffect(name, on, duration);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n /** Returns the owned armour and hull damage overlay. */\r\n GetDamageOverlay()\r\n {\r\n return this.damageOverlay;\r\n }\r\n\r\n /** Returns the next shared impact index. */\r\n GetImpactDataNextIdx()\r\n {\r\n return this.damageOverlay.GetImpactDataNextIdx();\r\n }\r\n\r\n /** Returns the deterministic damage seed. */\r\n GetSeed()\r\n {\r\n return this.damageOverlay.GetSeed();\r\n }\r\n\r\n /** Returns the target number of live armour impacts. */\r\n GetArmorImpactGoalCount()\r\n {\r\n return this.damageOverlay.GetArmorImpactGoalCount();\r\n }\r\n\r\n /** Returns the parent size used to scale armour impacts. */\r\n GetArmorImpactParentSize()\r\n {\r\n return this.damageOverlay.GetArmorImpactParentSize();\r\n }\r\n\r\n /** Returns whether debris is forced for every armour impact. */\r\n GetDebugForceSpawnDebris()\r\n {\r\n return this.damageOverlay.GetDebugForceSpawnDebris();\r\n }\r\n\r\n /** Sets whether every armour impact requests debris. */\r\n SetDebugForceSpawnDebris(value)\r\n {\r\n this.debugForceSpawnDebris = !!value;\r\n this.damageOverlay.SetDebugForceSpawnDebris(value);\r\n }\r\n\r\n /** Returns the damage overlay render priority. */\r\n GetRenderPriority()\r\n {\r\n return this.damageOverlay.GetRenderPriority();\r\n }\r\n\r\n /** Returns the shared data-texture block identifier. */\r\n GetDataTextureBlockID()\r\n {\r\n return this.damageOverlay.GetDataTextureBlockID();\r\n }\r\n\r\n /** Returns the authored hull-damage multiplier. */\r\n GetHullDamageFactor()\r\n {\r\n return this.damageOverlay.GetHullDamageFactor();\r\n }\r\n\r\n /** Sets the authored hull-damage multiplier. */\r\n SetHullDamageFactor(value)\r\n {\r\n this.hullDamageFactor = Number(value);\r\n this.damageOverlay.SetHullDamageFactor(value);\r\n }\r\n\r\n /** Returns the armour-damage material. */\r\n GetArmorDamageShaderEffect()\r\n {\r\n return this.damageOverlay.GetArmorDamageShaderEffect();\r\n }\r\n\r\n /** Sets the armour-damage material. */\r\n SetArmorDamageShaderEffect(value)\r\n {\r\n this.armorDamageShader = value ?? null;\r\n this.damageOverlay.SetArmorDamageShaderEffect(value);\r\n }\r\n\r\n /** Returns the hull-damage flicker curve. */\r\n GetHullDamageFlickerCurve()\r\n {\r\n return this.damageOverlay.GetHullDamageFlickerCurve();\r\n }\r\n\r\n /** Sets the hull-damage flicker curve. */\r\n SetHullDamageFlickerCurve(value)\r\n {\r\n this.hullDamageFlickerCurve = value ?? null;\r\n this.damageOverlay.SetHullDamageFlickerCurve(value);\r\n }\r\n\r\n /** Returns the armour-repair fader. */\r\n GetArmorRepairing()\r\n {\r\n return this.damageOverlay.GetArmorRepairing();\r\n }\r\n\r\n /** Replaces the armour-repair fader. */\r\n SetArmorRepairing(value)\r\n {\r\n this.armorRepairing = value;\r\n this.damageOverlay.SetArmorRepairing(value);\r\n }\r\n\r\n /** Returns the armour-hardening fader. */\r\n GetArmorHardening()\r\n {\r\n return this.damageOverlay.GetArmorHardening();\r\n }\r\n\r\n /** Replaces the armour-hardening fader. */\r\n SetArmorHardening(value)\r\n {\r\n this.armorHardening = value;\r\n this.damageOverlay.SetArmorHardening(value);\r\n }\r\n\r\n /** Returns the hull-repair fader. */\r\n GetHullRepairing()\r\n {\r\n return this.damageOverlay.GetHullRepairing();\r\n }\r\n\r\n /** Replaces the hull-repair fader. */\r\n SetHullRepairing(value)\r\n {\r\n this.hullRepairing = value;\r\n this.damageOverlay.SetHullRepairing(value);\r\n }\r\n\r\n /** Applies shield, armour and hull state to the damage presentation. */\r\n @carbon.method\r\n @impl.implemented\r\n SetDamageState(shield, armor, hull, createArmorImpacts = false)\r\n {\r\n this.shieldImpactColorFade = Math.max(0, Math.min(1, (1 - shield) ** 2));\r\n this.damageOverlay.SetDamageState(shield, armor, hull, createArmorImpacts);\r\n this.configuration = this.damageOverlay.GetImpactConfiguration();\r\n vec3.set(this.#lastDamageState, shield, armor, hull);\r\n }\r\n\r\n /** Removes every live shield and armour impact. */\r\n @carbon.method\r\n @impl.implemented\r\n Clear()\r\n {\r\n this.#shieldImpacts.clear();\r\n this.damageOverlay.Clear();\r\n }\r\n\r\n /** Creates a shield impact or forwards an armour/hull impact. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateImpact(damageLocatorIndex, direction, lifeTime, size, intensity = 1, lod = Tr2Lod.TR2_LOD_HIGH, parent = null)\r\n {\r\n if (!EveDamageOverlay.impactEffectEnabled) return -1;\r\n\r\n const configuration = this.GetImpactConfiguration();\r\n if (configuration === ImpactConfiguration.IMPACT_SHIELD && lod !== Tr2Lod.TR2_LOD_LOW)\r\n {\r\n return this.#CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent);\r\n }\r\n\r\n if (configuration === ImpactConfiguration.IMPACT_ARMOR ||\r\n configuration === ImpactConfiguration.IMPACT_HULL)\r\n {\r\n return this.damageOverlay.CreateImpact(\r\n damageLocatorIndex, size, lod !== Tr2Lod.TR2_LOD_LOW);\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):\r\n * reuse a close-enough existing impact at the same locator (dot > 0.95),\r\n * else - at the cap - reuse the closest impact anywhere, else intersect\r\n * the shield ellipsoid and allocate a new record. Extracted from\r\n * CreateImpact so the surface matches Carbon's; behaviour unchanged.\r\n */\r\n #CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent)\r\n {\r\n {\r\n const normalizedDirection = vec3.normalize(vec3.create(), direction);\r\n let closestAtLocatorIndex = -1;\r\n let closestAtAnyIndex = -1;\r\n let closestAtLocatorAngle = -Infinity;\r\n let closestAtAnyAngle = -Infinity;\r\n\r\n for (const [ index, impact ] of this.#shieldImpacts)\r\n {\r\n const angle = vec3.dot(normalizedDirection, impact.direction);\r\n if (angle > closestAtAnyAngle)\r\n {\r\n closestAtAnyAngle = angle;\r\n closestAtAnyIndex = index;\r\n }\r\n if (impact.damageLocatorIndex === damageLocatorIndex && angle > closestAtLocatorAngle)\r\n {\r\n closestAtLocatorAngle = angle;\r\n closestAtLocatorIndex = index;\r\n }\r\n }\r\n\r\n if (closestAtLocatorAngle > 0.95)\r\n {\r\n const impact = this.#shieldImpacts.get(closestAtLocatorIndex);\r\n vec3.copy(impact.direction, normalizedDirection);\r\n impact.timeLeft = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\r\n impact.size = Math.max(Number(size), impact.size);\r\n return closestAtLocatorIndex;\r\n }\r\n\r\n if (this.#shieldImpacts.size >= this.maxShieldImpacts)\r\n {\r\n if (closestAtAnyIndex !== -1)\r\n {\r\n const impact = this.#shieldImpacts.get(closestAtAnyIndex);\r\n vec3.copy(impact.direction, normalizedDirection);\r\n impact.timeLeft = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\r\n impact.size = Math.max(Number(size), impact.size);\r\n }\r\n return closestAtAnyIndex;\r\n }\r\n\r\n const parentWorldTransform = mat4.copy(mat4.create(), parent.GetLocalToWorldTransform());\r\n const parentInverseWorldTransform = mat4.invert(mat4.create(), parentWorldTransform);\r\n if (!parentInverseWorldTransform)\r\n {\r\n throw new Error(\"EveImpactOverlay.CreateImpact requires an invertible parent transform.\");\r\n }\r\n const ellipsoidCenter = vec3.create();\r\n const ellipsoidRadii = vec3.fromValues(1, 1, 1);\r\n parent.GetShapeEllipsoid(ellipsoidCenter, ellipsoidRadii);\r\n const locatorPositionWorld = vec3.create();\r\n parent.GetDamageLocatorPosition(damageLocatorIndex, true, locatorPositionWorld);\r\n const interceptPosition = this.#GetShieldImpactPosition(\r\n parentInverseWorldTransform, locatorPositionWorld,\r\n normalizedDirection, ellipsoidCenter, ellipsoidRadii);\r\n vec3.transformMat4(interceptPosition, interceptPosition, parentWorldTransform);\r\n\r\n const index = this.damageOverlay.AllocateImpactIndex();\r\n const impactLifeTime = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\r\n this.#shieldImpacts.set(index, {\r\n damageLocatorIndex: Number(damageLocatorIndex) | 0,\r\n interceptPosition,\r\n direction: normalizedDirection,\r\n lifeTime: impactLifeTime,\r\n timeLeft: impactLifeTime,\r\n size: Number(size),\r\n intensity: Number(intensity)\r\n });\r\n return index;\r\n }\r\n }\r\n\r\n /**\r\n * Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):\r\n * ellipsoid shields intersect the impact ray with the shield ellipsoid in\r\n * object space; non-ellipsoid shields answer the locator position in\r\n * object space. Reads shieldIsEllipsoid off the instance exactly as\r\n * Carbon does; the module-level helper carries the math.\r\n */\r\n #GetShieldImpactPosition(parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii, out = vec3.create())\r\n {\r\n return getShieldImpactPosition(\r\n out, this.shieldIsEllipsoid, parentInverseWorldTransform,\r\n damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii);\r\n }\r\n\r\n /** Resolves a live impact's current position and direction. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateImpact(out, direction, impactIndex)\r\n {\r\n if (impactIndex === -1) return false;\r\n const impact = this.#shieldImpacts.get(Number(impactIndex) | 0);\r\n if (!impact) return this.damageOverlay.HasImpact(impactIndex);\r\n vec3.copy(out, impact.interceptPosition);\r\n vec3.copy(impact.direction, direction);\r\n return true;\r\n }\r\n\r\n /** Reports whether any shield impact or shield fader is active. */\r\n HasShieldActivity()\r\n {\r\n return EveDamageOverlay.impactEffectEnabled &&\r\n (this.#shieldImpacts.size !== 0 || this.overallShieldImpact > 0 ||\r\n !this.shieldHardening.IsKickInZero() || !this.shieldBoosting.IsKickInZero());\r\n }\r\n\r\n /** Reports whether armour damage or its faders are active. */\r\n HasArmorActivity()\r\n {\r\n return this.damageOverlay.HasArmorActivity();\r\n }\r\n\r\n /** Reports whether hull damage or its fader is active. */\r\n HasHullActivity()\r\n {\r\n return this.damageOverlay.HasHullActivity();\r\n }\r\n\r\n /** Reports whether any shield, armour or hull effect is active. */\r\n HasGeneralActivity()\r\n {\r\n return this.HasShieldActivity() || this.damageOverlay.HasGeneralActivity();\r\n }\r\n\r\n /** Returns the current hull-flicker activation strength. */\r\n @carbon.method\r\n @impl.implemented\r\n GetActivationStrength(updateContext)\r\n {\r\n return this.damageOverlay.GetActivationStrength(updateContext);\r\n }\r\n\r\n /** Advances shield faders and publishes the shared damage block. */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateSyncronous(updateContext, _parent = null)\r\n {\r\n const hasGeneralActivity = this.HasGeneralActivity();\r\n this.damageOverlay.UpdateBlockData(\r\n hasGeneralActivity ? updateContext.GetDataTextureManager() : null,\r\n hasGeneralActivity);\r\n }\r\n\r\n /** Ages shield impacts and rebuilds the shared damage rows. */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext, parent)\r\n {\r\n const delta = updateContext.GetDeltaT();\r\n for (const [ index, impact ] of this.#shieldImpacts)\r\n {\r\n impact.timeLeft -= delta;\r\n if (impact.timeLeft <= 0) this.#shieldImpacts.delete(index);\r\n }\r\n\r\n this.shieldBoosting.Update(updateContext);\r\n this.shieldHardening.Update(updateContext);\r\n\r\n const boundingSphere = vec4.create();\r\n parent.GetBoundingSphere(boundingSphere);\r\n\r\n this.damageOverlay.UpdateAsyncronous(updateContext, {\r\n boundingSphere,\r\n estimatedPixelDiameter: parent.estimatedPixelDiameter,\r\n isInFrustum: parent.IsInFrustum(),\r\n // Bind position, not the animated pose (Carbon EveImpactOverlay.cpp:189,\r\n // commit 3d988b1d): decals seeded here must not swim with animation.\r\n getDamageLocatorPositionOS: (index, out) => parent.GetDamageLocatorBindPosition(index, out)\r\n }, this.#shieldImpacts.size, this.HasShieldActivity());\r\n\r\n const header = this.damageOverlay.HeaderRow();\r\n vec4.set(header[0],\r\n this.#shieldImpacts.size,\r\n this.overallShieldImpact,\r\n this.shieldImpactColorFade,\r\n this.shieldImpactParentSize);\r\n vec4.set(header[1],\r\n this.shieldHardening.GetFaderValue(),\r\n this.shieldBoosting.GetFaderValue(),\r\n this.shieldHardening.GetKickInValue(),\r\n this.shieldBoosting.GetKickInValue());\r\n\r\n if (!this.HasGeneralActivity()) return;\r\n\r\n const parentWorldTransform = mat4.copy(mat4.create(), parent.GetLocalToWorldTransform());\r\n const parentInverseWorldTransform = mat4.invert(mat4.create(), parentWorldTransform);\r\n if (!parentInverseWorldTransform)\r\n {\r\n throw new Error(\"EveImpactOverlay.UpdateAsyncronous requires an invertible parent transform.\");\r\n }\r\n\r\n this.shieldImpactParentSize = Math.max(\r\n IMPACT_SHIELD_SIZE_MIN,\r\n Math.min(IMPACT_SHIELD_SIZE_MAX, boundingSphere[3]));\r\n\r\n if (!this.#shieldImpacts.size) return;\r\n\r\n const ellipsoidCenter = vec3.create();\r\n const ellipsoidRadii = vec3.fromValues(1, 1, 1);\r\n parent.GetShapeEllipsoid(ellipsoidCenter, ellipsoidRadii);\r\n const locatorPositionWorld = vec3.create();\r\n const position = vec3.create();\r\n let row = 0;\r\n for (const impact of this.#shieldImpacts.values())\r\n {\r\n parent.GetDamageLocatorPosition(\r\n impact.damageLocatorIndex, true, locatorPositionWorld);\r\n getShieldImpactPosition(\r\n position, this.shieldIsEllipsoid, parentInverseWorldTransform,\r\n locatorPositionWorld, impact.direction, ellipsoidCenter, ellipsoidRadii);\r\n const texel = this.damageOverlay.TexelRow(row++);\r\n vec4.set(texel[0], position[0], position[1], position[2], impact.timeLeft);\r\n vec4.set(texel[1], impact.size, impact.intensity, 0, impact.lifeTime);\r\n vec3.transformMat4(impact.interceptPosition, position, parentWorldTransform);\r\n }\r\n }\r\n\r\n /** Emits the active shield-impact mesh batches. */\r\n @carbon.method\r\n @impl.adapted\r\n GetBatches(accumulator, batchType, perObjectData, screenSize)\r\n {\r\n if (!this.display || !this.mesh ||\r\n this.damageOverlay.GetDataTextureBlockID() === -1 ||\r\n this.damageOverlay.GetDataTextureOffset() === -1 ||\r\n !this.HasShieldActivity()) return false;\r\n return this.mesh.GetBatches(\r\n accumulator, this.mesh.GetAreas(batchType), perObjectData, screenSize, false);\r\n }\r\n\r\n /** Returns the active armour-damage material for a batch type. */\r\n @carbon.method\r\n @impl.implemented\r\n GetArmorDamageShader(batchType)\r\n {\r\n return this.damageOverlay.GetArmorDamageShader(batchType);\r\n }\r\n\r\n /** Copies legacy authored damage fields into the owned damage overlay. */\r\n #SyncLegacyDamageFieldsToOverlay()\r\n {\r\n this.damageOverlay ??= new EveDamageOverlay();\r\n this.damageOverlay.SetSeed(this.seed);\r\n this.damageOverlay.SetDamageLocatorCount(this.#damageLocatorCount);\r\n this.damageOverlay.SetDebugForceSpawnDebris(this.debugForceSpawnDebris);\r\n this.damageOverlay.SetHullDamageFactor(this.hullDamageFactor);\r\n this.damageOverlay.SetArmorDamageShaderEffect(this.armorDamageShader);\r\n this.damageOverlay.SetHullDamageFlickerCurve(this.hullDamageFlickerCurve);\r\n this.damageOverlay.SetArmorRepairing(this.armorRepairing);\r\n this.damageOverlay.SetArmorHardening(this.armorHardening);\r\n this.damageOverlay.SetHullRepairing(this.hullRepairing);\r\n }\r\n\r\n /**\r\n * Maps an effect name to the fader that drives it, or null when the name is\r\n * unknown.\r\n */\r\n static #effectFader(overlay, name)\r\n {\r\n switch (name)\r\n {\r\n case \"shieldboost\": return overlay.shieldBoosting;\r\n case \"shieldhardening\": return overlay.shieldHardening;\r\n case \"armorhardening\": return overlay.armorHardening;\r\n case \"armorrepair\": return overlay.armorRepairing;\r\n case \"hullrepair\": return overlay.hullRepairing;\r\n default: return null;\r\n }\r\n }\r\n\r\n static ImpactConfiguration = ImpactConfiguration;\r\n\r\n}\r\n\r\n\r\nfunction getShieldImpactPosition(\r\n out,\r\n shieldIsEllipsoid,\r\n parentInverseWorldTransform,\r\n damageLocatorPositionWorld,\r\n impactDirection,\r\n ellipsoidCenter,\r\n ellipsoidRadii)\r\n{\r\n vec3.transformMat4(out, damageLocatorPositionWorld, parentInverseWorldTransform);\r\n if (!shieldIsEllipsoid) return out;\r\n\r\n const directionObject = transformNormal(\r\n vec3.create(), impactDirection, parentInverseWorldTransform);\r\n return intersectEllipsoidRay(\r\n out, ellipsoidCenter, ellipsoidRadii, out, directionObject);\r\n}\r\n\r\n\r\nfunction transformNormal(out, direction, matrix)\r\n{\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\r\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\r\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\r\n return out;\r\n}\r\n\r\n\r\nfunction intersectEllipsoidRay(out, center, radii, origin, direction)\r\n{\r\n const vx = direction[0] / radii[0];\r\n const vy = direction[1] / radii[1];\r\n const vz = direction[2] / radii[2];\r\n const sx = (origin[0] - center[0]) / radii[0];\r\n const sy = (origin[1] - center[1]) / radii[1];\r\n const sz = (origin[2] - center[2]) / radii[2];\r\n const vv = vx * vx + vy * vy + vz * vz;\r\n if (!(vv > 0)) return vec3.set(out, 0, 0, 0);\r\n const vs = vx * sx + vy * sy + vz * sz;\r\n const ss = sx * sx + sy * sy + sz * sz;\r\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\r\n if (discriminant < 0) return vec3.set(out, 0, 0, 0);\r\n discriminant = Math.sqrt(discriminant);\r\n let t = -discriminant - vs / vv;\r\n if (t < 0) t = discriminant - vs / vv;\r\n return vec3.scaleAndAdd(out, origin, direction, t);\r\n}\r\n"],"names":["IMPACT_SHIELD_SIZE_MAX","IMPACT_SHIELD_SIZE_MIN","IMPACT_SHIELD_FADEOUT","_EveImpactOverlay","_identity","EveImpactOverlay","CjsModel","e","_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","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","persist","string","read","uint32","readwrite","boolean","objectRef","int32","enum","uint64","float32","carbon","method","impl","implemented","adapted","name","seed","display","damageOverlay","EveDamageOverlay","configuration","impactDataNextIdx","armorImpactGoalCount","armorImpactParentSize","shieldImpactColorFade","shieldImpactParentSize","shieldIsEllipsoid","debugForceSpawnDebris","renderPriority","mesh","dataTextureBlockID","maxShieldImpacts","overallShieldImpact","shieldHardening","Tr2ScalarFader","shieldBoosting","armorDamageShader","armorImpactEmitter","armorRepairing","armorHardening","hullRepairing","hullDamageFlickerCurve","hullDamageFactor","hullImpactEmitter","vec3","fromValues","Map","Initialize","Set","armorDamageEmitter","shieldImpactMesh","SetSeed","Number","SetDamageLocatorCount","count","GetDamageLocatorCount","GetArmorImpactLifeTime","GetLastDamageState","out","create","GetDataTextureOffset","GetImpactConfiguration","HasShieldEllipsoid","ToggleEffect","on","duration","fader","StartFade","GetDamageOverlay","GetImpactDataNextIdx","GetSeed","GetArmorImpactGoalCount","GetArmorImpactParentSize","GetDebugForceSpawnDebris","SetDebugForceSpawnDebris","value","GetRenderPriority","GetDataTextureBlockID","GetHullDamageFactor","SetHullDamageFactor","GetArmorDamageShaderEffect","SetArmorDamageShaderEffect","GetHullDamageFlickerCurve","SetHullDamageFlickerCurve","GetArmorRepairing","SetArmorRepairing","GetArmorHardening","SetArmorHardening","GetHullRepairing","SetHullRepairing","SetDamageState","shield","armor","hull","createArmorImpacts","Math","max","min","set","Clear","clear","CreateImpact","damageLocatorIndex","direction","lifeTime","size","intensity","lod","Tr2Lod","TR2_LOD_HIGH","parent","impactEffectEnabled","ImpactConfiguration","IMPACT_SHIELD","TR2_LOD_LOW","IMPACT_ARMOR","IMPACT_HULL","#CreateShieldImpact","normalizedDirection","normalize","closestAtLocatorIndex","closestAtAnyIndex","closestAtLocatorAngle","Infinity","closestAtAnyAngle","index","impact","angle","dot","get","copy","timeLeft","parentWorldTransform","mat4","GetLocalToWorldTransform","parentInverseWorldTransform","invert","Error","ellipsoidCenter","ellipsoidRadii","GetShapeEllipsoid","locatorPositionWorld","GetDamageLocatorPosition","interceptPosition","transformMat4","AllocateImpactIndex","impactLifeTime","#GetShieldImpactPosition","damageLocatorPositionWorld","impactDirection","getShieldImpactPosition","UpdateImpact","impactIndex","HasImpact","HasShieldActivity","IsKickInZero","HasArmorActivity","HasHullActivity","HasGeneralActivity","GetActivationStrength","updateContext","UpdateSyncronous","_parent","hasGeneralActivity","UpdateBlockData","GetDataTextureManager","UpdateAsyncronous","delta","GetDeltaT","delete","Update","boundingSphere","vec4","GetBoundingSphere","estimatedPixelDiameter","isInFrustum","IsInFrustum","getDamageLocatorPositionOS","GetDamageLocatorBindPosition","header","HeaderRow","GetFaderValue","GetKickInValue","position","row","values","texel","TexelRow","GetBatches","accumulator","batchType","perObjectData","screenSize","GetAreas","GetArmorDamageShader","#SyncLegacyDamageFieldsToOverlay","#effectFader","overlay","constructor","directionObject","transformNormal","intersectEllipsoidRay","matrix","x","y","z","center","radii","origin","vx","vy","vz","sx","sy","sz","vv","vs","ss","discriminant","sqrt","t","scaleAndAdd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveImpactOverlay.js","sources":["../../../../src/trinity/eve/EveImpactOverlay.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay.h\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveImpactOverlay_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { Tr2ScalarFader } from \"../curves/curve/Tr2ScalarFader.js\";\nimport { ImpactConfiguration } from \"../generated/include/enums.js\";\nimport { Tr2Lod } from \"./EveLODHelper.js\";\nimport {\n EveDamageOverlay,\n IMPACT_ARMOR_SIZE_FACTOR,\n IMPACT_ARMOR_SIZE_MAX\n} from \"./overlays/EveDamageOverlay.js\";\nimport { ITr2GenericEmitterUpdateArguments } from \"../particle/ITr2GenericEmitter/index.js\";\n\n\nconst IMPACT_SHIELD_SIZE_MAX = 2000;\nconst IMPACT_SHIELD_SIZE_MIN = 70;\nconst IMPACT_SHIELD_FADEOUT = 1.5;\nconst IMPACT_ARMOR_PARTICLE_LOD_FACTOR = 400;\n\n\n/**\n * The damage presentation for one ship: shield, armour and hull impact\n * resources, the faders driving hardening and repair effects, and the\n * data-texture bookkeeping that feeds them.\n */\n@type.define({ className: \"EveImpactOverlay\", family: \"eve/overlays/impact\" })\nexport class EveImpactOverlay extends CjsModel\n{\n @edit.persist\n @type.string\n name = \"\";\n\n @edit.read\n @type.uint32\n seed = 0;\n\n @edit.readwrite\n @type.boolean\n display = true;\n\n @edit.read\n @type.objectRef(\"EveDamageOverlay\")\n damageOverlay = new EveDamageOverlay();\n\n @edit.read\n @type.int32\n @type.enum(\"ImpactConfiguration\")\n configuration = 0;\n\n @edit.read\n @type.int32\n impactDataNextIdx = 1;\n\n @edit.read\n @type.uint64\n armorImpactGoalCount = 0;\n\n @edit.read\n @type.float32\n armorImpactParentSize = 0;\n\n @edit.readwrite\n @type.float32\n shieldImpactColorFade = 0;\n\n @edit.read\n @type.float32\n shieldImpactParentSize = 0;\n\n @edit.readwrite\n @type.boolean\n shieldIsEllipsoid = true;\n\n @edit.readwrite\n @type.boolean\n debugForceSpawnDebris = false;\n\n @edit.read\n @type.float32\n renderPriority = 0;\n\n @edit.persist\n @type.objectRef(\"Tr2MeshBase\")\n mesh = null;\n\n @edit.read\n @type.int32\n dataTextureBlockID = -1;\n\n @edit.read\n @type.uint32\n maxShieldImpacts = 8;\n\n @edit.readwrite\n @type.float32\n overallShieldImpact = -1;\n\n @edit.readwrite\n @type.objectRef(\"Tr2ScalarFader\")\n shieldHardening = new Tr2ScalarFader();\n\n @edit.readwrite\n @type.objectRef(\"Tr2ScalarFader\")\n shieldBoosting = new Tr2ScalarFader();\n\n @edit.persist\n @type.objectRef(\"Tr2Effect\")\n armorDamageShader = null;\n\n @edit.persist\n @type.objectRef(\"Tr2GpuUniqueEmitter\")\n armorImpactEmitter = null;\n\n @edit.readwrite\n @type.objectRef(\"Tr2ScalarFader\")\n armorRepairing = new Tr2ScalarFader();\n\n @edit.readwrite\n @type.objectRef(\"Tr2ScalarFader\")\n armorHardening = new Tr2ScalarFader();\n\n @edit.readwrite\n @type.objectRef(\"Tr2ScalarFader\")\n hullRepairing = new Tr2ScalarFader();\n\n @edit.persist\n @type.objectRef(\"TriPerlinCurve\")\n hullDamageFlickerCurve = null;\n\n @edit.readwrite\n @type.float32\n hullDamageFactor = 0;\n\n @edit.persist\n @type.objectRef(\"Tr2GpuUniqueEmitter\")\n hullImpactEmitter = null;\n\n // Derived at lifecycle time from the owner's \"damage\" locator set; not an\n // authored value, so it never enters the values interchange.\n #damageLocatorCount = 0;\n\n #armorImpactLifeTime = 10;\n\n #dataTextureOffset = -1;\n\n #lastDamageState = vec3.fromValues(1, 1, 1);\n\n #shieldImpacts = new Map();\n\n /** Post-hydration hook; the overlay needs no additional setup. */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n this.#SyncLegacyDamageFieldsToOverlay();\n return true;\n }\n\n /**\n * Assigns the overlay's authored resources in one call - the hull flicker\n * curve, the armour and hull impact emitters, the armour damage shader and the\n * shield impact mesh - together with the shield shape flag.\n */\n @carbon.method\n @impl.adapted\n Set(hullDamageFlickerCurve, armorDamageEmitter, hullImpactEmitter, armorDamageShader, shieldImpactMesh, shieldIsEllipsoid)\n {\n this.shieldIsEllipsoid = !!shieldIsEllipsoid;\n this.hullDamageFlickerCurve = hullDamageFlickerCurve ?? null;\n this.armorImpactEmitter = armorDamageEmitter ?? null;\n this.hullImpactEmitter = hullImpactEmitter ?? null;\n this.armorDamageShader = armorDamageShader ?? null;\n this.mesh = shieldImpactMesh ?? null;\n this.#SyncLegacyDamageFieldsToOverlay();\n return true;\n }\n\n /**\n * Sets the per-ship random seed that varies impact placement between otherwise\n * identical hulls.\n */\n @carbon.method\n @impl.adapted\n SetSeed(seed)\n {\n this.seed = Number(seed) >>> 0;\n this.damageOverlay.SetSeed(this.seed);\n return true;\n }\n\n /**\n * Records how many damage locators the owning object exposes; derived from the\n * owner at lifecycle time, so it is deliberately kept out of the values\n * interchange.\n */\n @carbon.method\n @impl.adapted\n SetDamageLocatorCount(count)\n {\n this.#damageLocatorCount = Number(count) >>> 0;\n this.damageOverlay.SetDamageLocatorCount(this.#damageLocatorCount);\n return true;\n }\n\n /**\n * Number of damage locators the owning object exposes, as last recorded by\n * SetDamageLocatorCount.\n */\n @carbon.method\n @impl.adapted\n GetDamageLocatorCount()\n {\n return this.#damageLocatorCount;\n }\n\n /** Seconds an armour impact stays alive before it is retired. */\n @carbon.method\n @impl.implemented\n GetArmorImpactLifeTime()\n {\n return this.damageOverlay.GetArmorImpactLifeTime();\n }\n\n /**\n * Copies the last recorded shield, armour and hull damage state.\n * @param {Array} out - caller-owned vec3; a fresh vector is allocated when omitted\n * @returns {Array} out\n */\n @carbon.method\n @impl.adapted\n GetLastDamageState(out = vec3.create())\n {\n return this.damageOverlay.GetLastDamageState(out);\n }\n\n /**\n * Row offset of this overlay's block in the shared impact data texture, or -1\n * while it has no block.\n */\n @carbon.method\n @impl.adapted\n GetDataTextureOffset()\n {\n return this.damageOverlay.GetDataTextureOffset();\n }\n\n /** Which ImpactConfiguration this overlay was authored for. */\n @carbon.method\n @impl.adapted\n GetImpactConfiguration()\n {\n return this.damageOverlay.GetImpactConfiguration();\n }\n\n /**\n * Whether the shield is presented as a generated ellipsoid rather than the\n * authored shield impact mesh.\n */\n @carbon.method\n @impl.adapted\n HasShieldEllipsoid()\n {\n return this.shieldIsEllipsoid;\n }\n\n /**\n * Starts a fade on the named shield, armour or hull effect; the fade runs over a quarter of the requested duration.\n * @param {String} name - one of shieldboost, shieldhardening, armorhardening, armorrepair, hullrepair\n * @returns {Boolean} false when the name matches no fader\n */\n @carbon.method\n @impl.adapted\n ToggleEffect(name, on, duration)\n {\n if (name === \"shieldboost\" || name === \"shieldhardening\")\n {\n const fader = EveImpactOverlay.#effectFader(this, name);\n fader.StartFade(!!on, Number(duration) / 4);\n return true;\n }\n return this.damageOverlay.ToggleEffect(name, on, duration);\n }\n\n @carbon.method\n @impl.implemented\n /** Returns the owned armour and hull damage overlay. */\n GetDamageOverlay()\n {\n return this.damageOverlay;\n }\n\n /** Returns the next shared impact index. */\n GetImpactDataNextIdx()\n {\n return this.damageOverlay.GetImpactDataNextIdx();\n }\n\n /** Returns the deterministic damage seed. */\n GetSeed()\n {\n return this.damageOverlay.GetSeed();\n }\n\n /** Returns the target number of live armour impacts. */\n GetArmorImpactGoalCount()\n {\n return this.damageOverlay.GetArmorImpactGoalCount();\n }\n\n /** Returns the parent size used to scale armour impacts. */\n GetArmorImpactParentSize()\n {\n return this.damageOverlay.GetArmorImpactParentSize();\n }\n\n /** Returns whether debris is forced for every armour impact. */\n GetDebugForceSpawnDebris()\n {\n return this.damageOverlay.GetDebugForceSpawnDebris();\n }\n\n /** Sets whether every armour impact requests debris. */\n SetDebugForceSpawnDebris(value)\n {\n this.debugForceSpawnDebris = !!value;\n this.damageOverlay.SetDebugForceSpawnDebris(value);\n }\n\n /** Returns the damage overlay render priority. */\n GetRenderPriority()\n {\n return this.damageOverlay.GetRenderPriority();\n }\n\n /** Returns the shared data-texture block identifier. */\n GetDataTextureBlockID()\n {\n return this.damageOverlay.GetDataTextureBlockID();\n }\n\n /** Returns the authored hull-damage multiplier. */\n GetHullDamageFactor()\n {\n return this.damageOverlay.GetHullDamageFactor();\n }\n\n /** Sets the authored hull-damage multiplier. */\n SetHullDamageFactor(value)\n {\n this.hullDamageFactor = Number(value);\n this.damageOverlay.SetHullDamageFactor(value);\n }\n\n /** Returns the armour-damage material. */\n GetArmorDamageShaderEffect()\n {\n return this.damageOverlay.GetArmorDamageShaderEffect();\n }\n\n /** Sets the armour-damage material. */\n SetArmorDamageShaderEffect(value)\n {\n this.armorDamageShader = value ?? null;\n this.damageOverlay.SetArmorDamageShaderEffect(value);\n }\n\n /** Returns the hull-damage flicker curve. */\n GetHullDamageFlickerCurve()\n {\n return this.damageOverlay.GetHullDamageFlickerCurve();\n }\n\n /** Sets the hull-damage flicker curve. */\n SetHullDamageFlickerCurve(value)\n {\n this.hullDamageFlickerCurve = value ?? null;\n this.damageOverlay.SetHullDamageFlickerCurve(value);\n }\n\n /** Returns the armour-repair fader. */\n GetArmorRepairing()\n {\n return this.damageOverlay.GetArmorRepairing();\n }\n\n /** Replaces the armour-repair fader. */\n SetArmorRepairing(value)\n {\n this.armorRepairing = value;\n this.damageOverlay.SetArmorRepairing(value);\n }\n\n /** Returns the armour-hardening fader. */\n GetArmorHardening()\n {\n return this.damageOverlay.GetArmorHardening();\n }\n\n /** Replaces the armour-hardening fader. */\n SetArmorHardening(value)\n {\n this.armorHardening = value;\n this.damageOverlay.SetArmorHardening(value);\n }\n\n /** Returns the hull-repair fader. */\n GetHullRepairing()\n {\n return this.damageOverlay.GetHullRepairing();\n }\n\n /** Replaces the hull-repair fader. */\n SetHullRepairing(value)\n {\n this.hullRepairing = value;\n this.damageOverlay.SetHullRepairing(value);\n }\n\n /** Applies shield, armour and hull state to the damage presentation. */\n @carbon.method\n @impl.implemented\n SetDamageState(shield, armor, hull, createArmorImpacts = false)\n {\n this.shieldImpactColorFade = Math.max(0, Math.min(1, (1 - shield) ** 2));\n this.damageOverlay.SetDamageState(shield, armor, hull, createArmorImpacts);\n this.configuration = this.damageOverlay.GetImpactConfiguration();\n vec3.set(this.#lastDamageState, shield, armor, hull);\n }\n\n /** Removes every live shield and armour impact. */\n @carbon.method\n @impl.implemented\n Clear()\n {\n this.#shieldImpacts.clear();\n this.damageOverlay.Clear();\n }\n\n /** Creates a shield impact or forwards an armour/hull impact. */\n @carbon.method\n @impl.adapted\n CreateImpact(damageLocatorIndex, direction, lifeTime, size, intensity = 1, lod = Tr2Lod.TR2_LOD_HIGH, parent = null)\n {\n if (!EveDamageOverlay.impactEffectEnabled) return -1;\n\n const configuration = this.GetImpactConfiguration();\n if (configuration === ImpactConfiguration.IMPACT_SHIELD && lod !== Tr2Lod.TR2_LOD_LOW)\n {\n return this.#CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent);\n }\n\n if (configuration === ImpactConfiguration.IMPACT_ARMOR ||\n configuration === ImpactConfiguration.IMPACT_HULL)\n {\n return this.damageOverlay.CreateImpact(\n damageLocatorIndex, size, lod !== Tr2Lod.TR2_LOD_LOW);\n }\n\n return -1;\n }\n\n /**\n * Carbon CreateShieldImpact (EveImpactOverlay.cpp:596-673, private):\n * reuse a close-enough existing impact at the same locator (dot > 0.95),\n * else - at the cap - reuse the closest impact anywhere, else intersect\n * the shield ellipsoid and allocate a new record. Extracted from\n * CreateImpact so the surface matches Carbon's; behaviour unchanged.\n */\n #CreateShieldImpact(damageLocatorIndex, direction, lifeTime, size, intensity, parent)\n {\n {\n const normalizedDirection = vec3.normalize(vec3.create(), direction);\n let closestAtLocatorIndex = -1;\n let closestAtAnyIndex = -1;\n let closestAtLocatorAngle = -Infinity;\n let closestAtAnyAngle = -Infinity;\n\n for (const [ index, impact ] of this.#shieldImpacts)\n {\n const angle = vec3.dot(normalizedDirection, impact.direction);\n if (angle > closestAtAnyAngle)\n {\n closestAtAnyAngle = angle;\n closestAtAnyIndex = index;\n }\n if (impact.damageLocatorIndex === damageLocatorIndex && angle > closestAtLocatorAngle)\n {\n closestAtLocatorAngle = angle;\n closestAtLocatorIndex = index;\n }\n }\n\n if (closestAtLocatorAngle > 0.95)\n {\n const impact = this.#shieldImpacts.get(closestAtLocatorIndex);\n vec3.copy(impact.direction, normalizedDirection);\n impact.timeLeft = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\n impact.size = Math.max(Number(size), impact.size);\n return closestAtLocatorIndex;\n }\n\n if (this.#shieldImpacts.size >= this.maxShieldImpacts)\n {\n if (closestAtAnyIndex !== -1)\n {\n const impact = this.#shieldImpacts.get(closestAtAnyIndex);\n vec3.copy(impact.direction, normalizedDirection);\n impact.timeLeft = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\n impact.size = Math.max(Number(size), impact.size);\n }\n return closestAtAnyIndex;\n }\n\n const parentWorldTransform = mat4.copy(mat4.create(), parent.GetLocalToWorldTransform());\n const parentInverseWorldTransform = mat4.invert(mat4.create(), parentWorldTransform);\n if (!parentInverseWorldTransform)\n {\n throw new Error(\"EveImpactOverlay.CreateImpact requires an invertible parent transform.\");\n }\n const ellipsoidCenter = vec3.create();\n const ellipsoidRadii = vec3.fromValues(1, 1, 1);\n parent.GetShapeEllipsoid(ellipsoidCenter, ellipsoidRadii);\n const locatorPositionWorld = vec3.create();\n parent.GetDamageLocatorPosition(damageLocatorIndex, true, locatorPositionWorld);\n const interceptPosition = this.#GetShieldImpactPosition(\n parentInverseWorldTransform, locatorPositionWorld,\n normalizedDirection, ellipsoidCenter, ellipsoidRadii);\n vec3.transformMat4(interceptPosition, interceptPosition, parentWorldTransform);\n\n const index = this.damageOverlay.AllocateImpactIndex();\n const impactLifeTime = IMPACT_SHIELD_FADEOUT * Number(lifeTime);\n this.#shieldImpacts.set(index, {\n damageLocatorIndex: Number(damageLocatorIndex) | 0,\n interceptPosition,\n direction: normalizedDirection,\n lifeTime: impactLifeTime,\n timeLeft: impactLifeTime,\n size: Number(size),\n intensity: Number(intensity)\n });\n return index;\n }\n }\n\n /**\n * Carbon GetShieldImpactPosition (EveImpactOverlay.cpp:247-266, private):\n * ellipsoid shields intersect the impact ray with the shield ellipsoid in\n * object space; non-ellipsoid shields answer the locator position in\n * object space. Reads shieldIsEllipsoid off the instance exactly as\n * Carbon does; the module-level helper carries the math.\n */\n #GetShieldImpactPosition(parentInverseWorldTransform, damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii, out = vec3.create())\n {\n return getShieldImpactPosition(\n out, this.shieldIsEllipsoid, parentInverseWorldTransform,\n damageLocatorPositionWorld, impactDirection, ellipsoidCenter, ellipsoidRadii);\n }\n\n /** Resolves a live impact's current position and direction. */\n @carbon.method\n @impl.implemented\n UpdateImpact(out, direction, impactIndex)\n {\n if (impactIndex === -1) return false;\n const impact = this.#shieldImpacts.get(Number(impactIndex) | 0);\n if (!impact) return this.damageOverlay.HasImpact(impactIndex);\n vec3.copy(out, impact.interceptPosition);\n vec3.copy(impact.direction, direction);\n return true;\n }\n\n /** Reports whether any shield impact or shield fader is active. */\n HasShieldActivity()\n {\n return EveDamageOverlay.impactEffectEnabled &&\n (this.#shieldImpacts.size !== 0 || this.overallShieldImpact > 0 ||\n !this.shieldHardening.IsKickInZero() || !this.shieldBoosting.IsKickInZero());\n }\n\n /** Reports whether armour damage or its faders are active. */\n HasArmorActivity()\n {\n return this.damageOverlay.HasArmorActivity();\n }\n\n /** Reports whether hull damage or its fader is active. */\n HasHullActivity()\n {\n return this.damageOverlay.HasHullActivity();\n }\n\n /** Reports whether any shield, armour or hull effect is active. */\n HasGeneralActivity()\n {\n return this.HasShieldActivity() || this.damageOverlay.HasGeneralActivity();\n }\n\n /** Returns the current hull-flicker activation strength. */\n @carbon.method\n @impl.implemented\n GetActivationStrength(updateContext)\n {\n return this.damageOverlay.GetActivationStrength(updateContext);\n }\n\n /** Advances shield faders and publishes the shared damage block. */\n @carbon.method\n @impl.adapted\n UpdateSyncronous(updateContext, parent)\n {\n // Carbon EveImpactOverlay.cpp:96-110: debris spawns BEFORE the activity\n // early-out, so part overlays spawn even while the ship's is idle.\n this.SpawnImpactDebris(updateContext, parent);\n\n const hasGeneralActivity = this.HasGeneralActivity();\n this.damageOverlay.UpdateBlockData(\n hasGeneralActivity ? updateContext.GetDataTextureManager() : null,\n hasGeneralActivity);\n }\n\n /**\n * Spawns debris particles once for every armour impact that requested them,\n * on the ship's overlay and then on each part's, offsetting part locators by\n * their range in the merged damage set (Carbon EveImpactOverlay.cpp:116-180).\n * The hull-emitter test reads the SHIP's impact configuration even for a\n * part overlay; ported as written.\n */\n @carbon.method\n @impl.implemented\n SpawnImpactDebris(updateContext, parent)\n {\n if (!EveDamageOverlay.impactEffectEnabled) return;\n const gpuParticleSystem = updateContext.GetGpuParticleSystem();\n if (!gpuParticleSystem || !this.armorImpactEmitter) return;\n\n const spawnFromOverlay = (overlay, mergedIndexOffset) =>\n {\n const armorImpactParentSize = overlay.GetArmorImpactParentSize();\n if (armorImpactParentSize <= 0) return;\n for (const impact of overlay.ArmorImpacts().values())\n {\n if (!impact.requestSpawnDebris) continue;\n const locatorIndex = mergedIndexOffset + impact.damageLocatorIndex;\n const impactPosWS = vec3.create();\n parent.GetDamageLocatorPosition(locatorIndex, true, impactPosWS);\n this.armorImpactEmitter.SetPosition(impactPosWS);\n const impactDirWS = vec3.fromValues(0, 1, 0);\n parent.GetDamageLocatorDirection(locatorIndex, true, impactDirWS);\n this.armorImpactEmitter.SetDirection(impactDirWS);\n const parentVelocityWS = vec3.create();\n parent.GetWorldVelocity(parentVelocityWS);\n const scale = impact.size * armorImpactParentSize / (IMPACT_ARMOR_SIZE_MAX / IMPACT_ARMOR_SIZE_FACTOR);\n const rateModifier = Math.min(Math.max(\n overlay.GetRenderPriority() / IMPACT_ARMOR_PARTICLE_LOD_FACTOR, 0), 1);\n const args = new ITr2GenericEmitterUpdateArguments();\n args.time = updateContext.GetTime();\n args.system = gpuParticleSystem;\n vec3.copy(args.originShift, updateContext.GetOriginShift());\n this.armorImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);\n impact.requestSpawnDebris = false;\n\n if (this.hullImpactEmitter &&\n this.damageOverlay.GetImpactConfiguration() === ImpactConfiguration.IMPACT_HULL)\n {\n this.hullImpactEmitter.SetPosition(impactPosWS);\n this.hullImpactEmitter.SetDirection(impactDirWS);\n this.hullImpactEmitter.SpawnOnce(args, parentVelocityWS, scale, rateModifier);\n }\n }\n };\n\n spawnFromOverlay(this.damageOverlay, 0);\n for (const [ overlay, start ] of parent.CollectPartDamageOverlays([]))\n {\n spawnFromOverlay(overlay, start);\n }\n }\n\n /** Ages shield impacts and rebuilds the shared damage rows. */\n @carbon.method\n @impl.adapted\n UpdateAsyncronous(updateContext, parent)\n {\n const delta = updateContext.GetDeltaT();\n for (const [ index, impact ] of this.#shieldImpacts)\n {\n impact.timeLeft -= delta;\n if (impact.timeLeft <= 0) this.#shieldImpacts.delete(index);\n }\n\n this.shieldBoosting.Update(updateContext);\n this.shieldHardening.Update(updateContext);\n\n const boundingSphere = vec4.create();\n parent.GetBoundingSphere(boundingSphere);\n\n this.damageOverlay.UpdateAsyncronous(updateContext, {\n boundingSphere,\n estimatedPixelDiameter: parent.estimatedPixelDiameter,\n isInFrustum: parent.IsInFrustum(),\n // Bind position, not the animated pose (Carbon EveImpactOverlay.cpp:189,\n // commit 3d988b1d): decals seeded here must not swim with animation.\n getDamageLocatorPositionOS: (index, out) => parent.GetDamageLocatorBindPosition(index, out)\n }, this.#shieldImpacts.size, this.HasShieldActivity());\n\n const header = this.damageOverlay.HeaderRow();\n vec4.set(header[0],\n this.#shieldImpacts.size,\n this.overallShieldImpact,\n this.shieldImpactColorFade,\n this.shieldImpactParentSize);\n vec4.set(header[1],\n this.shieldHardening.GetFaderValue(),\n this.shieldBoosting.GetFaderValue(),\n this.shieldHardening.GetKickInValue(),\n this.shieldBoosting.GetKickInValue());\n\n if (!this.HasGeneralActivity()) return;\n\n const parentWorldTransform = mat4.copy(mat4.create(), parent.GetLocalToWorldTransform());\n const parentInverseWorldTransform = mat4.invert(mat4.create(), parentWorldTransform);\n if (!parentInverseWorldTransform)\n {\n throw new Error(\"EveImpactOverlay.UpdateAsyncronous requires an invertible parent transform.\");\n }\n\n this.shieldImpactParentSize = Math.max(\n IMPACT_SHIELD_SIZE_MIN,\n Math.min(IMPACT_SHIELD_SIZE_MAX, boundingSphere[3]));\n\n if (!this.#shieldImpacts.size) return;\n\n const ellipsoidCenter = vec3.create();\n const ellipsoidRadii = vec3.fromValues(1, 1, 1);\n parent.GetShapeEllipsoid(ellipsoidCenter, ellipsoidRadii);\n const locatorPositionWorld = vec3.create();\n const position = vec3.create();\n let row = 0;\n for (const impact of this.#shieldImpacts.values())\n {\n parent.GetDamageLocatorPosition(\n impact.damageLocatorIndex, true, locatorPositionWorld);\n getShieldImpactPosition(\n position, this.shieldIsEllipsoid, parentInverseWorldTransform,\n locatorPositionWorld, impact.direction, ellipsoidCenter, ellipsoidRadii);\n const texel = this.damageOverlay.TexelRow(row++);\n vec4.set(texel[0], position[0], position[1], position[2], impact.timeLeft);\n vec4.set(texel[1], impact.size, impact.intensity, 0, impact.lifeTime);\n vec3.transformMat4(impact.interceptPosition, position, parentWorldTransform);\n }\n }\n\n /** Emits the active shield-impact mesh batches. */\n @carbon.method\n @impl.adapted\n GetBatches(accumulator, batchType, perObjectData, screenSize)\n {\n if (!this.display || !this.mesh ||\n this.damageOverlay.GetDataTextureBlockID() === -1 ||\n this.damageOverlay.GetDataTextureOffset() === -1 ||\n !this.HasShieldActivity()) return false;\n return this.mesh.GetBatches(\n accumulator, this.mesh.GetAreas(batchType), perObjectData, screenSize, false);\n }\n\n /** Returns the active armour-damage material for a batch type. */\n @carbon.method\n @impl.implemented\n GetArmorDamageShader(batchType)\n {\n return this.damageOverlay.GetArmorDamageShader(batchType);\n }\n\n /** Copies legacy authored damage fields into the owned damage overlay. */\n #SyncLegacyDamageFieldsToOverlay()\n {\n this.damageOverlay ??= new EveDamageOverlay();\n this.damageOverlay.SetSeed(this.seed);\n this.damageOverlay.SetDamageLocatorCount(this.#damageLocatorCount);\n this.damageOverlay.SetDebugForceSpawnDebris(this.debugForceSpawnDebris);\n this.damageOverlay.SetHullDamageFactor(this.hullDamageFactor);\n this.damageOverlay.SetArmorDamageShaderEffect(this.armorDamageShader);\n this.damageOverlay.SetHullDamageFlickerCurve(this.hullDamageFlickerCurve);\n this.damageOverlay.SetArmorRepairing(this.armorRepairing);\n this.damageOverlay.SetArmorHardening(this.armorHardening);\n this.damageOverlay.SetHullRepairing(this.hullRepairing);\n }\n\n /**\n * Maps an effect name to the fader that drives it, or null when the name is\n * unknown.\n */\n static #effectFader(overlay, name)\n {\n switch (name)\n {\n case \"shieldboost\": return overlay.shieldBoosting;\n case \"shieldhardening\": return overlay.shieldHardening;\n case \"armorhardening\": return overlay.armorHardening;\n case \"armorrepair\": return overlay.armorRepairing;\n case \"hullrepair\": return overlay.hullRepairing;\n default: return null;\n }\n }\n\n static ImpactConfiguration = ImpactConfiguration;\n\n}\n\n\nfunction getShieldImpactPosition(\n out,\n shieldIsEllipsoid,\n parentInverseWorldTransform,\n damageLocatorPositionWorld,\n impactDirection,\n ellipsoidCenter,\n ellipsoidRadii)\n{\n vec3.transformMat4(out, damageLocatorPositionWorld, parentInverseWorldTransform);\n if (!shieldIsEllipsoid) return out;\n\n const directionObject = transformNormal(\n vec3.create(), impactDirection, parentInverseWorldTransform);\n return intersectEllipsoidRay(\n out, ellipsoidCenter, ellipsoidRadii, out, directionObject);\n}\n\n\nfunction transformNormal(out, direction, matrix)\n{\n const x = direction[0];\n const y = direction[1];\n const z = direction[2];\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\n return out;\n}\n\n\nfunction intersectEllipsoidRay(out, center, radii, origin, direction)\n{\n const vx = direction[0] / radii[0];\n const vy = direction[1] / radii[1];\n const vz = direction[2] / radii[2];\n const sx = (origin[0] - center[0]) / radii[0];\n const sy = (origin[1] - center[1]) / radii[1];\n const sz = (origin[2] - center[2]) / radii[2];\n const vv = vx * vx + vy * vy + vz * vz;\n if (!(vv > 0)) return vec3.set(out, 0, 0, 0);\n const vs = vx * sx + vy * sy + vz * sz;\n const ss = sx * sx + sy * sy + sz * sz;\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\n if (discriminant < 0) return vec3.set(out, 0, 0, 0);\n discriminant = Math.sqrt(discriminant);\n let t = -discriminant - vs / vv;\n if (t < 0) t = discriminant - vs / vv;\n return vec3.scaleAndAdd(out, origin, direction, t);\n}\n"],"names":["IMPACT_SHIELD_SIZE_MAX","IMPACT_SHIELD_SIZE_MIN","IMPACT_SHIELD_FADEOUT","IMPACT_ARMOR_PARTICLE_LOD_FACTOR","_EveImpactOverlay","_identity","EveImpactOverlay","CjsModel","e","_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","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","persist","string","read","uint32","readwrite","boolean","objectRef","int32","enum","uint64","float32","carbon","method","impl","implemented","adapted","name","seed","display","damageOverlay","EveDamageOverlay","configuration","impactDataNextIdx","armorImpactGoalCount","armorImpactParentSize","shieldImpactColorFade","shieldImpactParentSize","shieldIsEllipsoid","debugForceSpawnDebris","renderPriority","mesh","dataTextureBlockID","maxShieldImpacts","overallShieldImpact","shieldHardening","Tr2ScalarFader","shieldBoosting","armorDamageShader","armorImpactEmitter","armorRepairing","armorHardening","hullRepairing","hullDamageFlickerCurve","hullDamageFactor","hullImpactEmitter","vec3","fromValues","Map","Initialize","Set","armorDamageEmitter","shieldImpactMesh","SetSeed","Number","SetDamageLocatorCount","count","GetDamageLocatorCount","GetArmorImpactLifeTime","GetLastDamageState","out","create","GetDataTextureOffset","GetImpactConfiguration","HasShieldEllipsoid","ToggleEffect","on","duration","fader","StartFade","GetDamageOverlay","GetImpactDataNextIdx","GetSeed","GetArmorImpactGoalCount","GetArmorImpactParentSize","GetDebugForceSpawnDebris","SetDebugForceSpawnDebris","value","GetRenderPriority","GetDataTextureBlockID","GetHullDamageFactor","SetHullDamageFactor","GetArmorDamageShaderEffect","SetArmorDamageShaderEffect","GetHullDamageFlickerCurve","SetHullDamageFlickerCurve","GetArmorRepairing","SetArmorRepairing","GetArmorHardening","SetArmorHardening","GetHullRepairing","SetHullRepairing","SetDamageState","shield","armor","hull","createArmorImpacts","Math","max","min","set","Clear","clear","CreateImpact","damageLocatorIndex","direction","lifeTime","size","intensity","lod","Tr2Lod","TR2_LOD_HIGH","parent","impactEffectEnabled","ImpactConfiguration","IMPACT_SHIELD","TR2_LOD_LOW","IMPACT_ARMOR","IMPACT_HULL","#CreateShieldImpact","normalizedDirection","normalize","closestAtLocatorIndex","closestAtAnyIndex","closestAtLocatorAngle","Infinity","closestAtAnyAngle","index","impact","angle","dot","get","copy","timeLeft","parentWorldTransform","mat4","GetLocalToWorldTransform","parentInverseWorldTransform","invert","Error","ellipsoidCenter","ellipsoidRadii","GetShapeEllipsoid","locatorPositionWorld","GetDamageLocatorPosition","interceptPosition","transformMat4","AllocateImpactIndex","impactLifeTime","#GetShieldImpactPosition","damageLocatorPositionWorld","impactDirection","getShieldImpactPosition","UpdateImpact","impactIndex","HasImpact","HasShieldActivity","IsKickInZero","HasArmorActivity","HasHullActivity","HasGeneralActivity","GetActivationStrength","updateContext","UpdateSyncronous","SpawnImpactDebris","hasGeneralActivity","UpdateBlockData","GetDataTextureManager","gpuParticleSystem","GetGpuParticleSystem","spawnFromOverlay","overlay","mergedIndexOffset","ArmorImpacts","values","requestSpawnDebris","locatorIndex","impactPosWS","SetPosition","impactDirWS","GetDamageLocatorDirection","SetDirection","parentVelocityWS","GetWorldVelocity","scale","IMPACT_ARMOR_SIZE_MAX","IMPACT_ARMOR_SIZE_FACTOR","rateModifier","args","ITr2GenericEmitterUpdateArguments","time","GetTime","system","originShift","GetOriginShift","SpawnOnce","start","CollectPartDamageOverlays","UpdateAsyncronous","delta","GetDeltaT","delete","Update","boundingSphere","vec4","GetBoundingSphere","estimatedPixelDiameter","isInFrustum","IsInFrustum","getDamageLocatorPositionOS","GetDamageLocatorBindPosition","header","HeaderRow","GetFaderValue","GetKickInValue","position","row","texel","TexelRow","GetBatches","accumulator","batchType","perObjectData","screenSize","GetAreas","GetArmorDamageShader","#SyncLegacyDamageFieldsToOverlay","#effectFader","constructor","directionObject","transformNormal","intersectEllipsoidRay","matrix","x","y","z","center","radii","origin","vx","vy","vz","sx","sy","sz","vv","vs","ss","discriminant","sqrt","t","scaleAndAdd"],"mappings":"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"}
|
|
@@ -106,9 +106,10 @@ new class extends _identity {
|
|
|
106
106
|
const child = this.#object.effectChildren[index];
|
|
107
107
|
if (child.GetPartTag() === part.partId) this.#object.RemoveFromEffectChildrenList(child);
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
|
|
110
|
+
// A part's locators are owned by its child and merged by the object, so
|
|
111
|
+
// removing the child removes them; Carbon stopped filtering the object's
|
|
112
|
+
// sets by part tag in trinity 108ab454.
|
|
112
113
|
if (this.#instancedMeshes) this.#instancedMeshes.RemoveInstancesByPartTag(part.partId);
|
|
113
114
|
this.#data.parts.splice(this.#data.parts.indexOf(part), 1);
|
|
114
115
|
this.#object.InvalidateMergedLocators("structure");
|
|
@@ -127,20 +128,10 @@ new class extends _identity {
|
|
|
127
128
|
if (!mat4.invert(inverseOld, oldTransform)) {
|
|
128
129
|
throw new Error(`Modular part ${part.partId} has a singular transform.`);
|
|
129
130
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
locator.scale[0] = scale[0] / part.scale[0];
|
|
135
|
-
locator.scale[1] = scale[1] / part.scale[1];
|
|
136
|
-
locator.scale[2] = scale[2] / part.scale[2];
|
|
137
|
-
// Carbon invOld.rotation * newRotation (row-vector composition) maps
|
|
138
|
-
// to reversed gl-matrix quaternion operands.
|
|
139
|
-
quat.multiply(locator.direction, rotation, inverseOldRotation);
|
|
140
|
-
vec3.transformMat4(locator.position, locator.position, inverseOld);
|
|
141
|
-
vec3.transformMat4(locator.position, locator.position, newTransform);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
131
|
+
|
|
132
|
+
// Part-owned locators follow their child's transform through the merge
|
|
133
|
+
// (the PartMoved invalidation below); Carbon stopped moving them here in
|
|
134
|
+
// trinity 108ab454.
|
|
144
135
|
const center = vec3.fromValues(part.boundingSphere[0], part.boundingSphere[1], part.boundingSphere[2]);
|
|
145
136
|
vec3.transformMat4(center, center, inverseOld);
|
|
146
137
|
vec3.transformMat4(center, center, newTransform);
|
|
@@ -153,7 +144,7 @@ new class extends _identity {
|
|
|
153
144
|
if (child.GetPartTag() === part.partId) {
|
|
154
145
|
child.Setup(scale, rotation, position, Tr2Lod.TR2_LOD_LOW);
|
|
155
146
|
}
|
|
156
|
-
// OUTSIDE the partTag gate (Carbon EveModularObjectModifier.cpp:
|
|
147
|
+
// OUTSIDE the partTag gate (Carbon EveModularObjectModifier.cpp:200-203,
|
|
157
148
|
// PLAT-11963): the shared instanced child carries many parts' instances
|
|
158
149
|
// under its own aggregate tag; the per-part filter lives in the method.
|
|
159
150
|
if (child instanceof _EveChildInstancedMes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveModularObjectModifier.js","sources":["../../../../src/trinity/eve/EveModularObjectModifier.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier.h\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, type } from \"#schema\";\nimport { EveChildPartData, EveChildPartDataPartData } from \"./child/EveChildPartData/index.js\";\nimport { EveChildInstancedMeshes } from \"./child/EveChildInstancedMeshes/index.js\";\nimport { EveStation2 } from \"./spaceObject/EveStation2.js\";\nimport { Tr2Lod } from \"./EveLODHelper.js\";\n\n\n/** Transient edit session for one modular EveSpaceObject2. */\n@type.define({ className: \"EveModularObjectModifier\", family: \"eve\" })\nexport class EveModularObjectModifier extends CjsModel\n{\n #object = null;\n\n #data = null;\n\n #instancedMeshes = null;\n\n #sof = null;\n\n #objectLoader = null;\n\n /** Opens an edit session and creates persistent part data when absent. */\n @carbon.method\n @impl.adapted\n Create(object, sof, objectLoader = null)\n {\n this.#object = object;\n this.#sof = sof;\n this.#objectLoader = objectLoader;\n this.#data = object.effectChildren.find(child => child instanceof EveChildPartData) ?? null;\n if (!this.#data)\n {\n this.#data = new EveChildPartData();\n object.AddToEffectChildrenList(this.#data);\n }\n this.#instancedMeshes = object.effectChildren.find(\n child => child instanceof EveChildInstancedMeshes) ?? null;\n return this;\n }\n\n /** Builds and attaches one SOF hull part, returning its unique part tag. */\n @carbon.method\n @impl.implemented\n AddHull(hullName, factionName, raceName, position, rotation, scale)\n {\n this.#AssertReady();\n const id = this.#AllocatePartId();\n const dna = `${hullName}:${factionName || this.#data.faction}:${raceName || this.#data.race}`;\n const transform = mat4.fromRotationTranslationScale(mat4.create(), rotation, position, scale);\n if (!this.#sof.BuildChild(this.#object, dna, id, transform))\n {\n return EveModularObjectModifier.INVALID_PART_TAG;\n }\n\n // Runtime SOF composes through GetValues/SetValues and may replace the\n // whole child list. Reacquire graph-owned records before mutating them.\n this.#data = this.#object.effectChildren.find(\n child => child instanceof EveChildPartData) ?? null;\n this.#instancedMeshes = this.#object.effectChildren.find(\n child => child instanceof EveChildInstancedMeshes) ?? null;\n\n const part = new EveChildPartDataPartData();\n part.partId = id;\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n vec4.set(part.boundingSphere,\n this.#object.boundingSphereCenter[0],\n this.#object.boundingSphereCenter[1],\n this.#object.boundingSphereCenter[2],\n this.#object.boundingSphereRadius);\n this.#data.parts.push(part);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.#UpdateImpactOverlayLocatorCount();\n this.ApplyBounds();\n return id;\n }\n\n /** Loads and attaches one resource child, returning its unique part tag. */\n @carbon.method\n @impl.adapted\n AddChild(resourcePath, position, rotation, scale)\n {\n this.#AssertReady();\n if (!this.#objectLoader)\n {\n throw new Error(\"EveModularObjectModifier.AddChild requires a CjsEveChildResourceLoader.\");\n }\n\n const child = this.#objectLoader.LoadChild(String(resourcePath), this.#object);\n if (!child) return EveModularObjectModifier.INVALID_PART_TAG;\n\n child.Setup(scale, rotation, position, Tr2Lod.TR2_LOD_LOW);\n this.#object.AddToEffectChildrenList(child);\n const id = this.#AllocatePartId();\n child.SetPartTag(id);\n\n const part = new EveChildPartDataPartData();\n part.partId = id;\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n this.#data.parts.push(part);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.ApplyBounds();\n return id;\n }\n\n /** Removes a modular part and every child carrying its tag. */\n @carbon.method\n @impl.implemented\n Remove(partId)\n {\n const part = this.#GetPart(partId);\n for (let index = this.#object.effectChildren.length - 1; index >= 0; index--)\n {\n const child = this.#object.effectChildren[index];\n if (child.GetPartTag() === part.partId) this.#object.RemoveFromEffectChildrenList(child);\n }\n\n for (const set of this.#object.locatorSets)\n {\n set.locators = set.locators.filter(locator => locator.partTag !== part.partId);\n }\n if (this.#instancedMeshes) this.#instancedMeshes.RemoveInstancesByPartTag(part.partId);\n this.#data.parts.splice(this.#data.parts.indexOf(part), 1);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.#object.ClearImpactDamage();\n this.#UpdateImpactOverlayLocatorCount();\n this.ApplyBounds();\n return true;\n }\n\n /** Replaces a modular part transform and updates its attached children. */\n @carbon.method\n @impl.adapted\n SetTransform(partId, position, rotation, scale)\n {\n const part = this.#GetPart(partId);\n const oldTransform = mat4.fromRotationTranslationScale(\n mat4.create(), part.rotation, part.position, part.scale);\n const newTransform = mat4.fromRotationTranslationScale(\n mat4.create(), rotation, position, scale);\n const inverseOld = mat4.create();\n if (!mat4.invert(inverseOld, oldTransform))\n {\n throw new Error(`Modular part ${part.partId} has a singular transform.`);\n }\n\n const inverseOldRotation = quat.invert(quat.create(), part.rotation);\n for (const set of this.#object.locatorSets)\n {\n for (const locator of set.locators)\n {\n if (locator.partTag !== part.partId) continue;\n locator.scale[0] = scale[0] / part.scale[0];\n locator.scale[1] = scale[1] / part.scale[1];\n locator.scale[2] = scale[2] / part.scale[2];\n // Carbon invOld.rotation * newRotation (row-vector composition) maps\n // to reversed gl-matrix quaternion operands.\n quat.multiply(locator.direction, rotation, inverseOldRotation);\n vec3.transformMat4(locator.position, locator.position, inverseOld);\n vec3.transformMat4(locator.position, locator.position, newTransform);\n }\n }\n\n const center = vec3.fromValues(\n part.boundingSphere[0], part.boundingSphere[1], part.boundingSphere[2]);\n vec3.transformMat4(center, center, inverseOld);\n vec3.transformMat4(center, center, newTransform);\n vec3.copy(part.boundingSphere, center);\n part.boundingSphere[3] *= Math.max(scale[0], scale[1], scale[2]) /\n Math.max(part.scale[0], part.scale[1], part.scale[2]);\n\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n for (const child of this.#object.effectChildren)\n {\n if (child.GetPartTag() === part.partId)\n {\n child.Setup(scale, rotation, position, Tr2Lod.TR2_LOD_LOW);\n }\n // OUTSIDE the partTag gate (Carbon EveModularObjectModifier.cpp:225-228,\n // PLAT-11963): the shared instanced child carries many parts' instances\n // under its own aggregate tag; the per-part filter lives in the method.\n if (child instanceof EveChildInstancedMeshes)\n {\n child.SetInstanceTransformByPartTag(part.partId, position, rotation, scale);\n }\n }\n this.#object.InvalidateMergedLocators(\"partMoved\");\n this.ApplyBounds();\n return true;\n }\n\n /** Recomputes culling bounds from the current modular part spheres. */\n @carbon.method\n @impl.adapted\n ApplyBounds()\n {\n this.#AssertReady();\n const ordered = this.#data.parts.slice().sort(\n (left, right) => right.boundingSphere[3] - left.boundingSphere[3]);\n const bounds = vec4.create();\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\n let hasBounds = false;\n\n for (const part of ordered)\n {\n includeSphere(bounds, part.boundingSphere, hasBounds);\n hasBounds = true;\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], part.boundingSphere[axis] - part.boundingSphere[3]);\n max[axis] = Math.max(max[axis], part.boundingSphere[axis] + part.boundingSphere[3]);\n }\n }\n\n if (!hasBounds)\n {\n vec4.set(bounds, 0, 0, 0, 0);\n vec3.set(this.#object.shapeEllipsoidCenter, 0, 0, 0);\n vec3.set(this.#object.shapeEllipsoidRadius, 0, 0, 0);\n }\n else\n {\n vec3.lerp(this.#object.shapeEllipsoidCenter, min, max, 0.5);\n vec3.subtract(this.#object.shapeEllipsoidRadius, max, min);\n vec3.scale(\n this.#object.shapeEllipsoidRadius,\n this.#object.shapeEllipsoidRadius,\n Math.sqrt(3) * 0.5);\n }\n this.#object.SetBoundingSphereInformation(bounds);\n return bounds;\n }\n\n /** Copies a modular part's authored position. */\n @carbon.method\n @impl.implemented\n GetPosition(partId, out = vec3.create())\n {\n return vec3.copy(out, this.#GetPart(partId).position);\n }\n\n /** Copies a modular part's authored rotation. */\n @carbon.method\n @impl.implemented\n GetRotation(partId, out = quat.create())\n {\n return quat.copy(out, this.#GetPart(partId).rotation);\n }\n\n /** Copies a modular part's authored scale. */\n @carbon.method\n @impl.implemented\n GetScale(partId, out = vec3.create())\n {\n return vec3.copy(out, this.#GetPart(partId).scale);\n }\n\n /** Throws until the modifier has an object, part data and SOF service. */\n #AssertReady()\n {\n if (!this.#object || !this.#data || !this.#sof)\n {\n throw new Error(\"EveModularObjectModifier.Create must be called before editing.\");\n }\n }\n\n /** Resolves a modular part by its unsigned part tag. */\n #GetPart(partId)\n {\n this.#AssertReady();\n const id = Number(partId) >>> 0;\n const part = this.#data.parts.find(candidate => candidate.partId === id);\n if (!part) throw new RangeError(`Unknown modular part tag ${id}.`);\n return part;\n }\n\n /** Finds an unused nonzero tag across recorded parts and attached children. */\n #AllocatePartId()\n {\n let id = this.#data.GetUnusedPartID();\n for (const child of this.#object.effectChildren)\n {\n const tag = child.GetPartTag();\n if (tag !== 0) id = Math.max(id, (tag + 1) >>> 0);\n }\n return id >>> 0;\n }\n\n /** Refreshes the owning impact overlay after the locator graph changes. */\n #UpdateImpactOverlayLocatorCount()\n {\n if (!this.#object.impactOverlay) return;\n this.#object.EnsureChildLocatorMerged();\n this.#object.impactOverlay.SetDamageLocatorCount(this.#object.GetDamageLocatorCount());\n }\n\n static INVALID_PART_TAG = 0xffffffff;\n}\n\n\n/** Creates an empty modular station plus its edit session. */\nexport function CreateModularObject(sof, factionName = \"\", raceName = \"\", objectLoader = null)\n{\n const object = new EveStation2();\n const data = new EveChildPartData();\n data.faction = String(factionName);\n data.race = String(raceName);\n object.AddToEffectChildrenList(data);\n object.Initialize();\n return [ object, new EveModularObjectModifier().Create(object, sof, objectLoader) ];\n}\n\n\n/** Opens a modular edit session on an existing object. */\nexport function ModifyModularObject(object, sof, objectLoader = null)\n{\n return new EveModularObjectModifier().Create(object, sof, objectLoader);\n}\n\n\n/** Returns Carbon's reserved invalid modular-part tag. */\nexport function GetInvalidPartTag()\n{\n return EveModularObjectModifier.INVALID_PART_TAG;\n}\n\n\nfunction includeSphere(out, sphere, initialized)\n{\n if (!initialized)\n {\n vec4.copy(out, sphere);\n return;\n }\n\n const dx = sphere[0] - out[0];\n const dy = sphere[1] - out[1];\n const dz = sphere[2] - out[2];\n const distance = Math.hypot(dx, dy, dz);\n if (out[3] >= distance + sphere[3]) return;\n if (sphere[3] >= distance + out[3])\n {\n vec4.copy(out, sphere);\n return;\n }\n\n const radius = (distance + out[3] + sphere[3]) * 0.5;\n const shift = distance ? (radius - out[3]) / distance : 0;\n out[0] += dx * shift;\n out[1] += dy * shift;\n out[2] += dz * shift;\n out[3] = radius;\n}\n"],"names":["_EveModularObjectModi","_identity","EveModularObjectModifier","CjsModel","e","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","method","impl","adapted","implemented","Create","object","sof","objectLoader","effectChildren","find","child","EveChildPartData","AddToEffectChildrenList","EveChildInstancedMeshes","AddHull","hullName","factionName","raceName","position","rotation","scale","id","dna","faction","race","transform","mat4","fromRotationTranslationScale","create","BuildChild","INVALID_PART_TAG","part","EveChildPartDataPartData","partId","vec3","copy","quat","vec4","set","boundingSphere","boundingSphereCenter","boundingSphereRadius","parts","push","InvalidateMergedLocators","ApplyBounds","AddChild","resourcePath","Error","LoadChild","String","Setup","Tr2Lod","TR2_LOD_LOW","SetPartTag","Remove","index","length","GetPartTag","RemoveFromEffectChildrenList","locatorSets","locators","filter","locator","partTag","RemoveInstancesByPartTag","splice","indexOf","ClearImpactDamage","SetTransform","oldTransform","newTransform","inverseOld","invert","inverseOldRotation","multiply","direction","transformMat4","center","fromValues","Math","max","SetInstanceTransformByPartTag","ordered","slice","sort","left","right","bounds","min","Infinity","hasBounds","includeSphere","axis","shapeEllipsoidCenter","shapeEllipsoidRadius","lerp","subtract","sqrt","SetBoundingSphereInformation","GetPosition","out","GetRotation","GetScale","#AssertReady","#GetPart","Number","candidate","RangeError","#AllocatePartId","GetUnusedPartID","tag","#UpdateImpactOverlayLocatorCount","impactOverlay","EnsureChildLocatorMerged","SetDamageLocatorCount","GetDamageLocatorCount","constructor","CreateModularObject","EveStation2","data","Initialize","ModifyModularObject","GetInvalidPartTag","sphere","initialized","dx","dy","dz","distance","hypot","radius","shift"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveModularObjectModifier.js","sources":["../../../../src/trinity/eve/EveModularObjectModifier.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier.h\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveModularObjectModifier_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, type } from \"#schema\";\nimport { EveChildPartData, EveChildPartDataPartData } from \"./child/EveChildPartData/index.js\";\nimport { EveChildInstancedMeshes } from \"./child/EveChildInstancedMeshes/index.js\";\nimport { EveStation2 } from \"./spaceObject/EveStation2.js\";\nimport { Tr2Lod } from \"./EveLODHelper.js\";\n\n\n/** Transient edit session for one modular EveSpaceObject2. */\n@type.define({ className: \"EveModularObjectModifier\", family: \"eve\" })\nexport class EveModularObjectModifier extends CjsModel\n{\n #object = null;\n\n #data = null;\n\n #instancedMeshes = null;\n\n #sof = null;\n\n #objectLoader = null;\n\n /** Opens an edit session and creates persistent part data when absent. */\n @carbon.method\n @impl.adapted\n Create(object, sof, objectLoader = null)\n {\n this.#object = object;\n this.#sof = sof;\n this.#objectLoader = objectLoader;\n this.#data = object.effectChildren.find(child => child instanceof EveChildPartData) ?? null;\n if (!this.#data)\n {\n this.#data = new EveChildPartData();\n object.AddToEffectChildrenList(this.#data);\n }\n this.#instancedMeshes = object.effectChildren.find(\n child => child instanceof EveChildInstancedMeshes) ?? null;\n return this;\n }\n\n /** Builds and attaches one SOF hull part, returning its unique part tag. */\n @carbon.method\n @impl.implemented\n AddHull(hullName, factionName, raceName, position, rotation, scale)\n {\n this.#AssertReady();\n const id = this.#AllocatePartId();\n const dna = `${hullName}:${factionName || this.#data.faction}:${raceName || this.#data.race}`;\n const transform = mat4.fromRotationTranslationScale(mat4.create(), rotation, position, scale);\n if (!this.#sof.BuildChild(this.#object, dna, id, transform))\n {\n return EveModularObjectModifier.INVALID_PART_TAG;\n }\n\n // Runtime SOF composes through GetValues/SetValues and may replace the\n // whole child list. Reacquire graph-owned records before mutating them.\n this.#data = this.#object.effectChildren.find(\n child => child instanceof EveChildPartData) ?? null;\n this.#instancedMeshes = this.#object.effectChildren.find(\n child => child instanceof EveChildInstancedMeshes) ?? null;\n\n const part = new EveChildPartDataPartData();\n part.partId = id;\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n vec4.set(part.boundingSphere,\n this.#object.boundingSphereCenter[0],\n this.#object.boundingSphereCenter[1],\n this.#object.boundingSphereCenter[2],\n this.#object.boundingSphereRadius);\n this.#data.parts.push(part);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.#UpdateImpactOverlayLocatorCount();\n this.ApplyBounds();\n return id;\n }\n\n /** Loads and attaches one resource child, returning its unique part tag. */\n @carbon.method\n @impl.adapted\n AddChild(resourcePath, position, rotation, scale)\n {\n this.#AssertReady();\n if (!this.#objectLoader)\n {\n throw new Error(\"EveModularObjectModifier.AddChild requires a CjsEveChildResourceLoader.\");\n }\n\n const child = this.#objectLoader.LoadChild(String(resourcePath), this.#object);\n if (!child) return EveModularObjectModifier.INVALID_PART_TAG;\n\n child.Setup(scale, rotation, position, Tr2Lod.TR2_LOD_LOW);\n this.#object.AddToEffectChildrenList(child);\n const id = this.#AllocatePartId();\n child.SetPartTag(id);\n\n const part = new EveChildPartDataPartData();\n part.partId = id;\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n this.#data.parts.push(part);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.ApplyBounds();\n return id;\n }\n\n /** Removes a modular part and every child carrying its tag. */\n @carbon.method\n @impl.implemented\n Remove(partId)\n {\n const part = this.#GetPart(partId);\n for (let index = this.#object.effectChildren.length - 1; index >= 0; index--)\n {\n const child = this.#object.effectChildren[index];\n if (child.GetPartTag() === part.partId) this.#object.RemoveFromEffectChildrenList(child);\n }\n\n // A part's locators are owned by its child and merged by the object, so\n // removing the child removes them; Carbon stopped filtering the object's\n // sets by part tag in trinity 108ab454.\n if (this.#instancedMeshes) this.#instancedMeshes.RemoveInstancesByPartTag(part.partId);\n this.#data.parts.splice(this.#data.parts.indexOf(part), 1);\n this.#object.InvalidateMergedLocators(\"structure\");\n this.#object.ClearImpactDamage();\n this.#UpdateImpactOverlayLocatorCount();\n this.ApplyBounds();\n return true;\n }\n\n /** Replaces a modular part transform and updates its attached children. */\n @carbon.method\n @impl.adapted\n SetTransform(partId, position, rotation, scale)\n {\n const part = this.#GetPart(partId);\n const oldTransform = mat4.fromRotationTranslationScale(\n mat4.create(), part.rotation, part.position, part.scale);\n const newTransform = mat4.fromRotationTranslationScale(\n mat4.create(), rotation, position, scale);\n const inverseOld = mat4.create();\n if (!mat4.invert(inverseOld, oldTransform))\n {\n throw new Error(`Modular part ${part.partId} has a singular transform.`);\n }\n\n // Part-owned locators follow their child's transform through the merge\n // (the PartMoved invalidation below); Carbon stopped moving them here in\n // trinity 108ab454.\n const center = vec3.fromValues(\n part.boundingSphere[0], part.boundingSphere[1], part.boundingSphere[2]);\n vec3.transformMat4(center, center, inverseOld);\n vec3.transformMat4(center, center, newTransform);\n vec3.copy(part.boundingSphere, center);\n part.boundingSphere[3] *= Math.max(scale[0], scale[1], scale[2]) /\n Math.max(part.scale[0], part.scale[1], part.scale[2]);\n\n vec3.copy(part.position, position);\n quat.copy(part.rotation, rotation);\n vec3.copy(part.scale, scale);\n for (const child of this.#object.effectChildren)\n {\n if (child.GetPartTag() === part.partId)\n {\n child.Setup(scale, rotation, position, Tr2Lod.TR2_LOD_LOW);\n }\n // OUTSIDE the partTag gate (Carbon EveModularObjectModifier.cpp:200-203,\n // PLAT-11963): the shared instanced child carries many parts' instances\n // under its own aggregate tag; the per-part filter lives in the method.\n if (child instanceof EveChildInstancedMeshes)\n {\n child.SetInstanceTransformByPartTag(part.partId, position, rotation, scale);\n }\n }\n this.#object.InvalidateMergedLocators(\"partMoved\");\n this.ApplyBounds();\n return true;\n }\n\n /** Recomputes culling bounds from the current modular part spheres. */\n @carbon.method\n @impl.adapted\n ApplyBounds()\n {\n this.#AssertReady();\n const ordered = this.#data.parts.slice().sort(\n (left, right) => right.boundingSphere[3] - left.boundingSphere[3]);\n const bounds = vec4.create();\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\n let hasBounds = false;\n\n for (const part of ordered)\n {\n includeSphere(bounds, part.boundingSphere, hasBounds);\n hasBounds = true;\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], part.boundingSphere[axis] - part.boundingSphere[3]);\n max[axis] = Math.max(max[axis], part.boundingSphere[axis] + part.boundingSphere[3]);\n }\n }\n\n if (!hasBounds)\n {\n vec4.set(bounds, 0, 0, 0, 0);\n vec3.set(this.#object.shapeEllipsoidCenter, 0, 0, 0);\n vec3.set(this.#object.shapeEllipsoidRadius, 0, 0, 0);\n }\n else\n {\n vec3.lerp(this.#object.shapeEllipsoidCenter, min, max, 0.5);\n vec3.subtract(this.#object.shapeEllipsoidRadius, max, min);\n vec3.scale(\n this.#object.shapeEllipsoidRadius,\n this.#object.shapeEllipsoidRadius,\n Math.sqrt(3) * 0.5);\n }\n this.#object.SetBoundingSphereInformation(bounds);\n return bounds;\n }\n\n /** Copies a modular part's authored position. */\n @carbon.method\n @impl.implemented\n GetPosition(partId, out = vec3.create())\n {\n return vec3.copy(out, this.#GetPart(partId).position);\n }\n\n /** Copies a modular part's authored rotation. */\n @carbon.method\n @impl.implemented\n GetRotation(partId, out = quat.create())\n {\n return quat.copy(out, this.#GetPart(partId).rotation);\n }\n\n /** Copies a modular part's authored scale. */\n @carbon.method\n @impl.implemented\n GetScale(partId, out = vec3.create())\n {\n return vec3.copy(out, this.#GetPart(partId).scale);\n }\n\n /** Throws until the modifier has an object, part data and SOF service. */\n #AssertReady()\n {\n if (!this.#object || !this.#data || !this.#sof)\n {\n throw new Error(\"EveModularObjectModifier.Create must be called before editing.\");\n }\n }\n\n /** Resolves a modular part by its unsigned part tag. */\n #GetPart(partId)\n {\n this.#AssertReady();\n const id = Number(partId) >>> 0;\n const part = this.#data.parts.find(candidate => candidate.partId === id);\n if (!part) throw new RangeError(`Unknown modular part tag ${id}.`);\n return part;\n }\n\n /** Finds an unused nonzero tag across recorded parts and attached children. */\n #AllocatePartId()\n {\n let id = this.#data.GetUnusedPartID();\n for (const child of this.#object.effectChildren)\n {\n const tag = child.GetPartTag();\n if (tag !== 0) id = Math.max(id, (tag + 1) >>> 0);\n }\n return id >>> 0;\n }\n\n /** Refreshes the owning impact overlay after the locator graph changes. */\n #UpdateImpactOverlayLocatorCount()\n {\n if (!this.#object.impactOverlay) return;\n this.#object.EnsureChildLocatorMerged();\n this.#object.impactOverlay.SetDamageLocatorCount(this.#object.GetDamageLocatorCount());\n }\n\n static INVALID_PART_TAG = 0xffffffff;\n}\n\n\n/** Creates an empty modular station plus its edit session. */\nexport function CreateModularObject(sof, factionName = \"\", raceName = \"\", objectLoader = null)\n{\n const object = new EveStation2();\n const data = new EveChildPartData();\n data.faction = String(factionName);\n data.race = String(raceName);\n object.AddToEffectChildrenList(data);\n object.Initialize();\n return [ object, new EveModularObjectModifier().Create(object, sof, objectLoader) ];\n}\n\n\n/** Opens a modular edit session on an existing object. */\nexport function ModifyModularObject(object, sof, objectLoader = null)\n{\n return new EveModularObjectModifier().Create(object, sof, objectLoader);\n}\n\n\n/** Returns Carbon's reserved invalid modular-part tag. */\nexport function GetInvalidPartTag()\n{\n return EveModularObjectModifier.INVALID_PART_TAG;\n}\n\n\nfunction includeSphere(out, sphere, initialized)\n{\n if (!initialized)\n {\n vec4.copy(out, sphere);\n return;\n }\n\n const dx = sphere[0] - out[0];\n const dy = sphere[1] - out[1];\n const dz = sphere[2] - out[2];\n const distance = Math.hypot(dx, dy, dz);\n if (out[3] >= distance + sphere[3]) return;\n if (sphere[3] >= distance + out[3])\n {\n vec4.copy(out, sphere);\n return;\n }\n\n const radius = (distance + out[3] + sphere[3]) * 0.5;\n const shift = distance ? (radius - out[3]) / distance : 0;\n out[0] += dx * shift;\n out[1] += dy * shift;\n out[2] += dz * shift;\n out[3] = radius;\n}\n"],"names":["_EveModularObjectModi","_identity","EveModularObjectModifier","CjsModel","e","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","method","impl","adapted","implemented","Create","object","sof","objectLoader","effectChildren","find","child","EveChildPartData","AddToEffectChildrenList","EveChildInstancedMeshes","AddHull","hullName","factionName","raceName","position","rotation","scale","id","dna","faction","race","transform","mat4","fromRotationTranslationScale","create","BuildChild","INVALID_PART_TAG","part","EveChildPartDataPartData","partId","vec3","copy","quat","vec4","set","boundingSphere","boundingSphereCenter","boundingSphereRadius","parts","push","InvalidateMergedLocators","ApplyBounds","AddChild","resourcePath","Error","LoadChild","String","Setup","Tr2Lod","TR2_LOD_LOW","SetPartTag","Remove","index","length","GetPartTag","RemoveFromEffectChildrenList","RemoveInstancesByPartTag","splice","indexOf","ClearImpactDamage","SetTransform","oldTransform","newTransform","inverseOld","invert","center","fromValues","transformMat4","Math","max","SetInstanceTransformByPartTag","ordered","slice","sort","left","right","bounds","min","Infinity","hasBounds","includeSphere","axis","shapeEllipsoidCenter","shapeEllipsoidRadius","lerp","subtract","sqrt","SetBoundingSphereInformation","GetPosition","out","GetRotation","GetScale","#AssertReady","#GetPart","Number","candidate","RangeError","#AllocatePartId","GetUnusedPartID","tag","#UpdateImpactOverlayLocatorCount","impactOverlay","EnsureChildLocatorMerged","SetDamageLocatorCount","GetDamageLocatorCount","constructor","CreateModularObject","EveStation2","data","Initialize","ModifyModularObject","GetInvalidPartTag","sphere","initialized","dx","dy","dz","distance","hypot","radius","shift"],"mappings":"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"}
|