@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +20 -2
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/hydration.js +14 -0
- package/dist/global/schema/hydration.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +92 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["import { ResourceRequirement } from \"../ResourceRequirement.js\";\r\n// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\r\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\r\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\r\nimport { box3 } from \"#math/box3\";\r\nimport { triangleNormalTo } from \"#math/mesh\";\r\nimport { ray3 } from \"#math/ray3\";\r\nimport { sph3 } from \"#math/sph3\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { CjsResource } from \"../CjsResource.js\";\r\nimport { Tr2RaycastGeometryRes } from \"./Tr2RaycastGeometryRes.js\";\r\nimport {\r\n assertResourcePayloadArray,\r\n assertResourcePayloadObject,\r\n resourceBoundaryError,\r\n resourcePayloadError\r\n} from \"../resourceBoundary.js\";\r\n\r\n/**\r\n * Resource record that owns geometry payload facts (meshes, optional\r\n * skeletons and animations) and LOD-force metadata, while engine packages\r\n * decide device buffers, vertex declarations, and draw-time state.\r\n *\r\n * Geometry inspection composes the generic math supplied by the runtime global layer\r\n * with resource-specific payload traversal.\r\n */\r\nexport class TriGeometryRes extends CjsResource\r\n{\r\n forceLod = false;\r\n forcedLodIndex = -1;\r\n name = \"\";\r\n\r\n #raycastGeometry = null;\r\n\r\n #raycastUsers = 0;\r\n\r\n #raycastPreparationFailed = false;\r\n\r\n /** Creates a TriGeometryRes with caller-provided initial state. */\r\n constructor(values = null)\r\n {\r\n super();\r\n this.SetValues(values || {}, {\r\n markDirty: false,\r\n skipUpdate: true,\r\n skipEvents: true\r\n });\r\n }\r\n\r\n /**\r\n * Attach a plain geometry payload.\r\n *\r\n * @param {object|null} payload\r\n * @param {object|null} options\r\n * @returns {TriGeometryRes}\r\n */\r\n SetPayload(payload = null, options = null)\r\n {\r\n if (this.#raycastUsers !== 0)\r\n {\r\n throw new Error(\"TriGeometryRes payload cannot change during an active raycast session.\");\r\n }\r\n this.#raycastGeometry = null;\r\n this.#raycastPreparationFailed = false;\r\n if (payload === null)\r\n {\r\n super.SetPayload(null);\r\n return this;\r\n }\r\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\r\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\r\n for (const field of [ \"skeletons\", \"animations\" ])\r\n {\r\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\r\n {\r\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\r\n }\r\n }\r\n super.SetPayload(payload);\r\n this.SetValues(options || {});\r\n return this;\r\n }\r\n\r\n /**\r\n * Get mesh count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetMeshCount()\r\n {\r\n return this.GetPayload()?.meshes?.length || 0;\r\n }\r\n\r\n /**\r\n * Get animation count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetAnimationCount()\r\n {\r\n return this.GetPayload()?.animations?.length || 0;\r\n }\r\n\r\n /**\r\n * Get skeleton count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetSkeletonCount()\r\n {\r\n return this.GetPayload()?.skeletons?.length || 0;\r\n }\r\n\r\n /**\r\n * Get one resource-owned skeleton from the CPU geometry payload.\r\n *\r\n * @param {number} skeletonIndex\r\n * @returns {*}\r\n */\r\n GetSkeletonData(skeletonIndex = 0)\r\n {\r\n const index = Number(skeletonIndex);\r\n\r\n if (!Number.isInteger(index) || index < 0)\r\n {\r\n return null;\r\n }\r\n\r\n return this.GetPayload()?.skeletons?.[index] || null;\r\n }\r\n\r\n /**\r\n * Get mesh area count from a CPU geometry payload mesh.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {number}\r\n */\r\n GetMeshAreaCount(meshIndex = 0)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n return mesh?.areas?.length || 0;\r\n }\r\n\r\n /** Returns one decoded CPU mesh record, or null when the index is absent. */\r\n GetMeshData(meshIndex = 0)\r\n {\r\n return this.GetPayload()?.meshes?.[meshIndex] ?? null;\r\n }\r\n\r\n /** Returns the decoded CMF-shaped payload used by Carbon mesh consumers. */\r\n GetCMFData()\r\n {\r\n return this.GetPayload();\r\n }\r\n\r\n /** Whether the resident payload has Carbon's CMF mesh collection shape. */\r\n IsUsingCMF()\r\n {\r\n return Array.isArray(this.GetPayload()?.meshes);\r\n }\r\n\r\n // Carbon TriGeometryRes.cpp:294-319. Walks LODs from the LOWEST quality up\r\n // and takes the first whose authored maxScreenSize still covers the requested\r\n // size; a request larger than the best LOD falls back to LOD 0, which Carbon\r\n // comments explicitly. forceLod pins the index instead, clamped to the last\r\n // LOD.\r\n\r\n /**\r\n * The LOD index this mesh should be drawn at for a screen size, or -1 when the\r\n * mesh does not exist.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} screenSize\r\n * @returns {number}\r\n */\r\n GetLodIndexForScreenSize(meshIndex = 0, screenSize = Infinity)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n if (!mesh) return -1;\r\n\r\n // A decoder may flatten a single-LOD mesh, putting the areas on the mesh\r\n // itself; that mesh IS its own only LOD (see getMeshAreas).\r\n const lods = mesh.lods?.length ? mesh.lods : null;\r\n const lastLod = lods ? lods.length - 1 : 0;\r\n\r\n if (this.forceLod && this.forcedLodIndex >= 0)\r\n {\r\n return Math.min(this.forcedLodIndex, lastLod);\r\n }\r\n\r\n for (let index = lastLod; index >= 0; index--)\r\n {\r\n const maxScreenSize = (lods ? lods[index]?.maxScreenSize : mesh.maxScreenSize) ?? 0;\r\n if (maxScreenSize >= screenSize) return index;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n // Carbon TriGeometryRes.cpp:268-279. Carbon overloads this on float\r\n // screenSize versus int lodIndex; JavaScript cannot, so the index form is\r\n // GetMeshLodByIndex. Carbon indexes m_lods with the result unguarded, so a\r\n // mesh with an EMPTY lod list reads out of bounds there; this port returns\r\n // null (docs/research/carbon-known-defects.md).\r\n\r\n /**\r\n * The LOD data this mesh should be drawn at for a screen size, or null when\r\n * the mesh has no LODs.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} screenSize\r\n * @returns {object|null}\r\n */\r\n GetMeshLod(meshIndex = 0, screenSize = Infinity)\r\n {\r\n return this.GetMeshLodByIndex(meshIndex, this.GetLodIndexForScreenSize(meshIndex, screenSize));\r\n }\r\n\r\n /**\r\n * The LOD data at an explicit index, or null when the mesh or index does not\r\n * exist (Carbon TriGeometryRes.cpp:281-292).\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} lodIndex\r\n * @returns {object|null}\r\n */\r\n GetMeshLodByIndex(meshIndex = 0, lodIndex = 0)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n if (!mesh || lodIndex < 0) return null;\r\n\r\n if (mesh.lods?.length)\r\n {\r\n return lodIndex < mesh.lods.length ? mesh.lods[lodIndex] : null;\r\n }\r\n\r\n return lodIndex === 0 && mesh.areas ? mesh : null;\r\n }\r\n\r\n /**\r\n * Get mesh name from a CPU geometry payload.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {string}\r\n */\r\n GetMeshName(meshIndex = 0)\r\n {\r\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\r\n }\r\n\r\n /**\r\n * Get mesh area name from a CPU geometry payload.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} areaIndex\r\n * @returns {string}\r\n */\r\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\r\n {\r\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\r\n }\r\n\r\n /**\r\n * Get area bounding box from geometry payload data.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} areaIndex\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\r\n {\r\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\r\n const bounds = TriGeometryRes.getBounds(area);\r\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\r\n }\r\n\r\n /**\r\n * Get mesh bounding box from geometry payload data.\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\r\n {\r\n const payload = this.GetPayload();\r\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\r\n || TriGeometryRes.getBounds(payload);\r\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\r\n }\r\n\r\n /**\r\n * Get mesh bounding sphere from geometry payload data.\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|null} out\r\n * @returns {*|boolean}\r\n */\r\n GetBoundingSphere(meshIndex = 0, out = null)\r\n {\r\n const payload = this.GetPayload();\r\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\r\n || TriGeometryRes.getSphere(payload);\r\n if (!out) return sphere;\r\n if (!sphere) return false;\r\n vec4.copy(out, sphere);\r\n return true;\r\n }\r\n\r\n /**\r\n * Calculate a transformed bounding box from canonical CPU vertex data.\r\n *\r\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\r\n * therefore uses the ordinary column-vector index layout.\r\n *\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>} transform\r\n * @returns {{min: number[], max: number[]}|null}\r\n */\r\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\r\n {\r\n if (!transform || transform.length < 16)\r\n {\r\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\r\n }\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n if (!mesh) return null;\r\n const positions = TriGeometryRes.getMeshPositions(mesh);\r\n const sourceBounds = TriGeometryRes.getBounds(mesh);\r\n if (!positions && !sourceBounds) return null;\r\n\r\n const\r\n bounds = box3.alloc(),\r\n point = vec3.alloc();\r\n try\r\n {\r\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\r\n {\r\n if (!sourceBounds) return null;\r\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\r\n }\r\n box3.transformMat4(bounds, bounds, transform);\r\n return {\r\n min: [ bounds[0], bounds[1], bounds[2] ],\r\n max: [ bounds[3], bounds[4], bounds[5] ]\r\n };\r\n }\r\n finally\r\n {\r\n vec3.unalloc(point);\r\n box3.unalloc(bounds);\r\n }\r\n }\r\n\r\n /**\r\n * Recalculate bounding sphere data from canonical CPU vertex positions.\r\n *\r\n * @returns {boolean}\r\n */\r\n RecalculateBoundingSphere()\r\n {\r\n let updated = false;\r\n const\r\n sphere = sph3.alloc(),\r\n point = vec3.alloc();\r\n try\r\n {\r\n for (const mesh of this.GetPayload()?.meshes || [])\r\n {\r\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\r\n TriGeometryRes.setMeshSphere(mesh, sphere);\r\n updated = true;\r\n }\r\n return updated;\r\n }\r\n finally\r\n {\r\n vec3.unalloc(point);\r\n sph3.unalloc(sphere);\r\n }\r\n }\r\n\r\n /**\r\n * Reloading belongs to the resource manager because it owns source and\r\n * canonical replacement policy.\r\n *\r\n * @throws {Error}\r\n */\r\n Reload() {\r\n throw resourceBoundaryError(\r\n \"TriGeometryRes\",\r\n \"Reload\",\r\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\r\n );\r\n }\r\n\r\n /**\r\n * Intersect a ray with canonical CPU triangle data.\r\n *\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @returns {object}\r\n */\r\n GetIntersectionPointNormalBone(position, direction)\r\n {\r\n return TriGeometryRes.intersectGeometry(\r\n this.RequireIntersectionMeshes(),\r\n position,\r\n direction,\r\n -1\r\n );\r\n }\r\n\r\n /**\r\n * Intersect a ray with one area index across canonical CPU meshes.\r\n *\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @param {number} areaIndex\r\n * @returns {object}\r\n */\r\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\r\n {\r\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\r\n {\r\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\r\n }\r\n return TriGeometryRes.intersectGeometry(\r\n this.RequireIntersectionMeshes(),\r\n position,\r\n direction,\r\n areaIndex\r\n );\r\n }\r\n\r\n /** Opens one borrowed CPU-raycast session over the resident geometry. */\r\n PrepareRayCaster()\r\n {\r\n this.#raycastUsers++;\r\n if (this.#raycastGeometry || this.#raycastPreparationFailed) return;\r\n\r\n try\r\n {\r\n this.RequireIntersectionMeshes();\r\n this.#raycastGeometry = new Tr2RaycastGeometryRes().SetSource(this);\r\n }\r\n catch (_error)\r\n {\r\n this.#raycastPreparationFailed = true;\r\n }\r\n }\r\n\r\n /** Closes exactly one raycast session and drops the derived acceleration resource at zero. */\r\n ResetRayCaster()\r\n {\r\n if (this.#raycastUsers === 0)\r\n {\r\n throw new Error(\"TriGeometryRes.ResetRayCaster called without a matching PrepareRayCaster.\");\r\n }\r\n this.#raycastUsers--;\r\n if (this.#raycastUsers === 0)\r\n {\r\n this.#raycastGeometry = null;\r\n this.#raycastPreparationFailed = false;\r\n }\r\n }\r\n\r\n /** Reports whether the reference-counted CPU raycast resource is ready. */\r\n IsRayCasterReady()\r\n {\r\n return this.#raycastGeometry !== null;\r\n }\r\n\r\n /** Reports whether the current raycast preparation session failed. */\r\n HasRayCasterPreparationFailed()\r\n {\r\n return this.#raycastPreparationFailed;\r\n }\r\n\r\n /** Public Carbon query; requires a matching active raycast session. */\r\n GetIntersectionPoints(position, direction, result = {}, areaIndex = -1, rayLength = Infinity)\r\n {\r\n if (!this.#raycastGeometry)\r\n {\r\n throw new Error(\"TriGeometryRes.GetIntersectionPoints requires a prepared raycast session.\");\r\n }\r\n return this.#raycastGeometry.GetIntersectionPoints(\r\n position, direction, result, areaIndex, rayLength);\r\n }\r\n\r\n /** Internal implementation borrowed by Tr2RaycastGeometryRes. */\r\n _IntersectRaycastGeometry(position, direction, result, areaIndex, rayLength)\r\n {\r\n const hit = TriGeometryRes.intersectGeometry(\r\n this.RequireIntersectionMeshes(), position, direction, areaIndex);\r\n if (!hit.hit) return false;\r\n\r\n const dx = hit.point[0] - position[0];\r\n const dy = hit.point[1] - position[1];\r\n const dz = hit.point[2] - position[2];\r\n const denominator = direction[0] * direction[0] +\r\n direction[1] * direction[1] + direction[2] * direction[2];\r\n const distance = denominator\r\n ? (dx * direction[0] + dy * direction[1] + dz * direction[2]) / denominator\r\n : Infinity;\r\n if (distance < 0 || distance > rayLength) return false;\r\n\r\n result.distance = distance;\r\n result.position = result.position ?? result.point ?? vec3.create();\r\n result.point = result.point ?? result.position;\r\n result.normal = result.normal ?? vec3.create();\r\n result.unnormalizedNormal = result.unnormalizedNormal ?? vec3.create();\r\n vec3.copy(result.position, hit.point);\r\n vec3.copy(result.point, hit.point);\r\n vec3.copy(result.normal, hit.normal);\r\n vec3.copy(result.unnormalizedNormal, hit.unnormalizedNormal);\r\n result.meshIndex = hit.meshIndex;\r\n result.areaIndex = hit.areaIndex;\r\n result.boneIndex = hit.boneIndex;\r\n return true;\r\n }\r\n\r\n /**\r\n * The CPU triangle data an intersection query needs, or a loud failure.\r\n *\r\n * A ray query used to read `GetPayload()?.meshes`, and `intersectGeometry`\r\n * loops over `meshes?.length || 0`. So an absent payload produced a clean\r\n * MISS: `hit: false`, no error, indistinguishable from the ray genuinely\r\n * passing the object by. Picking would appear to work and simply stop\r\n * hitting things, and the symptom reads as a maths bug rather than a\r\n * residency one.\r\n *\r\n * Carbon never has to answer this, because it holds the loaded file for the\r\n * resource's lifetime and its CPU data is always resident. Ours is\r\n * releasable, so the unavailable case is real and must be named.\r\n *\r\n * Throwing is the interim answer, not the final one: once accuracy tiers\r\n * exist a query degrades to bounds or sphere and reports which produced it.\r\n * What it must never do again is report absence as a miss. See\r\n * `/docs/contracts/cpu-geometry-residency.md`.\r\n *\r\n * @returns {Array<*>} Canonical CPU meshes.\r\n * @throws {Error} When the CPU geometry is not resident.\r\n */\r\n RequireIntersectionMeshes()\r\n {\r\n const meshes = this.GetPayload()?.meshes;\r\n if (!Array.isArray(meshes))\r\n {\r\n throw new Error(\r\n \"TriGeometryRes cannot answer an intersection query: CPU geometry is \"\r\n + \"not resident. The payload was never loaded or has been released. \"\r\n + \"Reload through CjsResMan before querying.\"\r\n );\r\n }\r\n return meshes;\r\n }\r\n\r\n /**\r\n * Get vertex element descriptors for a mesh.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {Array<*>}\r\n */\r\n GetMeshVertexElements(meshIndex = 0)\r\n {\r\n // The CMF reader emits the element list as `decl`, matching the CMF struct\r\n // field; this accessor read only `vertexElements`, which no reader in this\r\n // package populates, so it returned an empty list for every real decoded\r\n // payload. Both names are accepted because the name is the producer's.\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n return mesh?.decl || mesh?.vertexElements || [];\r\n }\r\n\r\n /**\r\n * Saving belongs to the selected geometry format writer and destination.\r\n *\r\n * @throws {Error}\r\n */\r\n SaveMesh()\r\n {\r\n throw resourceBoundaryError(\r\n \"TriGeometryRes\",\r\n \"SaveMesh\",\r\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\r\n );\r\n }\r\n\r\n static payload = ResourceRequirement.GEOMETRY;\r\n\r\n // Carbon TriGeometryRes.cpp:158-178, declared beside the class\r\n // (TriGeometryRes.h:202) because it reads LOD data rather than resource\r\n // state - which is why it is static here. It returns a PLAIN SUM and does not\r\n // multiply by three: the *3 belongs to the caller, so triangles-only is a\r\n // property of the mesh draw path rather than of the geometry layer.\r\n\r\n /**\r\n * The summed primitive count over `count` areas of a LOD starting at `index`,\r\n * with the run clamped to the area list as Carbon clamps it; zero when the\r\n * index is out of range, which callers treat as \"emit no draw\".\r\n *\r\n * @param {object|null} lod\r\n * @param {number} index\r\n * @param {number} count\r\n * @returns {number}\r\n */\r\n static getPrimitiveCount(lod, index, count)\r\n {\r\n const areas = lod?.areas ?? null;\r\n const areaCount = areas?.length ?? 0;\r\n\r\n if (!areaCount || index >= areaCount) return 0;\r\n\r\n const run = index + count > areaCount ? areaCount - index : count;\r\n\r\n let primitiveCount = 0;\r\n\r\n for (let offset = 0; offset < run; offset++)\r\n {\r\n primitiveCount += TriGeometryRes.getAreaPrimitiveCount(areas[index + offset]);\r\n }\r\n\r\n return primitiveCount;\r\n }\r\n\r\n // A CMF LOD AREA IS NOT A CARBON AREA, AND THE DIFFERENCE IS A FACTOR OF THREE.\r\n //\r\n // Carbon converts at the read boundary (TriGeometryRes.cpp:905-906):\r\n //\r\n // area.m_firstIndex = cmfLodMeshArea.firstElement * 3;\r\n // area.m_primitiveCount = cmfLodMeshArea.elementCount;\r\n //\r\n // `firstElement` counts TRIANGLES and `m_firstIndex` counts INDICES, so the\r\n // start converts and the count does not. Reading `firstElement` as an index\r\n // would draw the right number of triangles from a third of the way into the\r\n // area - plausible geometry, wrong geometry, and no error anywhere.\r\n //\r\n // Both names are accepted for the same reason `decl`/`vertexElements` are\r\n // accepted above: the name is the producer's. A payload built by a reader\r\n // that already speaks Carbon's vocabulary is passed through unconverted.\r\n\r\n /**\r\n * One area's primitive count, under whichever name the producer used.\r\n *\r\n * @param {object|null} area\r\n * @returns {number} Triangle count; zero when the area is absent or unnamed.\r\n */\r\n static getAreaPrimitiveCount(area)\r\n {\r\n return area?.primitiveCount ?? area?.elementCount ?? 0;\r\n }\r\n\r\n /**\r\n * One area's first INDEX, converting a CMF first-triangle when that is what\r\n * the producer wrote.\r\n *\r\n * @param {object|null} area\r\n * @returns {number} Index offset into the LOD's index buffer.\r\n */\r\n static getAreaFirstIndex(area)\r\n {\r\n if (area?.firstIndex !== undefined) return area.firstIndex;\r\n if (area?.firstElement !== undefined) return area.firstElement * 3;\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * A LOD's total primitive count.\r\n *\r\n * Carbon takes this from the index stream rather than from the areas\r\n * (`GetStreamElementCount( cmfLod.ib ) / 3`, TriGeometryRes.cpp:890), because\r\n * an area list need not cover every triangle. Falling back to the area sum\r\n * keeps a payload that carries areas but no index-stream extent usable, and\r\n * only the reversed draw path reads this at all.\r\n *\r\n * @param {object|null} lod\r\n * @returns {number}\r\n */\r\n static getLodPrimitiveCount(lod)\r\n {\r\n if (lod?.primitiveCount !== undefined) return lod.primitiveCount;\r\n\r\n const stride = lod?.ib?.stride ?? 0;\r\n const size = lod?.ib?.size ?? 0;\r\n\r\n if (stride > 0 && size > 0) return Math.floor(size / stride / 3);\r\n\r\n return TriGeometryRes.getPrimitiveCount(lod, 0, lod?.areas?.length ?? 0);\r\n }\r\n\r\n /**\r\n * Gets the canonical area list from a mesh or its first LOD.\r\n *\r\n * @param {object|null} mesh\r\n * @returns {Array<*>|null}\r\n */\r\n static getMeshAreas(mesh)\r\n {\r\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\r\n }\r\n\r\n /**\r\n * Gets canonical bounds from a geometry payload object.\r\n *\r\n * @param {object|null} value\r\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\r\n */\r\n static getBounds(value)\r\n {\r\n if (!value || typeof value !== \"object\") return null;\r\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\r\n if (value.minBounds && value.maxBounds)\r\n {\r\n return { min: value.minBounds, max: value.maxBounds };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the canonical bounding sphere from a geometry payload object.\r\n *\r\n * @param {object|null} value\r\n * @returns {ArrayLike<number>|null}\r\n */\r\n static getSphere(value)\r\n {\r\n if (!value || typeof value !== \"object\") return null;\r\n return value.sphere || value.boundingSphere || null;\r\n }\r\n\r\n /**\r\n * Copies bounds into caller-owned outputs, or returns the source object.\r\n *\r\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n static copyBounds(bounds, outMin, outMax)\r\n {\r\n if (!outMin && !outMax) return bounds;\r\n if (!bounds || !outMin || !outMax) return false;\r\n vec3.copy(outMin, bounds.min);\r\n vec3.copy(outMax, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets canonical positions from a mesh or its first LOD.\r\n *\r\n * @param {object|null} mesh\r\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\r\n */\r\n static getMeshPositions(mesh)\r\n {\r\n return mesh?.vertex?.position\r\n || mesh?.positions\r\n || mesh?.lods?.[0]?.vertex?.position\r\n || mesh?.lods?.[0]?.positions\r\n || null;\r\n }\r\n\r\n /**\r\n * Gets the number of vertices represented by flat or nested positions.\r\n *\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @returns {number}\r\n */\r\n static getPositionCount(positions)\r\n {\r\n if (!positions) return 0;\r\n return typeof positions[0] === \"number\"\r\n ? Math.floor(positions.length / 3)\r\n : positions.length;\r\n }\r\n\r\n /**\r\n * Calculates bounds from canonical positions using caller-owned scratch.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static setBoundsFromPositions(out, positions, point)\r\n {\r\n const count = this.getPositionCount(positions);\r\n let found = false;\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n if (!found)\r\n {\r\n out[0] = out[3] = point[0];\r\n out[1] = out[4] = point[1];\r\n out[2] = out[5] = point[2];\r\n found = true;\r\n continue;\r\n }\r\n out[0] = Math.min(out[0], point[0]);\r\n out[1] = Math.min(out[1], point[1]);\r\n out[2] = Math.min(out[2], point[2]);\r\n out[3] = Math.max(out[3], point[0]);\r\n out[4] = Math.max(out[4], point[1]);\r\n out[5] = Math.max(out[5], point[2]);\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Calculates a bounding sphere from positions using caller-owned scratch.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static setSphereFromPositions(out, positions, point)\r\n {\r\n const count = this.getPositionCount(positions);\r\n let\r\n found = false,\r\n minX = Infinity,\r\n minY = Infinity,\r\n minZ = Infinity,\r\n maxX = -Infinity,\r\n maxY = -Infinity,\r\n maxZ = -Infinity;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n minX = Math.min(minX, point[0]);\r\n minY = Math.min(minY, point[1]);\r\n minZ = Math.min(minZ, point[2]);\r\n maxX = Math.max(maxX, point[0]);\r\n maxY = Math.max(maxY, point[1]);\r\n maxZ = Math.max(maxZ, point[2]);\r\n found = true;\r\n }\r\n if (!found) return false;\r\n\r\n out[0] = (minX + maxX) * 0.5;\r\n out[1] = (minY + maxY) * 0.5;\r\n out[2] = (minZ + maxZ) * 0.5;\r\n let maxSquaredRadius = 0;\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n const\r\n x = out[0] - point[0],\r\n y = out[1] - point[1],\r\n z = out[2] - point[2];\r\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\r\n }\r\n out[3] = Math.sqrt(maxSquaredRadius);\r\n return true;\r\n }\r\n\r\n /**\r\n * Calculates a mesh sphere from positions or existing bounds.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {object} mesh\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static calculateMeshSphere(out, mesh, point)\r\n {\r\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\r\n const bounds = this.getBounds(mesh);\r\n if (!bounds) return false;\r\n sph3.fromBounds(out, bounds.min, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * Stores a calculated sphere in the mesh's canonical sphere fields.\r\n *\r\n * @param {object} mesh\r\n * @param {ArrayLike<number>} sphere\r\n * @returns {void}\r\n */\r\n static setMeshSphere(mesh, sphere)\r\n {\r\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\r\n else mesh.sphere = [ ...sphere ];\r\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\r\n {\r\n mesh.boundingSphere.set(sphere);\r\n }\r\n else if (\"boundingSphere\" in mesh)\r\n {\r\n mesh.boundingSphere = [ ...sphere ];\r\n }\r\n }\r\n\r\n /**\r\n * Intersects a ray with canonical CPU geometry.\r\n *\r\n * @param {Array<object>|null} meshes\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @param {number} areaIndex\r\n * @returns {object}\r\n */\r\n static intersectGeometry(meshes, position, direction, areaIndex)\r\n {\r\n this.validateRayVector(position, \"position\");\r\n this.validateRayVector(direction, \"direction\");\r\n const\r\n ray = ray3.from(ray3.alloc(), position, direction),\r\n point = vec3.alloc(),\r\n vertexA = vec3.alloc(),\r\n vertexB = vec3.alloc(),\r\n vertexC = vec3.alloc(),\r\n normal = vec3.alloc();\r\n let nearest = null;\r\n try\r\n {\r\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\r\n {\r\n const mesh = meshes[meshIndex];\r\n const positions = this.getMeshPositions(mesh);\r\n if (!positions) continue;\r\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\r\n if (ArrayBuffer.isView(groups)\r\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\r\n {\r\n if (areaIndex !== -1 && areaIndex !== 0) continue;\r\n nearest = this.intersectFaces(\r\n nearest,\r\n groups,\r\n 0,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n continue;\r\n }\r\n if (Array.isArray(groups))\r\n {\r\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\r\n {\r\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\r\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\r\n nearest = this.intersectFaces(\r\n nearest,\r\n faces,\r\n groupIndex,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n }\r\n continue;\r\n }\r\n if (areaIndex === -1 || areaIndex === 0)\r\n {\r\n nearest = this.intersectFaces(\r\n nearest,\r\n null,\r\n 0,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n }\r\n }\r\n if (nearest) return nearest;\r\n const hitPosition = [ 0, 0, 0 ];\r\n return {\r\n hit: false,\r\n boneIndex: -1,\r\n position: hitPosition,\r\n point: hitPosition,\r\n normal: [ 0, 0, 0 ],\r\n unnormalizedNormal: [ 0, 0, 0 ],\r\n distance: Infinity,\r\n meshIndex: -1,\r\n areaIndex\r\n };\r\n }\r\n finally\r\n {\r\n vec3.unalloc(normal);\r\n vec3.unalloc(vertexC);\r\n vec3.unalloc(vertexB);\r\n vec3.unalloc(vertexA);\r\n vec3.unalloc(point);\r\n ray3.unalloc(ray);\r\n }\r\n }\r\n\r\n /**\r\n * Validates a caller-provided ray vector.\r\n *\r\n * @param {ArrayLike<number>} value\r\n * @param {string} name\r\n * @returns {void}\r\n */\r\n static validateRayVector(value, name)\r\n {\r\n if (!value\r\n || value.length < 3\r\n || !Number.isFinite(value[0])\r\n || !Number.isFinite(value[1])\r\n || !Number.isFinite(value[2]))\r\n {\r\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\r\n }\r\n }\r\n\r\n /**\r\n * Intersects a ray with one flat face list.\r\n *\r\n * @param {object|null} nearest\r\n * @param {ArrayLike<number>|null} faces\r\n * @param {number} areaIndex\r\n * @param {object} mesh\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\r\n * @param {ArrayLike<number>} rayOrigin\r\n * @param {ArrayLike<number>} ray\r\n * @param {ArrayLike<number>} point\r\n * @param {ArrayLike<number>} vertexA\r\n * @param {ArrayLike<number>} vertexB\r\n * @param {ArrayLike<number>} vertexC\r\n * @param {ArrayLike<number>} normal\r\n * @returns {object|null}\r\n */\r\n static intersectFaces(\r\n nearest,\r\n faces,\r\n areaIndex,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n rayOrigin,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n )\r\n {\r\n const count = faces?.length ?? this.getPositionCount(positions);\r\n for (let index = 0; index + 2 < count; index += 3)\r\n {\r\n const\r\n vertexIndexA = faces ? faces[index] : index,\r\n vertexIndexB = faces ? faces[index + 1] : index + 1,\r\n vertexIndexC = faces ? faces[index + 2] : index + 2;\r\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\r\n || !this.copyPosition(vertexB, positions, vertexIndexB)\r\n || !this.copyPosition(vertexC, positions, vertexIndexC)\r\n || !ray3.getIntersectVertices(\r\n point,\r\n ray,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n false\r\n ))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.distance(rayOrigin, point);\r\n if (nearest && nearest.distance <= distance) continue;\r\n if (!nearest)\r\n {\r\n const hitPosition = [ 0, 0, 0 ];\r\n nearest = {\r\n hit: true,\r\n boneIndex: -1,\r\n position: hitPosition,\r\n point: hitPosition,\r\n normal: [ 0, 0, 0 ],\r\n unnormalizedNormal: [ 0, 0, 0 ],\r\n distance,\r\n meshIndex,\r\n areaIndex\r\n };\r\n }\r\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\r\n vec3.copy(nearest.position, point);\r\n nearest.unnormalizedNormal[0] =\r\n (vertexB[1] - vertexA[1]) * (vertexC[2] - vertexA[2]) -\r\n (vertexB[2] - vertexA[2]) * (vertexC[1] - vertexA[1]);\r\n nearest.unnormalizedNormal[1] =\r\n (vertexB[2] - vertexA[2]) * (vertexC[0] - vertexA[0]) -\r\n (vertexB[0] - vertexA[0]) * (vertexC[2] - vertexA[2]);\r\n nearest.unnormalizedNormal[2] =\r\n (vertexB[0] - vertexA[0]) * (vertexC[1] - vertexA[1]) -\r\n (vertexB[1] - vertexA[1]) * (vertexC[0] - vertexA[0]);\r\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\r\n vec3.copy(nearest.normal, normal);\r\n nearest.distance = distance;\r\n nearest.meshIndex = meshIndex;\r\n nearest.areaIndex = areaIndex;\r\n }\r\n return nearest;\r\n }\r\n\r\n /**\r\n * Copies one flat or nested position into caller-owned output.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\r\n * @param {number} index\r\n * @returns {boolean}\r\n */\r\n static copyPosition(out, positions, index)\r\n {\r\n if (!Number.isInteger(index) || index < 0) return false;\r\n if (typeof positions[0] === \"number\")\r\n {\r\n const offset = index * 3;\r\n if (offset + 2 >= positions.length) return false;\r\n out[0] = positions[offset];\r\n out[1] = positions[offset + 1];\r\n out[2] = positions[offset + 2];\r\n return true;\r\n }\r\n const point = positions[index];\r\n if (!point || point.length < 3) return false;\r\n out[0] = point[0];\r\n out[1] = point[1];\r\n out[2] = point[2];\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the first blend index for a mesh vertex.\r\n *\r\n * @param {object} mesh\r\n * @param {number} vertexIndex\r\n * @returns {number}\r\n */\r\n static getMeshBoneIndex(mesh, vertexIndex)\r\n {\r\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\r\n if (!indices) return -1;\r\n if (typeof indices[0] === \"number\")\r\n {\r\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\r\n }\r\n return Number(indices[vertexIndex]?.[0] ?? -1);\r\n }\r\n\r\n}\r\n\r\n// Declared as data rather than with decorators, so the resource tree loads from\r\n// source without a transform. Field order is key order, and GetValues() exports\r\n// in that order.\r\nCjsSchema.define(TriGeometryRes, {\r\n className: \"TriGeometryRes\",\r\n family: \"resources\",\r\n fields: {\r\n forceLod: [ type.boolean, io.readwrite ],\r\n forcedLodIndex: [ type.int32, io.readwrite ],\r\n name: [ type.string, io.readwrite ]\r\n },\r\n methods: {\r\n GetMeshCount: [ carbon.method, impl.adapted ],\r\n GetAnimationCount: [ carbon.method, impl.adapted ],\r\n GetSkeletonCount: [ carbon.method, impl.adapted ],\r\n GetSkeletonData: [ carbon.method, impl.adapted ],\r\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\r\n GetLodIndexForScreenSize: [ carbon.method, impl.adapted ],\r\n GetMeshLod: [ carbon.method, impl.adapted ],\r\n GetMeshLodByIndex: [ carbon.method, impl.adapted ],\r\n GetMeshName: [ carbon.method, impl.adapted ],\r\n GetMeshAreaName: [ carbon.method, impl.adapted ],\r\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\r\n GetBoundingBox: [ carbon.method, impl.adapted ],\r\n GetBoundingSphere: [ carbon.method, impl.adapted ],\r\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\r\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\r\n Reload: [ carbon.method, impl.notSupported ],\r\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\r\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\r\n PrepareRayCaster: [ carbon.method, impl.adapted ],\r\n ResetRayCaster: [ carbon.method, impl.adapted ],\r\n IsRayCasterReady: [ carbon.method, impl.adapted ],\r\n HasRayCasterPreparationFailed: [ carbon.method, impl.adapted ],\r\n GetIntersectionPoints: [ carbon.method, impl.adapted ],\r\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\r\n SaveMesh: [ carbon.method, impl.notSupported ]\r\n }\r\n});\r\n"],"names":["TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","Error","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetMeshData","GetCMFData","IsUsingCMF","GetLodIndexForScreenSize","screenSize","Infinity","lods","lastLod","Math","min","maxScreenSize","GetMeshLod","GetMeshLodByIndex","lodIndex","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","RequireIntersectionMeshes","GetAreaIntersectionPointNormalBone","RangeError","PrepareRayCaster","Tr2RaycastGeometryRes","SetSource","_error","ResetRayCaster","IsRayCasterReady","HasRayCasterPreparationFailed","GetIntersectionPoints","result","rayLength","_IntersectRaycastGeometry","hit","dx","dy","dz","denominator","distance","create","normal","unnormalizedNormal","boneIndex","GetMeshVertexElements","decl","vertexElements","SaveMesh","ResourceRequirement","GEOMETRY","getPrimitiveCount","lod","count","areaCount","run","primitiveCount","offset","getAreaPrimitiveCount","elementCount","getAreaFirstIndex","firstIndex","firstElement","getLodPrimitiveCount","stride","ib","size","floor","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","found","copyPosition","setSphereFromPositions","minX","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hitPosition","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","triangleNormalTo","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","io","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["import { ResourceRequirement } from \"../ResourceRequirement.js\";\n// Source: trinity/trinity/Resources/TriGeometryRes.h\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\nimport { box3 } from \"#math/box3\";\nimport { triangleNormalTo } from \"#math/mesh\";\nimport { ray3 } from \"#math/ray3\";\nimport { sph3 } from \"#math/sph3\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { Tr2RaycastGeometryRes } from \"./Tr2RaycastGeometryRes.js\";\nimport {\n assertResourcePayloadArray,\n assertResourcePayloadObject,\n resourceBoundaryError,\n resourcePayloadError\n} from \"../resourceBoundary.js\";\n\n// Scratch edges for the picking cross product. Picking is synchronous and the\n// result is consumed before the next hit, so one pair is enough.\n//\n// PLAIN arrays, not `vec3.create()`, because the destination is one: the hit\n// record's `unnormalizedNormal` is `[ 0, 0, 0 ]`, so the products stay in double\n// precision the whole way. Rounding the two edges to a math array's element type\n// first perturbs the result on all but 2.5% of triangles, and by as much as 1.8%\n// relatively where the cross product cancels - which is exactly the thin sliver\n// a picking ray is most likely to graze.\nconst edgeAB = [ 0, 0, 0 ];\nconst edgeAC = [ 0, 0, 0 ];\n\n/**\n * Resource record that owns geometry payload facts (meshes, optional\n * skeletons and animations) and LOD-force metadata, while engine packages\n * decide device buffers, vertex declarations, and draw-time state.\n *\n * Geometry inspection composes the generic math supplied by the runtime global layer\n * with resource-specific payload traversal.\n */\nexport class TriGeometryRes extends CjsResource\n{\n forceLod = false;\n forcedLodIndex = -1;\n name = \"\";\n\n #raycastGeometry = null;\n\n #raycastUsers = 0;\n\n #raycastPreparationFailed = false;\n\n /** Creates a TriGeometryRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain geometry payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {TriGeometryRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (this.#raycastUsers !== 0)\n {\n throw new Error(\"TriGeometryRes payload cannot change during an active raycast session.\");\n }\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n if (payload === null)\n {\n super.SetPayload(null);\n return this;\n }\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\n for (const field of [ \"skeletons\", \"animations\" ])\n {\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\n {\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\n }\n }\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Get mesh count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetMeshCount()\n {\n return this.GetPayload()?.meshes?.length || 0;\n }\n\n /**\n * Get animation count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetAnimationCount()\n {\n return this.GetPayload()?.animations?.length || 0;\n }\n\n /**\n * Get skeleton count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetSkeletonCount()\n {\n return this.GetPayload()?.skeletons?.length || 0;\n }\n\n /**\n * Get one resource-owned skeleton from the CPU geometry payload.\n *\n * @param {number} skeletonIndex\n * @returns {*}\n */\n GetSkeletonData(skeletonIndex = 0)\n {\n const index = Number(skeletonIndex);\n\n if (!Number.isInteger(index) || index < 0)\n {\n return null;\n }\n\n return this.GetPayload()?.skeletons?.[index] || null;\n }\n\n /**\n * Get mesh area count from a CPU geometry payload mesh.\n *\n * @param {number} meshIndex\n * @returns {number}\n */\n GetMeshAreaCount(meshIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n return mesh?.areas?.length || 0;\n }\n\n /** Returns one decoded CPU mesh record, or null when the index is absent. */\n GetMeshData(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex] ?? null;\n }\n\n /** Returns the decoded CMF-shaped payload used by Carbon mesh consumers. */\n GetCMFData()\n {\n return this.GetPayload();\n }\n\n /** Whether the resident payload has Carbon's CMF mesh collection shape. */\n IsUsingCMF()\n {\n return Array.isArray(this.GetPayload()?.meshes);\n }\n\n // Carbon TriGeometryRes.cpp:294-319. Walks LODs from the LOWEST quality up\n // and takes the first whose authored maxScreenSize still covers the requested\n // size; a request larger than the best LOD falls back to LOD 0, which Carbon\n // comments explicitly. forceLod pins the index instead, clamped to the last\n // LOD.\n\n /**\n * The LOD index this mesh should be drawn at for a screen size, or -1 when the\n * mesh does not exist.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {number}\n */\n GetLodIndexForScreenSize(meshIndex = 0, screenSize = Infinity)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh) return -1;\n\n // A decoder may flatten a single-LOD mesh, putting the areas on the mesh\n // itself; that mesh IS its own only LOD (see getMeshAreas).\n const lods = mesh.lods?.length ? mesh.lods : null;\n const lastLod = lods ? lods.length - 1 : 0;\n\n if (this.forceLod && this.forcedLodIndex >= 0)\n {\n return Math.min(this.forcedLodIndex, lastLod);\n }\n\n for (let index = lastLod; index >= 0; index--)\n {\n const maxScreenSize = (lods ? lods[index]?.maxScreenSize : mesh.maxScreenSize) ?? 0;\n if (maxScreenSize >= screenSize) return index;\n }\n\n return 0;\n }\n\n // Carbon TriGeometryRes.cpp:268-279. Carbon overloads this on float\n // screenSize versus int lodIndex; JavaScript cannot, so the index form is\n // GetMeshLodByIndex. Carbon indexes m_lods with the result unguarded, so a\n // mesh with an EMPTY lod list reads out of bounds there; this port returns\n // null (docs/research/carbon-known-defects.md).\n\n /**\n * The LOD data this mesh should be drawn at for a screen size, or null when\n * the mesh has no LODs.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {object|null}\n */\n GetMeshLod(meshIndex = 0, screenSize = Infinity)\n {\n return this.GetMeshLodByIndex(meshIndex, this.GetLodIndexForScreenSize(meshIndex, screenSize));\n }\n\n /**\n * The LOD data at an explicit index, or null when the mesh or index does not\n * exist (Carbon TriGeometryRes.cpp:281-292).\n *\n * @param {number} meshIndex\n * @param {number} lodIndex\n * @returns {object|null}\n */\n GetMeshLodByIndex(meshIndex = 0, lodIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh || lodIndex < 0) return null;\n\n if (mesh.lods?.length)\n {\n return lodIndex < mesh.lods.length ? mesh.lods[lodIndex] : null;\n }\n\n return lodIndex === 0 && mesh.areas ? mesh : null;\n }\n\n /**\n * Get mesh name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @returns {string}\n */\n GetMeshName(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\n }\n\n /**\n * Get mesh area name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @returns {string}\n */\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\n }\n\n /**\n * Get area bounding box from geometry payload data.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\n {\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\n const bounds = TriGeometryRes.getBounds(area);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding box from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\n {\n const payload = this.GetPayload();\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getBounds(payload);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding sphere from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} out\n * @returns {*|boolean}\n */\n GetBoundingSphere(meshIndex = 0, out = null)\n {\n const payload = this.GetPayload();\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getSphere(payload);\n if (!out) return sphere;\n if (!sphere) return false;\n vec4.copy(out, sphere);\n return true;\n }\n\n /**\n * Calculate a transformed bounding box from canonical CPU vertex data.\n *\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\n * therefore uses the ordinary column-vector index layout.\n *\n * @param {number} meshIndex\n * @param {ArrayLike<number>} transform\n * @returns {{min: number[], max: number[]}|null}\n */\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\n {\n if (!transform || transform.length < 16)\n {\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\n }\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n if (!mesh) return null;\n const positions = TriGeometryRes.getMeshPositions(mesh);\n const sourceBounds = TriGeometryRes.getBounds(mesh);\n if (!positions && !sourceBounds) return null;\n\n const\n bounds = box3.alloc(),\n point = vec3.alloc();\n try\n {\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\n {\n if (!sourceBounds) return null;\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\n }\n box3.transformMat4(bounds, bounds, transform);\n return {\n min: [ bounds[0], bounds[1], bounds[2] ],\n max: [ bounds[3], bounds[4], bounds[5] ]\n };\n }\n finally\n {\n vec3.unalloc(point);\n box3.unalloc(bounds);\n }\n }\n\n /**\n * Recalculate bounding sphere data from canonical CPU vertex positions.\n *\n * @returns {boolean}\n */\n RecalculateBoundingSphere()\n {\n let updated = false;\n const\n sphere = sph3.alloc(),\n point = vec3.alloc();\n try\n {\n for (const mesh of this.GetPayload()?.meshes || [])\n {\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\n TriGeometryRes.setMeshSphere(mesh, sphere);\n updated = true;\n }\n return updated;\n }\n finally\n {\n vec3.unalloc(point);\n sph3.unalloc(sphere);\n }\n }\n\n /**\n * Reloading belongs to the resource manager because it owns source and\n * canonical replacement policy.\n *\n * @throws {Error}\n */\n Reload() {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"Reload\",\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\n );\n }\n\n /**\n * Intersect a ray with canonical CPU triangle data.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @returns {object}\n */\n GetIntersectionPointNormalBone(position, direction)\n {\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n -1\n );\n }\n\n /**\n * Intersect a ray with one area index across canonical CPU meshes.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\n {\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\n {\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\n }\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n areaIndex\n );\n }\n\n /** Opens one borrowed CPU-raycast session over the resident geometry. */\n PrepareRayCaster()\n {\n this.#raycastUsers++;\n if (this.#raycastGeometry || this.#raycastPreparationFailed) return;\n\n try\n {\n this.RequireIntersectionMeshes();\n this.#raycastGeometry = new Tr2RaycastGeometryRes().SetSource(this);\n }\n catch (_error)\n {\n this.#raycastPreparationFailed = true;\n }\n }\n\n /** Closes exactly one raycast session and drops the derived acceleration resource at zero. */\n ResetRayCaster()\n {\n if (this.#raycastUsers === 0)\n {\n throw new Error(\"TriGeometryRes.ResetRayCaster called without a matching PrepareRayCaster.\");\n }\n this.#raycastUsers--;\n if (this.#raycastUsers === 0)\n {\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n }\n }\n\n /** Reports whether the reference-counted CPU raycast resource is ready. */\n IsRayCasterReady()\n {\n return this.#raycastGeometry !== null;\n }\n\n /** Reports whether the current raycast preparation session failed. */\n HasRayCasterPreparationFailed()\n {\n return this.#raycastPreparationFailed;\n }\n\n /** Public Carbon query; requires a matching active raycast session. */\n GetIntersectionPoints(position, direction, result = {}, areaIndex = -1, rayLength = Infinity)\n {\n if (!this.#raycastGeometry)\n {\n throw new Error(\"TriGeometryRes.GetIntersectionPoints requires a prepared raycast session.\");\n }\n return this.#raycastGeometry.GetIntersectionPoints(\n position, direction, result, areaIndex, rayLength);\n }\n\n /** Internal implementation borrowed by Tr2RaycastGeometryRes. */\n _IntersectRaycastGeometry(position, direction, result, areaIndex, rayLength)\n {\n const hit = TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(), position, direction, areaIndex);\n if (!hit.hit) return false;\n\n const dx = hit.point[0] - position[0];\n const dy = hit.point[1] - position[1];\n const dz = hit.point[2] - position[2];\n const denominator = direction[0] * direction[0] +\n direction[1] * direction[1] + direction[2] * direction[2];\n const distance = denominator\n ? (dx * direction[0] + dy * direction[1] + dz * direction[2]) / denominator\n : Infinity;\n if (distance < 0 || distance > rayLength) return false;\n\n result.distance = distance;\n result.position = result.position ?? result.point ?? vec3.create();\n result.point = result.point ?? result.position;\n result.normal = result.normal ?? vec3.create();\n result.unnormalizedNormal = result.unnormalizedNormal ?? vec3.create();\n vec3.copy(result.position, hit.point);\n vec3.copy(result.point, hit.point);\n vec3.copy(result.normal, hit.normal);\n vec3.copy(result.unnormalizedNormal, hit.unnormalizedNormal);\n result.meshIndex = hit.meshIndex;\n result.areaIndex = hit.areaIndex;\n result.boneIndex = hit.boneIndex;\n return true;\n }\n\n /**\n * The CPU triangle data an intersection query needs, or a loud failure.\n *\n * A ray query used to read `GetPayload()?.meshes`, and `intersectGeometry`\n * loops over `meshes?.length || 0`. So an absent payload produced a clean\n * MISS: `hit: false`, no error, indistinguishable from the ray genuinely\n * passing the object by. Picking would appear to work and simply stop\n * hitting things, and the symptom reads as a maths bug rather than a\n * residency one.\n *\n * Carbon never has to answer this, because it holds the loaded file for the\n * resource's lifetime and its CPU data is always resident. Ours is\n * releasable, so the unavailable case is real and must be named.\n *\n * Throwing is the interim answer, not the final one: once accuracy tiers\n * exist a query degrades to bounds or sphere and reports which produced it.\n * What it must never do again is report absence as a miss. See\n * `/docs/contracts/cpu-geometry-residency.md`.\n *\n * @returns {Array<*>} Canonical CPU meshes.\n * @throws {Error} When the CPU geometry is not resident.\n */\n RequireIntersectionMeshes()\n {\n const meshes = this.GetPayload()?.meshes;\n if (!Array.isArray(meshes))\n {\n throw new Error(\n \"TriGeometryRes cannot answer an intersection query: CPU geometry is \"\n + \"not resident. The payload was never loaded or has been released. \"\n + \"Reload through CjsResMan before querying.\"\n );\n }\n return meshes;\n }\n\n /**\n * Get vertex element descriptors for a mesh.\n *\n * @param {number} meshIndex\n * @returns {Array<*>}\n */\n GetMeshVertexElements(meshIndex = 0)\n {\n // The CMF reader emits the element list as `decl`, matching the CMF struct\n // field; this accessor read only `vertexElements`, which no reader in this\n // package populates, so it returned an empty list for every real decoded\n // payload. Both names are accepted because the name is the producer's.\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n return mesh?.decl || mesh?.vertexElements || [];\n }\n\n /**\n * Saving belongs to the selected geometry format writer and destination.\n *\n * @throws {Error}\n */\n SaveMesh()\n {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"SaveMesh\",\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\n );\n }\n\n static payload = ResourceRequirement.GEOMETRY;\n\n // Carbon TriGeometryRes.cpp:158-178, declared beside the class\n // (TriGeometryRes.h:202) because it reads LOD data rather than resource\n // state - which is why it is static here. It returns a PLAIN SUM and does not\n // multiply by three: the *3 belongs to the caller, so triangles-only is a\n // property of the mesh draw path rather than of the geometry layer.\n\n /**\n * The summed primitive count over `count` areas of a LOD starting at `index`,\n * with the run clamped to the area list as Carbon clamps it; zero when the\n * index is out of range, which callers treat as \"emit no draw\".\n *\n * @param {object|null} lod\n * @param {number} index\n * @param {number} count\n * @returns {number}\n */\n static getPrimitiveCount(lod, index, count)\n {\n const areas = lod?.areas ?? null;\n const areaCount = areas?.length ?? 0;\n\n if (!areaCount || index >= areaCount) return 0;\n\n const run = index + count > areaCount ? areaCount - index : count;\n\n let primitiveCount = 0;\n\n for (let offset = 0; offset < run; offset++)\n {\n primitiveCount += TriGeometryRes.getAreaPrimitiveCount(areas[index + offset]);\n }\n\n return primitiveCount;\n }\n\n // A CMF LOD AREA IS NOT A CARBON AREA, AND THE DIFFERENCE IS A FACTOR OF THREE.\n //\n // Carbon converts at the read boundary (TriGeometryRes.cpp:905-906):\n //\n // area.m_firstIndex = cmfLodMeshArea.firstElement * 3;\n // area.m_primitiveCount = cmfLodMeshArea.elementCount;\n //\n // `firstElement` counts TRIANGLES and `m_firstIndex` counts INDICES, so the\n // start converts and the count does not. Reading `firstElement` as an index\n // would draw the right number of triangles from a third of the way into the\n // area - plausible geometry, wrong geometry, and no error anywhere.\n //\n // Both names are accepted for the same reason `decl`/`vertexElements` are\n // accepted above: the name is the producer's. A payload built by a reader\n // that already speaks Carbon's vocabulary is passed through unconverted.\n\n /**\n * One area's primitive count, under whichever name the producer used.\n *\n * @param {object|null} area\n * @returns {number} Triangle count; zero when the area is absent or unnamed.\n */\n static getAreaPrimitiveCount(area)\n {\n return area?.primitiveCount ?? area?.elementCount ?? 0;\n }\n\n /**\n * One area's first INDEX, converting a CMF first-triangle when that is what\n * the producer wrote.\n *\n * @param {object|null} area\n * @returns {number} Index offset into the LOD's index buffer.\n */\n static getAreaFirstIndex(area)\n {\n if (area?.firstIndex !== undefined) return area.firstIndex;\n if (area?.firstElement !== undefined) return area.firstElement * 3;\n\n return 0;\n }\n\n /**\n * A LOD's total primitive count.\n *\n * Carbon takes this from the index stream rather than from the areas\n * (`GetStreamElementCount( cmfLod.ib ) / 3`, TriGeometryRes.cpp:890), because\n * an area list need not cover every triangle. Falling back to the area sum\n * keeps a payload that carries areas but no index-stream extent usable, and\n * only the reversed draw path reads this at all.\n *\n * @param {object|null} lod\n * @returns {number}\n */\n static getLodPrimitiveCount(lod)\n {\n if (lod?.primitiveCount !== undefined) return lod.primitiveCount;\n\n const stride = lod?.ib?.stride ?? 0;\n const size = lod?.ib?.size ?? 0;\n\n if (stride > 0 && size > 0) return Math.floor(size / stride / 3);\n\n return TriGeometryRes.getPrimitiveCount(lod, 0, lod?.areas?.length ?? 0);\n }\n\n /**\n * Gets the canonical area list from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {Array<*>|null}\n */\n static getMeshAreas(mesh)\n {\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\n }\n\n /**\n * Gets canonical bounds from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\n */\n static getBounds(value)\n {\n if (!value || typeof value !== \"object\") return null;\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\n if (value.minBounds && value.maxBounds)\n {\n return { min: value.minBounds, max: value.maxBounds };\n }\n return null;\n }\n\n /**\n * Gets the canonical bounding sphere from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {ArrayLike<number>|null}\n */\n static getSphere(value)\n {\n if (!value || typeof value !== \"object\") return null;\n return value.sphere || value.boundingSphere || null;\n }\n\n /**\n * Copies bounds into caller-owned outputs, or returns the source object.\n *\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n static copyBounds(bounds, outMin, outMax)\n {\n if (!outMin && !outMax) return bounds;\n if (!bounds || !outMin || !outMax) return false;\n vec3.copy(outMin, bounds.min);\n vec3.copy(outMax, bounds.max);\n return true;\n }\n\n /**\n * Gets canonical positions from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\n */\n static getMeshPositions(mesh)\n {\n return mesh?.vertex?.position\n || mesh?.positions\n || mesh?.lods?.[0]?.vertex?.position\n || mesh?.lods?.[0]?.positions\n || null;\n }\n\n /**\n * Gets the number of vertices represented by flat or nested positions.\n *\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @returns {number}\n */\n static getPositionCount(positions)\n {\n if (!positions) return 0;\n return typeof positions[0] === \"number\"\n ? Math.floor(positions.length / 3)\n : positions.length;\n }\n\n /**\n * Calculates bounds from canonical positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setBoundsFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let found = false;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n if (!found)\n {\n out[0] = out[3] = point[0];\n out[1] = out[4] = point[1];\n out[2] = out[5] = point[2];\n found = true;\n continue;\n }\n out[0] = Math.min(out[0], point[0]);\n out[1] = Math.min(out[1], point[1]);\n out[2] = Math.min(out[2], point[2]);\n out[3] = Math.max(out[3], point[0]);\n out[4] = Math.max(out[4], point[1]);\n out[5] = Math.max(out[5], point[2]);\n }\n return found;\n }\n\n /**\n * Calculates a bounding sphere from positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setSphereFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let\n found = false,\n minX = Infinity,\n minY = Infinity,\n minZ = Infinity,\n maxX = -Infinity,\n maxY = -Infinity,\n maxZ = -Infinity;\n\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n minX = Math.min(minX, point[0]);\n minY = Math.min(minY, point[1]);\n minZ = Math.min(minZ, point[2]);\n maxX = Math.max(maxX, point[0]);\n maxY = Math.max(maxY, point[1]);\n maxZ = Math.max(maxZ, point[2]);\n found = true;\n }\n if (!found) return false;\n\n out[0] = (minX + maxX) * 0.5;\n out[1] = (minY + maxY) * 0.5;\n out[2] = (minZ + maxZ) * 0.5;\n let maxSquaredRadius = 0;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n const\n x = out[0] - point[0],\n y = out[1] - point[1],\n z = out[2] - point[2];\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\n }\n out[3] = Math.sqrt(maxSquaredRadius);\n return true;\n }\n\n /**\n * Calculates a mesh sphere from positions or existing bounds.\n *\n * @param {ArrayLike<number>} out\n * @param {object} mesh\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static calculateMeshSphere(out, mesh, point)\n {\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\n const bounds = this.getBounds(mesh);\n if (!bounds) return false;\n sph3.fromBounds(out, bounds.min, bounds.max);\n return true;\n }\n\n /**\n * Stores a calculated sphere in the mesh's canonical sphere fields.\n *\n * @param {object} mesh\n * @param {ArrayLike<number>} sphere\n * @returns {void}\n */\n static setMeshSphere(mesh, sphere)\n {\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\n else mesh.sphere = [ ...sphere ];\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\n {\n mesh.boundingSphere.set(sphere);\n }\n else if (\"boundingSphere\" in mesh)\n {\n mesh.boundingSphere = [ ...sphere ];\n }\n }\n\n /**\n * Intersects a ray with canonical CPU geometry.\n *\n * @param {Array<object>|null} meshes\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n static intersectGeometry(meshes, position, direction, areaIndex)\n {\n this.validateRayVector(position, \"position\");\n this.validateRayVector(direction, \"direction\");\n const\n ray = ray3.from(ray3.alloc(), position, direction),\n point = vec3.alloc(),\n vertexA = vec3.alloc(),\n vertexB = vec3.alloc(),\n vertexC = vec3.alloc(),\n normal = vec3.alloc();\n let nearest = null;\n try\n {\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\n {\n const mesh = meshes[meshIndex];\n const positions = this.getMeshPositions(mesh);\n if (!positions) continue;\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\n if (ArrayBuffer.isView(groups)\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\n {\n if (areaIndex !== -1 && areaIndex !== 0) continue;\n nearest = this.intersectFaces(\n nearest,\n groups,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n continue;\n }\n if (Array.isArray(groups))\n {\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\n {\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\n nearest = this.intersectFaces(\n nearest,\n faces,\n groupIndex,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n continue;\n }\n if (areaIndex === -1 || areaIndex === 0)\n {\n nearest = this.intersectFaces(\n nearest,\n null,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n }\n if (nearest) return nearest;\n const hitPosition = [ 0, 0, 0 ];\n return {\n hit: false,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance: Infinity,\n meshIndex: -1,\n areaIndex\n };\n }\n finally\n {\n vec3.unalloc(normal);\n vec3.unalloc(vertexC);\n vec3.unalloc(vertexB);\n vec3.unalloc(vertexA);\n vec3.unalloc(point);\n ray3.unalloc(ray);\n }\n }\n\n /**\n * Validates a caller-provided ray vector.\n *\n * @param {ArrayLike<number>} value\n * @param {string} name\n * @returns {void}\n */\n static validateRayVector(value, name)\n {\n if (!value\n || value.length < 3\n || !Number.isFinite(value[0])\n || !Number.isFinite(value[1])\n || !Number.isFinite(value[2]))\n {\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\n }\n }\n\n /**\n * Intersects a ray with one flat face list.\n *\n * @param {object|null} nearest\n * @param {ArrayLike<number>|null} faces\n * @param {number} areaIndex\n * @param {object} mesh\n * @param {number} meshIndex\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {ArrayLike<number>} rayOrigin\n * @param {ArrayLike<number>} ray\n * @param {ArrayLike<number>} point\n * @param {ArrayLike<number>} vertexA\n * @param {ArrayLike<number>} vertexB\n * @param {ArrayLike<number>} vertexC\n * @param {ArrayLike<number>} normal\n * @returns {object|null}\n */\n static intersectFaces(\n nearest,\n faces,\n areaIndex,\n mesh,\n meshIndex,\n positions,\n rayOrigin,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n )\n {\n const count = faces?.length ?? this.getPositionCount(positions);\n for (let index = 0; index + 2 < count; index += 3)\n {\n const\n vertexIndexA = faces ? faces[index] : index,\n vertexIndexB = faces ? faces[index + 1] : index + 1,\n vertexIndexC = faces ? faces[index + 2] : index + 2;\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\n || !this.copyPosition(vertexB, positions, vertexIndexB)\n || !this.copyPosition(vertexC, positions, vertexIndexC)\n || !ray3.getIntersectVertices(\n point,\n ray,\n vertexA,\n vertexB,\n vertexC,\n false\n ))\n {\n continue;\n }\n const distance = vec3.distance(rayOrigin, point);\n if (nearest && nearest.distance <= distance) continue;\n if (!nearest)\n {\n const hitPosition = [ 0, 0, 0 ];\n nearest = {\n hit: true,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance,\n meshIndex,\n areaIndex\n };\n }\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\n vec3.copy(nearest.position, point);\n // (B - A) x (C - A). This was written out in full one line above a\n // `triangleNormalTo` call that computes the NORMALISED version of the same\n // vector, so the winding convention lived in two places at once.\n vec3.subtract(edgeAB, vertexB, vertexA);\n vec3.subtract(edgeAC, vertexC, vertexA);\n vec3.cross(nearest.unnormalizedNormal, edgeAB, edgeAC);\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\n vec3.copy(nearest.normal, normal);\n nearest.distance = distance;\n nearest.meshIndex = meshIndex;\n nearest.areaIndex = areaIndex;\n }\n return nearest;\n }\n\n /**\n * Copies one flat or nested position into caller-owned output.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {number} index\n * @returns {boolean}\n */\n static copyPosition(out, positions, index)\n {\n if (!Number.isInteger(index) || index < 0) return false;\n if (typeof positions[0] === \"number\")\n {\n const offset = index * 3;\n if (offset + 2 >= positions.length) return false;\n out[0] = positions[offset];\n out[1] = positions[offset + 1];\n out[2] = positions[offset + 2];\n return true;\n }\n const point = positions[index];\n if (!point || point.length < 3) return false;\n out[0] = point[0];\n out[1] = point[1];\n out[2] = point[2];\n return true;\n }\n\n /**\n * Gets the first blend index for a mesh vertex.\n *\n * @param {object} mesh\n * @param {number} vertexIndex\n * @returns {number}\n */\n static getMeshBoneIndex(mesh, vertexIndex)\n {\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\n if (!indices) return -1;\n if (typeof indices[0] === \"number\")\n {\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\n }\n return Number(indices[vertexIndex]?.[0] ?? -1);\n }\n\n}\n\n// Declared as data rather than with decorators, so the resource tree loads from\n// source without a transform. Field order is key order, and GetValues() exports\n// in that order.\nCjsSchema.define(TriGeometryRes, {\n className: \"TriGeometryRes\",\n family: \"resources\",\n fields: {\n forceLod: [ type.boolean, io.readwrite ],\n forcedLodIndex: [ type.int32, io.readwrite ],\n name: [ type.string, io.readwrite ]\n },\n methods: {\n GetMeshCount: [ carbon.method, impl.adapted ],\n GetAnimationCount: [ carbon.method, impl.adapted ],\n GetSkeletonCount: [ carbon.method, impl.adapted ],\n GetSkeletonData: [ carbon.method, impl.adapted ],\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\n GetLodIndexForScreenSize: [ carbon.method, impl.adapted ],\n GetMeshLod: [ carbon.method, impl.adapted ],\n GetMeshLodByIndex: [ carbon.method, impl.adapted ],\n GetMeshName: [ carbon.method, impl.adapted ],\n GetMeshAreaName: [ carbon.method, impl.adapted ],\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingSphere: [ carbon.method, impl.adapted ],\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\n Reload: [ carbon.method, impl.notSupported ],\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n PrepareRayCaster: [ carbon.method, impl.adapted ],\n ResetRayCaster: [ carbon.method, impl.adapted ],\n IsRayCasterReady: [ carbon.method, impl.adapted ],\n HasRayCasterPreparationFailed: [ carbon.method, impl.adapted ],\n GetIntersectionPoints: [ carbon.method, impl.adapted ],\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\n SaveMesh: [ carbon.method, impl.notSupported ]\n }\n});\n"],"names":["edgeAB","edgeAC","TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","Error","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetMeshData","GetCMFData","IsUsingCMF","GetLodIndexForScreenSize","screenSize","Infinity","lods","lastLod","Math","min","maxScreenSize","GetMeshLod","GetMeshLodByIndex","lodIndex","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","RequireIntersectionMeshes","GetAreaIntersectionPointNormalBone","RangeError","PrepareRayCaster","Tr2RaycastGeometryRes","SetSource","_error","ResetRayCaster","IsRayCasterReady","HasRayCasterPreparationFailed","GetIntersectionPoints","result","rayLength","_IntersectRaycastGeometry","hit","dx","dy","dz","denominator","distance","create","normal","unnormalizedNormal","boneIndex","GetMeshVertexElements","decl","vertexElements","SaveMesh","ResourceRequirement","GEOMETRY","getPrimitiveCount","lod","count","areaCount","run","primitiveCount","offset","getAreaPrimitiveCount","elementCount","getAreaFirstIndex","firstIndex","firstElement","getLodPrimitiveCount","stride","ib","size","floor","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","found","copyPosition","setSphereFromPositions","minX","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hitPosition","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","subtract","cross","triangleNormalTo","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","io","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported"],"mappings":"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"}
|
|
@@ -1,59 +1,58 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type } from '#schema';
|
|
1
|
+
import { CjsSchema, type } from '#schema';
|
|
3
2
|
import { CjsModel } from '#model';
|
|
4
3
|
import { vec3 } from '#math/vec3';
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
// Source: trinity/trinity/Resources/TriGeometryRes.h
|
|
6
|
+
// Schema: format-carbon resources/TriGeometryResAreaData.json; maintained by the runtime resource layer.
|
|
7
7
|
|
|
8
8
|
/** TriGeometryResAreaData (resources) - maintained from schema shapeHash a859a2c5.... */
|
|
9
|
-
let _TriGeometryResAreaDa;
|
|
10
9
|
class TriGeometryResAreaData extends CjsModel {
|
|
11
|
-
static {
|
|
12
|
-
({
|
|
13
|
-
e: [_init_name, _init_extra_name, _init_firstIndex, _init_extra_firstIndex, _init_primitiveCount, _init_extra_primitiveCount, _init_minBounds, _init_extra_minBounds, _init_maxBounds, _init_extra_maxBounds, _init_jointBindings, _init_extra_jointBindings, _init_staticBlas, _init_extra_staticBlas, _init_isSkinned, _init_extra_isSkinned, _init_isMorphed, _init_extra_isMorphed, _init_rtGeometryConstants, _init_extra_rtGeometryConstants],
|
|
14
|
-
c: [_TriGeometryResAreaDa, _initClass]
|
|
15
|
-
} = _applyDecs2311(this, [type.define({
|
|
16
|
-
className: "TriGeometryResAreaData",
|
|
17
|
-
family: "resources"
|
|
18
|
-
})], [[[type, type.string], 16, "name"], [[type, type.int32], 16, "firstIndex"], [[type, type.int32], 16, "primitiveCount"], [[type, type.vec3], 16, "minBounds"], [[type, type.vec3], 16, "maxBounds"], [[type, type.unknown], 16, "jointBindings"], [type.rawStruct("Tr2RtBottomLevelAccelerationStructureAL"), 0, "staticBlas"], [[type, type.boolean], 16, "isSkinned"], [[type, type.boolean], 16, "isMorphed"], [type.rawStruct("Tr2ConstantBufferAL"), 0, "rtGeometryConstants"]], 0, void 0, CjsModel));
|
|
19
|
-
}
|
|
20
|
-
constructor(...args) {
|
|
21
|
-
super(...args);
|
|
22
|
-
_init_extra_rtGeometryConstants(this);
|
|
23
|
-
}
|
|
24
10
|
/** m_name (std::string) */
|
|
25
|
-
name =
|
|
11
|
+
name = "";
|
|
26
12
|
|
|
27
13
|
/** m_firstIndex (int) */
|
|
28
|
-
firstIndex =
|
|
14
|
+
firstIndex = 0;
|
|
29
15
|
|
|
30
16
|
/** m_primitiveCount (int) */
|
|
31
|
-
primitiveCount =
|
|
17
|
+
primitiveCount = 0;
|
|
32
18
|
|
|
33
19
|
/** m_minBounds (Vector3) */
|
|
34
|
-
minBounds =
|
|
20
|
+
minBounds = vec3.create();
|
|
35
21
|
|
|
36
22
|
/** m_maxBounds (Vector3) */
|
|
37
|
-
maxBounds =
|
|
23
|
+
maxBounds = vec3.create();
|
|
38
24
|
|
|
39
25
|
/** m_jointBindings (TrackableStdVector<int>) */
|
|
40
|
-
jointBindings =
|
|
26
|
+
jointBindings = null;
|
|
41
27
|
|
|
42
28
|
/** m_staticBlas (Tr2RtBottomLevelAccelerationStructureAL) */
|
|
43
|
-
staticBlas =
|
|
29
|
+
staticBlas = null;
|
|
44
30
|
|
|
45
31
|
/** m_isSkinned (bool) */
|
|
46
|
-
isSkinned =
|
|
32
|
+
isSkinned = false;
|
|
47
33
|
|
|
48
34
|
/** m_isMorphed (bool) */
|
|
49
|
-
isMorphed =
|
|
35
|
+
isMorphed = false;
|
|
50
36
|
|
|
51
37
|
/** m_rtGeometryConstants (Tr2ConstantBufferAL) */
|
|
52
|
-
rtGeometryConstants =
|
|
53
|
-
static {
|
|
54
|
-
_initClass();
|
|
55
|
-
}
|
|
38
|
+
rtGeometryConstants = null;
|
|
56
39
|
}
|
|
40
|
+
CjsSchema.define(TriGeometryResAreaData, {
|
|
41
|
+
className: "TriGeometryResAreaData",
|
|
42
|
+
family: "resources",
|
|
43
|
+
fields: {
|
|
44
|
+
name: type.string,
|
|
45
|
+
firstIndex: type.int32,
|
|
46
|
+
primitiveCount: type.int32,
|
|
47
|
+
minBounds: type.vec3,
|
|
48
|
+
maxBounds: type.vec3,
|
|
49
|
+
jointBindings: type.unknown,
|
|
50
|
+
staticBlas: type.rawStruct("Tr2RtBottomLevelAccelerationStructureAL"),
|
|
51
|
+
isSkinned: type.boolean,
|
|
52
|
+
isMorphed: type.boolean,
|
|
53
|
+
rtGeometryConstants: type.rawStruct("Tr2ConstantBufferAL")
|
|
54
|
+
}
|
|
55
|
+
});
|
|
57
56
|
|
|
58
|
-
export {
|
|
57
|
+
export { TriGeometryResAreaData };
|
|
59
58
|
//# sourceMappingURL=TriGeometryResAreaData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriGeometryResAreaData.js","sources":["../../../../src/resource/geometry/TriGeometryResAreaData.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Schema: format-carbon resources/TriGeometryResAreaData.json; maintained by the runtime resource layer.\nimport { type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n/** TriGeometryResAreaData (resources) - maintained from schema shapeHash a859a2c5.... */\r\
|
|
1
|
+
{"version":3,"file":"TriGeometryResAreaData.js","sources":["../../../../src/resource/geometry/TriGeometryResAreaData.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Schema: format-carbon resources/TriGeometryResAreaData.json; maintained by the runtime resource layer.\r\nimport { CjsSchema, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n/** TriGeometryResAreaData (resources) - maintained from schema shapeHash a859a2c5.... */\r\nexport class TriGeometryResAreaData extends CjsModel\r\n{\r\n\r\n /** m_name (std::string) */\r\n name = \"\";\r\n\r\n /** m_firstIndex (int) */\r\n firstIndex = 0;\r\n\r\n /** m_primitiveCount (int) */\r\n primitiveCount = 0;\r\n\r\n /** m_minBounds (Vector3) */\r\n minBounds = vec3.create();\r\n\r\n /** m_maxBounds (Vector3) */\r\n maxBounds = vec3.create();\r\n\r\n /** m_jointBindings (TrackableStdVector<int>) */\r\n jointBindings = null;\r\n\r\n /** m_staticBlas (Tr2RtBottomLevelAccelerationStructureAL) */\r\n staticBlas = null;\r\n\r\n /** m_isSkinned (bool) */\r\n isSkinned = false;\r\n\r\n /** m_isMorphed (bool) */\r\n isMorphed = false;\r\n\r\n /** m_rtGeometryConstants (Tr2ConstantBufferAL) */\r\n rtGeometryConstants = null;\r\n\r\n}\r\n\r\nCjsSchema.define(TriGeometryResAreaData, {\r\n className: \"TriGeometryResAreaData\", family: \"resources\",\r\n fields: {\r\n name: type.string,\r\n firstIndex: type.int32,\r\n primitiveCount: type.int32,\r\n minBounds: type.vec3,\r\n maxBounds: type.vec3,\r\n jointBindings: type.unknown,\r\n staticBlas: type.rawStruct(\"Tr2RtBottomLevelAccelerationStructureAL\"),\r\n isSkinned: type.boolean,\r\n isMorphed: type.boolean,\r\n rtGeometryConstants: type.rawStruct(\"Tr2ConstantBufferAL\")\r\n }\r\n});\r\n"],"names":["TriGeometryResAreaData","CjsModel","name","firstIndex","primitiveCount","minBounds","vec3","create","maxBounds","jointBindings","staticBlas","isSkinned","isMorphed","rtGeometryConstants","CjsSchema","define","className","family","fields","type","string","int32","unknown","rawStruct","boolean"],"mappings":";;;;AAAA;AACA;;AAKA;AACO,MAAMA,sBAAsB,SAASC,QAAQ,CACpD;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,UAAU,GAAG,CAAC;;AAEd;AACAC,EAAAA,cAAc,GAAG,CAAC;;AAElB;AACAC,EAAAA,SAAS,GAAGC,IAAI,CAACC,MAAM,EAAE;;AAEzB;AACAC,EAAAA,SAAS,GAAGF,IAAI,CAACC,MAAM,EAAE;;AAEzB;AACAE,EAAAA,aAAa,GAAG,IAAI;;AAEpB;AACAC,EAAAA,UAAU,GAAG,IAAI;;AAEjB;AACAC,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACAC,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACAC,EAAAA,mBAAmB,GAAG,IAAI;AAE5B;AAEAC,SAAS,CAACC,MAAM,CAACf,sBAAsB,EAAE;AACvCgB,EAAAA,SAAS,EAAE,wBAAwB;AAAEC,EAAAA,MAAM,EAAE,WAAW;AACxDC,EAAAA,MAAM,EAAE;IACNhB,IAAI,EAAEiB,IAAI,CAACC,MAAM;IACjBjB,UAAU,EAAEgB,IAAI,CAACE,KAAK;IACtBjB,cAAc,EAAEe,IAAI,CAACE,KAAK;IAC1BhB,SAAS,EAAEc,IAAI,CAACb,IAAI;IACpBE,SAAS,EAAEW,IAAI,CAACb,IAAI;IACpBG,aAAa,EAAEU,IAAI,CAACG,OAAO;AAC3BZ,IAAAA,UAAU,EAAES,IAAI,CAACI,SAAS,CAAC,yCAAyC,CAAC;IACrEZ,SAAS,EAAEQ,IAAI,CAACK,OAAO;IACvBZ,SAAS,EAAEO,IAAI,CAACK,OAAO;AACvBX,IAAAA,mBAAmB,EAAEM,IAAI,CAACI,SAAS,CAAC,qBAAqB;AAC3D;AACF,CAAC,CAAC;;;;"}
|
|
@@ -1,38 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type } from '#schema';
|
|
1
|
+
import { CjsSchema, type } from '#schema';
|
|
3
2
|
import { CjsModel } from '#model';
|
|
4
3
|
import { mat4 } from '#math/mat4';
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
// Source: trinity/trinity/Resources/TriGeometryRes.h
|
|
6
|
+
// Schema: format-carbon resources/TriGeometryResJointData.json; maintained by the runtime resource layer.
|
|
7
7
|
|
|
8
8
|
/** TriGeometryResJointData (resources) - maintained from schema shapeHash 9b31acb5.... */
|
|
9
|
-
let _TriGeometryResJointD;
|
|
10
9
|
class TriGeometryResJointData extends CjsModel {
|
|
11
|
-
static {
|
|
12
|
-
({
|
|
13
|
-
e: [_init_name, _init_extra_name, _init_parentJoint, _init_extra_parentJoint, _init_inverseWorldTransform, _init_extra_inverseWorldTransform],
|
|
14
|
-
c: [_TriGeometryResJointD, _initClass]
|
|
15
|
-
} = _applyDecs2311(this, [type.define({
|
|
16
|
-
className: "TriGeometryResJointData",
|
|
17
|
-
family: "resources"
|
|
18
|
-
})], [[[type, type.string], 16, "name"], [[type, type.uint32], 16, "parentJoint"], [[type, type.mat4], 16, "inverseWorldTransform"]], 0, void 0, CjsModel));
|
|
19
|
-
}
|
|
20
|
-
constructor(...args) {
|
|
21
|
-
super(...args);
|
|
22
|
-
_init_extra_inverseWorldTransform(this);
|
|
23
|
-
}
|
|
24
10
|
/** m_name (std::string) */
|
|
25
|
-
name =
|
|
11
|
+
name = "";
|
|
26
12
|
|
|
27
13
|
/** m_parentJoint (unsigned int) */
|
|
28
|
-
parentJoint =
|
|
14
|
+
parentJoint = 0;
|
|
29
15
|
|
|
30
16
|
/** m_inverseWorldTransform (Matrix) */
|
|
31
|
-
inverseWorldTransform =
|
|
32
|
-
static {
|
|
33
|
-
_initClass();
|
|
34
|
-
}
|
|
17
|
+
inverseWorldTransform = mat4.create();
|
|
35
18
|
}
|
|
19
|
+
CjsSchema.define(TriGeometryResJointData, {
|
|
20
|
+
className: "TriGeometryResJointData",
|
|
21
|
+
family: "resources",
|
|
22
|
+
fields: {
|
|
23
|
+
name: type.string,
|
|
24
|
+
parentJoint: type.uint32,
|
|
25
|
+
inverseWorldTransform: type.mat4
|
|
26
|
+
}
|
|
27
|
+
});
|
|
36
28
|
|
|
37
|
-
export {
|
|
29
|
+
export { TriGeometryResJointData };
|
|
38
30
|
//# sourceMappingURL=TriGeometryResJointData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriGeometryResJointData.js","sources":["../../../../src/resource/geometry/TriGeometryResJointData.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Schema: format-carbon resources/TriGeometryResJointData.json; maintained by the runtime resource layer.\nimport { type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { mat4 } from \"#math/mat4\";\r\n\r\n/** TriGeometryResJointData (resources) - maintained from schema shapeHash 9b31acb5.... */\r\
|
|
1
|
+
{"version":3,"file":"TriGeometryResJointData.js","sources":["../../../../src/resource/geometry/TriGeometryResJointData.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Schema: format-carbon resources/TriGeometryResJointData.json; maintained by the runtime resource layer.\r\nimport { CjsSchema, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { mat4 } from \"#math/mat4\";\r\n\r\n/** TriGeometryResJointData (resources) - maintained from schema shapeHash 9b31acb5.... */\r\nexport class TriGeometryResJointData extends CjsModel\r\n{\r\n\r\n /** m_name (std::string) */\r\n name = \"\";\r\n\r\n /** m_parentJoint (unsigned int) */\r\n parentJoint = 0;\r\n\r\n /** m_inverseWorldTransform (Matrix) */\r\n inverseWorldTransform = mat4.create();\r\n\r\n}\r\n\r\nCjsSchema.define(TriGeometryResJointData, {\r\n className: \"TriGeometryResJointData\", family: \"resources\",\r\n fields: {\r\n name: type.string,\r\n parentJoint: type.uint32,\r\n inverseWorldTransform: type.mat4\r\n }\r\n});\r\n"],"names":["TriGeometryResJointData","CjsModel","name","parentJoint","inverseWorldTransform","mat4","create","CjsSchema","define","className","family","fields","type","string","uint32"],"mappings":";;;;AAAA;AACA;;AAKA;AACO,MAAMA,uBAAuB,SAASC,QAAQ,CACrD;AAEE;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,WAAW,GAAG,CAAC;;AAEf;AACAC,EAAAA,qBAAqB,GAAGC,IAAI,CAACC,MAAM,EAAE;AAEvC;AAEAC,SAAS,CAACC,MAAM,CAACR,uBAAuB,EAAE;AACxCS,EAAAA,SAAS,EAAE,yBAAyB;AAAEC,EAAAA,MAAM,EAAE,WAAW;AACzDC,EAAAA,MAAM,EAAE;IACNT,IAAI,EAAEU,IAAI,CAACC,MAAM;IACjBV,WAAW,EAAES,IAAI,CAACE,MAAM;IACxBV,qBAAqB,EAAEQ,IAAI,CAACP;AAC9B;AACF,CAAC,CAAC;;;;"}
|