@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -125
- package/dist/audio/index.js +8 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
- package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
- package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
- package/dist/audio/trinity/audio/AudManager.js +1 -1
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
- package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
- package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
- package/dist/audio/trinity/index.js +8 -1
- package/dist/audio/trinity/index.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
- package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
- package/dist/character/CjsCharacterAppearanceManager.js +14 -0
- package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
- package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
- package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
- package/dist/character/CjsCharacterTexturePolicy.js +5 -0
- package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
- package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
- package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
- package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
- package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
- package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
- package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
- package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
- package/dist/global/blue/CjsScriptCallback.js +142 -0
- package/dist/global/blue/CjsScriptCallback.js.map +1 -0
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -0
- package/dist/global/consts/renderContext/formats.js +51 -1
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/global/consts/renderContext/index.js +2 -2
- package/dist/global/consts/renderContext/renderStates.js +16 -1
- package/dist/global/consts/renderContext/renderStates.js.map +1 -1
- package/dist/global/contracts/index.js +0 -1
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +4 -3
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/index.js +2 -0
- package/dist/global/math/index.js.map +1 -1
- package/dist/global/math/mesh.js +70 -16
- package/dist/global/math/mesh.js.map +1 -1
- package/dist/global/math/noise.js +47 -68
- package/dist/global/math/noise.js.map +1 -1
- package/dist/global/math/pool.js +18 -3
- package/dist/global/math/pool.js.map +1 -1
- package/dist/global/math/random.js +52 -0
- package/dist/global/math/random.js.map +1 -0
- package/dist/global/math/tri3.js +18 -4
- package/dist/global/math/tri3.js.map +1 -1
- package/dist/global/utils/bytes.js +22 -4
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/checksum.js +80 -0
- package/dist/global/utils/checksum.js.map +1 -0
- package/dist/global/utils/errors/CjsCancellationError.js +36 -0
- package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
- package/dist/global/utils/errors/CjsError.js +21 -52
- package/dist/global/utils/errors/CjsError.js.map +1 -1
- package/dist/global/utils/errors/abort.js +1 -1
- package/dist/global/utils/errors/abort.js.map +1 -1
- package/dist/global/utils/errors/index.js +2 -1
- package/dist/global/utils/errors/index.js.map +1 -1
- package/dist/global/utils/index.js +4 -2
- package/dist/global/utils/index.js.map +1 -1
- package/dist/index.js +95 -35
- package/dist/index.js.map +1 -1
- package/dist/input/Tr2MainWindow.js +7 -9
- package/dist/input/Tr2MainWindow.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -39
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +19 -5
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/audio/AudioGeometryResData.js +22 -27
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
- package/dist/resource/audio/CjsAudioRes.js +4 -5
- package/dist/resource/audio/CjsAudioRes.js.map +1 -1
- package/dist/resource/format/CjsBitReader.js +263 -0
- package/dist/resource/format/CjsBitReader.js.map +1 -0
- package/dist/resource/format/CjsByteReader.js +130 -125
- package/dist/resource/format/CjsByteReader.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +11 -4
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatError.js +37 -1
- package/dist/resource/format/CjsFormatError.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +41 -37
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonRecordGuard.js +33 -0
- package/dist/resource/format/carbonRecordGuard.js.map +1 -0
- package/dist/resource/format/imageSignatures.js +202 -0
- package/dist/resource/format/imageSignatures.js.map +1 -0
- package/dist/resource/format/index.js +2 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/format/jsonPolicies.js +180 -0
- package/dist/resource/format/jsonPolicies.js.map +1 -0
- package/dist/resource/formats/black/core/helpers.js +18 -29
- package/dist/resource/formats/black/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
- package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
- package/dist/resource/formats/bnk/core/busNodes.js +2 -1
- package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
- package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/eventAction.js +15 -93
- package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
- package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +2 -48
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
- package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
- package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
- package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/binary.js +54 -60
- package/dist/resource/formats/cmf/core/binary.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/bc6h.js +16 -18
- package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
- package/dist/resource/formats/dds/core/bc7.js +28 -24
- package/dist/resource/formats/dds/core/bc7.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +7 -133
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +4 -32
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/fbx/core/helpers.js +18 -12
- package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/flac/core/helpers.js +1 -62
- package/dist/resource/formats/flac/core/helpers.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gif/core/helpers.js +1 -63
- package/dist/resource/formats/gif/core/helpers.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -19
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/gr2/core/container.js +1 -10
- package/dist/resource/formats/gr2/core/container.js.map +1 -1
- package/dist/resource/formats/gr2/core/helpers.js +24 -35
- package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/core/shared.js +193 -189
- package/dist/resource/formats/gr2/core/shared.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/helpers.js +1 -30
- package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +7 -134
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +1 -64
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +1 -73
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +93 -115
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/ogg/core/helpers.js +1 -15
- package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/core/vorbis.js +138 -144
- package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +5 -3
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +13 -152
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/png/core/writer.js +3 -27
- package/dist/resource/formats/png/core/writer.js.map +1 -1
- package/dist/resource/formats/red/core/helpers.js +19 -29
- package/dist/resource/formats/red/core/helpers.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +44 -66
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +7 -153
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/vta/core/helpers.js +1 -17
- package/dist/resource/formats/vta/core/helpers.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +1 -15
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +39 -68
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +4 -30
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +1 -73
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/webp/core/helpers.js +1 -62
- package/dist/resource/formats/webp/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +83 -106
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
- package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -15
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
- package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
- package/dist/resource/geometry/MeshDecalData.js +23 -25
- package/dist/resource/geometry/MeshDecalData.js.map +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js +14 -23
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +299 -284
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
- package/dist/resource/geometry/TriJointBinding.js +16 -24
- package/dist/resource/geometry/TriJointBinding.js.map +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
- package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
- package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
- package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/resource/worker/protocol.js +18 -1
- package/dist/resource/worker/protocol.js.map +1 -1
- package/dist/sof/EveSOF.js +2 -222
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/SofDocumentBuilder.js +205 -0
- package/dist/sof/SofDocumentBuilder.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
- package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/index.js +3 -1
- package/dist/sof/faction/index.js.map +1 -1
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
- package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
- package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
- package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/index.js +5 -1
- package/dist/sof/generic/index.js.map +1 -1
- package/dist/sof/index.js +23 -7
- package/dist/sof/index.js.map +1 -1
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
- package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/index.js +2 -1
- package/dist/sof/pattern/index.js.map +1 -1
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
- package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
- package/dist/sof/shared/EveSOFDataArea.js +2 -13
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -146
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
- package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
- package/dist/sof/shared/index.js +13 -4
- package/dist/sof/shared/index.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +33 -0
- package/dist/sof/sofDocumentValues.js.map +1 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
- package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
- package/dist/trinity/controllers/Tr2Controller.js +2 -1
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
- package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
- package/dist/trinity/controllers/index.js +5 -2
- package/dist/trinity/controllers/index.js.map +1 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +2 -1
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/Tr2Blitter.js +6 -3
- package/dist/trinity/core/Tr2Blitter.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +256 -0
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
- package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
- package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
- package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
- package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
- package/dist/trinity/core/Tr2RenderUtils.js +20 -3
- package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +146 -1
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +135 -14
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
- package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
- package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
- package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
- package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
- package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
- package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
- package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
- package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
- package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
- package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
- package/dist/trinity/core/index.js +42 -15
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
- package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
- package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
- package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
- package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
- package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
- package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
- package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
- package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
- package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
- package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
- package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
- package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
- package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
- package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
- package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
- package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
- package/dist/trinity/core/variable/TriVariable.js +83 -83
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +2 -1
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
- package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
- package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +1 -1
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +141 -141
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
- package/dist/trinity/eve/child/EveChildMesh.js +218 -218
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
- package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
- package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTransform.js +5 -0
- package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +7 -0
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/index.js +10 -4
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +5 -0
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
- package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +59 -23
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
- package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/index.js +2 -1
- package/dist/trinity/particle/index.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +131 -58
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
- package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +21 -4
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
- package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
- package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
- package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
- package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
- package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
- package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
- package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
- package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
- package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
- package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
- package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
- package/dist/trinityal/index.js +22 -9
- package/dist/trinityal/index.js.map +1 -1
- package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
- package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
- package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
- package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
- package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
- package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
- package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
- package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
- package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
- package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
- package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
- package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
- package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
- package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
- package/dist/trinityal/stub/index.js +8 -4
- package/dist/trinityal/stub/index.js.map +1 -1
- package/dist/trinityal/vertexLayoutMatch.js +2 -2
- package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
- package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
- package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
- package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
- package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
- package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
- package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
- package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
- package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
- package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
- package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +12 -11
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/audio/reference/classes/trinity.md +44 -34
- package/docs/character/architecture.md +276 -0
- package/docs/character/reference/character-appearance-plans.md +30 -66
- package/docs/character/reference/prepared-libraries.md +14 -30
- package/docs/global/reference/api.md +2 -1
- package/docs/global/reference/classes/README.md +53 -71
- package/docs/global/reference/classes/dropped.md +16 -0
- package/docs/resource/README.md +19 -15
- package/docs/resource/architecture.md +9 -2
- package/docs/resource/concepts/format-capabilities.md +124 -80
- package/docs/resource/concepts/shared-format-helpers.md +94 -0
- package/docs/resource/formats/README.md +230 -224
- package/docs/resource/formats/bitknit2.md +221 -0
- package/docs/resource/formats/carbon-effect-container.md +184 -269
- package/docs/resource/formats/gr2.md +6 -1
- package/docs/resource/formats/schemabound.md +28 -48
- package/docs/resource/formats/static.md +70 -97
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
- package/docs/resource/formats/webgl/decl-io.md +165 -256
- package/docs/resource/formats/webgl/memory-structured.md +64 -142
- package/docs/resource/formats/webgl/texture-sample.md +109 -138
- package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
- package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
- package/docs/resource/formats/webgpu/reference/api.md +64 -67
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
- package/docs/resource/reference/classes/core.md +256 -236
- package/docs/resource/reference/classes/formats.md +1668 -1672
- package/docs/resource/reference/workers.md +4 -2
- package/docs/sof/reference/classes/core.md +1 -1
- package/docs/sof/reference/classes/faction.md +2 -2
- package/docs/sof/reference/classes/generic.md +4 -4
- package/docs/sof/reference/classes/pattern.md +1 -1
- package/docs/sof/reference/classes/shared.md +10 -10
- package/docs/trinity/architecture.md +55 -44
- package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
- package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
- package/docs/trinity/reference/classes/dropped.md +0 -189
- package/docs/trinity/reference/classes/eve-runtime.md +8 -8
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/particle.md +2 -2
- package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
- package/docs/trinity/reference/implementation-status.md +50 -75
- package/docs/trinity/reference/main-semantic-extraction.md +13 -17
- package/docs/trinityal/reference/classes/README.md +77 -27
- package/docs/trinityal/reference/classes/dropped.md +82 -0
- package/docs/trinityal/webgpu/README.md +3 -1
- package/docs/trinityal/webgpu/architecture.md +121 -228
- package/docs/trinityal/webgpu/reference/api.md +5 -5
- package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
- package/format-notices/gr2/NOTICE +18 -12
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
- package/package.json +4 -1
- package/dist/audio/trinity/audio/AudActionLog.js +0 -173
- package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
- package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
- package/dist/global/contracts/CjsScriptCallback.js +0 -94
- package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
- package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
- package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
- package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
- package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
- package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
- package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
- package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
- package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
- package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
- package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
- package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
- package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
- package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
- package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
- package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
- package/dist/trinity/core/rawData/constantLayout.js +0 -175
- package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
- package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
- package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
- package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
- package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
- package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
- package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
- package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
- package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
- package/dist/trinityal/Tr2SamplerDescription.js +0 -72
- package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
- package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
- package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
- package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
- package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
- package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
- package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
- package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
- package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
- package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
- package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
- package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsCharacterFoundationConstruction.js","sources":["../../../src/character/CjsCharacterFoundationConstruction.js"],"sourcesContent":["import { CjsCharacterTextureQuality } from \"./CjsCharacterTextureQuality.js\";\n\nconst FEMALE_BODY_FOUNDATION = {\n role: \"body\",\n index: 1,\n configurationPath: \"res:/graphics/character/female/paperdoll/basenude/basenude.black\",\n geometryPath: \"res:/graphics/character/female/paperdoll/basenude/basenude.gr2\"\n};\n\nconst FEMALE_SPLIT_HANDS_PATH =\n \"res:/graphics/character/female/paperdoll/hands/hands_nude/hands_nude.gr2\";\n\nconst FEMALE_ATLAS_BODY_GROUPS = new Set([\n \"bottominner\",\n \"bottomouter\",\n \"bottomunderwear\",\n \"outer\",\n \"topinner\",\n \"topmiddle\",\n \"topouter\",\n \"topunderwear\"\n]);\n\nconst FEMALE_CLOTHING_FIT_GROUPS = new Set([\n ...FEMALE_ATLAS_BODY_GROUPS,\n \"feet\",\n \"hands\"\n]);\n\nconst FEMALE_SPLIT_LOD0_GEOMETRY = [\n [ \"head\", \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"torso\", \"res:/graphics/character/female/paperdoll/topinner/torso_nude/torso_nude.gr2\" ],\n [ \"sleevesUpper\", \"res:/graphics/character/female/paperdoll/dependants/sleevesupper/standard/standard.gr2\" ],\n [ \"sleevesLower\", \"res:/graphics/character/female/paperdoll/dependants/sleeveslower/standard/standard.gr2\" ],\n [ \"legs\", \"res:/graphics/character/female/paperdoll/bottominner/legs_nude/legs_nude.gr2\" ],\n [ \"hands\", FEMALE_SPLIT_HANDS_PATH ],\n [ \"feet\", \"res:/graphics/character/female/paperdoll/feet/feet_nude/feet_nude.gr2\" ]\n];\n\nconst FOUNDATIONS = {\n female: {\n resourceGender: 0,\n skeletonPath: \"res:/graphics/character/female/skeleton/masterskeletonfemale.gr2\",\n configuredFoundations: [ {\n role: \"head\",\n index: 0,\n configurationPath: \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.black\",\n geometryPath: \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\",\n skinTextures: {\n DiffuseMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_d_4k.png\",\n NormalMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_n_4k.png\",\n SpecularMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_s_4k.png\"\n },\n skinEvidence: {\n status: \"retained\",\n rule: \"exact-head-generic-texture-inventory-v1\",\n correctness: \"exact-folder-inventory\"\n }\n } ],\n geometry: [\n [ \"head\", \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"body\", \"res:/graphics/character/female/paperdoll/basenude/basenude.gr2\" ]\n ]\n },\n male: {\n resourceGender: 1,\n skeletonPath: \"res:/graphics/character/male/skeleton/masterskeletonmale.gr2\",\n configuredFoundations: [ {\n role: \"head\",\n index: 0,\n configurationPath: \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.black\",\n geometryPath: \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.gr2\",\n skinTextures: {\n DiffuseMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_d_4k.png\",\n NormalMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_n_4k.png\",\n SpecularMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_s_4k.png\"\n },\n skinEvidence: {\n status: \"retained\",\n rule: \"exact-head-generic-texture-inventory-v1\",\n correctness: \"exact-folder-inventory\"\n }\n } ],\n geometry: [\n [ \"head\", \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"torso\", \"res:/graphics/character/male/paperdoll/topinner/torso_nude/torso_nude.gr2\" ],\n [ \"legs\", \"res:/graphics/character/male/paperdoll/bottominner/legs_nude/legs_nude.gr2\" ],\n [ \"hands\", \"res:/graphics/character/male/paperdoll/hands/hands_nude/hands_nude.gr2\" ],\n [ \"feet\", \"res:/graphics/character/male/paperdoll/feet/feet_nude/feet_nude.gr2\" ]\n ]\n }\n};\n\n/**\n * Produces renderer-neutral skeleton, foundation geometry, and selected skin\n * descriptors from one paper doll, plan, and hydrated character library.\n */\nexport class CjsCharacterFoundationConstruction\n{\n _femaleFoundationLayout;\n\n _textureQuality;\n\n constructor({ femaleFoundationLayout = null, textureQuality = \"4k\" } = {})\n {\n if (femaleFoundationLayout !== null\n && ![ \"combined\", \"split-lod0\" ].includes(femaleFoundationLayout))\n {\n throw new TypeError(\"Character foundation construction femaleFoundationLayout is invalid\");\n }\n this._femaleFoundationLayout = femaleFoundationLayout;\n this._textureQuality = CjsCharacterTextureQuality.normalize(textureQuality);\n }\n\n /** Produces the ordered CPU construction operations for one paper doll. */\n Resolve(paperdoll, appearancePlan, library = null)\n {\n if (!paperdoll || typeof paperdoll !== \"object\")\n {\n throw new TypeError(\"Character foundation construction requires a paper doll\");\n }\n if (!appearancePlan || typeof appearancePlan !== \"object\")\n {\n throw new TypeError(\"Character foundation construction requires an appearance plan\");\n }\n\n const sex = ResolvePaperdollSex(paperdoll);\n const definition = FOUNDATIONS[sex];\n if (!definition)\n {\n throw new Error(\"The selected paper doll does not resolve to one character sex\");\n }\n if (sex === \"female\" && this._femaleFoundationLayout === null)\n {\n throw new Error(\"Character foundation construction requires a caller-selected female layout\");\n }\n\n const femaleLayout = sex === \"female\"\n ? ResolveFemaleFoundationLayout(this._femaleFoundationLayout, appearancePlan)\n : { layout: \"split-lod0\", fallback: null };\n const baseGeometry = sex === \"female\" && femaleLayout.layout === \"split-lod0\"\n ? FEMALE_SPLIT_LOD0_GEOMETRY\n : definition.geometry;\n const geometry = ResolveFoundationGeometry(baseGeometry, sex, library);\n const operations = [ {\n operation: \"skeleton\",\n resourcePath: definition.skeletonPath\n } ];\n\n for (let index = 0; index < geometry.length; index++)\n {\n const [ role, resourcePath, evidence ] = geometry[index];\n operations.push({\n operation: \"geometry\",\n role,\n index,\n resourcePath,\n ...(evidence ? { evidence: { ...evidence } } : {})\n });\n }\n\n const selectedSkin = ResolveSelectedFoundationSkin(\n paperdoll,\n sex,\n library,\n this._textureQuality\n );\n const bodyRoles = geometry.map(([ role ]) => role).filter(role => role !== \"head\");\n if (selectedSkin?.bodyTextures && bodyRoles.length)\n {\n operations.push({\n operation: \"foundation-skin\",\n roles: [ ...bodyRoles ],\n skinTextures: { ...selectedSkin.bodyTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n });\n }\n\n for (const configured of definition.configuredFoundations)\n {\n const supportTextures = ResolveFoundationTextureBindings(\n configured.skinTextures,\n library,\n this._textureQuality\n );\n const resolved = configured.role === \"head\" && selectedSkin\n ? {\n ...configured,\n supportTextures,\n supportEvidence: { ...configured.skinEvidence },\n skinTextures: { ...selectedSkin.headTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n }\n : { ...configured, skinTextures: supportTextures };\n operations.push({ operation: \"configured-foundation\", ...resolved });\n }\n\n if (sex === \"female\"\n && femaleLayout.layout === \"combined\"\n && selectedSkin?.bodyTextures)\n {\n operations.push({\n operation: \"configured-foundation\",\n ...FEMALE_BODY_FOUNDATION,\n skinTextures: { ...selectedSkin.bodyTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n });\n }\n\n const browSupport = ResolveSelectedBrowSupport(\n sex,\n selectedSkin?.evidence?.archetypeSourceRecordID,\n library\n );\n if (browSupport)\n {\n operations.push({\n operation: \"configured-foundation-support\",\n role: \"eyebrowbase\",\n ...browSupport\n });\n }\n operations.push({ operation: \"bind-animation\" });\n\n return {\n evidence: {\n status: \"policy\",\n rule: \"character-foundation-construction-v1\",\n sourceRule: \"reviewed-foundation-construction-source-v1\",\n layout: femaleLayout.layout,\n ...(femaleLayout.fallback ? {\n requestedLayout: this._femaleFoundationLayout,\n layoutFallback: femaleLayout.fallback\n } : {}),\n textureQuality: this._textureQuality\n },\n paperdollRecordID: String(paperdoll.recordID ?? \"\"),\n sourceBuild: appearancePlan.sourceBuild ?? null,\n sex,\n lod: 0,\n operations\n };\n }\n}\n\n/** Resolves the layout required by the caller and exact fit evidence. */\nexport function ResolveFemaleFoundationLayout(requestedLayout, appearancePlan)\n{\n if (![ \"combined\", \"split-lod0\" ].includes(requestedLayout))\n {\n throw new TypeError(\"Character foundation layout must be combined or split-lod0\");\n }\n if (requestedLayout !== \"combined\") return { layout: requestedLayout, fallback: null };\n\n const atlasOnlyLayers = (appearancePlan?.layers ?? []).flatMap((layer, layerIndex) =>\n {\n const groupID = String(layer?.owner?.groupID ?? \"\").trim().toLowerCase();\n const part = layer?.contributor;\n const partSourceRecordID = part?.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim().toLowerCase()\n : \"\";\n const configured = /^res:\\//iu.test(String(part?.configurationPath ?? \"\"))\n && /^res:\\//iu.test(String(part?.geometryPath ?? \"\"));\n if (!FEMALE_ATLAS_BODY_GROUPS.has(groupID)\n || !partSourceRecordID.startsWith(\"female/\")\n || partSourceRecordID.startsWith(\"female/dependants/\")\n || configured)\n {\n return [];\n }\n return [ { layerIndex, groupID, partSourceRecordID } ];\n });\n if (!atlasOnlyLayers.length) return { layout: requestedLayout, fallback: null };\n\n const fitTargets = (appearancePlan?.morphTargets ?? []).flatMap(value =>\n {\n const modifierPath = String(value?.modifierPath ?? \"\").trim().toLowerCase();\n const ownerGroupID = String(value?.owner?.groupID ?? \"\").trim().toLowerCase();\n if (!modifierPath.startsWith(\"utilityshapes/\")\n || !FEMALE_CLOTHING_FIT_GROUPS.has(ownerGroupID))\n {\n return [];\n }\n return [ {\n modifierPath,\n targetName: String(value?.targetName ?? \"\").trim() || null,\n ownerGroupID\n } ];\n });\n if (!fitTargets.length) return { layout: requestedLayout, fallback: null };\n return {\n layout: \"split-lod0\",\n fallback: {\n status: \"derived\",\n rule: \"atlas-only-clothing-fit-carrier-compatibility-v1\",\n correctness: \"source-shaped-live-verified\",\n atlasOnlyLayers,\n fitTargets\n }\n };\n}\n\n/** Retains exact nude-torso support carriers proven by hydrated dependencies. */\nexport function ResolveFoundationGeometry(baseGeometry, sex, library)\n{\n const result = baseGeometry.map(value => [\n value[0],\n value[1],\n value[2] ? { ...value[2] } : undefined\n ]);\n if (!library || typeof library.Get !== \"function\") return result;\n\n const torso = library.Get(\"characterPartSources\", `${sex}/topinner/torso_nude`);\n const metadata = ResolveEffectiveMetadata(torso);\n const supports = [];\n for (const relation of metadata?.dependencies ?? [])\n {\n const authored = StripDependencyWeight(relation?.authoredValue).toLowerCase();\n const match = /^dependants\\/(sleevesupper|sleeveslower)\\/[^/]+$/u.exec(authored);\n const target = relation?.partSource;\n if (!match || !target) continue;\n if (String(target.recordID ?? \"\").toLowerCase() !== `${sex}/${authored}`) continue;\n\n const versions = (target.versions ?? []).filter(Boolean);\n if (versions.length !== 1) continue;\n const version = versions[0];\n if (version.configurationCandidates?.length !== 1 || version.geometryCandidates?.length !== 1)\n {\n continue;\n }\n supports.push([\n match[1] === \"sleevesupper\" ? \"sleevesUpper\" : \"sleevesLower\",\n version.geometryCandidates[0],\n {\n status: \"derived\",\n rule: \"exact-foundation-torso-support-dependency-v1\",\n torsoPartSourceRecordID: torso.recordID,\n metadataRecordID: metadata.recordID,\n authoredDependency: relation.authoredValue,\n supportPartSourceRecordID: target.recordID,\n configurationPath: version.configurationCandidates[0]\n }\n ]);\n }\n\n const uniqueRoles = new Set(supports.map(value => value[0]));\n if (uniqueRoles.size !== supports.length) return result;\n const existingRoles = new Set(result.map(value => value[0]));\n const additions = supports\n .filter(value => !existingRoles.has(value[0]))\n .sort((left, right) => FoundationSupportOrder(left[0]) - FoundationSupportOrder(right[0]));\n if (!additions.length) return result;\n\n const torsoIndex = result.findIndex(value => value[0] === \"torso\");\n result.splice(torsoIndex < 0 ? result.length : torsoIndex + 1, 0, ...additions);\n return result;\n}\n\nfunction FoundationSupportOrder(role)\n{\n return role === \"sleevesUpper\" ? 0 : 1;\n}\n\n/** Resolves one exact authored brow carrier through the selected head metadata. */\nexport function ResolveSelectedBrowSupport(sex, archetypeSourceRecordID, library)\n{\n if (!library || typeof library.GetDocument !== \"function\") return null;\n const archetypeID = String(archetypeSourceRecordID ?? \"\").trim().toLowerCase();\n const prefix = `${sex}/archetypes/`;\n if (!archetypeID.startsWith(prefix)) return null;\n const relativeArchetype = archetypeID.slice(`${sex}/`.length);\n const heads = (library.GetDocument(\"characterPartSources\") ?? []).filter(source =>\n {\n if (!String(source?.recordID ?? \"\").toLowerCase().startsWith(`${sex}/head/`)) return false;\n const metadata = ResolveEffectiveMetadata(source);\n return metadata?.dependentModifiers?.some(value =>\n StripDependencyWeight(value).toLowerCase() === relativeArchetype);\n });\n if (heads.length !== 1) return null;\n\n const metadata = ResolveEffectiveMetadata(heads[0]);\n const matches = (metadata?.dependencies ?? []).filter(relation =>\n {\n const authored = StripDependencyWeight(relation?.authoredValue).toLowerCase();\n return authored.startsWith(\"accessories/browbase/\")\n && relation?.partSource\n && String(relation.partSource.recordID ?? \"\").toLowerCase() === `${sex}/${authored}`;\n });\n if (matches.length !== 1) return null;\n\n const target = matches[0].partSource;\n const versions = (target?.versions ?? []).filter(Boolean);\n if (versions.length !== 1) return null;\n const version = versions[0];\n if (version.configurationCandidates?.length !== 1 || version.geometryCandidates?.length !== 1)\n {\n return null;\n }\n return {\n partSourceRecordID: target.recordID,\n configurationPath: version.configurationCandidates[0],\n geometryPath: version.geometryCandidates[0],\n evidence: {\n status: \"derived\",\n rule: \"exact-head-archetype-brow-support-dependency-v1\",\n headPartSourceRecordID: heads[0].recordID,\n metadataRecordID: metadata.recordID,\n authoredDependency: matches[0].authoredValue,\n archetypeSourceRecordID\n }\n };\n}\n\n/** Resolves one selected skintone through retained base, PRS, and archetype records. */\nexport function ResolveSelectedFoundationSkin(paperdoll, sex, library, textureQuality = \"4k\")\n{\n if (!library || typeof library.Get !== \"function\" || typeof library.GetDocument !== \"function\")\n {\n return null;\n }\n const selections = (paperdoll?.colorSelections ?? []).filter(value =>\n value?.colorID?.colorKey === \"skintone\"\n && typeof value?.colorNameA?.colorName === \"string\");\n if (selections.length !== 1) return null;\n\n const colorName = selections[0].colorNameA.colorName.trim().toLowerCase();\n const root = `res:/graphics/character/${sex}/paperdoll/skintone/basic/`;\n const definitions = library.GetDocument(\"characterDefinitions\") ?? [];\n const prsRoot = \"res:/graphics/character/dnafiles/characterselect/\";\n const prsSuffix = `${sex}clothing.prs`;\n const familyCandidates = definitions.flatMap(value =>\n {\n const recordID = String(value?.recordID ?? \"\").toLowerCase();\n if (!recordID.startsWith(prsRoot) || !recordID.endsWith(prsSuffix)\n || !Array.isArray(value?.values) || value.values[0] !== sex)\n {\n return [];\n }\n const family = recordID.slice(prsRoot.length, -prsSuffix.length);\n return family && (colorName === family || colorName.startsWith(`${family}_`))\n ? [ { family, definition: value } ]\n : [];\n }).sort((left, right) => right.family.length - left.family.length);\n const longestFamilyLength = familyCandidates[0]?.family.length ?? 0;\n const exactFamilies = familyCandidates.filter(value => value.family.length === longestFamilyLength);\n if (exactFamilies.length !== 1) return null;\n\n const { family, definition } = exactFamilies[0];\n const basePath = `${root}${family}.base`;\n const baseDefinition = library.Get(\"characterDefinitions\", basePath);\n const materialDefinitionPath = `${root}${colorName}.color`;\n const materialDefinition = library.Get(\"characterDefinitions\", materialDefinitionPath);\n const colors = materialDefinition?.values?.colors;\n const hasSkinColorization = Array.isArray(colors)\n && colors.length === 3\n && colors.every(color => Array.isArray(color) && color.length === 4);\n const sources = definition.values.slice(1)\n .filter(value => value?.category === \"bodyshapes\" && typeof value?.path === \"string\")\n .map(value => value.path.replace(/^bodyshapes\\//iu, \"\").toLowerCase())\n .map(value => ({\n identity: `${sex}/archetypes/${value}`,\n source: library.Get(\"characterPartSources\", `${sex}/archetypes/${value}`)\n }))\n .filter(value => value.source);\n if (sources.length !== 1) return null;\n\n const texturePaths = sources[0].source.versions\n ?.flatMap(value => value?.textureCandidates ?? []) ?? [];\n const archetypeToken = sources[0].identity.split(\"/\").at(-1)?.replace(/shape$/iu, \"\");\n if (!archetypeToken) return null;\n const prefix = `${archetypeToken}_${sex}_head_`;\n const headTextures = {\n DiffuseMap: SelectFoundationTexturePaths(texturePaths, `${prefix}d`, textureQuality),\n NormalMap: SelectFoundationTexturePaths(texturePaths, `${prefix}n`, textureQuality),\n SpecularMap: SelectFoundationTexturePaths(texturePaths, `${prefix}s`, textureQuality)\n };\n if (Object.values(headTextures).some(value => !value)) return null;\n\n const bodyPrefix = `${archetypeToken}_${sex}_body_`;\n const bodyDiffusePath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}d`, textureQuality);\n const bodySpecularPath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}s`, textureQuality);\n const bodyNormalPath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}n`, textureQuality);\n const skinColorizationPaths = hasSkinColorization ? {\n headDetailPath: SelectFoundationTexture(library, `${root}colorize_head_l.png`, textureQuality),\n headZonePath: SelectFoundationTexture(library, `${root}colorize_head_z.png`, textureQuality),\n bodyDetailPath: SelectFoundationTexture(library, `${root}colorize_body_l.png`, textureQuality),\n bodyZonePath: SelectFoundationTexture(library, `${root}colorize_body_z.png`, textureQuality)\n } : null;\n const skinColorization = skinColorizationPaths\n && Object.values(skinColorizationPaths).every(Boolean)\n ? { materialDefinitionPath, colors: colors.map(color => [ ...color ]), ...skinColorizationPaths }\n : null;\n\n return {\n headTextures,\n ...(skinColorization ? { skinColorization } : {}),\n ...(bodyDiffusePath ? {\n bodyTextures: {\n DiffuseMap: bodyDiffusePath,\n ...(bodyNormalPath ? { NormalMap: bodyNormalPath } : {}),\n ...(bodySpecularPath ? { SpecularMap: bodySpecularPath } : {})\n }\n } : {}),\n evidence: {\n status: \"derived\",\n rule: \"exact-skintone-prs-archetype-foundation-v1\",\n correctness: \"retained-source-join\",\n textureQuality: CjsCharacterTextureQuality.normalize(textureQuality),\n colorName,\n ...(skinColorization ? { materialDefinitionPath } : {}),\n ...(Array.isArray(baseDefinition?.values) && baseDefinition.values.length === 4 ? {\n basePath,\n baseColor: [ ...baseDefinition.values ]\n } : {}),\n definitionPath: String(definition.recordID),\n archetypeSourceRecordID: sources[0].identity,\n ...(bodyDiffusePath ? { bodyDiffusePath } : {}),\n ...(bodySpecularPath ? { bodySpecularPath } : {\n bodySpecularStatus: \"unresolved\"\n }),\n ...(bodyNormalPath ? {\n bodyNormalPath,\n normalStatus: \"retained\",\n normalRule: \"exact-foundation-diffuse-token-normal-match-v1\"\n } : {\n normalStatus: \"unresolved\"\n })\n }\n };\n}\n\nfunction CloneColorization(value)\n{\n return { ...value, colors: value.colors.map(color => [ ...color ]) };\n}\n\nfunction ResolveEffectiveMetadata(source)\n{\n const versions = (source?.versions ?? []).filter(Boolean);\n return versions.length === 1 && versions[0].metadata ? versions[0].metadata : source?.metadata ?? null;\n}\n\nfunction StripDependencyWeight(value)\n{\n return String(value ?? \"\").replace(\n /###[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u,\n \"\"\n );\n}\n\nfunction ResolveFoundationTextureBindings(bindings, library, textureQuality)\n{\n return Object.fromEntries(Object.entries(bindings ?? {}).flatMap(([ name, path ]) =>\n {\n const selected = SelectFoundationTexture(library, path, textureQuality);\n return selected ? [ [ name, selected ] ] : [];\n }));\n}\n\nfunction SelectFoundationTexture(library, referencePath, textureQuality)\n{\n if (!referencePath) return null;\n const metadata = library?.GetDocument?.(\"characterTextureMetadata\") ?? [];\n const family = CjsCharacterTextureQuality.getFamily(referencePath);\n const matches = metadata.map(value => value?.sourcePath)\n .filter(value => typeof value === \"string\"\n && CjsCharacterTextureQuality.getFamily(value) === family);\n return matches.length\n ? CjsCharacterTextureQuality.select(matches, textureQuality)\n : CjsCharacterTextureQuality.isAllowed(referencePath, textureQuality)\n ? referencePath\n : null;\n}\n\nfunction SelectFoundationTexturePaths(paths, fileFamily, textureQuality)\n{\n const normalizedFamily = String(fileFamily ?? \"\").toLowerCase();\n const matches = paths.filter(value => CjsCharacterTextureQuality.getFamily(value)\n .split(\"/\").at(-1) === normalizedFamily);\n return CjsCharacterTextureQuality.select(matches, textureQuality);\n}\n\nfunction ResolvePaperdollSex(paperdoll)\n{\n const genders = new Set();\n for (const modifier of paperdoll.modifiers ?? [])\n {\n const value = modifier?.paperdollResourceID?.resGender;\n if (value === 0 || value === 1) genders.add(value);\n }\n if (genders.size !== 1) return null;\n return genders.has(0) ? \"female\" : \"male\";\n}\n\nexport default CjsCharacterFoundationConstruction;\n"],"names":["FEMALE_BODY_FOUNDATION","role","index","configurationPath","geometryPath","FEMALE_SPLIT_HANDS_PATH","FEMALE_ATLAS_BODY_GROUPS","Set","FEMALE_CLOTHING_FIT_GROUPS","FEMALE_SPLIT_LOD0_GEOMETRY","FOUNDATIONS","female","resourceGender","skeletonPath","configuredFoundations","skinTextures","DiffuseMap","NormalMap","SpecularMap","skinEvidence","status","rule","correctness","geometry","male","CjsCharacterFoundationConstruction","_femaleFoundationLayout","_textureQuality","constructor","femaleFoundationLayout","textureQuality","includes","TypeError","CjsCharacterTextureQuality","normalize","Resolve","paperdoll","appearancePlan","library","sex","ResolvePaperdollSex","definition","Error","femaleLayout","ResolveFemaleFoundationLayout","layout","fallback","baseGeometry","ResolveFoundationGeometry","operations","operation","resourcePath","length","evidence","push","selectedSkin","ResolveSelectedFoundationSkin","bodyRoles","map","filter","bodyTextures","roles","skinColorization","CloneColorization","configured","supportTextures","ResolveFoundationTextureBindings","resolved","supportEvidence","headTextures","browSupport","ResolveSelectedBrowSupport","archetypeSourceRecordID","sourceRule","requestedLayout","layoutFallback","paperdollRecordID","String","recordID","sourceBuild","lod","atlasOnlyLayers","layers","flatMap","layer","layerIndex","groupID","owner","trim","toLowerCase","part","contributor","partSourceRecordID","origin","document","test","has","startsWith","fitTargets","morphTargets","value","modifierPath","ownerGroupID","targetName","result","undefined","Get","torso","metadata","ResolveEffectiveMetadata","supports","relation","dependencies","authored","StripDependencyWeight","authoredValue","match","exec","target","partSource","versions","Boolean","version","configurationCandidates","geometryCandidates","torsoPartSourceRecordID","metadataRecordID","authoredDependency","supportPartSourceRecordID","uniqueRoles","size","existingRoles","additions","sort","left","right","FoundationSupportOrder","torsoIndex","findIndex","splice","GetDocument","archetypeID","prefix","relativeArchetype","slice","heads","source","dependentModifiers","some","matches","headPartSourceRecordID","selections","colorSelections","colorID","colorKey","colorNameA","colorName","root","definitions","prsRoot","prsSuffix","familyCandidates","endsWith","Array","isArray","values","family","longestFamilyLength","exactFamilies","basePath","baseDefinition","materialDefinitionPath","materialDefinition","colors","hasSkinColorization","every","color","sources","category","path","replace","identity","texturePaths","textureCandidates","archetypeToken","split","at","SelectFoundationTexturePaths","Object","bodyPrefix","bodyDiffusePath","bodySpecularPath","bodyNormalPath","skinColorizationPaths","headDetailPath","SelectFoundationTexture","headZonePath","bodyDetailPath","bodyZonePath","baseColor","definitionPath","bodySpecularStatus","normalStatus","normalRule","bindings","fromEntries","entries","name","selected","referencePath","getFamily","sourcePath","select","isAllowed","paths","fileFamily","normalizedFamily","genders","modifier","modifiers","paperdollResourceID","resGender","add"],"mappings":";;AAEA,MAAMA,sBAAsB,GAAG;AAC3BC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,iBAAiB,EAAE,kEAAkE;AACrFC,EAAAA,YAAY,EAAE;AAClB,CAAC;AAED,MAAMC,uBAAuB,GACzB,0EAA0E;AAE9E,MAAMC,wBAAwB,GAAG,IAAIC,GAAG,CAAC,CACrC,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,CACjB,CAAC;AAEF,MAAMC,0BAA0B,GAAG,IAAID,GAAG,CAAC,CACvC,GAAGD,wBAAwB,EAC3B,MAAM,EACN,OAAO,CACV,CAAC;AAEF,MAAMG,0BAA0B,GAAG,CAC/B,CAAE,MAAM,EAAE,6EAA6E,CAAE,EACzF,CAAE,OAAO,EAAE,6EAA6E,CAAE,EAC1F,CAAE,cAAc,EAAE,wFAAwF,CAAE,EAC5G,CAAE,cAAc,EAAE,wFAAwF,CAAE,EAC5G,CAAE,MAAM,EAAE,8EAA8E,CAAE,EAC1F,CAAE,OAAO,EAAEJ,uBAAuB,CAAE,EACpC,CAAE,MAAM,EAAE,uEAAuE,CAAE,CACtF;AAED,MAAMK,WAAW,GAAG;AAChBC,EAAAA,MAAM,EAAE;AACJC,IAAAA,cAAc,EAAE,CAAC;AACjBC,IAAAA,YAAY,EAAE,kEAAkE;AAChFC,IAAAA,qBAAqB,EAAE,CAAE;AACrBb,MAAAA,IAAI,EAAE,MAAM;AACZC,MAAAA,KAAK,EAAE,CAAC;AACRC,MAAAA,iBAAiB,EAAE,+EAA+E;AAClGC,MAAAA,YAAY,EAAE,6EAA6E;AAC3FW,MAAAA,YAAY,EAAE;AACVC,QAAAA,UAAU,EAAE,oFAAoF;AAChGC,QAAAA,SAAS,EAAE,oFAAoF;AAC/FC,QAAAA,WAAW,EAAE;OAChB;AACDC,MAAAA,YAAY,EAAE;AACVC,QAAAA,MAAM,EAAE,UAAU;AAClBC,QAAAA,IAAI,EAAE,yCAAyC;AAC/CC,QAAAA,WAAW,EAAE;AACjB;AACJ,KAAC,CAAE;AACHC,IAAAA,QAAQ,EAAE,CACN,CAAE,MAAM,EAAE,6EAA6E,CAAE,EACzF,CAAE,MAAM,EAAE,gEAAgE,CAAE;GAEnF;AACDC,EAAAA,IAAI,EAAE;AACFZ,IAAAA,cAAc,EAAE,CAAC;AACjBC,IAAAA,YAAY,EAAE,8DAA8D;AAC5EC,IAAAA,qBAAqB,EAAE,CAAE;AACrBb,MAAAA,IAAI,EAAE,MAAM;AACZC,MAAAA,KAAK,EAAE,CAAC;AACRC,MAAAA,iBAAiB,EAAE,6EAA6E;AAChGC,MAAAA,YAAY,EAAE,2EAA2E;AACzFW,MAAAA,YAAY,EAAE;AACVC,QAAAA,UAAU,EAAE,oFAAoF;AAChGC,QAAAA,SAAS,EAAE,oFAAoF;AAC/FC,QAAAA,WAAW,EAAE;OAChB;AACDC,MAAAA,YAAY,EAAE;AACVC,QAAAA,MAAM,EAAE,UAAU;AAClBC,QAAAA,IAAI,EAAE,yCAAyC;AAC/CC,QAAAA,WAAW,EAAE;AACjB;AACJ,KAAC,CAAE;AACHC,IAAAA,QAAQ,EAAE,CACN,CAAE,MAAM,EAAE,2EAA2E,CAAE,EACvF,CAAE,OAAO,EAAE,2EAA2E,CAAE,EACxF,CAAE,MAAM,EAAE,4EAA4E,CAAE,EACxF,CAAE,OAAO,EAAE,wEAAwE,CAAE,EACrF,CAAE,MAAM,EAAE,qEAAqE,CAAE;AAEzF;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAME,kCAAkC,CAC/C;EACIC,uBAAuB;EAEvBC,eAAe;AAEfC,EAAAA,WAAWA,CAAC;AAAEC,IAAAA,sBAAsB,GAAG,IAAI;AAAEC,IAAAA,cAAc,GAAG;GAAM,GAAG,EAAE,EACzE;AACI,IAAA,IAAID,sBAAsB,KAAK,IAAI,IAC5B,CAAC,CAAE,UAAU,EAAE,YAAY,CAAE,CAACE,QAAQ,CAACF,sBAAsB,CAAC,EACrE;AACI,MAAA,MAAM,IAAIG,SAAS,CAAC,qEAAqE,CAAC;AAC9F,IAAA;IACA,IAAI,CAACN,uBAAuB,GAAGG,sBAAsB;IACrD,IAAI,CAACF,eAAe,GAAGM,0BAA0B,CAACC,SAAS,CAACJ,cAAc,CAAC;AAC/E,EAAA;;AAEA;EACAK,OAAOA,CAACC,SAAS,EAAEC,cAAc,EAAEC,OAAO,GAAG,IAAI,EACjD;AACI,IAAA,IAAI,CAACF,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAC/C;AACI,MAAA,MAAM,IAAIJ,SAAS,CAAC,yDAAyD,CAAC;AAClF,IAAA;AACA,IAAA,IAAI,CAACK,cAAc,IAAI,OAAOA,cAAc,KAAK,QAAQ,EACzD;AACI,MAAA,MAAM,IAAIL,SAAS,CAAC,+DAA+D,CAAC;AACxF,IAAA;AAEA,IAAA,MAAMO,GAAG,GAAGC,mBAAmB,CAACJ,SAAS,CAAC;AAC1C,IAAA,MAAMK,UAAU,GAAG/B,WAAW,CAAC6B,GAAG,CAAC;IACnC,IAAI,CAACE,UAAU,EACf;AACI,MAAA,MAAM,IAAIC,KAAK,CAAC,+DAA+D,CAAC;AACpF,IAAA;IACA,IAAIH,GAAG,KAAK,QAAQ,IAAI,IAAI,CAACb,uBAAuB,KAAK,IAAI,EAC7D;AACI,MAAA,MAAM,IAAIgB,KAAK,CAAC,4EAA4E,CAAC;AACjG,IAAA;AAEA,IAAA,MAAMC,YAAY,GAAGJ,GAAG,KAAK,QAAQ,GAC/BK,6BAA6B,CAAC,IAAI,CAAClB,uBAAuB,EAAEW,cAAc,CAAC,GAC3E;AAAEQ,MAAAA,MAAM,EAAE,YAAY;AAAEC,MAAAA,QAAQ,EAAE;KAAM;AAC9C,IAAA,MAAMC,YAAY,GAAGR,GAAG,KAAK,QAAQ,IAAII,YAAY,CAACE,MAAM,KAAK,YAAY,GACvEpC,0BAA0B,GAC1BgC,UAAU,CAAClB,QAAQ;IACzB,MAAMA,QAAQ,GAAGyB,yBAAyB,CAACD,YAAY,EAAER,GAAG,EAAED,OAAO,CAAC;IACtE,MAAMW,UAAU,GAAG,CAAE;AACjBC,MAAAA,SAAS,EAAE,UAAU;MACrBC,YAAY,EAAEV,UAAU,CAAC5B;AAC7B,KAAC,CAAE;AAEH,IAAA,KAAK,IAAIX,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGqB,QAAQ,CAAC6B,MAAM,EAAElD,KAAK,EAAE,EACpD;MACI,MAAM,CAAED,IAAI,EAAEkD,YAAY,EAAEE,QAAQ,CAAE,GAAG9B,QAAQ,CAACrB,KAAK,CAAC;MACxD+C,UAAU,CAACK,IAAI,CAAC;AACZJ,QAAAA,SAAS,EAAE,UAAU;QACrBjD,IAAI;QACJC,KAAK;QACLiD,YAAY;AACZ,QAAA,IAAIE,QAAQ,GAAG;AAAEA,UAAAA,QAAQ,EAAE;YAAE,GAAGA;AAAS;SAAG,GAAG,EAAE;AACrD,OAAC,CAAC;AACN,IAAA;AAEA,IAAA,MAAME,YAAY,GAAGC,6BAA6B,CAC9CpB,SAAS,EACTG,GAAG,EACHD,OAAO,EACP,IAAI,CAACX,eACT,CAAC;IACD,MAAM8B,SAAS,GAAGlC,QAAQ,CAACmC,GAAG,CAAC,CAAC,CAAEzD,IAAI,CAAE,KAAKA,IAAI,CAAC,CAAC0D,MAAM,CAAC1D,IAAI,IAAIA,IAAI,KAAK,MAAM,CAAC;AAClF,IAAA,IAAIsD,YAAY,EAAEK,YAAY,IAAIH,SAAS,CAACL,MAAM,EAClD;MACIH,UAAU,CAACK,IAAI,CAAC;AACZJ,QAAAA,SAAS,EAAE,iBAAiB;AAC5BW,QAAAA,KAAK,EAAE,CAAE,GAAGJ,SAAS,CAAE;AACvB1C,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGwC,YAAY,CAACK;SAAc;QAC9C,IAAIL,YAAY,CAACO,gBAAgB,GAAG;AAAEA,UAAAA,gBAAgB,EAAEC,iBAAiB,CACrER,YAAY,CAACO,gBACjB;SAAG,GAAG,EAAE,CAAC;AACT3C,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGoC,YAAY,CAACF;AAAS;AAC7C,OAAC,CAAC;AACN,IAAA;AAEA,IAAA,KAAK,MAAMW,UAAU,IAAIvB,UAAU,CAAC3B,qBAAqB,EACzD;AACI,MAAA,MAAMmD,eAAe,GAAGC,gCAAgC,CACpDF,UAAU,CAACjD,YAAY,EACvBuB,OAAO,EACP,IAAI,CAACX,eACT,CAAC;MACD,MAAMwC,QAAQ,GAAGH,UAAU,CAAC/D,IAAI,KAAK,MAAM,IAAIsD,YAAY,GACrD;AACE,QAAA,GAAGS,UAAU;QACbC,eAAe;AACfG,QAAAA,eAAe,EAAE;AAAE,UAAA,GAAGJ,UAAU,CAAC7C;SAAc;AAC/CJ,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGwC,YAAY,CAACc;SAAc;QAC9C,IAAId,YAAY,CAACO,gBAAgB,GAAG;AAAEA,UAAAA,gBAAgB,EAAEC,iBAAiB,CACrER,YAAY,CAACO,gBACjB;SAAG,GAAG,EAAE,CAAC;AACT3C,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGoC,YAAY,CAACF;AAAS;AAC7C,OAAC,GACC;AAAE,QAAA,GAAGW,UAAU;AAAEjD,QAAAA,YAAY,EAAEkD;OAAiB;MACtDhB,UAAU,CAACK,IAAI,CAAC;AAAEJ,QAAAA,SAAS,EAAE,uBAAuB;QAAE,GAAGiB;AAAS,OAAC,CAAC;AACxE,IAAA;AAEA,IAAA,IAAI5B,GAAG,KAAK,QAAQ,IACbI,YAAY,CAACE,MAAM,KAAK,UAAU,IAClCU,YAAY,EAAEK,YAAY,EACjC;MACIX,UAAU,CAACK,IAAI,CAAC;AACZJ,QAAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,GAAGlD,sBAAsB;AACzBe,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGwC,YAAY,CAACK;SAAc;QAC9C,IAAIL,YAAY,CAACO,gBAAgB,GAAG;AAAEA,UAAAA,gBAAgB,EAAEC,iBAAiB,CACrER,YAAY,CAACO,gBACjB;SAAG,GAAG,EAAE,CAAC;AACT3C,QAAAA,YAAY,EAAE;AAAE,UAAA,GAAGoC,YAAY,CAACF;AAAS;AAC7C,OAAC,CAAC;AACN,IAAA;AAEA,IAAA,MAAMiB,WAAW,GAAGC,0BAA0B,CAC1ChC,GAAG,EACHgB,YAAY,EAAEF,QAAQ,EAAEmB,uBAAuB,EAC/ClC,OACJ,CAAC;AACD,IAAA,IAAIgC,WAAW,EACf;MACIrB,UAAU,CAACK,IAAI,CAAC;AACZJ,QAAAA,SAAS,EAAE,+BAA+B;AAC1CjD,QAAAA,IAAI,EAAE,aAAa;QACnB,GAAGqE;AACP,OAAC,CAAC;AACN,IAAA;IACArB,UAAU,CAACK,IAAI,CAAC;AAAEJ,MAAAA,SAAS,EAAE;AAAiB,KAAC,CAAC;IAEhD,OAAO;AACHG,MAAAA,QAAQ,EAAE;AACNjC,QAAAA,MAAM,EAAE,QAAQ;AAChBC,QAAAA,IAAI,EAAE,sCAAsC;AAC5CoD,QAAAA,UAAU,EAAE,4CAA4C;QACxD5B,MAAM,EAAEF,YAAY,CAACE,MAAM;QAC3B,IAAIF,YAAY,CAACG,QAAQ,GAAG;UACxB4B,eAAe,EAAE,IAAI,CAAChD,uBAAuB;UAC7CiD,cAAc,EAAEhC,YAAY,CAACG;SAChC,GAAG,EAAE,CAAC;QACPhB,cAAc,EAAE,IAAI,CAACH;OACxB;MACDiD,iBAAiB,EAAEC,MAAM,CAACzC,SAAS,CAAC0C,QAAQ,IAAI,EAAE,CAAC;AACnDC,MAAAA,WAAW,EAAE1C,cAAc,CAAC0C,WAAW,IAAI,IAAI;MAC/CxC,GAAG;AACHyC,MAAAA,GAAG,EAAE,CAAC;AACN/B,MAAAA;KACH;AACL,EAAA;AACJ;;AAEA;AACO,SAASL,6BAA6BA,CAAC8B,eAAe,EAAErC,cAAc,EAC7E;EACI,IAAI,CAAC,CAAE,UAAU,EAAE,YAAY,CAAE,CAACN,QAAQ,CAAC2C,eAAe,CAAC,EAC3D;AACI,IAAA,MAAM,IAAI1C,SAAS,CAAC,4DAA4D,CAAC;AACrF,EAAA;AACA,EAAA,IAAI0C,eAAe,KAAK,UAAU,EAAE,OAAO;AAAE7B,IAAAA,MAAM,EAAE6B,eAAe;AAAE5B,IAAAA,QAAQ,EAAE;GAAM;AAEtF,EAAA,MAAMmC,eAAe,GAAG,CAAC5C,cAAc,EAAE6C,MAAM,IAAI,EAAE,EAAEC,OAAO,CAAC,CAACC,KAAK,EAAEC,UAAU,KACjF;AACI,IAAA,MAAMC,OAAO,GAAGT,MAAM,CAACO,KAAK,EAAEG,KAAK,EAAED,OAAO,IAAI,EAAE,CAAC,CAACE,IAAI,EAAE,CAACC,WAAW,EAAE;AACxE,IAAA,MAAMC,IAAI,GAAGN,KAAK,EAAEO,WAAW;AAC/B,IAAA,MAAMC,kBAAkB,GAAGF,IAAI,EAAEG,MAAM,EAAEC,QAAQ,KAAK,sBAAsB,GACtEjB,MAAM,CAACa,IAAI,CAACG,MAAM,CAACf,QAAQ,IAAI,EAAE,CAAC,CAACU,IAAI,EAAE,CAACC,WAAW,EAAE,GACvD,EAAE;AACR,IAAA,MAAMzB,UAAU,GAAG,WAAW,CAAC+B,IAAI,CAAClB,MAAM,CAACa,IAAI,EAAEvF,iBAAiB,IAAI,EAAE,CAAC,CAAC,IACnE,WAAW,CAAC4F,IAAI,CAAClB,MAAM,CAACa,IAAI,EAAEtF,YAAY,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,CAACE,wBAAwB,CAAC0F,GAAG,CAACV,OAAO,CAAC,IACnC,CAACM,kBAAkB,CAACK,UAAU,CAAC,SAAS,CAAC,IACzCL,kBAAkB,CAACK,UAAU,CAAC,oBAAoB,CAAC,IACnDjC,UAAU,EACjB;AACI,MAAA,OAAO,EAAE;AACb,IAAA;AACA,IAAA,OAAO,CAAE;MAAEqB,UAAU;MAAEC,OAAO;AAAEM,MAAAA;AAAmB,KAAC,CAAE;AAC1D,EAAA,CAAC,CAAC;AACF,EAAA,IAAI,CAACX,eAAe,CAAC7B,MAAM,EAAE,OAAO;AAAEP,IAAAA,MAAM,EAAE6B,eAAe;AAAE5B,IAAAA,QAAQ,EAAE;GAAM;AAE/E,EAAA,MAAMoD,UAAU,GAAG,CAAC7D,cAAc,EAAE8D,YAAY,IAAI,EAAE,EAAEhB,OAAO,CAACiB,KAAK,IACrE;AACI,IAAA,MAAMC,YAAY,GAAGxB,MAAM,CAACuB,KAAK,EAAEC,YAAY,IAAI,EAAE,CAAC,CAACb,IAAI,EAAE,CAACC,WAAW,EAAE;AAC3E,IAAA,MAAMa,YAAY,GAAGzB,MAAM,CAACuB,KAAK,EAAEb,KAAK,EAAED,OAAO,IAAI,EAAE,CAAC,CAACE,IAAI,EAAE,CAACC,WAAW,EAAE;AAC7E,IAAA,IAAI,CAACY,YAAY,CAACJ,UAAU,CAAC,gBAAgB,CAAC,IACvC,CAACzF,0BAA0B,CAACwF,GAAG,CAACM,YAAY,CAAC,EACpD;AACI,MAAA,OAAO,EAAE;AACb,IAAA;AACA,IAAA,OAAO,CAAE;MACLD,YAAY;AACZE,MAAAA,UAAU,EAAE1B,MAAM,CAACuB,KAAK,EAAEG,UAAU,IAAI,EAAE,CAAC,CAACf,IAAI,EAAE,IAAI,IAAI;AAC1Dc,MAAAA;AACJ,KAAC,CAAE;AACP,EAAA,CAAC,CAAC;AACF,EAAA,IAAI,CAACJ,UAAU,CAAC9C,MAAM,EAAE,OAAO;AAAEP,IAAAA,MAAM,EAAE6B,eAAe;AAAE5B,IAAAA,QAAQ,EAAE;GAAM;EAC1E,OAAO;AACHD,IAAAA,MAAM,EAAE,YAAY;AACpBC,IAAAA,QAAQ,EAAE;AACN1B,MAAAA,MAAM,EAAE,SAAS;AACjBC,MAAAA,IAAI,EAAE,kDAAkD;AACxDC,MAAAA,WAAW,EAAE,6BAA6B;MAC1C2D,eAAe;AACfiB,MAAAA;AACJ;GACH;AACL;;AAEA;AACO,SAASlD,yBAAyBA,CAACD,YAAY,EAAER,GAAG,EAAED,OAAO,EACpE;EACI,MAAMkE,MAAM,GAAGzD,YAAY,CAACW,GAAG,CAAC0C,KAAK,IAAI,CACrCA,KAAK,CAAC,CAAC,CAAC,EACRA,KAAK,CAAC,CAAC,CAAC,EACRA,KAAK,CAAC,CAAC,CAAC,GAAG;IAAE,GAAGA,KAAK,CAAC,CAAC;GAAG,GAAGK,SAAS,CACzC,CAAC;EACF,IAAI,CAACnE,OAAO,IAAI,OAAOA,OAAO,CAACoE,GAAG,KAAK,UAAU,EAAE,OAAOF,MAAM;EAEhE,MAAMG,KAAK,GAAGrE,OAAO,CAACoE,GAAG,CAAC,sBAAsB,EAAE,CAAA,EAAGnE,GAAG,CAAA,oBAAA,CAAsB,CAAC;AAC/E,EAAA,MAAMqE,QAAQ,GAAGC,wBAAwB,CAACF,KAAK,CAAC;EAChD,MAAMG,QAAQ,GAAG,EAAE;EACnB,KAAK,MAAMC,QAAQ,IAAIH,QAAQ,EAAEI,YAAY,IAAI,EAAE,EACnD;IACI,MAAMC,QAAQ,GAAGC,qBAAqB,CAACH,QAAQ,EAAEI,aAAa,CAAC,CAAC1B,WAAW,EAAE;AAC7E,IAAA,MAAM2B,KAAK,GAAG,mDAAmD,CAACC,IAAI,CAACJ,QAAQ,CAAC;AAChF,IAAA,MAAMK,MAAM,GAAGP,QAAQ,EAAEQ,UAAU;AACnC,IAAA,IAAI,CAACH,KAAK,IAAI,CAACE,MAAM,EAAE;AACvB,IAAA,IAAIzC,MAAM,CAACyC,MAAM,CAACxC,QAAQ,IAAI,EAAE,CAAC,CAACW,WAAW,EAAE,KAAK,CAAA,EAAGlD,GAAG,CAAA,CAAA,EAAI0E,QAAQ,EAAE,EAAE;AAE1E,IAAA,MAAMO,QAAQ,GAAG,CAACF,MAAM,CAACE,QAAQ,IAAI,EAAE,EAAE7D,MAAM,CAAC8D,OAAO,CAAC;AACxD,IAAA,IAAID,QAAQ,CAACpE,MAAM,KAAK,CAAC,EAAE;AAC3B,IAAA,MAAMsE,OAAO,GAAGF,QAAQ,CAAC,CAAC,CAAC;AAC3B,IAAA,IAAIE,OAAO,CAACC,uBAAuB,EAAEvE,MAAM,KAAK,CAAC,IAAIsE,OAAO,CAACE,kBAAkB,EAAExE,MAAM,KAAK,CAAC,EAC7F;AACI,MAAA;AACJ,IAAA;IACA0D,QAAQ,CAACxD,IAAI,CAAC,CACV8D,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc,GAAG,cAAc,GAAG,cAAc,EAC7DM,OAAO,CAACE,kBAAkB,CAAC,CAAC,CAAC,EAC7B;AACIxG,MAAAA,MAAM,EAAE,SAAS;AACjBC,MAAAA,IAAI,EAAE,8CAA8C;MACpDwG,uBAAuB,EAAElB,KAAK,CAAC7B,QAAQ;MACvCgD,gBAAgB,EAAElB,QAAQ,CAAC9B,QAAQ;MACnCiD,kBAAkB,EAAEhB,QAAQ,CAACI,aAAa;MAC1Ca,yBAAyB,EAAEV,MAAM,CAACxC,QAAQ;AAC1C3E,MAAAA,iBAAiB,EAAEuH,OAAO,CAACC,uBAAuB,CAAC,CAAC;AACxD,KAAC,CACJ,CAAC;AACN,EAAA;AAEA,EAAA,MAAMM,WAAW,GAAG,IAAI1H,GAAG,CAACuG,QAAQ,CAACpD,GAAG,CAAC0C,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5D,IAAI6B,WAAW,CAACC,IAAI,KAAKpB,QAAQ,CAAC1D,MAAM,EAAE,OAAOoD,MAAM;AACvD,EAAA,MAAM2B,aAAa,GAAG,IAAI5H,GAAG,CAACiG,MAAM,CAAC9C,GAAG,CAAC0C,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,EAAA,MAAMgC,SAAS,GAAGtB,QAAQ,CACrBnD,MAAM,CAACyC,KAAK,IAAI,CAAC+B,aAAa,CAACnC,GAAG,CAACI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7CiC,IAAI,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAKC,sBAAsB,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGE,sBAAsB,CAACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,EAAA,IAAI,CAACH,SAAS,CAAChF,MAAM,EAAE,OAAOoD,MAAM;AAEpC,EAAA,MAAMiC,UAAU,GAAGjC,MAAM,CAACkC,SAAS,CAACtC,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAClEI,EAAAA,MAAM,CAACmC,MAAM,CAACF,UAAU,GAAG,CAAC,GAAGjC,MAAM,CAACpD,MAAM,GAAGqF,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,GAAGL,SAAS,CAAC;AAC/E,EAAA,OAAO5B,MAAM;AACjB;AAEA,SAASgC,sBAAsBA,CAACvI,IAAI,EACpC;AACI,EAAA,OAAOA,IAAI,KAAK,cAAc,GAAG,CAAC,GAAG,CAAC;AAC1C;;AAEA;AACO,SAASsE,0BAA0BA,CAAChC,GAAG,EAAEiC,uBAAuB,EAAElC,OAAO,EAChF;EACI,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,CAACsG,WAAW,KAAK,UAAU,EAAE,OAAO,IAAI;AACtE,EAAA,MAAMC,WAAW,GAAGhE,MAAM,CAACL,uBAAuB,IAAI,EAAE,CAAC,CAACgB,IAAI,EAAE,CAACC,WAAW,EAAE;AAC9E,EAAA,MAAMqD,MAAM,GAAG,CAAA,EAAGvG,GAAG,CAAA,YAAA,CAAc;EACnC,IAAI,CAACsG,WAAW,CAAC5C,UAAU,CAAC6C,MAAM,CAAC,EAAE,OAAO,IAAI;EAChD,MAAMC,iBAAiB,GAAGF,WAAW,CAACG,KAAK,CAAC,CAAA,EAAGzG,GAAG,CAAA,CAAA,CAAG,CAACa,MAAM,CAAC;AAC7D,EAAA,MAAM6F,KAAK,GAAG,CAAC3G,OAAO,CAACsG,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAEjF,MAAM,CAACuF,MAAM,IAC/E;IACI,IAAI,CAACrE,MAAM,CAACqE,MAAM,EAAEpE,QAAQ,IAAI,EAAE,CAAC,CAACW,WAAW,EAAE,CAACQ,UAAU,CAAC,CAAA,EAAG1D,GAAG,CAAA,MAAA,CAAQ,CAAC,EAAE,OAAO,KAAK;AAC1F,IAAA,MAAMqE,QAAQ,GAAGC,wBAAwB,CAACqC,MAAM,CAAC;AACjD,IAAA,OAAOtC,QAAQ,EAAEuC,kBAAkB,EAAEC,IAAI,CAAChD,KAAK,IAC3Cc,qBAAqB,CAACd,KAAK,CAAC,CAACX,WAAW,EAAE,KAAKsD,iBAAiB,CAAC;AACzE,EAAA,CAAC,CAAC;AACF,EAAA,IAAIE,KAAK,CAAC7F,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAEnC,MAAMwD,QAAQ,GAAGC,wBAAwB,CAACoC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAA,MAAMI,OAAO,GAAG,CAACzC,QAAQ,EAAEI,YAAY,IAAI,EAAE,EAAErD,MAAM,CAACoD,QAAQ,IAC9D;IACI,MAAME,QAAQ,GAAGC,qBAAqB,CAACH,QAAQ,EAAEI,aAAa,CAAC,CAAC1B,WAAW,EAAE;AAC7E,IAAA,OAAOwB,QAAQ,CAAChB,UAAU,CAAC,uBAAuB,CAAC,IAC5Cc,QAAQ,EAAEQ,UAAU,IACpB1C,MAAM,CAACkC,QAAQ,CAACQ,UAAU,CAACzC,QAAQ,IAAI,EAAE,CAAC,CAACW,WAAW,EAAE,KAAK,CAAA,EAAGlD,GAAG,CAAA,CAAA,EAAI0E,QAAQ,CAAA,CAAE;AAC5F,EAAA,CAAC,CAAC;AACF,EAAA,IAAIoC,OAAO,CAACjG,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AAErC,EAAA,MAAMkE,MAAM,GAAG+B,OAAO,CAAC,CAAC,CAAC,CAAC9B,UAAU;AACpC,EAAA,MAAMC,QAAQ,GAAG,CAACF,MAAM,EAAEE,QAAQ,IAAI,EAAE,EAAE7D,MAAM,CAAC8D,OAAO,CAAC;AACzD,EAAA,IAAID,QAAQ,CAACpE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AACtC,EAAA,MAAMsE,OAAO,GAAGF,QAAQ,CAAC,CAAC,CAAC;AAC3B,EAAA,IAAIE,OAAO,CAACC,uBAAuB,EAAEvE,MAAM,KAAK,CAAC,IAAIsE,OAAO,CAACE,kBAAkB,EAAExE,MAAM,KAAK,CAAC,EAC7F;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EACA,OAAO;IACHwC,kBAAkB,EAAE0B,MAAM,CAACxC,QAAQ;AACnC3E,IAAAA,iBAAiB,EAAEuH,OAAO,CAACC,uBAAuB,CAAC,CAAC,CAAC;AACrDvH,IAAAA,YAAY,EAAEsH,OAAO,CAACE,kBAAkB,CAAC,CAAC,CAAC;AAC3CvE,IAAAA,QAAQ,EAAE;AACNjC,MAAAA,MAAM,EAAE,SAAS;AACjBC,MAAAA,IAAI,EAAE,iDAAiD;AACvDiI,MAAAA,sBAAsB,EAAEL,KAAK,CAAC,CAAC,CAAC,CAACnE,QAAQ;MACzCgD,gBAAgB,EAAElB,QAAQ,CAAC9B,QAAQ;AACnCiD,MAAAA,kBAAkB,EAAEsB,OAAO,CAAC,CAAC,CAAC,CAAClC,aAAa;AAC5C3C,MAAAA;AACJ;GACH;AACL;;AAEA;AACO,SAAShB,6BAA6BA,CAACpB,SAAS,EAAEG,GAAG,EAAED,OAAO,EAAER,cAAc,GAAG,IAAI,EAC5F;AACI,EAAA,IAAI,CAACQ,OAAO,IAAI,OAAOA,OAAO,CAACoE,GAAG,KAAK,UAAU,IAAI,OAAOpE,OAAO,CAACsG,WAAW,KAAK,UAAU,EAC9F;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AACA,EAAA,MAAMW,UAAU,GAAG,CAACnH,SAAS,EAAEoH,eAAe,IAAI,EAAE,EAAE7F,MAAM,CAACyC,KAAK,IAC9DA,KAAK,EAAEqD,OAAO,EAAEC,QAAQ,KAAK,UAAU,IACpC,OAAOtD,KAAK,EAAEuD,UAAU,EAAEC,SAAS,KAAK,QAAQ,CAAC;AACxD,EAAA,IAAIL,UAAU,CAACnG,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AAExC,EAAA,MAAMwG,SAAS,GAAGL,UAAU,CAAC,CAAC,CAAC,CAACI,UAAU,CAACC,SAAS,CAACpE,IAAI,EAAE,CAACC,WAAW,EAAE;AACzE,EAAA,MAAMoE,IAAI,GAAG,CAAA,wBAAA,EAA2BtH,GAAG,CAAA,0BAAA,CAA4B;EACvE,MAAMuH,WAAW,GAAGxH,OAAO,CAACsG,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE;EACrE,MAAMmB,OAAO,GAAG,mDAAmD;AACnE,EAAA,MAAMC,SAAS,GAAG,CAAA,EAAGzH,GAAG,CAAA,YAAA,CAAc;AACtC,EAAA,MAAM0H,gBAAgB,GAAGH,WAAW,CAAC3E,OAAO,CAACiB,KAAK,IAClD;AACI,IAAA,MAAMtB,QAAQ,GAAGD,MAAM,CAACuB,KAAK,EAAEtB,QAAQ,IAAI,EAAE,CAAC,CAACW,WAAW,EAAE;AAC5D,IAAA,IAAI,CAACX,QAAQ,CAACmB,UAAU,CAAC8D,OAAO,CAAC,IAAI,CAACjF,QAAQ,CAACoF,QAAQ,CAACF,SAAS,CAAC,IAC3D,CAACG,KAAK,CAACC,OAAO,CAAChE,KAAK,EAAEiE,MAAM,CAAC,IAAIjE,KAAK,CAACiE,MAAM,CAAC,CAAC,CAAC,KAAK9H,GAAG,EAC/D;AACI,MAAA,OAAO,EAAE;AACb,IAAA;AACA,IAAA,MAAM+H,MAAM,GAAGxF,QAAQ,CAACkE,KAAK,CAACe,OAAO,CAAC3G,MAAM,EAAE,CAAC4G,SAAS,CAAC5G,MAAM,CAAC;AAChE,IAAA,OAAOkH,MAAM,KAAKV,SAAS,KAAKU,MAAM,IAAIV,SAAS,CAAC3D,UAAU,CAAC,GAAGqE,MAAM,CAAA,CAAA,CAAG,CAAC,CAAC,GACvE,CAAE;MAAEA,MAAM;AAAE7H,MAAAA,UAAU,EAAE2D;KAAO,CAAE,GACjC,EAAE;EACZ,CAAC,CAAC,CAACiC,IAAI,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAKA,KAAK,CAAC+B,MAAM,CAAClH,MAAM,GAAGkF,IAAI,CAACgC,MAAM,CAAClH,MAAM,CAAC;EAClE,MAAMmH,mBAAmB,GAAGN,gBAAgB,CAAC,CAAC,CAAC,EAAEK,MAAM,CAAClH,MAAM,IAAI,CAAC;AACnE,EAAA,MAAMoH,aAAa,GAAGP,gBAAgB,CAACtG,MAAM,CAACyC,KAAK,IAAIA,KAAK,CAACkE,MAAM,CAAClH,MAAM,KAAKmH,mBAAmB,CAAC;AACnG,EAAA,IAAIC,aAAa,CAACpH,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAE3C,MAAM;IAAEkH,MAAM;AAAE7H,IAAAA;AAAW,GAAC,GAAG+H,aAAa,CAAC,CAAC,CAAC;AAC/C,EAAA,MAAMC,QAAQ,GAAG,CAAA,EAAGZ,IAAI,CAAA,EAAGS,MAAM,CAAA,KAAA,CAAO;EACxC,MAAMI,cAAc,GAAGpI,OAAO,CAACoE,GAAG,CAAC,sBAAsB,EAAE+D,QAAQ,CAAC;AACpE,EAAA,MAAME,sBAAsB,GAAG,CAAA,EAAGd,IAAI,CAAA,EAAGD,SAAS,CAAA,MAAA,CAAQ;EAC1D,MAAMgB,kBAAkB,GAAGtI,OAAO,CAACoE,GAAG,CAAC,sBAAsB,EAAEiE,sBAAsB,CAAC;AACtF,EAAA,MAAME,MAAM,GAAGD,kBAAkB,EAAEP,MAAM,EAAEQ,MAAM;AACjD,EAAA,MAAMC,mBAAmB,GAAGX,KAAK,CAACC,OAAO,CAACS,MAAM,CAAC,IAC1CA,MAAM,CAACzH,MAAM,KAAK,CAAC,IACnByH,MAAM,CAACE,KAAK,CAACC,KAAK,IAAIb,KAAK,CAACC,OAAO,CAACY,KAAK,CAAC,IAAIA,KAAK,CAAC5H,MAAM,KAAK,CAAC,CAAC;EACxE,MAAM6H,OAAO,GAAGxI,UAAU,CAAC4H,MAAM,CAACrB,KAAK,CAAC,CAAC,CAAC,CACrCrF,MAAM,CAACyC,KAAK,IAAIA,KAAK,EAAE8E,QAAQ,KAAK,YAAY,IAAI,OAAO9E,KAAK,EAAE+E,IAAI,KAAK,QAAQ,CAAC,CACpFzH,GAAG,CAAC0C,KAAK,IAAIA,KAAK,CAAC+E,IAAI,CAACC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC3F,WAAW,EAAE,CAAC,CACrE/B,GAAG,CAAC0C,KAAK,KAAK;AACXiF,IAAAA,QAAQ,EAAE,CAAA,EAAG9I,GAAG,CAAA,YAAA,EAAe6D,KAAK,CAAA,CAAE;IACtC8C,MAAM,EAAE5G,OAAO,CAACoE,GAAG,CAAC,sBAAsB,EAAE,CAAA,EAAGnE,GAAG,CAAA,YAAA,EAAe6D,KAAK,CAAA,CAAE;GAC3E,CAAC,CAAC,CACFzC,MAAM,CAACyC,KAAK,IAAIA,KAAK,CAAC8C,MAAM,CAAC;AAClC,EAAA,IAAI+B,OAAO,CAAC7H,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAErC,MAAMkI,YAAY,GAAGL,OAAO,CAAC,CAAC,CAAC,CAAC/B,MAAM,CAAC1B,QAAQ,EACzCrC,OAAO,CAACiB,KAAK,IAAIA,KAAK,EAAEmF,iBAAiB,IAAI,EAAE,CAAC,IAAI,EAAE;EAC5D,MAAMC,cAAc,GAAGP,OAAO,CAAC,CAAC,CAAC,CAACI,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,EAAE,CAAC,EAAE,CAAC,EAAEN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACrF,EAAA,IAAI,CAACI,cAAc,EAAE,OAAO,IAAI;AAChC,EAAA,MAAM1C,MAAM,GAAG,CAAA,EAAG0C,cAAc,CAAA,CAAA,EAAIjJ,GAAG,CAAA,MAAA,CAAQ;AAC/C,EAAA,MAAM8B,YAAY,GAAG;IACjBrD,UAAU,EAAE2K,4BAA4B,CAACL,YAAY,EAAE,GAAGxC,MAAM,CAAA,CAAA,CAAG,EAAEhH,cAAc,CAAC;IACpFb,SAAS,EAAE0K,4BAA4B,CAACL,YAAY,EAAE,GAAGxC,MAAM,CAAA,CAAA,CAAG,EAAEhH,cAAc,CAAC;IACnFZ,WAAW,EAAEyK,4BAA4B,CAACL,YAAY,EAAE,CAAA,EAAGxC,MAAM,CAAA,CAAA,CAAG,EAAEhH,cAAc;GACvF;AACD,EAAA,IAAI8J,MAAM,CAACvB,MAAM,CAAChG,YAAY,CAAC,CAAC+E,IAAI,CAAChD,KAAK,IAAI,CAACA,KAAK,CAAC,EAAE,OAAO,IAAI;AAElE,EAAA,MAAMyF,UAAU,GAAG,CAAA,EAAGL,cAAc,CAAA,CAAA,EAAIjJ,GAAG,CAAA,MAAA,CAAQ;EACnD,MAAMuJ,eAAe,GAAGH,4BAA4B,CAACL,YAAY,EAAE,CAAA,EAAGO,UAAU,CAAA,CAAA,CAAG,EAAE/J,cAAc,CAAC;EACpG,MAAMiK,gBAAgB,GAAGJ,4BAA4B,CAACL,YAAY,EAAE,CAAA,EAAGO,UAAU,CAAA,CAAA,CAAG,EAAE/J,cAAc,CAAC;EACrG,MAAMkK,cAAc,GAAGL,4BAA4B,CAACL,YAAY,EAAE,CAAA,EAAGO,UAAU,CAAA,CAAA,CAAG,EAAE/J,cAAc,CAAC;EACnG,MAAMmK,qBAAqB,GAAGnB,mBAAmB,GAAG;IAChDoB,cAAc,EAAEC,uBAAuB,CAAC7J,OAAO,EAAE,GAAGuH,IAAI,CAAA,mBAAA,CAAqB,EAAE/H,cAAc,CAAC;IAC9FsK,YAAY,EAAED,uBAAuB,CAAC7J,OAAO,EAAE,GAAGuH,IAAI,CAAA,mBAAA,CAAqB,EAAE/H,cAAc,CAAC;IAC5FuK,cAAc,EAAEF,uBAAuB,CAAC7J,OAAO,EAAE,GAAGuH,IAAI,CAAA,mBAAA,CAAqB,EAAE/H,cAAc,CAAC;IAC9FwK,YAAY,EAAEH,uBAAuB,CAAC7J,OAAO,EAAE,CAAA,EAAGuH,IAAI,CAAA,mBAAA,CAAqB,EAAE/H,cAAc;AAC/F,GAAC,GAAG,IAAI;AACR,EAAA,MAAMgC,gBAAgB,GAAGmI,qBAAqB,IACvCL,MAAM,CAACvB,MAAM,CAAC4B,qBAAqB,CAAC,CAAClB,KAAK,CAACtD,OAAO,CAAC,GACpD;IAAEkD,sBAAsB;IAAEE,MAAM,EAAEA,MAAM,CAACnH,GAAG,CAACsH,KAAK,IAAI,CAAE,GAAGA,KAAK,CAAE,CAAC;IAAE,GAAGiB;AAAsB,GAAC,GAC/F,IAAI;EAEV,OAAO;IACH5H,YAAY;AACZ,IAAA,IAAIP,gBAAgB,GAAG;AAAEA,MAAAA;KAAkB,GAAG,EAAE,CAAC;AACjD,IAAA,IAAIgI,eAAe,GAAG;AAClBlI,MAAAA,YAAY,EAAE;AACV5C,QAAAA,UAAU,EAAE8K,eAAe;AAC3B,QAAA,IAAIE,cAAc,GAAG;AAAE/K,UAAAA,SAAS,EAAE+K;SAAgB,GAAG,EAAE,CAAC;AACxD,QAAA,IAAID,gBAAgB,GAAG;AAAE7K,UAAAA,WAAW,EAAE6K;SAAkB,GAAG,EAAE;AACjE;KACH,GAAG,EAAE,CAAC;AACP1I,IAAAA,QAAQ,EAAE;AACNjC,MAAAA,MAAM,EAAE,SAAS;AACjBC,MAAAA,IAAI,EAAE,4CAA4C;AAClDC,MAAAA,WAAW,EAAE,sBAAsB;AACnCQ,MAAAA,cAAc,EAAEG,0BAA0B,CAACC,SAAS,CAACJ,cAAc,CAAC;MACpE8H,SAAS;AACT,MAAA,IAAI9F,gBAAgB,GAAG;AAAE6G,QAAAA;OAAwB,GAAG,EAAE,CAAC;AACvD,MAAA,IAAIR,KAAK,CAACC,OAAO,CAACM,cAAc,EAAEL,MAAM,CAAC,IAAIK,cAAc,CAACL,MAAM,CAACjH,MAAM,KAAK,CAAC,GAAG;QAC9EqH,QAAQ;AACR8B,QAAAA,SAAS,EAAE,CAAE,GAAG7B,cAAc,CAACL,MAAM;OACxC,GAAG,EAAE,CAAC;AACPmC,MAAAA,cAAc,EAAE3H,MAAM,CAACpC,UAAU,CAACqC,QAAQ,CAAC;AAC3CN,MAAAA,uBAAuB,EAAEyG,OAAO,CAAC,CAAC,CAAC,CAACI,QAAQ;AAC5C,MAAA,IAAIS,eAAe,GAAG;AAAEA,QAAAA;OAAiB,GAAG,EAAE,CAAC;AAC/C,MAAA,IAAIC,gBAAgB,GAAG;AAAEA,QAAAA;AAAiB,OAAC,GAAG;AAC1CU,QAAAA,kBAAkB,EAAE;AACxB,OAAC,CAAC;AACF,MAAA,IAAIT,cAAc,GAAG;QACjBA,cAAc;AACdU,QAAAA,YAAY,EAAE,UAAU;AACxBC,QAAAA,UAAU,EAAE;AAChB,OAAC,GAAG;AACAD,QAAAA,YAAY,EAAE;OACjB;AACL;GACH;AACL;AAEA,SAAS3I,iBAAiBA,CAACqC,KAAK,EAChC;EACI,OAAO;AAAE,IAAA,GAAGA,KAAK;AAAEyE,IAAAA,MAAM,EAAEzE,KAAK,CAACyE,MAAM,CAACnH,GAAG,CAACsH,KAAK,IAAI,CAAE,GAAGA,KAAK,CAAE;GAAG;AACxE;AAEA,SAASnE,wBAAwBA,CAACqC,MAAM,EACxC;AACI,EAAA,MAAM1B,QAAQ,GAAG,CAAC0B,MAAM,EAAE1B,QAAQ,IAAI,EAAE,EAAE7D,MAAM,CAAC8D,OAAO,CAAC;EACzD,OAAOD,QAAQ,CAACpE,MAAM,KAAK,CAAC,IAAIoE,QAAQ,CAAC,CAAC,CAAC,CAACZ,QAAQ,GAAGY,QAAQ,CAAC,CAAC,CAAC,CAACZ,QAAQ,GAAGsC,MAAM,EAAEtC,QAAQ,IAAI,IAAI;AAC1G;AAEA,SAASM,qBAAqBA,CAACd,KAAK,EACpC;AACI,EAAA,OAAOvB,MAAM,CAACuB,KAAK,IAAI,EAAE,CAAC,CAACgF,OAAO,CAC9B,oDAAoD,EACpD,EACJ,CAAC;AACL;AAEA,SAASlH,gCAAgCA,CAAC0I,QAAQ,EAAEtK,OAAO,EAAER,cAAc,EAC3E;EACI,OAAO8J,MAAM,CAACiB,WAAW,CAACjB,MAAM,CAACkB,OAAO,CAACF,QAAQ,IAAI,EAAE,CAAC,CAACzH,OAAO,CAAC,CAAC,CAAE4H,IAAI,EAAE5B,IAAI,CAAE,KAChF;IACI,MAAM6B,QAAQ,GAAGb,uBAAuB,CAAC7J,OAAO,EAAE6I,IAAI,EAAErJ,cAAc,CAAC;IACvE,OAAOkL,QAAQ,GAAG,CAAE,CAAED,IAAI,EAAEC,QAAQ,CAAE,CAAE,GAAG,EAAE;AACjD,EAAA,CAAC,CAAC,CAAC;AACP;AAEA,SAASb,uBAAuBA,CAAC7J,OAAO,EAAE2K,aAAa,EAAEnL,cAAc,EACvE;AACI,EAAA,IAAI,CAACmL,aAAa,EAAE,OAAO,IAAI;EAC/B,MAAMrG,QAAQ,GAAGtE,OAAO,EAAEsG,WAAW,GAAG,0BAA0B,CAAC,IAAI,EAAE;AACzE,EAAA,MAAM0B,MAAM,GAAGrI,0BAA0B,CAACiL,SAAS,CAACD,aAAa,CAAC;AAClE,EAAA,MAAM5D,OAAO,GAAGzC,QAAQ,CAAClD,GAAG,CAAC0C,KAAK,IAAIA,KAAK,EAAE+G,UAAU,CAAC,CACnDxJ,MAAM,CAACyC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IACnCnE,0BAA0B,CAACiL,SAAS,CAAC9G,KAAK,CAAC,KAAKkE,MAAM,CAAC;EAClE,OAAOjB,OAAO,CAACjG,MAAM,GACfnB,0BAA0B,CAACmL,MAAM,CAAC/D,OAAO,EAAEvH,cAAc,CAAC,GAC1DG,0BAA0B,CAACoL,SAAS,CAACJ,aAAa,EAAEnL,cAAc,CAAC,GAC/DmL,aAAa,GACb,IAAI;AAClB;AAEA,SAAStB,4BAA4BA,CAAC2B,KAAK,EAAEC,UAAU,EAAEzL,cAAc,EACvE;EACI,MAAM0L,gBAAgB,GAAG3I,MAAM,CAAC0I,UAAU,IAAI,EAAE,CAAC,CAAC9H,WAAW,EAAE;EAC/D,MAAM4D,OAAO,GAAGiE,KAAK,CAAC3J,MAAM,CAACyC,KAAK,IAAInE,0BAA0B,CAACiL,SAAS,CAAC9G,KAAK,CAAC,CAC5EqF,KAAK,CAAC,GAAG,CAAC,CAACC,EAAE,CAAC,EAAE,CAAC,KAAK8B,gBAAgB,CAAC;AAC5C,EAAA,OAAOvL,0BAA0B,CAACmL,MAAM,CAAC/D,OAAO,EAAEvH,cAAc,CAAC;AACrE;AAEA,SAASU,mBAAmBA,CAACJ,SAAS,EACtC;AACI,EAAA,MAAMqL,OAAO,GAAG,IAAIlN,GAAG,EAAE;EACzB,KAAK,MAAMmN,QAAQ,IAAItL,SAAS,CAACuL,SAAS,IAAI,EAAE,EAChD;AACI,IAAA,MAAMvH,KAAK,GAAGsH,QAAQ,EAAEE,mBAAmB,EAAEC,SAAS;AACtD,IAAA,IAAIzH,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,EAAEqH,OAAO,CAACK,GAAG,CAAC1H,KAAK,CAAC;AACtD,EAAA;AACA,EAAA,IAAIqH,OAAO,CAACvF,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI;EACnC,OAAOuF,OAAO,CAACzH,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM;AAC7C;;;;"}
|
|
1
|
+
{"version":3,"file":"CjsCharacterFoundationConstruction.js","sources":["../../../src/character/CjsCharacterFoundationConstruction.js"],"sourcesContent":["import { CjsCharacterTextureQuality } from \"./CjsCharacterTextureQuality.js\";\n\nconst FEMALE_BODY_FOUNDATION = {\n role: \"body\",\n index: 1,\n configurationPath: \"res:/graphics/character/female/paperdoll/basenude/basenude.black\",\n geometryPath: \"res:/graphics/character/female/paperdoll/basenude/basenude.gr2\"\n};\n\nconst FEMALE_SPLIT_HANDS_PATH =\n \"res:/graphics/character/female/paperdoll/hands/hands_nude/hands_nude.gr2\";\n\nconst FEMALE_ATLAS_BODY_GROUPS = new Set([\n \"bottominner\",\n \"bottomouter\",\n \"bottomunderwear\",\n \"outer\",\n \"topinner\",\n \"topmiddle\",\n \"topouter\",\n \"topunderwear\"\n]);\n\nconst FEMALE_CLOTHING_FIT_GROUPS = new Set([\n ...FEMALE_ATLAS_BODY_GROUPS,\n \"feet\",\n \"hands\"\n]);\n\nconst FEMALE_SPLIT_LOD0_GEOMETRY = [\n [ \"head\", \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"torso\", \"res:/graphics/character/female/paperdoll/topinner/torso_nude/torso_nude.gr2\" ],\n [ \"sleevesUpper\", \"res:/graphics/character/female/paperdoll/dependants/sleevesupper/standard/standard.gr2\" ],\n [ \"sleevesLower\", \"res:/graphics/character/female/paperdoll/dependants/sleeveslower/standard/standard.gr2\" ],\n [ \"legs\", \"res:/graphics/character/female/paperdoll/bottominner/legs_nude/legs_nude.gr2\" ],\n [ \"hands\", FEMALE_SPLIT_HANDS_PATH ],\n [ \"feet\", \"res:/graphics/character/female/paperdoll/feet/feet_nude/feet_nude.gr2\" ]\n];\n\nconst FOUNDATIONS = {\n female: {\n resourceGender: 0,\n skeletonPath: \"res:/graphics/character/female/skeleton/masterskeletonfemale.gr2\",\n configuredFoundations: [ {\n role: \"head\",\n index: 0,\n configurationPath: \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.black\",\n geometryPath: \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\",\n skinTextures: {\n DiffuseMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_d_4k.png\",\n NormalMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_n_4k.png\",\n SpecularMap: \"res:/graphics/character/female/paperdoll/head/head_generic/genericfemhead_s_4k.png\"\n },\n skinEvidence: {\n status: \"retained\",\n rule: \"exact-head-generic-texture-inventory-v1\",\n correctness: \"exact-folder-inventory\"\n }\n } ],\n geometry: [\n [ \"head\", \"res:/graphics/character/female/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"body\", \"res:/graphics/character/female/paperdoll/basenude/basenude.gr2\" ]\n ]\n },\n male: {\n resourceGender: 1,\n skeletonPath: \"res:/graphics/character/male/skeleton/masterskeletonmale.gr2\",\n configuredFoundations: [ {\n role: \"head\",\n index: 0,\n configurationPath: \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.black\",\n geometryPath: \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.gr2\",\n skinTextures: {\n DiffuseMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_d_4k.png\",\n NormalMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_n_4k.png\",\n SpecularMap: \"res:/graphics/character/male/paperdoll/head/head_generic/genericmale_head_s_4k.png\"\n },\n skinEvidence: {\n status: \"retained\",\n rule: \"exact-head-generic-texture-inventory-v1\",\n correctness: \"exact-folder-inventory\"\n }\n } ],\n geometry: [\n [ \"head\", \"res:/graphics/character/male/paperdoll/head/head_generic/head_generic.gr2\" ],\n [ \"torso\", \"res:/graphics/character/male/paperdoll/topinner/torso_nude/torso_nude.gr2\" ],\n [ \"legs\", \"res:/graphics/character/male/paperdoll/bottominner/legs_nude/legs_nude.gr2\" ],\n [ \"hands\", \"res:/graphics/character/male/paperdoll/hands/hands_nude/hands_nude.gr2\" ],\n [ \"feet\", \"res:/graphics/character/male/paperdoll/feet/feet_nude/feet_nude.gr2\" ]\n ]\n }\n};\n\n/**\n * Produces renderer-neutral skeleton, foundation geometry, and selected skin\n * descriptors from one paper doll, plan, and hydrated character library.\n */\nexport class CjsCharacterFoundationConstruction\n{\n _femaleFoundationLayout;\n\n _textureQuality;\n\n /**\n * Validates the female foundation layout and normalizes the requested\n * texture quality.\n */\n constructor({ femaleFoundationLayout = null, textureQuality = \"4k\" } = {})\n {\n if (femaleFoundationLayout !== null\n && ![ \"combined\", \"split-lod0\" ].includes(femaleFoundationLayout))\n {\n throw new TypeError(\"Character foundation construction femaleFoundationLayout is invalid\");\n }\n this._femaleFoundationLayout = femaleFoundationLayout;\n this._textureQuality = CjsCharacterTextureQuality.normalize(textureQuality);\n }\n\n /** Produces the ordered CPU construction operations for one paper doll. */\n Resolve(paperdoll, appearancePlan, library = null)\n {\n if (!paperdoll || typeof paperdoll !== \"object\")\n {\n throw new TypeError(\"Character foundation construction requires a paper doll\");\n }\n if (!appearancePlan || typeof appearancePlan !== \"object\")\n {\n throw new TypeError(\"Character foundation construction requires an appearance plan\");\n }\n\n const sex = ResolvePaperdollSex(paperdoll);\n const definition = FOUNDATIONS[sex];\n if (!definition)\n {\n throw new Error(\"The selected paper doll does not resolve to one character sex\");\n }\n if (sex === \"female\" && this._femaleFoundationLayout === null)\n {\n throw new Error(\"Character foundation construction requires a caller-selected female layout\");\n }\n\n const femaleLayout = sex === \"female\"\n ? ResolveFemaleFoundationLayout(this._femaleFoundationLayout, appearancePlan)\n : { layout: \"split-lod0\", fallback: null };\n const baseGeometry = sex === \"female\" && femaleLayout.layout === \"split-lod0\"\n ? FEMALE_SPLIT_LOD0_GEOMETRY\n : definition.geometry;\n const geometry = ResolveFoundationGeometry(baseGeometry, sex, library);\n const operations = [ {\n operation: \"skeleton\",\n resourcePath: definition.skeletonPath\n } ];\n\n for (let index = 0; index < geometry.length; index++)\n {\n const [ role, resourcePath, evidence ] = geometry[index];\n operations.push({\n operation: \"geometry\",\n role,\n index,\n resourcePath,\n ...(evidence ? { evidence: { ...evidence } } : {})\n });\n }\n\n const selectedSkin = ResolveSelectedFoundationSkin(\n paperdoll,\n sex,\n library,\n this._textureQuality\n );\n const bodyRoles = geometry.map(([ role ]) => role).filter(role => role !== \"head\");\n if (selectedSkin?.bodyTextures && bodyRoles.length)\n {\n operations.push({\n operation: \"foundation-skin\",\n roles: [ ...bodyRoles ],\n skinTextures: { ...selectedSkin.bodyTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n });\n }\n\n for (const configured of definition.configuredFoundations)\n {\n const supportTextures = ResolveFoundationTextureBindings(\n configured.skinTextures,\n library,\n this._textureQuality\n );\n const resolved = configured.role === \"head\" && selectedSkin\n ? {\n ...configured,\n supportTextures,\n supportEvidence: { ...configured.skinEvidence },\n skinTextures: { ...selectedSkin.headTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n }\n : { ...configured, skinTextures: supportTextures };\n operations.push({ operation: \"configured-foundation\", ...resolved });\n }\n\n if (sex === \"female\"\n && femaleLayout.layout === \"combined\"\n && selectedSkin?.bodyTextures)\n {\n operations.push({\n operation: \"configured-foundation\",\n ...FEMALE_BODY_FOUNDATION,\n skinTextures: { ...selectedSkin.bodyTextures },\n ...(selectedSkin.skinColorization ? { skinColorization: CloneColorization(\n selectedSkin.skinColorization\n ) } : {}),\n skinEvidence: { ...selectedSkin.evidence }\n });\n }\n\n const browSupport = ResolveSelectedBrowSupport(\n sex,\n selectedSkin?.evidence?.archetypeSourceRecordID,\n library\n );\n if (browSupport)\n {\n operations.push({\n operation: \"configured-foundation-support\",\n role: \"eyebrowbase\",\n ...browSupport\n });\n }\n operations.push({ operation: \"bind-animation\" });\n\n return {\n evidence: {\n status: \"policy\",\n rule: \"character-foundation-construction-v1\",\n sourceRule: \"reviewed-foundation-construction-source-v1\",\n layout: femaleLayout.layout,\n ...(femaleLayout.fallback ? {\n requestedLayout: this._femaleFoundationLayout,\n layoutFallback: femaleLayout.fallback\n } : {}),\n textureQuality: this._textureQuality\n },\n paperdollRecordID: String(paperdoll.recordID ?? \"\"),\n sourceBuild: appearancePlan.sourceBuild ?? null,\n sex,\n lod: 0,\n operations\n };\n }\n}\n\n/** Resolves the layout required by the caller and exact fit evidence. */\nexport function ResolveFemaleFoundationLayout(requestedLayout, appearancePlan)\n{\n if (![ \"combined\", \"split-lod0\" ].includes(requestedLayout))\n {\n throw new TypeError(\"Character foundation layout must be combined or split-lod0\");\n }\n if (requestedLayout !== \"combined\") return { layout: requestedLayout, fallback: null };\n\n const atlasOnlyLayers = (appearancePlan?.layers ?? []).flatMap((layer, layerIndex) =>\n {\n const groupID = String(layer?.owner?.groupID ?? \"\").trim().toLowerCase();\n const part = layer?.contributor;\n const partSourceRecordID = part?.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim().toLowerCase()\n : \"\";\n const configured = /^res:\\//iu.test(String(part?.configurationPath ?? \"\"))\n && /^res:\\//iu.test(String(part?.geometryPath ?? \"\"));\n if (!FEMALE_ATLAS_BODY_GROUPS.has(groupID)\n || !partSourceRecordID.startsWith(\"female/\")\n || partSourceRecordID.startsWith(\"female/dependants/\")\n || configured)\n {\n return [];\n }\n return [ { layerIndex, groupID, partSourceRecordID } ];\n });\n if (!atlasOnlyLayers.length) return { layout: requestedLayout, fallback: null };\n\n const fitTargets = (appearancePlan?.morphTargets ?? []).flatMap(value =>\n {\n const modifierPath = String(value?.modifierPath ?? \"\").trim().toLowerCase();\n const ownerGroupID = String(value?.owner?.groupID ?? \"\").trim().toLowerCase();\n if (!modifierPath.startsWith(\"utilityshapes/\")\n || !FEMALE_CLOTHING_FIT_GROUPS.has(ownerGroupID))\n {\n return [];\n }\n return [ {\n modifierPath,\n targetName: String(value?.targetName ?? \"\").trim() || null,\n ownerGroupID\n } ];\n });\n if (!fitTargets.length) return { layout: requestedLayout, fallback: null };\n return {\n layout: \"split-lod0\",\n fallback: {\n status: \"derived\",\n rule: \"atlas-only-clothing-fit-carrier-compatibility-v1\",\n correctness: \"source-shaped-live-verified\",\n atlasOnlyLayers,\n fitTargets\n }\n };\n}\n\n/** Retains exact nude-torso support carriers proven by hydrated dependencies. */\nexport function ResolveFoundationGeometry(baseGeometry, sex, library)\n{\n const result = baseGeometry.map(value => [\n value[0],\n value[1],\n value[2] ? { ...value[2] } : undefined\n ]);\n if (!library || typeof library.Get !== \"function\") return result;\n\n const torso = library.Get(\"characterPartSources\", `${sex}/topinner/torso_nude`);\n const metadata = ResolveEffectiveMetadata(torso);\n const supports = [];\n for (const relation of metadata?.dependencies ?? [])\n {\n const authored = StripDependencyWeight(relation?.authoredValue).toLowerCase();\n const match = /^dependants\\/(sleevesupper|sleeveslower)\\/[^/]+$/u.exec(authored);\n const target = relation?.partSource;\n if (!match || !target) continue;\n if (String(target.recordID ?? \"\").toLowerCase() !== `${sex}/${authored}`) continue;\n\n const versions = (target.versions ?? []).filter(Boolean);\n if (versions.length !== 1) continue;\n const version = versions[0];\n if (version.configurationCandidates?.length !== 1 || version.geometryCandidates?.length !== 1)\n {\n continue;\n }\n supports.push([\n match[1] === \"sleevesupper\" ? \"sleevesUpper\" : \"sleevesLower\",\n version.geometryCandidates[0],\n {\n status: \"derived\",\n rule: \"exact-foundation-torso-support-dependency-v1\",\n torsoPartSourceRecordID: torso.recordID,\n metadataRecordID: metadata.recordID,\n authoredDependency: relation.authoredValue,\n supportPartSourceRecordID: target.recordID,\n configurationPath: version.configurationCandidates[0]\n }\n ]);\n }\n\n const uniqueRoles = new Set(supports.map(value => value[0]));\n if (uniqueRoles.size !== supports.length) return result;\n const existingRoles = new Set(result.map(value => value[0]));\n const additions = supports\n .filter(value => !existingRoles.has(value[0]))\n .sort((left, right) => FoundationSupportOrder(left[0]) - FoundationSupportOrder(right[0]));\n if (!additions.length) return result;\n\n const torsoIndex = result.findIndex(value => value[0] === \"torso\");\n result.splice(torsoIndex < 0 ? result.length : torsoIndex + 1, 0, ...additions);\n return result;\n}\n\nfunction FoundationSupportOrder(role)\n{\n return role === \"sleevesUpper\" ? 0 : 1;\n}\n\n/** Resolves one exact authored brow carrier through the selected head metadata. */\nexport function ResolveSelectedBrowSupport(sex, archetypeSourceRecordID, library)\n{\n if (!library || typeof library.GetDocument !== \"function\") return null;\n const archetypeID = String(archetypeSourceRecordID ?? \"\").trim().toLowerCase();\n const prefix = `${sex}/archetypes/`;\n if (!archetypeID.startsWith(prefix)) return null;\n const relativeArchetype = archetypeID.slice(`${sex}/`.length);\n const heads = (library.GetDocument(\"characterPartSources\") ?? []).filter(source =>\n {\n if (!String(source?.recordID ?? \"\").toLowerCase().startsWith(`${sex}/head/`)) return false;\n const metadata = ResolveEffectiveMetadata(source);\n return metadata?.dependentModifiers?.some(value =>\n StripDependencyWeight(value).toLowerCase() === relativeArchetype);\n });\n if (heads.length !== 1) return null;\n\n const metadata = ResolveEffectiveMetadata(heads[0]);\n const matches = (metadata?.dependencies ?? []).filter(relation =>\n {\n const authored = StripDependencyWeight(relation?.authoredValue).toLowerCase();\n return authored.startsWith(\"accessories/browbase/\")\n && relation?.partSource\n && String(relation.partSource.recordID ?? \"\").toLowerCase() === `${sex}/${authored}`;\n });\n if (matches.length !== 1) return null;\n\n const target = matches[0].partSource;\n const versions = (target?.versions ?? []).filter(Boolean);\n if (versions.length !== 1) return null;\n const version = versions[0];\n if (version.configurationCandidates?.length !== 1 || version.geometryCandidates?.length !== 1)\n {\n return null;\n }\n return {\n partSourceRecordID: target.recordID,\n configurationPath: version.configurationCandidates[0],\n geometryPath: version.geometryCandidates[0],\n evidence: {\n status: \"derived\",\n rule: \"exact-head-archetype-brow-support-dependency-v1\",\n headPartSourceRecordID: heads[0].recordID,\n metadataRecordID: metadata.recordID,\n authoredDependency: matches[0].authoredValue,\n archetypeSourceRecordID\n }\n };\n}\n\n/** Resolves one selected skintone through retained base, PRS, and archetype records. */\nexport function ResolveSelectedFoundationSkin(paperdoll, sex, library, textureQuality = \"4k\")\n{\n if (!library || typeof library.Get !== \"function\" || typeof library.GetDocument !== \"function\")\n {\n return null;\n }\n const selections = (paperdoll?.colorSelections ?? []).filter(value =>\n value?.colorID?.colorKey === \"skintone\"\n && typeof value?.colorNameA?.colorName === \"string\");\n if (selections.length !== 1) return null;\n\n const colorName = selections[0].colorNameA.colorName.trim().toLowerCase();\n const root = `res:/graphics/character/${sex}/paperdoll/skintone/basic/`;\n const definitions = library.GetDocument(\"characterDefinitions\") ?? [];\n const prsRoot = \"res:/graphics/character/dnafiles/characterselect/\";\n const prsSuffix = `${sex}clothing.prs`;\n const familyCandidates = definitions.flatMap(value =>\n {\n const recordID = String(value?.recordID ?? \"\").toLowerCase();\n if (!recordID.startsWith(prsRoot) || !recordID.endsWith(prsSuffix)\n || !Array.isArray(value?.values) || value.values[0] !== sex)\n {\n return [];\n }\n const family = recordID.slice(prsRoot.length, -prsSuffix.length);\n return family && (colorName === family || colorName.startsWith(`${family}_`))\n ? [ { family, definition: value } ]\n : [];\n }).sort((left, right) => right.family.length - left.family.length);\n const longestFamilyLength = familyCandidates[0]?.family.length ?? 0;\n const exactFamilies = familyCandidates.filter(value => value.family.length === longestFamilyLength);\n if (exactFamilies.length !== 1) return null;\n\n const { family, definition } = exactFamilies[0];\n const basePath = `${root}${family}.base`;\n const baseDefinition = library.Get(\"characterDefinitions\", basePath);\n const materialDefinitionPath = `${root}${colorName}.color`;\n const materialDefinition = library.Get(\"characterDefinitions\", materialDefinitionPath);\n const colors = materialDefinition?.values?.colors;\n const hasSkinColorization = Array.isArray(colors)\n && colors.length === 3\n && colors.every(color => Array.isArray(color) && color.length === 4);\n const sources = definition.values.slice(1)\n .filter(value => value?.category === \"bodyshapes\" && typeof value?.path === \"string\")\n .map(value => value.path.replace(/^bodyshapes\\//iu, \"\").toLowerCase())\n .map(value => ({\n identity: `${sex}/archetypes/${value}`,\n source: library.Get(\"characterPartSources\", `${sex}/archetypes/${value}`)\n }))\n .filter(value => value.source);\n if (sources.length !== 1) return null;\n\n const texturePaths = sources[0].source.versions\n ?.flatMap(value => value?.textureCandidates ?? []) ?? [];\n const archetypeToken = sources[0].identity.split(\"/\").at(-1)?.replace(/shape$/iu, \"\");\n if (!archetypeToken) return null;\n const prefix = `${archetypeToken}_${sex}_head_`;\n const headTextures = {\n DiffuseMap: SelectFoundationTexturePaths(texturePaths, `${prefix}d`, textureQuality),\n NormalMap: SelectFoundationTexturePaths(texturePaths, `${prefix}n`, textureQuality),\n SpecularMap: SelectFoundationTexturePaths(texturePaths, `${prefix}s`, textureQuality)\n };\n if (Object.values(headTextures).some(value => !value)) return null;\n\n const bodyPrefix = `${archetypeToken}_${sex}_body_`;\n const bodyDiffusePath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}d`, textureQuality);\n const bodySpecularPath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}s`, textureQuality);\n const bodyNormalPath = SelectFoundationTexturePaths(texturePaths, `${bodyPrefix}n`, textureQuality);\n const skinColorizationPaths = hasSkinColorization ? {\n headDetailPath: SelectFoundationTexture(library, `${root}colorize_head_l.png`, textureQuality),\n headZonePath: SelectFoundationTexture(library, `${root}colorize_head_z.png`, textureQuality),\n bodyDetailPath: SelectFoundationTexture(library, `${root}colorize_body_l.png`, textureQuality),\n bodyZonePath: SelectFoundationTexture(library, `${root}colorize_body_z.png`, textureQuality)\n } : null;\n const skinColorization = skinColorizationPaths\n && Object.values(skinColorizationPaths).every(Boolean)\n ? { materialDefinitionPath, colors: colors.map(color => [ ...color ]), ...skinColorizationPaths }\n : null;\n\n return {\n headTextures,\n ...(skinColorization ? { skinColorization } : {}),\n ...(bodyDiffusePath ? {\n bodyTextures: {\n DiffuseMap: bodyDiffusePath,\n ...(bodyNormalPath ? { NormalMap: bodyNormalPath } : {}),\n ...(bodySpecularPath ? { SpecularMap: bodySpecularPath } : {})\n }\n } : {}),\n evidence: {\n status: \"derived\",\n rule: \"exact-skintone-prs-archetype-foundation-v1\",\n correctness: \"retained-source-join\",\n textureQuality: CjsCharacterTextureQuality.normalize(textureQuality),\n colorName,\n ...(skinColorization ? { materialDefinitionPath } : {}),\n ...(Array.isArray(baseDefinition?.values) && baseDefinition.values.length === 4 ? {\n basePath,\n baseColor: [ ...baseDefinition.values ]\n } : {}),\n definitionPath: String(definition.recordID),\n archetypeSourceRecordID: sources[0].identity,\n ...(bodyDiffusePath ? { bodyDiffusePath } : {}),\n ...(bodySpecularPath ? { bodySpecularPath } : {\n bodySpecularStatus: \"unresolved\"\n }),\n ...(bodyNormalPath ? {\n bodyNormalPath,\n normalStatus: \"retained\",\n normalRule: \"exact-foundation-diffuse-token-normal-match-v1\"\n } : {\n normalStatus: \"unresolved\"\n })\n }\n };\n}\n\nfunction CloneColorization(value)\n{\n return { ...value, colors: value.colors.map(color => [ ...color ]) };\n}\n\nfunction ResolveEffectiveMetadata(source)\n{\n const versions = (source?.versions ?? []).filter(Boolean);\n return versions.length === 1 && versions[0].metadata ? versions[0].metadata : source?.metadata ?? null;\n}\n\nfunction StripDependencyWeight(value)\n{\n return String(value ?? \"\").replace(\n /###[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u,\n \"\"\n );\n}\n\nfunction ResolveFoundationTextureBindings(bindings, library, textureQuality)\n{\n return Object.fromEntries(Object.entries(bindings ?? {}).flatMap(([ name, path ]) =>\n {\n const selected = SelectFoundationTexture(library, path, textureQuality);\n return selected ? [ [ name, selected ] ] : [];\n }));\n}\n\nfunction SelectFoundationTexture(library, referencePath, textureQuality)\n{\n if (!referencePath) return null;\n const metadata = library?.GetDocument?.(\"characterTextureMetadata\") ?? [];\n const family = CjsCharacterTextureQuality.getFamily(referencePath);\n const matches = metadata.map(value => value?.sourcePath)\n .filter(value => typeof value === \"string\"\n && CjsCharacterTextureQuality.getFamily(value) === family);\n return matches.length\n ? CjsCharacterTextureQuality.select(matches, textureQuality)\n : CjsCharacterTextureQuality.isAllowed(referencePath, textureQuality)\n ? referencePath\n : null;\n}\n\nfunction SelectFoundationTexturePaths(paths, fileFamily, textureQuality)\n{\n const normalizedFamily = String(fileFamily ?? \"\").toLowerCase();\n const matches = paths.filter(value => CjsCharacterTextureQuality.getFamily(value)\n .split(\"/\").at(-1) === normalizedFamily);\n return CjsCharacterTextureQuality.select(matches, textureQuality);\n}\n\nfunction ResolvePaperdollSex(paperdoll)\n{\n const genders = new Set();\n for (const modifier of paperdoll.modifiers ?? [])\n {\n const value = modifier?.paperdollResourceID?.resGender;\n if (value === 0 || value === 1) genders.add(value);\n }\n if (genders.size !== 1) return null;\n return genders.has(0) ? \"female\" : \"male\";\n}\n\nexport default CjsCharacterFoundationConstruction;\n"],"names":["FEMALE_BODY_FOUNDATION","role","index","configurationPath","geometryPath","FEMALE_SPLIT_HANDS_PATH","FEMALE_ATLAS_BODY_GROUPS","Set","FEMALE_CLOTHING_FIT_GROUPS","FEMALE_SPLIT_LOD0_GEOMETRY","FOUNDATIONS","female","resourceGender","skeletonPath","configuredFoundations","skinTextures","DiffuseMap","NormalMap","SpecularMap","skinEvidence","status","rule","correctness","geometry","male","CjsCharacterFoundationConstruction","_femaleFoundationLayout","_textureQuality","constructor","femaleFoundationLayout","textureQuality","includes","TypeError","CjsCharacterTextureQuality","normalize","Resolve","paperdoll","appearancePlan","library","sex","ResolvePaperdollSex","definition","Error","femaleLayout","ResolveFemaleFoundationLayout","layout","fallback","baseGeometry","ResolveFoundationGeometry","operations","operation","resourcePath","length","evidence","push","selectedSkin","ResolveSelectedFoundationSkin","bodyRoles","map","filter","bodyTextures","roles","skinColorization","CloneColorization","configured","supportTextures","ResolveFoundationTextureBindings","resolved","supportEvidence","headTextures","browSupport","ResolveSelectedBrowSupport","archetypeSourceRecordID","sourceRule","requestedLayout","layoutFallback","paperdollRecordID","String","recordID","sourceBuild","lod","atlasOnlyLayers","layers","flatMap","layer","layerIndex","groupID","owner","trim","toLowerCase","part","contributor","partSourceRecordID","origin","document","test","has","startsWith","fitTargets","morphTargets","value","modifierPath","ownerGroupID","targetName","result","undefined","Get","torso","metadata","ResolveEffectiveMetadata","supports","relation","dependencies","authored","StripDependencyWeight","authoredValue","match","exec","target","partSource","versions","Boolean","version","configurationCandidates","geometryCandidates","torsoPartSourceRecordID","metadataRecordID","authoredDependency","supportPartSourceRecordID","uniqueRoles","size","existingRoles","additions","sort","left","right","FoundationSupportOrder","torsoIndex","findIndex","splice","GetDocument","archetypeID","prefix","relativeArchetype","slice","heads","source","dependentModifiers","some","matches","headPartSourceRecordID","selections","colorSelections","colorID","colorKey","colorNameA","colorName","root","definitions","prsRoot","prsSuffix","familyCandidates","endsWith","Array","isArray","values","family","longestFamilyLength","exactFamilies","basePath","baseDefinition","materialDefinitionPath","materialDefinition","colors","hasSkinColorization","every","color","sources","category","path","replace","identity","texturePaths","textureCandidates","archetypeToken","split","at","SelectFoundationTexturePaths","Object","bodyPrefix","bodyDiffusePath","bodySpecularPath","bodyNormalPath","skinColorizationPaths","headDetailPath","SelectFoundationTexture","headZonePath","bodyDetailPath","bodyZonePath","baseColor","definitionPath","bodySpecularStatus","normalStatus","normalRule","bindings","fromEntries","entries","name","selected","referencePath","getFamily","sourcePath","select","isAllowed","paths","fileFamily","normalizedFamily","genders","modifier","modifiers","paperdollResourceID","resGender","add"],"mappings":"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"}
|
|
@@ -23,6 +23,11 @@ class CjsCharacterTexturePolicy {
|
|
|
23
23
|
static resolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID) {
|
|
24
24
|
return ResolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID);
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Configures modifier ordering, texture quality, garment groups, and texture
|
|
29
|
+
* target resolution.
|
|
30
|
+
*/
|
|
26
31
|
constructor({
|
|
27
32
|
modifierOrder = null,
|
|
28
33
|
textureQuality = "4k",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsCharacterTexturePolicy.js","sources":["../../../src/character/CjsCharacterTexturePolicy.js"],"sourcesContent":["import { CjsCharacterTextureQuality } from \"./CjsCharacterTextureQuality.js\";\n\nconst DEFAULT_CONFIGURED_GARMENT_GROUPS = new Set([\n \"bottomouter\",\n \"feet\",\n \"outer\",\n \"topouter\"\n]);\n\n/**\n * Labels retained character texture candidates without fetching or creating a\n * renderer resource. Filename interpretation remains explicit policy, never\n * authored library fact.\n */\nexport class CjsCharacterTexturePolicy\n{\n _configuredAccessoryGroup;\n\n _configuredGarmentGroups;\n\n _modifierOrder;\n\n _targetHintResolver;\n\n _textureQuality;\n\n /** Resolves one retained sex-specific definition for a prepared part type. */\n static resolveTypeDefinition(library, partType, sex)\n {\n return ResolveTypeDefinition(library, partType, sex);\n }\n\n /** Resolves the labelled material candidate used by this selection policy. */\n static resolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID)\n {\n return ResolveTypeMaterialDefinition(\n library,\n typeDefinition,\n colorVariant,\n sex,\n groupID\n );\n }\n\n constructor({\n modifierOrder = null,\n textureQuality = \"4k\",\n configuredGarmentGroups = DEFAULT_CONFIGURED_GARMENT_GROUPS,\n configuredAccessoryGroup = \"accessories\",\n targetHintResolver = null\n } = {})\n {\n if (modifierOrder !== null\n && (typeof modifierOrder?.sort !== \"function\"\n || typeof modifierOrder?.resolveCategories !== \"function\"))\n {\n throw new TypeError(\"Character texture policy modifierOrder must expose sort and resolveCategories\");\n }\n if (!configuredGarmentGroups || typeof configuredGarmentGroups[Symbol.iterator] !== \"function\")\n {\n throw new TypeError(\"Character texture policy configuredGarmentGroups must be iterable\");\n }\n if (targetHintResolver !== null && typeof targetHintResolver !== \"function\")\n {\n throw new TypeError(\"Character texture policy targetHintResolver must be a function or null\");\n }\n\n this._modifierOrder = modifierOrder;\n this._textureQuality = CjsCharacterTextureQuality.normalize(textureQuality);\n this._configuredGarmentGroups = new Set(\n [ ...configuredGarmentGroups ].map(value => String(value ?? \"\").trim().toLowerCase())\n );\n this._configuredAccessoryGroup = String(configuredAccessoryGroup ?? \"\")\n .trim()\n .toLowerCase();\n this._targetHintResolver = targetHintResolver ?? ((groupID, partPath) =>\n ResolveTextureTargetHint(\n groupID,\n partPath,\n this._configuredGarmentGroups,\n this._configuredAccessoryGroup\n ));\n }\n\n /** Resolves every plan layer without suppressing unrecognized candidates. */\n Resolve(library, paperdoll, appearancePlan)\n {\n RequireLibrary(library);\n\n if (!paperdoll || typeof paperdoll !== \"object\" || !Array.isArray(paperdoll.modifiers))\n {\n throw new TypeError(\"Character texture policy requires a hydrated paper doll\");\n }\n if (!appearancePlan || !Array.isArray(appearancePlan.parts)\n || !Array.isArray(appearancePlan.layers))\n {\n throw new TypeError(\"Character texture policy requires an appearance plan\");\n }\n\n const options = {\n textureQuality: this._textureQuality,\n targetHintResolver: this._targetHintResolver\n };\n const contributions = appearancePlan.layers.map((layer, layerIndex) => ResolveLayer(\n library,\n paperdoll,\n appearancePlan,\n layer,\n layerIndex,\n options\n ));\n\n return this._modifierOrder\n ? this._modifierOrder.sort(contributions, {\n categories: this._modifierOrder.resolveCategories(),\n getCategory: value => SplitGroup(value.groupID)[0],\n getGroup: value => SplitGroup(value.groupID)[1]\n })\n : contributions;\n }\n}\n\nfunction ResolveLayer(library, paperdoll, plan, layer, layerIndex, options)\n{\n const part = layer?.contributor;\n const partIndex = plan.parts.indexOf(part);\n const groupID = String(layer?.owner?.groupID ?? \"\").trim();\n const modifierIndex = ParseModifierIndex(layer?.origin?.jsonPointer);\n const modifier = modifierIndex === null ? null : paperdoll.modifiers[modifierIndex];\n const partSource = library.Get(\"characterPartSources\", part?.origin?.recordID);\n const versionIndex = ParseVersionIndex(part?.origin?.jsonPointer);\n const version = versionIndex === null ? null : partSource?.versions?.[versionIndex];\n const diagnostics = [];\n\n if (partIndex === -1)\n {\n throw new Error(`Character texture layer ${layerIndex} does not reference a plan-owned part`);\n }\n if (!groupID)\n {\n throw new Error(`Character texture layer ${layerIndex} has no selection group`);\n }\n if (!modifier)\n {\n diagnostics.push(Diagnostic(\n \"MODIFIER_PROVENANCE_UNRESOLVED\",\n \"The plan layer does not point to one exact paper-doll modifier.\"\n ));\n }\n if (!partSource || !version)\n {\n diagnostics.push(Diagnostic(\n \"PART_VERSION_PROVENANCE_UNRESOLVED\",\n \"The plan contributor does not point to one exact part-source version.\"\n ));\n }\n\n const resource = modifier?.paperdollResourceID ?? null;\n const partType = resource?.partType ?? null;\n const sex = resource?.resGender === 0\n ? \"female\"\n : resource?.resGender === 1\n ? \"male\"\n : null;\n const typeDefinition = ResolveTypeDefinition(library, partType, sex);\n if (!typeDefinition.record)\n {\n diagnostics.push(Diagnostic(\n \"TYPE_DEFINITION_UNRESOLVED\",\n \"No unique retained type definition matches the selected part type and sex.\"\n ));\n }\n\n const typeMaterialResolution = ResolveTypeMaterialDefinition(\n library,\n typeDefinition.record,\n partType?.colorVariant,\n sex,\n groupID\n );\n const typeMaterialDefinition = typeMaterialResolution?.record ?? null;\n const colorSelection = ResolveColorSelection(plan, groupID);\n const colorMaterialResolution = typeMaterialDefinition\n ? null\n : ResolveColorSelectionDefinition(library, colorSelection, sex, partSource);\n const dependencyMaterialResolution = typeMaterialDefinition || colorMaterialResolution\n ? null\n : ResolveTypedDependencyDefaultMaterial(library, part, partSource);\n const materialDefinition = typeMaterialDefinition\n ?? colorMaterialResolution?.record\n ?? dependencyMaterialResolution?.record;\n const unselectedDefaultMaterial = !materialDefinition\n && !colorSelection\n && !String(partType?.colorVariant ?? \"\").trim()\n ? ResolveMaterialDefinition(library, typeDefinition.record, \"default\")\n : null;\n\n if (partType?.colorVariant && !typeMaterialDefinition)\n {\n diagnostics.push(Diagnostic(\n \"MATERIAL_DEFINITION_UNRESOLVED\",\n `No retained sibling .color definition matches ${JSON.stringify(partType.colorVariant)}.`\n ));\n }\n if (unselectedDefaultMaterial)\n {\n diagnostics.push(Diagnostic(\n \"DEFAULT_MATERIAL_POLICY_UNRESOLVED\",\n \"An exact sibling default.color exists, but no authored selection proves that it applies.\"\n ));\n }\n\n const targetHint = options.targetHintResolver(groupID, partSource?.partPath);\n const allowColorizeShorthand = Boolean(materialDefinition) && Boolean(targetHint);\n const classified = ClassifyTextures(\n ResolveTexturePaths(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n options.textureQuality\n ),\n targetHint,\n { allowColorizeShorthand, textureQuality: options.textureQuality }\n );\n const directDiffuseUnderlayPath = ResolveDirectDiffuseUnderlayPath(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n options.textureQuality\n );\n const weight = layer?.weight === null || layer?.weight === undefined ? 1 : Number(layer.weight);\n if (!Number.isFinite(weight))\n {\n throw new TypeError(`Character texture layer ${layerIndex} has a non-finite weight`);\n }\n if (classified.every(value => !value.recognized) && classified.length)\n {\n diagnostics.push(Diagnostic(\n \"TEXTURE_FILENAME_POLICY_UNRESOLVED\",\n \"No texture candidate matches the labelled character filename policy.\"\n ));\n }\n\n return {\n layerIndex,\n partIndex,\n weight,\n ownerSelectionIndex: Array.isArray(plan.selections)\n ? plan.selections.indexOf(layer.owner)\n : -1,\n groupID,\n source: {\n partSourceRecordID: partSource?.recordID ?? null,\n partPath: partSource?.partPath ?? null,\n versionIndex,\n typeDefinitionPath: typeDefinition.record?.sourcePath ?? null,\n materialDefinitionPath: materialDefinition?.sourcePath ?? null,\n ...(unselectedDefaultMaterial ? {\n materialCandidatePaths: [ unselectedDefaultMaterial.sourcePath ]\n } : {}),\n occludesModifiers: Array.isArray(version?.metadata?.occludesModifiers)\n ? [ ...version.metadata.occludesModifiers ]\n : [],\n dependencies: NormalizeRetainedDependencies(version?.metadata),\n ...(Array.isArray(version?.metadata?.occlusions) && version.metadata.occlusions.length\n ? { occlusions: version.metadata.occlusions.map(value => ({\n authoredValue: value?.authoredValue ?? null,\n modifierKey: value?.modifierLocation?.modifierKey ?? null\n })) }\n : {}),\n ...(directDiffuseUnderlayPath ? { directDiffuseUnderlayPath } : {})\n },\n materialValues: materialDefinition?.values ?? null,\n colorSelection: colorSelection ? { ...colorSelection } : null,\n textureCandidates: classified,\n selectedTextures: classified\n .filter(value => value.selected)\n .map(value => ({\n path: value.path,\n role: value.role,\n target: value.target,\n quality: value.quality\n })),\n diagnostics,\n evidence: {\n status: \"policy\",\n rule: \"retained-character-texture-filename-v2\",\n textureQuality: options.textureQuality,\n definitionRule: \"exact-retained-definition-v1\",\n materialRule: typeMaterialResolution\n ? typeMaterialResolution.rule\n : colorMaterialResolution\n ? colorMaterialResolution.rule\n : dependencyMaterialResolution\n ? dependencyMaterialResolution.rule\n : \"unresolved\",\n ...(unselectedDefaultMaterial ? {\n materialCandidateRule: \"unselected-exact-sibling-default-v1\"\n } : {})\n }\n };\n}\n\nfunction NormalizeRetainedDependencies(metadata)\n{\n const authored = Array.isArray(metadata?.dependentModifiers)\n ? metadata.dependentModifiers\n : [];\n const relations = Array.isArray(metadata?.dependencies)\n ? metadata.dependencies\n : [];\n return authored.map((authoredValue, index) =>\n {\n const relation = relations[index];\n const exact = relation?.authoredValue === authoredValue;\n const modifierPath = exact\n ? String(relation?.modifierPath ?? \"\")\n .replaceAll(\"\\\\\", \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\")\n .toLowerCase()\n : \"\";\n const partSourceRecordID = exact\n ? String(relation?.partSource?.recordID ?? \"\").trim()\n : \"\";\n return {\n authoredValue,\n modifierPath: modifierPath || null,\n partSourceRecordID: partSourceRecordID || null\n };\n });\n}\n\nfunction NormalizeModifierIdentity(value)\n{\n const identity = String(value ?? \"\").trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\n // A retained female Tanktop source uses the legacy category name while\n // active selection records use the current topinner location.\n return identity === \"topunderwear\" ? \"topinner\" : identity;\n}\n\nfunction ResolveTypeDefinition(library, partType, sex)\n{\n if (!partType || !sex) return { record: null, candidates: [] };\n const paths = [ ...(partType.sourcePaths ?? []), partType.sourcePath ]\n .filter((value, index, all) => value && all.indexOf(value) === index);\n const candidates = paths\n .filter(path => path.toLowerCase().includes(`/${sex}/`))\n .map(path => library.Get(\"characterDefinitions\", path))\n .filter(record => MatchesTypeDefinition(record, partType));\n return { record: candidates.length === 1 ? candidates[0] : null, candidates };\n}\n\nfunction MatchesTypeDefinition(record, partType)\n{\n const values = record?.values;\n if (!Array.isArray(values) || (values.length !== 3 && values.length !== 4)) return false;\n return NormalizePartPath(values[0]) === NormalizePartPath(partType.partPath)\n && NormalizeOptional(values[1]) === NormalizeOptional(partType.resourceVersion)\n && NormalizeOptional(values[2]) === NormalizeOptional(partType.colorVariant);\n}\n\nfunction ResolveMaterialDefinition(library, typeDefinition, colorVariant)\n{\n const variant = String(colorVariant ?? \"\").trim();\n const typePath = String(typeDefinition?.sourcePath ?? \"\");\n const lowerTypePath = typePath.toLowerCase();\n const marker = Math.max(lowerTypePath.lastIndexOf(\"/types/\"), lowerTypePath.lastIndexOf(\"/type/\"));\n if (!variant || marker === -1) return null;\n\n const path = `${typePath.slice(0, marker)}/${variant.toLowerCase()}.color`;\n const record = library.Get(\"characterDefinitions\", path);\n return record?.extension === \".color\" ? record : null;\n}\n\nfunction ResolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID)\n{\n const sibling = ResolveMaterialDefinition(library, typeDefinition, colorVariant);\n if (sibling)\n {\n return {\n record: sibling,\n path: sibling.sourcePath ?? null,\n rule: \"exact-sibling-color-definition-v1\"\n };\n }\n\n const variant = NormalizeModifierIdentity(colorVariant);\n const colorKey = NormalizeModifierIdentity(groupID);\n if (!sex || !variant || !colorKey) return null;\n\n const path = `res:/graphics/character/${sex}/paperdoll/${colorKey}`\n + `/colors/${variant}.color`;\n const record = library.Get(\"characterDefinitions\", path);\n return record?.extension === \".color\"\n ? { record, path, rule: \"exact-type-group-color-definition-v1\" }\n : null;\n}\n\nfunction ResolveColorSelection(plan, groupID)\n{\n const matches = (plan?.colorSelections ?? []).filter(value =>\n NormalizeModifierIdentity(value?.colorKey) === NormalizeModifierIdentity(groupID));\n return matches.length === 1 ? matches[0] : null;\n}\n\nfunction ResolveColorSelectionDefinition(library, selection, sex, partSource)\n{\n const colorKey = NormalizeModifierIdentity(selection?.colorKey);\n const colorName = NormalizeModifierIdentity(selection?.colorNameA);\n if (!sex || !colorKey || !colorName) return null;\n\n const sourcePath = String(partSource?.sourcePath ?? \"\").replace(/\\/+$/u, \"\");\n const candidates = [\n sourcePath && {\n path: `${sourcePath}/${colorName}.color`,\n rule: \"exact-part-source-color-selection-v1\"\n },\n {\n path: `res:/graphics/character/${sex}/paperdoll/${colorKey}`\n + `/colors/${colorName}.color`,\n rule: \"exact-group-color-selection-v1\"\n }\n ].filter(Boolean);\n\n for (const candidate of candidates)\n {\n const record = library.Get(\"characterDefinitions\", candidate.path);\n if (record?.extension === \".color\") return { ...candidate, record };\n }\n return null;\n}\n\nfunction ResolveTypedDependencyDefaultMaterial(library, part, partSource)\n{\n const rule = String(part?.origin?.rule ?? \"\");\n if (!/^unique-typed-dependency-version(?:-model-bundle)?$/u.test(rule)) return null;\n\n const partPath = NormalizeSafePartPath(partSource?.partPath);\n if (!partPath) return null;\n const suffix = `/${partPath}`;\n const roots = [ ...new Set([\n partSource?.sourcePath,\n ...(partSource?.sourcePaths ?? [])\n ].map(value => String(value ?? \"\").trim().replaceAll(\"\\\\\", \"/\").toLowerCase())\n .filter(value => /^res:\\/graphics\\/character\\/(?:female|male)\\/paperdoll\\//u.test(value)\n && value.endsWith(suffix)\n && !value.split(\"/\").some(segment => segment === \".\" || segment === \"..\"))) ];\n const records = [ ...new Set(roots\n .map(root => library.Get(\"characterDefinitions\", `${root}/default.color`))\n .filter(record => record?.extension === \".color\")) ];\n if (records.length !== 1) return null;\n return {\n record: records[0],\n path: records[0].sourcePath ?? null,\n rule: \"exact-typed-dependency-source-default-v1\"\n };\n}\n\nfunction ResolveDirectDiffuseUnderlayPath(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n textureQuality\n)\n{\n const base = partSource?.versions?.find(value => value?.resourceVersion == null);\n if (!base || base === version || !Array.isArray(base.textureCandidates)) return null;\n const exactPaths = Array.isArray(part?.texturePaths) && part.texturePaths.length\n ? part.texturePaths\n : version?.textureCandidates ?? [];\n const options = { allowColorizeShorthand, textureQuality };\n const isDirectHairDiffuse = value => value?.recognized\n && value.target === \"hair\"\n && [ \"diffuse-source\", \"diffuse-overlay\" ].includes(value.role);\n const exact = ClassifyTextures(exactPaths, targetHint, options)\n .filter(value => value.selected && isDirectHairDiffuse(value));\n const inherited = ClassifyTextures(base.textureCandidates, targetHint, options)\n .filter(value => value.selected && isDirectHairDiffuse(value));\n return exact.length === 1 && inherited.length === 1 && exact[0].path !== inherited[0].path\n ? inherited[0].path\n : null;\n}\n\nfunction ResolveTexturePaths(\n part,\n partSource,\n version,\n targetHint = null,\n allowColorizeShorthand = false,\n textureQuality = \"4k\"\n)\n{\n const exact = Array.isArray(part?.texturePaths) && part.texturePaths.length\n ? part.texturePaths\n : version?.textureCandidates ?? [];\n const base = partSource?.versions?.find(value => value?.resourceVersion == null);\n if (!base || base === version || !Array.isArray(base.textureCandidates)) return [ ...exact ];\n\n const classificationOptions = { allowColorizeShorthand, textureQuality };\n const exactClassified = ClassifyTextures(exact, targetHint, classificationOptions);\n const eligibleExact = exactClassified\n .filter(value => CjsCharacterTextureQuality.isAllowed(value.path, textureQuality)\n || (value.selected && value.role === \"cut-mask\" && value.target === \"body\"))\n .map(value => value.path);\n const overridden = new Set(eligibleExact.map(TextureFamily));\n const overriddenChannels = new Set(ClassifyTextures(\n eligibleExact,\n targetHint,\n classificationOptions\n )\n .filter(value => value.recognized && value.role && value.target)\n .map(value => `${value.target}\\0${TextureSemanticChannel(value.role)}`));\n const baseChannels = new Map(ClassifyTextures(\n base.textureCandidates,\n targetHint,\n classificationOptions\n ).map(value => [ value.path, value ]));\n return [\n ...exact,\n ...base.textureCandidates.filter(path =>\n {\n if (overridden.has(TextureFamily(path))) return false;\n const value = baseChannels.get(path);\n return !value.recognized\n || !value.role\n || !value.target\n || !overriddenChannels.has(\n `${value.target}\\0${TextureSemanticChannel(value.role)}`\n );\n })\n ];\n}\n\nfunction TextureSemanticChannel(role)\n{\n if (/^normal-/u.test(role)) return \"normal\";\n if (/^specular-/u.test(role)) return \"specular\";\n if (/^diffuse-/u.test(role)) return \"diffuse\";\n return role;\n}\n\nfunction ClassifyTextures(paths, targetHint = null, {\n allowColorizeShorthand = false,\n textureQuality = \"4k\"\n} = {})\n{\n if (!Array.isArray(paths)) throw new TypeError(\"Character texture candidates must be an array\");\n\n const targetHints = new Set();\n for (const value of paths)\n {\n const match = FileStem(value).match(/(?:^|_)(body|head|hair|acc)(?:_|$)/u);\n if (match) targetHints.add(match[1]);\n }\n\n const inferredTarget = targetHints.size === 1 ? [ ...targetHints ][0] : targetHint;\n const result = paths.map(path => ClassifyTexture(path, inferredTarget, allowColorizeShorthand));\n const groups = new Map();\n for (let index = 0; index < result.length; index++)\n {\n const value = result[index];\n if (!value.recognized) continue;\n const key = `${value.role}\\0${value.target}\\0${value.family}`;\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key).push(index);\n }\n\n for (const indices of groups.values())\n {\n const values = indices.map(index => result[index]);\n const selectedPath = values[0]?.role === \"cut-mask\" && values[0]?.target === \"body\"\n ? CjsCharacterTextureQuality.selectCoverage(\n values.map(value => value.path),\n textureQuality\n )\n : CjsCharacterTextureQuality.select(values.map(value => value.path), textureQuality);\n const selectedIndex = indices.find(index => result[index].path === selectedPath);\n if (selectedIndex !== undefined) result[selectedIndex].selected = true;\n }\n return result;\n}\n\nfunction ResolveTextureTargetHint(groupID, partPath, configuredGarmentGroups, configuredAccessoryGroup)\n{\n const contributorPath = NormalizeSafePartPath(partPath);\n if (contributorPath?.startsWith(\"accessories/\")) return \"acc\";\n\n const location = SplitGroup(groupID)[0];\n if (configuredGarmentGroups.has(location)) return \"body\";\n return location === configuredAccessoryGroup ? \"acc\" : null;\n}\n\nfunction NormalizeSafePartPath(value)\n{\n const result = NormalizePartPath(value);\n return result && !result.split(\"/\").some(segment => !segment || segment === \".\" || segment === \"..\")\n ? result\n : null;\n}\n\nfunction TextureFamily(path)\n{\n return CjsCharacterTextureQuality.getFamily(path).split(\"/\").at(-1);\n}\n\nfunction ClassifyTexture(path, inferredTarget, allowColorizeShorthand = false)\n{\n const exactPath = RequireResourcePath(path);\n const quality = CjsCharacterTextureQuality.getQuality(exactPath);\n const family = TextureFamily(exactPath);\n let role = null;\n let target = null;\n let match = family.match(/^colorize_(body|head|hair|acc)_([lz])$/u);\n if (match)\n {\n target = match[1];\n role = match[2] === \"l\" ? \"colorize-layer\" : \"colorize-zones\";\n }\n else\n {\n match = allowColorizeShorthand && inferredTarget ? family.match(/_([lz])$/u) : null;\n if (match)\n {\n target = inferredTarget;\n role = match[1] === \"l\" ? \"colorize-layer\" : \"colorize-zones\";\n }\n else\n {\n match = family.match(/^comp_(body|head|hair|acc)_(tn|mn|[dnsm])$/u);\n if (match)\n {\n target = match[1];\n role = match[2] === \"m\"\n ? \"cut-mask\"\n : match[2] === \"tn\"\n ? \"twist-normal\"\n : match[2] === \"mn\"\n ? \"normal-overlay\"\n : ChannelRole(match[2], \"overlay\");\n }\n }\n if (!role)\n {\n match = family.match(/_([dns]|tn)$/u);\n if (match && inferredTarget)\n {\n target = inferredTarget;\n role = match[1] === \"tn\"\n ? \"twist-normal\"\n : ChannelRole(match[1], \"source\");\n }\n }\n }\n return {\n path: exactPath,\n family,\n quality,\n role,\n target,\n recognized: Boolean(role && target),\n selected: false\n };\n}\n\nfunction ChannelRole(channel, suffix)\n{\n return channel === \"d\"\n ? `diffuse-${suffix}`\n : channel === \"n\"\n ? `normal-${suffix}`\n : `specular-${suffix}`;\n}\n\nfunction FileStem(path)\n{\n const name = String(path).replaceAll(\"\\\\\", \"/\").split(\"/\").at(-1).toLowerCase();\n return name.replace(/\\.[^.]+$/u, \"\");\n}\n\nfunction ParseModifierIndex(pointer)\n{\n const match = String(pointer ?? \"\").match(/^\\/modifiers\\/(\\d+)$/u);\n return match ? Number(match[1]) : null;\n}\n\nfunction ParseVersionIndex(pointer)\n{\n const match = String(pointer ?? \"\").match(/^\\/versions\\/(\\d+)$/u);\n return match ? Number(match[1]) : null;\n}\n\nfunction NormalizePartPath(value)\n{\n return String(value ?? \"\")\n .trim()\n .replaceAll(\"\\\\\", \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\")\n .toLowerCase();\n}\n\nfunction NormalizeOptional(value)\n{\n const result = String(value ?? \"\").trim();\n return result ? result.toLowerCase() : null;\n}\n\nfunction RequireLibrary(value)\n{\n if (!value || value.schema !== \"carbonenginejs.characterLibrary\"\n || ![ 7, 8, 9, 10 ].includes(value.schemaVersion)\n || typeof value.Get !== \"function\")\n {\n throw new TypeError(\n \"Character texture policy requires a schema-v7 through schema-v10 character library\"\n );\n }\n}\n\nfunction RequireResourcePath(value)\n{\n const result = String(value ?? \"\").trim();\n if (!/^res:\\//iu.test(result)) throw new TypeError(\"Character texture candidate must be a res:/ path\");\n return result;\n}\n\nfunction Diagnostic(code, message)\n{\n return { code, message };\n}\n\nfunction SplitGroup(value)\n{\n const [ category = \"\", group = \"\" ] = String(value ?? \"\").toLowerCase().split(\"/\");\n return [ category, group ];\n}\n\nexport default CjsCharacterTexturePolicy;\n"],"names":["DEFAULT_CONFIGURED_GARMENT_GROUPS","Set","CjsCharacterTexturePolicy","_configuredAccessoryGroup","_configuredGarmentGroups","_modifierOrder","_targetHintResolver","_textureQuality","resolveTypeDefinition","library","partType","sex","ResolveTypeDefinition","resolveTypeMaterialDefinition","typeDefinition","colorVariant","groupID","ResolveTypeMaterialDefinition","constructor","modifierOrder","textureQuality","configuredGarmentGroups","configuredAccessoryGroup","targetHintResolver","sort","resolveCategories","TypeError","Symbol","iterator","CjsCharacterTextureQuality","normalize","map","value","String","trim","toLowerCase","partPath","ResolveTextureTargetHint","Resolve","paperdoll","appearancePlan","RequireLibrary","Array","isArray","modifiers","parts","layers","options","contributions","layer","layerIndex","ResolveLayer","categories","getCategory","SplitGroup","getGroup","plan","part","contributor","partIndex","indexOf","owner","modifierIndex","ParseModifierIndex","origin","jsonPointer","modifier","partSource","Get","recordID","versionIndex","ParseVersionIndex","version","versions","diagnostics","Error","push","Diagnostic","resource","paperdollResourceID","resGender","record","typeMaterialResolution","typeMaterialDefinition","colorSelection","ResolveColorSelection","colorMaterialResolution","ResolveColorSelectionDefinition","dependencyMaterialResolution","ResolveTypedDependencyDefaultMaterial","materialDefinition","unselectedDefaultMaterial","ResolveMaterialDefinition","JSON","stringify","targetHint","allowColorizeShorthand","Boolean","classified","ClassifyTextures","ResolveTexturePaths","directDiffuseUnderlayPath","ResolveDirectDiffuseUnderlayPath","weight","undefined","Number","isFinite","every","recognized","length","ownerSelectionIndex","selections","source","partSourceRecordID","typeDefinitionPath","sourcePath","materialDefinitionPath","materialCandidatePaths","occludesModifiers","metadata","dependencies","NormalizeRetainedDependencies","occlusions","authoredValue","modifierKey","modifierLocation","materialValues","values","textureCandidates","selectedTextures","filter","selected","path","role","target","quality","evidence","status","rule","definitionRule","materialRule","materialCandidateRule","authored","dependentModifiers","relations","index","relation","exact","modifierPath","replaceAll","replace","NormalizeModifierIdentity","identity","candidates","paths","sourcePaths","all","includes","MatchesTypeDefinition","NormalizePartPath","NormalizeOptional","resourceVersion","variant","typePath","lowerTypePath","marker","Math","max","lastIndexOf","slice","extension","sibling","colorKey","matches","colorSelections","selection","colorName","colorNameA","candidate","test","NormalizeSafePartPath","suffix","roots","endsWith","split","some","segment","records","root","base","find","exactPaths","texturePaths","isDirectHairDiffuse","inherited","classificationOptions","exactClassified","eligibleExact","isAllowed","overridden","TextureFamily","overriddenChannels","TextureSemanticChannel","baseChannels","Map","has","get","targetHints","match","FileStem","add","inferredTarget","size","result","ClassifyTexture","groups","key","family","set","indices","selectedPath","selectCoverage","select","selectedIndex","contributorPath","startsWith","location","getFamily","at","exactPath","RequireResourcePath","getQuality","ChannelRole","channel","name","pointer","schema","schemaVersion","code","message","category","group"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsCharacterTexturePolicy.js","sources":["../../../src/character/CjsCharacterTexturePolicy.js"],"sourcesContent":["import { CjsCharacterTextureQuality } from \"./CjsCharacterTextureQuality.js\";\n\nconst DEFAULT_CONFIGURED_GARMENT_GROUPS = new Set([\n \"bottomouter\",\n \"feet\",\n \"outer\",\n \"topouter\"\n]);\n\n/**\n * Labels retained character texture candidates without fetching or creating a\n * renderer resource. Filename interpretation remains explicit policy, never\n * authored library fact.\n */\nexport class CjsCharacterTexturePolicy\n{\n _configuredAccessoryGroup;\n\n _configuredGarmentGroups;\n\n _modifierOrder;\n\n _targetHintResolver;\n\n _textureQuality;\n\n /** Resolves one retained sex-specific definition for a prepared part type. */\n static resolveTypeDefinition(library, partType, sex)\n {\n return ResolveTypeDefinition(library, partType, sex);\n }\n\n /** Resolves the labelled material candidate used by this selection policy. */\n static resolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID)\n {\n return ResolveTypeMaterialDefinition(\n library,\n typeDefinition,\n colorVariant,\n sex,\n groupID\n );\n }\n\n /**\n * Configures modifier ordering, texture quality, garment groups, and texture\n * target resolution.\n */\n constructor({\n modifierOrder = null,\n textureQuality = \"4k\",\n configuredGarmentGroups = DEFAULT_CONFIGURED_GARMENT_GROUPS,\n configuredAccessoryGroup = \"accessories\",\n targetHintResolver = null\n } = {})\n {\n if (modifierOrder !== null\n && (typeof modifierOrder?.sort !== \"function\"\n || typeof modifierOrder?.resolveCategories !== \"function\"))\n {\n throw new TypeError(\"Character texture policy modifierOrder must expose sort and resolveCategories\");\n }\n if (!configuredGarmentGroups || typeof configuredGarmentGroups[Symbol.iterator] !== \"function\")\n {\n throw new TypeError(\"Character texture policy configuredGarmentGroups must be iterable\");\n }\n if (targetHintResolver !== null && typeof targetHintResolver !== \"function\")\n {\n throw new TypeError(\"Character texture policy targetHintResolver must be a function or null\");\n }\n\n this._modifierOrder = modifierOrder;\n this._textureQuality = CjsCharacterTextureQuality.normalize(textureQuality);\n this._configuredGarmentGroups = new Set(\n [ ...configuredGarmentGroups ].map(value => String(value ?? \"\").trim().toLowerCase())\n );\n this._configuredAccessoryGroup = String(configuredAccessoryGroup ?? \"\")\n .trim()\n .toLowerCase();\n this._targetHintResolver = targetHintResolver ?? ((groupID, partPath) =>\n ResolveTextureTargetHint(\n groupID,\n partPath,\n this._configuredGarmentGroups,\n this._configuredAccessoryGroup\n ));\n }\n\n /** Resolves every plan layer without suppressing unrecognized candidates. */\n Resolve(library, paperdoll, appearancePlan)\n {\n RequireLibrary(library);\n\n if (!paperdoll || typeof paperdoll !== \"object\" || !Array.isArray(paperdoll.modifiers))\n {\n throw new TypeError(\"Character texture policy requires a hydrated paper doll\");\n }\n if (!appearancePlan || !Array.isArray(appearancePlan.parts)\n || !Array.isArray(appearancePlan.layers))\n {\n throw new TypeError(\"Character texture policy requires an appearance plan\");\n }\n\n const options = {\n textureQuality: this._textureQuality,\n targetHintResolver: this._targetHintResolver\n };\n const contributions = appearancePlan.layers.map((layer, layerIndex) => ResolveLayer(\n library,\n paperdoll,\n appearancePlan,\n layer,\n layerIndex,\n options\n ));\n\n return this._modifierOrder\n ? this._modifierOrder.sort(contributions, {\n categories: this._modifierOrder.resolveCategories(),\n getCategory: value => SplitGroup(value.groupID)[0],\n getGroup: value => SplitGroup(value.groupID)[1]\n })\n : contributions;\n }\n}\n\nfunction ResolveLayer(library, paperdoll, plan, layer, layerIndex, options)\n{\n const part = layer?.contributor;\n const partIndex = plan.parts.indexOf(part);\n const groupID = String(layer?.owner?.groupID ?? \"\").trim();\n const modifierIndex = ParseModifierIndex(layer?.origin?.jsonPointer);\n const modifier = modifierIndex === null ? null : paperdoll.modifiers[modifierIndex];\n const partSource = library.Get(\"characterPartSources\", part?.origin?.recordID);\n const versionIndex = ParseVersionIndex(part?.origin?.jsonPointer);\n const version = versionIndex === null ? null : partSource?.versions?.[versionIndex];\n const diagnostics = [];\n\n if (partIndex === -1)\n {\n throw new Error(`Character texture layer ${layerIndex} does not reference a plan-owned part`);\n }\n if (!groupID)\n {\n throw new Error(`Character texture layer ${layerIndex} has no selection group`);\n }\n if (!modifier)\n {\n diagnostics.push(Diagnostic(\n \"MODIFIER_PROVENANCE_UNRESOLVED\",\n \"The plan layer does not point to one exact paper-doll modifier.\"\n ));\n }\n if (!partSource || !version)\n {\n diagnostics.push(Diagnostic(\n \"PART_VERSION_PROVENANCE_UNRESOLVED\",\n \"The plan contributor does not point to one exact part-source version.\"\n ));\n }\n\n const resource = modifier?.paperdollResourceID ?? null;\n const partType = resource?.partType ?? null;\n const sex = resource?.resGender === 0\n ? \"female\"\n : resource?.resGender === 1\n ? \"male\"\n : null;\n const typeDefinition = ResolveTypeDefinition(library, partType, sex);\n if (!typeDefinition.record)\n {\n diagnostics.push(Diagnostic(\n \"TYPE_DEFINITION_UNRESOLVED\",\n \"No unique retained type definition matches the selected part type and sex.\"\n ));\n }\n\n const typeMaterialResolution = ResolveTypeMaterialDefinition(\n library,\n typeDefinition.record,\n partType?.colorVariant,\n sex,\n groupID\n );\n const typeMaterialDefinition = typeMaterialResolution?.record ?? null;\n const colorSelection = ResolveColorSelection(plan, groupID);\n const colorMaterialResolution = typeMaterialDefinition\n ? null\n : ResolveColorSelectionDefinition(library, colorSelection, sex, partSource);\n const dependencyMaterialResolution = typeMaterialDefinition || colorMaterialResolution\n ? null\n : ResolveTypedDependencyDefaultMaterial(library, part, partSource);\n const materialDefinition = typeMaterialDefinition\n ?? colorMaterialResolution?.record\n ?? dependencyMaterialResolution?.record;\n const unselectedDefaultMaterial = !materialDefinition\n && !colorSelection\n && !String(partType?.colorVariant ?? \"\").trim()\n ? ResolveMaterialDefinition(library, typeDefinition.record, \"default\")\n : null;\n\n if (partType?.colorVariant && !typeMaterialDefinition)\n {\n diagnostics.push(Diagnostic(\n \"MATERIAL_DEFINITION_UNRESOLVED\",\n `No retained sibling .color definition matches ${JSON.stringify(partType.colorVariant)}.`\n ));\n }\n if (unselectedDefaultMaterial)\n {\n diagnostics.push(Diagnostic(\n \"DEFAULT_MATERIAL_POLICY_UNRESOLVED\",\n \"An exact sibling default.color exists, but no authored selection proves that it applies.\"\n ));\n }\n\n const targetHint = options.targetHintResolver(groupID, partSource?.partPath);\n const allowColorizeShorthand = Boolean(materialDefinition) && Boolean(targetHint);\n const classified = ClassifyTextures(\n ResolveTexturePaths(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n options.textureQuality\n ),\n targetHint,\n { allowColorizeShorthand, textureQuality: options.textureQuality }\n );\n const directDiffuseUnderlayPath = ResolveDirectDiffuseUnderlayPath(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n options.textureQuality\n );\n const weight = layer?.weight === null || layer?.weight === undefined ? 1 : Number(layer.weight);\n if (!Number.isFinite(weight))\n {\n throw new TypeError(`Character texture layer ${layerIndex} has a non-finite weight`);\n }\n if (classified.every(value => !value.recognized) && classified.length)\n {\n diagnostics.push(Diagnostic(\n \"TEXTURE_FILENAME_POLICY_UNRESOLVED\",\n \"No texture candidate matches the labelled character filename policy.\"\n ));\n }\n\n return {\n layerIndex,\n partIndex,\n weight,\n ownerSelectionIndex: Array.isArray(plan.selections)\n ? plan.selections.indexOf(layer.owner)\n : -1,\n groupID,\n source: {\n partSourceRecordID: partSource?.recordID ?? null,\n partPath: partSource?.partPath ?? null,\n versionIndex,\n typeDefinitionPath: typeDefinition.record?.sourcePath ?? null,\n materialDefinitionPath: materialDefinition?.sourcePath ?? null,\n ...(unselectedDefaultMaterial ? {\n materialCandidatePaths: [ unselectedDefaultMaterial.sourcePath ]\n } : {}),\n occludesModifiers: Array.isArray(version?.metadata?.occludesModifiers)\n ? [ ...version.metadata.occludesModifiers ]\n : [],\n dependencies: NormalizeRetainedDependencies(version?.metadata),\n ...(Array.isArray(version?.metadata?.occlusions) && version.metadata.occlusions.length\n ? { occlusions: version.metadata.occlusions.map(value => ({\n authoredValue: value?.authoredValue ?? null,\n modifierKey: value?.modifierLocation?.modifierKey ?? null\n })) }\n : {}),\n ...(directDiffuseUnderlayPath ? { directDiffuseUnderlayPath } : {})\n },\n materialValues: materialDefinition?.values ?? null,\n colorSelection: colorSelection ? { ...colorSelection } : null,\n textureCandidates: classified,\n selectedTextures: classified\n .filter(value => value.selected)\n .map(value => ({\n path: value.path,\n role: value.role,\n target: value.target,\n quality: value.quality\n })),\n diagnostics,\n evidence: {\n status: \"policy\",\n rule: \"retained-character-texture-filename-v2\",\n textureQuality: options.textureQuality,\n definitionRule: \"exact-retained-definition-v1\",\n materialRule: typeMaterialResolution\n ? typeMaterialResolution.rule\n : colorMaterialResolution\n ? colorMaterialResolution.rule\n : dependencyMaterialResolution\n ? dependencyMaterialResolution.rule\n : \"unresolved\",\n ...(unselectedDefaultMaterial ? {\n materialCandidateRule: \"unselected-exact-sibling-default-v1\"\n } : {})\n }\n };\n}\n\nfunction NormalizeRetainedDependencies(metadata)\n{\n const authored = Array.isArray(metadata?.dependentModifiers)\n ? metadata.dependentModifiers\n : [];\n const relations = Array.isArray(metadata?.dependencies)\n ? metadata.dependencies\n : [];\n return authored.map((authoredValue, index) =>\n {\n const relation = relations[index];\n const exact = relation?.authoredValue === authoredValue;\n const modifierPath = exact\n ? String(relation?.modifierPath ?? \"\")\n .replaceAll(\"\\\\\", \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\")\n .toLowerCase()\n : \"\";\n const partSourceRecordID = exact\n ? String(relation?.partSource?.recordID ?? \"\").trim()\n : \"\";\n return {\n authoredValue,\n modifierPath: modifierPath || null,\n partSourceRecordID: partSourceRecordID || null\n };\n });\n}\n\nfunction NormalizeModifierIdentity(value)\n{\n const identity = String(value ?? \"\").trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\n // A retained female Tanktop source uses the legacy category name while\n // active selection records use the current topinner location.\n return identity === \"topunderwear\" ? \"topinner\" : identity;\n}\n\nfunction ResolveTypeDefinition(library, partType, sex)\n{\n if (!partType || !sex) return { record: null, candidates: [] };\n const paths = [ ...(partType.sourcePaths ?? []), partType.sourcePath ]\n .filter((value, index, all) => value && all.indexOf(value) === index);\n const candidates = paths\n .filter(path => path.toLowerCase().includes(`/${sex}/`))\n .map(path => library.Get(\"characterDefinitions\", path))\n .filter(record => MatchesTypeDefinition(record, partType));\n return { record: candidates.length === 1 ? candidates[0] : null, candidates };\n}\n\nfunction MatchesTypeDefinition(record, partType)\n{\n const values = record?.values;\n if (!Array.isArray(values) || (values.length !== 3 && values.length !== 4)) return false;\n return NormalizePartPath(values[0]) === NormalizePartPath(partType.partPath)\n && NormalizeOptional(values[1]) === NormalizeOptional(partType.resourceVersion)\n && NormalizeOptional(values[2]) === NormalizeOptional(partType.colorVariant);\n}\n\nfunction ResolveMaterialDefinition(library, typeDefinition, colorVariant)\n{\n const variant = String(colorVariant ?? \"\").trim();\n const typePath = String(typeDefinition?.sourcePath ?? \"\");\n const lowerTypePath = typePath.toLowerCase();\n const marker = Math.max(lowerTypePath.lastIndexOf(\"/types/\"), lowerTypePath.lastIndexOf(\"/type/\"));\n if (!variant || marker === -1) return null;\n\n const path = `${typePath.slice(0, marker)}/${variant.toLowerCase()}.color`;\n const record = library.Get(\"characterDefinitions\", path);\n return record?.extension === \".color\" ? record : null;\n}\n\nfunction ResolveTypeMaterialDefinition(library, typeDefinition, colorVariant, sex, groupID)\n{\n const sibling = ResolveMaterialDefinition(library, typeDefinition, colorVariant);\n if (sibling)\n {\n return {\n record: sibling,\n path: sibling.sourcePath ?? null,\n rule: \"exact-sibling-color-definition-v1\"\n };\n }\n\n const variant = NormalizeModifierIdentity(colorVariant);\n const colorKey = NormalizeModifierIdentity(groupID);\n if (!sex || !variant || !colorKey) return null;\n\n const path = `res:/graphics/character/${sex}/paperdoll/${colorKey}`\n + `/colors/${variant}.color`;\n const record = library.Get(\"characterDefinitions\", path);\n return record?.extension === \".color\"\n ? { record, path, rule: \"exact-type-group-color-definition-v1\" }\n : null;\n}\n\nfunction ResolveColorSelection(plan, groupID)\n{\n const matches = (plan?.colorSelections ?? []).filter(value =>\n NormalizeModifierIdentity(value?.colorKey) === NormalizeModifierIdentity(groupID));\n return matches.length === 1 ? matches[0] : null;\n}\n\nfunction ResolveColorSelectionDefinition(library, selection, sex, partSource)\n{\n const colorKey = NormalizeModifierIdentity(selection?.colorKey);\n const colorName = NormalizeModifierIdentity(selection?.colorNameA);\n if (!sex || !colorKey || !colorName) return null;\n\n const sourcePath = String(partSource?.sourcePath ?? \"\").replace(/\\/+$/u, \"\");\n const candidates = [\n sourcePath && {\n path: `${sourcePath}/${colorName}.color`,\n rule: \"exact-part-source-color-selection-v1\"\n },\n {\n path: `res:/graphics/character/${sex}/paperdoll/${colorKey}`\n + `/colors/${colorName}.color`,\n rule: \"exact-group-color-selection-v1\"\n }\n ].filter(Boolean);\n\n for (const candidate of candidates)\n {\n const record = library.Get(\"characterDefinitions\", candidate.path);\n if (record?.extension === \".color\") return { ...candidate, record };\n }\n return null;\n}\n\nfunction ResolveTypedDependencyDefaultMaterial(library, part, partSource)\n{\n const rule = String(part?.origin?.rule ?? \"\");\n if (!/^unique-typed-dependency-version(?:-model-bundle)?$/u.test(rule)) return null;\n\n const partPath = NormalizeSafePartPath(partSource?.partPath);\n if (!partPath) return null;\n const suffix = `/${partPath}`;\n const roots = [ ...new Set([\n partSource?.sourcePath,\n ...(partSource?.sourcePaths ?? [])\n ].map(value => String(value ?? \"\").trim().replaceAll(\"\\\\\", \"/\").toLowerCase())\n .filter(value => /^res:\\/graphics\\/character\\/(?:female|male)\\/paperdoll\\//u.test(value)\n && value.endsWith(suffix)\n && !value.split(\"/\").some(segment => segment === \".\" || segment === \"..\"))) ];\n const records = [ ...new Set(roots\n .map(root => library.Get(\"characterDefinitions\", `${root}/default.color`))\n .filter(record => record?.extension === \".color\")) ];\n if (records.length !== 1) return null;\n return {\n record: records[0],\n path: records[0].sourcePath ?? null,\n rule: \"exact-typed-dependency-source-default-v1\"\n };\n}\n\nfunction ResolveDirectDiffuseUnderlayPath(\n part,\n partSource,\n version,\n targetHint,\n allowColorizeShorthand,\n textureQuality\n)\n{\n const base = partSource?.versions?.find(value => value?.resourceVersion == null);\n if (!base || base === version || !Array.isArray(base.textureCandidates)) return null;\n const exactPaths = Array.isArray(part?.texturePaths) && part.texturePaths.length\n ? part.texturePaths\n : version?.textureCandidates ?? [];\n const options = { allowColorizeShorthand, textureQuality };\n const isDirectHairDiffuse = value => value?.recognized\n && value.target === \"hair\"\n && [ \"diffuse-source\", \"diffuse-overlay\" ].includes(value.role);\n const exact = ClassifyTextures(exactPaths, targetHint, options)\n .filter(value => value.selected && isDirectHairDiffuse(value));\n const inherited = ClassifyTextures(base.textureCandidates, targetHint, options)\n .filter(value => value.selected && isDirectHairDiffuse(value));\n return exact.length === 1 && inherited.length === 1 && exact[0].path !== inherited[0].path\n ? inherited[0].path\n : null;\n}\n\nfunction ResolveTexturePaths(\n part,\n partSource,\n version,\n targetHint = null,\n allowColorizeShorthand = false,\n textureQuality = \"4k\"\n)\n{\n const exact = Array.isArray(part?.texturePaths) && part.texturePaths.length\n ? part.texturePaths\n : version?.textureCandidates ?? [];\n const base = partSource?.versions?.find(value => value?.resourceVersion == null);\n if (!base || base === version || !Array.isArray(base.textureCandidates)) return [ ...exact ];\n\n const classificationOptions = { allowColorizeShorthand, textureQuality };\n const exactClassified = ClassifyTextures(exact, targetHint, classificationOptions);\n const eligibleExact = exactClassified\n .filter(value => CjsCharacterTextureQuality.isAllowed(value.path, textureQuality)\n || (value.selected && value.role === \"cut-mask\" && value.target === \"body\"))\n .map(value => value.path);\n const overridden = new Set(eligibleExact.map(TextureFamily));\n const overriddenChannels = new Set(ClassifyTextures(\n eligibleExact,\n targetHint,\n classificationOptions\n )\n .filter(value => value.recognized && value.role && value.target)\n .map(value => `${value.target}\\0${TextureSemanticChannel(value.role)}`));\n const baseChannels = new Map(ClassifyTextures(\n base.textureCandidates,\n targetHint,\n classificationOptions\n ).map(value => [ value.path, value ]));\n return [\n ...exact,\n ...base.textureCandidates.filter(path =>\n {\n if (overridden.has(TextureFamily(path))) return false;\n const value = baseChannels.get(path);\n return !value.recognized\n || !value.role\n || !value.target\n || !overriddenChannels.has(\n `${value.target}\\0${TextureSemanticChannel(value.role)}`\n );\n })\n ];\n}\n\nfunction TextureSemanticChannel(role)\n{\n if (/^normal-/u.test(role)) return \"normal\";\n if (/^specular-/u.test(role)) return \"specular\";\n if (/^diffuse-/u.test(role)) return \"diffuse\";\n return role;\n}\n\nfunction ClassifyTextures(paths, targetHint = null, {\n allowColorizeShorthand = false,\n textureQuality = \"4k\"\n} = {})\n{\n if (!Array.isArray(paths)) throw new TypeError(\"Character texture candidates must be an array\");\n\n const targetHints = new Set();\n for (const value of paths)\n {\n const match = FileStem(value).match(/(?:^|_)(body|head|hair|acc)(?:_|$)/u);\n if (match) targetHints.add(match[1]);\n }\n\n const inferredTarget = targetHints.size === 1 ? [ ...targetHints ][0] : targetHint;\n const result = paths.map(path => ClassifyTexture(path, inferredTarget, allowColorizeShorthand));\n const groups = new Map();\n for (let index = 0; index < result.length; index++)\n {\n const value = result[index];\n if (!value.recognized) continue;\n const key = `${value.role}\\0${value.target}\\0${value.family}`;\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key).push(index);\n }\n\n for (const indices of groups.values())\n {\n const values = indices.map(index => result[index]);\n const selectedPath = values[0]?.role === \"cut-mask\" && values[0]?.target === \"body\"\n ? CjsCharacterTextureQuality.selectCoverage(\n values.map(value => value.path),\n textureQuality\n )\n : CjsCharacterTextureQuality.select(values.map(value => value.path), textureQuality);\n const selectedIndex = indices.find(index => result[index].path === selectedPath);\n if (selectedIndex !== undefined) result[selectedIndex].selected = true;\n }\n return result;\n}\n\nfunction ResolveTextureTargetHint(groupID, partPath, configuredGarmentGroups, configuredAccessoryGroup)\n{\n const contributorPath = NormalizeSafePartPath(partPath);\n if (contributorPath?.startsWith(\"accessories/\")) return \"acc\";\n\n const location = SplitGroup(groupID)[0];\n if (configuredGarmentGroups.has(location)) return \"body\";\n return location === configuredAccessoryGroup ? \"acc\" : null;\n}\n\nfunction NormalizeSafePartPath(value)\n{\n const result = NormalizePartPath(value);\n return result && !result.split(\"/\").some(segment => !segment || segment === \".\" || segment === \"..\")\n ? result\n : null;\n}\n\nfunction TextureFamily(path)\n{\n return CjsCharacterTextureQuality.getFamily(path).split(\"/\").at(-1);\n}\n\nfunction ClassifyTexture(path, inferredTarget, allowColorizeShorthand = false)\n{\n const exactPath = RequireResourcePath(path);\n const quality = CjsCharacterTextureQuality.getQuality(exactPath);\n const family = TextureFamily(exactPath);\n let role = null;\n let target = null;\n let match = family.match(/^colorize_(body|head|hair|acc)_([lz])$/u);\n if (match)\n {\n target = match[1];\n role = match[2] === \"l\" ? \"colorize-layer\" : \"colorize-zones\";\n }\n else\n {\n match = allowColorizeShorthand && inferredTarget ? family.match(/_([lz])$/u) : null;\n if (match)\n {\n target = inferredTarget;\n role = match[1] === \"l\" ? \"colorize-layer\" : \"colorize-zones\";\n }\n else\n {\n match = family.match(/^comp_(body|head|hair|acc)_(tn|mn|[dnsm])$/u);\n if (match)\n {\n target = match[1];\n role = match[2] === \"m\"\n ? \"cut-mask\"\n : match[2] === \"tn\"\n ? \"twist-normal\"\n : match[2] === \"mn\"\n ? \"normal-overlay\"\n : ChannelRole(match[2], \"overlay\");\n }\n }\n if (!role)\n {\n match = family.match(/_([dns]|tn)$/u);\n if (match && inferredTarget)\n {\n target = inferredTarget;\n role = match[1] === \"tn\"\n ? \"twist-normal\"\n : ChannelRole(match[1], \"source\");\n }\n }\n }\n return {\n path: exactPath,\n family,\n quality,\n role,\n target,\n recognized: Boolean(role && target),\n selected: false\n };\n}\n\nfunction ChannelRole(channel, suffix)\n{\n return channel === \"d\"\n ? `diffuse-${suffix}`\n : channel === \"n\"\n ? `normal-${suffix}`\n : `specular-${suffix}`;\n}\n\nfunction FileStem(path)\n{\n const name = String(path).replaceAll(\"\\\\\", \"/\").split(\"/\").at(-1).toLowerCase();\n return name.replace(/\\.[^.]+$/u, \"\");\n}\n\nfunction ParseModifierIndex(pointer)\n{\n const match = String(pointer ?? \"\").match(/^\\/modifiers\\/(\\d+)$/u);\n return match ? Number(match[1]) : null;\n}\n\nfunction ParseVersionIndex(pointer)\n{\n const match = String(pointer ?? \"\").match(/^\\/versions\\/(\\d+)$/u);\n return match ? Number(match[1]) : null;\n}\n\nfunction NormalizePartPath(value)\n{\n return String(value ?? \"\")\n .trim()\n .replaceAll(\"\\\\\", \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\")\n .toLowerCase();\n}\n\nfunction NormalizeOptional(value)\n{\n const result = String(value ?? \"\").trim();\n return result ? result.toLowerCase() : null;\n}\n\nfunction RequireLibrary(value)\n{\n if (!value || value.schema !== \"carbonenginejs.characterLibrary\"\n || ![ 7, 8, 9, 10 ].includes(value.schemaVersion)\n || typeof value.Get !== \"function\")\n {\n throw new TypeError(\n \"Character texture policy requires a schema-v7 through schema-v10 character library\"\n );\n }\n}\n\nfunction RequireResourcePath(value)\n{\n const result = String(value ?? \"\").trim();\n if (!/^res:\\//iu.test(result)) throw new TypeError(\"Character texture candidate must be a res:/ path\");\n return result;\n}\n\nfunction Diagnostic(code, message)\n{\n return { code, message };\n}\n\nfunction SplitGroup(value)\n{\n const [ category = \"\", group = \"\" ] = String(value ?? \"\").toLowerCase().split(\"/\");\n return [ category, group ];\n}\n\nexport default CjsCharacterTexturePolicy;\n"],"names":["DEFAULT_CONFIGURED_GARMENT_GROUPS","Set","CjsCharacterTexturePolicy","_configuredAccessoryGroup","_configuredGarmentGroups","_modifierOrder","_targetHintResolver","_textureQuality","resolveTypeDefinition","library","partType","sex","ResolveTypeDefinition","resolveTypeMaterialDefinition","typeDefinition","colorVariant","groupID","ResolveTypeMaterialDefinition","constructor","modifierOrder","textureQuality","configuredGarmentGroups","configuredAccessoryGroup","targetHintResolver","sort","resolveCategories","TypeError","Symbol","iterator","CjsCharacterTextureQuality","normalize","map","value","String","trim","toLowerCase","partPath","ResolveTextureTargetHint","Resolve","paperdoll","appearancePlan","RequireLibrary","Array","isArray","modifiers","parts","layers","options","contributions","layer","layerIndex","ResolveLayer","categories","getCategory","SplitGroup","getGroup","plan","part","contributor","partIndex","indexOf","owner","modifierIndex","ParseModifierIndex","origin","jsonPointer","modifier","partSource","Get","recordID","versionIndex","ParseVersionIndex","version","versions","diagnostics","Error","push","Diagnostic","resource","paperdollResourceID","resGender","record","typeMaterialResolution","typeMaterialDefinition","colorSelection","ResolveColorSelection","colorMaterialResolution","ResolveColorSelectionDefinition","dependencyMaterialResolution","ResolveTypedDependencyDefaultMaterial","materialDefinition","unselectedDefaultMaterial","ResolveMaterialDefinition","JSON","stringify","targetHint","allowColorizeShorthand","Boolean","classified","ClassifyTextures","ResolveTexturePaths","directDiffuseUnderlayPath","ResolveDirectDiffuseUnderlayPath","weight","undefined","Number","isFinite","every","recognized","length","ownerSelectionIndex","selections","source","partSourceRecordID","typeDefinitionPath","sourcePath","materialDefinitionPath","materialCandidatePaths","occludesModifiers","metadata","dependencies","NormalizeRetainedDependencies","occlusions","authoredValue","modifierKey","modifierLocation","materialValues","values","textureCandidates","selectedTextures","filter","selected","path","role","target","quality","evidence","status","rule","definitionRule","materialRule","materialCandidateRule","authored","dependentModifiers","relations","index","relation","exact","modifierPath","replaceAll","replace","NormalizeModifierIdentity","identity","candidates","paths","sourcePaths","all","includes","MatchesTypeDefinition","NormalizePartPath","NormalizeOptional","resourceVersion","variant","typePath","lowerTypePath","marker","Math","max","lastIndexOf","slice","extension","sibling","colorKey","matches","colorSelections","selection","colorName","colorNameA","candidate","test","NormalizeSafePartPath","suffix","roots","endsWith","split","some","segment","records","root","base","find","exactPaths","texturePaths","isDirectHairDiffuse","inherited","classificationOptions","exactClassified","eligibleExact","isAllowed","overridden","TextureFamily","overriddenChannels","TextureSemanticChannel","baseChannels","Map","has","get","targetHints","match","FileStem","add","inferredTarget","size","result","ClassifyTexture","groups","key","family","set","indices","selectedPath","selectCoverage","select","selectedIndex","contributorPath","startsWith","location","getFamily","at","exactPath","RequireResourcePath","getQuality","ChannelRole","channel","name","pointer","schema","schemaVersion","code","message","category","group"],"mappings":"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"}
|