@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.
Files changed (929) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/utils/bytes.js +22 -4
  80. package/dist/global/utils/bytes.js.map +1 -1
  81. package/dist/global/utils/checksum.js +80 -0
  82. package/dist/global/utils/checksum.js.map +1 -0
  83. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  84. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  85. package/dist/global/utils/errors/CjsError.js +21 -52
  86. package/dist/global/utils/errors/CjsError.js.map +1 -1
  87. package/dist/global/utils/errors/abort.js +1 -1
  88. package/dist/global/utils/errors/abort.js.map +1 -1
  89. package/dist/global/utils/errors/index.js +2 -1
  90. package/dist/global/utils/errors/index.js.map +1 -1
  91. package/dist/global/utils/index.js +4 -2
  92. package/dist/global/utils/index.js.map +1 -1
  93. package/dist/index.js +95 -35
  94. package/dist/index.js.map +1 -1
  95. package/dist/input/Tr2MainWindow.js +7 -9
  96. package/dist/input/Tr2MainWindow.js.map +1 -1
  97. package/dist/resource/CjsResMan.js +33 -39
  98. package/dist/resource/CjsResMan.js.map +1 -1
  99. package/dist/resource/CjsResource.js +19 -5
  100. package/dist/resource/CjsResource.js.map +1 -1
  101. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  102. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  103. package/dist/resource/audio/CjsAudioRes.js +4 -5
  104. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  105. package/dist/resource/format/CjsBitReader.js +263 -0
  106. package/dist/resource/format/CjsBitReader.js.map +1 -0
  107. package/dist/resource/format/CjsByteReader.js +130 -125
  108. package/dist/resource/format/CjsByteReader.js.map +1 -1
  109. package/dist/resource/format/CjsFormat.js +11 -4
  110. package/dist/resource/format/CjsFormat.js.map +1 -1
  111. package/dist/resource/format/CjsFormatError.js +37 -1
  112. package/dist/resource/format/CjsFormatError.js.map +1 -1
  113. package/dist/resource/format/CjsResourceProbe.js +41 -37
  114. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  115. package/dist/resource/format/carbonRecordGuard.js +33 -0
  116. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  117. package/dist/resource/format/imageSignatures.js +202 -0
  118. package/dist/resource/format/imageSignatures.js.map +1 -0
  119. package/dist/resource/format/index.js +2 -1
  120. package/dist/resource/format/index.js.map +1 -1
  121. package/dist/resource/format/jsonPolicies.js +180 -0
  122. package/dist/resource/format/jsonPolicies.js.map +1 -0
  123. package/dist/resource/formats/black/core/helpers.js +18 -29
  124. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  125. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  126. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  127. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  128. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  129. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  130. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  132. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  133. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  134. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  136. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  138. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  140. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  142. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  144. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  145. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  146. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  147. package/dist/resource/formats/cmf/core/binary.js +54 -60
  148. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  149. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  150. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  151. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  152. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  153. package/dist/resource/formats/dds/core/bc7.js +28 -24
  154. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  155. package/dist/resource/formats/dds/core/helpers.js +7 -133
  156. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  157. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  158. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  159. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  160. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  162. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  163. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  164. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  166. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  167. package/dist/resource/formats/flac/core/helpers.js +1 -62
  168. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  170. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  171. package/dist/resource/formats/gif/core/helpers.js +1 -63
  172. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  174. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  175. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  176. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  178. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  179. package/dist/resource/formats/gr2/core/container.js +1 -10
  180. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  181. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  182. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/shared.js +193 -189
  184. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  185. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  186. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  187. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  188. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  189. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  190. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  191. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  192. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  194. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  195. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  196. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  198. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  199. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  200. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  202. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  203. package/dist/resource/formats/obj/core/helpers.js +93 -115
  204. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  206. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  207. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  208. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  210. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  211. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  212. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  213. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  214. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  215. package/dist/resource/formats/png/core/helpers.js +13 -152
  216. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  217. package/dist/resource/formats/png/core/writer.js +3 -27
  218. package/dist/resource/formats/png/core/writer.js.map +1 -1
  219. package/dist/resource/formats/red/core/helpers.js +19 -29
  220. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  222. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/resource/formats/stl/core/helpers.js +44 -66
  224. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  226. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  227. package/dist/resource/formats/tga/core/helpers.js +7 -153
  228. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  230. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  231. package/dist/resource/formats/vta/core/helpers.js +1 -17
  232. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  234. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  235. package/dist/resource/formats/wav/core/helpers.js +1 -15
  236. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  238. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  239. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
  240. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  241. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  242. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  243. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  244. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  245. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  246. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  247. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  248. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  249. package/dist/resource/formats/webm/core/helpers.js +1 -73
  250. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  251. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  252. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  253. package/dist/resource/formats/webp/core/helpers.js +1 -62
  254. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  255. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  256. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  257. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  258. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  259. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  260. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  261. package/dist/resource/formats/wem/core/helpers.js +1 -15
  262. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  263. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  264. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  265. package/dist/resource/geometry/MeshDecalData.js +23 -25
  266. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  267. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  268. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  272. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  273. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  274. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  276. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  278. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  280. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  281. package/dist/resource/geometry/TriJointBinding.js +16 -24
  282. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  283. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  284. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  285. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  286. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  287. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  288. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  289. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  290. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  291. package/dist/resource/index.js +1 -1
  292. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  293. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  294. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  295. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  296. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  297. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  299. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  301. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  303. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  305. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  307. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  309. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  310. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  311. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  312. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  313. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  314. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  315. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  319. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  321. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  323. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  325. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  327. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  329. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  337. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  338. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  339. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  340. package/dist/resource/worker/protocol.js +18 -1
  341. package/dist/resource/worker/protocol.js.map +1 -1
  342. package/dist/sof/EveSOF.js +2 -222
  343. package/dist/sof/EveSOF.js.map +1 -1
  344. package/dist/sof/SofDocumentBuilder.js +205 -0
  345. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  346. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  347. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  348. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  349. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  350. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  351. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  352. package/dist/sof/faction/index.js +3 -1
  353. package/dist/sof/faction/index.js.map +1 -1
  354. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  355. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  356. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  357. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  358. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  359. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  360. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  361. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  362. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  363. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  364. package/dist/sof/generic/index.js +5 -1
  365. package/dist/sof/generic/index.js.map +1 -1
  366. package/dist/sof/index.js +23 -7
  367. package/dist/sof/index.js.map +1 -1
  368. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  369. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  370. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  371. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  372. package/dist/sof/pattern/index.js +2 -1
  373. package/dist/sof/pattern/index.js.map +1 -1
  374. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  375. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  376. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  377. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  378. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  379. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  380. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  381. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  382. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  383. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  384. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  385. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  386. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  387. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  388. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  389. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  390. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  391. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  392. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  393. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  395. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  398. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  399. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  400. package/dist/sof/shared/index.js +13 -4
  401. package/dist/sof/shared/index.js.map +1 -1
  402. package/dist/sof/sofDocumentValues.js +33 -0
  403. package/dist/sof/sofDocumentValues.js.map +1 -0
  404. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  405. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  406. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  407. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  408. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  409. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  410. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  411. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  412. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  413. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  414. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  415. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  416. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  417. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  418. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  419. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  420. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  421. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  424. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  425. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  426. package/dist/trinity/controllers/index.js +5 -2
  427. package/dist/trinity/controllers/index.js.map +1 -1
  428. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  429. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  430. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  431. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  432. package/dist/trinity/core/ITr2Updateable.js +2 -1
  433. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  434. package/dist/trinity/core/Tr2Blitter.js +6 -3
  435. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  436. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  437. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  438. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  439. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  440. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  441. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  442. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  443. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  444. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  445. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  446. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  447. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  448. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  449. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  450. package/dist/trinity/core/Tr2Renderer.js +146 -1
  451. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  452. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  453. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  454. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  455. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  456. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  457. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  458. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  459. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  460. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  461. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  462. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  463. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  464. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  465. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  466. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  467. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  468. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  469. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  470. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  471. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  472. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  473. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  474. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  475. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  476. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  477. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  478. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  479. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  480. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  481. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  482. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  483. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  484. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  485. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  486. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  487. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  488. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  489. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  490. package/dist/trinity/core/index.js +42 -15
  491. package/dist/trinity/core/index.js.map +1 -1
  492. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  493. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  494. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  495. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  496. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  497. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  498. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  499. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  500. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  501. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  502. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  503. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  504. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  505. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  506. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  507. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  508. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  509. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  510. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  511. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  512. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  513. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  514. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  515. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  516. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  517. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  519. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  520. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  521. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  522. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  547. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  549. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  550. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  551. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  552. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  553. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  573. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  575. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  577. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  578. package/dist/trinity/core/variable/TriVariable.js +83 -83
  579. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  580. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  581. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  582. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  583. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  584. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  585. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  586. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  587. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  588. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  589. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  590. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  591. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  592. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  593. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  594. package/dist/trinity/eve/IEveTransform.js +2 -1
  595. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  596. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  597. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  598. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  599. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  600. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  601. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  602. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  603. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  604. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  605. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  606. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  607. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  608. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  609. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  610. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  611. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  612. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  613. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  614. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  615. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  616. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  617. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  619. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  621. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  622. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  623. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  624. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  625. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  626. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  627. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  628. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  629. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  631. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  632. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  633. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  634. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  635. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  636. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  639. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  640. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  641. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  643. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  645. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  647. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  648. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  649. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  650. package/dist/trinity/eve/index.js +10 -4
  651. package/dist/trinity/eve/index.js.map +1 -1
  652. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  653. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  654. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  655. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  656. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  657. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  658. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  659. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  660. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  661. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  662. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  663. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  664. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  665. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  666. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  667. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  668. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  669. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  670. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  671. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  672. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  673. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  674. package/dist/trinity/generated/index.js +0 -1
  675. package/dist/trinity/generated/index.js.map +1 -1
  676. package/dist/trinity/generated/trinityCore/index.js +0 -1
  677. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  678. package/dist/trinity/index.js +59 -23
  679. package/dist/trinity/index.js.map +1 -1
  680. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  681. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  682. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  683. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  684. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  685. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  686. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  687. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  688. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  689. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  690. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  691. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  692. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  693. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  694. package/dist/trinity/particle/index.js +2 -1
  695. package/dist/trinity/particle/index.js.map +1 -1
  696. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  697. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  698. package/dist/trinity/shader/Tr2Effect.js +131 -58
  699. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  700. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  701. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  702. package/dist/trinity/shader/Tr2Material.js +21 -4
  703. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  704. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  705. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  706. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  707. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  708. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  709. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  710. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  711. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  712. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  713. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  714. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  715. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  716. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  717. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  718. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  719. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  720. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  721. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  724. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  728. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  729. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  730. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  731. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  732. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  733. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  734. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  735. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  736. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  737. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  740. package/dist/trinityal/index.js +22 -9
  741. package/dist/trinityal/index.js.map +1 -1
  742. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  743. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  744. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  745. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  746. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  747. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  749. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  751. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  752. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  753. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  754. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  755. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  756. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  757. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  758. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  759. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  761. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  762. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  763. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  764. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  765. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  766. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  767. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  769. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  771. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  772. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  773. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  774. package/dist/trinityal/stub/index.js +8 -4
  775. package/dist/trinityal/stub/index.js.map +1 -1
  776. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  777. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  778. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  779. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  780. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  781. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  782. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  783. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  785. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  787. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  789. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  791. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  793. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  795. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  796. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  797. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  799. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  800. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  801. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  802. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  803. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  804. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  807. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  813. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  815. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  817. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  821. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  822. package/dist/trinityal/webgpu/internal.js +12 -11
  823. package/dist/trinityal/webgpu/internal.js.map +1 -1
  824. package/docs/audio/reference/classes/trinity.md +44 -34
  825. package/docs/character/architecture.md +276 -0
  826. package/docs/character/reference/character-appearance-plans.md +30 -66
  827. package/docs/character/reference/prepared-libraries.md +14 -30
  828. package/docs/global/reference/api.md +2 -1
  829. package/docs/global/reference/classes/README.md +53 -71
  830. package/docs/global/reference/classes/dropped.md +16 -0
  831. package/docs/resource/README.md +19 -15
  832. package/docs/resource/architecture.md +9 -2
  833. package/docs/resource/concepts/format-capabilities.md +124 -80
  834. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  835. package/docs/resource/formats/README.md +230 -224
  836. package/docs/resource/formats/bitknit2.md +221 -0
  837. package/docs/resource/formats/carbon-effect-container.md +184 -269
  838. package/docs/resource/formats/gr2.md +6 -1
  839. package/docs/resource/formats/schemabound.md +28 -48
  840. package/docs/resource/formats/static.md +70 -97
  841. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  842. package/docs/resource/formats/webgl/decl-io.md +165 -256
  843. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  844. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  845. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  846. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  847. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  848. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
  849. package/docs/resource/reference/classes/core.md +256 -236
  850. package/docs/resource/reference/classes/formats.md +1668 -1672
  851. package/docs/resource/reference/workers.md +4 -2
  852. package/docs/sof/reference/classes/core.md +1 -1
  853. package/docs/sof/reference/classes/faction.md +2 -2
  854. package/docs/sof/reference/classes/generic.md +4 -4
  855. package/docs/sof/reference/classes/pattern.md +1 -1
  856. package/docs/sof/reference/classes/shared.md +10 -10
  857. package/docs/trinity/architecture.md +55 -44
  858. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  859. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  860. package/docs/trinity/reference/classes/dropped.md +0 -189
  861. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  862. package/docs/trinity/reference/classes/generated.md +0 -10
  863. package/docs/trinity/reference/classes/particle.md +2 -2
  864. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  865. package/docs/trinity/reference/implementation-status.md +50 -75
  866. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  867. package/docs/trinityal/reference/classes/README.md +77 -27
  868. package/docs/trinityal/reference/classes/dropped.md +82 -0
  869. package/docs/trinityal/webgpu/README.md +3 -1
  870. package/docs/trinityal/webgpu/architecture.md +121 -228
  871. package/docs/trinityal/webgpu/reference/api.md +5 -5
  872. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  873. package/format-notices/gr2/NOTICE +18 -12
  874. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  875. package/package.json +4 -1
  876. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  877. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  878. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  879. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  880. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  881. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  882. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  883. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  884. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  885. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  886. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  887. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  888. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  889. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  890. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  891. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  892. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  893. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  894. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  895. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  896. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  897. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  898. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  899. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  900. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  901. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  902. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  903. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  904. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  905. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  906. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  907. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  908. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  909. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  910. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  911. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  912. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  913. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  914. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  915. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  916. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  917. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  918. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  919. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  920. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  921. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  922. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  923. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CjsCharacterAppearanceConstruction.js","sources":["../../../src/character/CjsCharacterAppearanceConstruction.js"],"sourcesContent":["import { CjsCharacterFoundationCoveragePolicy } from \"./CjsCharacterFoundationCoveragePolicy.js\";\nimport { CjsCharacterTextureContributions } from \"./CjsCharacterTextureContributions.js\";\nimport { CjsCharacterTexturePolicy } from \"./CjsCharacterTexturePolicy.js\";\n\n/**\n * Combines injected foundation construction with resolved plan parts into one\n * renderer-neutral appearance construction sequence.\n */\nexport class CjsCharacterAppearanceConstruction\n{\n _foundationCoveragePolicy;\n\n _foundationResolver;\n\n _shouldDeferContribution;\n\n _texturePolicy;\n\n constructor({\n foundationResolver,\n foundationCoveragePolicy = new CjsCharacterFoundationCoveragePolicy(),\n texturePolicy = new CjsCharacterTexturePolicy(),\n shouldDeferContribution = IsNonRenderableRagdollProxy\n } = {})\n {\n if (typeof foundationResolver?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a foundation resolver\");\n }\n if (typeof texturePolicy?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a texture policy\");\n }\n if (typeof foundationCoveragePolicy?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a foundation coverage policy\");\n }\n if (typeof shouldDeferContribution !== \"function\")\n {\n throw new TypeError(\"Character appearance construction shouldDeferContribution must be a function\");\n }\n\n this._foundationResolver = foundationResolver;\n this._foundationCoveragePolicy = foundationCoveragePolicy;\n this._texturePolicy = texturePolicy;\n this._shouldDeferContribution = shouldDeferContribution;\n }\n\n /** Produces foundation operations followed by every exact resolved plan part. */\n Resolve(paperdoll, appearancePlan, library)\n {\n if (!appearancePlan || typeof appearancePlan !== \"object\")\n {\n throw new TypeError(\"Character appearance construction requires an appearance plan\");\n }\n if (!Array.isArray(appearancePlan.parts) || !Array.isArray(appearancePlan.layers))\n {\n throw new TypeError(\"Character appearance construction requires plan parts and layers\");\n }\n if (!library || typeof library !== \"object\")\n {\n throw new TypeError(\"Character appearance construction requires the installed character library\");\n }\n\n const expectedContributions = appearancePlan.layers.map((layer, layerIndex) =>\n {\n const partIndex = appearancePlan.parts.indexOf(layer?.contributor);\n const groupID = String(layer?.owner?.groupID ?? \"\").trim();\n if (partIndex === -1)\n {\n throw new Error(`Appearance layer ${layerIndex} does not reference a plan-owned part`);\n }\n if (!groupID)\n {\n throw new Error(`Appearance layer ${layerIndex} has no selection group`);\n }\n return { layerIndex, partIndex, groupID };\n });\n const foundation = this._foundationResolver.Resolve(paperdoll, appearancePlan, library);\n if (!foundation || !Array.isArray(foundation.operations) || !foundation.operations.length)\n {\n throw new TypeError(\"Character foundation resolver must return ordered operations\");\n }\n const foundationSupports = ResolveFoundationSupports(foundation.operations);\n const operations = foundation.operations.slice(0, -1);\n const textureContributions = this._texturePolicy.Resolve(library, paperdoll, appearancePlan);\n const morphTargets = ResolveMorphTargets(appearancePlan);\n CjsCharacterTextureContributions.validate(\n textureContributions,\n expectedContributions,\n \"Character appearance construction\"\n );\n\n let configuredPartCount = 0;\n let deferredContributionCount = 0;\n for (let layerIndex = 0; layerIndex < appearancePlan.layers.length; layerIndex++)\n {\n const layer = appearancePlan.layers[layerIndex];\n const part = layer.contributor;\n const { partIndex, groupID } = expectedContributions[layerIndex];\n const common = {\n layerIndex,\n partIndex,\n groupID,\n partSourceRecordID: part.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim() || null\n : null,\n evidence: {\n status: part.origin?.kind ?? \"derived\",\n document: part.origin?.document ?? null,\n recordID: part.origin?.recordID ?? null,\n rule: part.origin?.rule ?? \"appearance-plan-resolved-part\"\n }\n };\n const sourceVersion = ResolvePartSourceVersion(\n library,\n common.partSourceRecordID,\n part.origin?.jsonPointer\n );\n const retainedModel = ResolveRetainedRequestedLodModel(sourceVersion, part.requestedLod);\n const configurationPath = OptionalResourcePath(part.configurationPath)\n ?? retainedModel?.configurationPath\n ?? null;\n const geometryPath = OptionalResourcePath(part.geometryPath)\n ?? retainedModel?.geometryPath\n ?? null;\n const geometryCandidates = sourceVersion?.geometryCandidates\n ?.map(value => OptionalResourcePath(value))\n .filter(Boolean) ?? [];\n const configurationCandidateCount = sourceVersion?.configurationCandidates\n ?.map(value => OptionalResourcePath(value))\n .filter(Boolean).length ?? 0;\n const configuredVisualCandidateInventory = configurationCandidateCount\n || geometryCandidates.length\n ? {\n configurationCount: configurationCandidateCount,\n geometryCount: geometryCandidates.length\n }\n : null;\n\n if (configurationPath\n && (geometryPath || geometryCandidates.length)\n && this._shouldDeferContribution(common.partSourceRecordID, part, sourceVersion))\n {\n deferredContributionCount++;\n operations.push({\n operation: \"deferred-contribution\",\n ...common,\n configurationPath,\n geometryPath,\n ...(configuredVisualCandidateInventory\n ? { configuredVisualCandidateInventory }\n : {}),\n reason: \"authored-nonrenderable-ragdoll-proxy\"\n });\n }\n else if (configurationPath && (geometryPath || geometryCandidates.length))\n {\n const metadata = ResolvePartMetadata(\n library,\n common.partSourceRecordID,\n part.origin?.jsonPointer\n );\n const foundationCoverage = ResolveConfiguredFoundationCoverage({\n policy: this._foundationCoveragePolicy,\n library,\n appearancePlan,\n layer,\n sex: foundation.sex,\n foundationLayout: foundation.evidence?.layout ?? null,\n foundationSupports,\n groupID,\n partSourceRecordID: common.partSourceRecordID,\n metadata\n });\n\n configuredPartCount++;\n operations.push({\n operation: \"configured-part\",\n ...common,\n configurationPath,\n geometryPath,\n ...(geometryCandidates.length ? { geometryCandidates: [ ...geometryCandidates ] } : {}),\n ...(retainedModel ? {\n retainedVisualResolution: {\n status: \"derived\",\n rule: \"exact-requested-lod-retained-candidate-pair-v1\",\n requestedLod: retainedModel.requestedLod\n }\n } : {}),\n ...(foundationCoverage ? { foundationCoverage } : {})\n });\n }\n else\n {\n deferredContributionCount++;\n operations.push({\n operation: \"deferred-contribution\",\n ...common,\n configurationPath,\n geometryPath,\n ...(configuredVisualCandidateInventory\n ? { configuredVisualCandidateInventory }\n : {})\n });\n }\n }\n\n operations.push(foundation.operations.at(-1));\n const hasContributions = appearancePlan.layers.length > 0;\n return {\n ...foundation,\n evidence: hasContributions ? {\n status: \"policy\",\n rule: \"character-appearance-construction-v1\",\n sourceRule: \"reviewed-character-appearance-source-v1\",\n foundationRule: foundation.evidence?.rule ?? null,\n resolvedPartRule: \"appearance-plan-resolved-parts-v1\"\n } : { ...foundation.evidence },\n resolvedPartCount: appearancePlan.layers.length,\n configuredPartCount,\n deferredContributionCount,\n textureContributions,\n morphTargets,\n operations\n };\n }\n}\n\nfunction ResolveConfiguredFoundationCoverage({\n policy,\n library,\n appearancePlan,\n layer,\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata\n})\n{\n const direct = policy.Resolve({\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata\n });\n if (direct) return direct;\n\n const replacement = ResolveSleeveReplacement(partSourceRecordID, sex);\n if (!replacement) return null;\n const owners = appearancePlan.layers.flatMap(candidate =>\n {\n if (candidate === layer || candidate?.owner !== layer?.owner) return [];\n const sourceID = ResolvePlanPartSourceRecordID(candidate?.contributor);\n if (!sourceID || /^(?:female|male)\\/dependants(?:\\/|$)/iu.test(sourceID)) return [];\n const ownerMetadata = ResolvePartMetadata(\n library,\n sourceID,\n candidate.contributor?.origin?.jsonPointer\n );\n return MetadataOwnsExactDependency(ownerMetadata, replacement.relativePath)\n ? [ { sourceID, metadata: ownerMetadata } ]\n : [];\n });\n if (owners.length !== 1) return null;\n\n const ownerCoverage = policy.Resolve({\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata: owners[0].metadata\n });\n const relationships = ownerCoverage?.evidence?.relationships?.filter(value =>\n value?.foundationRole === replacement.foundationRole\n && [\n \"exact-foundation-support-parent-path\",\n \"exact-foundation-support-source-path\"\n ].includes(value?.relation)) ?? [];\n if (!relationships.length) return null;\n\n return {\n ...ownerCoverage,\n roles: [ replacement.foundationRole ],\n evidence: {\n ...ownerCoverage.evidence,\n relationships: relationships.map(value => ({ ...value })),\n selectingPartSourceRecordID: owners[0].sourceID,\n configuredReplacementPartSourceRecordID: partSourceRecordID\n }\n };\n}\n\nfunction ResolveSleeveReplacement(partSourceRecordID, sex)\n{\n const normalizedSex = String(sex ?? \"\").trim().toLowerCase();\n const normalizedSourceID = String(partSourceRecordID ?? \"\").trim().toLowerCase();\n const prefix = `${normalizedSex}/`;\n if (!normalizedSex || !normalizedSourceID.startsWith(prefix)) return null;\n\n const relativePath = normalizedSourceID.slice(prefix.length);\n const match = relativePath.match(/^dependants\\/(sleevesupper|sleeveslower)\\/([^/]+)$/u);\n if (!match || match[2] === \"standard\") return null;\n return {\n relativePath,\n foundationRole: match[1] === \"sleevesupper\" ? \"sleevesUpper\" : \"sleevesLower\"\n };\n}\n\nfunction MetadataOwnsExactDependency(metadata, relativePath)\n{\n return Array.isArray(metadata?.dependencies) && metadata.dependencies.some(value =>\n String(value?.modifierPath ?? \"\").trim().toLowerCase() === relativePath);\n}\n\nfunction ResolvePlanPartSourceRecordID(part)\n{\n return part?.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim() || null\n : null;\n}\n\nfunction ResolveFoundationSupports(operations)\n{\n return (operations ?? []).flatMap(value =>\n {\n const evidence = value?.evidence;\n const role = String(value?.role ?? \"\").trim();\n const partSourceRecordID = String(evidence?.supportPartSourceRecordID ?? \"\").trim();\n if (value?.operation !== \"geometry\"\n || evidence?.rule !== \"exact-foundation-torso-support-dependency-v1\"\n || !role\n || !partSourceRecordID)\n {\n return [];\n }\n return [ { role, partSourceRecordID } ];\n });\n}\n\nfunction ResolveMorphTargets(appearancePlan)\n{\n if (!Array.isArray(appearancePlan.morphTargets)) return [];\n return appearancePlan.morphTargets.map((value, index) =>\n {\n const modifierPath = String(value?.modifierPath ?? \"\").trim().toLowerCase();\n const targetName = String(value?.targetName ?? \"\").trim();\n const weight = Number(value?.weight);\n const ownerGroupID = String(value?.owner?.groupID ?? \"\").trim();\n if (!IsSupportedMorphPath(modifierPath)\n || !targetName\n || !Number.isFinite(weight)\n || !ownerGroupID)\n {\n throw new TypeError(\n `Character appearance morph target ${index} is not an exact resolved request`\n );\n }\n return {\n modifierPath,\n targetName,\n weight,\n ownerGroupID,\n evidence: {\n status: \"policy\",\n rule: \"normalized-character-morph-target-v1\",\n sourceRule: \"reviewed-normalized-morph-target-source-v1\",\n sourceStatus: value.origin?.kind ?? null,\n document: value.origin?.document ?? null,\n recordID: value.origin?.recordID ?? null,\n jsonPointer: value.origin?.jsonPointer ?? null,\n sourceRuleDetail: value.origin?.rule ?? null\n }\n };\n });\n}\n\nfunction IsSupportedMorphPath(value)\n{\n return [ \"utilityshapes/\", \"sculpt/\" ].some(prefix =>\n value.startsWith(prefix) && value.length > prefix.length);\n}\n\n/** Preserves the reviewed proxy classification as an injectable policy. */\nfunction IsNonRenderableRagdollProxy(partSourceRecordID)\n{\n return /^(?:female|male)\\/dependants\\/ragdoll(?:\\/|$)/iu.test(\n String(partSourceRecordID ?? \"\").trim()\n );\n}\n\nfunction ResolvePartMetadata(library, recordID, jsonPointer)\n{\n const version = ResolvePartSourceVersion(library, recordID, jsonPointer);\n if (version?.metadata) return version.metadata;\n if (!recordID || typeof library?.Get !== \"function\") return null;\n const source = library.Get(\"characterPartSources\", recordID);\n return source?.metadata ?? null;\n}\n\nfunction ResolvePartSourceVersion(library, recordID, jsonPointer)\n{\n if (!recordID || typeof library?.Get !== \"function\") return null;\n const source = library.Get(\"characterPartSources\", recordID);\n const match = String(jsonPointer ?? \"\").match(/^\\/versions\\/(\\d+)$/u);\n return match ? source?.versions?.[Number(match[1])] ?? null : null;\n}\n\nfunction ResolveRetainedRequestedLodModel(version, requestedLod)\n{\n const lod = Number(requestedLod);\n if (!Number.isInteger(lod) || lod < 0) return null;\n const configurations = ResolveRequestedLodCandidates(\n version?.configurationCandidates,\n lod,\n \"black\"\n );\n const geometries = ResolveRequestedLodCandidates(version?.geometryCandidates, lod, \"gr2\");\n if (configurations.length !== 1 || geometries.length !== 1) return null;\n\n const configurationPath = configurations[0];\n const geometryPath = geometries[0];\n if (ModelStem(configurationPath, \"black\") !== ModelStem(geometryPath, \"gr2\")) return null;\n return { configurationPath, geometryPath, requestedLod: lod };\n}\n\nfunction ResolveRequestedLodCandidates(values, lod, extension)\n{\n const suffix = new RegExp(`_lod${lod}\\\\.${extension}$`, \"iu\");\n return (values ?? []).map(value => OptionalResourcePath(value))\n .filter(value => value && suffix.test(value));\n}\n\nfunction ModelStem(value, extension)\n{\n return String(value).replace(new RegExp(`\\\\.${extension}$`, \"iu\"), \"\")\n .replaceAll(\"\\\\\\\\\", \"/\")\n .toLowerCase();\n}\n\nfunction RequireResourcePath(value, label)\n{\n const result = String(value ?? \"\").trim();\n if (!/^res:\\//iu.test(result))\n {\n throw new TypeError(`Character appearance construction ${label} must be a res:/ path`);\n }\n return result;\n}\n\nfunction OptionalResourcePath(value)\n{\n const result = String(value ?? \"\").trim();\n return result ? RequireResourcePath(result, \"optional contribution path\") : null;\n}\n\nexport default CjsCharacterAppearanceConstruction;\n"],"names":["CjsCharacterAppearanceConstruction","_foundationCoveragePolicy","_foundationResolver","_shouldDeferContribution","_texturePolicy","constructor","foundationResolver","foundationCoveragePolicy","CjsCharacterFoundationCoveragePolicy","texturePolicy","CjsCharacterTexturePolicy","shouldDeferContribution","IsNonRenderableRagdollProxy","Resolve","TypeError","paperdoll","appearancePlan","library","Array","isArray","parts","layers","expectedContributions","map","layer","layerIndex","partIndex","indexOf","contributor","groupID","String","owner","trim","Error","foundation","operations","length","foundationSupports","ResolveFoundationSupports","slice","textureContributions","morphTargets","ResolveMorphTargets","CjsCharacterTextureContributions","validate","configuredPartCount","deferredContributionCount","part","common","partSourceRecordID","origin","document","recordID","evidence","status","kind","rule","sourceVersion","ResolvePartSourceVersion","jsonPointer","retainedModel","ResolveRetainedRequestedLodModel","requestedLod","configurationPath","OptionalResourcePath","geometryPath","geometryCandidates","value","filter","Boolean","configurationCandidateCount","configurationCandidates","configuredVisualCandidateInventory","configurationCount","geometryCount","push","operation","reason","metadata","ResolvePartMetadata","foundationCoverage","ResolveConfiguredFoundationCoverage","policy","sex","foundationLayout","layout","retainedVisualResolution","at","hasContributions","sourceRule","foundationRule","resolvedPartRule","resolvedPartCount","direct","replacement","ResolveSleeveReplacement","owners","flatMap","candidate","sourceID","ResolvePlanPartSourceRecordID","test","ownerMetadata","MetadataOwnsExactDependency","relativePath","ownerCoverage","relationships","foundationRole","includes","relation","roles","selectingPartSourceRecordID","configuredReplacementPartSourceRecordID","normalizedSex","toLowerCase","normalizedSourceID","prefix","startsWith","match","dependencies","some","modifierPath","role","supportPartSourceRecordID","index","targetName","weight","Number","ownerGroupID","IsSupportedMorphPath","isFinite","sourceStatus","sourceRuleDetail","version","Get","source","versions","lod","isInteger","configurations","ResolveRequestedLodCandidates","geometries","ModelStem","values","extension","suffix","RegExp","replace","replaceAll","RequireResourcePath","label","result"],"mappings":"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"}
1
+ {"version":3,"file":"CjsCharacterAppearanceConstruction.js","sources":["../../../src/character/CjsCharacterAppearanceConstruction.js"],"sourcesContent":["import { CjsCharacterFoundationCoveragePolicy } from \"./CjsCharacterFoundationCoveragePolicy.js\";\nimport { CjsCharacterTextureContributions } from \"./CjsCharacterTextureContributions.js\";\nimport { CjsCharacterTexturePolicy } from \"./CjsCharacterTexturePolicy.js\";\n\n/**\n * Combines injected foundation construction with resolved plan parts into one\n * renderer-neutral appearance construction sequence.\n */\nexport class CjsCharacterAppearanceConstruction\n{\n _foundationCoveragePolicy;\n\n _foundationResolver;\n\n _shouldDeferContribution;\n\n _texturePolicy;\n\n /**\n * Configures the foundation resolver, coverage and texture policies, and\n * contribution deferral predicate.\n */\n constructor({\n foundationResolver,\n foundationCoveragePolicy = new CjsCharacterFoundationCoveragePolicy(),\n texturePolicy = new CjsCharacterTexturePolicy(),\n shouldDeferContribution = IsNonRenderableRagdollProxy\n } = {})\n {\n if (typeof foundationResolver?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a foundation resolver\");\n }\n if (typeof texturePolicy?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a texture policy\");\n }\n if (typeof foundationCoveragePolicy?.Resolve !== \"function\")\n {\n throw new TypeError(\"Character appearance construction requires a foundation coverage policy\");\n }\n if (typeof shouldDeferContribution !== \"function\")\n {\n throw new TypeError(\"Character appearance construction shouldDeferContribution must be a function\");\n }\n\n this._foundationResolver = foundationResolver;\n this._foundationCoveragePolicy = foundationCoveragePolicy;\n this._texturePolicy = texturePolicy;\n this._shouldDeferContribution = shouldDeferContribution;\n }\n\n /** Produces foundation operations followed by every exact resolved plan part. */\n Resolve(paperdoll, appearancePlan, library)\n {\n if (!appearancePlan || typeof appearancePlan !== \"object\")\n {\n throw new TypeError(\"Character appearance construction requires an appearance plan\");\n }\n if (!Array.isArray(appearancePlan.parts) || !Array.isArray(appearancePlan.layers))\n {\n throw new TypeError(\"Character appearance construction requires plan parts and layers\");\n }\n if (!library || typeof library !== \"object\")\n {\n throw new TypeError(\"Character appearance construction requires the installed character library\");\n }\n\n const expectedContributions = appearancePlan.layers.map((layer, layerIndex) =>\n {\n const partIndex = appearancePlan.parts.indexOf(layer?.contributor);\n const groupID = String(layer?.owner?.groupID ?? \"\").trim();\n if (partIndex === -1)\n {\n throw new Error(`Appearance layer ${layerIndex} does not reference a plan-owned part`);\n }\n if (!groupID)\n {\n throw new Error(`Appearance layer ${layerIndex} has no selection group`);\n }\n return { layerIndex, partIndex, groupID };\n });\n const foundation = this._foundationResolver.Resolve(paperdoll, appearancePlan, library);\n if (!foundation || !Array.isArray(foundation.operations) || !foundation.operations.length)\n {\n throw new TypeError(\"Character foundation resolver must return ordered operations\");\n }\n const foundationSupports = ResolveFoundationSupports(foundation.operations);\n const operations = foundation.operations.slice(0, -1);\n const textureContributions = this._texturePolicy.Resolve(library, paperdoll, appearancePlan);\n const morphTargets = ResolveMorphTargets(appearancePlan);\n CjsCharacterTextureContributions.validate(\n textureContributions,\n expectedContributions,\n \"Character appearance construction\"\n );\n\n let configuredPartCount = 0;\n let deferredContributionCount = 0;\n for (let layerIndex = 0; layerIndex < appearancePlan.layers.length; layerIndex++)\n {\n const layer = appearancePlan.layers[layerIndex];\n const part = layer.contributor;\n const { partIndex, groupID } = expectedContributions[layerIndex];\n const common = {\n layerIndex,\n partIndex,\n groupID,\n partSourceRecordID: part.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim() || null\n : null,\n evidence: {\n status: part.origin?.kind ?? \"derived\",\n document: part.origin?.document ?? null,\n recordID: part.origin?.recordID ?? null,\n rule: part.origin?.rule ?? \"appearance-plan-resolved-part\"\n }\n };\n const sourceVersion = ResolvePartSourceVersion(\n library,\n common.partSourceRecordID,\n part.origin?.jsonPointer\n );\n const retainedModel = ResolveRetainedRequestedLodModel(sourceVersion, part.requestedLod);\n const configurationPath = OptionalResourcePath(part.configurationPath)\n ?? retainedModel?.configurationPath\n ?? null;\n const geometryPath = OptionalResourcePath(part.geometryPath)\n ?? retainedModel?.geometryPath\n ?? null;\n const geometryCandidates = sourceVersion?.geometryCandidates\n ?.map(value => OptionalResourcePath(value))\n .filter(Boolean) ?? [];\n const configurationCandidateCount = sourceVersion?.configurationCandidates\n ?.map(value => OptionalResourcePath(value))\n .filter(Boolean).length ?? 0;\n const configuredVisualCandidateInventory = configurationCandidateCount\n || geometryCandidates.length\n ? {\n configurationCount: configurationCandidateCount,\n geometryCount: geometryCandidates.length\n }\n : null;\n\n if (configurationPath\n && (geometryPath || geometryCandidates.length)\n && this._shouldDeferContribution(common.partSourceRecordID, part, sourceVersion))\n {\n deferredContributionCount++;\n operations.push({\n operation: \"deferred-contribution\",\n ...common,\n configurationPath,\n geometryPath,\n ...(configuredVisualCandidateInventory\n ? { configuredVisualCandidateInventory }\n : {}),\n reason: \"authored-nonrenderable-ragdoll-proxy\"\n });\n }\n else if (configurationPath && (geometryPath || geometryCandidates.length))\n {\n const metadata = ResolvePartMetadata(\n library,\n common.partSourceRecordID,\n part.origin?.jsonPointer\n );\n const foundationCoverage = ResolveConfiguredFoundationCoverage({\n policy: this._foundationCoveragePolicy,\n library,\n appearancePlan,\n layer,\n sex: foundation.sex,\n foundationLayout: foundation.evidence?.layout ?? null,\n foundationSupports,\n groupID,\n partSourceRecordID: common.partSourceRecordID,\n metadata\n });\n\n configuredPartCount++;\n operations.push({\n operation: \"configured-part\",\n ...common,\n configurationPath,\n geometryPath,\n ...(geometryCandidates.length ? { geometryCandidates: [ ...geometryCandidates ] } : {}),\n ...(retainedModel ? {\n retainedVisualResolution: {\n status: \"derived\",\n rule: \"exact-requested-lod-retained-candidate-pair-v1\",\n requestedLod: retainedModel.requestedLod\n }\n } : {}),\n ...(foundationCoverage ? { foundationCoverage } : {})\n });\n }\n else\n {\n deferredContributionCount++;\n operations.push({\n operation: \"deferred-contribution\",\n ...common,\n configurationPath,\n geometryPath,\n ...(configuredVisualCandidateInventory\n ? { configuredVisualCandidateInventory }\n : {})\n });\n }\n }\n\n operations.push(foundation.operations.at(-1));\n const hasContributions = appearancePlan.layers.length > 0;\n return {\n ...foundation,\n evidence: hasContributions ? {\n status: \"policy\",\n rule: \"character-appearance-construction-v1\",\n sourceRule: \"reviewed-character-appearance-source-v1\",\n foundationRule: foundation.evidence?.rule ?? null,\n resolvedPartRule: \"appearance-plan-resolved-parts-v1\"\n } : { ...foundation.evidence },\n resolvedPartCount: appearancePlan.layers.length,\n configuredPartCount,\n deferredContributionCount,\n textureContributions,\n morphTargets,\n operations\n };\n }\n}\n\nfunction ResolveConfiguredFoundationCoverage({\n policy,\n library,\n appearancePlan,\n layer,\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata\n})\n{\n const direct = policy.Resolve({\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata\n });\n if (direct) return direct;\n\n const replacement = ResolveSleeveReplacement(partSourceRecordID, sex);\n if (!replacement) return null;\n const owners = appearancePlan.layers.flatMap(candidate =>\n {\n if (candidate === layer || candidate?.owner !== layer?.owner) return [];\n const sourceID = ResolvePlanPartSourceRecordID(candidate?.contributor);\n if (!sourceID || /^(?:female|male)\\/dependants(?:\\/|$)/iu.test(sourceID)) return [];\n const ownerMetadata = ResolvePartMetadata(\n library,\n sourceID,\n candidate.contributor?.origin?.jsonPointer\n );\n return MetadataOwnsExactDependency(ownerMetadata, replacement.relativePath)\n ? [ { sourceID, metadata: ownerMetadata } ]\n : [];\n });\n if (owners.length !== 1) return null;\n\n const ownerCoverage = policy.Resolve({\n sex,\n foundationLayout,\n foundationSupports,\n groupID,\n partSourceRecordID,\n metadata: owners[0].metadata\n });\n const relationships = ownerCoverage?.evidence?.relationships?.filter(value =>\n value?.foundationRole === replacement.foundationRole\n && [\n \"exact-foundation-support-parent-path\",\n \"exact-foundation-support-source-path\"\n ].includes(value?.relation)) ?? [];\n if (!relationships.length) return null;\n\n return {\n ...ownerCoverage,\n roles: [ replacement.foundationRole ],\n evidence: {\n ...ownerCoverage.evidence,\n relationships: relationships.map(value => ({ ...value })),\n selectingPartSourceRecordID: owners[0].sourceID,\n configuredReplacementPartSourceRecordID: partSourceRecordID\n }\n };\n}\n\nfunction ResolveSleeveReplacement(partSourceRecordID, sex)\n{\n const normalizedSex = String(sex ?? \"\").trim().toLowerCase();\n const normalizedSourceID = String(partSourceRecordID ?? \"\").trim().toLowerCase();\n const prefix = `${normalizedSex}/`;\n if (!normalizedSex || !normalizedSourceID.startsWith(prefix)) return null;\n\n const relativePath = normalizedSourceID.slice(prefix.length);\n const match = relativePath.match(/^dependants\\/(sleevesupper|sleeveslower)\\/([^/]+)$/u);\n if (!match || match[2] === \"standard\") return null;\n return {\n relativePath,\n foundationRole: match[1] === \"sleevesupper\" ? \"sleevesUpper\" : \"sleevesLower\"\n };\n}\n\nfunction MetadataOwnsExactDependency(metadata, relativePath)\n{\n return Array.isArray(metadata?.dependencies) && metadata.dependencies.some(value =>\n String(value?.modifierPath ?? \"\").trim().toLowerCase() === relativePath);\n}\n\nfunction ResolvePlanPartSourceRecordID(part)\n{\n return part?.origin?.document === \"characterPartSources\"\n ? String(part.origin.recordID ?? \"\").trim() || null\n : null;\n}\n\nfunction ResolveFoundationSupports(operations)\n{\n return (operations ?? []).flatMap(value =>\n {\n const evidence = value?.evidence;\n const role = String(value?.role ?? \"\").trim();\n const partSourceRecordID = String(evidence?.supportPartSourceRecordID ?? \"\").trim();\n if (value?.operation !== \"geometry\"\n || evidence?.rule !== \"exact-foundation-torso-support-dependency-v1\"\n || !role\n || !partSourceRecordID)\n {\n return [];\n }\n return [ { role, partSourceRecordID } ];\n });\n}\n\nfunction ResolveMorphTargets(appearancePlan)\n{\n if (!Array.isArray(appearancePlan.morphTargets)) return [];\n return appearancePlan.morphTargets.map((value, index) =>\n {\n const modifierPath = String(value?.modifierPath ?? \"\").trim().toLowerCase();\n const targetName = String(value?.targetName ?? \"\").trim();\n const weight = Number(value?.weight);\n const ownerGroupID = String(value?.owner?.groupID ?? \"\").trim();\n if (!IsSupportedMorphPath(modifierPath)\n || !targetName\n || !Number.isFinite(weight)\n || !ownerGroupID)\n {\n throw new TypeError(\n `Character appearance morph target ${index} is not an exact resolved request`\n );\n }\n return {\n modifierPath,\n targetName,\n weight,\n ownerGroupID,\n evidence: {\n status: \"policy\",\n rule: \"normalized-character-morph-target-v1\",\n sourceRule: \"reviewed-normalized-morph-target-source-v1\",\n sourceStatus: value.origin?.kind ?? null,\n document: value.origin?.document ?? null,\n recordID: value.origin?.recordID ?? null,\n jsonPointer: value.origin?.jsonPointer ?? null,\n sourceRuleDetail: value.origin?.rule ?? null\n }\n };\n });\n}\n\nfunction IsSupportedMorphPath(value)\n{\n return [ \"utilityshapes/\", \"sculpt/\" ].some(prefix =>\n value.startsWith(prefix) && value.length > prefix.length);\n}\n\n/** Preserves the reviewed proxy classification as an injectable policy. */\nfunction IsNonRenderableRagdollProxy(partSourceRecordID)\n{\n return /^(?:female|male)\\/dependants\\/ragdoll(?:\\/|$)/iu.test(\n String(partSourceRecordID ?? \"\").trim()\n );\n}\n\nfunction ResolvePartMetadata(library, recordID, jsonPointer)\n{\n const version = ResolvePartSourceVersion(library, recordID, jsonPointer);\n if (version?.metadata) return version.metadata;\n if (!recordID || typeof library?.Get !== \"function\") return null;\n const source = library.Get(\"characterPartSources\", recordID);\n return source?.metadata ?? null;\n}\n\nfunction ResolvePartSourceVersion(library, recordID, jsonPointer)\n{\n if (!recordID || typeof library?.Get !== \"function\") return null;\n const source = library.Get(\"characterPartSources\", recordID);\n const match = String(jsonPointer ?? \"\").match(/^\\/versions\\/(\\d+)$/u);\n return match ? source?.versions?.[Number(match[1])] ?? null : null;\n}\n\nfunction ResolveRetainedRequestedLodModel(version, requestedLod)\n{\n const lod = Number(requestedLod);\n if (!Number.isInteger(lod) || lod < 0) return null;\n const configurations = ResolveRequestedLodCandidates(\n version?.configurationCandidates,\n lod,\n \"black\"\n );\n const geometries = ResolveRequestedLodCandidates(version?.geometryCandidates, lod, \"gr2\");\n if (configurations.length !== 1 || geometries.length !== 1) return null;\n\n const configurationPath = configurations[0];\n const geometryPath = geometries[0];\n if (ModelStem(configurationPath, \"black\") !== ModelStem(geometryPath, \"gr2\")) return null;\n return { configurationPath, geometryPath, requestedLod: lod };\n}\n\nfunction ResolveRequestedLodCandidates(values, lod, extension)\n{\n const suffix = new RegExp(`_lod${lod}\\\\.${extension}$`, \"iu\");\n return (values ?? []).map(value => OptionalResourcePath(value))\n .filter(value => value && suffix.test(value));\n}\n\nfunction ModelStem(value, extension)\n{\n return String(value).replace(new RegExp(`\\\\.${extension}$`, \"iu\"), \"\")\n .replaceAll(\"\\\\\\\\\", \"/\")\n .toLowerCase();\n}\n\nfunction RequireResourcePath(value, label)\n{\n const result = String(value ?? \"\").trim();\n if (!/^res:\\//iu.test(result))\n {\n throw new TypeError(`Character appearance construction ${label} must be a res:/ path`);\n }\n return result;\n}\n\nfunction OptionalResourcePath(value)\n{\n const result = String(value ?? \"\").trim();\n return result ? RequireResourcePath(result, \"optional contribution path\") : null;\n}\n\nexport default CjsCharacterAppearanceConstruction;\n"],"names":["CjsCharacterAppearanceConstruction","_foundationCoveragePolicy","_foundationResolver","_shouldDeferContribution","_texturePolicy","constructor","foundationResolver","foundationCoveragePolicy","CjsCharacterFoundationCoveragePolicy","texturePolicy","CjsCharacterTexturePolicy","shouldDeferContribution","IsNonRenderableRagdollProxy","Resolve","TypeError","paperdoll","appearancePlan","library","Array","isArray","parts","layers","expectedContributions","map","layer","layerIndex","partIndex","indexOf","contributor","groupID","String","owner","trim","Error","foundation","operations","length","foundationSupports","ResolveFoundationSupports","slice","textureContributions","morphTargets","ResolveMorphTargets","CjsCharacterTextureContributions","validate","configuredPartCount","deferredContributionCount","part","common","partSourceRecordID","origin","document","recordID","evidence","status","kind","rule","sourceVersion","ResolvePartSourceVersion","jsonPointer","retainedModel","ResolveRetainedRequestedLodModel","requestedLod","configurationPath","OptionalResourcePath","geometryPath","geometryCandidates","value","filter","Boolean","configurationCandidateCount","configurationCandidates","configuredVisualCandidateInventory","configurationCount","geometryCount","push","operation","reason","metadata","ResolvePartMetadata","foundationCoverage","ResolveConfiguredFoundationCoverage","policy","sex","foundationLayout","layout","retainedVisualResolution","at","hasContributions","sourceRule","foundationRule","resolvedPartRule","resolvedPartCount","direct","replacement","ResolveSleeveReplacement","owners","flatMap","candidate","sourceID","ResolvePlanPartSourceRecordID","test","ownerMetadata","MetadataOwnsExactDependency","relativePath","ownerCoverage","relationships","foundationRole","includes","relation","roles","selectingPartSourceRecordID","configuredReplacementPartSourceRecordID","normalizedSex","toLowerCase","normalizedSourceID","prefix","startsWith","match","dependencies","some","modifierPath","role","supportPartSourceRecordID","index","targetName","weight","Number","ownerGroupID","IsSupportedMorphPath","isFinite","sourceStatus","sourceRuleDetail","version","Get","source","versions","lod","isInteger","configurations","ResolveRequestedLodCandidates","geometries","ModelStem","values","extension","suffix","RegExp","replace","replaceAll","RequireResourcePath","label","result"],"mappings":"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"}
@@ -197,6 +197,11 @@ class CjsCharacterAppearanceManager {
197
197
  }
198
198
  return result;
199
199
  }
200
+
201
+ /**
202
+ * Applies the current appearance revision, reusing compatible state and
203
+ * releasing superseded or failed preparations.
204
+ */
200
205
  async #Apply(construction, requestRevision, options) {
201
206
  if (requestRevision !== this.#requestedRevision) {
202
207
  this.#metrics.staleBeforePrepare++;
@@ -314,17 +319,26 @@ class CjsCharacterAppearanceManager {
314
319
  this.#AppendDiagnostics(result, staged);
315
320
  return result;
316
321
  }
322
+
323
+ /**
324
+ * Releases an appearance through the configured adapter and counts completed
325
+ * releases.
326
+ */
317
327
  async #Release(value, context) {
318
328
  if (value && typeof this.#adapter?.Release === "function") {
319
329
  await this.#adapter.Release(value, context);
320
330
  this.#metrics.releases++;
321
331
  }
322
332
  }
333
+
334
+ /** Adds adapter diagnostics to the result when the adapter provides them. */
323
335
  #AppendDiagnostics(result, appearance) {
324
336
  if (typeof this.#adapter?.GetDiagnostics === "function") {
325
337
  result.details = this.#adapter.GetDiagnostics(appearance);
326
338
  }
327
339
  }
340
+
341
+ /** Refreshes diagnostics on the last committed result. */
328
342
  #RefreshCommittedDiagnostics() {
329
343
  if (this.#lastResult?.status === "committed") {
330
344
  this.#AppendDiagnostics(this.#lastResult, this.#committed);
@@ -1 +1 @@
1
- {"version":3,"file":"CjsCharacterAppearanceManager.js","sources":["../../../src/character/CjsCharacterAppearanceManager.js"],"sourcesContent":["/**\n * Serializes one character's appearance realization and publishes only complete\n * staged revisions. The injected appearance AL owns resource and GPU work;\n * this CPU coordinator owns the revision and handoff contract.\n */\nexport class CjsCharacterAppearanceManager\n{\n #adapter;\n\n #capabilities;\n\n #committed = null;\n\n #committedConstruction = null;\n\n #lastResult = null;\n\n #metrics = {\n requests: 0,\n prepares: 0,\n commits: 0,\n handoffs: 0,\n releases: 0,\n reused: 0,\n morphUpdates: 0,\n staleBeforePrepare: 0,\n staleAfterPrepare: 0,\n failures: 0,\n queueDepth: 0,\n peakQueueDepth: 0\n };\n\n #requestedRevision = 0;\n\n #tail = Promise.resolve();\n\n /** Creates a CPU lifecycle coordinator with an optional realization AL. */\n constructor({ adapter = null, capabilities = null } = {})\n {\n this.SetAdapter(adapter);\n this.#capabilities = NormalizeCapabilities(capabilities);\n }\n\n /** Replaces the appearance realization AL before work is queued. */\n SetAdapter(adapter = null)\n {\n if (adapter !== null\n && (typeof adapter?.Prepare !== \"function\"\n || typeof adapter?.Commit !== \"function\"\n || typeof adapter?.Release !== \"function\"))\n {\n throw new TypeError(\n \"Character appearance AL must expose Prepare(construction, context), \"\n + \"Commit(stage, context), and Release(stage, context)\"\n );\n }\n if (this.#metrics.queueDepth)\n {\n throw new Error(\"Cannot replace the character appearance AL while work is queued\");\n }\n if (this.#committed)\n {\n throw new Error(\"Release the committed appearance before replacing its AL\");\n }\n\n this.#adapter = adapter;\n return this;\n }\n\n /** Replaces the renderer-supplied capability description. */\n SetCapabilities(capabilities = null)\n {\n this.#capabilities = NormalizeCapabilities(capabilities);\n return this;\n }\n\n /** Describes only capabilities supplied by the current realization AL. */\n GetCapabilities()\n {\n const result = {\n ...this.#capabilities,\n adapterConnected: this.#adapter !== null\n };\n const maximumBones = result.maximumBones;\n const requiredBones = result.requiredBones;\n if (Number.isSafeInteger(maximumBones) && Number.isSafeInteger(requiredBones))\n {\n result.completeBonePalette = maximumBones >= requiredBones;\n }\n return result;\n }\n\n /** Returns current capabilities, lifecycle metrics, and the latest outcome. */\n GetState()\n {\n return {\n ...this.GetCapabilities(),\n lastResult: this.#lastResult ? { ...this.#lastResult } : null,\n metrics: { ...this.#metrics }\n };\n }\n\n /** Warms immutable configured-model templates when the current AL supports it. */\n WarmConfiguredModelTemplates(paths)\n {\n if (typeof this.#adapter?.WarmConfiguredModelTemplates !== \"function\")\n {\n return Promise.resolve({\n status: \"unavailable\",\n reason: \"adapter-warm-unavailable\"\n });\n }\n return this.#adapter.WarmConfiguredModelTemplates(paths);\n }\n\n /** Requests an AL-specific configured-part visibility diagnostic. */\n SetConfiguredPartDisplay(partSourceRecordID, display)\n {\n if (!this.#committed)\n {\n throw new Error(\"Character appearance manager has no committed appearance\");\n }\n if (typeof this.#adapter?.SetConfiguredPartDisplay !== \"function\")\n {\n throw new Error(\"Character appearance AL cannot isolate configured parts\");\n }\n\n const result = this.#adapter.SetConfiguredPartDisplay(\n this.#committed,\n partSourceRecordID,\n display\n );\n this.#RefreshCommittedDiagnostics();\n return result;\n }\n\n /** Requests an AL-specific foundation visibility diagnostic. */\n SetFoundationDisplay(role, display)\n {\n if (!this.#committed)\n {\n throw new Error(\"Character appearance manager has no committed appearance\");\n }\n if (typeof this.#adapter?.SetFoundationDisplay !== \"function\")\n {\n throw new Error(\"Character appearance AL cannot isolate foundations\");\n }\n\n const result = this.#adapter.SetFoundationDisplay(this.#committed, role, display);\n this.#RefreshCommittedDiagnostics();\n return result;\n }\n\n /** Queues one construction and prevents stale prepared work from publishing. */\n ApplyConstruction(construction, options = {})\n {\n if (!construction\n || typeof construction !== \"object\"\n || !Array.isArray(construction.operations))\n {\n return Promise.reject(\n new TypeError(\"Character appearance manager requires a construction sequence\")\n );\n }\n\n const requestRevision = ++this.#requestedRevision;\n this.#metrics.requests++;\n this.#metrics.queueDepth++;\n this.#metrics.peakQueueDepth = Math.max(\n this.#metrics.peakQueueDepth,\n this.#metrics.queueDepth\n );\n\n const operation = this.#tail.then(() => this.#Apply(\n construction,\n requestRevision,\n options\n ));\n const tracked = operation.finally(() =>\n {\n this.#metrics.queueDepth = Math.max(0, this.#metrics.queueDepth - 1);\n });\n this.#tail = tracked.catch(() => undefined);\n return tracked.then(result =>\n {\n this.#lastResult = result;\n return result;\n });\n }\n\n /** Releases the current stage through the serialized lifecycle. */\n ReleaseCommitted({ reason = \"released\", source = this } = {})\n {\n const revision = ++this.#requestedRevision;\n const operation = this.#tail.then(async () =>\n {\n const committed = this.#committed;\n this.#committed = null;\n this.#committedConstruction = null;\n if (committed)\n {\n await this.#Release(committed, { reason, revision, source });\n }\n\n const result = { status: \"released\", revision };\n this.#lastResult = result;\n return result;\n });\n this.#tail = operation.catch(() => undefined);\n return operation;\n }\n\n /**\n * Invalidates queued work and immediately asks the current AL to release\n * the committed stage. This is a teardown path, not a replacement path.\n */\n Dispose({ reason = \"disposed\", source = this } = {})\n {\n const revision = ++this.#requestedRevision;\n const committed = this.#committed;\n this.#committed = null;\n this.#committedConstruction = null;\n\n const result = {\n status: \"disposed\",\n revision,\n released: Boolean(committed)\n };\n this.#lastResult = result;\n if (!committed || typeof this.#adapter?.Release !== \"function\") return result;\n\n const completion = this.#adapter.Release(committed, { reason, revision, source });\n if (completion && typeof completion.catch === \"function\")\n {\n completion.catch(() => undefined);\n }\n return result;\n }\n\n async #Apply(construction, requestRevision, options)\n {\n if (requestRevision !== this.#requestedRevision)\n {\n this.#metrics.staleBeforePrepare++;\n return {\n status: \"stale\",\n revision: requestRevision,\n skippedBeforePrepare: true\n };\n }\n if (!this.#adapter)\n {\n return {\n status: \"deferred\",\n reason: \"adapter-not-configured\",\n revision: requestRevision,\n capabilities: this.GetCapabilities()\n };\n }\n\n const constructionState = DescribeConstruction(construction);\n const appearanceChange = ApplyConstructionDomainInvalidations(\n CompareConstructionStates(this.#committedConstruction, constructionState),\n options.invalidateDomains\n );\n const context = {\n revision: requestRevision,\n appearancePlan: options.appearancePlan ?? null,\n source: options.source ?? this,\n construction,\n appearanceChange,\n previousAppearance: this.#committed\n };\n\n if (this.#committed\n && requestRevision === this.#requestedRevision\n && appearanceChange.identical)\n {\n const result = {\n status: \"committed\",\n revision: requestRevision,\n reused: true,\n reuseRule: \"identical-construction\",\n appearanceChange\n };\n this.#metrics.reused++;\n this.#AppendDiagnostics(result, this.#committed);\n return result;\n }\n\n if (this.#committed\n && appearanceChange.dirtyDomains.length === 1\n && appearanceChange.dirtyDomains[0] === \"morphs\"\n && typeof this.#adapter.UpdateMorphTargets === \"function\")\n {\n if (requestRevision !== this.#requestedRevision)\n {\n return { status: \"stale\", revision: requestRevision };\n }\n\n const update = await this.#adapter.UpdateMorphTargets(\n this.#committed,\n construction.morphTargets ?? [],\n context\n );\n this.#metrics.morphUpdates++;\n this.#committedConstruction = constructionState;\n if (requestRevision !== this.#requestedRevision)\n {\n return { status: \"stale\", revision: requestRevision };\n }\n\n const result = {\n status: \"committed\",\n revision: requestRevision,\n updatedInPlace: true,\n updateRule: \"morph-only\",\n appearanceChange,\n update\n };\n this.#AppendDiagnostics(result, this.#committed);\n return result;\n }\n\n this.#metrics.prepares++;\n let staged;\n try\n {\n staged = await this.#adapter.Prepare(construction, context);\n }\n catch (error)\n {\n this.#metrics.failures++;\n throw error;\n }\n\n if (requestRevision !== this.#requestedRevision)\n {\n this.#metrics.staleAfterPrepare++;\n await this.#Release(staged, { ...context, reason: \"stale\" });\n return { status: \"stale\", revision: requestRevision };\n }\n\n const previous = this.#committed;\n try\n {\n if (previous && typeof this.#adapter.Handoff === \"function\")\n {\n await this.#adapter.Handoff(previous, staged, context);\n this.#metrics.handoffs++;\n }\n else\n {\n await this.#adapter.Commit(staged, context);\n this.#metrics.commits++;\n }\n this.#committed = staged;\n this.#committedConstruction = constructionState;\n }\n catch (error)\n {\n this.#metrics.failures++;\n await this.#Release(staged, { ...context, reason: \"commit-failed\" });\n throw error;\n }\n\n if (previous && previous !== staged)\n {\n await this.#Release(previous, { ...context, reason: \"replaced\" });\n }\n\n const result = { status: \"committed\", revision: requestRevision };\n this.#AppendDiagnostics(result, staged);\n return result;\n }\n\n async #Release(value, context)\n {\n if (value && typeof this.#adapter?.Release === \"function\")\n {\n await this.#adapter.Release(value, context);\n this.#metrics.releases++;\n }\n }\n\n #AppendDiagnostics(result, appearance)\n {\n if (typeof this.#adapter?.GetDiagnostics === \"function\")\n {\n result.details = this.#adapter.GetDiagnostics(appearance);\n }\n }\n\n #RefreshCommittedDiagnostics()\n {\n if (this.#lastResult?.status === \"committed\")\n {\n this.#AppendDiagnostics(this.#lastResult, this.#committed);\n }\n }\n}\n\nconst CONSTRUCTION_DOMAIN_NAMES = Object.freeze([\n \"foundation\",\n \"geometry\",\n \"bodyComposition\",\n \"headComposition\",\n \"privateComposition\",\n \"morphs\",\n \"coverage\"\n]);\n\nfunction NormalizeCapabilities(value)\n{\n if (value === null || value === undefined) return {};\n if (typeof value !== \"object\" || Array.isArray(value))\n {\n throw new TypeError(\"Character appearance capabilities must be a plain object or null\");\n }\n\n return { ...value };\n}\n\nfunction DescribeConstruction(construction)\n{\n const contributions = Array.isArray(construction.textureContributions)\n ? construction.textureContributions\n : [];\n const bodyContributions = [];\n const headContributions = [];\n const privateContributions = [];\n\n for (const contribution of contributions)\n {\n const targets = CollectContributionTargets(contribution);\n const unresolved = targets.size === 0;\n if (unresolved && !HasCompositionTextureEvidence(contribution)) continue;\n if (unresolved || targets.has(\"body\")) bodyContributions.push(contribution);\n if (unresolved || targets.has(\"head\")) headContributions.push(contribution);\n if (unresolved || [ ...targets ].some(value => ![ \"body\", \"head\" ].includes(value)))\n {\n privateContributions.push(contribution);\n }\n }\n\n const operations = Array.isArray(construction.operations) ? construction.operations : [];\n const foundation = {};\n for (const key of Object.keys(construction))\n {\n if ([\n \"operations\",\n \"textureContributions\",\n \"morphTargets\",\n \"evidence\",\n \"resolvedPartCount\",\n \"configuredPartCount\",\n \"deferredContributionCount\"\n ].includes(key)) continue;\n foundation[key] = construction[key];\n }\n\n return {\n signature: StableSignature(construction),\n domains: {\n foundation: StableSignature({\n foundation,\n operations: operations.filter(value => value?.operation !== \"configured-part\"\n && value?.operation !== \"deferred-contribution\")\n }),\n geometry: StableSignature(operations.map(value =>\n {\n if (!value || typeof value !== \"object\") return value;\n const { foundationCoverage, ...operation } = value;\n return operation;\n })),\n bodyComposition: StableSignature(bodyContributions),\n headComposition: StableSignature(headContributions),\n privateComposition: StableSignature(privateContributions),\n morphs: StableSignature(construction.morphTargets ?? []),\n coverage: StableSignature(operations.map(value => value?.foundationCoverage ?? null))\n }\n };\n}\n\nfunction HasCompositionTextureEvidence(value)\n{\n if (!value || typeof value !== \"object\") return false;\n return [ \"selectedTextures\", \"textureCandidates\", \"textures\" ].some(key =>\n Array.isArray(value[key]) && value[key].length > 0);\n}\n\nfunction CompareConstructionStates(previous, next)\n{\n if (!previous)\n {\n return {\n identical: false,\n initial: true,\n dirtyDomains: [ ...CONSTRUCTION_DOMAIN_NAMES ]\n };\n }\n\n const dirtyDomains = CONSTRUCTION_DOMAIN_NAMES.filter(\n name => previous.domains[name] !== next.domains[name]\n );\n const identical = previous.signature !== null && previous.signature === next.signature;\n return {\n identical,\n initial: false,\n dirtyDomains: identical ? [] : dirtyDomains.length ? dirtyDomains : [ \"construction\" ]\n };\n}\n\nfunction ApplyConstructionDomainInvalidations(changeSet, values = [])\n{\n if (!Array.isArray(values))\n {\n throw new TypeError(\"Appearance invalidation domains must be an array\");\n }\n if (!values.length) return changeSet;\n\n const invalidatedDomains = [];\n for (const value of values)\n {\n const domain = String(value ?? \"\").trim();\n if (!CONSTRUCTION_DOMAIN_NAMES.includes(domain))\n {\n throw new TypeError(\n `Unknown appearance invalidation domain ${JSON.stringify(domain)}`\n );\n }\n if (!invalidatedDomains.includes(domain)) invalidatedDomains.push(domain);\n }\n return {\n ...changeSet,\n identical: false,\n dirtyDomains: [ ...new Set([ ...changeSet.dirtyDomains, ...invalidatedDomains ]) ],\n invalidatedDomains\n };\n}\n\nfunction CollectContributionTargets(value, targets = new Set())\n{\n if (!value || typeof value !== \"object\") return targets;\n if (Array.isArray(value))\n {\n for (const item of value) CollectContributionTargets(item, targets);\n return targets;\n }\n for (const [ key, item ] of Object.entries(value))\n {\n if (key === \"target\" && typeof item === \"string\" && item.trim())\n {\n targets.add(item.trim().toLowerCase());\n }\n else\n {\n CollectContributionTargets(item, targets);\n }\n }\n return targets;\n}\n\nfunction StableSignature(value)\n{\n try\n {\n return JSON.stringify(NormalizeSignatureValue(value, new Set()));\n }\n catch\n {\n return null;\n }\n}\n\nfunction NormalizeSignatureValue(value, active)\n{\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n {\n return value;\n }\n if (typeof value === \"number\")\n {\n return Number.isFinite(value) ? value : { $number: String(value) };\n }\n if (typeof value === \"undefined\") return { $undefined: true };\n if (typeof value !== \"object\") throw new TypeError(\"Unsupported construction value\");\n if (active.has(value)) throw new TypeError(\"Cyclic construction value\");\n\n active.add(value);\n let result;\n if (Array.isArray(value))\n {\n result = value.map(item => NormalizeSignatureValue(item, active));\n }\n else\n {\n result = {};\n for (const key of Object.keys(value).sort())\n {\n result[key] = NormalizeSignatureValue(value[key], active);\n }\n }\n active.delete(value);\n return result;\n}\n\nexport default CjsCharacterAppearanceManager;\n"],"names":["CjsCharacterAppearanceManager","requests","prepares","commits","handoffs","releases","reused","morphUpdates","staleBeforePrepare","staleAfterPrepare","failures","queueDepth","peakQueueDepth","Promise","resolve","constructor","adapter","capabilities","SetAdapter","NormalizeCapabilities","Prepare","Commit","Release","TypeError","Error","SetCapabilities","GetCapabilities","result","adapterConnected","maximumBones","requiredBones","Number","isSafeInteger","completeBonePalette","GetState","lastResult","metrics","WarmConfiguredModelTemplates","paths","status","reason","SetConfiguredPartDisplay","partSourceRecordID","display","SetFoundationDisplay","role","ApplyConstruction","construction","options","Array","isArray","operations","reject","requestRevision","Math","max","operation","then","tracked","finally","catch","undefined","ReleaseCommitted","source","revision","committed","Dispose","released","Boolean","completion","#Apply","skippedBeforePrepare","constructionState","DescribeConstruction","appearanceChange","ApplyConstructionDomainInvalidations","CompareConstructionStates","invalidateDomains","context","appearancePlan","previousAppearance","identical","reuseRule","dirtyDomains","length","UpdateMorphTargets","update","morphTargets","updatedInPlace","updateRule","staged","error","previous","Handoff","#Release","value","#AppendDiagnostics","appearance","GetDiagnostics","details","#RefreshCommittedDiagnostics","CONSTRUCTION_DOMAIN_NAMES","Object","freeze","contributions","textureContributions","bodyContributions","headContributions","privateContributions","contribution","targets","CollectContributionTargets","unresolved","size","HasCompositionTextureEvidence","has","push","some","includes","foundation","key","keys","signature","StableSignature","domains","filter","geometry","map","foundationCoverage","bodyComposition","headComposition","privateComposition","morphs","coverage","next","initial","name","changeSet","values","invalidatedDomains","domain","String","trim","JSON","stringify","Set","item","entries","add","toLowerCase","NormalizeSignatureValue","active","isFinite","$number","$undefined","sort","delete"],"mappings":"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"}
1
+ {"version":3,"file":"CjsCharacterAppearanceManager.js","sources":["../../../src/character/CjsCharacterAppearanceManager.js"],"sourcesContent":["/**\n * Serializes one character's appearance realization and publishes only complete\n * staged revisions. The injected appearance AL owns resource and GPU work;\n * this CPU coordinator owns the revision and handoff contract.\n */\nexport class CjsCharacterAppearanceManager\n{\n #adapter;\n\n #capabilities;\n\n #committed = null;\n\n #committedConstruction = null;\n\n #lastResult = null;\n\n #metrics = {\n requests: 0,\n prepares: 0,\n commits: 0,\n handoffs: 0,\n releases: 0,\n reused: 0,\n morphUpdates: 0,\n staleBeforePrepare: 0,\n staleAfterPrepare: 0,\n failures: 0,\n queueDepth: 0,\n peakQueueDepth: 0\n };\n\n #requestedRevision = 0;\n\n #tail = Promise.resolve();\n\n /** Creates a CPU lifecycle coordinator with an optional realization AL. */\n constructor({ adapter = null, capabilities = null } = {})\n {\n this.SetAdapter(adapter);\n this.#capabilities = NormalizeCapabilities(capabilities);\n }\n\n /** Replaces the appearance realization AL before work is queued. */\n SetAdapter(adapter = null)\n {\n if (adapter !== null\n && (typeof adapter?.Prepare !== \"function\"\n || typeof adapter?.Commit !== \"function\"\n || typeof adapter?.Release !== \"function\"))\n {\n throw new TypeError(\n \"Character appearance AL must expose Prepare(construction, context), \"\n + \"Commit(stage, context), and Release(stage, context)\"\n );\n }\n if (this.#metrics.queueDepth)\n {\n throw new Error(\"Cannot replace the character appearance AL while work is queued\");\n }\n if (this.#committed)\n {\n throw new Error(\"Release the committed appearance before replacing its AL\");\n }\n\n this.#adapter = adapter;\n return this;\n }\n\n /** Replaces the renderer-supplied capability description. */\n SetCapabilities(capabilities = null)\n {\n this.#capabilities = NormalizeCapabilities(capabilities);\n return this;\n }\n\n /** Describes only capabilities supplied by the current realization AL. */\n GetCapabilities()\n {\n const result = {\n ...this.#capabilities,\n adapterConnected: this.#adapter !== null\n };\n const maximumBones = result.maximumBones;\n const requiredBones = result.requiredBones;\n if (Number.isSafeInteger(maximumBones) && Number.isSafeInteger(requiredBones))\n {\n result.completeBonePalette = maximumBones >= requiredBones;\n }\n return result;\n }\n\n /** Returns current capabilities, lifecycle metrics, and the latest outcome. */\n GetState()\n {\n return {\n ...this.GetCapabilities(),\n lastResult: this.#lastResult ? { ...this.#lastResult } : null,\n metrics: { ...this.#metrics }\n };\n }\n\n /** Warms immutable configured-model templates when the current AL supports it. */\n WarmConfiguredModelTemplates(paths)\n {\n if (typeof this.#adapter?.WarmConfiguredModelTemplates !== \"function\")\n {\n return Promise.resolve({\n status: \"unavailable\",\n reason: \"adapter-warm-unavailable\"\n });\n }\n return this.#adapter.WarmConfiguredModelTemplates(paths);\n }\n\n /** Requests an AL-specific configured-part visibility diagnostic. */\n SetConfiguredPartDisplay(partSourceRecordID, display)\n {\n if (!this.#committed)\n {\n throw new Error(\"Character appearance manager has no committed appearance\");\n }\n if (typeof this.#adapter?.SetConfiguredPartDisplay !== \"function\")\n {\n throw new Error(\"Character appearance AL cannot isolate configured parts\");\n }\n\n const result = this.#adapter.SetConfiguredPartDisplay(\n this.#committed,\n partSourceRecordID,\n display\n );\n this.#RefreshCommittedDiagnostics();\n return result;\n }\n\n /** Requests an AL-specific foundation visibility diagnostic. */\n SetFoundationDisplay(role, display)\n {\n if (!this.#committed)\n {\n throw new Error(\"Character appearance manager has no committed appearance\");\n }\n if (typeof this.#adapter?.SetFoundationDisplay !== \"function\")\n {\n throw new Error(\"Character appearance AL cannot isolate foundations\");\n }\n\n const result = this.#adapter.SetFoundationDisplay(this.#committed, role, display);\n this.#RefreshCommittedDiagnostics();\n return result;\n }\n\n /** Queues one construction and prevents stale prepared work from publishing. */\n ApplyConstruction(construction, options = {})\n {\n if (!construction\n || typeof construction !== \"object\"\n || !Array.isArray(construction.operations))\n {\n return Promise.reject(\n new TypeError(\"Character appearance manager requires a construction sequence\")\n );\n }\n\n const requestRevision = ++this.#requestedRevision;\n this.#metrics.requests++;\n this.#metrics.queueDepth++;\n this.#metrics.peakQueueDepth = Math.max(\n this.#metrics.peakQueueDepth,\n this.#metrics.queueDepth\n );\n\n const operation = this.#tail.then(() => this.#Apply(\n construction,\n requestRevision,\n options\n ));\n const tracked = operation.finally(() =>\n {\n this.#metrics.queueDepth = Math.max(0, this.#metrics.queueDepth - 1);\n });\n this.#tail = tracked.catch(() => undefined);\n return tracked.then(result =>\n {\n this.#lastResult = result;\n return result;\n });\n }\n\n /** Releases the current stage through the serialized lifecycle. */\n ReleaseCommitted({ reason = \"released\", source = this } = {})\n {\n const revision = ++this.#requestedRevision;\n const operation = this.#tail.then(async () =>\n {\n const committed = this.#committed;\n this.#committed = null;\n this.#committedConstruction = null;\n if (committed)\n {\n await this.#Release(committed, { reason, revision, source });\n }\n\n const result = { status: \"released\", revision };\n this.#lastResult = result;\n return result;\n });\n this.#tail = operation.catch(() => undefined);\n return operation;\n }\n\n /**\n * Invalidates queued work and immediately asks the current AL to release\n * the committed stage. This is a teardown path, not a replacement path.\n */\n Dispose({ reason = \"disposed\", source = this } = {})\n {\n const revision = ++this.#requestedRevision;\n const committed = this.#committed;\n this.#committed = null;\n this.#committedConstruction = null;\n\n const result = {\n status: \"disposed\",\n revision,\n released: Boolean(committed)\n };\n this.#lastResult = result;\n if (!committed || typeof this.#adapter?.Release !== \"function\") return result;\n\n const completion = this.#adapter.Release(committed, { reason, revision, source });\n if (completion && typeof completion.catch === \"function\")\n {\n completion.catch(() => undefined);\n }\n return result;\n }\n\n /**\n * Applies the current appearance revision, reusing compatible state and\n * releasing superseded or failed preparations.\n */\n async #Apply(construction, requestRevision, options)\n {\n if (requestRevision !== this.#requestedRevision)\n {\n this.#metrics.staleBeforePrepare++;\n return {\n status: \"stale\",\n revision: requestRevision,\n skippedBeforePrepare: true\n };\n }\n if (!this.#adapter)\n {\n return {\n status: \"deferred\",\n reason: \"adapter-not-configured\",\n revision: requestRevision,\n capabilities: this.GetCapabilities()\n };\n }\n\n const constructionState = DescribeConstruction(construction);\n const appearanceChange = ApplyConstructionDomainInvalidations(\n CompareConstructionStates(this.#committedConstruction, constructionState),\n options.invalidateDomains\n );\n const context = {\n revision: requestRevision,\n appearancePlan: options.appearancePlan ?? null,\n source: options.source ?? this,\n construction,\n appearanceChange,\n previousAppearance: this.#committed\n };\n\n if (this.#committed\n && requestRevision === this.#requestedRevision\n && appearanceChange.identical)\n {\n const result = {\n status: \"committed\",\n revision: requestRevision,\n reused: true,\n reuseRule: \"identical-construction\",\n appearanceChange\n };\n this.#metrics.reused++;\n this.#AppendDiagnostics(result, this.#committed);\n return result;\n }\n\n if (this.#committed\n && appearanceChange.dirtyDomains.length === 1\n && appearanceChange.dirtyDomains[0] === \"morphs\"\n && typeof this.#adapter.UpdateMorphTargets === \"function\")\n {\n if (requestRevision !== this.#requestedRevision)\n {\n return { status: \"stale\", revision: requestRevision };\n }\n\n const update = await this.#adapter.UpdateMorphTargets(\n this.#committed,\n construction.morphTargets ?? [],\n context\n );\n this.#metrics.morphUpdates++;\n this.#committedConstruction = constructionState;\n if (requestRevision !== this.#requestedRevision)\n {\n return { status: \"stale\", revision: requestRevision };\n }\n\n const result = {\n status: \"committed\",\n revision: requestRevision,\n updatedInPlace: true,\n updateRule: \"morph-only\",\n appearanceChange,\n update\n };\n this.#AppendDiagnostics(result, this.#committed);\n return result;\n }\n\n this.#metrics.prepares++;\n let staged;\n try\n {\n staged = await this.#adapter.Prepare(construction, context);\n }\n catch (error)\n {\n this.#metrics.failures++;\n throw error;\n }\n\n if (requestRevision !== this.#requestedRevision)\n {\n this.#metrics.staleAfterPrepare++;\n await this.#Release(staged, { ...context, reason: \"stale\" });\n return { status: \"stale\", revision: requestRevision };\n }\n\n const previous = this.#committed;\n try\n {\n if (previous && typeof this.#adapter.Handoff === \"function\")\n {\n await this.#adapter.Handoff(previous, staged, context);\n this.#metrics.handoffs++;\n }\n else\n {\n await this.#adapter.Commit(staged, context);\n this.#metrics.commits++;\n }\n this.#committed = staged;\n this.#committedConstruction = constructionState;\n }\n catch (error)\n {\n this.#metrics.failures++;\n await this.#Release(staged, { ...context, reason: \"commit-failed\" });\n throw error;\n }\n\n if (previous && previous !== staged)\n {\n await this.#Release(previous, { ...context, reason: \"replaced\" });\n }\n\n const result = { status: \"committed\", revision: requestRevision };\n this.#AppendDiagnostics(result, staged);\n return result;\n }\n\n /**\n * Releases an appearance through the configured adapter and counts completed\n * releases.\n */\n async #Release(value, context)\n {\n if (value && typeof this.#adapter?.Release === \"function\")\n {\n await this.#adapter.Release(value, context);\n this.#metrics.releases++;\n }\n }\n\n /** Adds adapter diagnostics to the result when the adapter provides them. */\n #AppendDiagnostics(result, appearance)\n {\n if (typeof this.#adapter?.GetDiagnostics === \"function\")\n {\n result.details = this.#adapter.GetDiagnostics(appearance);\n }\n }\n\n /** Refreshes diagnostics on the last committed result. */\n #RefreshCommittedDiagnostics()\n {\n if (this.#lastResult?.status === \"committed\")\n {\n this.#AppendDiagnostics(this.#lastResult, this.#committed);\n }\n }\n}\n\nconst CONSTRUCTION_DOMAIN_NAMES = Object.freeze([\n \"foundation\",\n \"geometry\",\n \"bodyComposition\",\n \"headComposition\",\n \"privateComposition\",\n \"morphs\",\n \"coverage\"\n]);\n\nfunction NormalizeCapabilities(value)\n{\n if (value === null || value === undefined) return {};\n if (typeof value !== \"object\" || Array.isArray(value))\n {\n throw new TypeError(\"Character appearance capabilities must be a plain object or null\");\n }\n\n return { ...value };\n}\n\nfunction DescribeConstruction(construction)\n{\n const contributions = Array.isArray(construction.textureContributions)\n ? construction.textureContributions\n : [];\n const bodyContributions = [];\n const headContributions = [];\n const privateContributions = [];\n\n for (const contribution of contributions)\n {\n const targets = CollectContributionTargets(contribution);\n const unresolved = targets.size === 0;\n if (unresolved && !HasCompositionTextureEvidence(contribution)) continue;\n if (unresolved || targets.has(\"body\")) bodyContributions.push(contribution);\n if (unresolved || targets.has(\"head\")) headContributions.push(contribution);\n if (unresolved || [ ...targets ].some(value => ![ \"body\", \"head\" ].includes(value)))\n {\n privateContributions.push(contribution);\n }\n }\n\n const operations = Array.isArray(construction.operations) ? construction.operations : [];\n const foundation = {};\n for (const key of Object.keys(construction))\n {\n if ([\n \"operations\",\n \"textureContributions\",\n \"morphTargets\",\n \"evidence\",\n \"resolvedPartCount\",\n \"configuredPartCount\",\n \"deferredContributionCount\"\n ].includes(key)) continue;\n foundation[key] = construction[key];\n }\n\n return {\n signature: StableSignature(construction),\n domains: {\n foundation: StableSignature({\n foundation,\n operations: operations.filter(value => value?.operation !== \"configured-part\"\n && value?.operation !== \"deferred-contribution\")\n }),\n geometry: StableSignature(operations.map(value =>\n {\n if (!value || typeof value !== \"object\") return value;\n const { foundationCoverage, ...operation } = value;\n return operation;\n })),\n bodyComposition: StableSignature(bodyContributions),\n headComposition: StableSignature(headContributions),\n privateComposition: StableSignature(privateContributions),\n morphs: StableSignature(construction.morphTargets ?? []),\n coverage: StableSignature(operations.map(value => value?.foundationCoverage ?? null))\n }\n };\n}\n\nfunction HasCompositionTextureEvidence(value)\n{\n if (!value || typeof value !== \"object\") return false;\n return [ \"selectedTextures\", \"textureCandidates\", \"textures\" ].some(key =>\n Array.isArray(value[key]) && value[key].length > 0);\n}\n\nfunction CompareConstructionStates(previous, next)\n{\n if (!previous)\n {\n return {\n identical: false,\n initial: true,\n dirtyDomains: [ ...CONSTRUCTION_DOMAIN_NAMES ]\n };\n }\n\n const dirtyDomains = CONSTRUCTION_DOMAIN_NAMES.filter(\n name => previous.domains[name] !== next.domains[name]\n );\n const identical = previous.signature !== null && previous.signature === next.signature;\n return {\n identical,\n initial: false,\n dirtyDomains: identical ? [] : dirtyDomains.length ? dirtyDomains : [ \"construction\" ]\n };\n}\n\nfunction ApplyConstructionDomainInvalidations(changeSet, values = [])\n{\n if (!Array.isArray(values))\n {\n throw new TypeError(\"Appearance invalidation domains must be an array\");\n }\n if (!values.length) return changeSet;\n\n const invalidatedDomains = [];\n for (const value of values)\n {\n const domain = String(value ?? \"\").trim();\n if (!CONSTRUCTION_DOMAIN_NAMES.includes(domain))\n {\n throw new TypeError(\n `Unknown appearance invalidation domain ${JSON.stringify(domain)}`\n );\n }\n if (!invalidatedDomains.includes(domain)) invalidatedDomains.push(domain);\n }\n return {\n ...changeSet,\n identical: false,\n dirtyDomains: [ ...new Set([ ...changeSet.dirtyDomains, ...invalidatedDomains ]) ],\n invalidatedDomains\n };\n}\n\nfunction CollectContributionTargets(value, targets = new Set())\n{\n if (!value || typeof value !== \"object\") return targets;\n if (Array.isArray(value))\n {\n for (const item of value) CollectContributionTargets(item, targets);\n return targets;\n }\n for (const [ key, item ] of Object.entries(value))\n {\n if (key === \"target\" && typeof item === \"string\" && item.trim())\n {\n targets.add(item.trim().toLowerCase());\n }\n else\n {\n CollectContributionTargets(item, targets);\n }\n }\n return targets;\n}\n\nfunction StableSignature(value)\n{\n try\n {\n return JSON.stringify(NormalizeSignatureValue(value, new Set()));\n }\n catch\n {\n return null;\n }\n}\n\nfunction NormalizeSignatureValue(value, active)\n{\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n {\n return value;\n }\n if (typeof value === \"number\")\n {\n return Number.isFinite(value) ? value : { $number: String(value) };\n }\n if (typeof value === \"undefined\") return { $undefined: true };\n if (typeof value !== \"object\") throw new TypeError(\"Unsupported construction value\");\n if (active.has(value)) throw new TypeError(\"Cyclic construction value\");\n\n active.add(value);\n let result;\n if (Array.isArray(value))\n {\n result = value.map(item => NormalizeSignatureValue(item, active));\n }\n else\n {\n result = {};\n for (const key of Object.keys(value).sort())\n {\n result[key] = NormalizeSignatureValue(value[key], active);\n }\n }\n active.delete(value);\n return result;\n}\n\nexport default CjsCharacterAppearanceManager;\n"],"names":["CjsCharacterAppearanceManager","requests","prepares","commits","handoffs","releases","reused","morphUpdates","staleBeforePrepare","staleAfterPrepare","failures","queueDepth","peakQueueDepth","Promise","resolve","constructor","adapter","capabilities","SetAdapter","NormalizeCapabilities","Prepare","Commit","Release","TypeError","Error","SetCapabilities","GetCapabilities","result","adapterConnected","maximumBones","requiredBones","Number","isSafeInteger","completeBonePalette","GetState","lastResult","metrics","WarmConfiguredModelTemplates","paths","status","reason","SetConfiguredPartDisplay","partSourceRecordID","display","SetFoundationDisplay","role","ApplyConstruction","construction","options","Array","isArray","operations","reject","requestRevision","Math","max","operation","then","tracked","finally","catch","undefined","ReleaseCommitted","source","revision","committed","Dispose","released","Boolean","completion","#Apply","skippedBeforePrepare","constructionState","DescribeConstruction","appearanceChange","ApplyConstructionDomainInvalidations","CompareConstructionStates","invalidateDomains","context","appearancePlan","previousAppearance","identical","reuseRule","dirtyDomains","length","UpdateMorphTargets","update","morphTargets","updatedInPlace","updateRule","staged","error","previous","Handoff","#Release","value","#AppendDiagnostics","appearance","GetDiagnostics","details","#RefreshCommittedDiagnostics","CONSTRUCTION_DOMAIN_NAMES","Object","freeze","contributions","textureContributions","bodyContributions","headContributions","privateContributions","contribution","targets","CollectContributionTargets","unresolved","size","HasCompositionTextureEvidence","has","push","some","includes","foundation","key","keys","signature","StableSignature","domains","filter","geometry","map","foundationCoverage","bodyComposition","headComposition","privateComposition","morphs","coverage","next","initial","name","changeSet","values","invalidatedDomains","domain","String","trim","JSON","stringify","Set","item","entries","add","toLowerCase","NormalizeSignatureValue","active","isFinite","$number","$undefined","sort","delete"],"mappings":"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"}
@@ -62,6 +62,11 @@ const FOUNDATIONS = {
62
62
  class CjsCharacterFoundationConstruction {
63
63
  _femaleFoundationLayout;
64
64
  _textureQuality;
65
+
66
+ /**
67
+ * Validates the female foundation layout and normalizes the requested
68
+ * texture quality.
69
+ */
65
70
  constructor({
66
71
  femaleFoundationLayout = null,
67
72
  textureQuality = "4k"