@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +92 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveBoosterSet2Renderable.js","sources":["../../../../../../src/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveBoosterSet2.h\r\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveBoosterSet2.cpp\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { sph3 } from \"#math/sph3\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { CjsModel } from \"#model\";\r\nimport { carbon, impl, io, type } from \"#schema\";\nimport { withITr2Renderable } from \"../../../core/ITr2Renderable.js\";\n\r\n\r\n/**\r\n * One ship's instance of a booster set: it carries the parent transform, speed\r\n * and rotation, derives the booster and trail intensities, and maintains the\r\n * five-point trail spline and its LOD flags.\r\n */\r\n@type.define({ className: \"EveBoosterSet2Renderable\", family: \"eve/attachment/boosters\" })\r\nexport class EveBoosterSet2Renderable extends withITr2Renderable(CjsModel)\n{\r\n\r\n /** m_trailIntensity (float) [READ] */\r\n @io.read\r\n @type.float32\r\n trailIntensity = 0;\r\n\r\n /** m_trailsTotalLength (float) [READ] */\r\n @io.read\r\n @type.float32\r\n trailsTotalLength = 0;\r\n\r\n /** m_isVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n isVisible = false;\r\n\r\n /** m_trailsVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n trailsVisible = false;\r\n\r\n /** m_boostersVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n boostersVisible = false;\r\n\r\n /** m_trailsTimeDelta (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n trailsTimeDelta = 1;\r\n\r\n /** m_boosterHighLod (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n boosterHighLod = false;\r\n\r\n /** m_trailsBoundsMax (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n trailsBoundsMax = vec3.fromValues(\r\n -EveBoosterSet2Renderable.#floatMax,\r\n -EveBoosterSet2Renderable.#floatMax,\r\n -EveBoosterSet2Renderable.#floatMax\r\n );\r\n\r\n /** m_trailsBoundsMin (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n trailsBoundsMin = vec3.fromValues(\r\n EveBoosterSet2Renderable.#floatMax,\r\n EveBoosterSet2Renderable.#floatMax,\r\n EveBoosterSet2Renderable.#floatMax\r\n );\r\n\r\n /** m_overallIntensity (float) [READ] */\r\n @io.read\r\n @type.float32\r\n overallIntensity = 0;\r\n\r\n /** m_parentRotation (Quaternion) [READWRITE] */\r\n @io.readwrite\r\n @type.quat\r\n parentRotation = quat.create();\r\n\r\n /** m_parentSpeed (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n parentSpeed = 0;\r\n\r\n #boosterSet = null;\r\n\r\n #lastAccFactor = 0;\r\n\r\n #lastValue = 0;\r\n\r\n #parentTransform = mat4.create();\r\n\r\n #trailsControlPositions = Array.from(\r\n { length: EveBoosterSet2Renderable.#controlPointCount },\r\n () => vec3.create()\r\n );\r\n\r\n #trailsControlNormals = Array.from(\r\n { length: EveBoosterSet2Renderable.#controlPointCount },\r\n () => vec3.fromValues(0, 0, -1)\r\n );\r\n\r\n #trailsControlNormalsFactor = new Float32Array(\r\n EveBoosterSet2Renderable.#controlPointCount\r\n ).fill(1);\r\n\r\n #trailsSequenceLength = new Float32Array(\r\n EveBoosterSet2Renderable.#controlPointCount\r\n );\r\n\r\n #trailsOffsets = Array.from(\r\n { length: EveBoosterSet2Renderable.#positionOffsetCount },\r\n () => vec3.create()\r\n );\r\n\r\n #trailsOffsetLatest = 0;\r\n\r\n #trailsOffsetAccu = vec3.create();\r\n\r\n #trailsTimeToNext = 0;\r\n\r\n /**\r\n * Binds this instance to the booster set whose authored placements, colours\r\n * and light data it draws.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetBoosterSet(boosterSet)\r\n {\r\n this.#boosterSet = boosterSet ?? null;\r\n }\r\n\r\n /**\r\n * Derives the booster intensity from the parent's speed ratio and the\r\n * acceleration along its backward axis, each low-pass filtered against the\r\n * previous frame and the result clamped to 2; an always-on set returns its\r\n * authored intensity instead.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CalculateIntensity(acceleration)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return 0;\r\n }\r\n if (boosterSet.alwaysOn)\r\n {\r\n return boosterSet.alwaysOnIntensity;\r\n }\r\n\r\n const backward = vec3.transformQuat(vec3.create(), EveBoosterSet2Renderable.#zAxis, this.parentRotation);\r\n const speedRatio = boosterSet.maxVel ? this.parentSpeed / boosterSet.maxVel : 0;\r\n let accFactor = vec3.dot(acceleration ?? EveBoosterSet2Renderable.#zero, backward);\r\n accFactor *= Math.max(0.3, speedRatio);\r\n accFactor = Math.min(1, Math.max(0, accFactor));\r\n accFactor = accFactor * 0.2 + this.#lastAccFactor * 0.8;\r\n this.#lastAccFactor = accFactor;\r\n\r\n let value = this.#lastValue * 0.8 + (0.8 * speedRatio + 0.2 * accFactor) * 0.2;\r\n value = Math.min(value, 2);\r\n this.#lastValue = value;\r\n return value;\r\n }\r\n\r\n /**\r\n * Takes the parent transform, speed and rotation for the frame - deriving\r\n * speed from the transform delta when the set is not destiny-driven - and\r\n * recomputes the overall intensity, which it returns.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Update(deltaTime, _time, parentMatrix, parentSpeed, parentAcceleration, parentRotation)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (boosterSet?.destinyUpdate)\r\n {\r\n this.parentSpeed = Number(parentSpeed) || 0;\r\n }\r\n else if (deltaTime && parentMatrix?.length === 16)\r\n {\r\n const dx = parentMatrix[12] - this.#parentTransform[12];\r\n const dy = parentMatrix[13] - this.#parentTransform[13];\r\n const dz = parentMatrix[14] - this.#parentTransform[14];\r\n this.parentSpeed = Math.hypot(dx, dy, dz) / Number(deltaTime);\r\n }\r\n\r\n if (parentMatrix?.length === 16)\r\n {\r\n mat4.copy(this.#parentTransform, parentMatrix);\r\n }\r\n if (parentRotation?.length === 4)\r\n {\r\n quat.copy(this.parentRotation, parentRotation);\r\n }\r\n this.overallIntensity = this.CalculateIntensity(parentAcceleration);\r\n return this.overallIntensity;\r\n }\r\n\r\n /**\r\n * Recomputes the trail spline and maps its total length onto the trail\r\n * intensity, fading in above the minimum length and back out approaching the\r\n * maximum, with nothing drawn outside that band; an always-on set is pinned to\r\n * full intensity.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateTrails(deltaTime, _time = 0)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return false;\r\n }\r\n this.#CalculateSplineData(deltaTime);\r\n\r\n const length = this.trailsTotalLength;\r\n if (length > EveBoosterSet2Renderable.#trailMinLength &&\r\n length < EveBoosterSet2Renderable.#trailMinLength +\r\n EveBoosterSet2Renderable.#trailMinLengthFade)\r\n {\r\n this.trailIntensity = EveBoosterSet2Renderable.#SinSmooth(\r\n (length - EveBoosterSet2Renderable.#trailMinLength) /\r\n EveBoosterSet2Renderable.#trailMinLengthFade\r\n );\r\n }\r\n else if (length > EveBoosterSet2Renderable.#trailMaxLength -\r\n EveBoosterSet2Renderable.#trailMaxLengthFade &&\r\n length < EveBoosterSet2Renderable.#trailMaxLength)\r\n {\r\n this.trailIntensity = EveBoosterSet2Renderable.#SinSmooth(\r\n (EveBoosterSet2Renderable.#trailMaxLength - length) /\r\n EveBoosterSet2Renderable.#trailMaxLengthFade\r\n );\r\n }\r\n else if (length < EveBoosterSet2Renderable.#trailMinLength ||\r\n length > EveBoosterSet2Renderable.#trailMaxLength)\r\n {\r\n this.trailIntensity = 0;\r\n }\r\n else\r\n {\r\n this.trailIntensity = 1;\r\n }\r\n\r\n if (boosterSet.alwaysOn)\r\n {\r\n this.trailIntensity = 1;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * A freshly allocated snapshot of the trail spline: control positions carrying\r\n * their normalized segment lengths, control normals carrying their length\r\n * factors, plus total length, intensity and world bounds.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetTrailSplineData()\r\n {\r\n return {\r\n positions: this.#trailsControlPositions.map((position, index) => vec4.fromValues(\r\n position[0],\r\n position[1],\r\n position[2],\r\n this.#trailsSequenceLength[index]\r\n )),\r\n normals: this.#trailsControlNormals.map((normal, index) => vec4.fromValues(\r\n normal[0],\r\n normal[1],\r\n normal[2],\r\n this.#trailsControlNormalsFactor[index]\r\n )),\r\n totalLength: this.trailsTotalLength,\r\n intensity: this.trailIntensity,\r\n boundsMin: vec3.clone(this.trailsBoundsMin),\r\n boundsMax: vec3.clone(this.trailsBoundsMax)\r\n };\r\n }\r\n\r\n /** The overall booster intensity computed by the last Update. */\r\n @carbon.method\r\n @impl.implemented\r\n GetIntensity()\r\n {\r\n return this.overallIntensity;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::HasTransparentBatches is always false\r\n * (additive batches only, via the instanced geometry provider). */\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetSortValue is the constant one. */\r\n @carbon.method\r\n @impl.implemented\r\n GetSortValue()\r\n {\r\n return 1;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetBatches submits the instanced booster geometry (GPU-backed). */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetBatches(_accumulator, _batchType, _perObjectData, _reason)\r\n {\r\n throw new Error(\"EveBoosterSet2Renderable.GetBatches is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetPerObjectData (cpp:260-289): the\r\n * EveBoosterSetPerObjectData composite - a VertexShaderData + PixelShaderData\r\n * pair uploaded as TWO constant buffers (cpp:1325-1329). Here that is two\r\n * Allocs returned as a { vs, ps } record. Set(MATRIX) performs Carbon's\r\n * `Transpose(m_parentTransform)`; both 5-slot trail arrays are fully\r\n * written, exactly as Carbon's loop. The padding scalars are never written\r\n * (Carbon leaves them uninitialized). */\r\n @carbon.method\r\n @impl.implemented\r\n GetPerObjectData(accumulator)\r\n {\r\n const vs = accumulator.Alloc(\"EveBoosterSetVSData\");\r\n const ps = accumulator.Alloc(\"EveBoosterSetPSData\");\r\n\r\n vs.SetAndTranspose(\"shipMatrix\", this.#parentTransform);\r\n vs.Set(\"boosterIntensity\", [this.overallIntensity]);\r\n vs.Set(\"shipSpeed\", [this.parentSpeed]);\r\n vs.Set(\"maxBoosterSize\", [this.#boosterSet?.maxSize ?? 0]);\r\n\r\n ps.Set(\"boosterIntensity\", [this.overallIntensity]);\r\n ps.Set(\"trailIntensity\", [this.trailIntensity]);\r\n ps.Set(\"warpIntensity\", [this.#boosterSet?.warpIntensity ?? 0]);\r\n\r\n for (let index = 0; index < this.#trailsControlPositions.length; index++)\r\n {\r\n const position = this.#trailsControlPositions[index];\r\n const normal = this.#trailsControlNormals[index];\r\n\r\n vs.SetIndex(\"trailsControlPositions\", index, [\r\n position[0], position[1], position[2], this.#trailsSequenceLength[index]\r\n ]);\r\n vs.SetIndex(\"trailsControlNormals\", index, [\r\n normal[0], normal[1], normal[2], this.#trailsControlNormalsFactor[index]\r\n ]);\r\n }\r\n\r\n return { vs, ps };\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::UpdateVisibility (cpp:307-337). Three\r\n * independent gates, all off the SAME bounding-sphere radius:\r\n * - boosters: `2 * pixelSize(sphere)`; HIGH lod above `medium * 1.5`, drawn at\r\n * all above `low`. `boosterHighLod` picks the effect at batch time\r\n * (cpp:208 - `effectFar` when low, unless the set has none), and\r\n * `boostersVisible` also gates the glow flare (cpp:1264).\r\n * - trails: the CLOSEST spline control point to the camera, given the\r\n * booster sphere's radius, scaled `7.5x`; drawn above `low`.\r\n * - `isVisible`: frustum sphere test OR the trail bounds box - a booster whose\r\n * hull is off-screen still renders while its trail crosses the view.\r\n *\r\n * The sphere is passed as a packed vec4, which is Carbon's `Vector4*` overload\r\n * and therefore the DEPTH pixel-size formula, not the Est one.\r\n * No lodFactor is applied anywhere here; Carbon does not apply one either. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateVisibility(updateContext)\r\n {\r\n const frustum = updateContext?.GetFrustum?.();\r\n if (!frustum || !this.#boosterSet)\r\n {\r\n return false;\r\n }\r\n\r\n const boundingSphere = this.GetBoundingSphere(\r\n EveBoosterSet2Renderable.#visibilitySphere\r\n );\r\n const lowDetailThreshold = updateContext.GetLowDetailThreshold();\r\n\r\n const boosterLod = 2 * frustum.GetPixelSizeAccross(boundingSphere);\r\n this.boosterHighLod = boosterLod > updateContext.GetMediumDetailThreshold() * 1.5;\r\n this.boostersVisible = boosterLod > lowDetailThreshold;\r\n\r\n const viewPos = frustum.viewPos;\r\n let closestIndex = 0;\r\n let closestSqDistance = Infinity;\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n const position = this.#trailsControlPositions[index];\r\n const sqDistance = vec3.squaredDistance(position, viewPos);\r\n if (sqDistance < closestSqDistance)\r\n {\r\n closestSqDistance = sqDistance;\r\n closestIndex = index;\r\n }\r\n }\r\n\r\n const trailsSphere = sph3.fromPositionRadius(\r\n EveBoosterSet2Renderable.#trailsSphere,\r\n this.#trailsControlPositions[closestIndex],\r\n sph3.radius(boundingSphere)\r\n );\r\n const trailsLod = 7.5 * frustum.GetPixelSizeAccross(trailsSphere);\r\n this.trailsVisible = trailsLod > lowDetailThreshold;\r\n\r\n this.isVisible = frustum.IsSphereVisible(boundingSphere) ||\r\n frustum.IsBoxVisible(this.trailsBoundsMin, this.trailsBoundsMax);\r\n\r\n return this.isVisible;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetRenderables (cpp:349-356): submits\r\n * itself only when UpdateVisibility left it visible. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (this.isVisible)\r\n {\r\n out.push(this);\r\n }\r\n return out;\r\n }\r\n\r\n /** Protected-equivalent read of Carbon's m_parentTransform\r\n * (EveBoosterSet2.h:132) - the owning set's GetLights transforms each\r\n * booster light position by it (cpp:1305/1314). Returns the live buffer;\r\n * read-only by convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's direct member access becomes an accessor; JS has no protected fields.\")\r\n GetParentTransform()\r\n {\r\n return this.#parentTransform;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetBoundingSphere (cpp:295-303): the\r\n * authored sphere pushed back half a radius to cover the exhaust glow, its\r\n * centre transformed into world space, and its radius DOUBLED. The radius is\r\n * set outright rather than run through sph3.transformMat4, because Carbon\r\n * transforms only the centre (TransformCoord) and never scales w.\r\n *\r\n * `out` is required, as in Carbon (`Vector4&`) - this is called per frame and\r\n * must not allocate. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return sph3.empty(out);\r\n }\r\n const position = sph3.$position(out);\r\n vec3.copy(position, boosterSet.boosterBoundingSphereCenter);\r\n position[2] -= 0.5 * boosterSet.boosterBoundingSphereRadius;\r\n vec3.transformMat4(position, position, this.#parentTransform);\r\n out[3] = 2 * boosterSet.boosterBoundingSphereRadius;\r\n return out;\r\n }\r\n\r\n /**\r\n * Places the five trail control points for the frame - sampled out of the\r\n * physics offset ring at the trail time delta, or taken from the set's static\r\n * offsets rotated into parent space - then recomputes the spline metrics;\r\n * returns false for a non-positive delta.\r\n */\r\n #CalculateSplineData(deltaTime)\r\n {\r\n const elapsed = Number(deltaTime);\r\n if (!(elapsed > 0))\r\n {\r\n return false;\r\n }\r\n\r\n const boosterSet = this.#boosterSet;\r\n const parentPosition = vec3.fromValues(\r\n this.#parentTransform[12],\r\n this.#parentTransform[13],\r\n this.#parentTransform[14]\r\n );\r\n\r\n if (boosterSet.physicsUpdate)\r\n {\r\n this.#UpdatePhysicsTrailOffsets(elapsed);\r\n const stride = Math.trunc(\r\n this.trailsTimeDelta / EveBoosterSet2Renderable.#positionOffsetDelta\r\n );\r\n let ringIndex = this.#trailsOffsetLatest;\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n vec3.add(\r\n this.#trailsControlPositions[index],\r\n parentPosition,\r\n this.#trailsOffsets[ringIndex]\r\n );\r\n ringIndex = EveBoosterSet2Renderable.#WrapOffsetIndex(ringIndex - stride);\r\n }\r\n }\r\n else\r\n {\r\n const offsets = EveBoosterSet2Renderable.#GetStaticOffsets(boosterSet);\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n EveBoosterSet2Renderable.#TransformNormal(\r\n this.#trailsControlPositions[index],\r\n offsets[index],\r\n this.#parentTransform\r\n );\r\n vec3.add(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index],\r\n parentPosition\r\n );\r\n }\r\n }\r\n\r\n this.#UpdateSplineMetrics();\r\n return true;\r\n }\r\n\r\n /**\r\n * Advances the 300-entry trail offset ring by the parent's movement in fixed\r\n * ~16.7 ms steps, taking a separate bulk path once twenty or more steps are\r\n * owed in a single frame so a stalled or teleported ship does not walk the\r\n * ring one entry at a time.\r\n */\r\n #UpdatePhysicsTrailOffsets(deltaTime)\r\n {\r\n const movement = vec3.transformQuat(\r\n vec3.create(),\r\n EveBoosterSet2Renderable.#zAxis,\r\n this.parentRotation\r\n );\r\n vec3.scale(movement, movement, deltaTime * this.parentSpeed);\r\n this.#trailsTimeToNext += deltaTime;\r\n vec3.subtract(this.#trailsOffsetAccu, this.#trailsOffsetAccu, movement);\r\n\r\n const iterationCount = Math.trunc(\r\n this.#trailsTimeToNext / EveBoosterSet2Renderable.#positionOffsetDelta\r\n );\r\n if (!iterationCount)\r\n {\r\n return;\r\n }\r\n\r\n const fraction = EveBoosterSet2Renderable.#positionOffsetDelta /\r\n this.#trailsTimeToNext;\r\n const cumulativeOffset = vec3.scale(\r\n vec3.create(),\r\n this.#trailsOffsetAccu,\r\n fraction * iterationCount\r\n );\r\n\r\n if (iterationCount < 20)\r\n {\r\n if (vec3.squaredLength(this.#trailsOffsetAccu) > 0.00001)\r\n {\r\n for (const offset of this.#trailsOffsets)\r\n {\r\n vec3.add(offset, offset, cumulativeOffset);\r\n }\r\n }\r\n for (let index = 0; index < iterationCount; index++)\r\n {\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + 1\r\n );\r\n vec3.scale(\r\n this.#trailsOffsets[this.#trailsOffsetLatest],\r\n this.#trailsOffsetAccu,\r\n (iterationCount - 1 - index) * fraction\r\n );\r\n }\r\n }\r\n else\r\n {\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + 1\r\n );\r\n const partialOffset = vec3.scale(\r\n vec3.create(),\r\n this.#trailsOffsetAccu,\r\n fraction\r\n );\r\n for (let index = 0; index < EveBoosterSet2Renderable.#positionOffsetCount; index++)\r\n {\r\n const relativeIndex = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n index - this.#trailsOffsetLatest\r\n );\r\n if (relativeIndex < iterationCount)\r\n {\r\n vec3.scale(\r\n this.#trailsOffsets[index],\r\n partialOffset,\r\n iterationCount - 1 - relativeIndex\r\n );\r\n }\r\n else\r\n {\r\n vec3.add(this.#trailsOffsets[index], this.#trailsOffsets[index], cumulativeOffset);\r\n }\r\n }\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + iterationCount - 1\r\n );\r\n }\r\n\r\n vec3.subtract(this.#trailsOffsetAccu, this.#trailsOffsetAccu, cumulativeOffset);\r\n this.#trailsTimeToNext -=\r\n EveBoosterSet2Renderable.#positionOffsetDelta * iterationCount;\r\n }\r\n\r\n /**\r\n * Recomputes everything derived from the control points: total trail length,\r\n * world trail bounds padded by the booster sphere radius, the per-point\r\n * tangent normals with their length factors, and the normalized per-segment\r\n * lengths.\r\n */\r\n #UpdateSplineMetrics()\r\n {\r\n this.trailsTotalLength = 0;\r\n for (let index = 1; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n this.trailsTotalLength += vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n }\r\n\r\n vec3.set(this.trailsBoundsMin, Infinity, Infinity, Infinity);\r\n vec3.set(this.trailsBoundsMax, -Infinity, -Infinity, -Infinity);\r\n const radius = sph3.radius(\r\n this.GetBoundingSphere(EveBoosterSet2Renderable.#boundsSphere)\r\n );\r\n for (const position of this.#trailsControlPositions)\r\n {\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n this.trailsBoundsMin[axis] = Math.min(\r\n this.trailsBoundsMin[axis],\r\n position[axis] - radius\r\n );\r\n this.trailsBoundsMax[axis] = Math.max(\r\n this.trailsBoundsMax[axis],\r\n position[axis] + radius\r\n );\r\n }\r\n }\r\n\r\n const firstLength = Math.min(\r\n this.#boosterSet.trailsSmoothing,\r\n vec3.distance(this.#trailsControlPositions[1], this.#trailsControlPositions[0])\r\n );\r\n EveBoosterSet2Renderable.#TransformNormal(\r\n this.#trailsControlNormals[0],\r\n [0, 0, -firstLength],\r\n this.#parentTransform\r\n );\r\n\r\n const lastIndex = EveBoosterSet2Renderable.#controlPointCount - 1;\r\n vec3.subtract(\r\n this.#trailsControlNormals[lastIndex],\r\n this.#trailsControlPositions[lastIndex],\r\n this.#trailsControlPositions[lastIndex - 1]\r\n );\r\n vec3.scale(\r\n this.#trailsControlNormals[lastIndex],\r\n this.#trailsControlNormals[lastIndex],\r\n 0.5\r\n );\r\n\r\n for (let index = 1; index < lastIndex; index++)\r\n {\r\n const normal = vec3.subtract(\r\n this.#trailsControlNormals[index],\r\n this.#trailsControlPositions[index + 1],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n const nextLength = vec3.distance(\r\n this.#trailsControlPositions[index + 1],\r\n this.#trailsControlPositions[index]\r\n );\r\n const previousLength = vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n if (vec3.squaredLength(normal))\r\n {\r\n vec3.normalize(normal, normal);\r\n }\r\n vec3.scale(normal, normal, nextLength);\r\n this.#trailsControlNormalsFactor[index] = nextLength\r\n ? previousLength / nextLength\r\n : 0;\r\n }\r\n\r\n this.#trailsSequenceLength[0] = 0;\r\n for (let index = 1; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n const length = vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n this.#trailsSequenceLength[index] = this.trailsTotalLength\r\n ? length / this.trailsTotalLength\r\n : 0;\r\n }\r\n }\r\n\r\n /**\r\n * The booster set's five authored static trail offsets gathered into an array\r\n * in control-point order.\r\n */\r\n static #GetStaticOffsets(boosterSet)\r\n {\r\n return [\r\n boosterSet.trailsStaticOffsets0,\r\n boosterSet.trailsStaticOffsets1,\r\n boosterSet.trailsStaticOffsets2,\r\n boosterSet.trailsStaticOffsets3,\r\n boosterSet.trailsStaticOffsets4\r\n ];\r\n }\r\n\r\n /**\r\n * Maps 0..1 through a sine ease so a trail length fade starts and ends flat\r\n * instead of stepping.\r\n */\r\n static #SinSmooth(value)\r\n {\r\n return Math.sin(value * Math.PI - Math.PI / 2) / 2 + 0.5;\r\n }\r\n\r\n /**\r\n * Applies only a transform's upper 3x3 rotation and scale to a vector, leaving\r\n * its translation out, so a direction stays a direction.\r\n */\r\n static #TransformNormal(out, value, transform)\r\n {\r\n const x = value[0];\r\n const y = value[1];\r\n const z = value[2];\r\n out[0] = transform[0] * x + transform[4] * y + transform[8] * z;\r\n out[1] = transform[1] * x + transform[5] * y + transform[9] * z;\r\n out[2] = transform[2] * x + transform[6] * y + transform[10] * z;\r\n return out;\r\n }\r\n\r\n /**\r\n * Wraps an index into the 300-entry trail offset ring, handling negative\r\n * values so the ring can be walked backwards.\r\n */\r\n static #WrapOffsetIndex(index)\r\n {\r\n const count = EveBoosterSet2Renderable.#positionOffsetCount;\r\n return ((index % count) + count) % count;\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #zAxis = Object.freeze([0, 0, 1]);\r\n\r\n static #controlPointCount = 5;\r\n\r\n static #positionOffsetCount = 300;\r\n\r\n static #positionOffsetDelta = 0.0167;\r\n\r\n static #trailMinLength = 200;\r\n\r\n static #trailMinLengthFade = 1000;\r\n\r\n static #trailMaxLength = 50000;\r\n\r\n static #trailMaxLengthFade = 20000;\r\n\r\n static #floatMax = 3.4028234663852886e38;\r\n\r\n /** Per-frame visibility scratch - UpdateVisibility must not allocate. */\r\n static #visibilitySphere = sph3.create();\r\n\r\n static #trailsSphere = sph3.create();\r\n\r\n static #boundsSphere = sph3.create();\r\n\r\n}\r\n"],"names":["_EveBoosterSet2Render","_identity","EveBoosterSet2Renderable","_withITr2Renderable","withITr2Renderable","CjsModel","e","_init_trailIntensity","_init_extra_trailIntensity","_init_trailsTotalLength","_init_extra_trailsTotalLength","_init_isVisible","_init_extra_isVisible","_init_trailsVisible","_init_extra_trailsVisible","_init_boostersVisible","_init_extra_boostersVisible","_init_trailsTimeDelta","_init_extra_trailsTimeDelta","_init_boosterHighLod","_init_extra_boosterHighLod","_init_trailsBoundsMax","_init_extra_trailsBoundsMax","_init_trailsBoundsMin","_init_extra_trailsBoundsMin","_init_overallIntensity","_init_extra_overallIntensity","_init_parentRotation","_init_extra_parentRotation","_init_parentSpeed","_init_extra_parentSpeed","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","read","float32","boolean","persist","vec3","readwrite","quat","carbon","method","impl","adapted","implemented","notImplemented","reason","trailIntensity","trailsTotalLength","isVisible","trailsVisible","boostersVisible","trailsTimeDelta","boosterHighLod","trailsBoundsMax","fromValues","trailsBoundsMin","overallIntensity","parentRotation","create","parentSpeed","mat4","Array","from","length","Float32Array","fill","SetBoosterSet","boosterSet","CalculateIntensity","acceleration","alwaysOn","alwaysOnIntensity","backward","transformQuat","speedRatio","maxVel","accFactor","dot","Math","max","min","value","Update","deltaTime","_time","parentMatrix","parentAcceleration","destinyUpdate","Number","dx","dy","dz","hypot","copy","UpdateTrails","GetTrailSplineData","positions","map","position","index","vec4","normals","normal","totalLength","intensity","boundsMin","clone","boundsMax","GetIntensity","HasTransparentBatches","GetSortValue","GetBatches","_accumulator","_batchType","_perObjectData","_reason","Error","GetPerObjectData","accumulator","vs","Alloc","ps","SetAndTranspose","Set","maxSize","warpIntensity","SetIndex","UpdateVisibility","updateContext","frustum","GetFrustum","boundingSphere","GetBoundingSphere","lowDetailThreshold","GetLowDetailThreshold","boosterLod","GetPixelSizeAccross","GetMediumDetailThreshold","viewPos","closestIndex","closestSqDistance","Infinity","sqDistance","squaredDistance","trailsSphere","sph3","fromPositionRadius","radius","trailsLod","IsSphereVisible","IsBoxVisible","GetRenderables","out","push","GetParentTransform","empty","$position","boosterBoundingSphereCenter","boosterBoundingSphereRadius","transformMat4","#CalculateSplineData","elapsed","parentPosition","physicsUpdate","stride","trunc","ringIndex","add","offsets","#UpdatePhysicsTrailOffsets","movement","scale","subtract","iterationCount","fraction","cumulativeOffset","squaredLength","offset","partialOffset","relativeIndex","#UpdateSplineMetrics","distance","set","axis","firstLength","trailsSmoothing","lastIndex","nextLength","previousLength","normalize","#GetStaticOffsets","trailsStaticOffsets0","trailsStaticOffsets1","trailsStaticOffsets2","trailsStaticOffsets3","trailsStaticOffsets4","#SinSmooth","sin","PI","#TransformNormal","transform","x","y","z","#WrapOffsetIndex","count","Object","freeze","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveBoosterSet2Renderable.js","sources":["../../../../../../src/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveBoosterSet2.h\r\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveBoosterSet2.cpp\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { sph3 } from \"#math/sph3\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { CjsModel } from \"#model\";\r\nimport { carbon, impl, io, type } from \"#schema\";\nimport { withITr2Renderable } from \"../../../core/ITr2Renderable.js\";\n\r\n\r\n/**\r\n * One ship's instance of a booster set: it carries the parent transform, speed\r\n * and rotation, derives the booster and trail intensities, and maintains the\r\n * five-point trail spline and its LOD flags.\r\n */\r\n@type.define({ className: \"EveBoosterSet2Renderable\", family: \"eve/attachment/boosters\" })\r\nexport class EveBoosterSet2Renderable extends withITr2Renderable(CjsModel)\n{\r\n\r\n /** m_trailIntensity (float) [READ] */\r\n @io.read\r\n @type.float32\r\n trailIntensity = 0;\r\n\r\n /** m_trailsTotalLength (float) [READ] */\r\n @io.read\r\n @type.float32\r\n trailsTotalLength = 0;\r\n\r\n /** m_isVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n isVisible = false;\r\n\r\n /** m_trailsVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n trailsVisible = false;\r\n\r\n /** m_boostersVisible (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n boostersVisible = false;\r\n\r\n /** m_trailsTimeDelta (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n trailsTimeDelta = 1;\r\n\r\n /** m_boosterHighLod (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n boosterHighLod = false;\r\n\r\n /** m_trailsBoundsMax (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n trailsBoundsMax = vec3.fromValues(\r\n -EveBoosterSet2Renderable.#floatMax,\r\n -EveBoosterSet2Renderable.#floatMax,\r\n -EveBoosterSet2Renderable.#floatMax\r\n );\r\n\r\n /** m_trailsBoundsMin (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n trailsBoundsMin = vec3.fromValues(\r\n EveBoosterSet2Renderable.#floatMax,\r\n EveBoosterSet2Renderable.#floatMax,\r\n EveBoosterSet2Renderable.#floatMax\r\n );\r\n\r\n /** m_overallIntensity (float) [READ] */\r\n @io.read\r\n @type.float32\r\n overallIntensity = 0;\r\n\r\n /** m_parentRotation (Quaternion) [READWRITE] */\r\n @io.readwrite\r\n @type.quat\r\n parentRotation = quat.create();\r\n\r\n /** m_parentSpeed (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n parentSpeed = 0;\r\n\r\n #boosterSet = null;\r\n\r\n #lastAccFactor = 0;\r\n\r\n #lastValue = 0;\r\n\r\n #parentTransform = mat4.create();\r\n\r\n #trailsControlPositions = Array.from(\r\n { length: EveBoosterSet2Renderable.#controlPointCount },\r\n () => vec3.create()\r\n );\r\n\r\n #trailsControlNormals = Array.from(\r\n { length: EveBoosterSet2Renderable.#controlPointCount },\r\n () => vec3.fromValues(0, 0, -1)\r\n );\r\n\r\n #trailsControlNormalsFactor = new Float32Array(\r\n EveBoosterSet2Renderable.#controlPointCount\r\n ).fill(1);\r\n\r\n #trailsSequenceLength = new Float32Array(\r\n EveBoosterSet2Renderable.#controlPointCount\r\n );\r\n\r\n #trailsOffsets = Array.from(\r\n { length: EveBoosterSet2Renderable.#positionOffsetCount },\r\n () => vec3.create()\r\n );\r\n\r\n #trailsOffsetLatest = 0;\r\n\r\n #trailsOffsetAccu = vec3.create();\r\n\r\n #trailsTimeToNext = 0;\r\n\r\n /**\r\n * Binds this instance to the booster set whose authored placements, colours\r\n * and light data it draws.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetBoosterSet(boosterSet)\r\n {\r\n this.#boosterSet = boosterSet ?? null;\r\n }\r\n\r\n /**\r\n * Derives the booster intensity from the parent's speed ratio and the\r\n * acceleration along its backward axis, each low-pass filtered against the\r\n * previous frame and the result clamped to 2; an always-on set returns its\r\n * authored intensity instead.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CalculateIntensity(acceleration)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return 0;\r\n }\r\n if (boosterSet.alwaysOn)\r\n {\r\n return boosterSet.alwaysOnIntensity;\r\n }\r\n\r\n const backward = vec3.transformQuat(vec3.create(), EveBoosterSet2Renderable.#zAxis, this.parentRotation);\r\n const speedRatio = boosterSet.maxVel ? this.parentSpeed / boosterSet.maxVel : 0;\r\n let accFactor = vec3.dot(acceleration ?? EveBoosterSet2Renderable.#zero, backward);\r\n accFactor *= Math.max(0.3, speedRatio);\r\n accFactor = Math.min(1, Math.max(0, accFactor));\r\n accFactor = accFactor * 0.2 + this.#lastAccFactor * 0.8;\r\n this.#lastAccFactor = accFactor;\r\n\r\n let value = this.#lastValue * 0.8 + (0.8 * speedRatio + 0.2 * accFactor) * 0.2;\r\n value = Math.min(value, 2);\r\n this.#lastValue = value;\r\n return value;\r\n }\r\n\r\n /**\r\n * Takes the parent transform, speed and rotation for the frame - deriving\r\n * speed from the transform delta when the set is not destiny-driven - and\r\n * recomputes the overall intensity, which it returns.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Update(deltaTime, _time, parentMatrix, parentSpeed, parentAcceleration, parentRotation)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (boosterSet?.destinyUpdate)\r\n {\r\n this.parentSpeed = Number(parentSpeed) || 0;\r\n }\r\n else if (deltaTime && parentMatrix?.length === 16)\r\n {\r\n const dx = parentMatrix[12] - this.#parentTransform[12];\r\n const dy = parentMatrix[13] - this.#parentTransform[13];\r\n const dz = parentMatrix[14] - this.#parentTransform[14];\r\n this.parentSpeed = Math.hypot(dx, dy, dz) / Number(deltaTime);\r\n }\r\n\r\n if (parentMatrix?.length === 16)\r\n {\r\n mat4.copy(this.#parentTransform, parentMatrix);\r\n }\r\n if (parentRotation?.length === 4)\r\n {\r\n quat.copy(this.parentRotation, parentRotation);\r\n }\r\n this.overallIntensity = this.CalculateIntensity(parentAcceleration);\r\n return this.overallIntensity;\r\n }\r\n\r\n /**\r\n * Recomputes the trail spline and maps its total length onto the trail\r\n * intensity, fading in above the minimum length and back out approaching the\r\n * maximum, with nothing drawn outside that band; an always-on set is pinned to\r\n * full intensity.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateTrails(deltaTime, _time = 0)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return false;\r\n }\r\n this.#CalculateSplineData(deltaTime);\r\n\r\n const length = this.trailsTotalLength;\r\n if (length > EveBoosterSet2Renderable.#trailMinLength &&\r\n length < EveBoosterSet2Renderable.#trailMinLength +\r\n EveBoosterSet2Renderable.#trailMinLengthFade)\r\n {\r\n this.trailIntensity = EveBoosterSet2Renderable.#SinSmooth(\r\n (length - EveBoosterSet2Renderable.#trailMinLength) /\r\n EveBoosterSet2Renderable.#trailMinLengthFade\r\n );\r\n }\r\n else if (length > EveBoosterSet2Renderable.#trailMaxLength -\r\n EveBoosterSet2Renderable.#trailMaxLengthFade &&\r\n length < EveBoosterSet2Renderable.#trailMaxLength)\r\n {\r\n this.trailIntensity = EveBoosterSet2Renderable.#SinSmooth(\r\n (EveBoosterSet2Renderable.#trailMaxLength - length) /\r\n EveBoosterSet2Renderable.#trailMaxLengthFade\r\n );\r\n }\r\n else if (length < EveBoosterSet2Renderable.#trailMinLength ||\r\n length > EveBoosterSet2Renderable.#trailMaxLength)\r\n {\r\n this.trailIntensity = 0;\r\n }\r\n else\r\n {\r\n this.trailIntensity = 1;\r\n }\r\n\r\n if (boosterSet.alwaysOn)\r\n {\r\n this.trailIntensity = 1;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * A freshly allocated snapshot of the trail spline: control positions carrying\r\n * their normalized segment lengths, control normals carrying their length\r\n * factors, plus total length, intensity and world bounds.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetTrailSplineData()\r\n {\r\n return {\r\n positions: this.#trailsControlPositions.map((position, index) => vec4.fromValues(\r\n position[0],\r\n position[1],\r\n position[2],\r\n this.#trailsSequenceLength[index]\r\n )),\r\n normals: this.#trailsControlNormals.map((normal, index) => vec4.fromValues(\r\n normal[0],\r\n normal[1],\r\n normal[2],\r\n this.#trailsControlNormalsFactor[index]\r\n )),\r\n totalLength: this.trailsTotalLength,\r\n intensity: this.trailIntensity,\r\n boundsMin: vec3.clone(this.trailsBoundsMin),\r\n boundsMax: vec3.clone(this.trailsBoundsMax)\r\n };\r\n }\r\n\r\n /** The overall booster intensity computed by the last Update. */\r\n @carbon.method\r\n @impl.implemented\r\n GetIntensity()\r\n {\r\n return this.overallIntensity;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::HasTransparentBatches is always false\r\n * (additive batches only, via the instanced geometry provider). */\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetSortValue is the constant one. */\r\n @carbon.method\r\n @impl.implemented\r\n GetSortValue()\r\n {\r\n return 1;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetBatches submits the instanced booster geometry (GPU-backed). */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetBatches(_accumulator, _batchType, _perObjectData, _reason)\r\n {\r\n throw new Error(\"EveBoosterSet2Renderable.GetBatches is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetPerObjectData (cpp:260-289): the\r\n * EveBoosterSetPerObjectData composite - a VertexShaderData + PixelShaderData\r\n * pair uploaded as TWO constant buffers (cpp:1325-1329). Here that is two\r\n * Allocs returned as a { vs, ps } record. Set(MATRIX) performs Carbon's\r\n * `Transpose(m_parentTransform)`; both 5-slot trail arrays are fully\r\n * written, exactly as Carbon's loop. The padding scalars are never written\r\n * (Carbon leaves them uninitialized). */\r\n @carbon.method\r\n @impl.implemented\r\n GetPerObjectData(accumulator)\r\n {\r\n const vs = accumulator.Alloc(\"EveBoosterSetVSData\");\r\n const ps = accumulator.Alloc(\"EveBoosterSetPSData\");\r\n\r\n vs.SetAndTranspose(\"shipMatrix\", this.#parentTransform);\r\n vs.Set(\"boosterIntensity\", [this.overallIntensity]);\r\n vs.Set(\"shipSpeed\", [this.parentSpeed]);\r\n vs.Set(\"maxBoosterSize\", [this.#boosterSet?.maxSize ?? 0]);\r\n\r\n ps.Set(\"boosterIntensity\", [this.overallIntensity]);\r\n ps.Set(\"trailIntensity\", [this.trailIntensity]);\r\n ps.Set(\"warpIntensity\", [this.#boosterSet?.warpIntensity ?? 0]);\r\n\r\n for (let index = 0; index < this.#trailsControlPositions.length; index++)\r\n {\r\n const position = this.#trailsControlPositions[index];\r\n const normal = this.#trailsControlNormals[index];\r\n\r\n vs.SetIndex(\"trailsControlPositions\", index, [\r\n position[0], position[1], position[2], this.#trailsSequenceLength[index]\r\n ]);\r\n vs.SetIndex(\"trailsControlNormals\", index, [\r\n normal[0], normal[1], normal[2], this.#trailsControlNormalsFactor[index]\r\n ]);\r\n }\r\n\r\n return { vs, ps };\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::UpdateVisibility (cpp:307-337). Three\r\n * independent gates, all off the SAME bounding-sphere radius:\r\n * - boosters: `2 * pixelSize(sphere)`; HIGH lod above `medium * 1.5`, drawn at\r\n * all above `low`. `boosterHighLod` picks the effect at batch time\r\n * (cpp:208 - `effectFar` when low, unless the set has none), and\r\n * `boostersVisible` also gates the glow flare (cpp:1264).\r\n * - trails: the CLOSEST spline control point to the camera, given the\r\n * booster sphere's radius, scaled `7.5x`; drawn above `low`.\r\n * - `isVisible`: frustum sphere test OR the trail bounds box - a booster whose\r\n * hull is off-screen still renders while its trail crosses the view.\r\n *\r\n * The sphere is passed as a packed vec4, which is Carbon's `Vector4*` overload\r\n * and therefore the DEPTH pixel-size formula, not the Est one.\r\n * No lodFactor is applied anywhere here; Carbon does not apply one either. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateVisibility(updateContext)\r\n {\r\n const frustum = updateContext?.GetFrustum();\r\n if (!frustum || !this.#boosterSet)\r\n {\r\n return false;\r\n }\r\n\r\n const boundingSphere = this.GetBoundingSphere(\r\n EveBoosterSet2Renderable.#visibilitySphere\r\n );\r\n const lowDetailThreshold = updateContext.GetLowDetailThreshold();\r\n\r\n const boosterLod = 2 * frustum.GetPixelSizeAccross(boundingSphere);\r\n this.boosterHighLod = boosterLod > updateContext.GetMediumDetailThreshold() * 1.5;\r\n this.boostersVisible = boosterLod > lowDetailThreshold;\r\n\r\n const viewPos = frustum.viewPos;\r\n let closestIndex = 0;\r\n let closestSqDistance = Infinity;\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n const position = this.#trailsControlPositions[index];\r\n const sqDistance = vec3.squaredDistance(position, viewPos);\r\n if (sqDistance < closestSqDistance)\r\n {\r\n closestSqDistance = sqDistance;\r\n closestIndex = index;\r\n }\r\n }\r\n\r\n const trailsSphere = sph3.fromPositionRadius(\r\n EveBoosterSet2Renderable.#trailsSphere,\r\n this.#trailsControlPositions[closestIndex],\r\n sph3.radius(boundingSphere)\r\n );\r\n const trailsLod = 7.5 * frustum.GetPixelSizeAccross(trailsSphere);\r\n this.trailsVisible = trailsLod > lowDetailThreshold;\r\n\r\n this.isVisible = frustum.IsSphereVisible(boundingSphere) ||\r\n frustum.IsBoxVisible(this.trailsBoundsMin, this.trailsBoundsMax);\r\n\r\n return this.isVisible;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetRenderables (cpp:349-356): submits\r\n * itself only when UpdateVisibility left it visible. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (this.isVisible)\r\n {\r\n out.push(this);\r\n }\r\n return out;\r\n }\r\n\r\n /** Protected-equivalent read of Carbon's m_parentTransform\r\n * (EveBoosterSet2.h:132) - the owning set's GetLights transforms each\r\n * booster light position by it (cpp:1305/1314). Returns the live buffer;\r\n * read-only by convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's direct member access becomes an accessor; JS has no protected fields.\")\r\n GetParentTransform()\r\n {\r\n return this.#parentTransform;\r\n }\r\n\r\n /** Carbon EveBoosterSet2Renderable::GetBoundingSphere (cpp:295-303): the\r\n * authored sphere pushed back half a radius to cover the exhaust glow, its\r\n * centre transformed into world space, and its radius DOUBLED. The radius is\r\n * set outright rather than run through sph3.transformMat4, because Carbon\r\n * transforms only the centre (TransformCoord) and never scales w.\r\n *\r\n * `out` is required, as in Carbon (`Vector4&`) - this is called per frame and\r\n * must not allocate. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out)\r\n {\r\n const boosterSet = this.#boosterSet;\r\n if (!boosterSet)\r\n {\r\n return sph3.empty(out);\r\n }\r\n const position = sph3.$position(out);\r\n vec3.copy(position, boosterSet.boosterBoundingSphereCenter);\r\n position[2] -= 0.5 * boosterSet.boosterBoundingSphereRadius;\r\n vec3.transformMat4(position, position, this.#parentTransform);\r\n out[3] = 2 * boosterSet.boosterBoundingSphereRadius;\r\n return out;\r\n }\r\n\r\n /**\r\n * Places the five trail control points for the frame - sampled out of the\r\n * physics offset ring at the trail time delta, or taken from the set's static\r\n * offsets rotated into parent space - then recomputes the spline metrics;\r\n * returns false for a non-positive delta.\r\n */\r\n #CalculateSplineData(deltaTime)\r\n {\r\n const elapsed = Number(deltaTime);\r\n if (!(elapsed > 0))\r\n {\r\n return false;\r\n }\r\n\r\n const boosterSet = this.#boosterSet;\r\n const parentPosition = vec3.fromValues(\r\n this.#parentTransform[12],\r\n this.#parentTransform[13],\r\n this.#parentTransform[14]\r\n );\r\n\r\n if (boosterSet.physicsUpdate)\r\n {\r\n this.#UpdatePhysicsTrailOffsets(elapsed);\r\n const stride = Math.trunc(\r\n this.trailsTimeDelta / EveBoosterSet2Renderable.#positionOffsetDelta\r\n );\r\n let ringIndex = this.#trailsOffsetLatest;\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n vec3.add(\r\n this.#trailsControlPositions[index],\r\n parentPosition,\r\n this.#trailsOffsets[ringIndex]\r\n );\r\n ringIndex = EveBoosterSet2Renderable.#WrapOffsetIndex(ringIndex - stride);\r\n }\r\n }\r\n else\r\n {\r\n const offsets = EveBoosterSet2Renderable.#GetStaticOffsets(boosterSet);\r\n for (let index = 0; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n EveBoosterSet2Renderable.#TransformNormal(\r\n this.#trailsControlPositions[index],\r\n offsets[index],\r\n this.#parentTransform\r\n );\r\n vec3.add(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index],\r\n parentPosition\r\n );\r\n }\r\n }\r\n\r\n this.#UpdateSplineMetrics();\r\n return true;\r\n }\r\n\r\n /**\r\n * Advances the 300-entry trail offset ring by the parent's movement in fixed\r\n * ~16.7 ms steps, taking a separate bulk path once twenty or more steps are\r\n * owed in a single frame so a stalled or teleported ship does not walk the\r\n * ring one entry at a time.\r\n */\r\n #UpdatePhysicsTrailOffsets(deltaTime)\r\n {\r\n const movement = vec3.transformQuat(\r\n vec3.create(),\r\n EveBoosterSet2Renderable.#zAxis,\r\n this.parentRotation\r\n );\r\n vec3.scale(movement, movement, deltaTime * this.parentSpeed);\r\n this.#trailsTimeToNext += deltaTime;\r\n vec3.subtract(this.#trailsOffsetAccu, this.#trailsOffsetAccu, movement);\r\n\r\n const iterationCount = Math.trunc(\r\n this.#trailsTimeToNext / EveBoosterSet2Renderable.#positionOffsetDelta\r\n );\r\n if (!iterationCount)\r\n {\r\n return;\r\n }\r\n\r\n const fraction = EveBoosterSet2Renderable.#positionOffsetDelta /\r\n this.#trailsTimeToNext;\r\n const cumulativeOffset = vec3.scale(\r\n vec3.create(),\r\n this.#trailsOffsetAccu,\r\n fraction * iterationCount\r\n );\r\n\r\n if (iterationCount < 20)\r\n {\r\n if (vec3.squaredLength(this.#trailsOffsetAccu) > 0.00001)\r\n {\r\n for (const offset of this.#trailsOffsets)\r\n {\r\n vec3.add(offset, offset, cumulativeOffset);\r\n }\r\n }\r\n for (let index = 0; index < iterationCount; index++)\r\n {\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + 1\r\n );\r\n vec3.scale(\r\n this.#trailsOffsets[this.#trailsOffsetLatest],\r\n this.#trailsOffsetAccu,\r\n (iterationCount - 1 - index) * fraction\r\n );\r\n }\r\n }\r\n else\r\n {\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + 1\r\n );\r\n const partialOffset = vec3.scale(\r\n vec3.create(),\r\n this.#trailsOffsetAccu,\r\n fraction\r\n );\r\n for (let index = 0; index < EveBoosterSet2Renderable.#positionOffsetCount; index++)\r\n {\r\n const relativeIndex = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n index - this.#trailsOffsetLatest\r\n );\r\n if (relativeIndex < iterationCount)\r\n {\r\n vec3.scale(\r\n this.#trailsOffsets[index],\r\n partialOffset,\r\n iterationCount - 1 - relativeIndex\r\n );\r\n }\r\n else\r\n {\r\n vec3.add(this.#trailsOffsets[index], this.#trailsOffsets[index], cumulativeOffset);\r\n }\r\n }\r\n this.#trailsOffsetLatest = EveBoosterSet2Renderable.#WrapOffsetIndex(\r\n this.#trailsOffsetLatest + iterationCount - 1\r\n );\r\n }\r\n\r\n vec3.subtract(this.#trailsOffsetAccu, this.#trailsOffsetAccu, cumulativeOffset);\r\n this.#trailsTimeToNext -=\r\n EveBoosterSet2Renderable.#positionOffsetDelta * iterationCount;\r\n }\r\n\r\n /**\r\n * Recomputes everything derived from the control points: total trail length,\r\n * world trail bounds padded by the booster sphere radius, the per-point\r\n * tangent normals with their length factors, and the normalized per-segment\r\n * lengths.\r\n */\r\n #UpdateSplineMetrics()\r\n {\r\n this.trailsTotalLength = 0;\r\n for (let index = 1; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n this.trailsTotalLength += vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n }\r\n\r\n vec3.set(this.trailsBoundsMin, Infinity, Infinity, Infinity);\r\n vec3.set(this.trailsBoundsMax, -Infinity, -Infinity, -Infinity);\r\n const radius = sph3.radius(\r\n this.GetBoundingSphere(EveBoosterSet2Renderable.#boundsSphere)\r\n );\r\n for (const position of this.#trailsControlPositions)\r\n {\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n this.trailsBoundsMin[axis] = Math.min(\r\n this.trailsBoundsMin[axis],\r\n position[axis] - radius\r\n );\r\n this.trailsBoundsMax[axis] = Math.max(\r\n this.trailsBoundsMax[axis],\r\n position[axis] + radius\r\n );\r\n }\r\n }\r\n\r\n const firstLength = Math.min(\r\n this.#boosterSet.trailsSmoothing,\r\n vec3.distance(this.#trailsControlPositions[1], this.#trailsControlPositions[0])\r\n );\r\n EveBoosterSet2Renderable.#TransformNormal(\r\n this.#trailsControlNormals[0],\r\n [0, 0, -firstLength],\r\n this.#parentTransform\r\n );\r\n\r\n const lastIndex = EveBoosterSet2Renderable.#controlPointCount - 1;\r\n vec3.subtract(\r\n this.#trailsControlNormals[lastIndex],\r\n this.#trailsControlPositions[lastIndex],\r\n this.#trailsControlPositions[lastIndex - 1]\r\n );\r\n vec3.scale(\r\n this.#trailsControlNormals[lastIndex],\r\n this.#trailsControlNormals[lastIndex],\r\n 0.5\r\n );\r\n\r\n for (let index = 1; index < lastIndex; index++)\r\n {\r\n const normal = vec3.subtract(\r\n this.#trailsControlNormals[index],\r\n this.#trailsControlPositions[index + 1],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n const nextLength = vec3.distance(\r\n this.#trailsControlPositions[index + 1],\r\n this.#trailsControlPositions[index]\r\n );\r\n const previousLength = vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n if (vec3.squaredLength(normal))\r\n {\r\n vec3.normalize(normal, normal);\r\n }\r\n vec3.scale(normal, normal, nextLength);\r\n this.#trailsControlNormalsFactor[index] = nextLength\r\n ? previousLength / nextLength\r\n : 0;\r\n }\r\n\r\n this.#trailsSequenceLength[0] = 0;\r\n for (let index = 1; index < EveBoosterSet2Renderable.#controlPointCount; index++)\r\n {\r\n const length = vec3.distance(\r\n this.#trailsControlPositions[index],\r\n this.#trailsControlPositions[index - 1]\r\n );\r\n this.#trailsSequenceLength[index] = this.trailsTotalLength\r\n ? length / this.trailsTotalLength\r\n : 0;\r\n }\r\n }\r\n\r\n /**\r\n * The booster set's five authored static trail offsets gathered into an array\r\n * in control-point order.\r\n */\r\n static #GetStaticOffsets(boosterSet)\r\n {\r\n return [\r\n boosterSet.trailsStaticOffsets0,\r\n boosterSet.trailsStaticOffsets1,\r\n boosterSet.trailsStaticOffsets2,\r\n boosterSet.trailsStaticOffsets3,\r\n boosterSet.trailsStaticOffsets4\r\n ];\r\n }\r\n\r\n /**\r\n * Maps 0..1 through a sine ease so a trail length fade starts and ends flat\r\n * instead of stepping.\r\n */\r\n static #SinSmooth(value)\r\n {\r\n return Math.sin(value * Math.PI - Math.PI / 2) / 2 + 0.5;\r\n }\r\n\r\n /**\r\n * Applies only a transform's upper 3x3 rotation and scale to a vector, leaving\r\n * its translation out, so a direction stays a direction.\r\n */\r\n static #TransformNormal(out, value, transform)\r\n {\r\n const x = value[0];\r\n const y = value[1];\r\n const z = value[2];\r\n out[0] = transform[0] * x + transform[4] * y + transform[8] * z;\r\n out[1] = transform[1] * x + transform[5] * y + transform[9] * z;\r\n out[2] = transform[2] * x + transform[6] * y + transform[10] * z;\r\n return out;\r\n }\r\n\r\n /**\r\n * Wraps an index into the 300-entry trail offset ring, handling negative\r\n * values so the ring can be walked backwards.\r\n */\r\n static #WrapOffsetIndex(index)\r\n {\r\n const count = EveBoosterSet2Renderable.#positionOffsetCount;\r\n return ((index % count) + count) % count;\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #zAxis = Object.freeze([0, 0, 1]);\r\n\r\n static #controlPointCount = 5;\r\n\r\n static #positionOffsetCount = 300;\r\n\r\n static #positionOffsetDelta = 0.0167;\r\n\r\n static #trailMinLength = 200;\r\n\r\n static #trailMinLengthFade = 1000;\r\n\r\n static #trailMaxLength = 50000;\r\n\r\n static #trailMaxLengthFade = 20000;\r\n\r\n static #floatMax = 3.4028234663852886e38;\r\n\r\n /** Per-frame visibility scratch - UpdateVisibility must not allocate. */\r\n static #visibilitySphere = sph3.create();\r\n\r\n static #trailsSphere = sph3.create();\r\n\r\n static #boundsSphere = sph3.create();\r\n\r\n}\r\n"],"names":["_EveBoosterSet2Render","_identity","EveBoosterSet2Renderable","_withITr2Renderable","withITr2Renderable","CjsModel","e","_init_trailIntensity","_init_extra_trailIntensity","_init_trailsTotalLength","_init_extra_trailsTotalLength","_init_isVisible","_init_extra_isVisible","_init_trailsVisible","_init_extra_trailsVisible","_init_boostersVisible","_init_extra_boostersVisible","_init_trailsTimeDelta","_init_extra_trailsTimeDelta","_init_boosterHighLod","_init_extra_boosterHighLod","_init_trailsBoundsMax","_init_extra_trailsBoundsMax","_init_trailsBoundsMin","_init_extra_trailsBoundsMin","_init_overallIntensity","_init_extra_overallIntensity","_init_parentRotation","_init_extra_parentRotation","_init_parentSpeed","_init_extra_parentSpeed","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","read","float32","boolean","persist","vec3","readwrite","quat","carbon","method","impl","adapted","implemented","notImplemented","reason","trailIntensity","trailsTotalLength","isVisible","trailsVisible","boostersVisible","trailsTimeDelta","boosterHighLod","trailsBoundsMax","fromValues","trailsBoundsMin","overallIntensity","parentRotation","create","parentSpeed","mat4","Array","from","length","Float32Array","fill","SetBoosterSet","boosterSet","CalculateIntensity","acceleration","alwaysOn","alwaysOnIntensity","backward","transformQuat","speedRatio","maxVel","accFactor","dot","Math","max","min","value","Update","deltaTime","_time","parentMatrix","parentAcceleration","destinyUpdate","Number","dx","dy","dz","hypot","copy","UpdateTrails","GetTrailSplineData","positions","map","position","index","vec4","normals","normal","totalLength","intensity","boundsMin","clone","boundsMax","GetIntensity","HasTransparentBatches","GetSortValue","GetBatches","_accumulator","_batchType","_perObjectData","_reason","Error","GetPerObjectData","accumulator","vs","Alloc","ps","SetAndTranspose","Set","maxSize","warpIntensity","SetIndex","UpdateVisibility","updateContext","frustum","GetFrustum","boundingSphere","GetBoundingSphere","lowDetailThreshold","GetLowDetailThreshold","boosterLod","GetPixelSizeAccross","GetMediumDetailThreshold","viewPos","closestIndex","closestSqDistance","Infinity","sqDistance","squaredDistance","trailsSphere","sph3","fromPositionRadius","radius","trailsLod","IsSphereVisible","IsBoxVisible","GetRenderables","out","push","GetParentTransform","empty","$position","boosterBoundingSphereCenter","boosterBoundingSphereRadius","transformMat4","#CalculateSplineData","elapsed","parentPosition","physicsUpdate","stride","trunc","ringIndex","add","offsets","#UpdatePhysicsTrailOffsets","movement","scale","subtract","iterationCount","fraction","cumulativeOffset","squaredLength","offset","partialOffset","relativeIndex","#UpdateSplineMetrics","distance","set","axis","firstLength","trailsSmoothing","lastIndex","nextLength","previousLength","normalize","#GetStaticOffsets","trailsStaticOffsets0","trailsStaticOffsets1","trailsStaticOffsets2","trailsStaticOffsets3","trailsStaticOffsets4","#SinSmooth","sin","PI","#TransformNormal","transform","x","y","z","#WrapOffsetIndex","count","Object","freeze","constructor"],"mappings":"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"}
|
|
@@ -1,22 +1,10 @@
|
|
|
1
1
|
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { type } from '#schema';
|
|
3
3
|
import { CjsModel } from '#model';
|
|
4
|
+
import { DecalMeshCacheMeshBuffers } from './DecalMeshCacheMeshBuffers.js';
|
|
4
5
|
|
|
5
6
|
let _initClass, _init_buffers, _init_extra_buffers;
|
|
6
7
|
|
|
7
|
-
/**
|
|
8
|
-
* DecalMeshCache.MeshBuffers - one LOD's clipped decal buffers. The generator
|
|
9
|
-
* had flattened these two members onto DecalMeshCache itself; corrected at
|
|
10
|
-
* promotion to Carbon's nested struct shape.
|
|
11
|
-
*/
|
|
12
|
-
class DecalMeshCacheMeshBuffers {
|
|
13
|
-
/** vertexBuffer (std::unique_ptr<uint8_t[]>) */
|
|
14
|
-
vertexBuffer = null;
|
|
15
|
-
|
|
16
|
-
/** indexBuffer (std::unique_ptr<uint8_t[]>) */
|
|
17
|
-
indexBuffer = null;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
8
|
/** Stores the per-LOD clipped vertex and index buffers generated for one projected decal. */
|
|
21
9
|
let _DecalMeshCache;
|
|
22
10
|
new class extends _identity {
|
|
@@ -43,5 +31,5 @@ new class extends _identity {
|
|
|
43
31
|
}
|
|
44
32
|
}();
|
|
45
33
|
|
|
46
|
-
export { _DecalMeshCache as DecalMeshCache
|
|
34
|
+
export { _DecalMeshCache as DecalMeshCache };
|
|
47
35
|
//# sourceMappingURL=DecalMeshCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecalMeshCache.js","sources":["../../../../../../src/trinity/eve/attachment/decal/DecalMeshCache.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h\n// Promoted to hand-maintained source 2026-07-23 (Carbon-verified property shell; schema eve/attachment/decal/DecalMeshCache.json.).\
|
|
1
|
+
{"version":3,"file":"DecalMeshCache.js","sources":["../../../../../../src/trinity/eve/attachment/decal/DecalMeshCache.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h\n// Promoted to hand-maintained source 2026-07-23 (Carbon-verified property shell; schema eve/attachment/decal/DecalMeshCache.json.).\nimport { type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { DecalMeshCacheMeshBuffers } from \"./DecalMeshCacheMeshBuffers.js\";\n\n/** Stores the per-LOD clipped vertex and index buffers generated for one projected decal. */\n@type.define({ className: \"DecalMeshCache\", family: \"eve/attachment/decal\" })\nexport class DecalMeshCache extends CjsModel\n{\n\n /** buffers (std::vector<MeshBuffers>) */\n @type.list(\"MeshBuffers\")\n buffers = [];\n\n static MeshBuffers = DecalMeshCacheMeshBuffers;\n\n}\n"],"names":["_DecalMeshCache","_identity","DecalMeshCache","CjsModel","e","_init_buffers","_init_extra_buffers","c","_initClass","_applyDecs","type","define","className","family","list","constructor","args","buffers","MeshBuffers","DecalMeshCacheMeshBuffers"],"mappings":";;;;;;;AAMA;AAAA,IAAAA;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QACA,MAAAC,cAAA,SACoCC,QAAQ,CAC5C;AAAA,IAAA;AAAA,MAAA,CAAA;QAAAC,CAAA,EAAA,CAAAC,aAAA,EAAAC,mBAAA,CAAA;QAAAC,CAAA,EAAA,CAAAP,eAAA,EAAAQ,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,gBAAgB;AAAEC,QAAAA,MAAM,EAAE;OAAwB,CAAC,KAK1EH,IAAI,CAACI,IAAI,CAAC,aAAa,CAAC,EAAA,CAAA,EAAA,SAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAJSX,QAAQ,CAAA;AAAA;AAAAY,IAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,MAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;MAAAV,mBAAA,CAAA,IAAA,CAAA;AAAA,IAAA;AAG1C;IAEAW,OAAO,GAAAZ,aAAA,CAAA,IAAA,EAAG,EAAE,CAAA;GAIb;AAFQa,EAAAA,WAAW,GAAGC,yBAAyB;EAACJ,WAAAA,GAAA;IAAA,KAAA,CAAAf,eAAA,GAAAQ,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h
|
|
2
|
+
// struct MeshBuffers, nested in struct DecalMeshCache; flattened for JS.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* DecalMeshCache.MeshBuffers - one LOD's clipped decal buffers. The generator
|
|
6
|
+
* had flattened these two members onto DecalMeshCache itself; corrected at
|
|
7
|
+
* promotion to Carbon's nested struct shape.
|
|
8
|
+
*/
|
|
9
|
+
class DecalMeshCacheMeshBuffers {
|
|
10
|
+
/** vertexBuffer (std::unique_ptr<uint8_t[]>) */
|
|
11
|
+
vertexBuffer = null;
|
|
12
|
+
|
|
13
|
+
/** indexBuffer (std::unique_ptr<uint8_t[]>) */
|
|
14
|
+
indexBuffer = null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { DecalMeshCacheMeshBuffers };
|
|
18
|
+
//# sourceMappingURL=DecalMeshCacheMeshBuffers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecalMeshCacheMeshBuffers.js","sources":["../../../../../../src/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h\n// struct MeshBuffers, nested in struct DecalMeshCache; flattened for JS.\n\n/**\n * DecalMeshCache.MeshBuffers - one LOD's clipped decal buffers. The generator\n * had flattened these two members onto DecalMeshCache itself; corrected at\n * promotion to Carbon's nested struct shape.\n */\nexport class DecalMeshCacheMeshBuffers\n{\n\n /** vertexBuffer (std::unique_ptr<uint8_t[]>) */\n vertexBuffer = null;\n\n /** indexBuffer (std::unique_ptr<uint8_t[]>) */\n indexBuffer = null;\n\n}\n"],"names":["DecalMeshCacheMeshBuffers","vertexBuffer","indexBuffer"],"mappings":"AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMA,yBAAyB,CACtC;AAEE;AACAC,EAAAA,YAAY,GAAG,IAAI;;AAEnB;AACAC,EAAAA,WAAW,GAAG,IAAI;AAEpB;;;;"}
|
|
@@ -404,7 +404,7 @@ new class extends _identity {
|
|
|
404
404
|
const center = _EveSpaceObjectDecal.#pointScratch;
|
|
405
405
|
const radius = box3.toPositionRadius(bounds, center);
|
|
406
406
|
const pixelSize = frustum.GetPixelSizeAccrossEst(center, radius);
|
|
407
|
-
const modifiedMinScreen = this.minScreenSize * (updateContext?.GetLodFactor
|
|
407
|
+
const modifiedMinScreen = this.minScreenSize * (updateContext?.GetLodFactor() ?? 1);
|
|
408
408
|
if (pixelSize < modifiedMinScreen) return false;
|
|
409
409
|
this.#isVisible = Math.min((pixelSize - modifiedMinScreen) / (modifiedMinScreen * 0.5), 1);
|
|
410
410
|
this.#CopyParentData(parentData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSpaceObjectDecal.js","sources":["../../../../../../src/trinity/eve/attachment/decal/EveSpaceObjectDecal.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal_Blue.cpp\nimport { box3 } from \"#math/box3\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { IEveSpaceObject2ParentData } from \"../../spaceObject/IEveSpaceObject2ParentData.js\";\nimport { TriBatchType } from \"#consts/graphics\";\nimport { withITr2Renderable } from \"../../../core/ITr2Renderable.js\";\nimport { BuildDecalGeometry, BuildStaticDecalGeometry } from \"./decalIndices.js\";\n\n\n/**\n * A decal projected onto a parent hull, owning its oriented projection matrix,\n * optional bone attachment, per-LOD triangle index lists and screen-size\n * visibility ramp.\n */\n@type.define({ className: \"EveSpaceObjectDecal\", family: \"eve/attachment/decal\" })\nexport class EveSpaceObjectDecal extends withITr2Renderable(CjsModel)\n{\n /**\n * Establishes Carbon's opaque decal batch type after schema initialization,\n * because the schema's legacy TriBatchType default is 0.\n */\n constructor()\n {\n super();\n // The schema's legacy TriBatchType default is 0. Carbon's decal default is\n // the opaque batch (1), so establish it after model/schema initialization.\n this.batchType = 1;\n }\n\n @io.persist\n @type.string\n name = \"\";\n\n @io.read\n @type.int32\n @type.enum(\"TriBatchType\")\n batchType = 1;\n\n @io.notify\n @io.persist\n @type.vec3\n position = vec3.create();\n\n @io.persist\n @type.float32\n minScreenSize = 0;\n\n @io.notify\n @io.persist\n @type.quat\n rotation = quat.create();\n\n @io.notify\n @io.persist\n @type.vec3\n scaling = vec3.fromValues(1, 1, 1);\n\n @io.persist\n @type.int32\n parentBoneIndex = -1;\n\n @io.rebuild(\"packedGeometry\")\n @io.persist\n @type.objectRef(\"Tr2Effect\")\n decalEffect = null;\n\n @io.readwrite\n @type.boolean\n display = true;\n\n // SOF-authored per-LOD triangle indices; persisted so the values\n // interchange reproduces Carbon's hidden decal geometry selection.\n @io.rebuild(\"packedGeometry\")\n @io.persist\n @type.array(\"unknown\")\n staticIndexBuffers = [];\n\n #decalMatrix = mat4.create();\n\n #inverseDecalMatrix = mat4.create();\n\n #priority = 0;\n\n /** m_baseGeometryResource (TriGeometryResPtr) - the hull's, not the decal's. */\n #baseGeometryResource = null;\n\n /** m_geometryLodIndex (int) */\n #geometryLodIndex = 0;\n\n /** m_decalGeometry (std::shared_ptr<MeshDecalData>) */\n #decalGeometry = null;\n\n /** m_isGeometryFrozen (bool) - pins the decal to LOD 0. */\n #isGeometryFrozen = false;\n\n /** m_parentData (EveSpaceObjectDecal.h:178) - copied by value from the\n * owning space object each frame; zeroed with an identity transform by\n * Carbon's constructor (cpp:56-57). Runtime state, never persisted. */\n #parentData = new IEveSpaceObject2ParentData();\n\n /** m_parentBoneMatrix (h:190) - the animated parent bone this decal rides,\n * identity until SetBoneMatrix supplies one. */\n #parentBoneMatrix = mat4.create();\n\n /** m_isVisible (h:204) - a float, not a bool: the non-LOD paths set exactly\n * 0 or 1 while the LOD path writes a 0..1 fade ramp (cpp:119-176). */\n #isVisible = 0;\n\n /** m_minBounds / m_maxBounds (h:215) - the geometry mesh bounds an instanced\n * decal measures instead of the unit cube. Stamped by the loader. */\n #minBounds = vec3.create();\n\n #maxBounds = vec3.create();\n\n /** m_instanceData (h:212) - non-null selects the instanced visibility path.\n * The instance buffer itself is engine-owned; the graph only needs to know\n * whether one is attached. */\n #instanceData = null;\n\n /** Carbon m_invParentBoneMatrix (h:191) is declared but never assigned; the\n * value the shader sees is recomputed per fill (cpp:366), so this port keeps\n * no member for it. */\n #inverseParentBoneMatrix = mat4.create();\n\n #shLightingScratch = new Float32Array(IEveSpaceObject2ParentData.SH_COEFFICIENT_COUNT * 4);\n\n /**\n * Property form of HasStaticIndexBuffers: whether any LOD carries decal\n * triangle indices.\n */\n get hasStaticIndexBuffers()\n {\n return this.HasStaticIndexBuffers();\n }\n\n /**\n * Builds the decal matrix and its inverse from the authored position, rotation\n * and scaling; returns false when the composed matrix is not invertible.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n return this.#updateDecalMatrix();\n }\n\n /**\n * Rebuilds the decal matrix and its inverse after an authored placement\n * change.\n */\n @carbon.method\n @impl.adapted\n OnModified(_options = {})\n {\n this.#updateDecalMatrix();\n return true;\n }\n\n /**\n * Copies another decal's authored description - name, display, placement, bone\n * index, minimum screen size, effect and batch type - and rebuilds the decal\n * matrix; the per-LOD index buffers are not copied. Returns false when source\n * is missing.\n */\n @carbon.method\n @impl.adapted\n CopyFrom(source)\n {\n if (!source) return false;\n this.name = String(source.name ?? \"\");\n this.display = !!source.display;\n vec3.copy(this.position, source.position || EveSpaceObjectDecal.#zero);\n quat.copy(this.rotation, source.rotation || EveSpaceObjectDecal.#identityRotation);\n vec3.copy(this.scaling, source.scaling || EveSpaceObjectDecal.#one);\n this.parentBoneIndex = Number(source.parentBoneIndex) | 0;\n this.minScreenSize = Number(source.minScreenSize) || 0;\n this.decalEffect = source.decalEffect ?? null;\n this.batchType = Number(source.batchType) | 0;\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal position into the caller-owned out vector and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetPosition(out = vec3.create())\n {\n return vec3.copy(out, this.position);\n }\n\n /**\n * Sets the authored decal position and rebuilds the decal matrix; a missing\n * value is taken as the origin.\n */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || EveSpaceObjectDecal.#zero);\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal rotation into the caller-owned out quaternion and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetRotation(out = quat.create())\n {\n return quat.copy(out, this.rotation);\n }\n\n /**\n * Sets the authored decal rotation and rebuilds the decal matrix; a missing\n * value is taken as the identity rotation.\n */\n @carbon.method\n @impl.adapted\n SetRotation(value)\n {\n quat.copy(this.rotation, value || EveSpaceObjectDecal.#identityRotation);\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal scaling into the caller-owned out vector and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetScaling(out = vec3.create())\n {\n return vec3.copy(out, this.scaling);\n }\n\n /**\n * Copies the decal's projection matrix into out; the value is only current as\n * of the last Initialize, OnModified or placement setter.\n */\n @carbon.method\n @impl.adapted\n GetDecalMatrix(out = mat4.create())\n {\n return mat4.copy(out, this.#decalMatrix);\n }\n\n /**\n * Copies the inverse of the decal's projection matrix into out, which is what\n * maps hull-space positions into the decal's unit cube.\n */\n @carbon.method\n @impl.adapted\n GetInverseDecalMatrix(out = mat4.create())\n {\n return mat4.copy(out, this.#inverseDecalMatrix);\n }\n\n /**\n * Sets the authored decal scaling and rebuilds the decal matrix; a missing\n * value is taken as unit scale.\n */\n @carbon.method\n @impl.adapted\n SetScaling(value)\n {\n vec3.copy(this.scaling, value || EveSpaceObjectDecal.#one);\n return this.#updateDecalMatrix();\n }\n\n /**\n * The parent mesh bone the decal rides, or -1 when it rides the hull transform\n * directly.\n */\n @carbon.method\n @impl.adapted\n GetBoneIndex()\n {\n return this.parentBoneIndex;\n }\n\n /**\n * Sets the parent mesh bone the decal rides; the bone matrix itself is only\n * picked up on the next SetBoneMatrix.\n */\n @carbon.method\n @impl.adapted\n SetBoneIndex(index)\n {\n this.parentBoneIndex = Number(index) | 0;\n return true;\n }\n\n /**\n * Replaces the SOF-authored triangle index lists, one array per LOD, coercing\n * each entry to an unsigned integer.\n */\n @carbon.method\n @impl.adapted\n SetIndices(indices)\n {\n this.staticIndexBuffers = Array.from(indices || [], lod => Array.from(lod || [], value => Number(value) >>> 0));\n return true;\n }\n\n /**\n * The per-LOD triangle index lists as fresh copies, so a caller cannot mutate\n * the stored buffers.\n */\n @carbon.method\n @impl.adapted\n GetStaticIndexBuffers()\n {\n return this.staticIndexBuffers.map(lod => lod.slice());\n }\n\n /**\n * Whether any LOD carries triangle indices; a decal without them has no\n * geometry to draw.\n */\n @carbon.method\n @impl.adapted\n HasStaticIndexBuffers()\n {\n return this.staticIndexBuffers.some(lod => lod.length > 0);\n }\n\n /** The triangle count per LOD, being each index list's length divided by three. */\n @carbon.method\n @impl.adapted\n GetDecalPrimitiveCounts()\n {\n return this.staticIndexBuffers.map(lod => Math.trunc(lod.length / 3));\n }\n\n /**\n * Sets the LOD threshold in screen pixels below which UpdateVisibility culls\n * the decal; zero disables the test and makes the decal always visible.\n */\n @carbon.method\n @impl.adapted\n SetMinScreenSize(value)\n {\n this.minScreenSize = Number(value) || 0;\n return true;\n }\n\n /** Sets the effect that draws the decal; a decal without one is never visible. */\n @carbon.method\n @impl.adapted\n SetEffect(effect)\n {\n this.decalEffect = effect ?? null;\n return true;\n }\n\n /**\n * Sets a shader option on the decal effect; returns false when no effect that\n * accepts options is attached.\n */\n @carbon.method\n @impl.adapted\n SetShaderOption(name, value)\n {\n if (!this.decalEffect?.SetOption) return false;\n this.decalEffect.SetOption(name, value);\n return true;\n }\n\n /**\n * Sets the TriBatchType the decal submits under, overriding the opaque default\n * the constructor establishes.\n */\n @carbon.method\n @impl.adapted\n SetBatchType(value)\n {\n this.batchType = Number(value) | 0;\n return true;\n }\n\n /**\n * Sets the draw priority the engine sorts decals on; the value is runtime-only\n * and never persisted.\n */\n @carbon.method\n @impl.adapted\n SetPriority(value)\n {\n this.#priority = Number(value) >>> 0;\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::SetBoneMatrix (cpp:475-491): expands the\n * parent's Float4x3 mesh bone at m_parentBoneIndex into the 4x4 bone matrix.\n * A -1 index or an out-of-range index leaves the identity in place. */\n @carbon.method\n @impl.implemented\n SetBoneMatrix(boneMatrices, boneMatrixCount)\n {\n if (this.parentBoneIndex === -1 || this.parentBoneIndex >= boneMatrixCount)\n {\n return false;\n }\n\n const bone = boneMatrices?.[this.parentBoneIndex];\n if (!bone) return false;\n\n // Float4x3 is COLUMN-stride on the shared byte layout: each packed row is\n // (v0, v4, v8, v12) of the logical matrix (math skill gotcha 7), so the\n // expansion writes the transpose of the three packed rows back into the\n // 4x4 basis and leaves the last column as identity.\n const out = this.#parentBoneMatrix;\n for (let row = 0; row < 3; row++)\n {\n out[row] = bone[row * 4 + 0];\n out[4 + row] = bone[row * 4 + 1];\n out[8 + row] = bone[row * 4 + 2];\n out[12 + row] = bone[row * 4 + 3];\n }\n out[3] = 0;\n out[7] = 0;\n out[11] = 0;\n out[15] = 1;\n\n return true;\n }\n\n /** Carbon copies the parent data by value at the two points UpdateVisibility\n * accepts the decal (cpp:145, cpp:178). shLighting is a borrowed pointer into\n * the parent's own PS data, so it is carried by reference exactly as Carbon\n * carries the pointer. */\n #CopyParentData(parentData)\n {\n if (this.#parentData.SetValues) this.#parentData.SetValues(parentData);\n else Object.assign(this.#parentData, parentData);\n\n this.#parentData.shLighting = parentData.shLighting ?? null;\n }\n\n /**\n * Carbon EveSpaceObjectDecal::UpdateVisibility (cpp:117-179).\n *\n * `m_isVisible` is a FLOAT: zero when culled, one when no minimum screen\n * size is authored, otherwise a 0..1 fade ramp that reaches the shader as\n * displayData.y. The ramp has no lower clamp because the below-minimum case\n * already returned.\n *\n * On every cull path Carbon leaves m_parentData STALE - only the visibility\n * is cleared - so the copy happens solely on the accept paths.\n */\n @carbon.method\n @impl.implemented\n UpdateVisibility(updateContext, parentData)\n {\n this.#isVisible = 0;\n\n if (!this.display || !this.decalEffect || !parentData) return false;\n\n if (!(this.minScreenSize > 0))\n {\n this.#isVisible = 1;\n this.#CopyParentData(parentData);\n return true;\n }\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum ?? null;\n if (!frustum) return false;\n\n // Carbon (row-vector): m_parentBoneMatrix * parentData->transform - the\n // bone applies first, so the gl operands swap.\n const worldDecalMatrix = mat4.multiply(\n EveSpaceObjectDecal.#worldDecalScratch,\n parentData.transform,\n this.#parentBoneMatrix\n );\n const bounds = box3.set(EveSpaceObjectDecal.#boundsScratch, -1, -1, -1, 1, 1, 1);\n\n if (this.#instanceData)\n {\n // Instanced decals measure the geometry mesh bounds instead of the unit\n // cube (cpp:135-155). Carbon transforms only the two CORNERS here (not\n // the eight, as it does below), so this is vec3, not box3.transformMat4.\n // Carbon transforms only the two CORNERS here (not the eight, as it does\n // below). A mirroring transform swaps them, which Carbon leaves inverted\n // and box3 would read as EMPTY, so the pair is accumulated as points -\n // ordering it. The eight-corner transform below is indifferent to order,\n // so this only affects the mirrored-decal early-outs (parity note\n // divergence 7).\n const corner = EveSpaceObjectDecal.#pointScratch;\n box3.empty(bounds);\n vec3.transformMat4(corner, this.#minBounds, worldDecalMatrix);\n box3.addPoint(bounds, bounds, corner);\n vec3.transformMat4(corner, this.#maxBounds, worldDecalMatrix);\n box3.addPoint(bounds, bounds, corner);\n\n if (box3.containsPoint(bounds, frustum.viewPos))\n {\n this.#isVisible = 1;\n this.#CopyParentData(parentData);\n return true;\n }\n\n if (!frustum.IsBoxVisible?.(bounds))\n {\n return false;\n }\n\n // Measure from the closest point of the box rather than its centre, so a\n // long box does not lod out while one end is near the camera.\n const offset = box3.getClampedPoint(\n EveSpaceObjectDecal.#pointScratch,\n bounds,\n frustum.viewPos\n );\n vec3.subtract(offset, offset, frustum.viewPos);\n mat4.multiply(\n worldDecalMatrix,\n mat4.fromTranslation(EveSpaceObjectDecal.#offsetScratch, offset),\n worldDecalMatrix\n );\n }\n\n // Carbon: m_decalMatrix * worldDecalMatrix - the decal applies first.\n mat4.multiply(worldDecalMatrix, worldDecalMatrix, this.#decalMatrix);\n box3.transformMat4(bounds, bounds, worldDecalMatrix);\n\n // Carbon's sphere is the box's circumscribing sphere: the centre of the\n // transformed box and HALF ITS FULL DIAGONAL (cpp:159-160).\n const center = EveSpaceObjectDecal.#pointScratch;\n const radius = box3.toPositionRadius(bounds, center);\n const pixelSize = frustum.GetPixelSizeAccrossEst(center, radius);\n const modifiedMinScreen = this.minScreenSize * (updateContext?.GetLodFactor?.() ?? 1);\n\n if (pixelSize < modifiedMinScreen) return false;\n\n this.#isVisible = Math.min((pixelSize - modifiedMinScreen) / (modifiedMinScreen * 0.5), 1);\n this.#CopyParentData(parentData);\n return true;\n }\n\n /** The visibility fade Carbon writes to displayData.y; 0 when lodded out. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the m_isVisible member directly; JavaScript exposes the private runtime value through an accessor.\")\n GetVisibility()\n {\n return this.#isVisible;\n }\n\n /** Carbon EveSpaceObjectDecal::HasTransparentBatches (cpp:241-244). */\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::GetSortValue (cpp:337-340). */\n @carbon.method\n @impl.implemented\n GetSortValue()\n {\n return 1;\n }\n\n /** Carbon ITr2Pickable::GetID is inline on the decal (h:113-116) and returns\n * the object itself; the area id selects nothing on this class. */\n @carbon.method\n @impl.implemented\n GetID(_areaId)\n {\n return this;\n }\n\n /**\n * Carbon EveSpaceObjectDecal::GetPerObjectData (cpp:346-386): the\n * EveDecalPerObjectData composite - a DecalVSPerObjectData +\n * DecalPSPerObjectData pair uploaded as TWO constant buffers (cpp:975-976).\n * Here that is two Allocs returned as a { vs, ps } record.\n *\n * SetAndTranspose performs Carbon's Transpose. Carbon computes the two\n * inverses FROM the already-transposed matrices; because Inverse(M-transpose)\n * equals Inverse(M)-transpose (carbon-math-conventions F2), inverting the\n * logical matrix and letting the encoder transpose produces byte-identical\n * output with one transpose less work.\n */\n @carbon.method\n @impl.implemented\n GetPerObjectData(accumulator)\n {\n const vs = accumulator.Alloc(\"DecalVSPerObjectData\");\n const ps = accumulator.Alloc(\"DecalPSPerObjectData\");\n const parentData = this.#parentData;\n\n vs.SetAndTranspose(\"worldMatrix\", parentData.transform);\n // cpp:358 inverts the transposed world matrix in place; by F2 that is the\n // transpose of the logical inverse, so this is the same bytes.\n mat4.invert(this.#inverseParentBoneMatrix, parentData.transform);\n vs.SetAndTranspose(\"invWorldMatrix\", this.#inverseParentBoneMatrix);\n\n vs.SetAndTranspose(\"decalMatrix\", this.#decalMatrix);\n vs.SetAndTranspose(\"inverseDecalMatrix\", this.#inverseDecalMatrix);\n vs.SetAndTranspose(\"parentBoneMatrix\", this.#parentBoneMatrix);\n\n // cpp:366 - Inverse(Transpose(m_parentBoneMatrix)), recomputed per fill;\n // Carbon never reads its own m_invParentBoneMatrix member. Same F2\n // identity as above.\n mat4.invert(this.#inverseParentBoneMatrix, this.#parentBoneMatrix);\n vs.SetAndTranspose(\"invParentBoneMatrix\", this.#inverseParentBoneMatrix);\n\n // cpp:374 - killCount is a uint widened to float; isVisible is the 0..1\n // visibility ramp; z and w are reserved literals.\n ps.Set(\"displayData\", [parentData.killCount, this.#isVisible, 0, 0]);\n ps.Set(\"shipData\", parentData.shipData);\n ps.Set(\"clipData\", [\n parentData.clipSphereCenter[0],\n parentData.clipSphereCenter[1],\n parentData.clipSphereCenter[2],\n parentData.clipRadiusSq\n ]);\n ps.Set(\"clipRadius2Sq\", [parentData.clipRadius2Sq]);\n\n // cpp:376-383 - copy the parent's seven packed coefficients, or zero the\n // whole block when the parent supplied none. m_unused stays unwritten.\n const coefficients = this.#shLightingScratch;\n coefficients.fill(0);\n const shLighting = parentData.shLighting;\n if (shLighting)\n {\n for (let index = 0; index < coefficients.length && index < shLighting.length; index++)\n {\n coefficients[index] = shLighting[index];\n }\n }\n ps.Set(\"shLightingCoefficients\", coefficients);\n\n return { vs, ps };\n }\n\n /**\n * Adds this decal to the renderable list once its geometry is ready.\n *\n * Carbon EveSpaceObjectDecal::GetRenderables (cpp:182-225). EveSpaceObject2\n * already calls this per decal with the hull's geometry resource and mesh\n * screen size (cpp:1578-1591); ours does the same.\n *\n * The decal is a RENDERABLE, not a batch source the parent drains: it puts\n * itself in the list and the renderer asks it for batches later, which is why\n * everything expensive happens here and GetBatches only submits.\n *\n * @param {Array} out Renderable list.\n * @param {object} _meshCache Carbon's DecalMeshCache, only used by the\n * selection path to avoid re-mapping hull buffers; unused here because a\n * decoded payload is already CPU-side.\n * @param {object} geometryResource The hull's geometry.\n * @param {number} screenSize The parent's mesh screen size, for LOD choice.\n * @returns {boolean} Whether the decal was added.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Trinity selects the LOD and builds the index list; the engine owns the device index buffer, so validity is judged on the built list rather than on a GPU allocation.\")\n GetRenderables(out = [], _meshCache = null, geometryResource = null, screenSize = Infinity)\n {\n if (this.#isVisible <= 0 || !geometryResource) return false;\n\n // A NEW MESH INVALIDATES THE BUILD. Carbon's comment calls this out as slow\n // and to be avoided, which is why it is keyed on identity rather than\n // rebuilt every frame.\n if (geometryResource !== this.#baseGeometryResource)\n {\n this.#decalGeometry = null;\n this.#baseGeometryResource = geometryResource;\n }\n\n const mesh = geometryResource.GetMeshData(0);\n\n if (!this.#decalGeometry || (mesh && mesh.lodMask !== this.#decalGeometry.lodMask))\n {\n this.#decalGeometry = this.#BuildGeometry(mesh);\n }\n\n if (!this.#decalGeometry) return false;\n\n this.#geometryLodIndex = this.#isGeometryFrozen\n ? 0\n : geometryResource.GetLodIndexForScreenSize(0, screenSize);\n\n const lod = this.#decalGeometry.lods?.[this.#geometryLodIndex];\n\n // A LOD the decal does not reach carries zero primitives, which is how\n // Carbon says \"not covered here\" - hence testing the count, not the buffer.\n if (!lod || !lod.primitiveCount) return false;\n\n out.push(this);\n\n return true;\n }\n\n /**\n * Builds the decal's index list for the hull it is attached to.\n *\n * The static lists win when present, exactly as Carbon orders it: every decal\n * on a shipped hull arrives with them, and triangle selection sits behind the\n * g_buildDecalBuffers global for decals placed at runtime (cpp:196-207).\n *\n * @param {object} mesh Decoded mesh data.\n * @returns {object|null} Built geometry, or null when there is nothing to draw.\n */\n #BuildGeometry(mesh)\n {\n if (!mesh) return null;\n\n const built = this.HasStaticIndexBuffers()\n ? BuildStaticDecalGeometry(mesh, this.staticIndexBuffers)\n : BuildDecalGeometry(mesh, this.#decalMatrix, this.#inverseDecalMatrix);\n\n if (!built.indices.length) return null;\n\n return {\n inverseDecalMatrix: mat4.clone(this.#inverseDecalMatrix),\n lodMask: mesh.lodMask ?? 0,\n lods: built.lods,\n indices: built.indices\n };\n }\n\n /** Carbon EveSpaceObjectDecal::SetHighDetailDecalState (cpp:514-517). */\n @carbon.method\n @impl.implemented\n SetHighDetailDecalState(isFrozen)\n {\n this.#isGeometryFrozen = !!isFrozen;\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::GetBatches (cpp:250-331) submits the packed\n * decal index buffers against the device geometry resource. */\n @carbon.method\n @impl.notImplemented\n GetBatches(_batches, _batchType, _perObjectData, _reason)\n {\n throw new Error(\"EveSpaceObjectDecal.GetBatches is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon EveSpaceObjectDecal::GetPickingBatches (cpp:919-926) forwards to\n * GetBatches once the attachment pick-type mask passes. */\n @carbon.method\n @impl.notImplemented\n GetPickingBatches(_batches, _pickTypes, _perObjectData)\n {\n throw new Error(\"EveSpaceObjectDecal.GetPickingBatches is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Recomposes the decal matrix from the authored rotation, position and scaling\n * and inverts it; returns whether the inverse existed.\n */\n #updateDecalMatrix()\n {\n mat4.fromRotationTranslationScale(this.#decalMatrix, this.rotation, this.position, this.scaling);\n return !!mat4.invert(this.#inverseDecalMatrix, this.#decalMatrix);\n }\n\n /** Per-frame scratch - UpdateVisibility must not allocate. */\n static #boundsScratch = box3.create();\n\n static #worldDecalScratch = mat4.create();\n\n static #offsetScratch = mat4.create();\n\n static #pointScratch = vec3.create();\n\n static #zero = vec3.create();\n\n static #one = vec3.fromValues(1, 1, 1);\n\n static #identityRotation = quat.create();\n\n static TriBatchType = TriBatchType;\n\n}\n"],"names":["_EveSpaceObjectDecal","_identity","EveSpaceObjectDecal","_withITr2Renderable","withITr2Renderable","CjsModel","e","_init_name","_init_extra_name","_init_batchType","_init_extra_batchType","_init_position","_init_extra_position","_init_minScreenSize","_init_extra_minScreenSize","_init_rotation","_init_extra_rotation","_init_scaling","_init_extra_scaling","_init_parentBoneIndex","_init_extra_parentBoneIndex","_init_decalEffect","_init_extra_decalEffect","_init_display","_init_extra_display","_init_staticIndexBuffers","_init_extra_staticIndexBuffers","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","read","int32","enum","notify","vec3","float32","quat","rebuild","objectRef","readwrite","boolean","array","carbon","method","impl","adapted","implemented","reason","notImplemented","constructor","batchType","name","position","create","minScreenSize","rotation","scaling","fromValues","parentBoneIndex","decalEffect","display","staticIndexBuffers","mat4","IEveSpaceObject2ParentData","Float32Array","SH_COEFFICIENT_COUNT","hasStaticIndexBuffers","HasStaticIndexBuffers","Initialize","OnModified","_options","CopyFrom","source","String","copy","Number","GetPosition","out","SetPosition","value","GetRotation","SetRotation","GetScaling","GetDecalMatrix","GetInverseDecalMatrix","SetScaling","GetBoneIndex","SetBoneIndex","index","SetIndices","indices","Array","from","lod","GetStaticIndexBuffers","map","slice","some","length","GetDecalPrimitiveCounts","Math","trunc","SetMinScreenSize","SetEffect","effect","SetShaderOption","SetOption","SetBatchType","SetPriority","SetBoneMatrix","boneMatrices","boneMatrixCount","bone","row","#CopyParentData","parentData","SetValues","Object","assign","shLighting","UpdateVisibility","updateContext","frustum","GetFrustum","worldDecalMatrix","multiply","transform","bounds","box3","set","corner","empty","transformMat4","addPoint","containsPoint","viewPos","IsBoxVisible","offset","getClampedPoint","subtract","fromTranslation","center","radius","toPositionRadius","pixelSize","GetPixelSizeAccrossEst","modifiedMinScreen","GetLodFactor","min","GetVisibility","HasTransparentBatches","GetSortValue","GetID","_areaId","GetPerObjectData","accumulator","vs","Alloc","ps","SetAndTranspose","invert","Set","killCount","shipData","clipSphereCenter","clipRadiusSq","clipRadius2Sq","coefficients","fill","GetRenderables","_meshCache","geometryResource","screenSize","Infinity","mesh","GetMeshData","lodMask","GetLodIndexForScreenSize","lods","primitiveCount","push","#BuildGeometry","built","BuildStaticDecalGeometry","BuildDecalGeometry","inverseDecalMatrix","clone","SetHighDetailDecalState","isFrozen","GetBatches","_batches","_batchType","_perObjectData","_reason","Error","GetPickingBatches","_pickTypes","#updateDecalMatrix","fromRotationTranslationScale","TriBatchType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSpaceObjectDecal.js","sources":["../../../../../../src/trinity/eve/attachment/decal/EveSpaceObjectDecal.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.h\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveSpaceObjectDecal_Blue.cpp\nimport { box3 } from \"#math/box3\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { IEveSpaceObject2ParentData } from \"../../spaceObject/IEveSpaceObject2ParentData.js\";\nimport { TriBatchType } from \"#consts/graphics\";\nimport { withITr2Renderable } from \"../../../core/ITr2Renderable.js\";\nimport { BuildDecalGeometry, BuildStaticDecalGeometry } from \"./decalIndices.js\";\n\n\n/**\n * A decal projected onto a parent hull, owning its oriented projection matrix,\n * optional bone attachment, per-LOD triangle index lists and screen-size\n * visibility ramp.\n */\n@type.define({ className: \"EveSpaceObjectDecal\", family: \"eve/attachment/decal\" })\nexport class EveSpaceObjectDecal extends withITr2Renderable(CjsModel)\n{\n /**\n * Establishes Carbon's opaque decal batch type after schema initialization,\n * because the schema's legacy TriBatchType default is 0.\n */\n constructor()\n {\n super();\n // The schema's legacy TriBatchType default is 0. Carbon's decal default is\n // the opaque batch (1), so establish it after model/schema initialization.\n this.batchType = 1;\n }\n\n @io.persist\n @type.string\n name = \"\";\n\n @io.read\n @type.int32\n @type.enum(\"TriBatchType\")\n batchType = 1;\n\n @io.notify\n @io.persist\n @type.vec3\n position = vec3.create();\n\n @io.persist\n @type.float32\n minScreenSize = 0;\n\n @io.notify\n @io.persist\n @type.quat\n rotation = quat.create();\n\n @io.notify\n @io.persist\n @type.vec3\n scaling = vec3.fromValues(1, 1, 1);\n\n @io.persist\n @type.int32\n parentBoneIndex = -1;\n\n @io.rebuild(\"packedGeometry\")\n @io.persist\n @type.objectRef(\"Tr2Effect\")\n decalEffect = null;\n\n @io.readwrite\n @type.boolean\n display = true;\n\n // SOF-authored per-LOD triangle indices; persisted so the values\n // interchange reproduces Carbon's hidden decal geometry selection.\n @io.rebuild(\"packedGeometry\")\n @io.persist\n @type.array(\"unknown\")\n staticIndexBuffers = [];\n\n #decalMatrix = mat4.create();\n\n #inverseDecalMatrix = mat4.create();\n\n #priority = 0;\n\n /** m_baseGeometryResource (TriGeometryResPtr) - the hull's, not the decal's. */\n #baseGeometryResource = null;\n\n /** m_geometryLodIndex (int) */\n #geometryLodIndex = 0;\n\n /** m_decalGeometry (std::shared_ptr<MeshDecalData>) */\n #decalGeometry = null;\n\n /** m_isGeometryFrozen (bool) - pins the decal to LOD 0. */\n #isGeometryFrozen = false;\n\n /** m_parentData (EveSpaceObjectDecal.h:178) - copied by value from the\n * owning space object each frame; zeroed with an identity transform by\n * Carbon's constructor (cpp:56-57). Runtime state, never persisted. */\n #parentData = new IEveSpaceObject2ParentData();\n\n /** m_parentBoneMatrix (h:190) - the animated parent bone this decal rides,\n * identity until SetBoneMatrix supplies one. */\n #parentBoneMatrix = mat4.create();\n\n /** m_isVisible (h:204) - a float, not a bool: the non-LOD paths set exactly\n * 0 or 1 while the LOD path writes a 0..1 fade ramp (cpp:119-176). */\n #isVisible = 0;\n\n /** m_minBounds / m_maxBounds (h:215) - the geometry mesh bounds an instanced\n * decal measures instead of the unit cube. Stamped by the loader. */\n #minBounds = vec3.create();\n\n #maxBounds = vec3.create();\n\n /** m_instanceData (h:212) - non-null selects the instanced visibility path.\n * The instance buffer itself is engine-owned; the graph only needs to know\n * whether one is attached. */\n #instanceData = null;\n\n /** Carbon m_invParentBoneMatrix (h:191) is declared but never assigned; the\n * value the shader sees is recomputed per fill (cpp:366), so this port keeps\n * no member for it. */\n #inverseParentBoneMatrix = mat4.create();\n\n #shLightingScratch = new Float32Array(IEveSpaceObject2ParentData.SH_COEFFICIENT_COUNT * 4);\n\n /**\n * Property form of HasStaticIndexBuffers: whether any LOD carries decal\n * triangle indices.\n */\n get hasStaticIndexBuffers()\n {\n return this.HasStaticIndexBuffers();\n }\n\n /**\n * Builds the decal matrix and its inverse from the authored position, rotation\n * and scaling; returns false when the composed matrix is not invertible.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n return this.#updateDecalMatrix();\n }\n\n /**\n * Rebuilds the decal matrix and its inverse after an authored placement\n * change.\n */\n @carbon.method\n @impl.adapted\n OnModified(_options = {})\n {\n this.#updateDecalMatrix();\n return true;\n }\n\n /**\n * Copies another decal's authored description - name, display, placement, bone\n * index, minimum screen size, effect and batch type - and rebuilds the decal\n * matrix; the per-LOD index buffers are not copied. Returns false when source\n * is missing.\n */\n @carbon.method\n @impl.adapted\n CopyFrom(source)\n {\n if (!source) return false;\n this.name = String(source.name ?? \"\");\n this.display = !!source.display;\n vec3.copy(this.position, source.position || EveSpaceObjectDecal.#zero);\n quat.copy(this.rotation, source.rotation || EveSpaceObjectDecal.#identityRotation);\n vec3.copy(this.scaling, source.scaling || EveSpaceObjectDecal.#one);\n this.parentBoneIndex = Number(source.parentBoneIndex) | 0;\n this.minScreenSize = Number(source.minScreenSize) || 0;\n this.decalEffect = source.decalEffect ?? null;\n this.batchType = Number(source.batchType) | 0;\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal position into the caller-owned out vector and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetPosition(out = vec3.create())\n {\n return vec3.copy(out, this.position);\n }\n\n /**\n * Sets the authored decal position and rebuilds the decal matrix; a missing\n * value is taken as the origin.\n */\n @carbon.method\n @impl.adapted\n SetPosition(value)\n {\n vec3.copy(this.position, value || EveSpaceObjectDecal.#zero);\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal rotation into the caller-owned out quaternion and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetRotation(out = quat.create())\n {\n return quat.copy(out, this.rotation);\n }\n\n /**\n * Sets the authored decal rotation and rebuilds the decal matrix; a missing\n * value is taken as the identity rotation.\n */\n @carbon.method\n @impl.adapted\n SetRotation(value)\n {\n quat.copy(this.rotation, value || EveSpaceObjectDecal.#identityRotation);\n return this.#updateDecalMatrix();\n }\n\n /**\n * Copies the authored decal scaling into the caller-owned out vector and\n * returns it.\n */\n @carbon.method\n @impl.adapted\n GetScaling(out = vec3.create())\n {\n return vec3.copy(out, this.scaling);\n }\n\n /**\n * Copies the decal's projection matrix into out; the value is only current as\n * of the last Initialize, OnModified or placement setter.\n */\n @carbon.method\n @impl.adapted\n GetDecalMatrix(out = mat4.create())\n {\n return mat4.copy(out, this.#decalMatrix);\n }\n\n /**\n * Copies the inverse of the decal's projection matrix into out, which is what\n * maps hull-space positions into the decal's unit cube.\n */\n @carbon.method\n @impl.adapted\n GetInverseDecalMatrix(out = mat4.create())\n {\n return mat4.copy(out, this.#inverseDecalMatrix);\n }\n\n /**\n * Sets the authored decal scaling and rebuilds the decal matrix; a missing\n * value is taken as unit scale.\n */\n @carbon.method\n @impl.adapted\n SetScaling(value)\n {\n vec3.copy(this.scaling, value || EveSpaceObjectDecal.#one);\n return this.#updateDecalMatrix();\n }\n\n /**\n * The parent mesh bone the decal rides, or -1 when it rides the hull transform\n * directly.\n */\n @carbon.method\n @impl.adapted\n GetBoneIndex()\n {\n return this.parentBoneIndex;\n }\n\n /**\n * Sets the parent mesh bone the decal rides; the bone matrix itself is only\n * picked up on the next SetBoneMatrix.\n */\n @carbon.method\n @impl.adapted\n SetBoneIndex(index)\n {\n this.parentBoneIndex = Number(index) | 0;\n return true;\n }\n\n /**\n * Replaces the SOF-authored triangle index lists, one array per LOD, coercing\n * each entry to an unsigned integer.\n */\n @carbon.method\n @impl.adapted\n SetIndices(indices)\n {\n this.staticIndexBuffers = Array.from(indices || [], lod => Array.from(lod || [], value => Number(value) >>> 0));\n return true;\n }\n\n /**\n * The per-LOD triangle index lists as fresh copies, so a caller cannot mutate\n * the stored buffers.\n */\n @carbon.method\n @impl.adapted\n GetStaticIndexBuffers()\n {\n return this.staticIndexBuffers.map(lod => lod.slice());\n }\n\n /**\n * Whether any LOD carries triangle indices; a decal without them has no\n * geometry to draw.\n */\n @carbon.method\n @impl.adapted\n HasStaticIndexBuffers()\n {\n return this.staticIndexBuffers.some(lod => lod.length > 0);\n }\n\n /** The triangle count per LOD, being each index list's length divided by three. */\n @carbon.method\n @impl.adapted\n GetDecalPrimitiveCounts()\n {\n return this.staticIndexBuffers.map(lod => Math.trunc(lod.length / 3));\n }\n\n /**\n * Sets the LOD threshold in screen pixels below which UpdateVisibility culls\n * the decal; zero disables the test and makes the decal always visible.\n */\n @carbon.method\n @impl.adapted\n SetMinScreenSize(value)\n {\n this.minScreenSize = Number(value) || 0;\n return true;\n }\n\n /** Sets the effect that draws the decal; a decal without one is never visible. */\n @carbon.method\n @impl.adapted\n SetEffect(effect)\n {\n this.decalEffect = effect ?? null;\n return true;\n }\n\n /**\n * Sets a shader option on the decal effect; returns false when no effect that\n * accepts options is attached.\n */\n @carbon.method\n @impl.adapted\n SetShaderOption(name, value)\n {\n if (!this.decalEffect?.SetOption) return false;\n this.decalEffect.SetOption(name, value);\n return true;\n }\n\n /**\n * Sets the TriBatchType the decal submits under, overriding the opaque default\n * the constructor establishes.\n */\n @carbon.method\n @impl.adapted\n SetBatchType(value)\n {\n this.batchType = Number(value) | 0;\n return true;\n }\n\n /**\n * Sets the draw priority the engine sorts decals on; the value is runtime-only\n * and never persisted.\n */\n @carbon.method\n @impl.adapted\n SetPriority(value)\n {\n this.#priority = Number(value) >>> 0;\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::SetBoneMatrix (cpp:475-491): expands the\n * parent's Float4x3 mesh bone at m_parentBoneIndex into the 4x4 bone matrix.\n * A -1 index or an out-of-range index leaves the identity in place. */\n @carbon.method\n @impl.implemented\n SetBoneMatrix(boneMatrices, boneMatrixCount)\n {\n if (this.parentBoneIndex === -1 || this.parentBoneIndex >= boneMatrixCount)\n {\n return false;\n }\n\n const bone = boneMatrices?.[this.parentBoneIndex];\n if (!bone) return false;\n\n // Float4x3 is COLUMN-stride on the shared byte layout: each packed row is\n // (v0, v4, v8, v12) of the logical matrix (math skill gotcha 7), so the\n // expansion writes the transpose of the three packed rows back into the\n // 4x4 basis and leaves the last column as identity.\n const out = this.#parentBoneMatrix;\n for (let row = 0; row < 3; row++)\n {\n out[row] = bone[row * 4 + 0];\n out[4 + row] = bone[row * 4 + 1];\n out[8 + row] = bone[row * 4 + 2];\n out[12 + row] = bone[row * 4 + 3];\n }\n out[3] = 0;\n out[7] = 0;\n out[11] = 0;\n out[15] = 1;\n\n return true;\n }\n\n /** Carbon copies the parent data by value at the two points UpdateVisibility\n * accepts the decal (cpp:145, cpp:178). shLighting is a borrowed pointer into\n * the parent's own PS data, so it is carried by reference exactly as Carbon\n * carries the pointer. */\n #CopyParentData(parentData)\n {\n if (this.#parentData.SetValues) this.#parentData.SetValues(parentData);\n else Object.assign(this.#parentData, parentData);\n\n this.#parentData.shLighting = parentData.shLighting ?? null;\n }\n\n /**\n * Carbon EveSpaceObjectDecal::UpdateVisibility (cpp:117-179).\n *\n * `m_isVisible` is a FLOAT: zero when culled, one when no minimum screen\n * size is authored, otherwise a 0..1 fade ramp that reaches the shader as\n * displayData.y. The ramp has no lower clamp because the below-minimum case\n * already returned.\n *\n * On every cull path Carbon leaves m_parentData STALE - only the visibility\n * is cleared - so the copy happens solely on the accept paths.\n */\n @carbon.method\n @impl.implemented\n UpdateVisibility(updateContext, parentData)\n {\n this.#isVisible = 0;\n\n if (!this.display || !this.decalEffect || !parentData) return false;\n\n if (!(this.minScreenSize > 0))\n {\n this.#isVisible = 1;\n this.#CopyParentData(parentData);\n return true;\n }\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum ?? null;\n if (!frustum) return false;\n\n // Carbon (row-vector): m_parentBoneMatrix * parentData->transform - the\n // bone applies first, so the gl operands swap.\n const worldDecalMatrix = mat4.multiply(\n EveSpaceObjectDecal.#worldDecalScratch,\n parentData.transform,\n this.#parentBoneMatrix\n );\n const bounds = box3.set(EveSpaceObjectDecal.#boundsScratch, -1, -1, -1, 1, 1, 1);\n\n if (this.#instanceData)\n {\n // Instanced decals measure the geometry mesh bounds instead of the unit\n // cube (cpp:135-155). Carbon transforms only the two CORNERS here (not\n // the eight, as it does below), so this is vec3, not box3.transformMat4.\n // Carbon transforms only the two CORNERS here (not the eight, as it does\n // below). A mirroring transform swaps them, which Carbon leaves inverted\n // and box3 would read as EMPTY, so the pair is accumulated as points -\n // ordering it. The eight-corner transform below is indifferent to order,\n // so this only affects the mirrored-decal early-outs (parity note\n // divergence 7).\n const corner = EveSpaceObjectDecal.#pointScratch;\n box3.empty(bounds);\n vec3.transformMat4(corner, this.#minBounds, worldDecalMatrix);\n box3.addPoint(bounds, bounds, corner);\n vec3.transformMat4(corner, this.#maxBounds, worldDecalMatrix);\n box3.addPoint(bounds, bounds, corner);\n\n if (box3.containsPoint(bounds, frustum.viewPos))\n {\n this.#isVisible = 1;\n this.#CopyParentData(parentData);\n return true;\n }\n\n if (!frustum.IsBoxVisible?.(bounds))\n {\n return false;\n }\n\n // Measure from the closest point of the box rather than its centre, so a\n // long box does not lod out while one end is near the camera.\n const offset = box3.getClampedPoint(\n EveSpaceObjectDecal.#pointScratch,\n bounds,\n frustum.viewPos\n );\n vec3.subtract(offset, offset, frustum.viewPos);\n mat4.multiply(\n worldDecalMatrix,\n mat4.fromTranslation(EveSpaceObjectDecal.#offsetScratch, offset),\n worldDecalMatrix\n );\n }\n\n // Carbon: m_decalMatrix * worldDecalMatrix - the decal applies first.\n mat4.multiply(worldDecalMatrix, worldDecalMatrix, this.#decalMatrix);\n box3.transformMat4(bounds, bounds, worldDecalMatrix);\n\n // Carbon's sphere is the box's circumscribing sphere: the centre of the\n // transformed box and HALF ITS FULL DIAGONAL (cpp:159-160).\n const center = EveSpaceObjectDecal.#pointScratch;\n const radius = box3.toPositionRadius(bounds, center);\n const pixelSize = frustum.GetPixelSizeAccrossEst(center, radius);\n const modifiedMinScreen = this.minScreenSize * (updateContext?.GetLodFactor() ?? 1);\n\n if (pixelSize < modifiedMinScreen) return false;\n\n this.#isVisible = Math.min((pixelSize - modifiedMinScreen) / (modifiedMinScreen * 0.5), 1);\n this.#CopyParentData(parentData);\n return true;\n }\n\n /** The visibility fade Carbon writes to displayData.y; 0 when lodded out. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the m_isVisible member directly; JavaScript exposes the private runtime value through an accessor.\")\n GetVisibility()\n {\n return this.#isVisible;\n }\n\n /** Carbon EveSpaceObjectDecal::HasTransparentBatches (cpp:241-244). */\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::GetSortValue (cpp:337-340). */\n @carbon.method\n @impl.implemented\n GetSortValue()\n {\n return 1;\n }\n\n /** Carbon ITr2Pickable::GetID is inline on the decal (h:113-116) and returns\n * the object itself; the area id selects nothing on this class. */\n @carbon.method\n @impl.implemented\n GetID(_areaId)\n {\n return this;\n }\n\n /**\n * Carbon EveSpaceObjectDecal::GetPerObjectData (cpp:346-386): the\n * EveDecalPerObjectData composite - a DecalVSPerObjectData +\n * DecalPSPerObjectData pair uploaded as TWO constant buffers (cpp:975-976).\n * Here that is two Allocs returned as a { vs, ps } record.\n *\n * SetAndTranspose performs Carbon's Transpose. Carbon computes the two\n * inverses FROM the already-transposed matrices; because Inverse(M-transpose)\n * equals Inverse(M)-transpose (carbon-math-conventions F2), inverting the\n * logical matrix and letting the encoder transpose produces byte-identical\n * output with one transpose less work.\n */\n @carbon.method\n @impl.implemented\n GetPerObjectData(accumulator)\n {\n const vs = accumulator.Alloc(\"DecalVSPerObjectData\");\n const ps = accumulator.Alloc(\"DecalPSPerObjectData\");\n const parentData = this.#parentData;\n\n vs.SetAndTranspose(\"worldMatrix\", parentData.transform);\n // cpp:358 inverts the transposed world matrix in place; by F2 that is the\n // transpose of the logical inverse, so this is the same bytes.\n mat4.invert(this.#inverseParentBoneMatrix, parentData.transform);\n vs.SetAndTranspose(\"invWorldMatrix\", this.#inverseParentBoneMatrix);\n\n vs.SetAndTranspose(\"decalMatrix\", this.#decalMatrix);\n vs.SetAndTranspose(\"inverseDecalMatrix\", this.#inverseDecalMatrix);\n vs.SetAndTranspose(\"parentBoneMatrix\", this.#parentBoneMatrix);\n\n // cpp:366 - Inverse(Transpose(m_parentBoneMatrix)), recomputed per fill;\n // Carbon never reads its own m_invParentBoneMatrix member. Same F2\n // identity as above.\n mat4.invert(this.#inverseParentBoneMatrix, this.#parentBoneMatrix);\n vs.SetAndTranspose(\"invParentBoneMatrix\", this.#inverseParentBoneMatrix);\n\n // cpp:374 - killCount is a uint widened to float; isVisible is the 0..1\n // visibility ramp; z and w are reserved literals.\n ps.Set(\"displayData\", [parentData.killCount, this.#isVisible, 0, 0]);\n ps.Set(\"shipData\", parentData.shipData);\n ps.Set(\"clipData\", [\n parentData.clipSphereCenter[0],\n parentData.clipSphereCenter[1],\n parentData.clipSphereCenter[2],\n parentData.clipRadiusSq\n ]);\n ps.Set(\"clipRadius2Sq\", [parentData.clipRadius2Sq]);\n\n // cpp:376-383 - copy the parent's seven packed coefficients, or zero the\n // whole block when the parent supplied none. m_unused stays unwritten.\n const coefficients = this.#shLightingScratch;\n coefficients.fill(0);\n const shLighting = parentData.shLighting;\n if (shLighting)\n {\n for (let index = 0; index < coefficients.length && index < shLighting.length; index++)\n {\n coefficients[index] = shLighting[index];\n }\n }\n ps.Set(\"shLightingCoefficients\", coefficients);\n\n return { vs, ps };\n }\n\n /**\n * Adds this decal to the renderable list once its geometry is ready.\n *\n * Carbon EveSpaceObjectDecal::GetRenderables (cpp:182-225). EveSpaceObject2\n * already calls this per decal with the hull's geometry resource and mesh\n * screen size (cpp:1578-1591); ours does the same.\n *\n * The decal is a RENDERABLE, not a batch source the parent drains: it puts\n * itself in the list and the renderer asks it for batches later, which is why\n * everything expensive happens here and GetBatches only submits.\n *\n * @param {Array} out Renderable list.\n * @param {object} _meshCache Carbon's DecalMeshCache, only used by the\n * selection path to avoid re-mapping hull buffers; unused here because a\n * decoded payload is already CPU-side.\n * @param {object} geometryResource The hull's geometry.\n * @param {number} screenSize The parent's mesh screen size, for LOD choice.\n * @returns {boolean} Whether the decal was added.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Trinity selects the LOD and builds the index list; the engine owns the device index buffer, so validity is judged on the built list rather than on a GPU allocation.\")\n GetRenderables(out = [], _meshCache = null, geometryResource = null, screenSize = Infinity)\n {\n if (this.#isVisible <= 0 || !geometryResource) return false;\n\n // A NEW MESH INVALIDATES THE BUILD. Carbon's comment calls this out as slow\n // and to be avoided, which is why it is keyed on identity rather than\n // rebuilt every frame.\n if (geometryResource !== this.#baseGeometryResource)\n {\n this.#decalGeometry = null;\n this.#baseGeometryResource = geometryResource;\n }\n\n const mesh = geometryResource.GetMeshData(0);\n\n if (!this.#decalGeometry || (mesh && mesh.lodMask !== this.#decalGeometry.lodMask))\n {\n this.#decalGeometry = this.#BuildGeometry(mesh);\n }\n\n if (!this.#decalGeometry) return false;\n\n this.#geometryLodIndex = this.#isGeometryFrozen\n ? 0\n : geometryResource.GetLodIndexForScreenSize(0, screenSize);\n\n const lod = this.#decalGeometry.lods?.[this.#geometryLodIndex];\n\n // A LOD the decal does not reach carries zero primitives, which is how\n // Carbon says \"not covered here\" - hence testing the count, not the buffer.\n if (!lod || !lod.primitiveCount) return false;\n\n out.push(this);\n\n return true;\n }\n\n /**\n * Builds the decal's index list for the hull it is attached to.\n *\n * The static lists win when present, exactly as Carbon orders it: every decal\n * on a shipped hull arrives with them, and triangle selection sits behind the\n * g_buildDecalBuffers global for decals placed at runtime (cpp:196-207).\n *\n * @param {object} mesh Decoded mesh data.\n * @returns {object|null} Built geometry, or null when there is nothing to draw.\n */\n #BuildGeometry(mesh)\n {\n if (!mesh) return null;\n\n const built = this.HasStaticIndexBuffers()\n ? BuildStaticDecalGeometry(mesh, this.staticIndexBuffers)\n : BuildDecalGeometry(mesh, this.#decalMatrix, this.#inverseDecalMatrix);\n\n if (!built.indices.length) return null;\n\n return {\n inverseDecalMatrix: mat4.clone(this.#inverseDecalMatrix),\n lodMask: mesh.lodMask ?? 0,\n lods: built.lods,\n indices: built.indices\n };\n }\n\n /** Carbon EveSpaceObjectDecal::SetHighDetailDecalState (cpp:514-517). */\n @carbon.method\n @impl.implemented\n SetHighDetailDecalState(isFrozen)\n {\n this.#isGeometryFrozen = !!isFrozen;\n return true;\n }\n\n /** Carbon EveSpaceObjectDecal::GetBatches (cpp:250-331) submits the packed\n * decal index buffers against the device geometry resource. */\n @carbon.method\n @impl.notImplemented\n GetBatches(_batches, _batchType, _perObjectData, _reason)\n {\n throw new Error(\"EveSpaceObjectDecal.GetBatches is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon EveSpaceObjectDecal::GetPickingBatches (cpp:919-926) forwards to\n * GetBatches once the attachment pick-type mask passes. */\n @carbon.method\n @impl.notImplemented\n GetPickingBatches(_batches, _pickTypes, _perObjectData)\n {\n throw new Error(\"EveSpaceObjectDecal.GetPickingBatches is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Recomposes the decal matrix from the authored rotation, position and scaling\n * and inverts it; returns whether the inverse existed.\n */\n #updateDecalMatrix()\n {\n mat4.fromRotationTranslationScale(this.#decalMatrix, this.rotation, this.position, this.scaling);\n return !!mat4.invert(this.#inverseDecalMatrix, this.#decalMatrix);\n }\n\n /** Per-frame scratch - UpdateVisibility must not allocate. */\n static #boundsScratch = box3.create();\n\n static #worldDecalScratch = mat4.create();\n\n static #offsetScratch = mat4.create();\n\n static #pointScratch = vec3.create();\n\n static #zero = vec3.create();\n\n static #one = vec3.fromValues(1, 1, 1);\n\n static #identityRotation = quat.create();\n\n static TriBatchType = TriBatchType;\n\n}\n"],"names":["_EveSpaceObjectDecal","_identity","EveSpaceObjectDecal","_withITr2Renderable","withITr2Renderable","CjsModel","e","_init_name","_init_extra_name","_init_batchType","_init_extra_batchType","_init_position","_init_extra_position","_init_minScreenSize","_init_extra_minScreenSize","_init_rotation","_init_extra_rotation","_init_scaling","_init_extra_scaling","_init_parentBoneIndex","_init_extra_parentBoneIndex","_init_decalEffect","_init_extra_decalEffect","_init_display","_init_extra_display","_init_staticIndexBuffers","_init_extra_staticIndexBuffers","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","read","int32","enum","notify","vec3","float32","quat","rebuild","objectRef","readwrite","boolean","array","carbon","method","impl","adapted","implemented","reason","notImplemented","constructor","batchType","name","position","create","minScreenSize","rotation","scaling","fromValues","parentBoneIndex","decalEffect","display","staticIndexBuffers","mat4","IEveSpaceObject2ParentData","Float32Array","SH_COEFFICIENT_COUNT","hasStaticIndexBuffers","HasStaticIndexBuffers","Initialize","OnModified","_options","CopyFrom","source","String","copy","Number","GetPosition","out","SetPosition","value","GetRotation","SetRotation","GetScaling","GetDecalMatrix","GetInverseDecalMatrix","SetScaling","GetBoneIndex","SetBoneIndex","index","SetIndices","indices","Array","from","lod","GetStaticIndexBuffers","map","slice","some","length","GetDecalPrimitiveCounts","Math","trunc","SetMinScreenSize","SetEffect","effect","SetShaderOption","SetOption","SetBatchType","SetPriority","SetBoneMatrix","boneMatrices","boneMatrixCount","bone","row","#CopyParentData","parentData","SetValues","Object","assign","shLighting","UpdateVisibility","updateContext","frustum","GetFrustum","worldDecalMatrix","multiply","transform","bounds","box3","set","corner","empty","transformMat4","addPoint","containsPoint","viewPos","IsBoxVisible","offset","getClampedPoint","subtract","fromTranslation","center","radius","toPositionRadius","pixelSize","GetPixelSizeAccrossEst","modifiedMinScreen","GetLodFactor","min","GetVisibility","HasTransparentBatches","GetSortValue","GetID","_areaId","GetPerObjectData","accumulator","vs","Alloc","ps","SetAndTranspose","invert","Set","killCount","shipData","clipSphereCenter","clipRadiusSq","clipRadius2Sq","coefficients","fill","GetRenderables","_meshCache","geometryResource","screenSize","Infinity","mesh","GetMeshData","lodMask","GetLodIndexForScreenSize","lods","primitiveCount","push","#BuildGeometry","built","BuildStaticDecalGeometry","BuildDecalGeometry","inverseDecalMatrix","clone","SetHighDetailDecalState","isFrozen","GetBatches","_batches","_batchType","_perObjectData","_reason","Error","GetPickingBatches","_pickTypes","#updateDecalMatrix","fromRotationTranslationScale","TriBatchType"],"mappings":"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"}
|