@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
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/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 +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.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 +104 -260
- 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 +82 -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":"EveChildTurret.js","sources":["../../../../../src/trinity/eve/child/EveChildTurret.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret.h\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { EveChildMesh } from \"./EveChildMesh.js\";\nimport { Tr2GrannyAnimation } from \"../../core/animation/Tr2GrannyAnimation.js\";\nimport { SendEventToAudEmitter } from \"../../core/variable/TriObserverLocal.js\";\nimport { EveTurretAiming } from \"../attachment/turrets/EveTurretAiming.js\";\nimport { EveTurretFiringFX } from \"../attachment/turrets/EveTurretFiringFX.js\";\nimport { EveTurretSet } from \"../attachment/turrets/EveTurretSet.js\";\nimport { EveTurretTarget } from \"../attachment/turrets/EveTurretTarget.js\";\n\n// Carbon file-scope constants (EveChildTurret.cpp:12-16).\nconst INVALID_BONE_INDEX = 0xffffffff;\nconst TRACKING_FADE_TIME = 1;\n\nconst MUZZLE_TRANSFORM_SCRATCH = mat4.create();\nconst FIRE_SOURCE_SCRATCH = vec3.create();\nconst FIRE_POSITION_SCRATCH = vec3.create();\nconst TARGET_OS_SCRATCH = vec3.create();\nconst INVERSE_WORLD_SCRATCH = mat4.create();\n\n/** Carbon TriGeometryResSkeletonData::FindJoint (TriGeometryRes.cpp:1841-1853): exact name match, 0xffffffff on miss. */\nfunction FindJoint(skeletonData, name)\n{\n const bones = skeletonData?.bones ?? [];\n for (let index = 0; index < bones.length; index++)\n {\n const bone = bones[index];\n const boneName = typeof bone === \"string\" ? bone : String(bone?.name ?? bone?.Name ?? \"\");\n if (boneName === name) return index;\n }\n return INVALID_BONE_INDEX;\n}\n\n\n/**\n * A single animated turret living as a space-object child: it owns its\n * target tracker, sysbone aiming, deploy/pack/fire animation state machine,\n * firing effect and movement audio. Implements the ITr2PoseModifier contract\n * (ModifyPose) and registers itself on its own animation updater, so the\n * barrels aim inside the sampled pose. Carbon instantiates it only from\n * serialized scene data - SOF never constructs one.\n */\n@type.define({ className: \"EveChildTurret\", family: \"eve/child\" })\nexport class EveChildTurret extends EveChildMesh\n{\n\n /** Indicates if the turret is active; runtime toggle, not persisted. */\n @io.readwrite\n @type.boolean\n isOnline = true;\n\n /** How much tracking is currently applied; runtime-derived. */\n @io.read\n @type.float32\n trackingInfluence = 0;\n\n /** How long tracking takes to fade in - and its influence ceiling. */\n @io.persist\n @type.float32\n maxTrackingTime = 1;\n\n /** State of the turret (persisted but not editable). */\n @io.read\n @io.persist\n @type.int32\n state = EveTurretSet.State.STATE_IDLE;\n\n // The eleven flat sysbone tunables Carbon re-exposes from the embedded\n // EveTurretAiming (EveChildTurret_Blue.cpp:25-35); same names and defaults\n // as EveTurretSet. Offsets are authored in degrees.\n @io.persist\n @type.float32\n sysBoneHeight = 1;\n\n @io.persist\n @type.float32\n sysBonePitchFactor = 1;\n\n @io.persist\n @type.float32\n sysBonePitchOffset = 0;\n\n @io.persist\n @type.float32\n sysBonePitchMin = 0;\n\n @io.persist\n @type.float32\n sysBonePitchMax = 90;\n\n @io.persist\n @type.float32\n sysBonePitch01Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch01Offset = 0;\n\n @io.persist\n @type.float32\n sysBonePitch02Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch02Offset = 0;\n\n @io.persist\n @type.float32\n sysBonePitch03Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch03Offset = 0;\n\n /** If greater than one, firing cycles through this many muzzle groups. */\n @io.persist\n @type.uint32\n maxCyclingFirePos = 1;\n\n /** The number of muzzles in one cycle group, usually one. */\n @io.persist\n @type.uint32\n cyclingFireGroupCount = 1;\n\n /** Current muzzle id due to cycling; runtime-derived. */\n @io.read\n @type.uint32\n currentCyclingFiresPos = 0;\n\n /** The module for the firing effect of this turret. */\n @io.persist\n @type.objectRef(\"EveTurretFiringFX\")\n firingEffect = null;\n\n /** A res path to the redfile containing the primary firing effect. */\n @io.notify\n @io.persist\n @type.string\n firingEffectResPath = \"\";\n\n /**\n * Resolves firingEffectResPath into a live EveTurretFiringFX. Carbon uses\n * BeResMan.LoadObject; CarbonEngineJS threads the established\n * CjsEveChildResourceLoader seam (the EveChildRef/EveChildSocket pattern) -\n * without a loader an authored path stays unresolved.\n */\n @type.objectRef(\"CjsEveChildResourceLoader\")\n resourceLoader = null;\n\n /** Size of impacts; no impact when 0 or less. */\n @io.notify\n @io.persist\n @type.float32\n impactSize = 0;\n\n /** What the impacts should hit (an ImpactBehaviour value). */\n @io.notify\n @io.persist\n @type.int32\n @type.enum(\"ImpactBehaviour\")\n impactBehaviour = EveTurretTarget.ImpactBehaviour.DAMAGE_LOCATOR;\n\n /** The observer for turret movement sounds; positioned automatically. */\n @io.persist\n @type.objectRef(\"TriObserverLocal\")\n turretMovementObserver = null;\n\n /** Whether mechanical movement sounds play when events are authored. */\n @io.persist\n @type.boolean\n playMovementSound = true;\n\n /** Audio event for mechanical noise when moving from idle to targeting. */\n @io.persist\n @type.string\n idleToTargetingMovementAudioEvent = \"\";\n\n /** Audio event for mechanical noise when moving from targeting to idle. */\n @io.persist\n @type.string\n targetingToIdleMovementAudioEvent = \"\";\n\n // Carbon m_target: created in the constructor with fade-on-locator-change\n // enabled (EveChildTurret.cpp:26-27); Blue exposes it READ-only.\n #target = new EveTurretTarget();\n\n #aiming = new EveTurretAiming();\n\n // Carbon m_systemBoneID[SYSBONE_MAX], all INVALID until geometry arrives.\n #systemBoneID = new Array(EveTurretAiming.SystemBones.SYSBONE_MAX).fill(INVALID_BONE_INDEX);\n\n #trackingInfluenceDelta = 0;\n\n #delayToFadeOutTracking = 0;\n\n #delayToFadeInTracking = 0;\n\n // Carbon m_hookedUpdater: the updater our pose modifier is registered on,\n // so a swap unhooks the old one (EveChildTurret.h:110, cpp:707-714).\n #hookedUpdater = null;\n\n #recheckTimeLeft = -1;\n\n #firingEffectMuzzlePosSet = false;\n\n #cachedGeometryRes = null;\n\n // Carbon reads m_parentData.transform in SetupFiringState (cpp:533) - the\n // PARENT transform, deliberately not this child's world transform; captured\n // from the update params each async pass.\n #parentTranslation = vec3.create();\n\n constructor()\n {\n super();\n this.#target.SetFadeOnLocatorChange(true);\n // Carbon's ctor also calls PrepareResources(); the browser runtime's\n // resource lifecycle is engine-owned and has no per-child prepare hook.\n }\n\n /** The turret's target tracker (Carbon exposes it as the READ attribute \"target\"). */\n @carbon.method\n @impl.implemented\n GetTarget()\n {\n return this.#target;\n }\n\n /**\n * The shared sysbone aiming math, synced from this turret's flat tuning\n * fields - the same object shape EveTurretSet.GetAiming returns.\n */\n @impl.adapted\n @impl.reason(\"Carbon's by-value embed becomes an accessor; the flat Blue schema is preserved on this class.\")\n GetAiming()\n {\n const aiming = this.#aiming;\n aiming.sysBoneHeight = this.sysBoneHeight;\n aiming.sysBonePitchOffset = this.sysBonePitchOffset;\n aiming.sysBonePitchFactor = this.sysBonePitchFactor;\n aiming.sysBonePitchMin = this.sysBonePitchMin;\n aiming.sysBonePitchMax = this.sysBonePitchMax;\n aiming.sysBonePitch01Offset = this.sysBonePitch01Offset;\n aiming.sysBonePitch01Factor = this.sysBonePitch01Factor;\n aiming.sysBonePitch02Offset = this.sysBonePitch02Offset;\n aiming.sysBonePitch02Factor = this.sysBonePitch02Factor;\n aiming.sysBonePitch03Offset = this.sysBonePitch03Offset;\n aiming.sysBonePitch03Factor = this.sysBonePitch03Factor;\n return aiming;\n }\n\n /**\n * Passes authored impact data into the target tracker and resolves an\n * authored firing-effect path when no inline effect won at load time\n * (Carbon EveChildTurret.cpp:48-60).\n */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n this.#target.SetImpactBehaviour(this.impactSize, this.impactBehaviour);\n if (!this.firingEffect && this.firingEffectResPath)\n {\n this.#LoadFiringEffectFromPath();\n }\n return super.Initialize();\n }\n\n /**\n * Re-syncs the tracker's impact data and reloads the firing effect when\n * the notifying fields change (Carbon cpp:61-72; the path reload has no\n * inline-effect guard, unlike Initialize).\n */\n @carbon.method\n @impl.implemented\n OnModified(value = null)\n {\n if (value === \"impactSize\" || value === \"impactBehaviour\")\n {\n this.#target.SetImpactBehaviour(this.impactSize, this.impactBehaviour);\n }\n if (value === \"firingEffectResPath\" && this.firingEffectResPath)\n {\n this.#LoadFiringEffectFromPath();\n }\n return super.OnModified(value);\n }\n\n #LoadFiringEffectFromPath()\n {\n if (!this.resourceLoader) return;\n const loaded = this.resourceLoader.LoadChild(this.firingEffectResPath, this);\n if (loaded) this.SetFiringEffect(loaded);\n }\n\n /** Registers the firing effect's entity half when displayed (Carbon cpp:73-84). */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n super.RegisterComponents();\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n if (this.firingEffect) this.firingEffect.RegisterComponents();\n }\n }\n\n /** Unregisters the firing effect's entity half; not display-gated (Carbon cpp:85-96). */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n super.UnRegisterComponents();\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n if (this.firingEffect) this.firingEffect.UnRegisterComponents();\n }\n }\n\n /**\n * Sync-side frame update (Carbon cpp:126-179): looping-effect retarget\n * recheck every two seconds while firing, firing-effect sync update, the\n * target tracker fed from the effect's start position (or this world\n * translation), and the movement observer following the world transform.\n */\n @carbon.method\n @impl.implemented\n UpdateSyncronous(updateContext, params)\n {\n const deltaT = Number(updateContext?.GetDeltaT?.() ?? updateContext?.deltaTime ?? 0) || 0;\n\n if (this.firingEffect)\n {\n this.firingEffect.SetDisplaySourceObject(this.IsVisible(updateContext));\n }\n\n this.UpdateCachedGeometryData();\n\n if (this.firingEffect)\n {\n if (this.firingEffect.IsLooping() && this.state === EveChildTurret.State.STATE_FIRING)\n {\n this.#recheckTimeLeft -= deltaT;\n if (this.#recheckTimeLeft < 0)\n {\n vec3.set(FIRE_SOURCE_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n const closestLocator = this.#target.FindClosestLocator(FIRE_SOURCE_SCRATCH, FIRE_POSITION_SCRATCH);\n if (closestLocator >= 0 && closestLocator !== this.#target.GetLocator())\n {\n this.SetupFiringState();\n }\n this.#recheckTimeLeft = 2;\n }\n }\n this.firingEffect.UpdateSynchronous(updateContext);\n }\n\n vec3.set(FIRE_POSITION_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n if (this.firingEffect)\n {\n this.firingEffect.GetStartPosition(FIRE_POSITION_SCRATCH);\n }\n this.#target.Update(deltaT, FIRE_POSITION_SCRATCH);\n\n if (this.mesh && this.turretMovementObserver)\n {\n this.turretMovementObserver.Update(this.worldTransform);\n }\n return super.UpdateSyncronous(updateContext, params);\n }\n\n /**\n * Async-side frame update (Carbon cpp:181-260): tracking-influence fades\n * (clamped to [0, maxTrackingTime]), the base mesh update, then muzzle\n * transforms and target end position onto the firing effect - with the\n * late muzzle fallback to the turret root until geometry loads.\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.implemented\n UpdateAsyncronous(updateContext, params)\n {\n const deltaT = Number(updateContext?.GetDeltaT?.() ?? updateContext?.deltaTime ?? 0) || 0;\n\n if (this.#trackingInfluenceDelta !== 0)\n {\n this.trackingInfluence += this.#trackingInfluenceDelta * deltaT;\n if (this.trackingInfluence > this.maxTrackingTime)\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n }\n else if (this.trackingInfluence < 0)\n {\n this.trackingInfluence = 0;\n this.#trackingInfluenceDelta = 0;\n }\n }\n\n if (this.#delayToFadeOutTracking > 0)\n {\n this.#delayToFadeOutTracking -= deltaT;\n if (this.#delayToFadeOutTracking <= 0)\n {\n this.#delayToFadeOutTracking = 0;\n this.#trackingInfluenceDelta = -1 / TRACKING_FADE_TIME;\n }\n }\n\n if (this.#delayToFadeInTracking > 0)\n {\n this.#delayToFadeInTracking -= deltaT;\n if (this.#delayToFadeInTracking <= 0)\n {\n this.#delayToFadeInTracking = 0;\n this.#trackingInfluenceDelta = 1 / TRACKING_FADE_TIME;\n }\n }\n\n const parentTransform = params?.localToWorldTransform;\n if (parentTransform && parentTransform.length === 16)\n {\n vec3.set(this.#parentTranslation,\n parentTransform[12], parentTransform[13], parentTransform[14]);\n }\n\n const result = super.UpdateAsyncronous(updateContext, params);\n\n if (this.firingEffect)\n {\n if (this.mesh)\n {\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount(); muzzle++)\n {\n this.GetFiringBoneWorldTransform(muzzle, MUZZLE_TRANSFORM_SCRATCH);\n this.firingEffect.SetMuzzleTransform(muzzle, MUZZLE_TRANSFORM_SCRATCH);\n }\n this.#firingEffectMuzzlePosSet = true;\n }\n\n this.firingEffect.SetEndPosition(this.#target.GetTargetPosition());\n\n if (this.firingEffect.UpdateAsynchronous(updateContext))\n {\n if (!this.#firingEffectMuzzlePosSet)\n {\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount(); muzzle++)\n {\n this.firingEffect.SetMuzzleTransform(muzzle, this.worldTransform);\n }\n this.#firingEffectMuzzlePosSet = true;\n }\n this.firingEffect.SetDisplayDestObject(this.#target.ShowDestObject());\n }\n }\n return result;\n }\n\n /** Forwards visibility to the firing effect when displayed (Carbon cpp:262-270). */\n @carbon.method\n @impl.implemented\n UpdateVisibility(updateContext, parentTransform, parentLod)\n {\n const result = super.UpdateVisibility(updateContext, parentTransform, parentLod);\n if (this.display && this.firingEffect)\n {\n this.firingEffect.UpdateVisibility(updateContext);\n }\n return result;\n }\n\n /** Appends the firing effect's renderables when displayed (Carbon cpp:272-280). */\n @carbon.method\n @impl.implemented\n GetRenderables(renderables)\n {\n super.GetRenderables(renderables);\n if (this.display && this.firingEffect)\n {\n this.firingEffect.GetRenderables(renderables);\n }\n return renderables;\n }\n\n /**\n * Rebuilds the cached sysbone/muzzle lookups when the geometry resource\n * changes (Carbon cpp:302-315).\n */\n @carbon.method\n @impl.implemented\n UpdateCachedGeometryData()\n {\n const geometryRes = this.GetGeometryRes();\n if (geometryRes === this.#cachedGeometryRes) return;\n this.ReleaseCachedGeometryData();\n if (geometryRes && geometryRes.IsGood())\n {\n this.BuildCachedGeometryData(geometryRes);\n this.#cachedGeometryRes = geometryRes;\n }\n }\n\n /**\n * Finds the system bones in the model skeleton, wires the firing effect's\n * muzzle bones, hooks the animation and forces the idle animation for the\n * current state (Carbon cpp:316-336; the sequencing is behavior).\n */\n @carbon.method\n @impl.implemented\n BuildCachedGeometryData(geometryRes)\n {\n if (geometryRes.GetSkeletonCount())\n {\n const skeletonData = geometryRes.GetSkeletonData(0);\n if (skeletonData)\n {\n for (let bone = 0; bone < EveTurretAiming.SystemBones.SYSBONE_MAX; bone++)\n {\n this.#systemBoneID[bone] = FindJoint(skeletonData, EveTurretAiming.getSystemBoneName(bone));\n }\n this.InitializeFiringEffect();\n }\n }\n this.InitializeAnimation();\n this.ForceIdleAnimation();\n }\n\n /** Drops the cached geometry link and the muzzle stamp (Carbon cpp:337-341). */\n @carbon.method\n @impl.implemented\n ReleaseCachedGeometryData()\n {\n this.#cachedGeometryRes = null;\n this.#firingEffectMuzzlePosSet = false;\n }\n\n /**\n * Go into state deactive: play the pack animation and stay inside the\n * ship (Carbon cpp:343-376; the STATE_FIRING case deliberately falls\n * through to STATE_TARGETING).\n */\n @carbon.method\n @impl.implemented\n EnterStateDeactive()\n {\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n break;\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.trackingInfluence = 0;\n this.#PlayAnimation(\"Pack\", \"Inactive\");\n this.#delayToFadeOutTracking = 0;\n break;\n case State.STATE_FIRING:\n if (this.firingEffect) this.firingEffect.StopFiring();\n // DON'T break, just continue with stopping things:\n // eslint-disable-next-line no-fallthrough\n case State.STATE_TARGETING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n this.#PlayAnimation(\"Pack\", \"Inactive\", TRACKING_FADE_TIME);\n break;\n default:\n break;\n }\n this.state = State.STATE_DEACTIVE;\n }\n\n /** Go into state idle: face the cannons forward (Carbon cpp:378-418). */\n @carbon.method\n @impl.implemented\n EnterStateIdle()\n {\n if (!this.isOnline) return;\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_INVALID:\n case State.STATE_RELOADING:\n this.#PlayAnimation(\"\", \"Active\");\n break;\n case State.STATE_DEACTIVE:\n this.#PlayAnimation(\"Deploy\", \"Active\");\n this.trackingInfluence = 0;\n break;\n case State.STATE_IDLE:\n break;\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"\", \"Active\", TRACKING_FADE_TIME);\n if (this.playMovementSound && this.targetingToIdleMovementAudioEvent)\n {\n this.#SendMovementAudioEvent(this.targetingToIdleMovementAudioEvent);\n }\n break;\n default:\n break;\n }\n this.state = State.STATE_IDLE;\n }\n\n /** Go into state targeting: face the cannons toward the enemy (Carbon cpp:420-459). */\n @carbon.method\n @impl.implemented\n EnterStateTargeting()\n {\n if (!this.isOnline) return;\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n {\n const animLength = this.#PlayAnimation(\"Deploy\", \"Active\", TRACKING_FADE_TIME);\n this.#delayToFadeInTracking = animLength + 0.0001;\n break;\n }\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#delayToFadeInTracking = 0.0001;\n this.#PlayAnimation(\"\", \"Active\", TRACKING_FADE_TIME);\n break;\n case State.STATE_TARGETING:\n break;\n case State.STATE_FIRING:\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"\", \"Active\", 0);\n break;\n default:\n break;\n }\n this.state = State.STATE_TARGETING;\n }\n\n /**\n * Go into state firing (Carbon cpp:461-500): a looping effect already\n * firing only refreshes its move objects; otherwise the effect is stopped,\n * prepared (with muzzle cycling when configured) and pointed at the\n * target's impact surface.\n */\n @carbon.method\n @impl.implemented\n EnterStateFiring()\n {\n if (!this.SetupFiringState()) return;\n const State = EveChildTurret.State;\n\n if (this.firingEffect && this.state === State.STATE_FIRING)\n {\n if (this.firingEffect.IsLooping())\n {\n this.firingEffect.PrepareFiringEffectMoveObjects();\n return;\n }\n this.firingEffect.StopFiring();\n }\n\n if (this.firingEffect)\n {\n if (this.maxCyclingFirePos > 1)\n {\n this.firingEffect.PrepareFiring(0, this.currentCyclingFiresPos, this.cyclingFireGroupCount);\n }\n else\n {\n this.firingEffect.PrepareFiring(0);\n }\n this.firingEffect.SetImpactConfiguration(this.#target.GetImpactConfiguration());\n }\n\n this.state = State.STATE_FIRING;\n }\n\n /**\n * Aims at the closest facing damage locator, advances muzzle cycling, and\n * starts the fire animation + tracker timing (Carbon cpp:502-556). The\n * locator search uses THIS turret's world translation; the tracker's fire\n * source deliberately uses the PARENT transform's translation.\n */\n @carbon.method\n @impl.implemented\n SetupFiringState()\n {\n const State = EveChildTurret.State;\n if (this.state === State.STATE_DEACTIVE)\n {\n return false;\n }\n vec3.set(FIRE_SOURCE_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n const closestLocator = this.#target.FindClosestLocator(FIRE_SOURCE_SCRATCH, FIRE_POSITION_SCRATCH);\n\n if (this.maxCyclingFirePos > 1)\n {\n this.currentCyclingFiresPos += this.cyclingFireGroupCount;\n if (this.currentCyclingFiresPos >= this.maxCyclingFirePos * this.cyclingFireGroupCount)\n {\n this.currentCyclingFiresPos = 0;\n }\n }\n\n const effectTotalTime = this.firingEffect ? this.firingEffect.GetFiringDuration() : 0;\n const effectPeakTime = this.firingEffect ? this.firingEffect.GetFiringPeakTime() : 0;\n\n switch (this.state)\n {\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#delayToFadeInTracking = 0.0001;\n this.#PlayAnimation(this.#GetFireAnimationName(), \"Active\", this.maxTrackingTime);\n this.#target.StartFireAtLocator(\n closestLocator, this.maxTrackingTime + effectPeakTime,\n effectTotalTime - effectPeakTime, this.#parentTranslation);\n break;\n case State.STATE_FIRING:\n case State.STATE_TARGETING:\n this.#PlayAnimation(this.#GetFireAnimationName(), \"Active\", this.maxTrackingTime);\n this.#target.StartFireAtLocator(\n closestLocator, this.maxTrackingTime + effectPeakTime,\n effectTotalTime - effectPeakTime, this.#parentTranslation);\n break;\n default:\n break;\n }\n return true;\n }\n\n /**\n * Go into state reloading (Carbon cpp:558-589). Carbon's DEACTIVE case\n * comments \"ignore\" yet still stamps STATE_RELOADING at the end - that\n * quirk is preserved verbatim.\n */\n @carbon.method\n @impl.implemented\n EnterStateReloading()\n {\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n break;\n case State.STATE_INVALID:\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#PlayAnimation(\"Reload\", \"Active\", 0);\n break;\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"Reload\", \"Active\", TRACKING_FADE_TIME);\n break;\n default:\n break;\n }\n this.state = State.STATE_RELOADING;\n }\n\n /** Force into state deactive: no animation transition, just flip (Carbon cpp:591-606). */\n @carbon.method\n @impl.implemented\n ForceStateDeactive()\n {\n this.trackingInfluence = 0;\n this.#delayToFadeOutTracking = 0;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.state = EveChildTurret.State.STATE_DEACTIVE;\n this.ForceIdleAnimation();\n }\n\n /** Force-plays the idle loop matching the current state (Carbon cpp:608-631). */\n @carbon.method\n @impl.implemented\n ForceIdleAnimation()\n {\n const State = EveChildTurret.State;\n let idleAnimName = \"\";\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n idleAnimName = \"Inactive\";\n break;\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n idleAnimName = \"Active\";\n break;\n default:\n break;\n }\n if (idleAnimName.length > 0)\n {\n this.#PlayAnimation(\"\", idleAnimName, 0);\n }\n }\n\n /** Force into state targeting: tracking pinned to its ceiling, no transition (Carbon cpp:633-643). */\n @carbon.method\n @impl.implemented\n ForceStateTargeting()\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n this.state = EveChildTurret.State.STATE_TARGETING;\n this.#PlayAnimation(\"\", \"Active\", 0);\n }\n\n /**\n * The world transform of a muzzle's firing bone, falling back to this\n * turret's world transform without a mesh or effect (Carbon cpp:645-661).\n */\n @carbon.method\n @impl.implemented\n GetFiringBoneWorldTransform(muzzle, out = mat4.create())\n {\n if (!this.mesh || !this.firingEffect)\n {\n return mat4.copy(out, this.worldTransform);\n }\n const boneID = this.firingEffect.GetPerMuzzleBoneID(muzzle);\n return this.GetTurretBoneTransform(boneID, out);\n }\n\n /**\n * Wires the firing effect's muzzle bones from the skeleton: bones named\n * GetFiringBoneName() + a two-digit 1-based index, e.g. Pos_Fire01\n * (Carbon cpp:663-696). Carbon also registers the effect with the quad\n * renderer singleton here; quad registration is engine-owned in the\n * browser runtime and happens through the engine's own registration pass.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2QuadRenderer is an engine singleton in Carbon; the browser engine owns quad registration.\")\n InitializeFiringEffect()\n {\n this.#firingEffectMuzzlePosSet = false;\n if (!this.firingEffect) return;\n\n const geometryRes = this.GetGeometryRes();\n if (geometryRes && geometryRes.GetSkeletonCount())\n {\n const skeletonData = geometryRes.GetSkeletonData(0);\n if (skeletonData)\n {\n const muzzleCount = this.firingEffect.GetPerMuzzleEffectCount();\n const boneCount = Math.min(muzzleCount, EveChildTurret.MUZZLECOUNT_MAX);\n for (let muzzle = 0; muzzle < boneCount; muzzle++)\n {\n const boneName = `${this.firingEffect.GetFiringBoneName()}${String(muzzle + 1).padStart(2, \"0\")}`;\n this.firingEffect.SetMuzzleBoneID(muzzle, FindJoint(skeletonData, boneName));\n }\n }\n }\n }\n\n /**\n * Force-creates the animation updater BEFORE the base wiring, then hooks\n * this turret in as the updater's pose modifier, unhooking any previously\n * hooked updater on swap (Carbon cpp:698-715). CleanUp performs Carbon's\n * destructor unhook.\n */\n @carbon.method\n @impl.implemented\n InitializeAnimation()\n {\n if (!this.animationUpdater)\n {\n this.animationUpdater = new Tr2GrannyAnimation();\n }\n super.InitializeAnimation();\n\n if (this.#hookedUpdater !== this.animationUpdater)\n {\n if (this.#hookedUpdater && this.#hookedUpdater.GetPoseModifier() === this)\n {\n this.#hookedUpdater.SetPoseModifier(null);\n }\n this.animationUpdater.SetPoseModifier(this);\n this.#hookedUpdater = this.animationUpdater;\n }\n }\n\n /**\n * Carbon's destructor obligations: unhook the pose modifier and clean up\n * the firing effect (Carbon cpp:32-47). JS has no destructor; owners call\n * CleanUp when discarding the turret.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The C++ destructor becomes an explicit CleanUp obligation.\")\n CleanUp(context = { currentTime: 0, deltaTime: 0 })\n {\n if (this.#hookedUpdater && this.#hookedUpdater.GetPoseModifier() === this)\n {\n this.#hookedUpdater.SetPoseModifier(null);\n }\n this.#hookedUpdater = null;\n if (this.firingEffect) this.firingEffect.CleanUp(context);\n this.ReleaseCachedGeometryData();\n }\n\n /**\n * The ITr2PoseModifier hook (Carbon cpp:717-741): poses every found\n * system bone toward the tracked target in turret space. Always passes\n * null for the pitch localTransform - only EveTurretSet uses the\n * behind-the-arm flip.\n */\n @carbon.method\n @impl.implemented\n ModifyPose(_skeleton, pose)\n {\n if (this.trackingInfluence === 0) return;\n\n const tracking = this.#target.GetTrackingPosition();\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\n {\n mat4.identity(INVERSE_WORLD_SCRATCH);\n }\n vec3.transformMat4(TARGET_OS_SCRATCH, tracking, INVERSE_WORLD_SCRATCH);\n\n const aiming = this.GetAiming();\n for (let bone = 0; bone < EveTurretAiming.SystemBones.SYSBONE_MAX; bone++)\n {\n // covers INVALID since INVALID_BONE_INDEX exceeds any bone count\n if (this.#systemBoneID[bone] < pose.boneTransforms.length)\n {\n const boneTransform = pose.boneTransforms[this.#systemBoneID[bone]];\n aiming.ModifySystemBoneTransform(\n bone, TARGET_OS_SCRATCH, null, this.trackingInfluence,\n boneTransform.position, boneTransform.rotation);\n }\n }\n }\n\n /**\n * A bone's world-of-pose transform lifted into world space - row-vector\n * boneLocal * worldTransform, gl multiply(out, worldTransform, boneWorld)\n * (Carbon cpp:743-757).\n */\n @carbon.method\n @impl.implemented\n GetTurretBoneTransform(boneID, out = mat4.create())\n {\n mat4.copy(out, this.worldTransform);\n if (this.animationUpdater)\n {\n const boneWorld = this.animationUpdater.GetBoneTransform(boneID);\n if (boneWorld)\n {\n mat4.multiply(out, this.worldTransform, boneWorld);\n }\n }\n return out;\n }\n\n /** The mesh's geometry resource, or null (Carbon cpp:758-761). */\n @carbon.method\n @impl.implemented\n GetGeometryRes()\n {\n return this.mesh ? this.mesh.GetGeometryResource() : null;\n }\n\n /**\n * Stops running animations after the delay, queues the action animation\n * once on the base layer and the idle loop forever after it; returns the\n * action animation's duration (Carbon cpp:763-787).\n */\n #PlayAnimation(animName, animNameIdle, delay = 0)\n {\n const updater = this.animationUpdater;\n if (!updater) return 0;\n\n updater.StopAnimations(delay);\n\n let animLength = 0;\n if (animName)\n {\n if (updater.PlayAnimation(animName, false, 1, 0, 1, false))\n {\n animLength = updater.FindAnimationDurationByName(animName);\n }\n }\n if (animNameIdle)\n {\n updater.PlayAnimation(animNameIdle, false, 0, 0, 1, false);\n }\n return animLength;\n }\n\n /** \"Fire\", or \"Fire0\" + cycle digit past the first cycle (Carbon cpp:788-799). */\n #GetFireAnimationName()\n {\n let name = \"Fire\";\n if (this.currentCyclingFiresPos > 0)\n {\n name += \"0\";\n name += String(Math.trunc(this.currentCyclingFiresPos / this.cyclingFireGroupCount));\n }\n return name;\n }\n\n /** The firing effect module (Carbon cpp:801-804). */\n @carbon.method\n @impl.implemented\n GetFiringEffect()\n {\n return this.firingEffect;\n }\n\n /**\n * Swaps the firing effect, moving its component registration and rewiring\n * its muzzle bones (Carbon cpp:806-819).\n */\n @carbon.method\n @impl.implemented\n SetFiringEffect(firingEffect)\n {\n if (this.firingEffect) this.firingEffect.UnRegisterComponents();\n this.firingEffect = firingEffect ?? null;\n if (this.firingEffect) this.firingEffect.RegisterComponents();\n this.InitializeFiringEffect();\n }\n\n /**\n * Attaches to a target object, firing the movement audio when moving off\n * idle or switching targets (Carbon cpp:821-848). Passing null is a no-op:\n * Carbon's API cannot clear a target.\n */\n @carbon.method\n @impl.implemented\n SetTargetObject(target)\n {\n if (!target) return;\n const oldTarget = this.#target.GetTargetable();\n this.#target.SetTargetable(target);\n\n if (this.playMovementSound && this.idleToTargetingMovementAudioEvent)\n {\n if (this.state === EveChildTurret.State.STATE_IDLE || oldTarget !== this.#target.GetTargetable())\n {\n this.#SendMovementAudioEvent(this.idleToTargetingMovementAudioEvent);\n }\n }\n this.SetTargetScale();\n }\n\n /** The tracked targetable, or null (Carbon cpp:850-853). */\n @carbon.method\n @impl.implemented\n GetTargetObject()\n {\n return this.#target.GetTargetable();\n }\n\n /** Scales the firing effect by the target's radius (Carbon cpp:855-857). */\n @carbon.method\n @impl.implemented\n SetTargetScale()\n {\n if (this.firingEffect)\n {\n this.firingEffect.SetScaleByRadius(this.#target.GetRadius());\n }\n }\n\n /** Sends a movement audio event through the observer's emitter (the EveTurretSet seam). */\n #SendMovementAudioEvent(eventName)\n {\n SendEventToAudEmitter(this.turretMovementObserver, eventName);\n }\n\n // The state enum matches EveTurretSet's values (Carbon EveChildTurret.h:\n // 61-69); one identity, owned by the set that had it first.\n static State = EveTurretSet.State;\n\n static ImpactBehaviour = EveTurretTarget.ImpactBehaviour;\n\n static INVALID_BONE_INDEX = INVALID_BONE_INDEX;\n\n static MUZZLECOUNT_MAX = EveTurretFiringFX.MUZZLE_COUNT_MAX;\n\n}\n"],"names":["INVALID_BONE_INDEX","TRACKING_FADE_TIME","MUZZLE_TRANSFORM_SCRATCH","mat4","create","FIRE_SOURCE_SCRATCH","vec3","FIRE_POSITION_SCRATCH","TARGET_OS_SCRATCH","INVERSE_WORLD_SCRATCH","FindJoint","skeletonData","name","bones","index","length","bone","boneName","String","Name","_EveChildTurret","_identity","EveChildTurret","EveChildMesh","e","_init_isOnline","_init_extra_isOnline","_init_trackingInfluence","_init_extra_trackingInfluence","_init_maxTrackingTime","_init_extra_maxTrackingTime","_init_state","_init_extra_state","_init_sysBoneHeight","_init_extra_sysBoneHeight","_init_sysBonePitchFactor","_init_extra_sysBonePitchFactor","_init_sysBonePitchOffset","_init_extra_sysBonePitchOffset","_init_sysBonePitchMin","_init_extra_sysBonePitchMin","_init_sysBonePitchMax","_init_extra_sysBonePitchMax","_init_sysBonePitch01Factor","_init_extra_sysBonePitch01Factor","_init_sysBonePitch01Offset","_init_extra_sysBonePitch01Offset","_init_sysBonePitch02Factor","_init_extra_sysBonePitch02Factor","_init_sysBonePitch02Offset","_init_extra_sysBonePitch02Offset","_init_sysBonePitch03Factor","_init_extra_sysBonePitch03Factor","_init_sysBonePitch03Offset","_init_extra_sysBonePitch03Offset","_init_maxCyclingFirePos","_init_extra_maxCyclingFirePos","_init_cyclingFireGroupCount","_init_extra_cyclingFireGroupCount","_init_currentCyclingFiresPos","_init_extra_currentCyclingFiresPos","_init_firingEffect","_init_extra_firingEffect","_init_firingEffectResPath","_init_extra_firingEffectResPath","_init_resourceLoader","_init_extra_resourceLoader","_init_impactSize","_init_extra_impactSize","_init_impactBehaviour","_init_extra_impactBehaviour","_init_turretMovementObserver","_init_extra_turretMovementObserver","_init_playMovementSound","_init_extra_playMovementSound","_init_idleToTargetingMovementAudioEvent","_init_extra_idleToTargetingMovementAudioEvent","_init_targetingToIdleMovementAudioEvent","_init_extra_targetingToIdleMovementAudioEvent","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","readwrite","boolean","read","float32","persist","int32","uint32","objectRef","notify","string","enum","carbon","method","impl","implemented","adapted","reason","contextual","isOnline","trackingInfluence","maxTrackingTime","state","EveTurretSet","State","STATE_IDLE","sysBoneHeight","sysBonePitchFactor","sysBonePitchOffset","sysBonePitchMin","sysBonePitchMax","sysBonePitch01Factor","sysBonePitch01Offset","sysBonePitch02Factor","sysBonePitch02Offset","sysBonePitch03Factor","sysBonePitch03Offset","maxCyclingFirePos","cyclingFireGroupCount","currentCyclingFiresPos","firingEffect","firingEffectResPath","resourceLoader","impactSize","impactBehaviour","EveTurretTarget","ImpactBehaviour","DAMAGE_LOCATOR","turretMovementObserver","playMovementSound","idleToTargetingMovementAudioEvent","targetingToIdleMovementAudioEvent","EveTurretAiming","Array","SystemBones","SYSBONE_MAX","fill","constructor","SetFadeOnLocatorChange","GetTarget","GetAiming","aiming","Initialize","SetImpactBehaviour","OnModified","value","#LoadFiringEffectFromPath","loaded","LoadChild","SetFiringEffect","RegisterComponents","registry","GetComponentRegistry","display","UnRegisterComponents","UpdateSyncronous","updateContext","params","deltaT","Number","GetDeltaT","deltaTime","SetDisplaySourceObject","IsVisible","UpdateCachedGeometryData","IsLooping","STATE_FIRING","set","worldTransform","closestLocator","FindClosestLocator","GetLocator","SetupFiringState","UpdateSynchronous","GetStartPosition","Update","mesh","UpdateAsyncronous","parentTransform","localToWorldTransform","result","muzzle","GetPerMuzzleEffectCount","GetFiringBoneWorldTransform","SetMuzzleTransform","SetEndPosition","GetTargetPosition","UpdateAsynchronous","SetDisplayDestObject","ShowDestObject","UpdateVisibility","parentLod","GetRenderables","renderables","geometryRes","GetGeometryRes","ReleaseCachedGeometryData","IsGood","BuildCachedGeometryData","GetSkeletonCount","GetSkeletonData","getSystemBoneName","InitializeFiringEffect","InitializeAnimation","ForceIdleAnimation","EnterStateDeactive","STATE_DEACTIVE","STATE_RELOADING","StopFiring","STATE_TARGETING","StopFireAtLocator","EnterStateIdle","STATE_INVALID","EnterStateTargeting","animLength","EnterStateFiring","PrepareFiringEffectMoveObjects","PrepareFiring","SetImpactConfiguration","GetImpactConfiguration","effectTotalTime","GetFiringDuration","effectPeakTime","GetFiringPeakTime","StartFireAtLocator","EnterStateReloading","ForceStateDeactive","idleAnimName","ForceStateTargeting","out","copy","boneID","GetPerMuzzleBoneID","GetTurretBoneTransform","muzzleCount","boneCount","Math","min","MUZZLECOUNT_MAX","GetFiringBoneName","padStart","SetMuzzleBoneID","animationUpdater","Tr2GrannyAnimation","GetPoseModifier","SetPoseModifier","CleanUp","context","currentTime","ModifyPose","_skeleton","pose","tracking","GetTrackingPosition","invert","identity","transformMat4","boneTransforms","boneTransform","ModifySystemBoneTransform","position","rotation","boneWorld","GetBoneTransform","multiply","GetGeometryResource","#PlayAnimation","animName","animNameIdle","delay","updater","StopAnimations","PlayAnimation","FindAnimationDurationByName","#GetFireAnimationName","trunc","GetFiringEffect","SetTargetObject","target","oldTarget","GetTargetable","SetTargetable","SetTargetScale","GetTargetObject","SetScaleByRadius","GetRadius","#SendMovementAudioEvent","eventName","SendEventToAudEmitter","EveTurretFiringFX","MUZZLE_COUNT_MAX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildTurret.js","sources":["../../../../../src/trinity/eve/child/EveChildTurret.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret.h\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { vec3 } from \"#math/vec3\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { EveChildMesh } from \"./EveChildMesh.js\";\nimport { Tr2GrannyAnimation } from \"../../core/animation/Tr2GrannyAnimation.js\";\nimport { SendEventToAudEmitter } from \"../../core/variable/TriObserverLocal.js\";\nimport { EveTurretAiming } from \"../attachment/turrets/EveTurretAiming.js\";\nimport { EveTurretFiringFX } from \"../attachment/turrets/EveTurretFiringFX.js\";\nimport { EveTurretSet } from \"../attachment/turrets/EveTurretSet.js\";\nimport { EveTurretTarget } from \"../attachment/turrets/EveTurretTarget.js\";\n\n// Carbon file-scope constants (EveChildTurret.cpp:12-16).\nconst INVALID_BONE_INDEX = 0xffffffff;\nconst TRACKING_FADE_TIME = 1;\n\nconst MUZZLE_TRANSFORM_SCRATCH = mat4.create();\nconst FIRE_SOURCE_SCRATCH = vec3.create();\nconst FIRE_POSITION_SCRATCH = vec3.create();\nconst TARGET_OS_SCRATCH = vec3.create();\nconst INVERSE_WORLD_SCRATCH = mat4.create();\n\n/** Carbon TriGeometryResSkeletonData::FindJoint (TriGeometryRes.cpp:1841-1853): exact name match, 0xffffffff on miss. */\nfunction FindJoint(skeletonData, name)\n{\n const bones = skeletonData?.bones ?? [];\n for (let index = 0; index < bones.length; index++)\n {\n const bone = bones[index];\n const boneName = typeof bone === \"string\" ? bone : String(bone?.name ?? bone?.Name ?? \"\");\n if (boneName === name) return index;\n }\n return INVALID_BONE_INDEX;\n}\n\n\n/**\n * A single animated turret living as a space-object child: it owns its\n * target tracker, sysbone aiming, deploy/pack/fire animation state machine,\n * firing effect and movement audio. Implements the ITr2PoseModifier contract\n * (ModifyPose) and registers itself on its own animation updater, so the\n * barrels aim inside the sampled pose. Carbon instantiates it only from\n * serialized scene data - SOF never constructs one.\n */\n@type.define({ className: \"EveChildTurret\", family: \"eve/child\" })\nexport class EveChildTurret extends EveChildMesh\n{\n\n /** Indicates if the turret is active; runtime toggle, not persisted. */\n @io.readwrite\n @type.boolean\n isOnline = true;\n\n /** How much tracking is currently applied; runtime-derived. */\n @io.read\n @type.float32\n trackingInfluence = 0;\n\n /** How long tracking takes to fade in - and its influence ceiling. */\n @io.persist\n @type.float32\n maxTrackingTime = 1;\n\n /** State of the turret (persisted but not editable). */\n @io.read\n @io.persist\n @type.int32\n state = EveTurretSet.State.STATE_IDLE;\n\n // The eleven flat sysbone tunables Carbon re-exposes from the embedded\n // EveTurretAiming (EveChildTurret_Blue.cpp:25-35); same names and defaults\n // as EveTurretSet. Offsets are authored in degrees.\n @io.persist\n @type.float32\n sysBoneHeight = 1;\n\n @io.persist\n @type.float32\n sysBonePitchFactor = 1;\n\n @io.persist\n @type.float32\n sysBonePitchOffset = 0;\n\n @io.persist\n @type.float32\n sysBonePitchMin = 0;\n\n @io.persist\n @type.float32\n sysBonePitchMax = 90;\n\n @io.persist\n @type.float32\n sysBonePitch01Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch01Offset = 0;\n\n @io.persist\n @type.float32\n sysBonePitch02Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch02Offset = 0;\n\n @io.persist\n @type.float32\n sysBonePitch03Factor = 1;\n\n @io.persist\n @type.float32\n sysBonePitch03Offset = 0;\n\n /** If greater than one, firing cycles through this many muzzle groups. */\n @io.persist\n @type.uint32\n maxCyclingFirePos = 1;\n\n /** The number of muzzles in one cycle group, usually one. */\n @io.persist\n @type.uint32\n cyclingFireGroupCount = 1;\n\n /** Current muzzle id due to cycling; runtime-derived. */\n @io.read\n @type.uint32\n currentCyclingFiresPos = 0;\n\n /** The module for the firing effect of this turret. */\n @io.persist\n @type.objectRef(\"EveTurretFiringFX\")\n firingEffect = null;\n\n /** A res path to the redfile containing the primary firing effect. */\n @io.notify\n @io.persist\n @type.string\n firingEffectResPath = \"\";\n\n /**\n * Resolves firingEffectResPath into a live EveTurretFiringFX. Carbon uses\n * BeResMan.LoadObject; CarbonEngineJS threads the established\n * CjsEveChildResourceLoader seam (the EveChildRef/EveChildSocket pattern) -\n * without a loader an authored path stays unresolved.\n */\n @type.objectRef(\"CjsEveChildResourceLoader\")\n resourceLoader = null;\n\n /** Size of impacts; no impact when 0 or less. */\n @io.notify\n @io.persist\n @type.float32\n impactSize = 0;\n\n /** What the impacts should hit (an ImpactBehaviour value). */\n @io.notify\n @io.persist\n @type.int32\n @type.enum(\"ImpactBehaviour\")\n impactBehaviour = EveTurretTarget.ImpactBehaviour.DAMAGE_LOCATOR;\n\n /** The observer for turret movement sounds; positioned automatically. */\n @io.persist\n @type.objectRef(\"TriObserverLocal\")\n turretMovementObserver = null;\n\n /** Whether mechanical movement sounds play when events are authored. */\n @io.persist\n @type.boolean\n playMovementSound = true;\n\n /** Audio event for mechanical noise when moving from idle to targeting. */\n @io.persist\n @type.string\n idleToTargetingMovementAudioEvent = \"\";\n\n /** Audio event for mechanical noise when moving from targeting to idle. */\n @io.persist\n @type.string\n targetingToIdleMovementAudioEvent = \"\";\n\n // Carbon m_target: created in the constructor with fade-on-locator-change\n // enabled (EveChildTurret.cpp:26-27); Blue exposes it READ-only.\n #target = new EveTurretTarget();\n\n #aiming = new EveTurretAiming();\n\n // Carbon m_systemBoneID[SYSBONE_MAX], all INVALID until geometry arrives.\n #systemBoneID = new Array(EveTurretAiming.SystemBones.SYSBONE_MAX).fill(INVALID_BONE_INDEX);\n\n #trackingInfluenceDelta = 0;\n\n #delayToFadeOutTracking = 0;\n\n #delayToFadeInTracking = 0;\n\n // Carbon m_hookedUpdater: the updater our pose modifier is registered on,\n // so a swap unhooks the old one (EveChildTurret.h:110, cpp:707-714).\n #hookedUpdater = null;\n\n #recheckTimeLeft = -1;\n\n #firingEffectMuzzlePosSet = false;\n\n #cachedGeometryRes = null;\n\n // Carbon reads m_parentData.transform in SetupFiringState (cpp:533) - the\n // PARENT transform, deliberately not this child's world transform; captured\n // from the update params each async pass.\n #parentTranslation = vec3.create();\n\n /** Enables target fading when the turret's locator changes. */\n constructor()\n {\n super();\n this.#target.SetFadeOnLocatorChange(true);\n // Carbon's ctor also calls PrepareResources(); the browser runtime's\n // resource lifecycle is engine-owned and has no per-child prepare hook.\n }\n\n /** The turret's target tracker (Carbon exposes it as the READ attribute \"target\"). */\n @carbon.method\n @impl.implemented\n GetTarget()\n {\n return this.#target;\n }\n\n /**\n * The shared sysbone aiming math, synced from this turret's flat tuning\n * fields - the same object shape EveTurretSet.GetAiming returns.\n */\n @impl.adapted\n @impl.reason(\"Carbon's by-value embed becomes an accessor; the flat Blue schema is preserved on this class.\")\n GetAiming()\n {\n const aiming = this.#aiming;\n aiming.sysBoneHeight = this.sysBoneHeight;\n aiming.sysBonePitchOffset = this.sysBonePitchOffset;\n aiming.sysBonePitchFactor = this.sysBonePitchFactor;\n aiming.sysBonePitchMin = this.sysBonePitchMin;\n aiming.sysBonePitchMax = this.sysBonePitchMax;\n aiming.sysBonePitch01Offset = this.sysBonePitch01Offset;\n aiming.sysBonePitch01Factor = this.sysBonePitch01Factor;\n aiming.sysBonePitch02Offset = this.sysBonePitch02Offset;\n aiming.sysBonePitch02Factor = this.sysBonePitch02Factor;\n aiming.sysBonePitch03Offset = this.sysBonePitch03Offset;\n aiming.sysBonePitch03Factor = this.sysBonePitch03Factor;\n return aiming;\n }\n\n /**\n * Passes authored impact data into the target tracker and resolves an\n * authored firing-effect path when no inline effect won at load time\n * (Carbon EveChildTurret.cpp:48-60).\n */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n this.#target.SetImpactBehaviour(this.impactSize, this.impactBehaviour);\n if (!this.firingEffect && this.firingEffectResPath)\n {\n this.#LoadFiringEffectFromPath();\n }\n return super.Initialize();\n }\n\n /**\n * Re-syncs the tracker's impact data and reloads the firing effect when\n * the notifying fields change (Carbon cpp:61-72; the path reload has no\n * inline-effect guard, unlike Initialize).\n */\n @carbon.method\n @impl.implemented\n OnModified(value = null)\n {\n if (value === \"impactSize\" || value === \"impactBehaviour\")\n {\n this.#target.SetImpactBehaviour(this.impactSize, this.impactBehaviour);\n }\n if (value === \"firingEffectResPath\" && this.firingEffectResPath)\n {\n this.#LoadFiringEffectFromPath();\n }\n return super.OnModified(value);\n }\n\n /**\n * Loads the configured firing-effect child and installs it when loading\n * returns an object.\n */\n #LoadFiringEffectFromPath()\n {\n if (!this.resourceLoader) return;\n const loaded = this.resourceLoader.LoadChild(this.firingEffectResPath, this);\n if (loaded) this.SetFiringEffect(loaded);\n }\n\n /** Registers the firing effect's entity half when displayed (Carbon cpp:73-84). */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n super.RegisterComponents();\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n if (this.firingEffect) this.firingEffect.RegisterComponents();\n }\n }\n\n /** Unregisters the firing effect's entity half; not display-gated (Carbon cpp:85-96). */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n super.UnRegisterComponents();\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n if (this.firingEffect) this.firingEffect.UnRegisterComponents();\n }\n }\n\n /**\n * Sync-side frame update (Carbon cpp:126-179): looping-effect retarget\n * recheck every two seconds while firing, firing-effect sync update, the\n * target tracker fed from the effect's start position (or this world\n * translation), and the movement observer following the world transform.\n */\n @carbon.method\n @impl.implemented\n UpdateSyncronous(updateContext, params)\n {\n const deltaT = Number(updateContext?.GetDeltaT?.() ?? updateContext?.deltaTime ?? 0) || 0;\n\n if (this.firingEffect)\n {\n this.firingEffect.SetDisplaySourceObject(this.IsVisible(updateContext));\n }\n\n this.UpdateCachedGeometryData();\n\n if (this.firingEffect)\n {\n if (this.firingEffect.IsLooping() && this.state === EveChildTurret.State.STATE_FIRING)\n {\n this.#recheckTimeLeft -= deltaT;\n if (this.#recheckTimeLeft < 0)\n {\n vec3.set(FIRE_SOURCE_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n const closestLocator = this.#target.FindClosestLocator(FIRE_SOURCE_SCRATCH, FIRE_POSITION_SCRATCH);\n if (closestLocator >= 0 && closestLocator !== this.#target.GetLocator())\n {\n this.SetupFiringState();\n }\n this.#recheckTimeLeft = 2;\n }\n }\n this.firingEffect.UpdateSynchronous(updateContext);\n }\n\n vec3.set(FIRE_POSITION_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n if (this.firingEffect)\n {\n this.firingEffect.GetStartPosition(FIRE_POSITION_SCRATCH);\n }\n this.#target.Update(deltaT, FIRE_POSITION_SCRATCH);\n\n if (this.mesh && this.turretMovementObserver)\n {\n this.turretMovementObserver.Update(this.worldTransform);\n }\n return super.UpdateSyncronous(updateContext, params);\n }\n\n /**\n * Async-side frame update (Carbon cpp:181-260): tracking-influence fades\n * (clamped to [0, maxTrackingTime]), the base mesh update, then muzzle\n * transforms and target end position onto the firing effect - with the\n * late muzzle fallback to the turret root until geometry loads.\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.implemented\n UpdateAsyncronous(updateContext, params)\n {\n const deltaT = Number(updateContext?.GetDeltaT?.() ?? updateContext?.deltaTime ?? 0) || 0;\n\n if (this.#trackingInfluenceDelta !== 0)\n {\n this.trackingInfluence += this.#trackingInfluenceDelta * deltaT;\n if (this.trackingInfluence > this.maxTrackingTime)\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n }\n else if (this.trackingInfluence < 0)\n {\n this.trackingInfluence = 0;\n this.#trackingInfluenceDelta = 0;\n }\n }\n\n if (this.#delayToFadeOutTracking > 0)\n {\n this.#delayToFadeOutTracking -= deltaT;\n if (this.#delayToFadeOutTracking <= 0)\n {\n this.#delayToFadeOutTracking = 0;\n this.#trackingInfluenceDelta = -1 / TRACKING_FADE_TIME;\n }\n }\n\n if (this.#delayToFadeInTracking > 0)\n {\n this.#delayToFadeInTracking -= deltaT;\n if (this.#delayToFadeInTracking <= 0)\n {\n this.#delayToFadeInTracking = 0;\n this.#trackingInfluenceDelta = 1 / TRACKING_FADE_TIME;\n }\n }\n\n const parentTransform = params?.localToWorldTransform;\n if (parentTransform && parentTransform.length === 16)\n {\n vec3.set(this.#parentTranslation,\n parentTransform[12], parentTransform[13], parentTransform[14]);\n }\n\n const result = super.UpdateAsyncronous(updateContext, params);\n\n if (this.firingEffect)\n {\n if (this.mesh)\n {\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount(); muzzle++)\n {\n this.GetFiringBoneWorldTransform(muzzle, MUZZLE_TRANSFORM_SCRATCH);\n this.firingEffect.SetMuzzleTransform(muzzle, MUZZLE_TRANSFORM_SCRATCH);\n }\n this.#firingEffectMuzzlePosSet = true;\n }\n\n this.firingEffect.SetEndPosition(this.#target.GetTargetPosition());\n\n if (this.firingEffect.UpdateAsynchronous(updateContext))\n {\n if (!this.#firingEffectMuzzlePosSet)\n {\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount(); muzzle++)\n {\n this.firingEffect.SetMuzzleTransform(muzzle, this.worldTransform);\n }\n this.#firingEffectMuzzlePosSet = true;\n }\n this.firingEffect.SetDisplayDestObject(this.#target.ShowDestObject());\n }\n }\n return result;\n }\n\n /** Forwards visibility to the firing effect when displayed (Carbon cpp:262-270). */\n @carbon.method\n @impl.implemented\n UpdateVisibility(updateContext, parentTransform, parentLod)\n {\n const result = super.UpdateVisibility(updateContext, parentTransform, parentLod);\n if (this.display && this.firingEffect)\n {\n this.firingEffect.UpdateVisibility(updateContext);\n }\n return result;\n }\n\n /** Appends the firing effect's renderables when displayed (Carbon cpp:272-280). */\n @carbon.method\n @impl.implemented\n GetRenderables(renderables)\n {\n super.GetRenderables(renderables);\n if (this.display && this.firingEffect)\n {\n this.firingEffect.GetRenderables(renderables);\n }\n return renderables;\n }\n\n /**\n * Rebuilds the cached sysbone/muzzle lookups when the geometry resource\n * changes (Carbon cpp:302-315).\n */\n @carbon.method\n @impl.implemented\n UpdateCachedGeometryData()\n {\n const geometryRes = this.GetGeometryRes();\n if (geometryRes === this.#cachedGeometryRes) return;\n this.ReleaseCachedGeometryData();\n if (geometryRes && geometryRes.IsGood())\n {\n this.BuildCachedGeometryData(geometryRes);\n this.#cachedGeometryRes = geometryRes;\n }\n }\n\n /**\n * Finds the system bones in the model skeleton, wires the firing effect's\n * muzzle bones, hooks the animation and forces the idle animation for the\n * current state (Carbon cpp:316-336; the sequencing is behavior).\n */\n @carbon.method\n @impl.implemented\n BuildCachedGeometryData(geometryRes)\n {\n if (geometryRes.GetSkeletonCount())\n {\n const skeletonData = geometryRes.GetSkeletonData(0);\n if (skeletonData)\n {\n for (let bone = 0; bone < EveTurretAiming.SystemBones.SYSBONE_MAX; bone++)\n {\n this.#systemBoneID[bone] = FindJoint(skeletonData, EveTurretAiming.getSystemBoneName(bone));\n }\n this.InitializeFiringEffect();\n }\n }\n this.InitializeAnimation();\n this.ForceIdleAnimation();\n }\n\n /** Drops the cached geometry link and the muzzle stamp (Carbon cpp:337-341). */\n @carbon.method\n @impl.implemented\n ReleaseCachedGeometryData()\n {\n this.#cachedGeometryRes = null;\n this.#firingEffectMuzzlePosSet = false;\n }\n\n /**\n * Go into state deactive: play the pack animation and stay inside the\n * ship (Carbon cpp:343-376; the STATE_FIRING case deliberately falls\n * through to STATE_TARGETING).\n */\n @carbon.method\n @impl.implemented\n EnterStateDeactive()\n {\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n break;\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.trackingInfluence = 0;\n this.#PlayAnimation(\"Pack\", \"Inactive\");\n this.#delayToFadeOutTracking = 0;\n break;\n case State.STATE_FIRING:\n if (this.firingEffect) this.firingEffect.StopFiring();\n // DON'T break, just continue with stopping things:\n // eslint-disable-next-line no-fallthrough\n case State.STATE_TARGETING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n this.#PlayAnimation(\"Pack\", \"Inactive\", TRACKING_FADE_TIME);\n break;\n default:\n break;\n }\n this.state = State.STATE_DEACTIVE;\n }\n\n /** Go into state idle: face the cannons forward (Carbon cpp:378-418). */\n @carbon.method\n @impl.implemented\n EnterStateIdle()\n {\n if (!this.isOnline) return;\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_INVALID:\n case State.STATE_RELOADING:\n this.#PlayAnimation(\"\", \"Active\");\n break;\n case State.STATE_DEACTIVE:\n this.#PlayAnimation(\"Deploy\", \"Active\");\n this.trackingInfluence = 0;\n break;\n case State.STATE_IDLE:\n break;\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"\", \"Active\", TRACKING_FADE_TIME);\n if (this.playMovementSound && this.targetingToIdleMovementAudioEvent)\n {\n this.#SendMovementAudioEvent(this.targetingToIdleMovementAudioEvent);\n }\n break;\n default:\n break;\n }\n this.state = State.STATE_IDLE;\n }\n\n /** Go into state targeting: face the cannons toward the enemy (Carbon cpp:420-459). */\n @carbon.method\n @impl.implemented\n EnterStateTargeting()\n {\n if (!this.isOnline) return;\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n {\n const animLength = this.#PlayAnimation(\"Deploy\", \"Active\", TRACKING_FADE_TIME);\n this.#delayToFadeInTracking = animLength + 0.0001;\n break;\n }\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#delayToFadeInTracking = 0.0001;\n this.#PlayAnimation(\"\", \"Active\", TRACKING_FADE_TIME);\n break;\n case State.STATE_TARGETING:\n break;\n case State.STATE_FIRING:\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"\", \"Active\", 0);\n break;\n default:\n break;\n }\n this.state = State.STATE_TARGETING;\n }\n\n /**\n * Go into state firing (Carbon cpp:461-500): a looping effect already\n * firing only refreshes its move objects; otherwise the effect is stopped,\n * prepared (with muzzle cycling when configured) and pointed at the\n * target's impact surface.\n */\n @carbon.method\n @impl.implemented\n EnterStateFiring()\n {\n if (!this.SetupFiringState()) return;\n const State = EveChildTurret.State;\n\n if (this.firingEffect && this.state === State.STATE_FIRING)\n {\n if (this.firingEffect.IsLooping())\n {\n this.firingEffect.PrepareFiringEffectMoveObjects();\n return;\n }\n this.firingEffect.StopFiring();\n }\n\n if (this.firingEffect)\n {\n if (this.maxCyclingFirePos > 1)\n {\n this.firingEffect.PrepareFiring(0, this.currentCyclingFiresPos, this.cyclingFireGroupCount);\n }\n else\n {\n this.firingEffect.PrepareFiring(0);\n }\n this.firingEffect.SetImpactConfiguration(this.#target.GetImpactConfiguration());\n }\n\n this.state = State.STATE_FIRING;\n }\n\n /**\n * Aims at the closest facing damage locator, advances muzzle cycling, and\n * starts the fire animation + tracker timing (Carbon cpp:502-556). The\n * locator search uses THIS turret's world translation; the tracker's fire\n * source deliberately uses the PARENT transform's translation.\n */\n @carbon.method\n @impl.implemented\n SetupFiringState()\n {\n const State = EveChildTurret.State;\n if (this.state === State.STATE_DEACTIVE)\n {\n return false;\n }\n vec3.set(FIRE_SOURCE_SCRATCH,\n this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n const closestLocator = this.#target.FindClosestLocator(FIRE_SOURCE_SCRATCH, FIRE_POSITION_SCRATCH);\n\n if (this.maxCyclingFirePos > 1)\n {\n this.currentCyclingFiresPos += this.cyclingFireGroupCount;\n if (this.currentCyclingFiresPos >= this.maxCyclingFirePos * this.cyclingFireGroupCount)\n {\n this.currentCyclingFiresPos = 0;\n }\n }\n\n const effectTotalTime = this.firingEffect ? this.firingEffect.GetFiringDuration() : 0;\n const effectPeakTime = this.firingEffect ? this.firingEffect.GetFiringPeakTime() : 0;\n\n switch (this.state)\n {\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#delayToFadeInTracking = 0.0001;\n this.#PlayAnimation(this.#GetFireAnimationName(), \"Active\", this.maxTrackingTime);\n this.#target.StartFireAtLocator(\n closestLocator, this.maxTrackingTime + effectPeakTime,\n effectTotalTime - effectPeakTime, this.#parentTranslation);\n break;\n case State.STATE_FIRING:\n case State.STATE_TARGETING:\n this.#PlayAnimation(this.#GetFireAnimationName(), \"Active\", this.maxTrackingTime);\n this.#target.StartFireAtLocator(\n closestLocator, this.maxTrackingTime + effectPeakTime,\n effectTotalTime - effectPeakTime, this.#parentTranslation);\n break;\n default:\n break;\n }\n return true;\n }\n\n /**\n * Go into state reloading (Carbon cpp:558-589). Carbon's DEACTIVE case\n * comments \"ignore\" yet still stamps STATE_RELOADING at the end - that\n * quirk is preserved verbatim.\n */\n @carbon.method\n @impl.implemented\n EnterStateReloading()\n {\n const State = EveChildTurret.State;\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n break;\n case State.STATE_INVALID:\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n this.#PlayAnimation(\"Reload\", \"Active\", 0);\n break;\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n this.#delayToFadeOutTracking = 0.0001;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.#PlayAnimation(\"Reload\", \"Active\", TRACKING_FADE_TIME);\n break;\n default:\n break;\n }\n this.state = State.STATE_RELOADING;\n }\n\n /** Force into state deactive: no animation transition, just flip (Carbon cpp:591-606). */\n @carbon.method\n @impl.implemented\n ForceStateDeactive()\n {\n this.trackingInfluence = 0;\n this.#delayToFadeOutTracking = 0;\n this.#target.StopFireAtLocator();\n if (this.firingEffect) this.firingEffect.StopFiring();\n this.state = EveChildTurret.State.STATE_DEACTIVE;\n this.ForceIdleAnimation();\n }\n\n /** Force-plays the idle loop matching the current state (Carbon cpp:608-631). */\n @carbon.method\n @impl.implemented\n ForceIdleAnimation()\n {\n const State = EveChildTurret.State;\n let idleAnimName = \"\";\n switch (this.state)\n {\n case State.STATE_DEACTIVE:\n idleAnimName = \"Inactive\";\n break;\n case State.STATE_IDLE:\n case State.STATE_RELOADING:\n case State.STATE_TARGETING:\n case State.STATE_FIRING:\n idleAnimName = \"Active\";\n break;\n default:\n break;\n }\n if (idleAnimName.length > 0)\n {\n this.#PlayAnimation(\"\", idleAnimName, 0);\n }\n }\n\n /** Force into state targeting: tracking pinned to its ceiling, no transition (Carbon cpp:633-643). */\n @carbon.method\n @impl.implemented\n ForceStateTargeting()\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n this.state = EveChildTurret.State.STATE_TARGETING;\n this.#PlayAnimation(\"\", \"Active\", 0);\n }\n\n /**\n * The world transform of a muzzle's firing bone, falling back to this\n * turret's world transform without a mesh or effect (Carbon cpp:645-661).\n */\n @carbon.method\n @impl.implemented\n GetFiringBoneWorldTransform(muzzle, out = mat4.create())\n {\n if (!this.mesh || !this.firingEffect)\n {\n return mat4.copy(out, this.worldTransform);\n }\n const boneID = this.firingEffect.GetPerMuzzleBoneID(muzzle);\n return this.GetTurretBoneTransform(boneID, out);\n }\n\n /**\n * Wires the firing effect's muzzle bones from the skeleton: bones named\n * GetFiringBoneName() + a two-digit 1-based index, e.g. Pos_Fire01\n * (Carbon cpp:663-696). Carbon also registers the effect with the quad\n * renderer singleton here; quad registration is engine-owned in the\n * browser runtime and happens through the engine's own registration pass.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2QuadRenderer is an engine singleton in Carbon; the browser engine owns quad registration.\")\n InitializeFiringEffect()\n {\n this.#firingEffectMuzzlePosSet = false;\n if (!this.firingEffect) return;\n\n const geometryRes = this.GetGeometryRes();\n if (geometryRes && geometryRes.GetSkeletonCount())\n {\n const skeletonData = geometryRes.GetSkeletonData(0);\n if (skeletonData)\n {\n const muzzleCount = this.firingEffect.GetPerMuzzleEffectCount();\n const boneCount = Math.min(muzzleCount, EveChildTurret.MUZZLECOUNT_MAX);\n for (let muzzle = 0; muzzle < boneCount; muzzle++)\n {\n const boneName = `${this.firingEffect.GetFiringBoneName()}${String(muzzle + 1).padStart(2, \"0\")}`;\n this.firingEffect.SetMuzzleBoneID(muzzle, FindJoint(skeletonData, boneName));\n }\n }\n }\n }\n\n /**\n * Force-creates the animation updater BEFORE the base wiring, then hooks\n * this turret in as the updater's pose modifier, unhooking any previously\n * hooked updater on swap (Carbon cpp:698-715). CleanUp performs Carbon's\n * destructor unhook.\n */\n @carbon.method\n @impl.implemented\n InitializeAnimation()\n {\n if (!this.animationUpdater)\n {\n this.animationUpdater = new Tr2GrannyAnimation();\n }\n super.InitializeAnimation();\n\n if (this.#hookedUpdater !== this.animationUpdater)\n {\n if (this.#hookedUpdater && this.#hookedUpdater.GetPoseModifier() === this)\n {\n this.#hookedUpdater.SetPoseModifier(null);\n }\n this.animationUpdater.SetPoseModifier(this);\n this.#hookedUpdater = this.animationUpdater;\n }\n }\n\n /**\n * Carbon's destructor obligations: unhook the pose modifier and clean up\n * the firing effect (Carbon cpp:32-47). JS has no destructor; owners call\n * CleanUp when discarding the turret.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The C++ destructor becomes an explicit CleanUp obligation.\")\n CleanUp(context = { currentTime: 0, deltaTime: 0 })\n {\n if (this.#hookedUpdater && this.#hookedUpdater.GetPoseModifier() === this)\n {\n this.#hookedUpdater.SetPoseModifier(null);\n }\n this.#hookedUpdater = null;\n if (this.firingEffect) this.firingEffect.CleanUp(context);\n this.ReleaseCachedGeometryData();\n }\n\n /**\n * The ITr2PoseModifier hook (Carbon cpp:717-741): poses every found\n * system bone toward the tracked target in turret space. Always passes\n * null for the pitch localTransform - only EveTurretSet uses the\n * behind-the-arm flip.\n */\n @carbon.method\n @impl.implemented\n ModifyPose(_skeleton, pose)\n {\n if (this.trackingInfluence === 0) return;\n\n const tracking = this.#target.GetTrackingPosition();\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\n {\n mat4.identity(INVERSE_WORLD_SCRATCH);\n }\n vec3.transformMat4(TARGET_OS_SCRATCH, tracking, INVERSE_WORLD_SCRATCH);\n\n const aiming = this.GetAiming();\n for (let bone = 0; bone < EveTurretAiming.SystemBones.SYSBONE_MAX; bone++)\n {\n // covers INVALID since INVALID_BONE_INDEX exceeds any bone count\n if (this.#systemBoneID[bone] < pose.boneTransforms.length)\n {\n const boneTransform = pose.boneTransforms[this.#systemBoneID[bone]];\n aiming.ModifySystemBoneTransform(\n bone, TARGET_OS_SCRATCH, null, this.trackingInfluence,\n boneTransform.position, boneTransform.rotation);\n }\n }\n }\n\n /**\n * A bone's world-of-pose transform lifted into world space - row-vector\n * boneLocal * worldTransform, gl multiply(out, worldTransform, boneWorld)\n * (Carbon cpp:743-757).\n */\n @carbon.method\n @impl.implemented\n GetTurretBoneTransform(boneID, out = mat4.create())\n {\n mat4.copy(out, this.worldTransform);\n if (this.animationUpdater)\n {\n const boneWorld = this.animationUpdater.GetBoneTransform(boneID);\n if (boneWorld)\n {\n mat4.multiply(out, this.worldTransform, boneWorld);\n }\n }\n return out;\n }\n\n /** The mesh's geometry resource, or null (Carbon cpp:758-761). */\n @carbon.method\n @impl.implemented\n GetGeometryRes()\n {\n return this.mesh ? this.mesh.GetGeometryResource() : null;\n }\n\n /**\n * Stops running animations after the delay, queues the action animation\n * once on the base layer and the idle loop forever after it; returns the\n * action animation's duration (Carbon cpp:763-787).\n */\n #PlayAnimation(animName, animNameIdle, delay = 0)\n {\n const updater = this.animationUpdater;\n if (!updater) return 0;\n\n updater.StopAnimations(delay);\n\n let animLength = 0;\n if (animName)\n {\n if (updater.PlayAnimation(animName, false, 1, 0, 1, false))\n {\n animLength = updater.FindAnimationDurationByName(animName);\n }\n }\n if (animNameIdle)\n {\n updater.PlayAnimation(animNameIdle, false, 0, 0, 1, false);\n }\n return animLength;\n }\n\n /** \"Fire\", or \"Fire0\" + cycle digit past the first cycle (Carbon cpp:788-799). */\n #GetFireAnimationName()\n {\n let name = \"Fire\";\n if (this.currentCyclingFiresPos > 0)\n {\n name += \"0\";\n name += String(Math.trunc(this.currentCyclingFiresPos / this.cyclingFireGroupCount));\n }\n return name;\n }\n\n /** The firing effect module (Carbon cpp:801-804). */\n @carbon.method\n @impl.implemented\n GetFiringEffect()\n {\n return this.firingEffect;\n }\n\n /**\n * Swaps the firing effect, moving its component registration and rewiring\n * its muzzle bones (Carbon cpp:806-819).\n */\n @carbon.method\n @impl.implemented\n SetFiringEffect(firingEffect)\n {\n if (this.firingEffect) this.firingEffect.UnRegisterComponents();\n this.firingEffect = firingEffect ?? null;\n if (this.firingEffect) this.firingEffect.RegisterComponents();\n this.InitializeFiringEffect();\n }\n\n /**\n * Attaches to a target object, firing the movement audio when moving off\n * idle or switching targets (Carbon cpp:821-848). Passing null is a no-op:\n * Carbon's API cannot clear a target.\n */\n @carbon.method\n @impl.implemented\n SetTargetObject(target)\n {\n if (!target) return;\n const oldTarget = this.#target.GetTargetable();\n this.#target.SetTargetable(target);\n\n if (this.playMovementSound && this.idleToTargetingMovementAudioEvent)\n {\n if (this.state === EveChildTurret.State.STATE_IDLE || oldTarget !== this.#target.GetTargetable())\n {\n this.#SendMovementAudioEvent(this.idleToTargetingMovementAudioEvent);\n }\n }\n this.SetTargetScale();\n }\n\n /** The tracked targetable, or null (Carbon cpp:850-853). */\n @carbon.method\n @impl.implemented\n GetTargetObject()\n {\n return this.#target.GetTargetable();\n }\n\n /** Scales the firing effect by the target's radius (Carbon cpp:855-857). */\n @carbon.method\n @impl.implemented\n SetTargetScale()\n {\n if (this.firingEffect)\n {\n this.firingEffect.SetScaleByRadius(this.#target.GetRadius());\n }\n }\n\n /** Sends a movement audio event through the observer's emitter (the EveTurretSet seam). */\n #SendMovementAudioEvent(eventName)\n {\n SendEventToAudEmitter(this.turretMovementObserver, eventName);\n }\n\n // The state enum matches EveTurretSet's values (Carbon EveChildTurret.h:\n // 61-69); one identity, owned by the set that had it first.\n static State = EveTurretSet.State;\n\n static ImpactBehaviour = EveTurretTarget.ImpactBehaviour;\n\n static INVALID_BONE_INDEX = INVALID_BONE_INDEX;\n\n static MUZZLECOUNT_MAX = EveTurretFiringFX.MUZZLE_COUNT_MAX;\n\n}\n"],"names":["INVALID_BONE_INDEX","TRACKING_FADE_TIME","MUZZLE_TRANSFORM_SCRATCH","mat4","create","FIRE_SOURCE_SCRATCH","vec3","FIRE_POSITION_SCRATCH","TARGET_OS_SCRATCH","INVERSE_WORLD_SCRATCH","FindJoint","skeletonData","name","bones","index","length","bone","boneName","String","Name","_EveChildTurret","_identity","EveChildTurret","EveChildMesh","e","_init_isOnline","_init_extra_isOnline","_init_trackingInfluence","_init_extra_trackingInfluence","_init_maxTrackingTime","_init_extra_maxTrackingTime","_init_state","_init_extra_state","_init_sysBoneHeight","_init_extra_sysBoneHeight","_init_sysBonePitchFactor","_init_extra_sysBonePitchFactor","_init_sysBonePitchOffset","_init_extra_sysBonePitchOffset","_init_sysBonePitchMin","_init_extra_sysBonePitchMin","_init_sysBonePitchMax","_init_extra_sysBonePitchMax","_init_sysBonePitch01Factor","_init_extra_sysBonePitch01Factor","_init_sysBonePitch01Offset","_init_extra_sysBonePitch01Offset","_init_sysBonePitch02Factor","_init_extra_sysBonePitch02Factor","_init_sysBonePitch02Offset","_init_extra_sysBonePitch02Offset","_init_sysBonePitch03Factor","_init_extra_sysBonePitch03Factor","_init_sysBonePitch03Offset","_init_extra_sysBonePitch03Offset","_init_maxCyclingFirePos","_init_extra_maxCyclingFirePos","_init_cyclingFireGroupCount","_init_extra_cyclingFireGroupCount","_init_currentCyclingFiresPos","_init_extra_currentCyclingFiresPos","_init_firingEffect","_init_extra_firingEffect","_init_firingEffectResPath","_init_extra_firingEffectResPath","_init_resourceLoader","_init_extra_resourceLoader","_init_impactSize","_init_extra_impactSize","_init_impactBehaviour","_init_extra_impactBehaviour","_init_turretMovementObserver","_init_extra_turretMovementObserver","_init_playMovementSound","_init_extra_playMovementSound","_init_idleToTargetingMovementAudioEvent","_init_extra_idleToTargetingMovementAudioEvent","_init_targetingToIdleMovementAudioEvent","_init_extra_targetingToIdleMovementAudioEvent","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","readwrite","boolean","read","float32","persist","int32","uint32","objectRef","notify","string","enum","carbon","method","impl","implemented","adapted","reason","contextual","isOnline","trackingInfluence","maxTrackingTime","state","EveTurretSet","State","STATE_IDLE","sysBoneHeight","sysBonePitchFactor","sysBonePitchOffset","sysBonePitchMin","sysBonePitchMax","sysBonePitch01Factor","sysBonePitch01Offset","sysBonePitch02Factor","sysBonePitch02Offset","sysBonePitch03Factor","sysBonePitch03Offset","maxCyclingFirePos","cyclingFireGroupCount","currentCyclingFiresPos","firingEffect","firingEffectResPath","resourceLoader","impactSize","impactBehaviour","EveTurretTarget","ImpactBehaviour","DAMAGE_LOCATOR","turretMovementObserver","playMovementSound","idleToTargetingMovementAudioEvent","targetingToIdleMovementAudioEvent","EveTurretAiming","Array","SystemBones","SYSBONE_MAX","fill","constructor","SetFadeOnLocatorChange","GetTarget","GetAiming","aiming","Initialize","SetImpactBehaviour","OnModified","value","#LoadFiringEffectFromPath","loaded","LoadChild","SetFiringEffect","RegisterComponents","registry","GetComponentRegistry","display","UnRegisterComponents","UpdateSyncronous","updateContext","params","deltaT","Number","GetDeltaT","deltaTime","SetDisplaySourceObject","IsVisible","UpdateCachedGeometryData","IsLooping","STATE_FIRING","set","worldTransform","closestLocator","FindClosestLocator","GetLocator","SetupFiringState","UpdateSynchronous","GetStartPosition","Update","mesh","UpdateAsyncronous","parentTransform","localToWorldTransform","result","muzzle","GetPerMuzzleEffectCount","GetFiringBoneWorldTransform","SetMuzzleTransform","SetEndPosition","GetTargetPosition","UpdateAsynchronous","SetDisplayDestObject","ShowDestObject","UpdateVisibility","parentLod","GetRenderables","renderables","geometryRes","GetGeometryRes","ReleaseCachedGeometryData","IsGood","BuildCachedGeometryData","GetSkeletonCount","GetSkeletonData","getSystemBoneName","InitializeFiringEffect","InitializeAnimation","ForceIdleAnimation","EnterStateDeactive","STATE_DEACTIVE","STATE_RELOADING","StopFiring","STATE_TARGETING","StopFireAtLocator","EnterStateIdle","STATE_INVALID","EnterStateTargeting","animLength","EnterStateFiring","PrepareFiringEffectMoveObjects","PrepareFiring","SetImpactConfiguration","GetImpactConfiguration","effectTotalTime","GetFiringDuration","effectPeakTime","GetFiringPeakTime","StartFireAtLocator","EnterStateReloading","ForceStateDeactive","idleAnimName","ForceStateTargeting","out","copy","boneID","GetPerMuzzleBoneID","GetTurretBoneTransform","muzzleCount","boneCount","Math","min","MUZZLECOUNT_MAX","GetFiringBoneName","padStart","SetMuzzleBoneID","animationUpdater","Tr2GrannyAnimation","GetPoseModifier","SetPoseModifier","CleanUp","context","currentTime","ModifyPose","_skeleton","pose","tracking","GetTrackingPosition","invert","identity","transformMat4","boneTransforms","boneTransform","ModifySystemBoneTransform","position","rotation","boneWorld","GetBoneTransform","multiply","GetGeometryResource","#PlayAnimation","animName","animNameIdle","delay","updater","StopAnimations","PlayAnimation","FindAnimationDurationByName","#GetFireAnimationName","trunc","GetFiringEffect","SetTargetObject","target","oldTarget","GetTargetable","SetTargetable","SetTargetScale","GetTargetObject","SetScaleByRadius","GetRadius","#SendMovementAudioEvent","eventName","SendEventToAudEmitter","EveTurretFiringFX","MUZZLE_COUNT_MAX"],"mappings":"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"}
|
|
@@ -58,7 +58,10 @@ export { EveChildFogVolume } from './child/EveChildFogVolume.js';
|
|
|
58
58
|
export { EveChildInheritProperties } from './child/EveChildInheritProperties.js';
|
|
59
59
|
export { EveChildInstanceMeshRenderer } from './child/EveChildInstanceMeshRenderer.js';
|
|
60
60
|
export { EveChildInstanceTransform } from './child/EveChildInstanceTransform.js';
|
|
61
|
-
export {
|
|
61
|
+
export { EveChildInstancedMeshArea } from './child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js';
|
|
62
|
+
export { EveChildInstancedMeshInstance } from './child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js';
|
|
63
|
+
export { EveChildInstancedMesh } from './child/EveChildInstancedMeshes/EveChildInstancedMesh.js';
|
|
64
|
+
export { EveChildInstancedMeshes, INSTANCE_FLAG_CASTS_SHADOW, INSTANCE_FLAG_RENDER_IN_REFLECTION } from './child/EveChildInstancedMeshes/EveChildInstancedMeshes.js';
|
|
62
65
|
export { EveChildLightingOverride } from './child/EveChildLightingOverride.js';
|
|
63
66
|
export { EveChildLink } from './child/EveChildLink.js';
|
|
64
67
|
export { EveChildMesh } from './child/EveChildMesh.js';
|
|
@@ -128,7 +131,8 @@ export { EveChildLineSet } from './child/EveChildLineSet.js';
|
|
|
128
131
|
export { EveChildInstanceContainer } from './child/EveChildInstanceContainer.js';
|
|
129
132
|
export { EveChildExplosion } from './child/EveChildExplosion.js';
|
|
130
133
|
export { EveChildCloud2 } from './child/EveChildCloud2.js';
|
|
131
|
-
export {
|
|
134
|
+
export { EveChildPartDataPartData } from './child/EveChildPartData/EveChildPartDataPartData.js';
|
|
135
|
+
export { EveChildPartData } from './child/EveChildPartData/EveChildPartData.js';
|
|
132
136
|
export { ITr2FroxelFogSettings } from './child/ITr2FroxelFogSettings.js';
|
|
133
137
|
export { IEveLightingOverride, withIEveLightingOverride } from './child/IEveLightingOverride.js';
|
|
134
138
|
export { CjsLightData, createCjsLightDataView, setCjsLightDataOwnerValues } from './lights/CjsLightData.js';
|
|
@@ -243,11 +247,13 @@ export { IEveSpaceObjectAttachment } from './attachment/IEveSpaceObjectAttachmen
|
|
|
243
247
|
export { EveBannerItem } from './attachment/banner/EveBannerItem.js';
|
|
244
248
|
export { EveBannerLight } from './attachment/banner/EveBannerLight.js';
|
|
245
249
|
export { EveBannerSet } from './attachment/banner/EveBannerSet.js';
|
|
246
|
-
export {
|
|
250
|
+
export { EveBoosterSet2Item } from './attachment/booster/EveBoosterSet2Item.js';
|
|
251
|
+
export { EveBoosterSet2 } from './attachment/booster/EveBoosterSet2.js';
|
|
247
252
|
export { EveBoosterSet2Renderable } from './attachment/booster/EveBoosterSet2Renderable.js';
|
|
248
253
|
export { EveTrailsSet } from './attachment/booster/EveTrailsSet.js';
|
|
249
254
|
export { AddBoosterLights, BOOSTER_BOX_BUFFER_NAME, BOOSTER_BOX_POSITIONS, BOOSTER_STAR_BUFFER_NAME, BOOSTER_STAR_VERTICES, CHILD_BOOSTER_BOX_BUFFER_NAME, ComputeBoosterLightFlicker, CreateBoosterFlares, GenerateBoosterLightPhase, PadBoosterBoundingSphere } from './attachment/booster/boosterUtilities.js';
|
|
250
|
-
export {
|
|
255
|
+
export { DecalMeshCacheMeshBuffers } from './attachment/decal/DecalMeshCacheMeshBuffers.js';
|
|
256
|
+
export { DecalMeshCache } from './attachment/decal/DecalMeshCache.js';
|
|
251
257
|
export { EveSpaceObjectDecal } from './attachment/decal/EveSpaceObjectDecal.js';
|
|
252
258
|
export { EveHazeSet } from './attachment/haze/EveHazeSet.js';
|
|
253
259
|
export { EveHazeSetItem } from './attachment/haze/EveHazeSetItem.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -126,6 +126,11 @@ new class extends _identity {
|
|
|
126
126
|
* +1 - moot in JS (the profile rides the record by reference) but
|
|
127
127
|
* recorded. The record is scratch; the manager must copy. */
|
|
128
128
|
Update() {}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Updates dynamic light data and submits a transformed point or spot light
|
|
132
|
+
* when its flags are valid.
|
|
133
|
+
*/
|
|
129
134
|
AddLight(lightManager, transform, scale, bones = null, boneCount = 0) {
|
|
130
135
|
if (this.isDynamic) {
|
|
131
136
|
this.Update();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2Light.js","sources":["../../../../../src/trinity/eve/lights/Tr2Light.js"],"sourcesContent":["// Source: trinity/trinity/Lights/Tr2Light.h\r\n// Source: trinity/trinity/Lights/Tr2Light.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { carbon, impl, type } from \"#schema\";\r\nimport { PerLightShadowSetting } from \"../../generated/eve/lights/enums.js\";\r\nimport { createCjsLightDataView, setCjsLightDataOwnerValues } from \"./CjsLightData.js\";\r\nimport {\r\n AreLightFlagsValid,\r\n AsPerPointLightData,\r\n AsPerSpotLightData,\r\n CreateLightRecord,\r\n MatrixCopyFrom3x4\r\n} from \"./lightConversion.js\";\r\n\r\n\r\n/**\r\n * Base scene light: holds the authored light attributes, resolves its bone\r\n * transform, and submits a converted point or spot record to the light manager\r\n * each frame.\r\n */\r\n@type.define({ className: \"Tr2Light\", family: \"eve/lights\" })\r\nexport class Tr2Light extends CjsModel\r\n{\r\n static LightDataFields = [];\r\n\r\n static LightType = Object.freeze({\r\n UNDEFINED_LIGHT: 0,\r\n POINT_LIGHT: 1,\r\n SPOT_LIGHT: 2,\r\n COUNT: 3\r\n });\r\n\r\n static UNDEFINED_LIGHT = 0;\r\n static POINT_LIGHT = 1;\r\n static SPOT_LIGHT = 2;\r\n static COUNT = 3;\r\n\r\n @type.string\r\n name = \"\";\r\n\r\n @type.float64\r\n startTime = 0;\r\n\r\n @type.boolean\r\n isDynamic = false;\r\n\r\n @type.float32\r\n brightnessMultiplier = 1;\r\n\r\n @type.mat4\r\n boneTransform = mat4.create();\r\n\r\n @type.objectRef(\"Tr2LightProfileRes\")\r\n lightProfile = null;\r\n\r\n @type.string\r\n lightProfilePath = \"\";\r\n\r\n @type.int32\r\n @type.enum(\"LIGHT_TYPE\")\r\n type = Tr2Light.UNDEFINED_LIGHT;\r\n\r\n // Compat view over the flattened light fields (2026-07-23 flatten\r\n // decision): the flat decorated fields on the concrete light classes are\r\n // the real storage; this keeps Carbon's GetLightData() reference surface\r\n // and the SOF layer's separate-node hydration shape working.\r\n #lightDataView = null;\r\n\r\n /**\r\n * Compat LightData view over the concrete light's flattened fields, built on\r\n * first access and redirecting both reads and writes back to this object.\r\n */\r\n get lightData()\r\n {\r\n this.#lightDataView ??= createCjsLightDataView(this, this.constructor.LightDataFields);\r\n return this.#lightDataView;\r\n }\r\n\r\n /**\r\n * Applies a value bag, first folding any nested `lightData` bag (the\r\n * pre-flatten hydration shape) into the flattened fields so everything lands\r\n * in one schema pass.\r\n */\r\n SetValues(values = {}, options = {})\r\n {\r\n return setCjsLightDataOwnerValues(\r\n this,\r\n values,\r\n options,\r\n (ownerValues, ownerOptions) => super.SetValues(ownerValues, ownerOptions),\r\n this.constructor.LightDataFields\r\n );\r\n }\r\n\r\n /** Applies a whole LightData bag onto the flattened light fields. */\r\n @carbon.method\r\n @impl.implemented\r\n SetLightData(lightData)\r\n {\r\n return this.SetValues({ lightData });\r\n }\r\n\r\n /**\r\n * Sets the parent brightness factor, which scales the authored brightness only\r\n * when the light record is built for submission.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetBrightnessMultiplier(multiplier)\r\n {\r\n this.SetValues({ brightnessMultiplier: Number(multiplier) });\r\n }\r\n\r\n /** Sets the light colour, returning whether the value actually changed. */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLightColor(color)\r\n {\r\n return this.SetValues({ color }, { returnBoolean: true });\r\n }\r\n\r\n /**\r\n * Returns the live LightData view, which aliases this light's fields instead\r\n * of copying them.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLightData()\r\n {\r\n return this.lightData;\r\n }\r\n\r\n /**\r\n * Returns the parent brightness factor applied at submission time, not the\r\n * authored brightness.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBrightnessMultiplier()\r\n {\r\n return this.brightnessMultiplier;\r\n }\r\n\r\n /** Carbon Tr2Light::SetBoneMatrix (Tr2Light.cpp:98-106): only when\r\n * 0 <= boneIndex < boneCount (note >= 0, unlike the packed sets' > 0 -\r\n * bone 0 CAN drive a Tr2Light) - the Float4x3 bone is unpacked over an\r\n * identity (column-stride, MatrixUtils.cpp:81-96). QUIRK: on a non-match\r\n * the previous boneTransform STAYS (sticky, identity initially) - it is\r\n * not reset per call. `bones` is a flat Float32Array, stride 12. */\r\n @carbon.method\r\n @impl.implemented\r\n SetBoneMatrix(bones, boneCount)\r\n {\r\n const boneIndex = this.lightData.boneIndex ?? -1;\r\n if (bones && boneIndex >= 0 && boneIndex < boneCount)\r\n {\r\n mat4.identity(this.boneTransform);\r\n MatrixCopyFrom3x4(this.boneTransform, bones, boneIndex);\r\n }\r\n }\r\n\r\n /** Carbon Tr2Light::AddLight (Tr2Light.cpp:119-149): dynamic update hook,\r\n * the ONLY entity-side flag validity check in the light family\r\n * (AreLightFlagsValid, cpp:126-129), the bone refresh, then\r\n * lightTransform = boneTransform * transform - Carbon row-vector, bone\r\n * first, so the gl-matrix operands SWAP (cpp:132) - and the point/spot\r\n * conversion submitted to the duck manager. QUIRKS: UNDEFINED_LIGHT\r\n * submits NOTHING (a deserialized base light is silently inert); Carbon's\r\n * profileIndex here is GetTextureIndex() + 1 while the packed sets use no\r\n * +1 - moot in JS (the profile rides the record by reference) but\r\n * recorded. The record is scratch; the manager must copy. */\r\n @carbon.method\r\n /**\r\n * Refreshes whatever this light derives from its own state each frame.\r\n *\r\n * EMPTY IN CARBON (`Tr2Light.cpp:201-203`), and ported anyway. It was\r\n * missing entirely, so `AddLight` below called `this.Update?.()` - hedging a\r\n * call to its own class's method. Behaviour is identical either way, since\r\n * both do nothing; what the declaration buys is a subclass having something\r\n * to override, which is the whole point of the virtual.\r\n *\r\n * ONE SUBCLASS OVERRIDE IS STILL MISSING, and it is not empty:\r\n * `Tr2TexturedPointLight::Update` (`cpp:51-58`) sets the light colour to the\r\n * projected texture's average colour, saturated. Our Tr2TexturedPointLight\r\n * has no Update at all, and its own comment records the symptom - the\r\n * saturation it stores \"is not read anywhere else in the port yet\". It\r\n * cannot be ported until `TriTextureRes.GetAverageColor` is, which Carbon\r\n * declares and we do not. Registered rather than guessed at.\r\n */\r\n @carbon.method\r\n @impl.noop\r\n Update()\r\n {\r\n }\r\n\r\n @impl.adapted\r\n @impl.reason(\"The profile-index flag packing and half-float narrowing are renderer-backend concerns (record carries the profile by reference); the Perlin brightness flicker awaits the frame-clock seam (see lightConversion.js).\")\r\n AddLight(lightManager, transform, scale, bones = null, boneCount = 0)\r\n {\r\n if (this.isDynamic)\r\n {\r\n this.Update();\r\n }\r\n if (!AreLightFlagsValid(this.lightData.flags ?? 0))\r\n {\r\n return;\r\n }\r\n\r\n this.SetBoneMatrix(bones, boneCount);\r\n // Carbon (row-vector): m_boneTransform * transform - bone first.\r\n mat4.multiply(Tr2Light.#lightTransformScratch, transform, this.boneTransform);\r\n\r\n const features = Tr2Light.#featuresScratch;\r\n features.parentBrightness = this.brightnessMultiplier;\r\n features.parentScale = scale;\r\n\r\n const record = Tr2Light.#lightRecord;\r\n if (this.type === Tr2Light.POINT_LIGHT)\r\n {\r\n AsPerPointLightData(record, this.lightData, Tr2Light.#lightTransformScratch, features,\r\n lightManager?.GetCurrentSpaceSceneShadowQuality() ?? 0);\r\n }\r\n else if (this.type === Tr2Light.SPOT_LIGHT)\r\n {\r\n AsPerSpotLightData(record, this.lightData, Tr2Light.#lightTransformScratch, features,\r\n lightManager?.GetCurrentSpaceSceneShadowQuality() ?? 0);\r\n }\r\n else\r\n {\r\n return;\r\n }\r\n record.lightType = this.type;\r\n record.lightData = this.lightData;\r\n record.lightProfile = this.lightProfile;\r\n record.owner = this;\r\n lightManager?.AddLight(record);\r\n }\r\n\r\n /** Carbon Tr2Light::GetLight (Tr2Light.cpp:152-163): position and radius\r\n * straight from the light data, color = authored rgb * brightness. Carbon's\r\n * three reference out-params become one out record (JS out-params go last\r\n * and are returned). The color is the rgb triple - the alpha channel is\r\n * unused by every Carbon consumer of this method (EveChildCloud2's light\r\n * block takes GetXYZ). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The Perlin noise flicker (cpp:157-161) reads the global frame clock (BeOS GetCurrentFrameTime) - an engine seam; the base brightness is used until it lands.\")\r\n GetLight(out = { position: vec3.create(), radius: 0, color: vec3.create() })\r\n {\r\n const lightData = this.lightData;\r\n const position = lightData.position;\r\n if (position)\r\n {\r\n vec3.copy(out.position, position);\r\n }\r\n out.radius = lightData.radius ?? 0;\r\n const brightness = lightData.brightness ?? 0;\r\n const color = lightData.color;\r\n out.color[0] = (color?.[0] ?? 0) * brightness;\r\n out.color[1] = (color?.[1] ?? 0) * brightness;\r\n out.color[2] = (color?.[2] ?? 0) * brightness;\r\n return out;\r\n }\r\n\r\n /**\r\n * Reports the light ready; resolving the light profile is left to the\r\n * resource/runtime adapter, so this always succeeds.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n // Light-profile resolution is supplied by the resource/runtime adapter.\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon Tr2Light::RenderDebugInfo (Tr2Light.cpp:205-207) is an EMPTY\r\n * base implementation - subclasses draw their own markers. Ported as the\r\n * same deliberate no-op so the debug-renderer traversal can call it\r\n * unconditionally.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RenderDebugInfo(_renderer = null)\r\n {\r\n }\r\n\r\n static LIGHT_TYPE = Tr2Light.LightType;\r\n\r\n static PerLightShadowSetting = PerLightShadowSetting;\r\n\r\n static #lightTransformScratch = mat4.create();\r\n\r\n static #featuresScratch = { parentBrightness: 1, parentScale: 1 };\r\n\r\n static #lightRecord = CreateLightRecord();\r\n\r\n}\r\n"],"names":["_Tr2Light","_identity","Tr2Light","CjsModel","e","_init_name","_init_extra_name","_init_startTime","_init_extra_startTime","_init_isDynamic","_init_extra_isDynamic","_init_brightnessMultiplier","_init_extra_brightnessMultiplier","_init_boneTransform","_init_extra_boneTransform","_init_lightProfile","_init_extra_lightProfile","_init_lightProfilePath","_init_extra_lightProfilePath","_init_type","_init_extra_type","_initProto","c","_initClass","_applyDecs","type","define","className","family","string","float64","boolean","float32","mat4","objectRef","int32","enum","carbon","method","impl","implemented","noop","adapted","reason","name","startTime","isDynamic","brightnessMultiplier","boneTransform","create","lightProfile","lightProfilePath","UNDEFINED_LIGHT","lightData","createCjsLightDataView","constructor","LightDataFields","SetValues","values","options","setCjsLightDataOwnerValues","ownerValues","ownerOptions","SetLightData","SetBrightnessMultiplier","multiplier","Number","ChangeLightColor","color","returnBoolean","GetLightData","GetBrightnessMultiplier","SetBoneMatrix","bones","boneCount","boneIndex","identity","MatrixCopyFrom3x4","Update","AddLight","lightManager","transform","scale","AreLightFlagsValid","flags","multiply","features","parentBrightness","parentScale","record","POINT_LIGHT","AsPerPointLightData","GetCurrentSpaceSceneShadowQuality","SPOT_LIGHT","AsPerSpotLightData","lightType","owner","GetLight","out","position","vec3","radius","copy","brightness","Initialize","RenderDebugInfo","_renderer","LightType","Object","freeze","COUNT","LIGHT_TYPE","PerLightShadowSetting","CreateLightRecord"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2Light.js","sources":["../../../../../src/trinity/eve/lights/Tr2Light.js"],"sourcesContent":["// Source: trinity/trinity/Lights/Tr2Light.h\r\n// Source: trinity/trinity/Lights/Tr2Light.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { carbon, impl, type } from \"#schema\";\r\nimport { PerLightShadowSetting } from \"../../generated/eve/lights/enums.js\";\r\nimport { createCjsLightDataView, setCjsLightDataOwnerValues } from \"./CjsLightData.js\";\r\nimport {\r\n AreLightFlagsValid,\r\n AsPerPointLightData,\r\n AsPerSpotLightData,\r\n CreateLightRecord,\r\n MatrixCopyFrom3x4\r\n} from \"./lightConversion.js\";\r\n\r\n\r\n/**\r\n * Base scene light: holds the authored light attributes, resolves its bone\r\n * transform, and submits a converted point or spot record to the light manager\r\n * each frame.\r\n */\r\n@type.define({ className: \"Tr2Light\", family: \"eve/lights\" })\r\nexport class Tr2Light extends CjsModel\r\n{\r\n static LightDataFields = [];\r\n\r\n static LightType = Object.freeze({\r\n UNDEFINED_LIGHT: 0,\r\n POINT_LIGHT: 1,\r\n SPOT_LIGHT: 2,\r\n COUNT: 3\r\n });\r\n\r\n static UNDEFINED_LIGHT = 0;\r\n static POINT_LIGHT = 1;\r\n static SPOT_LIGHT = 2;\r\n static COUNT = 3;\r\n\r\n @type.string\r\n name = \"\";\r\n\r\n @type.float64\r\n startTime = 0;\r\n\r\n @type.boolean\r\n isDynamic = false;\r\n\r\n @type.float32\r\n brightnessMultiplier = 1;\r\n\r\n @type.mat4\r\n boneTransform = mat4.create();\r\n\r\n @type.objectRef(\"Tr2LightProfileRes\")\r\n lightProfile = null;\r\n\r\n @type.string\r\n lightProfilePath = \"\";\r\n\r\n @type.int32\r\n @type.enum(\"LIGHT_TYPE\")\r\n type = Tr2Light.UNDEFINED_LIGHT;\r\n\r\n // Compat view over the flattened light fields (2026-07-23 flatten\r\n // decision): the flat decorated fields on the concrete light classes are\r\n // the real storage; this keeps Carbon's GetLightData() reference surface\r\n // and the SOF layer's separate-node hydration shape working.\r\n #lightDataView = null;\r\n\r\n /**\r\n * Compat LightData view over the concrete light's flattened fields, built on\r\n * first access and redirecting both reads and writes back to this object.\r\n */\r\n get lightData()\r\n {\r\n this.#lightDataView ??= createCjsLightDataView(this, this.constructor.LightDataFields);\r\n return this.#lightDataView;\r\n }\r\n\r\n /**\r\n * Applies a value bag, first folding any nested `lightData` bag (the\r\n * pre-flatten hydration shape) into the flattened fields so everything lands\r\n * in one schema pass.\r\n */\r\n SetValues(values = {}, options = {})\r\n {\r\n return setCjsLightDataOwnerValues(\r\n this,\r\n values,\r\n options,\r\n (ownerValues, ownerOptions) => super.SetValues(ownerValues, ownerOptions),\r\n this.constructor.LightDataFields\r\n );\r\n }\r\n\r\n /** Applies a whole LightData bag onto the flattened light fields. */\r\n @carbon.method\r\n @impl.implemented\r\n SetLightData(lightData)\r\n {\r\n return this.SetValues({ lightData });\r\n }\r\n\r\n /**\r\n * Sets the parent brightness factor, which scales the authored brightness only\r\n * when the light record is built for submission.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetBrightnessMultiplier(multiplier)\r\n {\r\n this.SetValues({ brightnessMultiplier: Number(multiplier) });\r\n }\r\n\r\n /** Sets the light colour, returning whether the value actually changed. */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLightColor(color)\r\n {\r\n return this.SetValues({ color }, { returnBoolean: true });\r\n }\r\n\r\n /**\r\n * Returns the live LightData view, which aliases this light's fields instead\r\n * of copying them.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLightData()\r\n {\r\n return this.lightData;\r\n }\r\n\r\n /**\r\n * Returns the parent brightness factor applied at submission time, not the\r\n * authored brightness.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBrightnessMultiplier()\r\n {\r\n return this.brightnessMultiplier;\r\n }\r\n\r\n /** Carbon Tr2Light::SetBoneMatrix (Tr2Light.cpp:98-106): only when\r\n * 0 <= boneIndex < boneCount (note >= 0, unlike the packed sets' > 0 -\r\n * bone 0 CAN drive a Tr2Light) - the Float4x3 bone is unpacked over an\r\n * identity (column-stride, MatrixUtils.cpp:81-96). QUIRK: on a non-match\r\n * the previous boneTransform STAYS (sticky, identity initially) - it is\r\n * not reset per call. `bones` is a flat Float32Array, stride 12. */\r\n @carbon.method\r\n @impl.implemented\r\n SetBoneMatrix(bones, boneCount)\r\n {\r\n const boneIndex = this.lightData.boneIndex ?? -1;\r\n if (bones && boneIndex >= 0 && boneIndex < boneCount)\r\n {\r\n mat4.identity(this.boneTransform);\r\n MatrixCopyFrom3x4(this.boneTransform, bones, boneIndex);\r\n }\r\n }\r\n\r\n /** Carbon Tr2Light::AddLight (Tr2Light.cpp:119-149): dynamic update hook,\r\n * the ONLY entity-side flag validity check in the light family\r\n * (AreLightFlagsValid, cpp:126-129), the bone refresh, then\r\n * lightTransform = boneTransform * transform - Carbon row-vector, bone\r\n * first, so the gl-matrix operands SWAP (cpp:132) - and the point/spot\r\n * conversion submitted to the duck manager. QUIRKS: UNDEFINED_LIGHT\r\n * submits NOTHING (a deserialized base light is silently inert); Carbon's\r\n * profileIndex here is GetTextureIndex() + 1 while the packed sets use no\r\n * +1 - moot in JS (the profile rides the record by reference) but\r\n * recorded. The record is scratch; the manager must copy. */\r\n @carbon.method\r\n /**\r\n * Refreshes whatever this light derives from its own state each frame.\r\n *\r\n * EMPTY IN CARBON (`Tr2Light.cpp:201-203`), and ported anyway. It was\r\n * missing entirely, so `AddLight` below called `this.Update?.()` - hedging a\r\n * call to its own class's method. Behaviour is identical either way, since\r\n * both do nothing; what the declaration buys is a subclass having something\r\n * to override, which is the whole point of the virtual.\r\n *\r\n * ONE SUBCLASS OVERRIDE IS STILL MISSING, and it is not empty:\r\n * `Tr2TexturedPointLight::Update` (`cpp:51-58`) sets the light colour to the\r\n * projected texture's average colour, saturated. Our Tr2TexturedPointLight\r\n * has no Update at all, and its own comment records the symptom - the\r\n * saturation it stores \"is not read anywhere else in the port yet\". It\r\n * cannot be ported until `TriTextureRes.GetAverageColor` is, which Carbon\r\n * declares and we do not. Registered rather than guessed at.\r\n */\r\n @carbon.method\r\n @impl.noop\r\n Update()\r\n {\r\n }\r\n\r\n /**\r\n * Updates dynamic light data and submits a transformed point or spot light\r\n * when its flags are valid.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"The profile-index flag packing and half-float narrowing are renderer-backend concerns (record carries the profile by reference); the Perlin brightness flicker awaits the frame-clock seam (see lightConversion.js).\")\r\n AddLight(lightManager, transform, scale, bones = null, boneCount = 0)\r\n {\r\n if (this.isDynamic)\r\n {\r\n this.Update();\r\n }\r\n if (!AreLightFlagsValid(this.lightData.flags ?? 0))\r\n {\r\n return;\r\n }\r\n\r\n this.SetBoneMatrix(bones, boneCount);\r\n // Carbon (row-vector): m_boneTransform * transform - bone first.\r\n mat4.multiply(Tr2Light.#lightTransformScratch, transform, this.boneTransform);\r\n\r\n const features = Tr2Light.#featuresScratch;\r\n features.parentBrightness = this.brightnessMultiplier;\r\n features.parentScale = scale;\r\n\r\n const record = Tr2Light.#lightRecord;\r\n if (this.type === Tr2Light.POINT_LIGHT)\r\n {\r\n AsPerPointLightData(record, this.lightData, Tr2Light.#lightTransformScratch, features,\r\n lightManager?.GetCurrentSpaceSceneShadowQuality() ?? 0);\r\n }\r\n else if (this.type === Tr2Light.SPOT_LIGHT)\r\n {\r\n AsPerSpotLightData(record, this.lightData, Tr2Light.#lightTransformScratch, features,\r\n lightManager?.GetCurrentSpaceSceneShadowQuality() ?? 0);\r\n }\r\n else\r\n {\r\n return;\r\n }\r\n record.lightType = this.type;\r\n record.lightData = this.lightData;\r\n record.lightProfile = this.lightProfile;\r\n record.owner = this;\r\n lightManager?.AddLight(record);\r\n }\r\n\r\n /** Carbon Tr2Light::GetLight (Tr2Light.cpp:152-163): position and radius\r\n * straight from the light data, color = authored rgb * brightness. Carbon's\r\n * three reference out-params become one out record (JS out-params go last\r\n * and are returned). The color is the rgb triple - the alpha channel is\r\n * unused by every Carbon consumer of this method (EveChildCloud2's light\r\n * block takes GetXYZ). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The Perlin noise flicker (cpp:157-161) reads the global frame clock (BeOS GetCurrentFrameTime) - an engine seam; the base brightness is used until it lands.\")\r\n GetLight(out = { position: vec3.create(), radius: 0, color: vec3.create() })\r\n {\r\n const lightData = this.lightData;\r\n const position = lightData.position;\r\n if (position)\r\n {\r\n vec3.copy(out.position, position);\r\n }\r\n out.radius = lightData.radius ?? 0;\r\n const brightness = lightData.brightness ?? 0;\r\n const color = lightData.color;\r\n out.color[0] = (color?.[0] ?? 0) * brightness;\r\n out.color[1] = (color?.[1] ?? 0) * brightness;\r\n out.color[2] = (color?.[2] ?? 0) * brightness;\r\n return out;\r\n }\r\n\r\n /**\r\n * Reports the light ready; resolving the light profile is left to the\r\n * resource/runtime adapter, so this always succeeds.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n // Light-profile resolution is supplied by the resource/runtime adapter.\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon Tr2Light::RenderDebugInfo (Tr2Light.cpp:205-207) is an EMPTY\r\n * base implementation - subclasses draw their own markers. Ported as the\r\n * same deliberate no-op so the debug-renderer traversal can call it\r\n * unconditionally.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RenderDebugInfo(_renderer = null)\r\n {\r\n }\r\n\r\n static LIGHT_TYPE = Tr2Light.LightType;\r\n\r\n static PerLightShadowSetting = PerLightShadowSetting;\r\n\r\n static #lightTransformScratch = mat4.create();\r\n\r\n static #featuresScratch = { parentBrightness: 1, parentScale: 1 };\r\n\r\n static #lightRecord = CreateLightRecord();\r\n\r\n}\r\n"],"names":["_Tr2Light","_identity","Tr2Light","CjsModel","e","_init_name","_init_extra_name","_init_startTime","_init_extra_startTime","_init_isDynamic","_init_extra_isDynamic","_init_brightnessMultiplier","_init_extra_brightnessMultiplier","_init_boneTransform","_init_extra_boneTransform","_init_lightProfile","_init_extra_lightProfile","_init_lightProfilePath","_init_extra_lightProfilePath","_init_type","_init_extra_type","_initProto","c","_initClass","_applyDecs","type","define","className","family","string","float64","boolean","float32","mat4","objectRef","int32","enum","carbon","method","impl","implemented","noop","adapted","reason","name","startTime","isDynamic","brightnessMultiplier","boneTransform","create","lightProfile","lightProfilePath","UNDEFINED_LIGHT","lightData","createCjsLightDataView","constructor","LightDataFields","SetValues","values","options","setCjsLightDataOwnerValues","ownerValues","ownerOptions","SetLightData","SetBrightnessMultiplier","multiplier","Number","ChangeLightColor","color","returnBoolean","GetLightData","GetBrightnessMultiplier","SetBoneMatrix","bones","boneCount","boneIndex","identity","MatrixCopyFrom3x4","Update","AddLight","lightManager","transform","scale","AreLightFlagsValid","flags","multiply","features","parentBrightness","parentScale","record","POINT_LIGHT","AsPerPointLightData","GetCurrentSpaceSceneShadowQuality","SPOT_LIGHT","AsPerSpotLightData","lightType","owner","GetLight","out","position","vec3","radius","copy","brightness","Initialize","RenderDebugInfo","_renderer","LightType","Object","freeze","COUNT","LIGHT_TYPE","PerLightShadowSetting","CreateLightRecord"],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { TriBatchType } from '#consts/graphics';
|
|
2
|
-
import { TriRenderBatchAreaBlock
|
|
2
|
+
import { TriRenderBatchAreaBlock } from '../../core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js';
|
|
3
|
+
import { Tr2RenderBatch } from '../../core/batch/TriRenderBatch/Tr2RenderBatch.js';
|
|
4
|
+
import '../../core/batch/TriRenderBatch/DefaultKeyGenerator.js';
|
|
5
|
+
import '../../core/batch/TriRenderBatch/EffectKeyGenerator.js';
|
|
6
|
+
import '../../core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js';
|
|
7
|
+
import '#consts/render-context';
|
|
3
8
|
import { EveMeshOverlayEffect as _EveMeshOverlayEffect } from './EveMeshOverlayEffect.js';
|
|
4
9
|
|
|
5
10
|
// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveMeshOverlayEffect.cpp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayBatches.js","sources":["../../../../../src/trinity/eve/overlays/overlayBatches.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveMeshOverlayEffect.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildInstancedMeshes.cpp\nimport { TriBatchType } from \"#consts/graphics\";\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../core/batch/
|
|
1
|
+
{"version":3,"file":"overlayBatches.js","sources":["../../../../../src/trinity/eve/overlays/overlayBatches.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Attachments/EveMeshOverlayEffect.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildInstancedMeshes.cpp\nimport { TriBatchType } from \"#consts/graphics\";\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../core/batch/TriRenderBatch/index.js\";\nimport { EveMeshOverlayEffect } from \"./EveMeshOverlayEffect.js\";\n\n\n/**\n * Builds Carbon's two cached overlay area-block lists for a normal mesh.\n * TYPE_ALL contains opaque, transparent and decal areas; TYPE_OPAQUEONLY\n * contains opaque areas alone. Tr2MeshBase applies Carbon's shadow-casting\n * filter while collecting opaque blocks.\n */\nexport function CollectOverlayAreaBlocks(mesh, out = [ [], [] ])\n{\n for (const blocks of out) blocks.length = 0;\n\n const all = out[EveMeshOverlayEffect.OverlayType.TYPE_ALL];\n mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\n mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\n mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\n mesh.CollectAreaBlocks(\n out[EveMeshOverlayEffect.OverlayType.TYPE_OPAQUEONLY],\n TriBatchType.TRIBATCHTYPE_OPAQUE);\n\n for (const blocks of out) TriRenderBatchAreaBlock.Optimize(blocks);\n return out;\n}\n\n\n/**\n * Builds the same cached overlay blocks for an EveChildInstancedMesh record,\n * whose authored areas are plain descriptors rather than Tr2MeshArea objects.\n */\nexport function CollectInstancedOverlayAreaBlocks(mesh, out = [ [], [] ])\n{\n for (const blocks of out) blocks.length = 0;\n\n for (const area of mesh.areas)\n {\n if (area.batchType === TriBatchType.TRIBATCHTYPE_OPAQUE ||\n area.batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT ||\n area.batchType === TriBatchType.TRIBATCHTYPE_DECAL)\n {\n out[EveMeshOverlayEffect.OverlayType.TYPE_ALL].push(\n new TriRenderBatchAreaBlock(area.areaIndex, area.areaCount));\n }\n\n if (area.batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\n {\n out[EveMeshOverlayEffect.OverlayType.TYPE_OPAQUEONLY].push(\n new TriRenderBatchAreaBlock(area.areaIndex, area.areaCount));\n }\n }\n\n for (const blocks of out) TriRenderBatchAreaBlock.Optimize(blocks);\n return out;\n}\n\n\n/** Emits one overlay vector over its batch-type-selected area blocks. */\nexport function EmitOverlayBatches(\n accumulator,\n perObjectData,\n batchType,\n overlays,\n areaBlocks,\n geometry,\n meshIndex,\n lod = null)\n{\n let committed = false;\n\n for (const overlay of overlays)\n {\n const effects = overlay.GetEffects(batchType);\n if (!effects) continue;\n\n const blocks = areaBlocks[overlay.GetType(batchType)];\n for (const effect of effects)\n {\n for (const block of blocks)\n {\n committed = CommitOverlayBlock(\n accumulator, perObjectData, effect, geometry, meshIndex, block, lod, 0) || committed;\n }\n }\n }\n\n return committed;\n}\n\n\n/** Emits Carbon's maximum-priority armor/hull damage pass over TYPE_ALL. */\nexport function EmitDamageOverlayBatches(\n accumulator,\n perObjectData,\n effect,\n areaBlocks,\n geometry,\n meshIndex,\n lod = null)\n{\n let committed = false;\n for (const block of areaBlocks[EveMeshOverlayEffect.OverlayType.TYPE_ALL])\n {\n committed = CommitOverlayBlock(\n accumulator, perObjectData, effect, geometry, meshIndex, block, lod, 0xffffffff) || committed;\n }\n return committed;\n}\n\n\nfunction CommitOverlayBlock(\n accumulator,\n perObjectData,\n material,\n geometry,\n meshIndex,\n block,\n lod,\n priority)\n{\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(material);\n if (!batch.IsValid()) return false;\n\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\n batch.SetPerObjectData(perObjectData);\n if (priority !== 0) batch.SetPriority(priority);\n\n const draw = Tr2RenderBatch.resolveDrawArguments(\n lod, block.startIndex, block.count, false);\n if (!draw) return false;\n\n batch.SetDrawIndexedInstanced(\n draw.indexCountPerInstance,\n draw.instanceCount,\n draw.startIndexLocation,\n draw.baseVertexLocation,\n draw.startInstanceLocation);\n\n return accumulator.Commit(batch) === true;\n}\n"],"names":["CollectOverlayAreaBlocks","mesh","out","blocks","length","all","EveMeshOverlayEffect","OverlayType","TYPE_ALL","CollectAreaBlocks","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_TRANSPARENT","TRIBATCHTYPE_DECAL","TYPE_OPAQUEONLY","TriRenderBatchAreaBlock","Optimize","CollectInstancedOverlayAreaBlocks","area","areas","batchType","push","areaIndex","areaCount","EmitOverlayBatches","accumulator","perObjectData","overlays","areaBlocks","geometry","meshIndex","lod","committed","overlay","effects","GetEffects","GetType","effect","block","CommitOverlayBlock","EmitDamageOverlayBatches","material","priority","batch","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","SetPriority","draw","resolveDrawArguments","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","Commit"],"mappings":";;;;;;;;;AAAA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,wBAAwBA,CAACC,IAAI,EAAEC,GAAG,GAAG,CAAE,EAAE,EAAE,EAAE,CAAE,EAC/D;EACE,KAAK,MAAMC,MAAM,IAAID,GAAG,EAAEC,MAAM,CAACC,MAAM,GAAG,CAAC;EAE3C,MAAMC,GAAG,GAAGH,GAAG,CAACI,qBAAoB,CAACC,WAAW,CAACC,QAAQ,CAAC;EAC1DP,IAAI,CAACQ,iBAAiB,CAACJ,GAAG,EAAEK,YAAY,CAACC,mBAAmB,CAAC;EAC7DV,IAAI,CAACQ,iBAAiB,CAACJ,GAAG,EAAEK,YAAY,CAACE,wBAAwB,CAAC;EAClEX,IAAI,CAACQ,iBAAiB,CAACJ,GAAG,EAAEK,YAAY,CAACG,kBAAkB,CAAC;AAC5DZ,EAAAA,IAAI,CAACQ,iBAAiB,CACpBP,GAAG,CAACI,qBAAoB,CAACC,WAAW,CAACO,eAAe,CAAC,EACrDJ,YAAY,CAACC,mBAAmB,CAAC;EAEnC,KAAK,MAAMR,MAAM,IAAID,GAAG,EAAEa,uBAAuB,CAACC,QAAQ,CAACb,MAAM,CAAC;AAClE,EAAA,OAAOD,GAAG;AACZ;;AAGA;AACA;AACA;AACA;AACO,SAASe,iCAAiCA,CAAChB,IAAI,EAAEC,GAAG,GAAG,CAAE,EAAE,EAAE,EAAE,CAAE,EACxE;EACE,KAAK,MAAMC,MAAM,IAAID,GAAG,EAAEC,MAAM,CAACC,MAAM,GAAG,CAAC;AAE3C,EAAA,KAAK,MAAMc,IAAI,IAAIjB,IAAI,CAACkB,KAAK,EAC7B;IACE,IAAID,IAAI,CAACE,SAAS,KAAKV,YAAY,CAACC,mBAAmB,IACrDO,IAAI,CAACE,SAAS,KAAKV,YAAY,CAACE,wBAAwB,IACxDM,IAAI,CAACE,SAAS,KAAKV,YAAY,CAACG,kBAAkB,EACpD;MACEX,GAAG,CAACI,qBAAoB,CAACC,WAAW,CAACC,QAAQ,CAAC,CAACa,IAAI,CACjD,IAAIN,uBAAuB,CAACG,IAAI,CAACI,SAAS,EAAEJ,IAAI,CAACK,SAAS,CAAC,CAAC;AAChE,IAAA;AAEA,IAAA,IAAIL,IAAI,CAACE,SAAS,KAAKV,YAAY,CAACC,mBAAmB,EACvD;MACET,GAAG,CAACI,qBAAoB,CAACC,WAAW,CAACO,eAAe,CAAC,CAACO,IAAI,CACxD,IAAIN,uBAAuB,CAACG,IAAI,CAACI,SAAS,EAAEJ,IAAI,CAACK,SAAS,CAAC,CAAC;AAChE,IAAA;AACF,EAAA;EAEA,KAAK,MAAMpB,MAAM,IAAID,GAAG,EAAEa,uBAAuB,CAACC,QAAQ,CAACb,MAAM,CAAC;AAClE,EAAA,OAAOD,GAAG;AACZ;;AAGA;AACO,SAASsB,kBAAkBA,CAChCC,WAAW,EACXC,aAAa,EACbN,SAAS,EACTO,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,GAAG,GAAG,IAAI,EACZ;EACE,IAAIC,SAAS,GAAG,KAAK;AAErB,EAAA,KAAK,MAAMC,OAAO,IAAIN,QAAQ,EAC9B;AACE,IAAA,MAAMO,OAAO,GAAGD,OAAO,CAACE,UAAU,CAACf,SAAS,CAAC;IAC7C,IAAI,CAACc,OAAO,EAAE;IAEd,MAAM/B,MAAM,GAAGyB,UAAU,CAACK,OAAO,CAACG,OAAO,CAAChB,SAAS,CAAC,CAAC;AACrD,IAAA,KAAK,MAAMiB,MAAM,IAAIH,OAAO,EAC5B;AACE,MAAA,KAAK,MAAMI,KAAK,IAAInC,MAAM,EAC1B;QACE6B,SAAS,GAAGO,kBAAkB,CAC5Bd,WAAW,EAAEC,aAAa,EAAEW,MAAM,EAAER,QAAQ,EAAEC,SAAS,EAAEQ,KAAK,EAAEP,GAAG,EAAE,CAAC,CAAC,IAAIC,SAAS;AACxF,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOA,SAAS;AAClB;;AAGA;AACO,SAASQ,wBAAwBA,CACtCf,WAAW,EACXC,aAAa,EACbW,MAAM,EACNT,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,GAAG,GAAG,IAAI,EACZ;EACE,IAAIC,SAAS,GAAG,KAAK;EACrB,KAAK,MAAMM,KAAK,IAAIV,UAAU,CAACtB,qBAAoB,CAACC,WAAW,CAACC,QAAQ,CAAC,EACzE;IACEwB,SAAS,GAAGO,kBAAkB,CAC5Bd,WAAW,EAAEC,aAAa,EAAEW,MAAM,EAAER,QAAQ,EAAEC,SAAS,EAAEQ,KAAK,EAAEP,GAAG,EAAE,UAAU,CAAC,IAAIC,SAAS;AACjG,EAAA;AACA,EAAA,OAAOA,SAAS;AAClB;AAGA,SAASO,kBAAkBA,CACzBd,WAAW,EACXC,aAAa,EACbe,QAAQ,EACRZ,QAAQ,EACRC,SAAS,EACTQ,KAAK,EACLP,GAAG,EACHW,QAAQ,EACV;AACE,EAAA,MAAMC,KAAK,GAAG,IAAIC,cAAc,EAAE;AAClCD,EAAAA,KAAK,CAACE,WAAW,CAACJ,QAAQ,CAAC;EAC3B,IAAI,CAACE,KAAK,CAACG,OAAO,EAAE,EAAE,OAAO,KAAK;AAElCH,EAAAA,KAAK,CAACI,iBAAiB,CAAClB,QAAQ,EAAEC,SAAS,EAAEQ,KAAK,CAACU,UAAU,EAAEV,KAAK,CAACW,KAAK,EAAE,KAAK,CAAC;AAClFN,EAAAA,KAAK,CAACO,gBAAgB,CAACxB,aAAa,CAAC;EACrC,IAAIgB,QAAQ,KAAK,CAAC,EAAEC,KAAK,CAACQ,WAAW,CAACT,QAAQ,CAAC;AAE/C,EAAA,MAAMU,IAAI,GAAGR,cAAc,CAACS,oBAAoB,CAC9CtB,GAAG,EAAEO,KAAK,CAACU,UAAU,EAAEV,KAAK,CAACW,KAAK,EAAE,KAAK,CAAC;AAC5C,EAAA,IAAI,CAACG,IAAI,EAAE,OAAO,KAAK;EAEvBT,KAAK,CAACW,uBAAuB,CAC3BF,IAAI,CAACG,qBAAqB,EAC1BH,IAAI,CAACI,aAAa,EAClBJ,IAAI,CAACK,kBAAkB,EACvBL,IAAI,CAACM,kBAAkB,EACvBN,IAAI,CAACO,qBAAqB,CAAC;AAE7B,EAAA,OAAOlC,WAAW,CAACmC,MAAM,CAACjB,KAAK,CAAC,KAAK,IAAI;AAC3C;;;;"}
|