@carbonenginejs/runtime 0.1.0-alpha.3 → 0.1.0-alpha.4

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 (1620) hide show
  1. package/NOTICE +5 -4
  2. package/dist/audio/generated/audio/AudEventKey.js +2 -2
  3. package/dist/audio/generated/audio/AudEventKey.js.map +1 -1
  4. package/dist/audio/generated/audio/AudSettings.js +2 -2
  5. package/dist/audio/generated/audio/AudSettings.js.map +1 -1
  6. package/dist/audio/index.js +1 -1
  7. package/dist/audio/trinity/audio/AudEmitter.js +4 -5
  8. package/dist/audio/trinity/audio/AudEmitter.js.map +1 -1
  9. package/dist/audio/trinity/audio/AudEventCurve.js +14 -14
  10. package/dist/audio/trinity/audio/AudEventCurve.js.map +1 -1
  11. package/dist/audio/trinity/audio/AudGameObjResource.js +13 -25
  12. package/dist/audio/trinity/audio/AudGameObjResource.js.map +1 -1
  13. package/dist/audio/trinity/audio/AudManager.js +2 -2
  14. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  15. package/dist/audio/trinity/audio/AudParameter.js +7 -11
  16. package/dist/audio/trinity/audio/AudParameter.js.map +1 -1
  17. package/dist/audio/trinity/audio/AudUIPlayer.js +2 -2
  18. package/dist/audio/trinity/audio/AudUIPlayer.js.map +1 -1
  19. package/dist/audio/trinity/audio/AudioCurveSetDriver.js +2 -2
  20. package/dist/audio/trinity/audio/AudioCurveSetDriver.js.map +1 -1
  21. package/dist/audio/trinity/audio/StretchAudio.js +2 -2
  22. package/dist/audio/trinity/audio/StretchAudio.js.map +1 -1
  23. package/dist/audio/trinity/index.js +1 -1
  24. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js +2 -2
  25. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js.map +1 -1
  26. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js +2 -2
  27. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js.map +1 -1
  28. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js +1 -37
  29. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js.map +1 -1
  30. package/dist/character/incarna/curves/Tr2ColorCurve.js +2 -2
  31. package/dist/character/incarna/curves/Tr2ColorCurve.js.map +1 -1
  32. package/dist/character/incarna/curves/Tr2ColorKey.js +2 -2
  33. package/dist/character/incarna/curves/Tr2ColorKey.js.map +1 -1
  34. package/dist/character/incarna/curves/Tr2ScalarCurve.js +2 -2
  35. package/dist/character/incarna/curves/Tr2ScalarCurve.js.map +1 -1
  36. package/dist/character/incarna/curves/Tr2ScalarKey.js +2 -2
  37. package/dist/character/incarna/curves/Tr2ScalarKey.js.map +1 -1
  38. package/dist/character/incarna/interior/Tr2InteriorCell.js +2 -2
  39. package/dist/character/incarna/interior/Tr2InteriorCell.js.map +1 -1
  40. package/dist/character/library/CjsCharacterLibrary.js +9 -16
  41. package/dist/character/library/CjsCharacterLibrary.js.map +1 -1
  42. package/dist/character/library/CjsCharacterLibraryDocuments.js +20 -4
  43. package/dist/character/library/CjsCharacterLibraryDocuments.js.map +1 -1
  44. package/dist/character/model/CjsCharacterRecord.js +2 -2
  45. package/dist/character/model/CjsCharacterRecord.js.map +1 -1
  46. package/dist/character/model/activity/CjsCharacterArchetype.js +2 -2
  47. package/dist/character/model/activity/CjsCharacterArchetype.js.map +1 -1
  48. package/dist/character/model/appearance/CjsCharacterColorLocation.js +2 -2
  49. package/dist/character/model/appearance/CjsCharacterColorLocation.js.map +1 -1
  50. package/dist/character/model/appearance/CjsCharacterColorName.js +2 -2
  51. package/dist/character/model/appearance/CjsCharacterColorName.js.map +1 -1
  52. package/dist/character/model/appearance/CjsCharacterColorSelection.js +2 -2
  53. package/dist/character/model/appearance/CjsCharacterColorSelection.js.map +1 -1
  54. package/dist/character/model/appearance/CjsCharacterSculptSelection.js +2 -2
  55. package/dist/character/model/appearance/CjsCharacterSculptSelection.js.map +1 -1
  56. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js +2 -2
  57. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js.map +1 -1
  58. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js +2 -2
  59. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js.map +1 -1
  60. package/dist/character/model/catalog/CjsCharacterColorValue.js +2 -2
  61. package/dist/character/model/catalog/CjsCharacterColorValue.js.map +1 -1
  62. package/dist/character/model/catalog/CjsCharacterDefinition.js +2 -2
  63. package/dist/character/model/catalog/CjsCharacterDefinition.js.map +1 -1
  64. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js +2 -2
  65. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js.map +1 -1
  66. package/dist/character/model/catalog/CjsCharacterModifierReference.js +2 -2
  67. package/dist/character/model/catalog/CjsCharacterModifierReference.js.map +1 -1
  68. package/dist/character/model/catalog/CjsCharacterPartMetadata.js +2 -2
  69. package/dist/character/model/catalog/CjsCharacterPartMetadata.js.map +1 -1
  70. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js +2 -2
  71. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js.map +1 -1
  72. package/dist/character/model/catalog/CjsCharacterPartSource.js +2 -2
  73. package/dist/character/model/catalog/CjsCharacterPartSource.js.map +1 -1
  74. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js +2 -2
  75. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js.map +1 -1
  76. package/dist/character/model/catalog/CjsCharacterPartType.js +2 -2
  77. package/dist/character/model/catalog/CjsCharacterPartType.js.map +1 -1
  78. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js +2 -2
  79. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js.map +1 -1
  80. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js +2 -2
  81. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js.map +1 -1
  82. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js +2 -2
  83. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js.map +1 -1
  84. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js +2 -2
  85. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js.map +1 -1
  86. package/dist/character/model/composition/CjsCharacterModifierLocation.js +2 -2
  87. package/dist/character/model/composition/CjsCharacterModifierLocation.js.map +1 -1
  88. package/dist/character/model/composition/CjsCharacterModifierSelection.js +2 -2
  89. package/dist/character/model/composition/CjsCharacterModifierSelection.js.map +1 -1
  90. package/dist/character/model/creation/CjsCharacterPaperdoll.js +2 -2
  91. package/dist/character/model/creation/CjsCharacterPaperdoll.js.map +1 -1
  92. package/dist/character/model/demographics/CjsCharacterAncestry.js +2 -2
  93. package/dist/character/model/demographics/CjsCharacterAncestry.js.map +1 -1
  94. package/dist/character/model/demographics/CjsCharacterBloodline.js +2 -2
  95. package/dist/character/model/demographics/CjsCharacterBloodline.js.map +1 -1
  96. package/dist/character/model/demographics/CjsCharacterRace.js +2 -2
  97. package/dist/character/model/demographics/CjsCharacterRace.js.map +1 -1
  98. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js +2 -2
  99. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js.map +1 -1
  100. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js +2 -2
  101. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js.map +1 -1
  102. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js +2 -2
  103. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js.map +1 -1
  104. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js +2 -2
  105. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js.map +1 -1
  106. package/dist/character/model/planning/CjsCharacterAppearancePlan.js +2 -2
  107. package/dist/character/model/planning/CjsCharacterAppearancePlan.js.map +1 -1
  108. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js +2 -2
  109. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js.map +1 -1
  110. package/dist/character/model/planning/CjsCharacterBindingAlpha.js +2 -2
  111. package/dist/character/model/planning/CjsCharacterBindingAlpha.js.map +1 -1
  112. package/dist/character/model/planning/CjsCharacterCompositionInput.js +2 -2
  113. package/dist/character/model/planning/CjsCharacterCompositionInput.js.map +1 -1
  114. package/dist/character/model/planning/CjsCharacterCompositionPass.js +2 -2
  115. package/dist/character/model/planning/CjsCharacterCompositionPass.js.map +1 -1
  116. package/dist/character/model/planning/CjsCharacterCompositionTarget.js +2 -2
  117. package/dist/character/model/planning/CjsCharacterCompositionTarget.js.map +1 -1
  118. package/dist/character/model/planning/CjsCharacterCoverage.js +2 -2
  119. package/dist/character/model/planning/CjsCharacterCoverage.js.map +1 -1
  120. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js +2 -2
  121. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js.map +1 -1
  122. package/dist/character/model/planning/CjsCharacterOrigin.js +2 -2
  123. package/dist/character/model/planning/CjsCharacterOrigin.js.map +1 -1
  124. package/dist/character/model/planning/CjsCharacterResolvedPart.js +2 -2
  125. package/dist/character/model/planning/CjsCharacterResolvedPart.js.map +1 -1
  126. package/dist/character/model/planning/CjsCharacterTextureAsset.js +2 -2
  127. package/dist/character/model/planning/CjsCharacterTextureAsset.js.map +1 -1
  128. package/dist/character/model/planning/CjsCharacterTextureChannel.js +2 -2
  129. package/dist/character/model/planning/CjsCharacterTextureChannel.js.map +1 -1
  130. package/dist/character/model/resources/CjsCharacterPortraitResource.js +2 -2
  131. package/dist/character/model/resources/CjsCharacterPortraitResource.js.map +1 -1
  132. package/dist/character/model/resources/CjsCharacterResource.js +2 -2
  133. package/dist/character/model/resources/CjsCharacterResource.js.map +1 -1
  134. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js +6 -5
  135. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js.map +1 -1
  136. package/dist/character/trinity/interior/Tr2InteriorLightSource.js +2 -2
  137. package/dist/character/trinity/interior/Tr2InteriorLightSource.js.map +1 -1
  138. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js +4 -5
  139. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js.map +1 -1
  140. package/dist/character/trinity/interior/Tr2InteriorScene.js +2 -2
  141. package/dist/character/trinity/interior/Tr2InteriorScene.js.map +1 -1
  142. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js +2 -2
  143. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js.map +1 -1
  144. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js +2 -2
  145. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js.map +1 -1
  146. package/dist/character/trinity/trinityCore/Tr2Model.js +2 -2
  147. package/dist/character/trinity/trinityCore/Tr2Model.js.map +1 -1
  148. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js +21 -10
  149. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js.map +1 -1
  150. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js +64 -57
  151. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js.map +1 -1
  152. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js +1 -1
  153. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js.map +1 -1
  154. package/dist/character/trinity/wod/WodBakingScene.js +2 -2
  155. package/dist/character/trinity/wod/WodBakingScene.js.map +1 -1
  156. package/dist/core/CjsLibrary.js +32 -685
  157. package/dist/core/CjsLibrary.js.map +1 -1
  158. package/dist/core/index.js +1 -2
  159. package/dist/core/index.js.map +1 -1
  160. package/dist/global/blue/BeInfo.js +95 -0
  161. package/dist/global/blue/BeInfo.js.map +1 -0
  162. package/dist/global/blue/CcpDateTime.js +53 -0
  163. package/dist/global/blue/CcpDateTime.js.map +1 -0
  164. package/dist/global/blue/CcpTime.js +148 -0
  165. package/dist/global/blue/CcpTime.js.map +1 -0
  166. package/dist/global/blue/CjsBlueOS.js +301 -0
  167. package/dist/global/blue/CjsBlueOS.js.map +1 -0
  168. package/dist/global/blue/CjsBluePaths.js +97 -0
  169. package/dist/global/blue/CjsBluePaths.js.map +1 -0
  170. package/dist/global/blue/IBlueDynamicResourceConstructor.js +29 -0
  171. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -0
  172. package/dist/global/blue/IBlueEvents.js +34 -0
  173. package/dist/global/blue/IBlueEvents.js.map +1 -0
  174. package/dist/global/blue/IBlueOS.js +132 -0
  175. package/dist/global/blue/IBlueOS.js.map +1 -0
  176. package/dist/global/blue/IBluePaths.js +72 -0
  177. package/dist/global/blue/IBluePaths.js.map +1 -0
  178. package/dist/global/blue/IBlueResMan.js +93 -0
  179. package/dist/global/blue/IBlueResMan.js.map +1 -0
  180. package/dist/global/blue/IBlueResManNotifications.js +51 -0
  181. package/dist/global/blue/IBlueResManNotifications.js.map +1 -0
  182. package/dist/global/blue/ICatchupTicks.js +25 -0
  183. package/dist/global/blue/ICatchupTicks.js.map +1 -0
  184. package/dist/global/blue/IInitialize.js +47 -0
  185. package/dist/global/blue/IInitialize.js.map +1 -0
  186. package/dist/global/blue/IListNotify.js +44 -0
  187. package/dist/global/blue/IListNotify.js.map +1 -0
  188. package/dist/global/blue/INotify.js +65 -0
  189. package/dist/global/blue/INotify.js.map +1 -0
  190. package/dist/global/blue/ISimTimeRebaseNotify.js +28 -0
  191. package/dist/global/blue/ISimTimeRebaseNotify.js.map +1 -0
  192. package/dist/global/blue/IVariableTicker.js +24 -0
  193. package/dist/global/blue/IVariableTicker.js.map +1 -0
  194. package/dist/global/blue/blue.js +61 -0
  195. package/dist/global/blue/blue.js.map +1 -0
  196. package/dist/global/blue/enums/CjsBlueEnumRegistry.js +173 -0
  197. package/dist/global/blue/enums/CjsBlueEnumRegistry.js.map +1 -0
  198. package/dist/global/blue/index.js +19 -0
  199. package/dist/global/blue/index.js.map +1 -1
  200. package/dist/global/blue/registerTrinityEnums.js +43 -0
  201. package/dist/global/blue/registerTrinityEnums.js.map +1 -0
  202. package/dist/global/compose/abstract.js +81 -0
  203. package/dist/global/compose/abstract.js.map +1 -0
  204. package/dist/global/compose/interface.js +131 -26
  205. package/dist/global/compose/interface.js.map +1 -1
  206. package/dist/global/compose/notify.js +10 -1
  207. package/dist/global/compose/notify.js.map +1 -1
  208. package/dist/global/compose/values.js +116 -53
  209. package/dist/global/compose/values.js.map +1 -1
  210. package/dist/global/consts/blue.js +73 -0
  211. package/dist/global/consts/blue.js.map +1 -0
  212. package/dist/global/consts/graphics/index.js +1 -1
  213. package/dist/global/consts/graphics/trinityEnums.js +19 -7
  214. package/dist/global/consts/graphics/trinityEnums.js.map +1 -1
  215. package/dist/global/consts/index.js +2 -1
  216. package/dist/global/consts/index.js.map +1 -1
  217. package/dist/global/consts/trinity.js.map +1 -1
  218. package/dist/global/contracts/ITr2BoundingBox.js +1 -34
  219. package/dist/global/contracts/ITr2BoundingBox.js.map +1 -1
  220. package/dist/global/contracts/ITr2RenderNode.js +1 -27
  221. package/dist/global/contracts/ITr2RenderNode.js.map +1 -1
  222. package/dist/global/contracts/index.js +2 -4
  223. package/dist/global/contracts/index.js.map +1 -1
  224. package/dist/global/index.js +23 -5
  225. package/dist/global/index.js.map +1 -1
  226. package/dist/global/model/CjsModel.js +79 -98
  227. package/dist/global/model/CjsModel.js.map +1 -1
  228. package/dist/global/model/CjsModelState.js +0 -15
  229. package/dist/global/model/CjsModelState.js.map +1 -1
  230. package/dist/global/model/index.js +1 -1
  231. package/dist/global/schema/CjsSchema.js +177 -51
  232. package/dist/global/schema/CjsSchema.js.map +1 -1
  233. package/dist/global/schema/index.js +4 -3
  234. package/dist/global/schema/index.js.map +1 -1
  235. package/dist/global/schema/types/carbonTypes.js +1 -1
  236. package/dist/global/schema/types/carbonTypes.js.map +1 -1
  237. package/dist/global/utils/bytes.js +2 -0
  238. package/dist/global/utils/bytes.js.map +1 -1
  239. package/dist/global/utils/path.js +30 -1
  240. package/dist/global/utils/path.js.map +1 -1
  241. package/dist/index.js +57 -24
  242. package/dist/index.js.map +1 -1
  243. package/dist/resource/CjsResMan.js +33 -43
  244. package/dist/resource/CjsResMan.js.map +1 -1
  245. package/dist/resource/CjsResource.js +4 -1
  246. package/dist/resource/CjsResource.js.map +1 -1
  247. package/dist/resource/format/CjsBlueReader.js +0 -1
  248. package/dist/resource/format/CjsBlueReader.js.map +1 -1
  249. package/dist/resource/format/CjsResourceProbe.js +15 -16
  250. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  251. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js +132 -75
  252. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -1
  253. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js +26 -0
  254. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  255. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js +2 -1
  256. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  257. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js +4 -0
  258. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js.map +1 -0
  259. package/dist/resource/formats/black/core/blackDefinitions.js +1 -1
  260. package/dist/resource/formats/black/core/blackDefinitions.js.map +1 -1
  261. package/dist/resource/formats/black/core/blackSchema.js +1 -1
  262. package/dist/resource/formats/dds/CjsDdsFormat.js +50 -1
  263. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  264. package/dist/resource/formats/dds/core/helpers.js +51 -5
  265. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  266. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js +94 -0
  267. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js.map +1 -0
  268. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js +189 -0
  269. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js.map +1 -0
  270. package/dist/resource/formats/fsd/64/readers/index.js +2 -0
  271. package/dist/resource/formats/fsd/64/readers/index.js.map +1 -1
  272. package/dist/resource/formats/hlsl/core/detailMapFamily.js +18 -92
  273. package/dist/resource/formats/hlsl/core/detailMapFamily.js.map +1 -1
  274. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js +285 -0
  275. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js.map +1 -0
  276. package/dist/resource/formats/pickle/CjsPickleFormat.js +34 -14
  277. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  278. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +60 -451
  279. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  280. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +407 -0
  281. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -0
  282. package/dist/resource/formats/pickle/core/pickleCommon.js +671 -0
  283. package/dist/resource/formats/pickle/core/pickleCommon.js.map +1 -0
  284. package/dist/resource/formats/red/core/blackDefinitions.js +1 -1
  285. package/dist/resource/formats/webgl/core/effectPackage.js +85 -7
  286. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  287. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +659 -564
  288. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  289. package/dist/resource/formats/webgl/core/glslBackendBodySet.js +4 -4
  290. package/dist/resource/formats/webgl/core/glslBackendBodySet.js.map +1 -1
  291. package/dist/resource/formats/webgl/core/helpers.js +2 -2
  292. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  293. package/dist/resource/geometry/TriGeometryRes.js +61 -7
  294. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  295. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +11 -11
  296. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  297. package/dist/resource/index.js +9 -0
  298. package/dist/resource/index.js.map +1 -1
  299. package/dist/resource/shader/Tr2EffectRes.js +2 -3
  300. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  301. package/dist/resource/shader/Tr2MaterialArea.js +3 -3
  302. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
  303. package/dist/resource/shader/Tr2MaterialMesh.js +2 -2
  304. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
  305. package/dist/resource/shader/Tr2MaterialRes.js +3 -3
  306. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
  307. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +2 -2
  308. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  309. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +2 -2
  310. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  311. package/dist/resource/shader/reflection/Tr2Pass.js +4 -4
  312. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  313. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  314. package/dist/resource/texture/Tr2ImageRes.js +3 -4
  315. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +0 -1
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TexturePackChannel.js +4 -4
  319. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePipeline.js +3 -4
  321. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +5 -5
  323. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +3 -3
  325. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +2 -2
  327. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +6 -6
  329. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  330. package/dist/resource/texture/TriTextureRes.js +23 -22
  331. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  332. package/dist/resource/video/AudioMetadata.js +41 -0
  333. package/dist/resource/video/AudioMetadata.js.map +1 -0
  334. package/dist/resource/video/IAudioSink.js +51 -0
  335. package/dist/resource/video/IAudioSink.js.map +1 -0
  336. package/dist/resource/video/IEncodedFrame.js +52 -0
  337. package/dist/resource/video/IEncodedFrame.js.map +1 -0
  338. package/dist/resource/video/IVideoContainerParser.js +70 -0
  339. package/dist/resource/video/IVideoContainerParser.js.map +1 -0
  340. package/dist/resource/video/IVideoDecoder.js +36 -0
  341. package/dist/resource/video/IVideoDecoder.js.map +1 -0
  342. package/dist/resource/video/PcmFrame.js +33 -0
  343. package/dist/resource/video/PcmFrame.js.map +1 -0
  344. package/dist/resource/video/VideoFrame.js +45 -0
  345. package/dist/resource/video/VideoFrame.js.map +1 -0
  346. package/dist/resource/video/VideoMetadata.js +34 -0
  347. package/dist/resource/video/VideoMetadata.js.map +1 -0
  348. package/dist/resource/video/enums.js +30 -0
  349. package/dist/resource/video/enums.js.map +1 -0
  350. package/dist/sof/EveSOF.js +176 -176
  351. package/dist/sof/EveSOF.js.map +1 -1
  352. package/dist/sof/EveSOFDNA.js +5 -1
  353. package/dist/sof/EveSOFDNA.js.map +1 -1
  354. package/dist/sof/EveSOFData.js +2 -2
  355. package/dist/sof/EveSOFData.js.map +1 -1
  356. package/dist/sof/faction/EveSOFDataFaction.js +2 -2
  357. package/dist/sof/faction/EveSOFDataFaction.js.map +1 -1
  358. package/dist/sof/faction/EveSOFDataFactionChild.js +2 -2
  359. package/dist/sof/faction/EveSOFDataFactionChild.js.map +1 -1
  360. package/dist/sof/faction/EveSOFDataFactionColorSet.js +189 -3
  361. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  362. package/dist/sof/faction/EveSOFDataFactionHullArea.js +2 -2
  363. package/dist/sof/faction/EveSOFDataFactionHullArea.js.map +1 -1
  364. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js +2 -2
  365. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js.map +1 -1
  366. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js +2 -2
  367. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js.map +1 -1
  368. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js +2 -2
  369. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js.map +1 -1
  370. package/dist/sof/generic/EveSOFDataGeneric.js +234 -230
  371. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  372. package/dist/sof/generic/EveSOFDataGenericDamage.js +2 -2
  373. package/dist/sof/generic/EveSOFDataGenericDamage.js.map +1 -1
  374. package/dist/sof/generic/EveSOFDataGenericDecalShader.js +2 -2
  375. package/dist/sof/generic/EveSOFDataGenericDecalShader.js.map +1 -1
  376. package/dist/sof/generic/EveSOFDataGenericHullCategory.js +27 -23
  377. package/dist/sof/generic/EveSOFDataGenericHullCategory.js.map +1 -1
  378. package/dist/sof/generic/EveSOFDataGenericHullDamage.js +2 -2
  379. package/dist/sof/generic/EveSOFDataGenericHullDamage.js.map +1 -1
  380. package/dist/sof/generic/EveSOFDataGenericShader.js +2 -2
  381. package/dist/sof/generic/EveSOFDataGenericShader.js.map +1 -1
  382. package/dist/sof/generic/EveSOFDataGenericString.js +2 -2
  383. package/dist/sof/generic/EveSOFDataGenericString.js.map +1 -1
  384. package/dist/sof/generic/EveSOFDataGenericSwarm.js +2 -2
  385. package/dist/sof/generic/EveSOFDataGenericSwarm.js.map +1 -1
  386. package/dist/sof/generic/EveSOFDataGenericVariant.js +2 -2
  387. package/dist/sof/generic/EveSOFDataGenericVariant.js.map +1 -1
  388. package/dist/sof/generic/EveSOFDataVisibilityGroup.js +2 -2
  389. package/dist/sof/generic/EveSOFDataVisibilityGroup.js.map +1 -1
  390. package/dist/sof/hull/EveSOFDataHull.js +56 -3
  391. package/dist/sof/hull/EveSOFDataHull.js.map +1 -1
  392. package/dist/sof/hull/EveSOFDataHullAnimation.js +2 -2
  393. package/dist/sof/hull/EveSOFDataHullAnimation.js.map +1 -1
  394. package/dist/sof/hull/EveSOFDataHullArea.js +58 -54
  395. package/dist/sof/hull/EveSOFDataHullArea.js.map +1 -1
  396. package/dist/sof/hull/EveSOFDataHullBanner.js +109 -3
  397. package/dist/sof/hull/EveSOFDataHullBanner.js.map +1 -1
  398. package/dist/sof/hull/EveSOFDataHullBannerLight.js +2 -2
  399. package/dist/sof/hull/EveSOFDataHullBannerLight.js.map +1 -1
  400. package/dist/sof/hull/EveSOFDataHullBannerSet.js +2 -2
  401. package/dist/sof/hull/EveSOFDataHullBannerSet.js.map +1 -1
  402. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js +109 -3
  403. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js.map +1 -1
  404. package/dist/sof/hull/EveSOFDataHullBooster.js +2 -2
  405. package/dist/sof/hull/EveSOFDataHullBooster.js.map +1 -1
  406. package/dist/sof/hull/EveSOFDataHullBoosterItem.js +2 -2
  407. package/dist/sof/hull/EveSOFDataHullBoosterItem.js.map +1 -1
  408. package/dist/sof/hull/EveSOFDataHullChild.js +55 -50
  409. package/dist/sof/hull/EveSOFDataHullChild.js.map +1 -1
  410. package/dist/sof/hull/EveSOFDataHullChildSet.js +2 -2
  411. package/dist/sof/hull/EveSOFDataHullChildSet.js.map +1 -1
  412. package/dist/sof/hull/EveSOFDataHullChildSetItem.js +51 -46
  413. package/dist/sof/hull/EveSOFDataHullChildSetItem.js.map +1 -1
  414. package/dist/sof/hull/EveSOFDataHullController.js +2 -2
  415. package/dist/sof/hull/EveSOFDataHullController.js.map +1 -1
  416. package/dist/sof/hull/EveSOFDataHullDecalSet.js +2 -2
  417. package/dist/sof/hull/EveSOFDataHullDecalSet.js.map +1 -1
  418. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js +45 -3
  419. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js.map +1 -1
  420. package/dist/sof/hull/EveSOFDataHullHazeSet.js +21 -3
  421. package/dist/sof/hull/EveSOFDataHullHazeSet.js.map +1 -1
  422. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js +47 -43
  423. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js.map +1 -1
  424. package/dist/sof/hull/EveSOFDataHullLightSet.js +2 -2
  425. package/dist/sof/hull/EveSOFDataHullLightSet.js.map +1 -1
  426. package/dist/sof/hull/EveSOFDataHullLightSetItem.js +4 -2
  427. package/dist/sof/hull/EveSOFDataHullLightSetItem.js.map +1 -1
  428. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js +2 -2
  429. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js.map +1 -1
  430. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js +2 -2
  431. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js.map +1 -1
  432. package/dist/sof/hull/EveSOFDataHullLocator.js +2 -2
  433. package/dist/sof/hull/EveSOFDataHullLocator.js.map +1 -1
  434. package/dist/sof/hull/EveSOFDataHullLocatorSet.js +2 -2
  435. package/dist/sof/hull/EveSOFDataHullLocatorSet.js.map +1 -1
  436. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js +2 -2
  437. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js.map +1 -1
  438. package/dist/sof/hull/EveSOFDataHullPlaneSet.js +29 -3
  439. package/dist/sof/hull/EveSOFDataHullPlaneSet.js.map +1 -1
  440. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js +81 -75
  441. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js.map +1 -1
  442. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js +2 -2
  443. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js.map +1 -1
  444. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js +2 -2
  445. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js.map +1 -1
  446. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js +45 -41
  447. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js.map +1 -1
  448. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js +2 -2
  449. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js.map +1 -1
  450. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js +70 -66
  451. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js.map +1 -1
  452. package/dist/sof/hull/EveSOFDataHullSpriteSet.js +2 -2
  453. package/dist/sof/hull/EveSOFDataHullSpriteSet.js.map +1 -1
  454. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js +45 -41
  455. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js.map +1 -1
  456. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js +2 -2
  457. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js.map +1 -1
  458. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js +2 -2
  459. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js.map +1 -1
  460. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js +2 -2
  461. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js.map +1 -1
  462. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js +2 -2
  463. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js.map +1 -1
  464. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js +2 -2
  465. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js.map +1 -1
  466. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js +35 -3
  467. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js.map +1 -1
  468. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js +2 -2
  469. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js.map +1 -1
  470. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js +2 -2
  471. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js.map +1 -1
  472. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js +2 -2
  473. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js.map +1 -1
  474. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js +2 -2
  475. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js.map +1 -1
  476. package/dist/sof/layout/EveSOFDataLayout.js +2 -2
  477. package/dist/sof/layout/EveSOFDataLayout.js.map +1 -1
  478. package/dist/sof/pattern/EveSOFDataPattern.js +2 -2
  479. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  480. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js +2 -2
  481. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js.map +1 -1
  482. package/dist/sof/pattern/EveSOFDataPatternLayer.js +60 -3
  483. package/dist/sof/pattern/EveSOFDataPatternLayer.js.map +1 -1
  484. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js +23 -3
  485. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js.map +1 -1
  486. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js +2 -2
  487. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js.map +1 -1
  488. package/dist/sof/pattern/EveSOFDataPatternPerHull.js +2 -2
  489. package/dist/sof/pattern/EveSOFDataPatternPerHull.js.map +1 -1
  490. package/dist/sof/pattern/EveSOFDataPatternTransform.js +2 -2
  491. package/dist/sof/pattern/EveSOFDataPatternTransform.js.map +1 -1
  492. package/dist/sof/race/EveSOFDataRace.js +46 -42
  493. package/dist/sof/race/EveSOFDataRace.js.map +1 -1
  494. package/dist/sof/race/EveSOFDataRaceDamage.js +2 -2
  495. package/dist/sof/race/EveSOFDataRaceDamage.js.map +1 -1
  496. package/dist/sof/shared/CjsExternalRef.js +2 -2
  497. package/dist/sof/shared/CjsExternalRef.js.map +1 -1
  498. package/dist/sof/shared/EveSOFDNADescriptor.js +2 -2
  499. package/dist/sof/shared/EveSOFDNADescriptor.js.map +1 -1
  500. package/dist/sof/shared/EveSOFDataArea.js +61 -3
  501. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  502. package/dist/sof/shared/EveSOFDataAreaMaterial.js +4 -2
  503. package/dist/sof/shared/EveSOFDataAreaMaterial.js.map +1 -1
  504. package/dist/sof/shared/EveSOFDataBlinkType.js +48 -8
  505. package/dist/sof/shared/EveSOFDataBlinkType.js.map +1 -1
  506. package/dist/sof/shared/EveSOFDataBooster.js +2 -2
  507. package/dist/sof/shared/EveSOFDataBooster.js.map +1 -1
  508. package/dist/sof/shared/EveSOFDataBoosterShape.js +2 -2
  509. package/dist/sof/shared/EveSOFDataBoosterShape.js.map +1 -1
  510. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js +2 -2
  511. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js.map +1 -1
  512. package/dist/sof/shared/EveSOFDataInstancedMesh.js +40 -3
  513. package/dist/sof/shared/EveSOFDataInstancedMesh.js.map +1 -1
  514. package/dist/sof/shared/EveSOFDataLogo.js +2 -2
  515. package/dist/sof/shared/EveSOFDataLogo.js.map +1 -1
  516. package/dist/sof/shared/EveSOFDataLogoSet.js +33 -3
  517. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  518. package/dist/sof/shared/EveSOFDataMaterial.js +2 -2
  519. package/dist/sof/shared/EveSOFDataMaterial.js.map +1 -1
  520. package/dist/sof/shared/EveSOFDataParameter.js +2 -2
  521. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  522. package/dist/sof/shared/EveSOFDataParameterBool.js +2 -2
  523. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -1
  524. package/dist/sof/shared/EveSOFDataParameterColor.js +2 -2
  525. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -1
  526. package/dist/sof/shared/EveSOFDataParameterFloat.js +2 -2
  527. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -1
  528. package/dist/sof/shared/EveSOFDataParameterInt.js +2 -2
  529. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -1
  530. package/dist/sof/shared/EveSOFDataParameterVector2.js +2 -2
  531. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -1
  532. package/dist/sof/shared/EveSOFDataParameterVector3.js +2 -2
  533. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -1
  534. package/dist/sof/shared/EveSOFDataPointLightAttachment.js +2 -2
  535. package/dist/sof/shared/EveSOFDataPointLightAttachment.js.map +1 -1
  536. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js +2 -2
  537. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js.map +1 -1
  538. package/dist/sof/shared/EveSOFDataTexture.js +2 -2
  539. package/dist/sof/shared/EveSOFDataTexture.js.map +1 -1
  540. package/dist/sof/shared/EveSOFDataTransform.js +2 -2
  541. package/dist/sof/shared/EveSOFDataTransform.js.map +1 -1
  542. package/dist/sof/shared/EveSofDataMeshInstance.js +2 -2
  543. package/dist/sof/shared/EveSofDataMeshInstance.js.map +1 -1
  544. package/dist/sof/sofDocumentValues.js +9 -0
  545. package/dist/sof/sofDocumentValues.js.map +1 -1
  546. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +2 -25
  547. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -1
  548. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js +2 -72
  549. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -1
  550. package/dist/trinity/controllers/ITr2ControllerOwner.js +1 -36
  551. package/dist/trinity/controllers/ITr2ControllerOwner.js.map +1 -1
  552. package/dist/trinity/controllers/Tr2Controller.js +4 -5
  553. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  554. package/dist/trinity/controllers/Tr2ControllerEventHandler.js +2 -2
  555. package/dist/trinity/controllers/Tr2ControllerEventHandler.js.map +1 -1
  556. package/dist/trinity/controllers/Tr2ControllerReference.js +9 -17
  557. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  558. package/dist/trinity/controllers/Tr2SyncToAnimation.js +4 -5
  559. package/dist/trinity/controllers/Tr2SyncToAnimation.js.map +1 -1
  560. package/dist/trinity/controllers/action/ITr2ControllerAction.js +1 -28
  561. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  562. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js +9 -7
  563. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js.map +1 -1
  564. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js +11 -9
  565. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js.map +1 -1
  566. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js +9 -7
  567. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js.map +1 -1
  568. package/dist/trinity/controllers/action/Tr2ActionCallback.js +4 -5
  569. package/dist/trinity/controllers/action/Tr2ActionCallback.js.map +1 -1
  570. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js +4 -5
  571. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js.map +1 -1
  572. package/dist/trinity/controllers/action/Tr2ActionOverlay.js +4 -5
  573. package/dist/trinity/controllers/action/Tr2ActionOverlay.js.map +1 -1
  574. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js +4 -5
  575. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js.map +1 -1
  576. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js +13 -9
  577. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js.map +1 -1
  578. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js +4 -5
  579. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js.map +1 -1
  580. package/dist/trinity/controllers/action/Tr2ActionPython.js +6 -6
  581. package/dist/trinity/controllers/action/Tr2ActionPython.js.map +1 -1
  582. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js +4 -5
  583. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js.map +1 -1
  584. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js +4 -5
  585. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js.map +1 -1
  586. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js +4 -5
  587. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
  588. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js +4 -5
  589. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js.map +1 -1
  590. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js +8 -17
  591. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js.map +1 -1
  592. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js +4 -5
  593. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js.map +1 -1
  594. package/dist/trinity/controllers/action/Tr2ActionSetValue.js +11 -9
  595. package/dist/trinity/controllers/action/Tr2ActionSetValue.js.map +1 -1
  596. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +4 -5
  597. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  598. package/dist/trinity/controllers/contracts.js +27 -19
  599. package/dist/trinity/controllers/contracts.js.map +1 -1
  600. package/dist/trinity/controllers/expression/Tr2BindingPoint.js +6 -15
  601. package/dist/trinity/controllers/expression/Tr2BindingPoint.js.map +1 -1
  602. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js +2 -2
  603. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js.map +1 -1
  604. package/dist/trinity/controllers/expression/expressionRuntime.js +136 -0
  605. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -1
  606. package/dist/trinity/controllers/index.js +6 -6
  607. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +1 -24
  608. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  609. package/dist/trinity/controllers/state/Tr2StateMachine.js +4 -6
  610. package/dist/trinity/controllers/state/Tr2StateMachine.js.map +1 -1
  611. package/dist/trinity/controllers/state/Tr2StateMachineState.js +6 -6
  612. package/dist/trinity/controllers/state/Tr2StateMachineState.js.map +1 -1
  613. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js +12 -9
  614. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js.map +1 -1
  615. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +5 -6
  616. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  617. package/dist/trinity/core/ITr2Renderable.js +1 -49
  618. package/dist/trinity/core/ITr2Renderable.js.map +1 -1
  619. package/dist/trinity/core/ITr2Updateable.js +1 -22
  620. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  621. package/dist/trinity/core/ITriReroutable.js +56 -0
  622. package/dist/trinity/core/ITriReroutable.js.map +1 -0
  623. package/dist/trinity/core/Tr2Denoiser.js +2 -2
  624. package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
  625. package/dist/trinity/core/Tr2MaterialParameterStore.js +2 -2
  626. package/dist/trinity/core/Tr2MaterialParameterStore.js.map +1 -1
  627. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js +2 -2
  628. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -1
  629. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +1 -1
  630. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -1
  631. package/dist/trinity/core/Tr2Renderer.js +161 -4
  632. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  633. package/dist/trinity/core/Tr2ShadowMap.js +3 -3
  634. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  635. package/dist/trinity/core/Tr2StreamingBitmapSaver.js +2 -2
  636. package/dist/trinity/core/Tr2StreamingBitmapSaver.js.map +1 -1
  637. package/dist/trinity/core/Tr2Transform.js +4 -5
  638. package/dist/trinity/core/Tr2Transform.js.map +1 -1
  639. package/dist/trinity/core/animation/Tr2GrannyAnimation.js +2 -2
  640. package/dist/trinity/core/animation/Tr2GrannyAnimation.js.map +1 -1
  641. package/dist/trinity/core/animation/Tr2TextureAnimation.js +2 -2
  642. package/dist/trinity/core/animation/Tr2TextureAnimation.js.map +1 -1
  643. package/dist/trinity/core/animation/TriRigidOrientation.js +2 -2
  644. package/dist/trinity/core/animation/TriRigidOrientation.js.map +1 -1
  645. package/dist/trinity/core/animation/TriTorque.js +2 -2
  646. package/dist/trinity/core/animation/TriTorque.js.map +1 -1
  647. package/dist/trinity/core/batch/CjsBatchManager.js +15 -50
  648. package/dist/trinity/core/batch/CjsBatchManager.js.map +1 -1
  649. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -1
  650. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js +12 -14
  651. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -1
  652. package/dist/trinity/core/binding/Tr2BindingVector3.js +2 -2
  653. package/dist/trinity/core/binding/Tr2BindingVector3.js.map +1 -1
  654. package/dist/trinity/core/binding/Tr2DynamicBinding.js +6 -20
  655. package/dist/trinity/core/binding/Tr2DynamicBinding.js.map +1 -1
  656. package/dist/trinity/core/binding/Tr2ExternalParameter.js +3 -6
  657. package/dist/trinity/core/binding/Tr2ExternalParameter.js.map +1 -1
  658. package/dist/trinity/core/binding/Tr2PyValueBinding.js +2 -2
  659. package/dist/trinity/core/binding/Tr2PyValueBinding.js.map +1 -1
  660. package/dist/trinity/core/binding/TriValueBinding.js +50 -24
  661. package/dist/trinity/core/binding/TriValueBinding.js.map +1 -1
  662. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js +0 -6
  663. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js.map +1 -1
  664. package/dist/trinity/core/context/CjsTrinityStepExecutor.js +7 -10
  665. package/dist/trinity/core/context/CjsTrinityStepExecutor.js.map +1 -1
  666. package/dist/trinity/core/context/Tr2RenderContext.js +74 -116
  667. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  668. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  669. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  670. package/dist/trinity/core/device/Tr2GpuBuffer.js +2 -2
  671. package/dist/trinity/core/device/Tr2GpuBuffer.js.map +1 -1
  672. package/dist/trinity/core/device/Tr2RenderTarget.js +2 -2
  673. package/dist/trinity/core/device/Tr2RenderTarget.js.map +1 -1
  674. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +2 -2
  675. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -1
  676. package/dist/trinity/core/device/Tr2SwapChain.js +2 -2
  677. package/dist/trinity/core/device/Tr2SwapChain.js.map +1 -1
  678. package/dist/trinity/core/device/TriDevice.js +576 -37
  679. package/dist/trinity/core/device/TriDevice.js.map +1 -1
  680. package/dist/trinity/core/device/gTriDev.js +49 -0
  681. package/dist/trinity/core/device/gTriDev.js.map +1 -0
  682. package/dist/trinity/core/index.js +9 -5
  683. package/dist/trinity/core/index.js.map +1 -1
  684. package/dist/trinity/core/lighting/Tr2KelvinColor.js +2 -2
  685. package/dist/trinity/core/lighting/Tr2KelvinColor.js.map +1 -1
  686. package/dist/trinity/core/lighting/Tr2LightManager.js +7 -17
  687. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  688. package/dist/trinity/core/lighting/Tr2ShLightingManager.js +2 -2
  689. package/dist/trinity/core/lighting/Tr2ShLightingManager.js.map +1 -1
  690. package/dist/trinity/core/line/Tr2BoundingLineSet.js +2 -2
  691. package/dist/trinity/core/line/Tr2BoundingLineSet.js.map +1 -1
  692. package/dist/trinity/core/line/Tr2CurveLineSet.js +10 -7
  693. package/dist/trinity/core/line/Tr2CurveLineSet.js.map +1 -1
  694. package/dist/trinity/core/line/Tr2LineGraph.js +2 -2
  695. package/dist/trinity/core/line/Tr2LineGraph.js.map +1 -1
  696. package/dist/trinity/core/line/Tr2PrimitiveSet.js +4 -5
  697. package/dist/trinity/core/line/Tr2PrimitiveSet.js.map +1 -1
  698. package/dist/trinity/core/line/TriLineSet.js +2 -2
  699. package/dist/trinity/core/line/TriLineSet.js.map +1 -1
  700. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js +1 -37
  701. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -1
  702. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js +1 -34
  703. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -1
  704. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +5 -6
  705. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  706. package/dist/trinity/core/mesh/Tr2InstancedMesh.js +2 -2
  707. package/dist/trinity/core/mesh/Tr2InstancedMesh.js.map +1 -1
  708. package/dist/trinity/core/mesh/Tr2Mesh.js +288 -183
  709. package/dist/trinity/core/mesh/Tr2Mesh.js.map +1 -1
  710. package/dist/trinity/core/mesh/Tr2MeshArea.js +32 -3
  711. package/dist/trinity/core/mesh/Tr2MeshArea.js.map +1 -1
  712. package/dist/trinity/core/mesh/Tr2MeshBase.js +58 -8
  713. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  714. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +141 -142
  715. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  716. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js +2 -2
  717. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js.map +1 -1
  718. package/dist/trinity/core/procedural/GradientTextureConstructor.js +62 -0
  719. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -0
  720. package/dist/trinity/core/procedural/gradientTexture.js +196 -0
  721. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -0
  722. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -1
  723. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +5 -0
  724. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -1
  725. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +2 -0
  726. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -1
  727. package/dist/trinity/core/tool/Tr2ManipulationTool.js +2 -2
  728. package/dist/trinity/core/tool/Tr2ManipulationTool.js.map +1 -1
  729. package/dist/trinity/core/tool/Tr2RotationTool.js +2 -2
  730. package/dist/trinity/core/tool/Tr2RotationTool.js.map +1 -1
  731. package/dist/trinity/core/tool/Tr2ScalingTool.js +2 -2
  732. package/dist/trinity/core/tool/Tr2ScalingTool.js.map +1 -1
  733. package/dist/trinity/core/tool/Tr2TranslationTool.js +2 -2
  734. package/dist/trinity/core/tool/Tr2TranslationTool.js.map +1 -1
  735. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js +2 -2
  736. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js.map +1 -1
  737. package/dist/trinity/core/variable/TriFloat.js +2 -2
  738. package/dist/trinity/core/variable/TriFloat.js.map +1 -1
  739. package/dist/trinity/core/variable/TriObserverLocal.js +2 -2
  740. package/dist/trinity/core/variable/TriObserverLocal.js.map +1 -1
  741. package/dist/trinity/core/variable/TriVariable.js +2 -2
  742. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  743. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js +2 -0
  744. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -1
  745. package/dist/trinity/core/view/TriProjection.js +2 -2
  746. package/dist/trinity/core/view/TriProjection.js.map +1 -1
  747. package/dist/trinity/core/view/TriRect.js +2 -2
  748. package/dist/trinity/core/view/TriRect.js.map +1 -1
  749. package/dist/trinity/core/view/TriView.js +2 -2
  750. package/dist/trinity/core/view/TriView.js.map +1 -1
  751. package/dist/trinity/core/view/TriViewport.js +2 -2
  752. package/dist/trinity/core/view/TriViewport.js.map +1 -1
  753. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +3 -3
  754. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  755. package/dist/trinity/curves/Tr2CurveSetRange.js +2 -2
  756. package/dist/trinity/curves/Tr2CurveSetRange.js.map +1 -1
  757. package/dist/trinity/curves/TriCurveSet.js +2 -2
  758. package/dist/trinity/curves/TriCurveSet.js.map +1 -1
  759. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js +2 -2
  760. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js.map +1 -1
  761. package/dist/trinity/curves/curve/Tr2CurveColor.js +2 -2
  762. package/dist/trinity/curves/curve/Tr2CurveColor.js.map +1 -1
  763. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js +2 -2
  764. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js.map +1 -1
  765. package/dist/trinity/curves/curve/Tr2CurveCombiner.js +3 -3
  766. package/dist/trinity/curves/curve/Tr2CurveCombiner.js.map +1 -1
  767. package/dist/trinity/curves/curve/Tr2CurveConstant.js +2 -2
  768. package/dist/trinity/curves/curve/Tr2CurveConstant.js.map +1 -1
  769. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js +2 -2
  770. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js.map +1 -1
  771. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js +2 -2
  772. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js.map +1 -1
  773. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js +3 -3
  774. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js.map +1 -1
  775. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +2 -2
  776. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  777. package/dist/trinity/curves/curve/Tr2CurveScalar.js +3 -3
  778. package/dist/trinity/curves/curve/Tr2CurveScalar.js.map +1 -1
  779. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js +2 -2
  780. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js.map +1 -1
  781. package/dist/trinity/curves/curve/Tr2CurveVector2.js +2 -2
  782. package/dist/trinity/curves/curve/Tr2CurveVector2.js.map +1 -1
  783. package/dist/trinity/curves/curve/Tr2CurveVector3.js +2 -2
  784. package/dist/trinity/curves/curve/Tr2CurveVector3.js.map +1 -1
  785. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js +2 -2
  786. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js.map +1 -1
  787. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js +2 -2
  788. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js.map +1 -1
  789. package/dist/trinity/curves/curve/Tr2DistanceTracker.js +5 -5
  790. package/dist/trinity/curves/curve/Tr2DistanceTracker.js.map +1 -1
  791. package/dist/trinity/curves/curve/Tr2FollowCurve.js +2 -2
  792. package/dist/trinity/curves/curve/Tr2FollowCurve.js.map +1 -1
  793. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js +2 -2
  794. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js.map +1 -1
  795. package/dist/trinity/curves/curve/Tr2RotationAdapter.js +2 -2
  796. package/dist/trinity/curves/curve/Tr2RotationAdapter.js.map +1 -1
  797. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js +2 -2
  798. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js.map +1 -1
  799. package/dist/trinity/curves/curve/Tr2ScalarFader.js +2 -2
  800. package/dist/trinity/curves/curve/Tr2ScalarFader.js.map +1 -1
  801. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js +2 -2
  802. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js.map +1 -1
  803. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js +2 -2
  804. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js.map +1 -1
  805. package/dist/trinity/curves/curve/TriColorSequencer.js +18 -18
  806. package/dist/trinity/curves/curve/TriColorSequencer.js.map +1 -1
  807. package/dist/trinity/curves/curve/TriEventCurve.js +51 -51
  808. package/dist/trinity/curves/curve/TriEventCurve.js.map +1 -1
  809. package/dist/trinity/curves/curve/TriPerlinCurve.js +2 -2
  810. package/dist/trinity/curves/curve/TriPerlinCurve.js.map +1 -1
  811. package/dist/trinity/curves/curve/TriVectorSequencer.js +36 -36
  812. package/dist/trinity/curves/curve/TriVectorSequencer.js.map +1 -1
  813. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js +2 -2
  814. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js.map +1 -1
  815. package/dist/trinity/curves/key/Tr2MatrixKey.js +2 -2
  816. package/dist/trinity/curves/key/Tr2MatrixKey.js.map +1 -1
  817. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js +2 -2
  818. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js.map +1 -1
  819. package/dist/trinity/curves/key/Tr2ScalarExprKey.js +28 -24
  820. package/dist/trinity/curves/key/Tr2ScalarExprKey.js.map +1 -1
  821. package/dist/trinity/curves/key/TriEventKey.js +2 -2
  822. package/dist/trinity/curves/key/TriEventKey.js.map +1 -1
  823. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js +2 -2
  824. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js.map +1 -1
  825. package/dist/trinity/curves/track/Tr2GrannyTrack.js +9 -4
  826. package/dist/trinity/curves/track/Tr2GrannyTrack.js.map +1 -1
  827. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js +2 -2
  828. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js.map +1 -1
  829. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js +2 -2
  830. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js.map +1 -1
  831. package/dist/trinity/eve/AudioGameObject.js +6 -8
  832. package/dist/trinity/eve/AudioGameObject.js.map +1 -1
  833. package/dist/trinity/eve/EveCustomMask.js +2 -2
  834. package/dist/trinity/eve/EveCustomMask.js.map +1 -1
  835. package/dist/trinity/eve/EveDistanceField.js +6 -4
  836. package/dist/trinity/eve/EveDistanceField.js.map +1 -1
  837. package/dist/trinity/eve/EveImpactOverlay.js +2 -2
  838. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  839. package/dist/trinity/eve/EveThrottleable.js +2 -2
  840. package/dist/trinity/eve/EveThrottleable.js.map +1 -1
  841. package/dist/trinity/eve/EveTriggerVolume.js +4 -5
  842. package/dist/trinity/eve/EveTriggerVolume.js.map +1 -1
  843. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +1 -23
  844. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  845. package/dist/trinity/eve/IEveSpaceObject2.js +1 -24
  846. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  847. package/dist/trinity/eve/IEveTransform.js +1 -22
  848. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  849. package/dist/trinity/eve/attachment/banner/EveBannerItem.js +2 -2
  850. package/dist/trinity/eve/attachment/banner/EveBannerItem.js.map +1 -1
  851. package/dist/trinity/eve/attachment/banner/EveBannerLight.js +2 -2
  852. package/dist/trinity/eve/attachment/banner/EveBannerLight.js.map +1 -1
  853. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +20 -3
  854. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  855. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +127 -122
  856. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  857. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +5 -5
  858. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -1
  859. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +4 -5
  860. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  861. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js +4 -2
  862. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js.map +1 -1
  863. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +151 -148
  864. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  865. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +3 -3
  866. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  867. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js +2 -2
  868. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js.map +1 -1
  869. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js +2 -2
  870. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js.map +1 -1
  871. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js +2 -2
  872. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js.map +1 -1
  873. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +10 -4
  874. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  875. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js +3 -2
  876. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js.map +1 -1
  877. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js +2 -2
  878. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -1
  879. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +3 -3
  880. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  881. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js +2 -2
  882. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -1
  883. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js +2 -2
  884. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js.map +1 -1
  885. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +4 -4
  886. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  887. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js +2 -2
  888. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -1
  889. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +5 -5
  890. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  891. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js +2 -2
  892. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -1
  893. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js +7 -4
  894. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
  895. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +177 -144
  896. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  897. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +2 -2
  898. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  899. package/dist/trinity/eve/camera/EveCamera.js +5 -11
  900. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  901. package/dist/trinity/eve/child/EveChildAudio.js +4 -5
  902. package/dist/trinity/eve/child/EveChildAudio.js.map +1 -1
  903. package/dist/trinity/eve/child/EveChildBehaviorSystem.js +5 -6
  904. package/dist/trinity/eve/child/EveChildBehaviorSystem.js.map +1 -1
  905. package/dist/trinity/eve/child/EveChildBoosterSet.js +6 -6
  906. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  907. package/dist/trinity/eve/child/EveChildBulletStorm.js +4 -5
  908. package/dist/trinity/eve/child/EveChildBulletStorm.js.map +1 -1
  909. package/dist/trinity/eve/child/EveChildCloud.js +5 -6
  910. package/dist/trinity/eve/child/EveChildCloud.js.map +1 -1
  911. package/dist/trinity/eve/child/EveChildCloud2.js +166 -166
  912. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  913. package/dist/trinity/eve/child/EveChildContainer.js +235 -169
  914. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  915. package/dist/trinity/eve/child/EveChildEffectPropagator.js +9 -9
  916. package/dist/trinity/eve/child/EveChildEffectPropagator.js.map +1 -1
  917. package/dist/trinity/eve/child/EveChildExplosion.js +11 -7
  918. package/dist/trinity/eve/child/EveChildExplosion.js.map +1 -1
  919. package/dist/trinity/eve/child/EveChildFogVolume.js +2 -2
  920. package/dist/trinity/eve/child/EveChildFogVolume.js.map +1 -1
  921. package/dist/trinity/eve/child/EveChildInheritProperties.js +2 -2
  922. package/dist/trinity/eve/child/EveChildInheritProperties.js.map +1 -1
  923. package/dist/trinity/eve/child/EveChildInstanceContainer.js +2 -2
  924. package/dist/trinity/eve/child/EveChildInstanceContainer.js.map +1 -1
  925. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js +11 -7
  926. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js.map +1 -1
  927. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +2 -2
  928. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  929. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +2 -2
  930. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -1
  931. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +2 -2
  932. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -1
  933. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +4 -5
  934. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  935. package/dist/trinity/eve/child/EveChildLightingOverride.js +4 -5
  936. package/dist/trinity/eve/child/EveChildLightingOverride.js.map +1 -1
  937. package/dist/trinity/eve/child/EveChildLineSet.js +4 -5
  938. package/dist/trinity/eve/child/EveChildLineSet.js.map +1 -1
  939. package/dist/trinity/eve/child/EveChildLink.js +2 -2
  940. package/dist/trinity/eve/child/EveChildLink.js.map +1 -1
  941. package/dist/trinity/eve/child/EveChildMesh.js +299 -227
  942. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  943. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +2 -2
  944. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -1
  945. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js +2 -2
  946. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -1
  947. package/dist/trinity/eve/child/EveChildParticleSphere.js +4 -5
  948. package/dist/trinity/eve/child/EveChildParticleSphere.js.map +1 -1
  949. package/dist/trinity/eve/child/EveChildParticleSystem.js +36 -36
  950. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  951. package/dist/trinity/eve/child/EveChildPlug.js +60 -14
  952. package/dist/trinity/eve/child/EveChildPlug.js.map +1 -1
  953. package/dist/trinity/eve/child/EveChildPostProcessVolume.js +2 -2
  954. package/dist/trinity/eve/child/EveChildPostProcessVolume.js.map +1 -1
  955. package/dist/trinity/eve/child/EveChildQuad.js +4 -5
  956. package/dist/trinity/eve/child/EveChildQuad.js.map +1 -1
  957. package/dist/trinity/eve/child/EveChildRef.js +2 -2
  958. package/dist/trinity/eve/child/EveChildRef.js.map +1 -1
  959. package/dist/trinity/eve/child/EveChildSocket.js +2 -2
  960. package/dist/trinity/eve/child/EveChildSocket.js.map +1 -1
  961. package/dist/trinity/eve/child/EveChildSpherePin.js +4 -4
  962. package/dist/trinity/eve/child/EveChildSpherePin.js.map +1 -1
  963. package/dist/trinity/eve/child/EveChildTurret.js +4 -4
  964. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  965. package/dist/trinity/eve/child/EveCloudVolumeBall.js +2 -2
  966. package/dist/trinity/eve/child/EveCloudVolumeBall.js.map +1 -1
  967. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js +6 -6
  968. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js.map +1 -1
  969. package/dist/trinity/eve/child/EveSpaceObjectChild.js +2 -2
  970. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  971. package/dist/trinity/eve/child/IEveLightingOverride.js +1 -23
  972. package/dist/trinity/eve/child/IEveLightingOverride.js.map +1 -1
  973. package/dist/trinity/eve/child/behaviors/Allign.js +2 -2
  974. package/dist/trinity/eve/child/behaviors/Allign.js.map +1 -1
  975. package/dist/trinity/eve/child/behaviors/ApproachGroup.js +2 -2
  976. package/dist/trinity/eve/child/behaviors/ApproachGroup.js.map +1 -1
  977. package/dist/trinity/eve/child/behaviors/BackAndForth.js +2 -2
  978. package/dist/trinity/eve/child/behaviors/BackAndForth.js.map +1 -1
  979. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js +4 -4
  980. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js.map +1 -1
  981. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js +2 -2
  982. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js.map +1 -1
  983. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js +2 -2
  984. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js.map +1 -1
  985. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js +2 -2
  986. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js.map +1 -1
  987. package/dist/trinity/eve/child/behaviors/FollowASpline.js +2 -2
  988. package/dist/trinity/eve/child/behaviors/FollowASpline.js.map +1 -1
  989. package/dist/trinity/eve/child/behaviors/Formation.js +2 -2
  990. package/dist/trinity/eve/child/behaviors/Formation.js.map +1 -1
  991. package/dist/trinity/eve/child/behaviors/InclusionVolume.js +2 -2
  992. package/dist/trinity/eve/child/behaviors/InclusionVolume.js.map +1 -1
  993. package/dist/trinity/eve/child/behaviors/Inertia.js +2 -2
  994. package/dist/trinity/eve/child/behaviors/Inertia.js.map +1 -1
  995. package/dist/trinity/eve/child/behaviors/PlayFX.js +2 -2
  996. package/dist/trinity/eve/child/behaviors/PlayFX.js.map +1 -1
  997. package/dist/trinity/eve/child/behaviors/SeekTarget.js +2 -2
  998. package/dist/trinity/eve/child/behaviors/SeekTarget.js.map +1 -1
  999. package/dist/trinity/eve/child/behaviors/SpawnDrones.js +2 -2
  1000. package/dist/trinity/eve/child/behaviors/SpawnDrones.js.map +1 -1
  1001. package/dist/trinity/eve/child/behaviors/Wander.js +2 -2
  1002. package/dist/trinity/eve/child/behaviors/Wander.js.map +1 -1
  1003. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js +2 -2
  1004. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -1
  1005. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js +2 -2
  1006. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -1
  1007. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js +8 -8
  1008. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
  1009. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js +8 -8
  1010. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js.map +1 -1
  1011. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js +2 -2
  1012. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js.map +1 -1
  1013. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js +2 -2
  1014. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -1
  1015. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js +2 -2
  1016. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -1
  1017. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js +2 -2
  1018. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
  1019. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js +2 -2
  1020. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js.map +1 -1
  1021. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js +2 -2
  1022. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -1
  1023. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js +5 -6
  1024. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
  1025. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js +3 -3
  1026. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -1
  1027. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +3 -3
  1028. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -1
  1029. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js +2 -2
  1030. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -1
  1031. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js +3 -3
  1032. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -1
  1033. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js +4 -4
  1034. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -1
  1035. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js +4 -4
  1036. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -1
  1037. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js +4 -4
  1038. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -1
  1039. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js +4 -4
  1040. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -1
  1041. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js +2 -2
  1042. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js.map +1 -1
  1043. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +2 -2
  1044. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -1
  1045. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +2 -2
  1046. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -1
  1047. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +2 -2
  1048. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -1
  1049. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js +2 -2
  1050. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -1
  1051. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +4 -4
  1052. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -1
  1053. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js +2 -2
  1054. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -1
  1055. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +2 -2
  1056. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -1
  1057. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +2 -2
  1058. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -1
  1059. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +2 -2
  1060. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -1
  1061. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +2 -2
  1062. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -1
  1063. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js +2 -2
  1064. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -1
  1065. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +2 -2
  1066. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -1
  1067. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js +2 -2
  1068. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -1
  1069. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +2 -2
  1070. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -1
  1071. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +2 -2
  1072. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -1
  1073. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +2 -2
  1074. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -1
  1075. package/dist/trinity/eve/effect/lensflare/EveLensflare.js +4 -5
  1076. package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
  1077. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js +4 -5
  1078. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js.map +1 -1
  1079. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js +4 -4
  1080. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -1
  1081. package/dist/trinity/eve/index.js +4 -4
  1082. package/dist/trinity/eve/lights/Tr2FactionLight.js +5 -6
  1083. package/dist/trinity/eve/lights/Tr2FactionLight.js.map +1 -1
  1084. package/dist/trinity/eve/lights/Tr2Light.js +37 -9
  1085. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  1086. package/dist/trinity/eve/lights/Tr2PointLight.js +2 -2
  1087. package/dist/trinity/eve/lights/Tr2PointLight.js.map +1 -1
  1088. package/dist/trinity/eve/lights/Tr2SpotLight.js +2 -2
  1089. package/dist/trinity/eve/lights/Tr2SpotLight.js.map +1 -1
  1090. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js +29 -31
  1091. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js.map +1 -1
  1092. package/dist/trinity/eve/locator/EveLocator2.js +2 -2
  1093. package/dist/trinity/eve/locator/EveLocator2.js.map +1 -1
  1094. package/dist/trinity/eve/locator/EveLocatorSets.js +2 -2
  1095. package/dist/trinity/eve/locator/EveLocatorSets.js.map +1 -1
  1096. package/dist/trinity/eve/locator/Locator.js +2 -2
  1097. package/dist/trinity/eve/locator/Locator.js.map +1 -1
  1098. package/dist/trinity/eve/overlays/EveDamageOverlay.js +2 -2
  1099. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  1100. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js +2 -2
  1101. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js.map +1 -1
  1102. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +5 -6
  1103. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  1104. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js +4 -5
  1105. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
  1106. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js +2 -2
  1107. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
  1108. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js +2 -2
  1109. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
  1110. package/dist/trinity/eve/renderable/stretch/EveStretch.js +6 -6
  1111. package/dist/trinity/eve/renderable/stretch/EveStretch.js.map +1 -1
  1112. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +10 -8
  1113. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  1114. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +4 -5
  1115. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  1116. package/dist/trinity/eve/scene/EveSpaceScene.js +2 -2
  1117. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  1118. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -2
  1119. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  1120. package/dist/trinity/eve/scene/components/EveComponentRegistry.js +3 -3
  1121. package/dist/trinity/eve/scene/components/EveComponentRegistry.js.map +1 -1
  1122. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js +6 -7
  1123. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
  1124. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js +2 -2
  1125. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js.map +1 -1
  1126. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js +4 -8
  1127. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
  1128. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js +7 -4
  1129. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js.map +1 -1
  1130. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js +25 -15
  1131. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
  1132. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js +4 -9
  1133. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js.map +1 -1
  1134. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js +2 -2
  1135. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js.map +1 -1
  1136. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +2 -3
  1137. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -1
  1138. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +2 -2
  1139. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -1
  1140. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +2 -2
  1141. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -1
  1142. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +10 -18
  1143. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -1
  1144. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +2 -2
  1145. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -1
  1146. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +2 -2
  1147. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -1
  1148. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +4 -9
  1149. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -1
  1150. package/dist/trinity/eve/socket/EveSocketParameterBool.js +2 -2
  1151. package/dist/trinity/eve/socket/EveSocketParameterBool.js.map +1 -1
  1152. package/dist/trinity/eve/socket/EveSocketParameterColor.js +2 -2
  1153. package/dist/trinity/eve/socket/EveSocketParameterColor.js.map +1 -1
  1154. package/dist/trinity/eve/socket/EveSocketParameterFloat.js +2 -2
  1155. package/dist/trinity/eve/socket/EveSocketParameterFloat.js.map +1 -1
  1156. package/dist/trinity/eve/socket/EveSocketParameterInt.js +2 -2
  1157. package/dist/trinity/eve/socket/EveSocketParameterInt.js.map +1 -1
  1158. package/dist/trinity/eve/socket/EveSocketParameterString.js +2 -2
  1159. package/dist/trinity/eve/socket/EveSocketParameterString.js.map +1 -1
  1160. package/dist/trinity/eve/socket/EveSocketParameterVector2.js +2 -2
  1161. package/dist/trinity/eve/socket/EveSocketParameterVector2.js.map +1 -1
  1162. package/dist/trinity/eve/socket/EveSocketParameterVector3.js +2 -2
  1163. package/dist/trinity/eve/socket/EveSocketParameterVector3.js.map +1 -1
  1164. package/dist/trinity/eve/socket/EveSocketParameterVector4.js +2 -2
  1165. package/dist/trinity/eve/socket/EveSocketParameterVector4.js.map +1 -1
  1166. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js +20 -17
  1167. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js.map +1 -1
  1168. package/dist/trinity/eve/spaceObject/EveMissile.js +2 -2
  1169. package/dist/trinity/eve/spaceObject/EveMissile.js.map +1 -1
  1170. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js +2 -2
  1171. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js.map +1 -1
  1172. package/dist/trinity/eve/spaceObject/EveMobile.js +2 -2
  1173. package/dist/trinity/eve/spaceObject/EveMobile.js.map +1 -1
  1174. package/dist/trinity/eve/spaceObject/EveRootTransform.js +2 -2
  1175. package/dist/trinity/eve/spaceObject/EveRootTransform.js.map +1 -1
  1176. package/dist/trinity/eve/spaceObject/EveShip2.js +2 -2
  1177. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  1178. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +525 -431
  1179. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  1180. package/dist/trinity/eve/spaceObject/EveTransform.js +7 -7
  1181. package/dist/trinity/eve/spaceObject/EveTransform.js.map +1 -1
  1182. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +2 -2
  1183. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -1
  1184. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +2 -2
  1185. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -1
  1186. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js +2 -2
  1187. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js.map +1 -1
  1188. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js +2 -2
  1189. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
  1190. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js +7 -8
  1191. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
  1192. package/dist/trinity/eve/ui/EveConnector.js +2 -2
  1193. package/dist/trinity/eve/ui/EveConnector.js.map +1 -1
  1194. package/dist/trinity/eve/ui/EveEllipseDefinition.js +2 -2
  1195. package/dist/trinity/eve/ui/EveEllipseDefinition.js.map +1 -1
  1196. package/dist/trinity/eve/ui/EveEllipseSet.js +36 -6
  1197. package/dist/trinity/eve/ui/EveEllipseSet.js.map +1 -1
  1198. package/dist/trinity/eve/ui/EveLineContainer.js +4 -5
  1199. package/dist/trinity/eve/ui/EveLineContainer.js.map +1 -1
  1200. package/dist/trinity/eve/ui/EveProjectBracket.js +11 -3
  1201. package/dist/trinity/eve/ui/EveProjectBracket.js.map +1 -1
  1202. package/dist/trinity/eve/ui/EveSpherePin.js +6 -7
  1203. package/dist/trinity/eve/ui/EveSpherePin.js.map +1 -1
  1204. package/dist/trinity/eve/ui/EveSprite2dBracket.js +2 -2
  1205. package/dist/trinity/eve/ui/EveSprite2dBracket.js.map +1 -1
  1206. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js +2 -2
  1207. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js.map +1 -1
  1208. package/dist/trinity/eve/ui/EveTacticalOverlay.js +6 -24
  1209. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  1210. package/dist/trinity/eve/ui/EveUiObject.js +2 -2
  1211. package/dist/trinity/eve/ui/EveUiObject.js.map +1 -1
  1212. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +4 -5
  1213. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  1214. package/dist/trinity/eve/ui/lines/EveLineSet.js +6 -7
  1215. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  1216. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +2 -2
  1217. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -1
  1218. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +8 -9
  1219. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  1220. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js +2 -2
  1221. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
  1222. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js +2 -2
  1223. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
  1224. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +2 -2
  1225. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
  1226. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +4 -4
  1227. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
  1228. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +2 -2
  1229. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
  1230. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +2 -2
  1231. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
  1232. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +2 -2
  1233. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
  1234. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +4 -4
  1235. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
  1236. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +2 -2
  1237. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
  1238. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +2 -2
  1239. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
  1240. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +2 -2
  1241. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
  1242. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +2 -2
  1243. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
  1244. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +2 -2
  1245. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
  1246. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +2 -2
  1247. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
  1248. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +2 -2
  1249. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
  1250. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +2 -2
  1251. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
  1252. package/dist/trinity/eve/volume/EveBoxVolume.js +44 -44
  1253. package/dist/trinity/eve/volume/EveBoxVolume.js.map +1 -1
  1254. package/dist/trinity/eve/volume/EveEllipsoidVolume.js +2 -2
  1255. package/dist/trinity/eve/volume/EveEllipsoidVolume.js.map +1 -1
  1256. package/dist/trinity/eve/volume/EveSphereVolume.js +5 -6
  1257. package/dist/trinity/eve/volume/EveSphereVolume.js.map +1 -1
  1258. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js +2 -2
  1259. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js.map +1 -1
  1260. package/dist/trinity/generated/eve/effect/EveOccluder.js +2 -2
  1261. package/dist/trinity/generated/eve/effect/EveOccluder.js.map +1 -1
  1262. package/dist/trinity/generated/eve/effect/EveStarfield.js +2 -2
  1263. package/dist/trinity/generated/eve/effect/EveStarfield.js.map +1 -1
  1264. package/dist/trinity/generated/font/Tr2FontManager.js +2 -2
  1265. package/dist/trinity/generated/font/Tr2FontManager.js.map +1 -1
  1266. package/dist/trinity/generated/font/Tr2FontMeasurer.js +2 -2
  1267. package/dist/trinity/generated/font/Tr2FontMeasurer.js.map +1 -1
  1268. package/dist/trinity/generated/font/Tr2SBitWrapper.js +2 -2
  1269. package/dist/trinity/generated/font/Tr2SBitWrapper.js.map +1 -1
  1270. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js +2 -2
  1271. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js.map +1 -1
  1272. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js +2 -2
  1273. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js.map +1 -1
  1274. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js +2 -2
  1275. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js.map +1 -1
  1276. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js +2 -2
  1277. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js.map +1 -1
  1278. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js +2 -2
  1279. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js.map +1 -1
  1280. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js +2 -2
  1281. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js.map +1 -1
  1282. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js +2 -2
  1283. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js.map +1 -1
  1284. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js +2 -2
  1285. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js.map +1 -1
  1286. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js +2 -2
  1287. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js.map +1 -1
  1288. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js +2 -2
  1289. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js.map +1 -1
  1290. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js +2 -2
  1291. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js.map +1 -1
  1292. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js +2 -2
  1293. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js.map +1 -1
  1294. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js +2 -2
  1295. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js.map +1 -1
  1296. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js +2 -2
  1297. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js.map +1 -1
  1298. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +2 -2
  1299. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +1 -1
  1300. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js +2 -2
  1301. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js.map +1 -1
  1302. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js +2 -2
  1303. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js.map +1 -1
  1304. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js +2 -2
  1305. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js.map +1 -1
  1306. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js +2 -2
  1307. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js.map +1 -1
  1308. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js +2 -2
  1309. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js.map +1 -1
  1310. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js +2 -2
  1311. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js.map +1 -1
  1312. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js +2 -2
  1313. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js.map +1 -1
  1314. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js +2 -2
  1315. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js.map +1 -1
  1316. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js +2 -2
  1317. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js.map +1 -1
  1318. package/dist/trinity/index.js +23 -16
  1319. package/dist/trinity/index.js.map +1 -1
  1320. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js +1 -31
  1321. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -1
  1322. package/dist/trinity/particle/Tr2ParticleSystem.js +51 -52
  1323. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  1324. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js +2 -2
  1325. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js.map +1 -1
  1326. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js +2 -2
  1327. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js.map +1 -1
  1328. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js +2 -2
  1329. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js.map +1 -1
  1330. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js +2 -2
  1331. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js.map +1 -1
  1332. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js +2 -2
  1333. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js.map +1 -1
  1334. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js +2 -2
  1335. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js.map +1 -1
  1336. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js +2 -2
  1337. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js.map +1 -1
  1338. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js +13 -3
  1339. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js.map +1 -1
  1340. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js +2 -2
  1341. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js.map +1 -1
  1342. package/dist/trinity/particle/element/Tr2ParticleElementData.js +22 -8
  1343. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  1344. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js +13 -25
  1345. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js.map +1 -1
  1346. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js +38 -3
  1347. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js.map +1 -1
  1348. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +26 -27
  1349. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  1350. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +4 -5
  1351. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  1352. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js +2 -2
  1353. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js.map +1 -1
  1354. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +17 -18
  1355. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  1356. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js +2 -2
  1357. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js.map +1 -1
  1358. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js +2 -2
  1359. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js.map +1 -1
  1360. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js +2 -2
  1361. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js.map +1 -1
  1362. package/dist/trinity/particle/force/Tr2ParticleDragForce.js +2 -2
  1363. package/dist/trinity/particle/force/Tr2ParticleDragForce.js.map +1 -1
  1364. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js +2 -2
  1365. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js.map +1 -1
  1366. package/dist/trinity/particle/force/Tr2ParticleSpring.js +2 -2
  1367. package/dist/trinity/particle/force/Tr2ParticleSpring.js.map +1 -1
  1368. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js +2 -2
  1369. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js.map +1 -1
  1370. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js +2 -2
  1371. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js.map +1 -1
  1372. package/dist/trinity/particle/index.js +1 -1
  1373. package/dist/trinity/postProcess/Tr2PostProcess.js +2 -2
  1374. package/dist/trinity/postProcess/Tr2PostProcess.js.map +1 -1
  1375. package/dist/trinity/postProcess/Tr2PostProcess2.js +2 -2
  1376. package/dist/trinity/postProcess/Tr2PostProcess2.js.map +1 -1
  1377. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js +2 -2
  1378. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js.map +1 -1
  1379. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -4
  1380. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
  1381. package/dist/trinity/postProcess/Tr2SSAO.js +4 -4
  1382. package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
  1383. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js +2 -2
  1384. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js.map +1 -1
  1385. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js +2 -2
  1386. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js.map +1 -1
  1387. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js +2 -2
  1388. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js.map +1 -1
  1389. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js +2 -2
  1390. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js.map +1 -1
  1391. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js +2 -2
  1392. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js.map +1 -1
  1393. package/dist/trinity/postProcess/effect/Tr2PPEffect.js +2 -2
  1394. package/dist/trinity/postProcess/effect/Tr2PPEffect.js.map +1 -1
  1395. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js +2 -2
  1396. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js.map +1 -1
  1397. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js +2 -2
  1398. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js.map +1 -1
  1399. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js +2 -2
  1400. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js.map +1 -1
  1401. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js +2 -2
  1402. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js.map +1 -1
  1403. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js +2 -2
  1404. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js.map +1 -1
  1405. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js +2 -2
  1406. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js.map +1 -1
  1407. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js +2 -2
  1408. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js.map +1 -1
  1409. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js +2 -2
  1410. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js.map +1 -1
  1411. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js +2 -2
  1412. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js.map +1 -1
  1413. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js +2 -2
  1414. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js.map +1 -1
  1415. package/dist/trinity/renderJob/Tr2RenderJobs.js +5 -5
  1416. package/dist/trinity/renderJob/Tr2RenderJobs.js.map +1 -1
  1417. package/dist/trinity/renderJob/TriRenderJob.js +4 -4
  1418. package/dist/trinity/renderJob/TriRenderJob.js.map +1 -1
  1419. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js +4 -5
  1420. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js.map +1 -1
  1421. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js +4 -5
  1422. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js.map +1 -1
  1423. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js +2 -2
  1424. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js.map +1 -1
  1425. package/dist/trinity/renderJob/step/TriRenderStep.js +2 -2
  1426. package/dist/trinity/renderJob/step/TriRenderStep.js.map +1 -1
  1427. package/dist/trinity/renderJob/step/TriStepClear.js +2 -2
  1428. package/dist/trinity/renderJob/step/TriStepClear.js.map +1 -1
  1429. package/dist/trinity/renderJob/step/TriStepClearUav.js +2 -2
  1430. package/dist/trinity/renderJob/step/TriStepClearUav.js.map +1 -1
  1431. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js +2 -2
  1432. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js.map +1 -1
  1433. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js +2 -2
  1434. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js.map +1 -1
  1435. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js +2 -2
  1436. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js.map +1 -1
  1437. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js +2 -2
  1438. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js.map +1 -1
  1439. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js +2 -2
  1440. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js.map +1 -1
  1441. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js +2 -2
  1442. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js.map +1 -1
  1443. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js +2 -2
  1444. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js.map +1 -1
  1445. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +2 -2
  1446. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  1447. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js +2 -2
  1448. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js.map +1 -1
  1449. package/dist/trinity/renderJob/step/TriStepRenderDebug.js +2 -2
  1450. package/dist/trinity/renderJob/step/TriStepRenderDebug.js.map +1 -1
  1451. package/dist/trinity/renderJob/step/TriStepRenderEffect.js +2 -2
  1452. package/dist/trinity/renderJob/step/TriStepRenderEffect.js.map +1 -1
  1453. package/dist/trinity/renderJob/step/TriStepRenderFps.js +2 -2
  1454. package/dist/trinity/renderJob/step/TriStepRenderFps.js.map +1 -1
  1455. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js +2 -2
  1456. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js.map +1 -1
  1457. package/dist/trinity/renderJob/step/TriStepRenderObject.js +2 -2
  1458. package/dist/trinity/renderJob/step/TriStepRenderObject.js.map +1 -1
  1459. package/dist/trinity/renderJob/step/TriStepRenderPass.js +2 -2
  1460. package/dist/trinity/renderJob/step/TriStepRenderPass.js.map +1 -1
  1461. package/dist/trinity/renderJob/step/TriStepRenderScene.js +2 -2
  1462. package/dist/trinity/renderJob/step/TriStepRenderScene.js.map +1 -1
  1463. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js +2 -2
  1464. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js.map +1 -1
  1465. package/dist/trinity/renderJob/step/TriStepRenderTexture.js +2 -2
  1466. package/dist/trinity/renderJob/step/TriStepRenderTexture.js.map +1 -1
  1467. package/dist/trinity/renderJob/step/TriStepResolve.js +2 -2
  1468. package/dist/trinity/renderJob/step/TriStepResolve.js.map +1 -1
  1469. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js +2 -2
  1470. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js.map +1 -1
  1471. package/dist/trinity/renderJob/step/TriStepRunJob.js +2 -2
  1472. package/dist/trinity/renderJob/step/TriStepRunJob.js.map +1 -1
  1473. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js +2 -2
  1474. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js.map +1 -1
  1475. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js +2 -2
  1476. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js.map +1 -1
  1477. package/dist/trinity/renderJob/step/TriStepSetProjection.js +2 -2
  1478. package/dist/trinity/renderJob/step/TriStepSetProjection.js.map +1 -1
  1479. package/dist/trinity/renderJob/step/TriStepSetRenderState.js +2 -2
  1480. package/dist/trinity/renderJob/step/TriStepSetRenderState.js.map +1 -1
  1481. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js +2 -2
  1482. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js.map +1 -1
  1483. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js +2 -2
  1484. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js.map +1 -1
  1485. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js +2 -2
  1486. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js.map +1 -1
  1487. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js +2 -2
  1488. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js.map +1 -1
  1489. package/dist/trinity/renderJob/step/TriStepSetView.js +2 -2
  1490. package/dist/trinity/renderJob/step/TriStepSetView.js.map +1 -1
  1491. package/dist/trinity/renderJob/step/TriStepSetViewport.js +2 -2
  1492. package/dist/trinity/renderJob/step/TriStepSetViewport.js.map +1 -1
  1493. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js +2 -2
  1494. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js.map +1 -1
  1495. package/dist/trinity/renderJob/step/TriStepTestBlocking.js +2 -2
  1496. package/dist/trinity/renderJob/step/TriStepTestBlocking.js.map +1 -1
  1497. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js +2 -2
  1498. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js.map +1 -1
  1499. package/dist/trinity/renderJob/step/TriStepUpdate.js +2 -2
  1500. package/dist/trinity/renderJob/step/TriStepUpdate.js.map +1 -1
  1501. package/dist/trinity/shader/Tr2DataTextureManager.js +9 -9
  1502. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  1503. package/dist/trinity/shader/Tr2Effect.js +370 -347
  1504. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  1505. package/dist/trinity/shader/Tr2Material.js +5 -5
  1506. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  1507. package/dist/trinity/shader/Tr2ShaderBuffer.js +3 -4
  1508. package/dist/trinity/shader/Tr2ShaderBuffer.js.map +1 -1
  1509. package/dist/trinity/shader/index.js +3 -0
  1510. package/dist/trinity/shader/index.js.map +1 -1
  1511. package/dist/trinity/shader/parameter/CjsParameter.js +202 -185
  1512. package/dist/trinity/shader/parameter/CjsParameter.js.map +1 -1
  1513. package/dist/trinity/shader/parameter/CjsVectorParameter.js +2 -2
  1514. package/dist/trinity/shader/parameter/CjsVectorParameter.js.map +1 -1
  1515. package/dist/trinity/shader/parameter/ITriEffectParameter.js +56 -0
  1516. package/dist/trinity/shader/parameter/ITriEffectParameter.js.map +1 -0
  1517. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js +31 -0
  1518. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js.map +1 -0
  1519. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js +43 -0
  1520. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js.map +1 -0
  1521. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js +17 -5
  1522. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js.map +1 -1
  1523. package/dist/trinity/shader/parameter/Tr2FloatParameter.js +46 -45
  1524. package/dist/trinity/shader/parameter/Tr2FloatParameter.js.map +1 -1
  1525. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +14 -12
  1526. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  1527. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js +33 -32
  1528. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
  1529. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +11 -10
  1530. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
  1531. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js +55 -53
  1532. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
  1533. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js +49 -48
  1534. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
  1535. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js +52 -51
  1536. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
  1537. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js +56 -55
  1538. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
  1539. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js +8 -8
  1540. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js.map +1 -1
  1541. package/dist/trinity/shader/parameter/TriTextureParameter.js +27 -22
  1542. package/dist/trinity/shader/parameter/TriTextureParameter.js.map +1 -1
  1543. package/dist/trinity/shader/parameter/TriTransformParameter.js +27 -27
  1544. package/dist/trinity/shader/parameter/TriTransformParameter.js.map +1 -1
  1545. package/dist/trinity/shader/parameter/TriVariableParameter.js +53 -54
  1546. package/dist/trinity/shader/parameter/TriVariableParameter.js.map +1 -1
  1547. package/dist/trinity/shader/parameter/TriVector4.js +2 -2
  1548. package/dist/trinity/shader/parameter/TriVector4.js.map +1 -1
  1549. package/dist/trinity/shader/reflection/Tr2ShaderOption.js +4 -2
  1550. package/dist/trinity/shader/reflection/Tr2ShaderOption.js.map +1 -1
  1551. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js +11 -2
  1552. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js.map +1 -1
  1553. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js +2 -2
  1554. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js.map +1 -1
  1555. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js +2 -2
  1556. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js.map +1 -1
  1557. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js +2 -2
  1558. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js.map +1 -1
  1559. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js +8 -9
  1560. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js.map +1 -1
  1561. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js +2 -2
  1562. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js.map +1 -1
  1563. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js +2 -2
  1564. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js.map +1 -1
  1565. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js +4 -4
  1566. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js.map +1 -1
  1567. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js +2 -2
  1568. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js.map +1 -1
  1569. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js +2 -2
  1570. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js.map +1 -1
  1571. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js +2 -2
  1572. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js.map +1 -1
  1573. package/dist/trinity/ui/Tr2PresentParameters.js +2 -2
  1574. package/dist/trinity/ui/Tr2PresentParameters.js.map +1 -1
  1575. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js +3 -3
  1576. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js.map +1 -1
  1577. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -1
  1578. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  1579. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  1580. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  1581. package/docs/core/README.md +38 -38
  1582. package/docs/core/architecture.md +6 -5
  1583. package/docs/core/reference/api.md +0 -10
  1584. package/docs/core/reference/classes/README.md +57 -67
  1585. package/docs/global/architecture.md +1 -3
  1586. package/docs/global/blue-enums.md +115 -0
  1587. package/docs/global/concepts/model-lifecycle.md +177 -182
  1588. package/docs/global/core-types/README.md +394 -317
  1589. package/docs/global/reference/api.md +2 -2
  1590. package/docs/global/reference/classes/README.md +355 -205
  1591. package/docs/global/reference/classes/dropped.md +40 -0
  1592. package/docs/resource/architecture.md +152 -112
  1593. package/docs/resource/concepts/resource-lifecycle.md +14 -10
  1594. package/docs/resource/formats/pickle.md +126 -100
  1595. package/docs/resource/formats/provenance.md +15 -9
  1596. package/docs/resource/formats/webgl/carbon-constant-layouts.md +98 -232
  1597. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +278 -530
  1598. package/docs/resource/reference/classes/README.md +3 -1
  1599. package/docs/resource/reference/classes/dropped.md +21 -1
  1600. package/docs/resource/reference/classes/formats.md +33 -0
  1601. package/docs/resource/reference/classes/video.md +92 -0
  1602. package/docs/resource/reference/events.md +10 -9
  1603. package/docs/resource/reference/queues.md +8 -1
  1604. package/docs/trinity/README.md +5 -5
  1605. package/docs/trinity/architecture.md +355 -344
  1606. package/docs/trinity/concepts/eve-runtime-behavior.md +1 -1
  1607. package/docs/trinity/reference/api.md +19 -7
  1608. package/docs/trinity/reference/classes/dropped.md +2 -11
  1609. package/docs/trinity/reference/classes/eve-runtime.md +1 -1
  1610. package/docs/trinity/reference/classes/trinity-core.md +1672 -1622
  1611. package/docs/trinity/reference/implementation-status.md +92 -92
  1612. package/package.json +2 -1
  1613. package/dist/core/CjsFrameDriver.js +0 -109
  1614. package/dist/core/CjsFrameDriver.js.map +0 -1
  1615. package/dist/global/contracts/CjsFrameLifecycle.js +0 -49
  1616. package/dist/global/contracts/CjsFrameLifecycle.js.map +0 -1
  1617. package/dist/global/contracts/CjsInstancedMeshManager.js +0 -58
  1618. package/dist/global/contracts/CjsInstancedMeshManager.js.map +0 -1
  1619. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js +0 -4
  1620. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["import { ResourceRequirement } from \"../ResourceRequirement.js\";\n// Source: trinity/trinity/Resources/TriGeometryRes.h\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\nimport { box3 } from \"#math/box3\";\nimport { triangleNormalTo } from \"#math/mesh\";\nimport { ray3 } from \"#math/ray3\";\nimport { sph3 } from \"#math/sph3\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { Tr2RaycastGeometryRes } from \"./Tr2RaycastGeometryRes.js\";\nimport {\n assertResourcePayloadArray,\n assertResourcePayloadObject,\n resourceBoundaryError,\n resourcePayloadError\n} from \"../resourceBoundary.js\";\n\n// Scratch edges for the picking cross product. Picking is synchronous and the\n// result is consumed before the next hit, so one pair is enough.\n//\n// PLAIN arrays, not `vec3.create()`, because the destination is one: the hit\n// record's `unnormalizedNormal` is `[ 0, 0, 0 ]`, so the products stay in double\n// precision the whole way. Rounding the two edges to a math array's element type\n// first perturbs the result on all but 2.5% of triangles, and by as much as 1.8%\n// relatively where the cross product cancels - which is exactly the thin sliver\n// a picking ray is most likely to graze.\nconst edgeAB = [ 0, 0, 0 ];\nconst edgeAC = [ 0, 0, 0 ];\n\n/**\n * Resource record that owns geometry payload facts (meshes, optional\n * skeletons and animations) and LOD-force metadata, while engine packages\n * decide device buffers, vertex declarations, and draw-time state.\n *\n * Geometry inspection composes the generic math supplied by the runtime global layer\n * with resource-specific payload traversal.\n */\nexport class TriGeometryRes extends CjsResource\n{\n forceLod = false;\n forcedLodIndex = -1;\n name = \"\";\n\n #raycastGeometry = null;\n\n #raycastUsers = 0;\n\n #raycastPreparationFailed = false;\n\n /** Creates a TriGeometryRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain geometry payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {TriGeometryRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (this.#raycastUsers !== 0)\n {\n throw new Error(\"TriGeometryRes payload cannot change during an active raycast session.\");\n }\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n if (payload === null)\n {\n super.SetPayload(null);\n return this;\n }\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\n for (const field of [ \"skeletons\", \"animations\" ])\n {\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\n {\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\n }\n }\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Get mesh count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetMeshCount()\n {\n return this.GetPayload()?.meshes?.length || 0;\n }\n\n /**\n * Get animation count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetAnimationCount()\n {\n return this.GetPayload()?.animations?.length || 0;\n }\n\n /**\n * Get skeleton count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetSkeletonCount()\n {\n return this.GetPayload()?.skeletons?.length || 0;\n }\n\n /**\n * Get one resource-owned skeleton from the CPU geometry payload.\n *\n * @param {number} skeletonIndex\n * @returns {*}\n */\n GetSkeletonData(skeletonIndex = 0)\n {\n const index = Number(skeletonIndex);\n\n if (!Number.isInteger(index) || index < 0)\n {\n return null;\n }\n\n return this.GetPayload()?.skeletons?.[index] || null;\n }\n\n /**\n * Get mesh area count from a CPU geometry payload mesh.\n *\n * @param {number} meshIndex\n * @returns {number}\n */\n GetMeshAreaCount(meshIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n return mesh?.areas?.length || 0;\n }\n\n /** Returns one decoded CPU mesh record, or null when the index is absent. */\n GetMeshData(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex] ?? null;\n }\n\n /** Returns the decoded CMF-shaped payload used by Carbon mesh consumers. */\n GetCMFData()\n {\n return this.GetPayload();\n }\n\n /** Whether the resident payload has Carbon's CMF mesh collection shape. */\n IsUsingCMF()\n {\n return Array.isArray(this.GetPayload()?.meshes);\n }\n\n // Carbon TriGeometryRes.cpp:294-319. Walks LODs from the LOWEST quality up\n // and takes the first whose authored maxScreenSize still covers the requested\n // size; a request larger than the best LOD falls back to LOD 0, which Carbon\n // comments explicitly. forceLod pins the index instead, clamped to the last\n // LOD.\n\n /**\n * The LOD index this mesh should be drawn at for a screen size, or -1 when the\n * mesh does not exist.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {number}\n */\n GetLodIndexForScreenSize(meshIndex = 0, screenSize = Infinity)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh) return -1;\n\n // A decoder may flatten a single-LOD mesh, putting the areas on the mesh\n // itself; that mesh IS its own only LOD (see getMeshAreas).\n const lods = mesh.lods?.length ? mesh.lods : null;\n const lastLod = lods ? lods.length - 1 : 0;\n\n if (this.forceLod && this.forcedLodIndex >= 0)\n {\n return Math.min(this.forcedLodIndex, lastLod);\n }\n\n for (let index = lastLod; index >= 0; index--)\n {\n const maxScreenSize = (lods ? lods[index]?.maxScreenSize : mesh.maxScreenSize) ?? 0;\n if (maxScreenSize >= screenSize) return index;\n }\n\n return 0;\n }\n\n // Carbon TriGeometryRes.cpp:268-279. Carbon overloads this on float\n // screenSize versus int lodIndex; JavaScript cannot, so the index form is\n // GetMeshLodByIndex. Carbon indexes m_lods with the result unguarded, so a\n // mesh with an EMPTY lod list reads out of bounds there; this port returns\n // null (docs/research/carbon-known-defects.md).\n\n /**\n * The LOD data this mesh should be drawn at for a screen size, or null when\n * the mesh has no LODs.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {object|null}\n */\n GetMeshLod(meshIndex = 0, screenSize = Infinity)\n {\n return this.GetMeshLodByIndex(meshIndex, this.GetLodIndexForScreenSize(meshIndex, screenSize));\n }\n\n /**\n * The LOD data at an explicit index, or null when the mesh or index does not\n * exist (Carbon TriGeometryRes.cpp:281-292).\n *\n * @param {number} meshIndex\n * @param {number} lodIndex\n * @returns {object|null}\n */\n GetMeshLodByIndex(meshIndex = 0, lodIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh || lodIndex < 0) return null;\n\n if (mesh.lods?.length)\n {\n return lodIndex < mesh.lods.length ? mesh.lods[lodIndex] : null;\n }\n\n return lodIndex === 0 && mesh.areas ? mesh : null;\n }\n\n /**\n * Get mesh name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @returns {string}\n */\n GetMeshName(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\n }\n\n /**\n * Get mesh area name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @returns {string}\n */\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\n }\n\n /**\n * Get area bounding box from geometry payload data.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\n {\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\n const bounds = TriGeometryRes.getBounds(area);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding box from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\n {\n const payload = this.GetPayload();\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getBounds(payload);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding sphere from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} out\n * @returns {*|boolean}\n */\n GetBoundingSphere(meshIndex = 0, out = null)\n {\n const payload = this.GetPayload();\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getSphere(payload);\n if (!out) return sphere;\n if (!sphere) return false;\n vec4.copy(out, sphere);\n return true;\n }\n\n /**\n * Calculate a transformed bounding box from canonical CPU vertex data.\n *\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\n * therefore uses the ordinary column-vector index layout.\n *\n * @param {number} meshIndex\n * @param {ArrayLike<number>} transform\n * @returns {{min: number[], max: number[]}|null}\n */\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\n {\n if (!transform || transform.length < 16)\n {\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\n }\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n if (!mesh) return null;\n const positions = TriGeometryRes.getMeshPositions(mesh);\n const sourceBounds = TriGeometryRes.getBounds(mesh);\n if (!positions && !sourceBounds) return null;\n\n const\n bounds = box3.alloc(),\n point = vec3.alloc();\n try\n {\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\n {\n if (!sourceBounds) return null;\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\n }\n box3.transformMat4(bounds, bounds, transform);\n return {\n min: [ bounds[0], bounds[1], bounds[2] ],\n max: [ bounds[3], bounds[4], bounds[5] ]\n };\n }\n finally\n {\n vec3.unalloc(point);\n box3.unalloc(bounds);\n }\n }\n\n /**\n * Recalculate bounding sphere data from canonical CPU vertex positions.\n *\n * @returns {boolean}\n */\n RecalculateBoundingSphere()\n {\n let updated = false;\n const\n sphere = sph3.alloc(),\n point = vec3.alloc();\n try\n {\n for (const mesh of this.GetPayload()?.meshes || [])\n {\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\n TriGeometryRes.setMeshSphere(mesh, sphere);\n updated = true;\n }\n return updated;\n }\n finally\n {\n vec3.unalloc(point);\n sph3.unalloc(sphere);\n }\n }\n\n /**\n * Reloading belongs to the resource manager because it owns source and\n * canonical replacement policy.\n *\n * @throws {Error}\n */\n Reload() {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"Reload\",\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\n );\n }\n\n /**\n * Intersect a ray with canonical CPU triangle data.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @returns {object}\n */\n GetIntersectionPointNormalBone(position, direction)\n {\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n -1\n );\n }\n\n /**\n * Intersect a ray with one area index across canonical CPU meshes.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\n {\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\n {\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\n }\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n areaIndex\n );\n }\n\n /** Opens one borrowed CPU-raycast session over the resident geometry. */\n PrepareRayCaster()\n {\n this.#raycastUsers++;\n if (this.#raycastGeometry || this.#raycastPreparationFailed) return;\n\n try\n {\n this.RequireIntersectionMeshes();\n this.#raycastGeometry = new Tr2RaycastGeometryRes().SetSource(this);\n }\n catch (_error)\n {\n this.#raycastPreparationFailed = true;\n }\n }\n\n /** Closes exactly one raycast session and drops the derived acceleration resource at zero. */\n ResetRayCaster()\n {\n if (this.#raycastUsers === 0)\n {\n throw new Error(\"TriGeometryRes.ResetRayCaster called without a matching PrepareRayCaster.\");\n }\n this.#raycastUsers--;\n if (this.#raycastUsers === 0)\n {\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n }\n }\n\n /** Reports whether the reference-counted CPU raycast resource is ready. */\n IsRayCasterReady()\n {\n return this.#raycastGeometry !== null;\n }\n\n /** Reports whether the current raycast preparation session failed. */\n HasRayCasterPreparationFailed()\n {\n return this.#raycastPreparationFailed;\n }\n\n /** Public Carbon query; requires a matching active raycast session. */\n GetIntersectionPoints(position, direction, result = {}, areaIndex = -1, rayLength = Infinity)\n {\n if (!this.#raycastGeometry)\n {\n throw new Error(\"TriGeometryRes.GetIntersectionPoints requires a prepared raycast session.\");\n }\n return this.#raycastGeometry.GetIntersectionPoints(\n position, direction, result, areaIndex, rayLength);\n }\n\n /** Internal implementation borrowed by Tr2RaycastGeometryRes. */\n _IntersectRaycastGeometry(position, direction, result, areaIndex, rayLength)\n {\n const hit = TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(), position, direction, areaIndex);\n if (!hit.hit) return false;\n\n const dx = hit.point[0] - position[0];\n const dy = hit.point[1] - position[1];\n const dz = hit.point[2] - position[2];\n const denominator = direction[0] * direction[0] +\n direction[1] * direction[1] + direction[2] * direction[2];\n const distance = denominator\n ? (dx * direction[0] + dy * direction[1] + dz * direction[2]) / denominator\n : Infinity;\n if (distance < 0 || distance > rayLength) return false;\n\n result.distance = distance;\n result.position = result.position ?? result.point ?? vec3.create();\n result.point = result.point ?? result.position;\n result.normal = result.normal ?? vec3.create();\n result.unnormalizedNormal = result.unnormalizedNormal ?? vec3.create();\n vec3.copy(result.position, hit.point);\n vec3.copy(result.point, hit.point);\n vec3.copy(result.normal, hit.normal);\n vec3.copy(result.unnormalizedNormal, hit.unnormalizedNormal);\n result.meshIndex = hit.meshIndex;\n result.areaIndex = hit.areaIndex;\n result.boneIndex = hit.boneIndex;\n return true;\n }\n\n /**\n * The CPU triangle data an intersection query needs, or a loud failure.\n *\n * A ray query used to read `GetPayload()?.meshes`, and `intersectGeometry`\n * loops over `meshes?.length || 0`. So an absent payload produced a clean\n * MISS: `hit: false`, no error, indistinguishable from the ray genuinely\n * passing the object by. Picking would appear to work and simply stop\n * hitting things, and the symptom reads as a maths bug rather than a\n * residency one.\n *\n * Carbon never has to answer this, because it holds the loaded file for the\n * resource's lifetime and its CPU data is always resident. Ours is\n * releasable, so the unavailable case is real and must be named.\n *\n * Throwing is the interim answer, not the final one: once accuracy tiers\n * exist a query degrades to bounds or sphere and reports which produced it.\n * What it must never do again is report absence as a miss. See\n * `/docs/contracts/cpu-geometry-residency.md`.\n *\n * @returns {Array<*>} Canonical CPU meshes.\n * @throws {Error} When the CPU geometry is not resident.\n */\n RequireIntersectionMeshes()\n {\n const meshes = this.GetPayload()?.meshes;\n if (!Array.isArray(meshes))\n {\n throw new Error(\n \"TriGeometryRes cannot answer an intersection query: CPU geometry is \"\n + \"not resident. The payload was never loaded or has been released. \"\n + \"Reload through CjsResMan before querying.\"\n );\n }\n return meshes;\n }\n\n /**\n * Get vertex element descriptors for a mesh.\n *\n * @param {number} meshIndex\n * @returns {Array<*>}\n */\n GetMeshVertexElements(meshIndex = 0)\n {\n // The CMF reader emits the element list as `decl`, matching the CMF struct\n // field; this accessor read only `vertexElements`, which no reader in this\n // package populates, so it returned an empty list for every real decoded\n // payload. Both names are accepted because the name is the producer's.\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n return mesh?.decl || mesh?.vertexElements || [];\n }\n\n /**\n * Saving belongs to the selected geometry format writer and destination.\n *\n * @throws {Error}\n */\n SaveMesh()\n {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"SaveMesh\",\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\n );\n }\n\n static payload = ResourceRequirement.GEOMETRY;\n\n // Carbon TriGeometryRes.cpp:158-178, declared beside the class\n // (TriGeometryRes.h:202) because it reads LOD data rather than resource\n // state - which is why it is static here. It returns a PLAIN SUM and does not\n // multiply by three: the *3 belongs to the caller, so triangles-only is a\n // property of the mesh draw path rather than of the geometry layer.\n\n /**\n * The summed primitive count over `count` areas of a LOD starting at `index`,\n * with the run clamped to the area list as Carbon clamps it; zero when the\n * index is out of range, which callers treat as \"emit no draw\".\n *\n * @param {object|null} lod\n * @param {number} index\n * @param {number} count\n * @returns {number}\n */\n static getPrimitiveCount(lod, index, count)\n {\n const areas = lod?.areas ?? null;\n const areaCount = areas?.length ?? 0;\n\n if (!areaCount || index >= areaCount) return 0;\n\n const run = index + count > areaCount ? areaCount - index : count;\n\n let primitiveCount = 0;\n\n for (let offset = 0; offset < run; offset++)\n {\n primitiveCount += TriGeometryRes.getAreaPrimitiveCount(areas[index + offset]);\n }\n\n return primitiveCount;\n }\n\n // A CMF LOD AREA IS NOT A CARBON AREA, AND THE DIFFERENCE IS A FACTOR OF THREE.\n //\n // Carbon converts at the read boundary (TriGeometryRes.cpp:905-906):\n //\n // area.m_firstIndex = cmfLodMeshArea.firstElement * 3;\n // area.m_primitiveCount = cmfLodMeshArea.elementCount;\n //\n // `firstElement` counts TRIANGLES and `m_firstIndex` counts INDICES, so the\n // start converts and the count does not. Reading `firstElement` as an index\n // would draw the right number of triangles from a third of the way into the\n // area - plausible geometry, wrong geometry, and no error anywhere.\n //\n // Both names are accepted for the same reason `decl`/`vertexElements` are\n // accepted above: the name is the producer's. A payload built by a reader\n // that already speaks Carbon's vocabulary is passed through unconverted.\n\n /**\n * One area's primitive count, under whichever name the producer used.\n *\n * @param {object|null} area\n * @returns {number} Triangle count; zero when the area is absent or unnamed.\n */\n static getAreaPrimitiveCount(area)\n {\n return area?.primitiveCount ?? area?.elementCount ?? 0;\n }\n\n /**\n * One area's first INDEX, converting a CMF first-triangle when that is what\n * the producer wrote.\n *\n * @param {object|null} area\n * @returns {number} Index offset into the LOD's index buffer.\n */\n static getAreaFirstIndex(area)\n {\n if (area?.firstIndex !== undefined) return area.firstIndex;\n if (area?.firstElement !== undefined) return area.firstElement * 3;\n\n return 0;\n }\n\n /**\n * A LOD's total primitive count.\n *\n * Carbon takes this from the index stream rather than from the areas\n * (`GetStreamElementCount( cmfLod.ib ) / 3`, TriGeometryRes.cpp:890), because\n * an area list need not cover every triangle. Falling back to the area sum\n * keeps a payload that carries areas but no index-stream extent usable, and\n * only the reversed draw path reads this at all.\n *\n * @param {object|null} lod\n * @returns {number}\n */\n static getLodPrimitiveCount(lod)\n {\n if (lod?.primitiveCount !== undefined) return lod.primitiveCount;\n\n const stride = lod?.ib?.stride ?? 0;\n const size = lod?.ib?.size ?? 0;\n\n if (stride > 0 && size > 0) return Math.floor(size / stride / 3);\n\n return TriGeometryRes.getPrimitiveCount(lod, 0, lod?.areas?.length ?? 0);\n }\n\n /**\n * Gets the canonical area list from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {Array<*>|null}\n */\n static getMeshAreas(mesh)\n {\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\n }\n\n /**\n * Gets canonical bounds from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\n */\n static getBounds(value)\n {\n if (!value || typeof value !== \"object\") return null;\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\n if (value.minBounds && value.maxBounds)\n {\n return { min: value.minBounds, max: value.maxBounds };\n }\n return null;\n }\n\n /**\n * Gets the canonical bounding sphere from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {ArrayLike<number>|null}\n */\n static getSphere(value)\n {\n if (!value || typeof value !== \"object\") return null;\n return value.sphere || value.boundingSphere || null;\n }\n\n /**\n * Copies bounds into caller-owned outputs, or returns the source object.\n *\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n static copyBounds(bounds, outMin, outMax)\n {\n if (!outMin && !outMax) return bounds;\n if (!bounds || !outMin || !outMax) return false;\n vec3.copy(outMin, bounds.min);\n vec3.copy(outMax, bounds.max);\n return true;\n }\n\n /**\n * Gets canonical positions from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\n */\n static getMeshPositions(mesh)\n {\n return mesh?.vertex?.position\n || mesh?.positions\n || mesh?.lods?.[0]?.vertex?.position\n || mesh?.lods?.[0]?.positions\n || null;\n }\n\n /**\n * Gets the number of vertices represented by flat or nested positions.\n *\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @returns {number}\n */\n static getPositionCount(positions)\n {\n if (!positions) return 0;\n return typeof positions[0] === \"number\"\n ? Math.floor(positions.length / 3)\n : positions.length;\n }\n\n /**\n * Calculates bounds from canonical positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setBoundsFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let found = false;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n if (!found)\n {\n out[0] = out[3] = point[0];\n out[1] = out[4] = point[1];\n out[2] = out[5] = point[2];\n found = true;\n continue;\n }\n out[0] = Math.min(out[0], point[0]);\n out[1] = Math.min(out[1], point[1]);\n out[2] = Math.min(out[2], point[2]);\n out[3] = Math.max(out[3], point[0]);\n out[4] = Math.max(out[4], point[1]);\n out[5] = Math.max(out[5], point[2]);\n }\n return found;\n }\n\n /**\n * Calculates a bounding sphere from positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setSphereFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let\n found = false,\n minX = Infinity,\n minY = Infinity,\n minZ = Infinity,\n maxX = -Infinity,\n maxY = -Infinity,\n maxZ = -Infinity;\n\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n minX = Math.min(minX, point[0]);\n minY = Math.min(minY, point[1]);\n minZ = Math.min(minZ, point[2]);\n maxX = Math.max(maxX, point[0]);\n maxY = Math.max(maxY, point[1]);\n maxZ = Math.max(maxZ, point[2]);\n found = true;\n }\n if (!found) return false;\n\n out[0] = (minX + maxX) * 0.5;\n out[1] = (minY + maxY) * 0.5;\n out[2] = (minZ + maxZ) * 0.5;\n let maxSquaredRadius = 0;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n const\n x = out[0] - point[0],\n y = out[1] - point[1],\n z = out[2] - point[2];\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\n }\n out[3] = Math.sqrt(maxSquaredRadius);\n return true;\n }\n\n /**\n * Calculates a mesh sphere from positions or existing bounds.\n *\n * @param {ArrayLike<number>} out\n * @param {object} mesh\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static calculateMeshSphere(out, mesh, point)\n {\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\n const bounds = this.getBounds(mesh);\n if (!bounds) return false;\n sph3.fromBounds(out, bounds.min, bounds.max);\n return true;\n }\n\n /**\n * Stores a calculated sphere in the mesh's canonical sphere fields.\n *\n * @param {object} mesh\n * @param {ArrayLike<number>} sphere\n * @returns {void}\n */\n static setMeshSphere(mesh, sphere)\n {\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\n else mesh.sphere = [ ...sphere ];\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\n {\n mesh.boundingSphere.set(sphere);\n }\n else if (\"boundingSphere\" in mesh)\n {\n mesh.boundingSphere = [ ...sphere ];\n }\n }\n\n /**\n * Intersects a ray with canonical CPU geometry.\n *\n * @param {Array<object>|null} meshes\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n static intersectGeometry(meshes, position, direction, areaIndex)\n {\n this.validateRayVector(position, \"position\");\n this.validateRayVector(direction, \"direction\");\n const\n ray = ray3.from(ray3.alloc(), position, direction),\n point = vec3.alloc(),\n vertexA = vec3.alloc(),\n vertexB = vec3.alloc(),\n vertexC = vec3.alloc(),\n normal = vec3.alloc();\n let nearest = null;\n try\n {\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\n {\n const mesh = meshes[meshIndex];\n const positions = this.getMeshPositions(mesh);\n if (!positions) continue;\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\n if (ArrayBuffer.isView(groups)\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\n {\n if (areaIndex !== -1 && areaIndex !== 0) continue;\n nearest = this.intersectFaces(\n nearest,\n groups,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n continue;\n }\n if (Array.isArray(groups))\n {\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\n {\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\n nearest = this.intersectFaces(\n nearest,\n faces,\n groupIndex,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n continue;\n }\n if (areaIndex === -1 || areaIndex === 0)\n {\n nearest = this.intersectFaces(\n nearest,\n null,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n }\n if (nearest) return nearest;\n const hitPosition = [ 0, 0, 0 ];\n return {\n hit: false,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance: Infinity,\n meshIndex: -1,\n areaIndex\n };\n }\n finally\n {\n vec3.unalloc(normal);\n vec3.unalloc(vertexC);\n vec3.unalloc(vertexB);\n vec3.unalloc(vertexA);\n vec3.unalloc(point);\n ray3.unalloc(ray);\n }\n }\n\n /**\n * Validates a caller-provided ray vector.\n *\n * @param {ArrayLike<number>} value\n * @param {string} name\n * @returns {void}\n */\n static validateRayVector(value, name)\n {\n if (!value\n || value.length < 3\n || !Number.isFinite(value[0])\n || !Number.isFinite(value[1])\n || !Number.isFinite(value[2]))\n {\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\n }\n }\n\n /**\n * Intersects a ray with one flat face list.\n *\n * @param {object|null} nearest\n * @param {ArrayLike<number>|null} faces\n * @param {number} areaIndex\n * @param {object} mesh\n * @param {number} meshIndex\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {ArrayLike<number>} rayOrigin\n * @param {ArrayLike<number>} ray\n * @param {ArrayLike<number>} point\n * @param {ArrayLike<number>} vertexA\n * @param {ArrayLike<number>} vertexB\n * @param {ArrayLike<number>} vertexC\n * @param {ArrayLike<number>} normal\n * @returns {object|null}\n */\n static intersectFaces(\n nearest,\n faces,\n areaIndex,\n mesh,\n meshIndex,\n positions,\n rayOrigin,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n )\n {\n const count = faces?.length ?? this.getPositionCount(positions);\n for (let index = 0; index + 2 < count; index += 3)\n {\n const\n vertexIndexA = faces ? faces[index] : index,\n vertexIndexB = faces ? faces[index + 1] : index + 1,\n vertexIndexC = faces ? faces[index + 2] : index + 2;\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\n || !this.copyPosition(vertexB, positions, vertexIndexB)\n || !this.copyPosition(vertexC, positions, vertexIndexC)\n || !ray3.getIntersectVertices(\n point,\n ray,\n vertexA,\n vertexB,\n vertexC,\n false\n ))\n {\n continue;\n }\n const distance = vec3.distance(rayOrigin, point);\n if (nearest && nearest.distance <= distance) continue;\n if (!nearest)\n {\n const hitPosition = [ 0, 0, 0 ];\n nearest = {\n hit: true,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance,\n meshIndex,\n areaIndex\n };\n }\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\n vec3.copy(nearest.position, point);\n // (B - A) x (C - A). This was written out in full one line above a\n // `triangleNormalTo` call that computes the NORMALISED version of the same\n // vector, so the winding convention lived in two places at once.\n vec3.subtract(edgeAB, vertexB, vertexA);\n vec3.subtract(edgeAC, vertexC, vertexA);\n vec3.cross(nearest.unnormalizedNormal, edgeAB, edgeAC);\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\n vec3.copy(nearest.normal, normal);\n nearest.distance = distance;\n nearest.meshIndex = meshIndex;\n nearest.areaIndex = areaIndex;\n }\n return nearest;\n }\n\n /**\n * Copies one flat or nested position into caller-owned output.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {number} index\n * @returns {boolean}\n */\n static copyPosition(out, positions, index)\n {\n if (!Number.isInteger(index) || index < 0) return false;\n if (typeof positions[0] === \"number\")\n {\n const offset = index * 3;\n if (offset + 2 >= positions.length) return false;\n out[0] = positions[offset];\n out[1] = positions[offset + 1];\n out[2] = positions[offset + 2];\n return true;\n }\n const point = positions[index];\n if (!point || point.length < 3) return false;\n out[0] = point[0];\n out[1] = point[1];\n out[2] = point[2];\n return true;\n }\n\n /**\n * Gets the first blend index for a mesh vertex.\n *\n * @param {object} mesh\n * @param {number} vertexIndex\n * @returns {number}\n */\n static getMeshBoneIndex(mesh, vertexIndex)\n {\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\n if (!indices) return -1;\n if (typeof indices[0] === \"number\")\n {\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\n }\n return Number(indices[vertexIndex]?.[0] ?? -1);\n }\n\n}\n\n// Declared as data rather than with decorators, so the resource tree loads from\n// source without a transform. Field order is key order, and GetValues() exports\n// in that order.\nCjsSchema.define(TriGeometryRes, {\n className: \"TriGeometryRes\",\n family: \"resources\",\n fields: {\n forceLod: [ type.boolean, io.readwrite ],\n forcedLodIndex: [ type.int32, io.readwrite ],\n name: [ type.string, io.readwrite ]\n },\n methods: {\n GetMeshCount: [ carbon.method, impl.adapted ],\n GetAnimationCount: [ carbon.method, impl.adapted ],\n GetSkeletonCount: [ carbon.method, impl.adapted ],\n GetSkeletonData: [ carbon.method, impl.adapted ],\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\n GetLodIndexForScreenSize: [ carbon.method, impl.adapted ],\n GetMeshLod: [ carbon.method, impl.adapted ],\n GetMeshLodByIndex: [ carbon.method, impl.adapted ],\n GetMeshName: [ carbon.method, impl.adapted ],\n GetMeshAreaName: [ carbon.method, impl.adapted ],\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingSphere: [ carbon.method, impl.adapted ],\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\n Reload: [ carbon.method, impl.notSupported ],\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n PrepareRayCaster: [ carbon.method, impl.adapted ],\n ResetRayCaster: [ carbon.method, impl.adapted ],\n IsRayCasterReady: [ carbon.method, impl.adapted ],\n HasRayCasterPreparationFailed: [ carbon.method, impl.adapted ],\n GetIntersectionPoints: [ carbon.method, impl.adapted ],\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\n SaveMesh: [ carbon.method, impl.notSupported ]\n }\n});\n"],"names":["edgeAB","edgeAC","TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","Error","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetMeshData","GetCMFData","IsUsingCMF","GetLodIndexForScreenSize","screenSize","Infinity","lods","lastLod","Math","min","maxScreenSize","GetMeshLod","GetMeshLodByIndex","lodIndex","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","RequireIntersectionMeshes","GetAreaIntersectionPointNormalBone","RangeError","PrepareRayCaster","Tr2RaycastGeometryRes","SetSource","_error","ResetRayCaster","IsRayCasterReady","HasRayCasterPreparationFailed","GetIntersectionPoints","result","rayLength","_IntersectRaycastGeometry","hit","dx","dy","dz","denominator","distance","create","normal","unnormalizedNormal","boneIndex","GetMeshVertexElements","decl","vertexElements","SaveMesh","ResourceRequirement","GEOMETRY","getPrimitiveCount","lod","count","areaCount","run","primitiveCount","offset","getAreaPrimitiveCount","elementCount","getAreaFirstIndex","firstIndex","firstElement","getLodPrimitiveCount","stride","ib","size","floor","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","found","copyPosition","setSphereFromPositions","minX","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hitPosition","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","subtract","cross","triangleNormalTo","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","io","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported"],"mappings":"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"}
1
+ {"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["import { ResourceRequirement } from \"../ResourceRequirement.js\";\n// Source: trinity/trinity/Resources/TriGeometryRes.h\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\nimport { box3 } from \"#math/box3\";\nimport { triangleNormalTo } from \"#math/mesh\";\nimport { ray3 } from \"#math/ray3\";\nimport { sph3 } from \"#math/sph3\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { TriStorageFlags } from \"#consts/graphics\";\nimport { Tr2RaycastGeometryRes } from \"./Tr2RaycastGeometryRes.js\";\nimport {\n assertResourcePayloadArray,\n assertResourcePayloadObject,\n resourceBoundaryError,\n resourcePayloadError\n} from \"../resourceBoundary.js\";\n\n// Scratch edges for the picking cross product. Picking is synchronous and the\n// result is consumed before the next hit, so one pair is enough.\n//\n// PLAIN arrays, not `vec3.create()`, because the destination is one: the hit\n// record's `unnormalizedNormal` is `[ 0, 0, 0 ]`, so the products stay in double\n// precision the whole way. Rounding the two edges to a math array's element type\n// first perturbs the result on all but 2.5% of triangles, and by as much as 1.8%\n// relatively where the cross product cancels - which is exactly the thin sliver\n// a picking ray is most likely to graze.\nconst edgeAB = [ 0, 0, 0 ];\nconst edgeAC = [ 0, 0, 0 ];\n\n/**\n * Resource record that owns geometry payload facts (meshes, optional\n * skeletons and animations) and LOD-force metadata. Device buffers and vertex\n * declarations are allocated through the abstraction layer.\n *\n * Geometry inspection composes the generic math supplied by the runtime global layer\n * with resource-specific payload traversal.\n */\nexport class TriGeometryRes extends CjsResource\n{\n forceLod = false;\n forcedLodIndex = -1;\n name = \"\";\n\n #raycastGeometry = null;\n\n #raycastUsers = 0;\n\n #raycastPreparationFailed = false;\n\n /** Creates a TriGeometryRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain geometry payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {TriGeometryRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (this.#raycastUsers !== 0)\n {\n throw new Error(\"TriGeometryRes payload cannot change during an active raycast session.\");\n }\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n if (payload === null)\n {\n super.SetPayload(null);\n return this;\n }\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\n for (const field of [ \"skeletons\", \"animations\" ])\n {\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\n {\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\n }\n }\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Release the geometry payload, and with it anything derived from it.\n *\n * Carbon has no payload-only release: cpp:496-509 drops the meshes and the\n * raycast geometry together. A manager-driven release here must do the same,\n * or the raycaster keeps answering from meshes that are gone.\n *\n * @returns {TriGeometryRes} This resource.\n */\n ReleasePayload()\n {\n this.DestroyRayCaster();\n return super.ReleasePayload();\n }\n\n /**\n * Get mesh count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetMeshCount()\n {\n return this.GetPayload()?.meshes?.length || 0;\n }\n\n /**\n * Get animation count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetAnimationCount()\n {\n return this.GetPayload()?.animations?.length || 0;\n }\n\n /**\n * Get skeleton count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetSkeletonCount()\n {\n return this.GetPayload()?.skeletons?.length || 0;\n }\n\n /**\n * Get one resource-owned skeleton from the CPU geometry payload.\n *\n * @param {number} skeletonIndex\n * @returns {*}\n */\n GetSkeletonData(skeletonIndex = 0)\n {\n const index = Number(skeletonIndex);\n\n if (!Number.isInteger(index) || index < 0)\n {\n return null;\n }\n\n return this.GetPayload()?.skeletons?.[index] || null;\n }\n\n /**\n * Get mesh area count from a CPU geometry payload mesh.\n *\n * @param {number} meshIndex\n * @returns {number}\n */\n GetMeshAreaCount(meshIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n return mesh?.areas?.length || 0;\n }\n\n /** Returns one decoded CPU mesh record, or null when the index is absent. */\n GetMeshData(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex] ?? null;\n }\n\n /** Returns the decoded CMF-shaped payload used by Carbon mesh consumers. */\n GetCMFData()\n {\n return this.GetPayload();\n }\n\n /** Whether the resident payload has Carbon's CMF mesh collection shape. */\n IsUsingCMF()\n {\n return Array.isArray(this.GetPayload()?.meshes);\n }\n\n // Carbon TriGeometryRes.cpp:294-319. Walks LODs from the LOWEST quality up\n // and takes the first whose authored maxScreenSize still covers the requested\n // size; a request larger than the best LOD falls back to LOD 0, which Carbon\n // comments explicitly. forceLod pins the index instead, clamped to the last\n // LOD.\n\n /**\n * The LOD index this mesh should be drawn at for a screen size, or -1 when the\n * mesh does not exist.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {number}\n */\n GetLodIndexForScreenSize(meshIndex = 0, screenSize = Infinity)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh) return -1;\n\n // A decoder may flatten a single-LOD mesh, putting the areas on the mesh\n // itself; that mesh IS its own only LOD (see getMeshAreas).\n const lods = mesh.lods?.length ? mesh.lods : null;\n const lastLod = lods ? lods.length - 1 : 0;\n\n if (this.forceLod && this.forcedLodIndex >= 0)\n {\n return Math.min(this.forcedLodIndex, lastLod);\n }\n\n for (let index = lastLod; index >= 0; index--)\n {\n const maxScreenSize = (lods ? lods[index]?.maxScreenSize : mesh.maxScreenSize) ?? 0;\n if (maxScreenSize >= screenSize) return index;\n }\n\n return 0;\n }\n\n // Carbon TriGeometryRes.cpp:268-279. Carbon overloads this on float\n // screenSize versus int lodIndex; JavaScript cannot, so the index form is\n // GetMeshLodByIndex. Carbon indexes m_lods with the result unguarded, so a\n // mesh with an EMPTY lod list reads out of bounds there; this port returns\n // null (docs/research/carbon-known-defects.md).\n\n /**\n * The LOD data this mesh should be drawn at for a screen size, or null when\n * the mesh has no LODs.\n *\n * @param {number} meshIndex\n * @param {number} screenSize\n * @returns {object|null}\n */\n GetMeshLod(meshIndex = 0, screenSize = Infinity)\n {\n return this.GetMeshLodByIndex(meshIndex, this.GetLodIndexForScreenSize(meshIndex, screenSize));\n }\n\n /**\n * The LOD data at an explicit index, or null when the mesh or index does not\n * exist (Carbon TriGeometryRes.cpp:281-292).\n *\n * @param {number} meshIndex\n * @param {number} lodIndex\n * @returns {object|null}\n */\n GetMeshLodByIndex(meshIndex = 0, lodIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n if (!mesh || lodIndex < 0) return null;\n\n if (mesh.lods?.length)\n {\n return lodIndex < mesh.lods.length ? mesh.lods[lodIndex] : null;\n }\n\n return lodIndex === 0 && mesh.areas ? mesh : null;\n }\n\n /**\n * Get mesh name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @returns {string}\n */\n GetMeshName(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\n }\n\n /**\n * Get mesh area name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @returns {string}\n */\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\n }\n\n /**\n * Get area bounding box from geometry payload data.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\n {\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\n const bounds = TriGeometryRes.getBounds(area);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding box from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\n {\n const payload = this.GetPayload();\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getBounds(payload);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding sphere from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} out\n * @returns {*|boolean}\n */\n GetBoundingSphere(meshIndex = 0, out = null)\n {\n const payload = this.GetPayload();\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getSphere(payload);\n if (!out) return sphere;\n if (!sphere) return false;\n vec4.copy(out, sphere);\n return true;\n }\n\n /**\n * Calculate a transformed bounding box from canonical CPU vertex data.\n *\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\n * therefore uses the ordinary column-vector index layout.\n *\n * @param {number} meshIndex\n * @param {ArrayLike<number>} transform\n * @returns {{min: number[], max: number[]}|null}\n */\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\n {\n if (!transform || transform.length < 16)\n {\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\n }\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n if (!mesh) return null;\n const positions = TriGeometryRes.getMeshPositions(mesh);\n const sourceBounds = TriGeometryRes.getBounds(mesh);\n if (!positions && !sourceBounds) return null;\n\n const\n bounds = box3.alloc(),\n point = vec3.alloc();\n try\n {\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\n {\n if (!sourceBounds) return null;\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\n }\n box3.transformMat4(bounds, bounds, transform);\n return {\n min: [ bounds[0], bounds[1], bounds[2] ],\n max: [ bounds[3], bounds[4], bounds[5] ]\n };\n }\n finally\n {\n vec3.unalloc(point);\n box3.unalloc(bounds);\n }\n }\n\n /**\n * Recalculate bounding sphere data from canonical CPU vertex positions.\n *\n * @returns {boolean}\n */\n RecalculateBoundingSphere()\n {\n let updated = false;\n const\n sphere = sph3.alloc(),\n point = vec3.alloc();\n try\n {\n for (const mesh of this.GetPayload()?.meshes || [])\n {\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\n TriGeometryRes.setMeshSphere(mesh, sphere);\n updated = true;\n }\n return updated;\n }\n finally\n {\n vec3.unalloc(point);\n sph3.unalloc(sphere);\n }\n }\n\n /**\n * Reloading belongs to the resource manager because it owns source and\n * canonical replacement policy.\n *\n * @throws {Error}\n */\n Reload() {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"Reload\",\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\n );\n }\n\n /**\n * Intersect a ray with canonical CPU triangle data.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @returns {object}\n */\n GetIntersectionPointNormalBone(position, direction)\n {\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n -1\n );\n }\n\n /**\n * Intersect a ray with one area index across canonical CPU meshes.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\n {\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\n {\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\n }\n return TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(),\n position,\n direction,\n areaIndex\n );\n }\n\n /** Opens one borrowed CPU-raycast session over the resident geometry. */\n PrepareRayCaster()\n {\n this.#raycastUsers++;\n if (this.#raycastGeometry || this.#raycastPreparationFailed) return;\n\n try\n {\n this.RequireIntersectionMeshes();\n this.#raycastGeometry = new Tr2RaycastGeometryRes().SetSource(this);\n }\n catch (_error)\n {\n this.#raycastPreparationFailed = true;\n }\n }\n\n /** Closes exactly one raycast session and drops the derived acceleration resource at zero. */\n ResetRayCaster()\n {\n if (this.#raycastUsers === 0)\n {\n throw new Error(\"TriGeometryRes.ResetRayCaster called without a matching PrepareRayCaster.\");\n }\n this.#raycastUsers--;\n if (this.#raycastUsers === 0)\n {\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n }\n }\n\n /** Reports whether the reference-counted CPU raycast resource is ready. */\n IsRayCasterReady()\n {\n return this.#raycastGeometry !== null;\n }\n\n /** Reports whether the current raycast preparation session failed. */\n HasRayCasterPreparationFailed()\n {\n // cpp:1597-1603. A release destroys the derived geometry without touching\n // the session count, so an open session with nothing under it IS the\n // failure - Carbon's own comment there reads \"ReleaseResources destroyed\n // our bvh :(\".\n if (this.#raycastUsers > 0 && !this.#raycastGeometry) return true;\n return this.#raycastPreparationFailed;\n }\n\n /**\n * Drop the derived raycast geometry, whether or not sessions are open.\n *\n * cpp:1560-1567. Carbon ignores the session count here; an open session\n * discovers the loss through HasRayCasterPreparationFailed.\n *\n * @returns {TriGeometryRes} This resource.\n */\n DestroyRayCaster()\n {\n this.#raycastGeometry = null;\n this.#raycastPreparationFailed = false;\n return this;\n }\n\n /**\n * Release this resource's CPU geometry for the requested storage classes.\n *\n * cpp:496-509. Carbon also calls CancelPendingLoad, which belongs to the\n * manager here, and SetGood(false)/SetPrepared(false), which this port\n * expresses as the single UNLOADED state.\n *\n * @param {number} [storage=TriStorageFlags.TRISTORAGE_ALL] Carbon's TriStorage mask.\n * @returns {TriGeometryRes} This resource.\n */\n ReleaseResources(storage = TriStorageFlags.TRISTORAGE_ALL)\n {\n if (!(storage & TriStorageFlags.TRISTORAGE_MANAGEDMEMORY)) return this;\n this.DestroyRayCaster();\n this.ReleasePayload();\n this.SetState(CjsResource.State.UNLOADED);\n return this;\n }\n\n /** Public Carbon query; requires a matching active raycast session. */\n GetIntersectionPoints(position, direction, result = {}, areaIndex = -1, rayLength = Infinity)\n {\n if (!this.#raycastGeometry)\n {\n throw new Error(\"TriGeometryRes.GetIntersectionPoints requires a prepared raycast session.\");\n }\n return this.#raycastGeometry.GetIntersectionPoints(\n position, direction, result, areaIndex, rayLength);\n }\n\n /** Internal implementation borrowed by Tr2RaycastGeometryRes. */\n _IntersectRaycastGeometry(position, direction, result, areaIndex, rayLength)\n {\n const hit = TriGeometryRes.intersectGeometry(\n this.RequireIntersectionMeshes(), position, direction, areaIndex);\n if (!hit.hit) return false;\n\n const dx = hit.point[0] - position[0];\n const dy = hit.point[1] - position[1];\n const dz = hit.point[2] - position[2];\n const denominator = direction[0] * direction[0] +\n direction[1] * direction[1] + direction[2] * direction[2];\n const distance = denominator\n ? (dx * direction[0] + dy * direction[1] + dz * direction[2]) / denominator\n : Infinity;\n if (distance < 0 || distance > rayLength) return false;\n\n result.distance = distance;\n result.position = result.position ?? result.point ?? vec3.create();\n result.point = result.point ?? result.position;\n result.normal = result.normal ?? vec3.create();\n result.unnormalizedNormal = result.unnormalizedNormal ?? vec3.create();\n vec3.copy(result.position, hit.point);\n vec3.copy(result.point, hit.point);\n vec3.copy(result.normal, hit.normal);\n vec3.copy(result.unnormalizedNormal, hit.unnormalizedNormal);\n result.meshIndex = hit.meshIndex;\n result.areaIndex = hit.areaIndex;\n result.boneIndex = hit.boneIndex;\n return true;\n }\n\n /**\n * The CPU triangle data an intersection query needs, or a loud failure.\n *\n * A ray query used to read `GetPayload()?.meshes`, and `intersectGeometry`\n * loops over `meshes?.length || 0`. So an absent payload produced a clean\n * MISS: `hit: false`, no error, indistinguishable from the ray genuinely\n * passing the object by. Picking would appear to work and simply stop\n * hitting things, and the symptom reads as a maths bug rather than a\n * residency one.\n *\n * Carbon never has to answer this, because it holds the loaded file for the\n * resource's lifetime and its CPU data is always resident. Ours is\n * releasable, so the unavailable case is real and must be named.\n *\n * Throwing is the interim answer, not the final one: once accuracy tiers\n * exist a query degrades to bounds or sphere and reports which produced it.\n * What it must never do again is report absence as a miss. See\n * `/docs/contracts/cpu-geometry-residency.md`.\n *\n * @returns {Array<*>} Canonical CPU meshes.\n * @throws {Error} When the CPU geometry is not resident.\n */\n RequireIntersectionMeshes()\n {\n const meshes = this.GetPayload()?.meshes;\n if (!Array.isArray(meshes))\n {\n throw new Error(\n \"TriGeometryRes cannot answer an intersection query: CPU geometry is \"\n + \"not resident. The payload was never loaded or has been released. \"\n + \"Reload through CjsResMan before querying.\"\n );\n }\n return meshes;\n }\n\n /**\n * Get vertex element descriptors for a mesh.\n *\n * @param {number} meshIndex\n * @returns {Array<*>}\n */\n GetMeshVertexElements(meshIndex = 0)\n {\n // The CMF reader emits the element list as `decl`, matching the CMF struct\n // field; this accessor read only `vertexElements`, which no reader in this\n // package populates, so it returned an empty list for every real decoded\n // payload. Both names are accepted because the name is the producer's.\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n\n return mesh?.decl || mesh?.vertexElements || [];\n }\n\n /**\n * Saving belongs to the selected geometry format writer and destination.\n *\n * @throws {Error}\n */\n SaveMesh()\n {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"SaveMesh\",\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\n );\n }\n\n static payload = ResourceRequirement.GEOMETRY;\n\n // Carbon TriGeometryRes.cpp:158-178, declared beside the class\n // (TriGeometryRes.h:202) because it reads LOD data rather than resource\n // state - which is why it is static here. It returns a PLAIN SUM and does not\n // multiply by three: the *3 belongs to the caller, so triangles-only is a\n // property of the mesh draw path rather than of the geometry layer.\n\n /**\n * The summed primitive count over `count` areas of a LOD starting at `index`,\n * with the run clamped to the area list as Carbon clamps it; zero when the\n * index is out of range, which callers treat as \"emit no draw\".\n *\n * @param {object|null} lod\n * @param {number} index\n * @param {number} count\n * @returns {number}\n */\n static getPrimitiveCount(lod, index, count)\n {\n const areas = lod?.areas ?? null;\n const areaCount = areas?.length ?? 0;\n\n if (!areaCount || index >= areaCount) return 0;\n\n const run = index + count > areaCount ? areaCount - index : count;\n\n let primitiveCount = 0;\n\n for (let offset = 0; offset < run; offset++)\n {\n primitiveCount += TriGeometryRes.getAreaPrimitiveCount(areas[index + offset]);\n }\n\n return primitiveCount;\n }\n\n // A CMF LOD AREA IS NOT A CARBON AREA, AND THE DIFFERENCE IS A FACTOR OF THREE.\n //\n // Carbon converts at the read boundary (TriGeometryRes.cpp:905-906):\n //\n // area.m_firstIndex = cmfLodMeshArea.firstElement * 3;\n // area.m_primitiveCount = cmfLodMeshArea.elementCount;\n //\n // `firstElement` counts TRIANGLES and `m_firstIndex` counts INDICES, so the\n // start converts and the count does not. Reading `firstElement` as an index\n // would draw the right number of triangles from a third of the way into the\n // area - plausible geometry, wrong geometry, and no error anywhere.\n //\n // Both names are accepted for the same reason `decl`/`vertexElements` are\n // accepted above: the name is the producer's. A payload built by a reader\n // that already speaks Carbon's vocabulary is passed through unconverted.\n\n /**\n * One area's primitive count, under whichever name the producer used.\n *\n * @param {object|null} area\n * @returns {number} Triangle count; zero when the area is absent or unnamed.\n */\n static getAreaPrimitiveCount(area)\n {\n return area?.primitiveCount ?? area?.elementCount ?? 0;\n }\n\n /**\n * One area's first INDEX, converting a CMF first-triangle when that is what\n * the producer wrote.\n *\n * @param {object|null} area\n * @returns {number} Index offset into the LOD's index buffer.\n */\n static getAreaFirstIndex(area)\n {\n if (area?.firstIndex !== undefined) return area.firstIndex;\n if (area?.firstElement !== undefined) return area.firstElement * 3;\n\n return 0;\n }\n\n /**\n * A LOD's total primitive count.\n *\n * Carbon takes this from the index stream rather than from the areas\n * (`GetStreamElementCount( cmfLod.ib ) / 3`, TriGeometryRes.cpp:890), because\n * an area list need not cover every triangle. Falling back to the area sum\n * keeps a payload that carries areas but no index-stream extent usable, and\n * only the reversed draw path reads this at all.\n *\n * @param {object|null} lod\n * @returns {number}\n */\n static getLodPrimitiveCount(lod)\n {\n if (lod?.primitiveCount !== undefined) return lod.primitiveCount;\n\n const stride = lod?.ib?.stride ?? 0;\n const size = lod?.ib?.size ?? 0;\n\n if (stride > 0 && size > 0) return Math.floor(size / stride / 3);\n\n return TriGeometryRes.getPrimitiveCount(lod, 0, lod?.areas?.length ?? 0);\n }\n\n /**\n * Gets the canonical area list from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {Array<*>|null}\n */\n static getMeshAreas(mesh)\n {\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\n }\n\n /**\n * Gets canonical bounds from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\n */\n static getBounds(value)\n {\n if (!value || typeof value !== \"object\") return null;\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\n if (value.minBounds && value.maxBounds)\n {\n return { min: value.minBounds, max: value.maxBounds };\n }\n return null;\n }\n\n /**\n * Gets the canonical bounding sphere from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {ArrayLike<number>|null}\n */\n static getSphere(value)\n {\n if (!value || typeof value !== \"object\") return null;\n return value.sphere || value.boundingSphere || null;\n }\n\n /**\n * Copies bounds into caller-owned outputs, or returns the source object.\n *\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n static copyBounds(bounds, outMin, outMax)\n {\n if (!outMin && !outMax) return bounds;\n if (!bounds || !outMin || !outMax) return false;\n vec3.copy(outMin, bounds.min);\n vec3.copy(outMax, bounds.max);\n return true;\n }\n\n /**\n * Gets canonical positions from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\n */\n static getMeshPositions(mesh)\n {\n return mesh?.vertex?.position\n || mesh?.positions\n || mesh?.lods?.[0]?.vertex?.position\n || mesh?.lods?.[0]?.positions\n || null;\n }\n\n /**\n * Gets the number of vertices represented by flat or nested positions.\n *\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @returns {number}\n */\n static getPositionCount(positions)\n {\n if (!positions) return 0;\n return typeof positions[0] === \"number\"\n ? Math.floor(positions.length / 3)\n : positions.length;\n }\n\n /**\n * Calculates bounds from canonical positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setBoundsFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let found = false;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n if (!found)\n {\n out[0] = out[3] = point[0];\n out[1] = out[4] = point[1];\n out[2] = out[5] = point[2];\n found = true;\n continue;\n }\n out[0] = Math.min(out[0], point[0]);\n out[1] = Math.min(out[1], point[1]);\n out[2] = Math.min(out[2], point[2]);\n out[3] = Math.max(out[3], point[0]);\n out[4] = Math.max(out[4], point[1]);\n out[5] = Math.max(out[5], point[2]);\n }\n return found;\n }\n\n /**\n * Calculates a bounding sphere from positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setSphereFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let\n found = false,\n minX = Infinity,\n minY = Infinity,\n minZ = Infinity,\n maxX = -Infinity,\n maxY = -Infinity,\n maxZ = -Infinity;\n\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n minX = Math.min(minX, point[0]);\n minY = Math.min(minY, point[1]);\n minZ = Math.min(minZ, point[2]);\n maxX = Math.max(maxX, point[0]);\n maxY = Math.max(maxY, point[1]);\n maxZ = Math.max(maxZ, point[2]);\n found = true;\n }\n if (!found) return false;\n\n out[0] = (minX + maxX) * 0.5;\n out[1] = (minY + maxY) * 0.5;\n out[2] = (minZ + maxZ) * 0.5;\n let maxSquaredRadius = 0;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n const\n x = out[0] - point[0],\n y = out[1] - point[1],\n z = out[2] - point[2];\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\n }\n out[3] = Math.sqrt(maxSquaredRadius);\n return true;\n }\n\n /**\n * Calculates a mesh sphere from positions or existing bounds.\n *\n * @param {ArrayLike<number>} out\n * @param {object} mesh\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static calculateMeshSphere(out, mesh, point)\n {\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\n const bounds = this.getBounds(mesh);\n if (!bounds) return false;\n sph3.fromBounds(out, bounds.min, bounds.max);\n return true;\n }\n\n /**\n * Stores a calculated sphere in the mesh's canonical sphere fields.\n *\n * @param {object} mesh\n * @param {ArrayLike<number>} sphere\n * @returns {void}\n */\n static setMeshSphere(mesh, sphere)\n {\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\n else mesh.sphere = [ ...sphere ];\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\n {\n mesh.boundingSphere.set(sphere);\n }\n else if (\"boundingSphere\" in mesh)\n {\n mesh.boundingSphere = [ ...sphere ];\n }\n }\n\n /**\n * Intersects a ray with canonical CPU geometry.\n *\n * @param {Array<object>|null} meshes\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n static intersectGeometry(meshes, position, direction, areaIndex)\n {\n this.validateRayVector(position, \"position\");\n this.validateRayVector(direction, \"direction\");\n const\n ray = ray3.from(ray3.alloc(), position, direction),\n point = vec3.alloc(),\n vertexA = vec3.alloc(),\n vertexB = vec3.alloc(),\n vertexC = vec3.alloc(),\n normal = vec3.alloc();\n let nearest = null;\n try\n {\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\n {\n const mesh = meshes[meshIndex];\n const positions = this.getMeshPositions(mesh);\n if (!positions) continue;\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\n if (ArrayBuffer.isView(groups)\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\n {\n if (areaIndex !== -1 && areaIndex !== 0) continue;\n nearest = this.intersectFaces(\n nearest,\n groups,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n continue;\n }\n if (Array.isArray(groups))\n {\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\n {\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\n nearest = this.intersectFaces(\n nearest,\n faces,\n groupIndex,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n continue;\n }\n if (areaIndex === -1 || areaIndex === 0)\n {\n nearest = this.intersectFaces(\n nearest,\n null,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n }\n if (nearest) return nearest;\n const hitPosition = [ 0, 0, 0 ];\n return {\n hit: false,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance: Infinity,\n meshIndex: -1,\n areaIndex\n };\n }\n finally\n {\n vec3.unalloc(normal);\n vec3.unalloc(vertexC);\n vec3.unalloc(vertexB);\n vec3.unalloc(vertexA);\n vec3.unalloc(point);\n ray3.unalloc(ray);\n }\n }\n\n /**\n * Validates a caller-provided ray vector.\n *\n * @param {ArrayLike<number>} value\n * @param {string} name\n * @returns {void}\n */\n static validateRayVector(value, name)\n {\n if (!value\n || value.length < 3\n || !Number.isFinite(value[0])\n || !Number.isFinite(value[1])\n || !Number.isFinite(value[2]))\n {\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\n }\n }\n\n /**\n * Intersects a ray with one flat face list.\n *\n * @param {object|null} nearest\n * @param {ArrayLike<number>|null} faces\n * @param {number} areaIndex\n * @param {object} mesh\n * @param {number} meshIndex\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {ArrayLike<number>} rayOrigin\n * @param {ArrayLike<number>} ray\n * @param {ArrayLike<number>} point\n * @param {ArrayLike<number>} vertexA\n * @param {ArrayLike<number>} vertexB\n * @param {ArrayLike<number>} vertexC\n * @param {ArrayLike<number>} normal\n * @returns {object|null}\n */\n static intersectFaces(\n nearest,\n faces,\n areaIndex,\n mesh,\n meshIndex,\n positions,\n rayOrigin,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n )\n {\n const count = faces?.length ?? this.getPositionCount(positions);\n for (let index = 0; index + 2 < count; index += 3)\n {\n const\n vertexIndexA = faces ? faces[index] : index,\n vertexIndexB = faces ? faces[index + 1] : index + 1,\n vertexIndexC = faces ? faces[index + 2] : index + 2;\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\n || !this.copyPosition(vertexB, positions, vertexIndexB)\n || !this.copyPosition(vertexC, positions, vertexIndexC)\n || !ray3.getIntersectVertices(\n point,\n ray,\n vertexA,\n vertexB,\n vertexC,\n false\n ))\n {\n continue;\n }\n const distance = vec3.distance(rayOrigin, point);\n if (nearest && nearest.distance <= distance) continue;\n if (!nearest)\n {\n const hitPosition = [ 0, 0, 0 ];\n nearest = {\n hit: true,\n boneIndex: -1,\n position: hitPosition,\n point: hitPosition,\n normal: [ 0, 0, 0 ],\n unnormalizedNormal: [ 0, 0, 0 ],\n distance,\n meshIndex,\n areaIndex\n };\n }\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\n vec3.copy(nearest.position, point);\n // (B - A) x (C - A). This was written out in full one line above a\n // `triangleNormalTo` call that computes the NORMALISED version of the same\n // vector, so the winding convention lived in two places at once.\n vec3.subtract(edgeAB, vertexB, vertexA);\n vec3.subtract(edgeAC, vertexC, vertexA);\n vec3.cross(nearest.unnormalizedNormal, edgeAB, edgeAC);\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\n vec3.copy(nearest.normal, normal);\n nearest.distance = distance;\n nearest.meshIndex = meshIndex;\n nearest.areaIndex = areaIndex;\n }\n return nearest;\n }\n\n /**\n * Copies one flat or nested position into caller-owned output.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {number} index\n * @returns {boolean}\n */\n static copyPosition(out, positions, index)\n {\n if (!Number.isInteger(index) || index < 0) return false;\n if (typeof positions[0] === \"number\")\n {\n const offset = index * 3;\n if (offset + 2 >= positions.length) return false;\n out[0] = positions[offset];\n out[1] = positions[offset + 1];\n out[2] = positions[offset + 2];\n return true;\n }\n const point = positions[index];\n if (!point || point.length < 3) return false;\n out[0] = point[0];\n out[1] = point[1];\n out[2] = point[2];\n return true;\n }\n\n /**\n * Gets the first blend index for a mesh vertex.\n *\n * @param {object} mesh\n * @param {number} vertexIndex\n * @returns {number}\n */\n static getMeshBoneIndex(mesh, vertexIndex)\n {\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\n if (!indices) return -1;\n if (typeof indices[0] === \"number\")\n {\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\n }\n return Number(indices[vertexIndex]?.[0] ?? -1);\n }\n\n}\n\n// Declared as data rather than with decorators, so the resource tree loads from\n// source without a transform. Field order is key order, and GetValues() exports\n// in that order.\nCjsSchema.define(TriGeometryRes, {\n className: \"TriGeometryRes\",\n family: \"resources\",\n fields: {\n forceLod: [ type.boolean, edit.readwrite ],\n forcedLodIndex: [ type.int32, edit.readwrite ],\n name: [ type.string, edit.readwrite ]\n },\n methods: {\n GetMeshCount: [ carbon.method, impl.adapted ],\n GetAnimationCount: [ carbon.method, impl.adapted ],\n GetSkeletonCount: [ carbon.method, impl.adapted ],\n GetSkeletonData: [ carbon.method, impl.adapted ],\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\n GetLodIndexForScreenSize: [ carbon.method, impl.adapted ],\n GetMeshLod: [ carbon.method, impl.adapted ],\n GetMeshLodByIndex: [ carbon.method, impl.adapted ],\n GetMeshName: [ carbon.method, impl.adapted ],\n GetMeshAreaName: [ carbon.method, impl.adapted ],\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingSphere: [ carbon.method, impl.adapted ],\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\n Reload: [ carbon.method, impl.notSupported ],\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n PrepareRayCaster: [ carbon.method, impl.adapted ],\n ResetRayCaster: [ carbon.method, impl.adapted ],\n IsRayCasterReady: [ carbon.method, impl.adapted ],\n HasRayCasterPreparationFailed: [ carbon.method, impl.adapted ],\n DestroyRayCaster: [ carbon.method, impl.adapted ],\n ReleaseResources: [ carbon.method, impl.adapted, impl.reason(\"Carbon's CancelPendingLoad half is manager-owned here, and its SetGood(false)/SetPrepared(false) pair is one UNLOADED state.\") ],\n ReleasePayload: [ impl.custom, impl.reason(\"No Carbon counterpart: Carbon releases geometry only through ReleaseResources. The override exists so a manager-driven payload release cannot leave a raycaster built from the freed meshes behind.\") ],\n GetIntersectionPoints: [ carbon.method, impl.adapted ],\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\n SaveMesh: [ carbon.method, impl.notSupported ]\n }\n});\n"],"names":["edgeAB","edgeAC","TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","skipUpdate","skipEvents","SetPayload","payload","options","Error","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","ReleasePayload","DestroyRayCaster","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetMeshData","GetCMFData","IsUsingCMF","GetLodIndexForScreenSize","screenSize","Infinity","lods","lastLod","Math","min","maxScreenSize","GetMeshLod","GetMeshLodByIndex","lodIndex","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","RequireIntersectionMeshes","GetAreaIntersectionPointNormalBone","RangeError","PrepareRayCaster","Tr2RaycastGeometryRes","SetSource","_error","ResetRayCaster","IsRayCasterReady","HasRayCasterPreparationFailed","ReleaseResources","storage","TriStorageFlags","TRISTORAGE_ALL","TRISTORAGE_MANAGEDMEMORY","SetState","State","UNLOADED","GetIntersectionPoints","result","rayLength","_IntersectRaycastGeometry","hit","dx","dy","dz","denominator","distance","create","normal","unnormalizedNormal","boneIndex","GetMeshVertexElements","decl","vertexElements","SaveMesh","ResourceRequirement","GEOMETRY","getPrimitiveCount","lod","count","areaCount","run","primitiveCount","offset","getAreaPrimitiveCount","elementCount","getAreaFirstIndex","firstIndex","firstElement","getLodPrimitiveCount","stride","ib","size","floor","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","found","copyPosition","setSphereFromPositions","minX","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hitPosition","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","subtract","cross","triangleNormalTo","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","edit","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported","reason","custom"],"mappings":";;;;;;;;;;;;;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,MAAM,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC1B,MAAMC,MAAM,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,SAASC,WAAW,CAC/C;AACEC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,cAAc,GAAG,EAAE;AACnBC,EAAAA,IAAI,GAAG,EAAE;EAET,gBAAgB,GAAG,IAAI;EAEvB,aAAa,GAAG,CAAC;EAEjB,yBAAyB,GAAG,KAAK;;AAEjC;AACAC,EAAAA,WAAWA,CAACC,MAAM,GAAG,IAAI,EACzB;AACE,IAAA,KAAK,EAAE;AACP,IAAA,IAAI,CAACC,SAAS,CAACD,MAAM,IAAI,EAAE,EAAE;AAC3BE,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,UAAU,EAAE;AACd,KAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,UAAUA,CAACC,OAAO,GAAG,IAAI,EAAEC,OAAO,GAAG,IAAI,EACzC;AACE,IAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAC5B;AACE,MAAA,MAAM,IAAIC,KAAK,CAAC,wEAAwE,CAAC;AAC3F,IAAA;AACA,IAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,IAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;IACtC,IAAIF,OAAO,KAAK,IAAI,EACpB;AACE,MAAA,KAAK,CAACD,UAAU,CAAC,IAAI,CAAC;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;AACAI,IAAAA,2BAA2B,CAAC,gBAAgB,EAAEH,OAAO,CAAC;AACtDI,IAAAA,0BAA0B,CAAC,gBAAgB,EAAEJ,OAAO,EAAE,QAAQ,CAAC;IAC/D,KAAK,MAAMK,KAAK,IAAI,CAAE,WAAW,EAAE,YAAY,CAAE,EACjD;AACE,MAAA,IAAIL,OAAO,CAACK,KAAK,CAAC,KAAKC,SAAS,IAAI,CAACC,KAAK,CAACC,OAAO,CAACR,OAAO,CAACK,KAAK,CAAC,CAAC,EAClE;AACE,QAAA,MAAMI,oBAAoB,CAAC,gBAAgB,EAAE,kCAAkC,EAAEJ,KAAK,CAAC;AACzF,MAAA;AACF,IAAA;AACA,IAAA,KAAK,CAACN,UAAU,CAACC,OAAO,CAAC;AACzB,IAAA,IAAI,CAACJ,SAAS,CAACK,OAAO,IAAI,EAAE,CAAC;AAC7B,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACES,EAAAA,cAAcA,GACd;IACE,IAAI,CAACC,gBAAgB,EAAE;AACvB,IAAA,OAAO,KAAK,CAACD,cAAc,EAAE;AAC/B,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEE,EAAAA,YAAYA,GACZ;IACE,OAAO,IAAI,CAACC,UAAU,EAAE,EAAEC,MAAM,EAAEC,MAAM,IAAI,CAAC;AAC/C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,iBAAiBA,GACjB;IACE,OAAO,IAAI,CAACH,UAAU,EAAE,EAAEI,UAAU,EAAEF,MAAM,IAAI,CAAC;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEG,EAAAA,gBAAgBA,GAChB;IACE,OAAO,IAAI,CAACL,UAAU,EAAE,EAAEM,SAAS,EAAEJ,MAAM,IAAI,CAAC;AAClD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,eAAeA,CAACC,aAAa,GAAG,CAAC,EACjC;AACE,IAAA,MAAMC,KAAK,GAAGC,MAAM,CAACF,aAAa,CAAC;IAEnC,IAAI,CAACE,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EACzC;AACE,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAO,IAAI,CAACT,UAAU,EAAE,EAAEM,SAAS,GAAGG,KAAK,CAAC,IAAI,IAAI;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,gBAAgBA,CAACC,SAAS,GAAG,CAAC,EAC9B;IACE,MAAMC,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;AACnD,IAAA,OAAOC,IAAI,EAAEC,KAAK,EAAEb,MAAM,IAAI,CAAC;AACjC,EAAA;;AAEA;AACAc,EAAAA,WAAWA,CAACH,SAAS,GAAG,CAAC,EACzB;IACE,OAAO,IAAI,CAACb,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,IAAI,IAAI;AACvD,EAAA;;AAEA;AACAI,EAAAA,UAAUA,GACV;AACE,IAAA,OAAO,IAAI,CAACjB,UAAU,EAAE;AAC1B,EAAA;;AAEA;AACAkB,EAAAA,UAAUA,GACV;IACE,OAAOxB,KAAK,CAACC,OAAO,CAAC,IAAI,CAACK,UAAU,EAAE,EAAEC,MAAM,CAAC;AACjD,EAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEkB,wBAAwBA,CAACN,SAAS,GAAG,CAAC,EAAEO,UAAU,GAAGC,QAAQ,EAC7D;IACE,MAAMP,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;AAEnD,IAAA,IAAI,CAACC,IAAI,EAAE,OAAO,EAAE;;AAEpB;AACA;AACA,IAAA,MAAMQ,IAAI,GAAGR,IAAI,CAACQ,IAAI,EAAEpB,MAAM,GAAGY,IAAI,CAACQ,IAAI,GAAG,IAAI;IACjD,MAAMC,OAAO,GAAGD,IAAI,GAAGA,IAAI,CAACpB,MAAM,GAAG,CAAC,GAAG,CAAC;IAE1C,IAAI,IAAI,CAACxB,QAAQ,IAAI,IAAI,CAACC,cAAc,IAAI,CAAC,EAC7C;MACE,OAAO6C,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC9C,cAAc,EAAE4C,OAAO,CAAC;AAC/C,IAAA;IAEA,KAAK,IAAId,KAAK,GAAGc,OAAO,EAAEd,KAAK,IAAI,CAAC,EAAEA,KAAK,EAAE,EAC7C;AACE,MAAA,MAAMiB,aAAa,GAAG,CAACJ,IAAI,GAAGA,IAAI,CAACb,KAAK,CAAC,EAAEiB,aAAa,GAAGZ,IAAI,CAACY,aAAa,KAAK,CAAC;AACnF,MAAA,IAAIA,aAAa,IAAIN,UAAU,EAAE,OAAOX,KAAK;AAC/C,IAAA;AAEA,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEkB,UAAUA,CAACd,SAAS,GAAG,CAAC,EAAEO,UAAU,GAAGC,QAAQ,EAC/C;AACE,IAAA,OAAO,IAAI,CAACO,iBAAiB,CAACf,SAAS,EAAE,IAAI,CAACM,wBAAwB,CAACN,SAAS,EAAEO,UAAU,CAAC,CAAC;AAChG,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEQ,iBAAiBA,CAACf,SAAS,GAAG,CAAC,EAAEgB,QAAQ,GAAG,CAAC,EAC7C;IACE,MAAMf,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;IAEnD,IAAI,CAACC,IAAI,IAAIe,QAAQ,GAAG,CAAC,EAAE,OAAO,IAAI;AAEtC,IAAA,IAAIf,IAAI,CAACQ,IAAI,EAAEpB,MAAM,EACrB;AACE,MAAA,OAAO2B,QAAQ,GAAGf,IAAI,CAACQ,IAAI,CAACpB,MAAM,GAAGY,IAAI,CAACQ,IAAI,CAACO,QAAQ,CAAC,GAAG,IAAI;AACjE,IAAA;IAEA,OAAOA,QAAQ,KAAK,CAAC,IAAIf,IAAI,CAACC,KAAK,GAAGD,IAAI,GAAG,IAAI;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEgB,EAAAA,WAAWA,CAACjB,SAAS,GAAG,CAAC,EACzB;AACE,IAAA,OAAO,IAAI,CAACb,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,EAAEjC,IAAI,IAAI,EAAE;AAC3D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEmD,eAAeA,CAAClB,SAAS,GAAG,CAAC,EAAEmB,SAAS,GAAG,CAAC,EAC5C;AACE,IAAA,OAAO,IAAI,CAAChC,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,EAAEE,KAAK,GAAGiB,SAAS,CAAC,EAAEpD,IAAI,IAAI,EAAE;AAC/E,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEqD,EAAAA,kBAAkBA,CAACpB,SAAS,GAAG,CAAC,EAAEmB,SAAS,GAAG,CAAC,EAAEE,MAAM,GAAG,IAAI,EAAEC,MAAM,GAAG,IAAI,EAC7E;AACE,IAAA,MAAMC,IAAI,GAAG5D,cAAc,CAAC6D,YAAY,CAAC,IAAI,CAACrC,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,CAAC,GAAGmB,SAAS,CAAC;AAC7F,IAAA,MAAMM,MAAM,GAAG9D,cAAc,CAAC+D,SAAS,CAACH,IAAI,CAAC;IAC7C,OAAO5D,cAAc,CAACgE,UAAU,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEM,EAAAA,cAAcA,CAAC5B,SAAS,GAAG,CAAC,EAAEqB,MAAM,GAAG,IAAI,EAAEC,MAAM,GAAG,IAAI,EAC1D;AACE,IAAA,MAAMhD,OAAO,GAAG,IAAI,CAACa,UAAU,EAAE;AACjC,IAAA,MAAMsC,MAAM,GAAG9D,cAAc,CAAC+D,SAAS,CAACpD,OAAO,EAAEc,MAAM,GAAGY,SAAS,CAAC,CAAC,IAChErC,cAAc,CAAC+D,SAAS,CAACpD,OAAO,CAAC;IACtC,OAAOX,cAAc,CAACgE,UAAU,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEO,iBAAiBA,CAAC7B,SAAS,GAAG,CAAC,EAAE8B,GAAG,GAAG,IAAI,EAC3C;AACE,IAAA,MAAMxD,OAAO,GAAG,IAAI,CAACa,UAAU,EAAE;AACjC,IAAA,MAAM4C,MAAM,GAAGpE,cAAc,CAACqE,SAAS,CAAC1D,OAAO,EAAEc,MAAM,GAAGY,SAAS,CAAC,CAAC,IAChErC,cAAc,CAACqE,SAAS,CAAC1D,OAAO,CAAC;AACtC,IAAA,IAAI,CAACwD,GAAG,EAAE,OAAOC,MAAM;AACvB,IAAA,IAAI,CAACA,MAAM,EAAE,OAAO,KAAK;AACzBE,IAAAA,IAAI,CAACC,IAAI,CAACJ,GAAG,EAAEC,MAAM,CAAC;AACtB,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEI,iCAAiCA,CAACnC,SAAS,GAAG,CAAC,EAAEoC,SAAS,GAAG,IAAI,EACjE;IACE,IAAI,CAACA,SAAS,IAAIA,SAAS,CAAC/C,MAAM,GAAG,EAAE,EACvC;AACE,MAAA,MAAM,IAAIgD,SAAS,CAAC,2DAA2D,CAAC;AAClF,IAAA;IACA,MAAMpC,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;AACnD,IAAA,IAAI,CAACC,IAAI,EAAE,OAAO,IAAI;AACtB,IAAA,MAAMqC,SAAS,GAAG3E,cAAc,CAAC4E,gBAAgB,CAACtC,IAAI,CAAC;AACvD,IAAA,MAAMuC,YAAY,GAAG7E,cAAc,CAAC+D,SAAS,CAACzB,IAAI,CAAC;AACnD,IAAA,IAAI,CAACqC,SAAS,IAAI,CAACE,YAAY,EAAE,OAAO,IAAI;AAE5C,IAAA,MACEf,MAAM,GAAGgB,IAAI,CAACC,KAAK,EAAE;AACrBC,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;IACtB,IACA;MACE,IAAI,CAAC/E,cAAc,CAACkF,sBAAsB,CAACpB,MAAM,EAAEa,SAAS,EAAEK,KAAK,CAAC,EACpE;AACE,QAAA,IAAI,CAACH,YAAY,EAAE,OAAO,IAAI;AAC9BC,QAAAA,IAAI,CAACK,UAAU,CAACrB,MAAM,EAAEe,YAAY,CAAC5B,GAAG,EAAE4B,YAAY,CAACO,GAAG,CAAC;AAC7D,MAAA;MACAN,IAAI,CAACO,aAAa,CAACvB,MAAM,EAAEA,MAAM,EAAEW,SAAS,CAAC;MAC7C,OAAO;AACLxB,QAAAA,GAAG,EAAE,CAAEa,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAE;AACxCsB,QAAAA,GAAG,EAAE,CAAEtB,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC;OACvC;AACH,IAAA,CAAC,SAED;AACEmB,MAAAA,IAAI,CAACK,OAAO,CAACN,KAAK,CAAC;AACnBF,MAAAA,IAAI,CAACQ,OAAO,CAACxB,MAAM,CAAC;AACtB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEyB,EAAAA,yBAAyBA,GACzB;IACE,IAAIC,OAAO,GAAG,KAAK;AACnB,IAAA,MACEpB,MAAM,GAAGqB,IAAI,CAACV,KAAK,EAAE;AACrBC,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;IACtB,IACA;AACE,MAAA,KAAK,MAAMzC,IAAI,IAAI,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,IAAI,EAAE,EAClD;QACE,IAAI,CAACzB,cAAc,CAAC0F,mBAAmB,CAACtB,MAAM,EAAE9B,IAAI,EAAE0C,KAAK,CAAC,EAAE;AAC9DhF,QAAAA,cAAc,CAAC2F,aAAa,CAACrD,IAAI,EAAE8B,MAAM,CAAC;AAC1CoB,QAAAA,OAAO,GAAG,IAAI;AAChB,MAAA;AACA,MAAA,OAAOA,OAAO;AAChB,IAAA,CAAC,SAED;AACEP,MAAAA,IAAI,CAACK,OAAO,CAACN,KAAK,CAAC;AACnBS,MAAAA,IAAI,CAACH,OAAO,CAAClB,MAAM,CAAC;AACtB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEwB,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMC,qBAAqB,CACzB,gBAAgB,EAChB,QAAQ,EACR,oGACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,8BAA8BA,CAACC,QAAQ,EAAEC,SAAS,EAClD;AACE,IAAA,OAAOhG,cAAc,CAACiG,iBAAiB,CACrC,IAAI,CAACC,yBAAyB,EAAE,EAChCH,QAAQ,EACRC,SAAS,EACT,EACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,kCAAkCA,CAACJ,QAAQ,EAAEC,SAAS,EAAExC,SAAS,GAAG,EAAE,EACtE;AACE,IAAA,IAAI,CAACtB,MAAM,CAACC,SAAS,CAACqB,SAAS,CAAC,IAAIA,SAAS,GAAG,EAAE,EAClD;AACE,MAAA,MAAM,IAAI4C,UAAU,CAAC,iEAAiE,CAAC;AACzF,IAAA;AACA,IAAA,OAAOpG,cAAc,CAACiG,iBAAiB,CACrC,IAAI,CAACC,yBAAyB,EAAE,EAChCH,QAAQ,EACRC,SAAS,EACTxC,SACF,CAAC;AACH,EAAA;;AAEA;AACA6C,EAAAA,gBAAgBA,GAChB;IACE,IAAI,CAAC,aAAa,EAAE;IACpB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,yBAAyB,EAAE;IAE7D,IACA;MACE,IAAI,CAACH,yBAAyB,EAAE;AAChC,MAAA,IAAI,CAAC,gBAAgB,GAAG,IAAII,qBAAqB,EAAE,CAACC,SAAS,CAAC,IAAI,CAAC;IACrE,CAAC,CACD,OAAOC,MAAM,EACb;AACE,MAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACvC,IAAA;AACF,EAAA;;AAEA;AACAC,EAAAA,cAAcA,GACd;AACE,IAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAC5B;AACE,MAAA,MAAM,IAAI5F,KAAK,CAAC,2EAA2E,CAAC;AAC9F,IAAA;IACA,IAAI,CAAC,aAAa,EAAE;AACpB,IAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAC5B;AACE,MAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,MAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACxC,IAAA;AACF,EAAA;;AAEA;AACA6F,EAAAA,gBAAgBA,GAChB;AACE,IAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,IAAI;AACvC,EAAA;;AAEA;AACAC,EAAAA,6BAA6BA,GAC7B;AACE;AACA;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,IAAI;IACjE,OAAO,IAAI,CAAC,yBAAyB;AACvC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACErF,EAAAA,gBAAgBA,GAChB;AACE,IAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,IAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACtC,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEsF,EAAAA,gBAAgBA,CAACC,OAAO,GAAGC,eAAe,CAACC,cAAc,EACzD;IACE,IAAI,EAAEF,OAAO,GAAGC,eAAe,CAACE,wBAAwB,CAAC,EAAE,OAAO,IAAI;IACtE,IAAI,CAAC1F,gBAAgB,EAAE;IACvB,IAAI,CAACD,cAAc,EAAE;IACrB,IAAI,CAAC4F,QAAQ,CAAChH,WAAW,CAACiH,KAAK,CAACC,QAAQ,CAAC;AACzC,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACAC,EAAAA,qBAAqBA,CAACrB,QAAQ,EAAEC,SAAS,EAAEqB,MAAM,GAAG,EAAE,EAAE7D,SAAS,GAAG,EAAE,EAAE8D,SAAS,GAAGzE,QAAQ,EAC5F;AACE,IAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAC1B;AACE,MAAA,MAAM,IAAIhC,KAAK,CAAC,2EAA2E,CAAC;AAC9F,IAAA;AACA,IAAA,OAAO,IAAI,CAAC,gBAAgB,CAACuG,qBAAqB,CAChDrB,QAAQ,EAAEC,SAAS,EAAEqB,MAAM,EAAE7D,SAAS,EAAE8D,SAAS,CAAC;AACtD,EAAA;;AAEA;EACAC,yBAAyBA,CAACxB,QAAQ,EAAEC,SAAS,EAAEqB,MAAM,EAAE7D,SAAS,EAAE8D,SAAS,EAC3E;AACE,IAAA,MAAME,GAAG,GAAGxH,cAAc,CAACiG,iBAAiB,CAC1C,IAAI,CAACC,yBAAyB,EAAE,EAAEH,QAAQ,EAAEC,SAAS,EAAExC,SAAS,CAAC;AACnE,IAAA,IAAI,CAACgE,GAAG,CAACA,GAAG,EAAE,OAAO,KAAK;AAE1B,IAAA,MAAMC,EAAE,GAAGD,GAAG,CAACxC,KAAK,CAAC,CAAC,CAAC,GAAGe,QAAQ,CAAC,CAAC,CAAC;AACrC,IAAA,MAAM2B,EAAE,GAAGF,GAAG,CAACxC,KAAK,CAAC,CAAC,CAAC,GAAGe,QAAQ,CAAC,CAAC,CAAC;AACrC,IAAA,MAAM4B,EAAE,GAAGH,GAAG,CAACxC,KAAK,CAAC,CAAC,CAAC,GAAGe,QAAQ,CAAC,CAAC,CAAC;AACrC,IAAA,MAAM6B,WAAW,GAAG5B,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAC7CA,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC;AAC3D,IAAA,MAAM6B,QAAQ,GAAGD,WAAW,GACxB,CAACH,EAAE,GAAGzB,SAAS,CAAC,CAAC,CAAC,GAAG0B,EAAE,GAAG1B,SAAS,CAAC,CAAC,CAAC,GAAG2B,EAAE,GAAG3B,SAAS,CAAC,CAAC,CAAC,IAAI4B,WAAW,GACzE/E,QAAQ;IACZ,IAAIgF,QAAQ,GAAG,CAAC,IAAIA,QAAQ,GAAGP,SAAS,EAAE,OAAO,KAAK;IAEtDD,MAAM,CAACQ,QAAQ,GAAGA,QAAQ;AAC1BR,IAAAA,MAAM,CAACtB,QAAQ,GAAGsB,MAAM,CAACtB,QAAQ,IAAIsB,MAAM,CAACrC,KAAK,IAAIC,IAAI,CAAC6C,MAAM,EAAE;IAClET,MAAM,CAACrC,KAAK,GAAGqC,MAAM,CAACrC,KAAK,IAAIqC,MAAM,CAACtB,QAAQ;IAC9CsB,MAAM,CAACU,MAAM,GAAGV,MAAM,CAACU,MAAM,IAAI9C,IAAI,CAAC6C,MAAM,EAAE;IAC9CT,MAAM,CAACW,kBAAkB,GAAGX,MAAM,CAACW,kBAAkB,IAAI/C,IAAI,CAAC6C,MAAM,EAAE;IACtE7C,IAAI,CAACV,IAAI,CAAC8C,MAAM,CAACtB,QAAQ,EAAEyB,GAAG,CAACxC,KAAK,CAAC;IACrCC,IAAI,CAACV,IAAI,CAAC8C,MAAM,CAACrC,KAAK,EAAEwC,GAAG,CAACxC,KAAK,CAAC;IAClCC,IAAI,CAACV,IAAI,CAAC8C,MAAM,CAACU,MAAM,EAAEP,GAAG,CAACO,MAAM,CAAC;IACpC9C,IAAI,CAACV,IAAI,CAAC8C,MAAM,CAACW,kBAAkB,EAAER,GAAG,CAACQ,kBAAkB,CAAC;AAC5DX,IAAAA,MAAM,CAAChF,SAAS,GAAGmF,GAAG,CAACnF,SAAS;AAChCgF,IAAAA,MAAM,CAAC7D,SAAS,GAAGgE,GAAG,CAAChE,SAAS;AAChC6D,IAAAA,MAAM,CAACY,SAAS,GAAGT,GAAG,CAACS,SAAS;AAChC,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE/B,EAAAA,yBAAyBA,GACzB;IACE,MAAMzE,MAAM,GAAG,IAAI,CAACD,UAAU,EAAE,EAAEC,MAAM;AACxC,IAAA,IAAI,CAACP,KAAK,CAACC,OAAO,CAACM,MAAM,CAAC,EAC1B;MACE,MAAM,IAAIZ,KAAK,CACb,sEAAsE,GACpE,mEAAmE,GACnE,2CACJ,CAAC;AACH,IAAA;AACA,IAAA,OAAOY,MAAM;AACf,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEyG,EAAAA,qBAAqBA,CAAC7F,SAAS,GAAG,CAAC,EACnC;AACE;AACA;AACA;AACA;IACA,MAAMC,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;IAEnD,OAAOC,IAAI,EAAE6F,IAAI,IAAI7F,IAAI,EAAE8F,cAAc,IAAI,EAAE;AACjD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,QAAQA,GACR;AACE,IAAA,MAAMxC,qBAAqB,CACzB,gBAAgB,EAChB,UAAU,EACV,wFACF,CAAC;AACH,EAAA;AAEA,EAAA,OAAOlF,OAAO,GAAG2H,mBAAmB,CAACC,QAAQ;;AAE7C;AACA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOC,iBAAiBA,CAACC,GAAG,EAAExG,KAAK,EAAEyG,KAAK,EAC1C;AACE,IAAA,MAAMnG,KAAK,GAAGkG,GAAG,EAAElG,KAAK,IAAI,IAAI;AAChC,IAAA,MAAMoG,SAAS,GAAGpG,KAAK,EAAEb,MAAM,IAAI,CAAC;IAEpC,IAAI,CAACiH,SAAS,IAAI1G,KAAK,IAAI0G,SAAS,EAAE,OAAO,CAAC;AAE9C,IAAA,MAAMC,GAAG,GAAG3G,KAAK,GAAGyG,KAAK,GAAGC,SAAS,GAAGA,SAAS,GAAG1G,KAAK,GAAGyG,KAAK;IAEjE,IAAIG,cAAc,GAAG,CAAC;IAEtB,KAAK,IAAIC,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGF,GAAG,EAAEE,MAAM,EAAE,EAC3C;MACED,cAAc,IAAI7I,cAAc,CAAC+I,qBAAqB,CAACxG,KAAK,CAACN,KAAK,GAAG6G,MAAM,CAAC,CAAC;AAC/E,IAAA;AAEA,IAAA,OAAOD,cAAc;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOE,qBAAqBA,CAACnF,IAAI,EACjC;IACE,OAAOA,IAAI,EAAEiF,cAAc,IAAIjF,IAAI,EAAEoF,YAAY,IAAI,CAAC;AACxD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,iBAAiBA,CAACrF,IAAI,EAC7B;IACE,IAAIA,IAAI,EAAEsF,UAAU,KAAKjI,SAAS,EAAE,OAAO2C,IAAI,CAACsF,UAAU;IAC1D,IAAItF,IAAI,EAAEuF,YAAY,KAAKlI,SAAS,EAAE,OAAO2C,IAAI,CAACuF,YAAY,GAAG,CAAC;AAElE,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,oBAAoBA,CAACX,GAAG,EAC/B;IACE,IAAIA,GAAG,EAAEI,cAAc,KAAK5H,SAAS,EAAE,OAAOwH,GAAG,CAACI,cAAc;IAEhE,MAAMQ,MAAM,GAAGZ,GAAG,EAAEa,EAAE,EAAED,MAAM,IAAI,CAAC;IACnC,MAAME,IAAI,GAAGd,GAAG,EAAEa,EAAE,EAAEC,IAAI,IAAI,CAAC;AAE/B,IAAA,IAAIF,MAAM,GAAG,CAAC,IAAIE,IAAI,GAAG,CAAC,EAAE,OAAOvG,IAAI,CAACwG,KAAK,CAACD,IAAI,GAAGF,MAAM,GAAG,CAAC,CAAC;AAEhE,IAAA,OAAOrJ,cAAc,CAACwI,iBAAiB,CAACC,GAAG,EAAE,CAAC,EAAEA,GAAG,EAAElG,KAAK,EAAEb,MAAM,IAAI,CAAC,CAAC;AAC1E,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOmC,YAAYA,CAACvB,IAAI,EACxB;AACE,IAAA,OAAOA,IAAI,EAAEC,KAAK,IAAID,IAAI,EAAEQ,IAAI,GAAG,CAAC,CAAC,EAAEP,KAAK,IAAI,IAAI;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOwB,SAASA,CAAC0F,KAAK,EACtB;IACE,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;AACpD,IAAA,IAAIA,KAAK,CAAC3F,MAAM,EAAEb,GAAG,IAAIwG,KAAK,CAAC3F,MAAM,EAAEsB,GAAG,EAAE,OAAOqE,KAAK,CAAC3F,MAAM;AAC/D,IAAA,IAAI2F,KAAK,CAACC,SAAS,IAAID,KAAK,CAACE,SAAS,EACtC;MACE,OAAO;QAAE1G,GAAG,EAAEwG,KAAK,CAACC,SAAS;QAAEtE,GAAG,EAAEqE,KAAK,CAACE;OAAW;AACvD,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOtF,SAASA,CAACoF,KAAK,EACtB;IACE,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;IACpD,OAAOA,KAAK,CAACrF,MAAM,IAAIqF,KAAK,CAACG,cAAc,IAAI,IAAI;AACrD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO5F,UAAUA,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,EACxC;AACE,IAAA,IAAI,CAACD,MAAM,IAAI,CAACC,MAAM,EAAE,OAAOG,MAAM;IACrC,IAAI,CAACA,MAAM,IAAI,CAACJ,MAAM,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;IAC/CsB,IAAI,CAACV,IAAI,CAACb,MAAM,EAAEI,MAAM,CAACb,GAAG,CAAC;IAC7BgC,IAAI,CAACV,IAAI,CAACZ,MAAM,EAAEG,MAAM,CAACsB,GAAG,CAAC;AAC7B,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOR,gBAAgBA,CAACtC,IAAI,EAC5B;AACE,IAAA,OAAOA,IAAI,EAAEuH,MAAM,EAAE9D,QAAQ,IACxBzD,IAAI,EAAEqC,SAAS,IACfrC,IAAI,EAAEQ,IAAI,GAAG,CAAC,CAAC,EAAE+G,MAAM,EAAE9D,QAAQ,IACjCzD,IAAI,EAAEQ,IAAI,GAAG,CAAC,CAAC,EAAE6B,SAAS,IAC1B,IAAI;AACX,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOmF,gBAAgBA,CAACnF,SAAS,EACjC;AACE,IAAA,IAAI,CAACA,SAAS,EAAE,OAAO,CAAC;IACxB,OAAO,OAAOA,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,GACnC3B,IAAI,CAACwG,KAAK,CAAC7E,SAAS,CAACjD,MAAM,GAAG,CAAC,CAAC,GAChCiD,SAAS,CAACjD,MAAM;AACtB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOwD,sBAAsBA,CAACf,GAAG,EAAEQ,SAAS,EAAEK,KAAK,EACnD;AACE,IAAA,MAAM0D,KAAK,GAAG,IAAI,CAACoB,gBAAgB,CAACnF,SAAS,CAAC;IAC9C,IAAIoF,KAAK,GAAG,KAAK;IACjB,KAAK,IAAI9H,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGyG,KAAK,EAAEzG,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAAC+H,YAAY,CAAChF,KAAK,EAAEL,SAAS,EAAE1C,KAAK,CAAC,EAAE;MACjD,IAAI,CAAC8H,KAAK,EACV;AACE5F,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1Bb,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1Bb,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1B+E,QAAAA,KAAK,GAAG,IAAI;AACZ,QAAA;AACF,MAAA;AACA5F,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACC,GAAG,CAACkB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACC,GAAG,CAACkB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACC,GAAG,CAACkB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACoC,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACoC,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAACoC,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,IAAA;AACA,IAAA,OAAO+E,KAAK;AACd,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOE,sBAAsBA,CAAC9F,GAAG,EAAEQ,SAAS,EAAEK,KAAK,EACnD;AACE,IAAA,MAAM0D,KAAK,GAAG,IAAI,CAACoB,gBAAgB,CAACnF,SAAS,CAAC;IAC9C,IACEoF,KAAK,GAAG,KAAK;AACbG,MAAAA,IAAI,GAAGrH,QAAQ;AACfsH,MAAAA,IAAI,GAAGtH,QAAQ;AACfuH,MAAAA,IAAI,GAAGvH,QAAQ;MACfwH,IAAI,GAAG,CAACxH,QAAQ;MAChByH,IAAI,GAAG,CAACzH,QAAQ;MAChB0H,IAAI,GAAG,CAAC1H,QAAQ;IAElB,KAAK,IAAIZ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGyG,KAAK,EAAEzG,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAAC+H,YAAY,CAAChF,KAAK,EAAEL,SAAS,EAAE1C,KAAK,CAAC,EAAE;MACjDiI,IAAI,GAAGlH,IAAI,CAACC,GAAG,CAACiH,IAAI,EAAElF,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BmF,IAAI,GAAGnH,IAAI,CAACC,GAAG,CAACkH,IAAI,EAAEnF,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BoF,IAAI,GAAGpH,IAAI,CAACC,GAAG,CAACmH,IAAI,EAAEpF,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BqF,IAAI,GAAGrH,IAAI,CAACoC,GAAG,CAACiF,IAAI,EAAErF,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BsF,IAAI,GAAGtH,IAAI,CAACoC,GAAG,CAACkF,IAAI,EAAEtF,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BuF,IAAI,GAAGvH,IAAI,CAACoC,GAAG,CAACmF,IAAI,EAAEvF,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B+E,MAAAA,KAAK,GAAG,IAAI;AACd,IAAA;AACA,IAAA,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;IAExB5F,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC+F,IAAI,GAAGG,IAAI,IAAI,GAAG;IAC5BlG,GAAG,CAAC,CAAC,CAAC,GAAG,CAACgG,IAAI,GAAGG,IAAI,IAAI,GAAG;IAC5BnG,GAAG,CAAC,CAAC,CAAC,GAAG,CAACiG,IAAI,GAAGG,IAAI,IAAI,GAAG;IAC5B,IAAIC,gBAAgB,GAAG,CAAC;IACxB,KAAK,IAAIvI,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGyG,KAAK,EAAEzG,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAAC+H,YAAY,CAAChF,KAAK,EAAEL,SAAS,EAAE1C,KAAK,CAAC,EAAE;MACjD,MACEwI,CAAC,GAAGtG,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;QACrB0F,CAAC,GAAGvG,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;QACrB2F,CAAC,GAAGxG,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACvBwF,MAAAA,gBAAgB,GAAGxH,IAAI,CAACoC,GAAG,CAACoF,gBAAgB,EAAEC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC;AACtE,IAAA;IACAxG,GAAG,CAAC,CAAC,CAAC,GAAGnB,IAAI,CAAC4H,IAAI,CAACJ,gBAAgB,CAAC;AACpC,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO9E,mBAAmBA,CAACvB,GAAG,EAAE7B,IAAI,EAAE0C,KAAK,EAC3C;AACE,IAAA,IAAI,IAAI,CAACiF,sBAAsB,CAAC9F,GAAG,EAAE,IAAI,CAACS,gBAAgB,CAACtC,IAAI,CAAC,EAAE0C,KAAK,CAAC,EAAE,OAAO,IAAI;AACrF,IAAA,MAAMlB,MAAM,GAAG,IAAI,CAACC,SAAS,CAACzB,IAAI,CAAC;AACnC,IAAA,IAAI,CAACwB,MAAM,EAAE,OAAO,KAAK;AACzB2B,IAAAA,IAAI,CAACN,UAAU,CAAChB,GAAG,EAAEL,MAAM,CAACb,GAAG,EAAEa,MAAM,CAACsB,GAAG,CAAC;AAC5C,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOO,aAAaA,CAACrD,IAAI,EAAE8B,MAAM,EACjC;AACE,IAAA,IAAI9B,IAAI,CAAC8B,MAAM,IAAI,OAAO9B,IAAI,CAAC8B,MAAM,CAACyG,GAAG,KAAK,UAAU,EAAEvI,IAAI,CAAC8B,MAAM,CAACyG,GAAG,CAACzG,MAAM,CAAC,CAAC,KAC7E9B,IAAI,CAAC8B,MAAM,GAAG,CAAE,GAAGA,MAAM,CAAE;AAChC,IAAA,IAAI9B,IAAI,CAACsH,cAAc,IAAI,OAAOtH,IAAI,CAACsH,cAAc,CAACiB,GAAG,KAAK,UAAU,EACxE;AACEvI,MAAAA,IAAI,CAACsH,cAAc,CAACiB,GAAG,CAACzG,MAAM,CAAC;AACjC,IAAA,CAAC,MACI,IAAI,gBAAgB,IAAI9B,IAAI,EACjC;AACEA,MAAAA,IAAI,CAACsH,cAAc,GAAG,CAAE,GAAGxF,MAAM,CAAE;AACrC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAO6B,iBAAiBA,CAACxE,MAAM,EAAEsE,QAAQ,EAAEC,SAAS,EAAExC,SAAS,EAC/D;AACE,IAAA,IAAI,CAACsH,iBAAiB,CAAC/E,QAAQ,EAAE,UAAU,CAAC;AAC5C,IAAA,IAAI,CAAC+E,iBAAiB,CAAC9E,SAAS,EAAE,WAAW,CAAC;AAC9C,IAAA,MACE+E,GAAG,GAAGC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACjG,KAAK,EAAE,EAAEgB,QAAQ,EAAEC,SAAS,CAAC;AAClDhB,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;AACpBmG,MAAAA,OAAO,GAAGjG,IAAI,CAACF,KAAK,EAAE;AACtBoG,MAAAA,OAAO,GAAGlG,IAAI,CAACF,KAAK,EAAE;AACtBqG,MAAAA,OAAO,GAAGnG,IAAI,CAACF,KAAK,EAAE;AACtBgD,MAAAA,MAAM,GAAG9C,IAAI,CAACF,KAAK,EAAE;IACvB,IAAIsG,OAAO,GAAG,IAAI;IAClB,IACA;AACE,MAAA,KAAK,IAAIhJ,SAAS,GAAG,CAAC,EAAEA,SAAS,IAAIZ,MAAM,EAAEC,MAAM,IAAI,CAAC,CAAC,EAAEW,SAAS,EAAE,EACtE;AACE,QAAA,MAAMC,IAAI,GAAGb,MAAM,CAACY,SAAS,CAAC;AAC9B,QAAA,MAAMsC,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAACtC,IAAI,CAAC;QAC7C,IAAI,CAACqC,SAAS,EAAE;AAChB,QAAA,MAAM2G,MAAM,GAAGhJ,IAAI,EAAEiJ,OAAO,IAAIjJ,IAAI,EAAEQ,IAAI,GAAG,CAAC,CAAC,EAAEyI,OAAO,IAAI,IAAI;QAChE,IAAIC,WAAW,CAACC,MAAM,CAACH,MAAM,CAAC,IACxBpK,KAAK,CAACC,OAAO,CAACmK,MAAM,CAAC,IAAI,OAAOA,MAAM,CAAC,CAAC,CAAC,KAAK,QAAS,EAC7D;UACE,IAAI9H,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAK,CAAC,EAAE;AACzC6H,UAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACPC,MAAM,EACN,CAAC,EACDhJ,IAAI,EACJD,SAAS,EACTsC,SAAS,EACToB,QAAQ,EACRgF,GAAG,EACH/F,KAAK,EACLkG,OAAO,EACPC,OAAO,EACPC,OAAO,EACPrD,MACF,CAAC;AACD,UAAA;AACF,QAAA;AACA,QAAA,IAAI7G,KAAK,CAACC,OAAO,CAACmK,MAAM,CAAC,EACzB;AACE,UAAA,KAAK,IAAIK,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGL,MAAM,CAAC5J,MAAM,EAAEiK,UAAU,EAAE,EACjE;YACE,IAAInI,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAKmI,UAAU,EAAE;AAClD,YAAA,MAAMC,KAAK,GAAGN,MAAM,CAACK,UAAU,CAAC,EAAEC,KAAK,IAAIN,MAAM,CAACK,UAAU,CAAC,EAAEJ,OAAO,IAAI,EAAE;AAC5EF,YAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACPO,KAAK,EACLD,UAAU,EACVrJ,IAAI,EACJD,SAAS,EACTsC,SAAS,EACToB,QAAQ,EACRgF,GAAG,EACH/F,KAAK,EACLkG,OAAO,EACPC,OAAO,EACPC,OAAO,EACPrD,MACF,CAAC;AACH,UAAA;AACA,UAAA;AACF,QAAA;QACA,IAAIvE,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAK,CAAC,EACvC;AACE6H,UAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACP,IAAI,EACJ,CAAC,EACD/I,IAAI,EACJD,SAAS,EACTsC,SAAS,EACToB,QAAQ,EACRgF,GAAG,EACH/F,KAAK,EACLkG,OAAO,EACPC,OAAO,EACPC,OAAO,EACPrD,MACF,CAAC;AACH,QAAA;AACF,MAAA;MACA,IAAIsD,OAAO,EAAE,OAAOA,OAAO;MAC3B,MAAMQ,WAAW,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;MAC/B,OAAO;AACLrE,QAAAA,GAAG,EAAE,KAAK;QACVS,SAAS,EAAE,CAAC,CAAC;AACblC,QAAAA,QAAQ,EAAE8F,WAAW;AACrB7G,QAAAA,KAAK,EAAE6G,WAAW;AAClB9D,QAAAA,MAAM,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACnBC,QAAAA,kBAAkB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC/BH,QAAAA,QAAQ,EAAEhF,QAAQ;QAClBR,SAAS,EAAE,CAAC,CAAC;AACbmB,QAAAA;OACD;AACH,IAAA,CAAC,SAED;AACEyB,MAAAA,IAAI,CAACK,OAAO,CAACyC,MAAM,CAAC;AACpB9C,MAAAA,IAAI,CAACK,OAAO,CAAC8F,OAAO,CAAC;AACrBnG,MAAAA,IAAI,CAACK,OAAO,CAAC6F,OAAO,CAAC;AACrBlG,MAAAA,IAAI,CAACK,OAAO,CAAC4F,OAAO,CAAC;AACrBjG,MAAAA,IAAI,CAACK,OAAO,CAACN,KAAK,CAAC;AACnBgG,MAAAA,IAAI,CAAC1F,OAAO,CAACyF,GAAG,CAAC;AACnB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOD,iBAAiBA,CAACrB,KAAK,EAAErJ,IAAI,EACpC;AACE,IAAA,IAAI,CAACqJ,KAAK,IACLA,KAAK,CAAC/H,MAAM,GAAG,CAAC,IAChB,CAACQ,MAAM,CAAC4J,QAAQ,CAACrC,KAAK,CAAC,CAAC,CAAC,CAAC,IAC1B,CAACvH,MAAM,CAAC4J,QAAQ,CAACrC,KAAK,CAAC,CAAC,CAAC,CAAC,IAC1B,CAACvH,MAAM,CAAC4J,QAAQ,CAACrC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC/B;AACE,MAAA,MAAM,IAAI/E,SAAS,CAAC,CAAA,mBAAA,EAAsBtE,IAAI,qCAAqC,CAAC;AACtF,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOsL,cAAcA,CACnBL,OAAO,EACPO,KAAK,EACLpI,SAAS,EACTlB,IAAI,EACJD,SAAS,EACTsC,SAAS,EACToH,SAAS,EACThB,GAAG,EACH/F,KAAK,EACLkG,OAAO,EACPC,OAAO,EACPC,OAAO,EACPrD,MAAM,EAER;IACE,MAAMW,KAAK,GAAGkD,KAAK,EAAElK,MAAM,IAAI,IAAI,CAACoI,gBAAgB,CAACnF,SAAS,CAAC;AAC/D,IAAA,KAAK,IAAI1C,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,GAAGyG,KAAK,EAAEzG,KAAK,IAAI,CAAC,EACjD;MACE,MACE+J,YAAY,GAAGJ,KAAK,GAAGA,KAAK,CAAC3J,KAAK,CAAC,GAAGA,KAAK;AAC3CgK,QAAAA,YAAY,GAAGL,KAAK,GAAGA,KAAK,CAAC3J,KAAK,GAAG,CAAC,CAAC,GAAGA,KAAK,GAAG,CAAC;AACnDiK,QAAAA,YAAY,GAAGN,KAAK,GAAGA,KAAK,CAAC3J,KAAK,GAAG,CAAC,CAAC,GAAGA,KAAK,GAAG,CAAC;MACrD,IAAI,CAAC,IAAI,CAAC+H,YAAY,CAACkB,OAAO,EAAEvG,SAAS,EAAEqH,YAAY,CAAC,IACnD,CAAC,IAAI,CAAChC,YAAY,CAACmB,OAAO,EAAExG,SAAS,EAAEsH,YAAY,CAAC,IACpD,CAAC,IAAI,CAACjC,YAAY,CAACoB,OAAO,EAAEzG,SAAS,EAAEuH,YAAY,CAAC,IACpD,CAAClB,IAAI,CAACmB,oBAAoB,CAC3BnH,KAAK,EACL+F,GAAG,EACHG,OAAO,EACPC,OAAO,EACPC,OAAO,EACP,KACF,CAAC,EACH;AACE,QAAA;AACF,MAAA;MACA,MAAMvD,QAAQ,GAAG5C,IAAI,CAAC4C,QAAQ,CAACkE,SAAS,EAAE/G,KAAK,CAAC;AAChD,MAAA,IAAIqG,OAAO,IAAIA,OAAO,CAACxD,QAAQ,IAAIA,QAAQ,EAAE;MAC7C,IAAI,CAACwD,OAAO,EACZ;QACE,MAAMQ,WAAW,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC/BR,QAAAA,OAAO,GAAG;AACR7D,UAAAA,GAAG,EAAE,IAAI;UACTS,SAAS,EAAE,EAAE;AACblC,UAAAA,QAAQ,EAAE8F,WAAW;AACrB7G,UAAAA,KAAK,EAAE6G,WAAW;AAClB9D,UAAAA,MAAM,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACnBC,UAAAA,kBAAkB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;UAC/BH,QAAQ;UACRxF,SAAS;AACTmB,UAAAA;SACD;AACH,MAAA;MACA6H,OAAO,CAACpD,SAAS,GAAG,IAAI,CAACmE,gBAAgB,CAAC9J,IAAI,EAAE0J,YAAY,CAAC;MAC7D/G,IAAI,CAACV,IAAI,CAAC8G,OAAO,CAACtF,QAAQ,EAAEf,KAAK,CAAC;AAClC;AACA;AACA;MACAC,IAAI,CAACoH,QAAQ,CAACvM,MAAM,EAAEqL,OAAO,EAAED,OAAO,CAAC;MACvCjG,IAAI,CAACoH,QAAQ,CAACtM,MAAM,EAAEqL,OAAO,EAAEF,OAAO,CAAC;MACvCjG,IAAI,CAACqH,KAAK,CAACjB,OAAO,CAACrD,kBAAkB,EAAElI,MAAM,EAAEC,MAAM,CAAC;MACtDwM,gBAAgB,CAACxE,MAAM,EAAEmD,OAAO,EAAEC,OAAO,EAAEC,OAAO,CAAC;MACnDnG,IAAI,CAACV,IAAI,CAAC8G,OAAO,CAACtD,MAAM,EAAEA,MAAM,CAAC;MACjCsD,OAAO,CAACxD,QAAQ,GAAGA,QAAQ;MAC3BwD,OAAO,CAAChJ,SAAS,GAAGA,SAAS;MAC7BgJ,OAAO,CAAC7H,SAAS,GAAGA,SAAS;AAC/B,IAAA;AACA,IAAA,OAAO6H,OAAO;AAChB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOrB,YAAYA,CAAC7F,GAAG,EAAEQ,SAAS,EAAE1C,KAAK,EACzC;AACE,IAAA,IAAI,CAACC,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK;AACvD,IAAA,IAAI,OAAO0C,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpC;AACE,MAAA,MAAMmE,MAAM,GAAG7G,KAAK,GAAG,CAAC;MACxB,IAAI6G,MAAM,GAAG,CAAC,IAAInE,SAAS,CAACjD,MAAM,EAAE,OAAO,KAAK;AAChDyC,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACmE,MAAM,CAAC;MAC1B3E,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACmE,MAAM,GAAG,CAAC,CAAC;MAC9B3E,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACmE,MAAM,GAAG,CAAC,CAAC;AAC9B,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,MAAM9D,KAAK,GAAGL,SAAS,CAAC1C,KAAK,CAAC;IAC9B,IAAI,CAAC+C,KAAK,IAAIA,KAAK,CAACtD,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;AAC5CyC,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjBb,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjBb,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjB,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOoH,gBAAgBA,CAAC9J,IAAI,EAAEkK,WAAW,EACzC;IACE,MAAMjB,OAAO,GAAGjJ,IAAI,EAAEuH,MAAM,EAAE4C,YAAY,IAAInK,IAAI,EAAEmK,YAAY;AAChE,IAAA,IAAI,CAAClB,OAAO,EAAE,OAAO,EAAE;AACvB,IAAA,IAAI,OAAOA,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAClC;AACE,MAAA,OAAOrJ,MAAM,CAACqJ,OAAO,CAACiB,WAAW,GAAG,CAAC,CAAC,IAAIjB,OAAO,CAACiB,WAAW,CAAC,IAAI,EAAE,CAAC;AACvE,IAAA;AACA,IAAA,OAAOtK,MAAM,CAACqJ,OAAO,CAACiB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,EAAA;AAEF;;AAEA;AACA;AACA;AACAE,SAAS,CAACC,MAAM,CAAC3M,cAAc,EAAE;AAC/B4M,EAAAA,SAAS,EAAE,gBAAgB;AAC3BC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;IACN5M,QAAQ,EAAE,CAAE6M,IAAI,CAACC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAAE;IAC1C/M,cAAc,EAAE,CAAE4M,IAAI,CAACI,KAAK,EAAEF,IAAI,CAACC,SAAS,CAAE;IAC9C9M,IAAI,EAAE,CAAE2M,IAAI,CAACK,MAAM,EAAEH,IAAI,CAACC,SAAS;GACpC;AACDG,EAAAA,OAAO,EAAE;IACP9L,YAAY,EAAE,CAAE+L,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC7C9L,iBAAiB,EAAE,CAAE2L,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClD5L,gBAAgB,EAAE,CAAEyL,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjD1L,eAAe,EAAE,CAAEuL,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAChDrL,gBAAgB,EAAE,CAAEkL,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjD9K,wBAAwB,EAAE,CAAE2K,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACzDtK,UAAU,EAAE,CAAEmK,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC3CrK,iBAAiB,EAAE,CAAEkK,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClDnK,WAAW,EAAE,CAAEgK,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC5ClK,eAAe,EAAE,CAAE+J,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAChDhK,kBAAkB,EAAE,CAAE6J,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACnDxJ,cAAc,EAAE,CAAEqJ,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC/CvJ,iBAAiB,EAAE,CAAEoJ,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClDjJ,iCAAiC,EAAE,CAAE8I,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClElI,yBAAyB,EAAE,CAAE+H,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC1D7H,MAAM,EAAE,CAAE0H,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACE,YAAY,CAAE;IAC5C5H,8BAA8B,EAAE,CAAEwH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC/DtH,kCAAkC,EAAE,CAAEmH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACnEpH,gBAAgB,EAAE,CAAEiH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjDhH,cAAc,EAAE,CAAE6G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC/C/G,gBAAgB,EAAE,CAAE4G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjD9G,6BAA6B,EAAE,CAAE2G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC9DnM,gBAAgB,EAAE,CAAEgM,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;AACjD7G,IAAAA,gBAAgB,EAAE,CAAE0G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,EAAED,IAAI,CAACG,MAAM,CAAC,8HAA8H,CAAC,CAAE;AAC9LtM,IAAAA,cAAc,EAAE,CAAEmM,IAAI,CAACI,MAAM,EAAEJ,IAAI,CAACG,MAAM,CAAC,qMAAqM,CAAC,CAAE;IACnPvG,qBAAqB,EAAE,CAAEkG,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACtDvF,qBAAqB,EAAE,CAAEoF,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACtDpF,QAAQ,EAAE,CAAEiF,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACE,YAAY;AAC9C;AACF,CAAC,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { CjsSchema, io, type } from '#schema';
1
+ import { CjsSchema, edit, type } from '#schema';
2
2
  import { CjsModel } from '#model';
3
3
  import { vec2 } from '#math/vec2';
4
4
  import { vec3 } from '#math/vec3';
@@ -42,16 +42,16 @@ CjsSchema.define(Tr2GrannyIntersectionResult, {
42
42
  className: "Tr2GrannyIntersectionResult",
43
43
  family: "resources",
44
44
  fields: {
45
- position: [io.readwrite, type.vec3],
46
- hasPosition: [io.readwrite, type.boolean],
47
- normal: [io.readwrite, type.vec3],
48
- hasNormal: [io.readwrite, type.boolean],
49
- uv: [io.readwrite, type.vec2],
50
- hasUv: [io.readwrite, type.boolean],
51
- boneIndex: [io.readwrite, type.int32],
52
- hasBoneIndex: [io.readwrite, type.boolean],
53
- meshIndex: [io.readwrite, type.int32],
54
- areaIndex: [io.readwrite, type.int32]
45
+ position: [edit.readwrite, type.vec3],
46
+ hasPosition: [edit.readwrite, type.boolean],
47
+ normal: [edit.readwrite, type.vec3],
48
+ hasNormal: [edit.readwrite, type.boolean],
49
+ uv: [edit.readwrite, type.vec2],
50
+ hasUv: [edit.readwrite, type.boolean],
51
+ boneIndex: [edit.readwrite, type.int32],
52
+ hasBoneIndex: [edit.readwrite, type.boolean],
53
+ meshIndex: [edit.readwrite, type.int32],
54
+ areaIndex: [edit.readwrite, type.int32]
55
55
  }
56
56
  });
57
57
 
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2GrannyIntersectionResult.js","sources":["../../../../../src/resource/geometry/granny/Tr2GrannyIntersectionResult.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGrannyRes.h\r\n// Schema: format-carbon resources/Tr2GrannyIntersectionResult.json; maintained by the runtime resource layer.\r\nimport { CjsSchema, io, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec2 } from \"#math/vec2\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n/** Tr2GrannyIntersectionResult (resources) - maintained from schema shapeHash f0ccc62b.... */\r\nexport class Tr2GrannyIntersectionResult extends CjsModel\r\n{\r\n\r\n /** m_result.position (Vector3) [READWRITE] */\r\n position = vec3.create();\r\n\r\n /** m_result.hasPosition (bool) [READWRITE] */\r\n hasPosition = false;\r\n\r\n /** m_result.normal (Vector3) [READWRITE] */\r\n normal = vec3.create();\r\n\r\n /** m_result.hasNormal (bool) [READWRITE] */\r\n hasNormal = false;\r\n\r\n /** m_result.uv (Vector2) [READWRITE] */\r\n uv = vec2.create();\r\n\r\n /** m_result.hasUv (bool) [READWRITE] */\r\n hasUv = false;\r\n\r\n /** m_result.boneIndex (int32_t) [READWRITE] */\r\n boneIndex = 0;\r\n\r\n /** m_result.hasBoneIndex (bool) [READWRITE] */\r\n hasBoneIndex = false;\r\n\r\n /** m_result.meshIndex (int32_t) [READWRITE] */\r\n meshIndex = 0;\r\n\r\n /** m_result.areaIndex (int32_t) [READWRITE] */\r\n areaIndex = 0;\r\n\r\n}\r\n\r\nCjsSchema.define(Tr2GrannyIntersectionResult, {\r\n className: \"Tr2GrannyIntersectionResult\", family: \"resources\",\r\n fields: {\r\n position: [ io.readwrite, type.vec3 ],\r\n hasPosition: [ io.readwrite, type.boolean ],\r\n normal: [ io.readwrite, type.vec3 ],\r\n hasNormal: [ io.readwrite, type.boolean ],\r\n uv: [ io.readwrite, type.vec2 ],\r\n hasUv: [ io.readwrite, type.boolean ],\r\n boneIndex: [ io.readwrite, type.int32 ],\r\n hasBoneIndex: [ io.readwrite, type.boolean ],\r\n meshIndex: [ io.readwrite, type.int32 ],\r\n areaIndex: [ io.readwrite, type.int32 ]\r\n }\r\n});\r\n"],"names":["Tr2GrannyIntersectionResult","CjsModel","position","vec3","create","hasPosition","normal","hasNormal","uv","vec2","hasUv","boneIndex","hasBoneIndex","meshIndex","areaIndex","CjsSchema","define","className","family","fields","io","readwrite","type","boolean","int32"],"mappings":";;;;;AAAA;AACA;;AAMA;AACO,MAAMA,2BAA2B,SAASC,QAAQ,CACzD;AAEE;AACAC,EAAAA,QAAQ,GAAGC,IAAI,CAACC,MAAM,EAAE;;AAExB;AACAC,EAAAA,WAAW,GAAG,KAAK;;AAEnB;AACAC,EAAAA,MAAM,GAAGH,IAAI,CAACC,MAAM,EAAE;;AAEtB;AACAG,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACAC,EAAAA,EAAE,GAAGC,IAAI,CAACL,MAAM,EAAE;;AAElB;AACAM,EAAAA,KAAK,GAAG,KAAK;;AAEb;AACAC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,YAAY,GAAG,KAAK;;AAEpB;AACAC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,SAAS,GAAG,CAAC;AAEf;AAEAC,SAAS,CAACC,MAAM,CAAChB,2BAA2B,EAAE;AAC5CiB,EAAAA,SAAS,EAAE,6BAA6B;AAAEC,EAAAA,MAAM,EAAE,WAAW;AAC7DC,EAAAA,MAAM,EAAE;IACNjB,QAAQ,EAAE,CAAEkB,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACnB,IAAI,CAAE;IACrCE,WAAW,EAAE,CAAEe,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC3CjB,MAAM,EAAE,CAAEc,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACnB,IAAI,CAAE;IACnCI,SAAS,EAAE,CAAEa,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IACzCf,EAAE,EAAE,CAAEY,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACb,IAAI,CAAE;IAC/BC,KAAK,EAAE,CAAEU,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IACrCZ,SAAS,EAAE,CAAES,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK,CAAE;IACvCZ,YAAY,EAAE,CAAEQ,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC5CV,SAAS,EAAE,CAAEO,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK,CAAE;IACvCV,SAAS,EAAE,CAAEM,EAAE,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK;AACvC;AACF,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"Tr2GrannyIntersectionResult.js","sources":["../../../../../src/resource/geometry/granny/Tr2GrannyIntersectionResult.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGrannyRes.h\r\n// Schema: format-carbon resources/Tr2GrannyIntersectionResult.json; maintained by the runtime resource layer.\r\nimport { CjsSchema, edit, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec2 } from \"#math/vec2\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n/** Tr2GrannyIntersectionResult (resources) - maintained from schema shapeHash f0ccc62b.... */\r\nexport class Tr2GrannyIntersectionResult extends CjsModel\r\n{\r\n\r\n /** m_result.position (Vector3) [READWRITE] */\r\n position = vec3.create();\r\n\r\n /** m_result.hasPosition (bool) [READWRITE] */\r\n hasPosition = false;\r\n\r\n /** m_result.normal (Vector3) [READWRITE] */\r\n normal = vec3.create();\r\n\r\n /** m_result.hasNormal (bool) [READWRITE] */\r\n hasNormal = false;\r\n\r\n /** m_result.uv (Vector2) [READWRITE] */\r\n uv = vec2.create();\r\n\r\n /** m_result.hasUv (bool) [READWRITE] */\r\n hasUv = false;\r\n\r\n /** m_result.boneIndex (int32_t) [READWRITE] */\r\n boneIndex = 0;\r\n\r\n /** m_result.hasBoneIndex (bool) [READWRITE] */\r\n hasBoneIndex = false;\r\n\r\n /** m_result.meshIndex (int32_t) [READWRITE] */\r\n meshIndex = 0;\r\n\r\n /** m_result.areaIndex (int32_t) [READWRITE] */\r\n areaIndex = 0;\r\n\r\n}\r\n\r\nCjsSchema.define(Tr2GrannyIntersectionResult, {\r\n className: \"Tr2GrannyIntersectionResult\", family: \"resources\",\r\n fields: {\r\n position: [ edit.readwrite, type.vec3 ],\r\n hasPosition: [ edit.readwrite, type.boolean ],\r\n normal: [ edit.readwrite, type.vec3 ],\r\n hasNormal: [ edit.readwrite, type.boolean ],\r\n uv: [ edit.readwrite, type.vec2 ],\r\n hasUv: [ edit.readwrite, type.boolean ],\r\n boneIndex: [ edit.readwrite, type.int32 ],\r\n hasBoneIndex: [ edit.readwrite, type.boolean ],\r\n meshIndex: [ edit.readwrite, type.int32 ],\r\n areaIndex: [ edit.readwrite, type.int32 ]\r\n }\r\n});\r\n"],"names":["Tr2GrannyIntersectionResult","CjsModel","position","vec3","create","hasPosition","normal","hasNormal","uv","vec2","hasUv","boneIndex","hasBoneIndex","meshIndex","areaIndex","CjsSchema","define","className","family","fields","edit","readwrite","type","boolean","int32"],"mappings":";;;;;AAAA;AACA;;AAMA;AACO,MAAMA,2BAA2B,SAASC,QAAQ,CACzD;AAEE;AACAC,EAAAA,QAAQ,GAAGC,IAAI,CAACC,MAAM,EAAE;;AAExB;AACAC,EAAAA,WAAW,GAAG,KAAK;;AAEnB;AACAC,EAAAA,MAAM,GAAGH,IAAI,CAACC,MAAM,EAAE;;AAEtB;AACAG,EAAAA,SAAS,GAAG,KAAK;;AAEjB;AACAC,EAAAA,EAAE,GAAGC,IAAI,CAACL,MAAM,EAAE;;AAElB;AACAM,EAAAA,KAAK,GAAG,KAAK;;AAEb;AACAC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,YAAY,GAAG,KAAK;;AAEpB;AACAC,EAAAA,SAAS,GAAG,CAAC;;AAEb;AACAC,EAAAA,SAAS,GAAG,CAAC;AAEf;AAEAC,SAAS,CAACC,MAAM,CAAChB,2BAA2B,EAAE;AAC5CiB,EAAAA,SAAS,EAAE,6BAA6B;AAAEC,EAAAA,MAAM,EAAE,WAAW;AAC7DC,EAAAA,MAAM,EAAE;IACNjB,QAAQ,EAAE,CAAEkB,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACnB,IAAI,CAAE;IACvCE,WAAW,EAAE,CAAEe,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC7CjB,MAAM,EAAE,CAAEc,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACnB,IAAI,CAAE;IACrCI,SAAS,EAAE,CAAEa,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC3Cf,EAAE,EAAE,CAAEY,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACb,IAAI,CAAE;IACjCC,KAAK,EAAE,CAAEU,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IACvCZ,SAAS,EAAE,CAAES,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK,CAAE;IACzCZ,YAAY,EAAE,CAAEQ,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC9CV,SAAS,EAAE,CAAEO,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK,CAAE;IACzCV,SAAS,EAAE,CAAEM,IAAI,CAACC,SAAS,EAAEC,IAAI,CAACE,KAAK;AACzC;AACF,CAAC,CAAC;;;;"}
@@ -61,6 +61,15 @@ export { Tr2TexturePipelineStepLoad } from './texture/Tr2TexturePipelineStepLoad
61
61
  export { Tr2TexturePipelineStepPack } from './texture/Tr2TexturePipelineStepPack.js';
62
62
  export { TriTextureRes } from './texture/TriTextureRes.js';
63
63
  export { ColorPrefix, IsSolidColorTexturePath, ParseColor, RasterizeSolidColor } from './texture/solidColorTexture.js';
64
+ export { AudioMetadata } from './video/AudioMetadata.js';
65
+ export { IAudioSink } from './video/IAudioSink.js';
66
+ export { IEncodedFrame } from './video/IEncodedFrame.js';
67
+ export { IVideoContainerParser } from './video/IVideoContainerParser.js';
68
+ export { IVideoDecoder } from './video/IVideoDecoder.js';
69
+ export { PcmFrame } from './video/PcmFrame.js';
70
+ export { VideoFrame } from './video/VideoFrame.js';
71
+ export { VideoMetadata } from './video/VideoMetadata.js';
72
+ export { DecoderError, ParserError, StreamType } from './video/enums.js';
64
73
  export { CjsResourceProbe } from './format/CjsResourceProbe.js';
65
74
  export { ResourcePayloadType, ResourcePayloadValues, validateAudioPayload, validateRgbaPayload, validateTexturePayload, validateVideoPayload } from './format/payloadContract.js';
66
75
  export { CjsFormat, CjsFormatOutputRole, CjsFormatReadMode } from './format/CjsFormat.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -78,7 +78,6 @@ class Tr2EffectRes extends CjsResource {
78
78
  constructor(values = null) {
79
79
  super();
80
80
  this.SetValues(values || {}, {
81
- markDirty: false,
82
81
  skipUpdate: true,
83
82
  skipEvents: true
84
83
  });
@@ -381,10 +380,10 @@ CjsSchema.define(Tr2EffectRes, {
381
380
  className: "Tr2EffectRes",
382
381
  family: "resources",
383
382
  methods: {
384
- GetShader: [carbon.method, impl.adapted, impl.reason("Carbon reads the selected body from the compiled effect bytes and registers renderer handles; CarbonEngineJS reads the same bytes and stops at the device-free graph, leaving GPU realization to the engine.")],
383
+ GetShader: [carbon.method, impl.adapted, impl.reason("Carbon interns the selected body's handles during the read (Tr2EffectDescription.cpp:587-666); ours are interned later at the Trinity boundary, so this returns the hydrated shader graph rather than an already-stamped one.")],
385
384
  GetShaderByIndex: [impl.custom, impl.reason("Carbon selects compiled bodies through GetShader; CarbonEngineJS exposes exact package-index hydration for deterministic package consumers and tests.")],
386
385
  GetPermutationDescription: [carbon.method, impl.adapted, impl.reason("Carbon exposes a Python tuple through Blue; CarbonEngineJS returns a JSON-friendly plain axis description.")],
387
- ReleaseResources: [carbon.method, impl.adapted, impl.reason("Backend resources are engine-owned; the resource-side release clears only hydrated device-free shader graphs.")]
386
+ ReleaseResources: [carbon.method, impl.adapted, impl.reason("Clears the hydrated shader graphs only. Carbon also does SetGood(false), SetPrepared(false), CancelPendingLoad() and NotifyReleaseCachedData(), and takes a TriStorage mask; not ported yet, Tr2EffectRes.cpp:328-341.")]
388
387
  }
389
388
  });
390
389
 
@@ -1 +1 @@
1
- {"version":3,"file":"Tr2EffectRes.js","sources":["../../../../src/resource/shader/Tr2EffectRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\n// Source: trinity/trinity/Resources/Tr2EffectRes.cpp\n// Source: trinity/trinity/Resources/Tr2EffectRes_Blue.cpp\nimport { CjsSchema, carbon, impl, type } from \"#schema\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { validateResourcePayload } from \"../resourceBoundary.js\";\nimport { CjsCarbonEffectReader } from \"../format/carbonEffect/CjsCarbonEffectReader.js\";\nimport { Tr2Shader } from \"./Tr2Shader.js\";\nimport { ResourceRequirement } from \"../ResourceRequirement.js\";\nimport { EffectCarriesBackendBlock } from \"#utils/effectPath\";\n\nconst globalEffectOptions = [];\n\n/**\n * Tr2EffectRes resource record.\n *\n * This stores effect/shader payload facts. Engine-gpu decides shader module,\n * pipeline, bind group, and sampler realization.\n */\nexport class Tr2EffectRes extends CjsResource\n{\n\n #shaders = new Map();\n\n #reader = null;\n\n /** Whether this container carries per-pass backend blocks; null when unknown. */\n #carriesBackendBlock = null;\n\n /**\n * Read a Carbon effect container and take ownership of its reader.\n *\n * Carbon's `DoLoad` (`Tr2EffectRes.cpp:137`) does exactly this work: it clears\n * the previous state, then fills `m_version`, the string table, the permutation\n * axes and the offset table from the file, and stops there. Bodies are read\n * later, one at a time, by `GetShader`. The one difference is where the bytes\n * come from — Carbon locks its own data stream, and this takes them as an\n * argument.\n *\n * The container is parsed once, here: version, arena, permutation axes and\n * offset table. Bodies are not. Each one is decoded on first request and\n * memoised, by seeking the retained reader rather than re-reading the header —\n * a container with 512 permutations that renders two of them parses two bodies.\n *\n * The reader is retained rather than discarded because a body cannot be read\n * without it: strings are offsets into the container's arena, which lives in\n * the header this method consumed.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} data Container bytes.\n * @param {object|null} options Model values applied after the read.\n * @returns {Tr2EffectRes}\n */\n DoLoad(data, options = null)\n {\n const reader = new CjsCarbonEffectReader(data);\n this.#shaders.clear();\n this.#reader = reader;\n\n // WHAT KIND OF SHADER WAS THIS. The path names the tree the bytes came\n // from, because backend selection is by resource path, and the tree decides\n // whether a body carries a per-pass backend block. Recording it here is\n // what lets every later read skip the reader's parse-twice fallback.\n //\n // Null for a container that arrived without a path - tooling and tests do -\n // and the reader then detects for itself, which is what that fallback is\n // for.\n this.#carriesBackendBlock = EffectCarriesBackendBlock(this.GetPath());\n super.SetPayload({\n permutations: reader.permutations.map(axis => ({\n name: axis.name.value,\n options: axis.options.map(option => option.value),\n defaultOption: axis.defaultOption,\n description: axis.description.value,\n type: axis.type\n }))\n });\n this.SetValues(options || {});\n return this;\n }\n\n /** Creates a Tr2EffectRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain shader/effect payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {Tr2EffectRes}\n */\n SetPayload(payload = null, options = null)\n {\n // Container bytes route to DoLoad rather than being rejected as a malformed\n // payload. The resource manager publishes by calling SetPayload, and this\n // class is the one resource whose payload is DERIVED from bytes it must go\n // on holding: DoLoad retains the reader so bodies decode one at a time, as\n // Carbon's Tr2EffectRes.cpp:137 does. Without this the manager would load\n // the bytes and the publish step would immediately clear the reader below,\n // leaving GetShaderByIndex returning null for a resource that reported\n // good. That is the whole reason this class had bypassed the manager.\n if (payload instanceof ArrayBuffer || ArrayBuffer.isView(payload))\n {\n return this.DoLoad(payload, options);\n }\n\n if (payload === null)\n {\n this.#shaders.clear();\n this.#reader = null;\n this.#carriesBackendBlock = null;\n super.SetPayload(null);\n return this;\n }\n validateResourcePayload(\n \"Tr2EffectRes\",\n payload,\n validateEffectPayload\n );\n this.#shaders.clear();\n this.#reader = null;\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Select and hydrate one canonical shader from the complete permutation\n * graph exposed by a Carbon WebGL/Carbon WebGPU raw package.\n *\n * Global options have Carbon-compatible precedence over caller options.\n * Unknown option values retain the authored default.\n *\n * @param {Array<object>|Map<string,string>} options Local name/value choices.\n * @param {number|null} count Number of local entries to consider.\n * @returns {Tr2Shader|null} Selected device-free shader reflection.\n */\n GetShader(options = [], count = null)\n {\n const axes = getPermutationAxes(this.GetPayload());\n const localOptions = normalizeShaderOptions(options);\n const localCount = Number.isSafeInteger(count)\n ? Math.max(0, Math.min(count, localOptions.length))\n : localOptions.length;\n let multiplier = 1;\n let index = 0;\n\n for (const axis of axes)\n {\n let selectedIndex = axis.defaultOption;\n const globalOption = globalEffectOptions.find(\n option => option.name === axis.name\n );\n if (globalOption)\n {\n const requestedIndex = axis.options.indexOf(globalOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n else\n {\n for (let optionIndex = 0; optionIndex < localCount; optionIndex += 1)\n {\n const localOption = localOptions[optionIndex];\n if (localOption.name !== axis.name)\n {\n continue;\n }\n const requestedIndex = axis.options.indexOf(localOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n }\n\n index += selectedIndex * multiplier;\n multiplier *= axis.options.length;\n }\n\n return this.GetShaderByIndex(index);\n }\n\n /**\n * Hydrate one exact permutation-table index and cache the resulting runtime\n * graph for this payload.\n *\n * @param {number} index Exact permutation index.\n * @returns {Tr2Shader|null} Canonical shader or null when reflection is absent.\n */\n /**\n * The container bytes this resource loaded, or null once released.\n *\n * The reader already holds them - a body cannot be read without the arena\n * they live in - so a backend that must read the same container reads THESE\n * rather than fetching the file a second time.\n *\n * @returns {Uint8Array|null}\n */\n GetContainerBytes()\n {\n return this.#reader?.bytes ?? null;\n }\n\n /**\n * Whether this container's bodies carry a per-pass backend block, or null\n * when the resource arrived with no path to tell.\n *\n * @returns {boolean|null}\n */\n CarriesBackendBlock()\n {\n return this.#carriesBackendBlock;\n }\n\n /**\n * One of the effect's shaders by position.\n *\n * @param {number} index A non-negative index into the shader list.\n * @returns {object|null} The shader, or null when the index is past the end.\n */\n GetShaderByIndex(index)\n {\n if (!Number.isSafeInteger(index) || index < 0)\n {\n throw new TypeError(\n \"Tr2EffectRes shader index must be a non-negative safe integer\"\n );\n }\n if (this.#shaders.has(index))\n {\n return this.#shaders.get(index);\n }\n\n const payload = this.GetPayload();\n const variantCount = getPermutationVariantCount(payload);\n if (variantCount !== null && index >= variantCount)\n {\n return null;\n }\n\n if (!this.#reader)\n {\n return null;\n }\n\n const shader = Tr2Shader.fromCarbonBinary(this.#reader, index, this.#carriesBackendBlock);\n this.#shaders.set(index, shader);\n return shader;\n }\n\n /**\n * Return a small JSON-friendly permutation description.\n *\n * @returns {Array<*>}\n */\n GetPermutationDescription()\n {\n const payload = this.GetPayload();\n const axes = getPermutationAxes(payload);\n if (!axes.length && Array.isArray(payload?.permutations))\n {\n return payload.permutations.map(permutation => ({ ...permutation }));\n }\n return axes.map(axis => ({\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: axis.description,\n type: axis.type\n }));\n }\n\n /**\n * Drop hydrated shader graphs while retaining the validated CPU payload.\n */\n ReleaseResources()\n {\n this.#shaders.clear();\n }\n\n /** Release the payload and every shader graph hydrated from it. */\n ReleasePayload()\n {\n this.#shaders.clear();\n this.#reader = null;\n return super.ReleasePayload();\n }\n\n static payload = ResourceRequirement.SHADER;\n\n}\n\n/**\n * Validate an attached permutation payload.\n *\n * Carbon has no equivalent: it fills `m_permutations` from the file and never\n * accepts one from a caller. This exists only so an attached payload cannot\n * silently produce a wrong permutation index, and it checks the one thing the\n * index arithmetic depends on - that every axis has options and a default that\n * addresses one of them.\n *\n * @param {object} payload Attached payload.\n */\nfunction validateEffectPayload(payload)\n{\n if (!Array.isArray(payload.permutations))\n {\n throw new TypeError(\n \"Tr2EffectRes payload requires a permutations array\"\n );\n }\n payload.permutations.forEach(normalizePermutationAxis);\n}\n\n/**\n * The permutation axes an attached payload declares.\n *\n * @param {object|null} payload Attached payload.\n * @returns {Array<object>} Normalized axes, empty when there are none.\n */\nfunction getPermutationAxes(payload)\n{\n if (!Array.isArray(payload?.permutations))\n {\n return [];\n }\n return payload.permutations.map(normalizePermutationAxis);\n}\n\n/**\n * Normalize and validate one permutation axis.\n *\n * @param {object} axis Candidate axis.\n * @returns {object} Owned, validated axis.\n */\nfunction normalizePermutationAxis(axis)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || typeof axis.name !== \"string\" || !axis.name\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.some(option => typeof option !== \"string\" || !option)\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length)\n {\n throw new TypeError(\"Tr2EffectRes permutation axis is malformed\");\n }\n return {\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: String(axis.description ?? \"\"),\n type: Number(axis.type ?? 0)\n };\n}\n\n/**\n * The number of permutations the axes describe - the product of their option\n * counts, which is also the number of offset-table rows a dense container has.\n *\n * @param {object|null} payload Attached payload.\n * @returns {number|null} Permutation count, or null when no axes are declared.\n */\nfunction getPermutationVariantCount(payload)\n{\n const axes = getPermutationAxes(payload);\n if (!axes.length)\n {\n return null;\n }\n return axes.reduce((count, axis) => count * axis.options.length, 1);\n}\n\n/**\n * Return an owned snapshot of the current global option overrides.\n *\n * Carbon returns a const reference to the live vector; a JS caller cannot be\n * held to that, so this copies rather than exposing the array for mutation.\n *\n * @returns {Array<{name:string,value:string}>} Global option choices.\n */\nexport function GetGlobalEffectOptions()\n{\n return globalEffectOptions.map(option => ({ ...option }));\n}\n\n/**\n * Merge Carbon-style global effect option overrides.\n *\n * An empty value removes the override. Existing Tr2EffectRes shader caches\n * remain valid objects; callers rebuild effects to request the new selection.\n *\n * @param {Array<object>|Map<string,string>} changes Option changes.\n */\nexport function ModifyGlobalEffectOptions(changes = [])\n{\n for (const change of normalizeShaderOptions(changes))\n {\n const index = globalEffectOptions.findIndex(\n option => option.name === change.name\n );\n if (!change.value)\n {\n if (index >= 0)\n {\n globalEffectOptions.splice(index, 1);\n }\n }\n else if (index >= 0)\n {\n globalEffectOptions[index] = change;\n }\n else\n {\n globalEffectOptions.push(change);\n }\n }\n}\n\nfunction normalizeShaderOptions(options)\n{\n if (options instanceof Map)\n {\n return Array.from(options, ([ name, value ]) => ({\n name: String(name),\n value: String(value)\n }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map(option => ({\n name: String(option?.name ?? \"\"),\n value: String(option?.value ?? \"\")\n }));\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectRes, {\n className: \"Tr2EffectRes\",\n family: \"resources\",\n methods: {\n GetShader: [ carbon.method, impl.adapted, impl.reason(\"Carbon reads the selected body from the compiled effect bytes and registers renderer handles; CarbonEngineJS reads the same bytes and stops at the device-free graph, leaving GPU realization to the engine.\") ],\n GetShaderByIndex: [ impl.custom, impl.reason(\"Carbon selects compiled bodies through GetShader; CarbonEngineJS exposes exact package-index hydration for deterministic package consumers and tests.\") ],\n GetPermutationDescription: [ carbon.method, impl.adapted, impl.reason(\"Carbon exposes a Python tuple through Blue; CarbonEngineJS returns a JSON-friendly plain axis description.\") ],\n ReleaseResources: [ carbon.method, impl.adapted, impl.reason(\"Backend resources are engine-owned; the resource-side release clears only hydrated device-free shader graphs.\") ]\n }\n});\n"],"names":["globalEffectOptions","Tr2EffectRes","CjsResource","Map","DoLoad","data","options","reader","CjsCarbonEffectReader","clear","EffectCarriesBackendBlock","GetPath","SetPayload","permutations","map","axis","name","value","option","defaultOption","description","type","SetValues","constructor","values","markDirty","skipUpdate","skipEvents","payload","ArrayBuffer","isView","validateResourcePayload","validateEffectPayload","GetShader","count","axes","getPermutationAxes","GetPayload","localOptions","normalizeShaderOptions","localCount","Number","isSafeInteger","Math","max","min","length","multiplier","index","selectedIndex","globalOption","find","requestedIndex","indexOf","optionIndex","localOption","GetShaderByIndex","GetContainerBytes","bytes","CarriesBackendBlock","TypeError","has","get","variantCount","getPermutationVariantCount","shader","Tr2Shader","fromCarbonBinary","set","GetPermutationDescription","Array","isArray","permutation","ReleaseResources","ReleasePayload","ResourceRequirement","SHADER","forEach","normalizePermutationAxis","some","String","reduce","GetGlobalEffectOptions","ModifyGlobalEffectOptions","changes","change","findIndex","splice","push","from","CjsSchema","define","className","family","methods","carbon","method","impl","adapted","reason","custom"],"mappings":"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"}
1
+ {"version":3,"file":"Tr2EffectRes.js","sources":["../../../../src/resource/shader/Tr2EffectRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/Tr2EffectRes.h\n// Source: trinity/trinity/Resources/Tr2EffectRes.cpp\n// Source: trinity/trinity/Resources/Tr2EffectRes_Blue.cpp\nimport { CjsSchema, carbon, impl, type } from \"#schema\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport { validateResourcePayload } from \"../resourceBoundary.js\";\nimport { CjsCarbonEffectReader } from \"../format/carbonEffect/CjsCarbonEffectReader.js\";\nimport { Tr2Shader } from \"./Tr2Shader.js\";\nimport { ResourceRequirement } from \"../ResourceRequirement.js\";\nimport { EffectCarriesBackendBlock } from \"#utils/effectPath\";\n\nconst globalEffectOptions = [];\n\n/**\n * Tr2EffectRes resource record.\n *\n * This stores effect/shader payload facts. Engine-gpu decides shader module,\n * pipeline, bind group, and sampler realization.\n */\nexport class Tr2EffectRes extends CjsResource\n{\n\n #shaders = new Map();\n\n #reader = null;\n\n /** Whether this container carries per-pass backend blocks; null when unknown. */\n #carriesBackendBlock = null;\n\n /**\n * Read a Carbon effect container and take ownership of its reader.\n *\n * Carbon's `DoLoad` (`Tr2EffectRes.cpp:137`) does exactly this work: it clears\n * the previous state, then fills `m_version`, the string table, the permutation\n * axes and the offset table from the file, and stops there. Bodies are read\n * later, one at a time, by `GetShader`. The one difference is where the bytes\n * come from — Carbon locks its own data stream, and this takes them as an\n * argument.\n *\n * The container is parsed once, here: version, arena, permutation axes and\n * offset table. Bodies are not. Each one is decoded on first request and\n * memoised, by seeking the retained reader rather than re-reading the header —\n * a container with 512 permutations that renders two of them parses two bodies.\n *\n * The reader is retained rather than discarded because a body cannot be read\n * without it: strings are offsets into the container's arena, which lives in\n * the header this method consumed.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} data Container bytes.\n * @param {object|null} options Model values applied after the read.\n * @returns {Tr2EffectRes}\n */\n DoLoad(data, options = null)\n {\n const reader = new CjsCarbonEffectReader(data);\n this.#shaders.clear();\n this.#reader = reader;\n\n // WHAT KIND OF SHADER WAS THIS. The path names the tree the bytes came\n // from, because backend selection is by resource path, and the tree decides\n // whether a body carries a per-pass backend block. Recording it here is\n // what lets every later read skip the reader's parse-twice fallback.\n //\n // Null for a container that arrived without a path - tooling and tests do -\n // and the reader then detects for itself, which is what that fallback is\n // for.\n this.#carriesBackendBlock = EffectCarriesBackendBlock(this.GetPath());\n super.SetPayload({\n permutations: reader.permutations.map(axis => ({\n name: axis.name.value,\n options: axis.options.map(option => option.value),\n defaultOption: axis.defaultOption,\n description: axis.description.value,\n type: axis.type\n }))\n });\n this.SetValues(options || {});\n return this;\n }\n\n /** Creates a Tr2EffectRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain shader/effect payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {Tr2EffectRes}\n */\n SetPayload(payload = null, options = null)\n {\n // Container bytes route to DoLoad rather than being rejected as a malformed\n // payload. The resource manager publishes by calling SetPayload, and this\n // class is the one resource whose payload is DERIVED from bytes it must go\n // on holding: DoLoad retains the reader so bodies decode one at a time, as\n // Carbon's Tr2EffectRes.cpp:137 does. Without this the manager would load\n // the bytes and the publish step would immediately clear the reader below,\n // leaving GetShaderByIndex returning null for a resource that reported\n // good. That is the whole reason this class had bypassed the manager.\n if (payload instanceof ArrayBuffer || ArrayBuffer.isView(payload))\n {\n return this.DoLoad(payload, options);\n }\n\n if (payload === null)\n {\n this.#shaders.clear();\n this.#reader = null;\n this.#carriesBackendBlock = null;\n super.SetPayload(null);\n return this;\n }\n validateResourcePayload(\n \"Tr2EffectRes\",\n payload,\n validateEffectPayload\n );\n this.#shaders.clear();\n this.#reader = null;\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Select and hydrate one canonical shader from the complete permutation\n * graph exposed by a Carbon WebGL/Carbon WebGPU raw package.\n *\n * Global options have Carbon-compatible precedence over caller options.\n * Unknown option values retain the authored default.\n *\n * @param {Array<object>|Map<string,string>} options Local name/value choices.\n * @param {number|null} count Number of local entries to consider.\n * @returns {Tr2Shader|null} Selected device-free shader reflection.\n */\n GetShader(options = [], count = null)\n {\n const axes = getPermutationAxes(this.GetPayload());\n const localOptions = normalizeShaderOptions(options);\n const localCount = Number.isSafeInteger(count)\n ? Math.max(0, Math.min(count, localOptions.length))\n : localOptions.length;\n let multiplier = 1;\n let index = 0;\n\n for (const axis of axes)\n {\n let selectedIndex = axis.defaultOption;\n const globalOption = globalEffectOptions.find(\n option => option.name === axis.name\n );\n if (globalOption)\n {\n const requestedIndex = axis.options.indexOf(globalOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n else\n {\n for (let optionIndex = 0; optionIndex < localCount; optionIndex += 1)\n {\n const localOption = localOptions[optionIndex];\n if (localOption.name !== axis.name)\n {\n continue;\n }\n const requestedIndex = axis.options.indexOf(localOption.value);\n if (requestedIndex >= 0)\n {\n selectedIndex = requestedIndex;\n }\n }\n }\n\n index += selectedIndex * multiplier;\n multiplier *= axis.options.length;\n }\n\n return this.GetShaderByIndex(index);\n }\n\n /**\n * Hydrate one exact permutation-table index and cache the resulting runtime\n * graph for this payload.\n *\n * @param {number} index Exact permutation index.\n * @returns {Tr2Shader|null} Canonical shader or null when reflection is absent.\n */\n /**\n * The container bytes this resource loaded, or null once released.\n *\n * The reader already holds them - a body cannot be read without the arena\n * they live in - so a backend that must read the same container reads THESE\n * rather than fetching the file a second time.\n *\n * @returns {Uint8Array|null}\n */\n GetContainerBytes()\n {\n return this.#reader?.bytes ?? null;\n }\n\n /**\n * Whether this container's bodies carry a per-pass backend block, or null\n * when the resource arrived with no path to tell.\n *\n * @returns {boolean|null}\n */\n CarriesBackendBlock()\n {\n return this.#carriesBackendBlock;\n }\n\n /**\n * One of the effect's shaders by position.\n *\n * @param {number} index A non-negative index into the shader list.\n * @returns {object|null} The shader, or null when the index is past the end.\n */\n GetShaderByIndex(index)\n {\n if (!Number.isSafeInteger(index) || index < 0)\n {\n throw new TypeError(\n \"Tr2EffectRes shader index must be a non-negative safe integer\"\n );\n }\n if (this.#shaders.has(index))\n {\n return this.#shaders.get(index);\n }\n\n const payload = this.GetPayload();\n const variantCount = getPermutationVariantCount(payload);\n if (variantCount !== null && index >= variantCount)\n {\n return null;\n }\n\n if (!this.#reader)\n {\n return null;\n }\n\n const shader = Tr2Shader.fromCarbonBinary(this.#reader, index, this.#carriesBackendBlock);\n this.#shaders.set(index, shader);\n return shader;\n }\n\n /**\n * Return a small JSON-friendly permutation description.\n *\n * @returns {Array<*>}\n */\n GetPermutationDescription()\n {\n const payload = this.GetPayload();\n const axes = getPermutationAxes(payload);\n if (!axes.length && Array.isArray(payload?.permutations))\n {\n return payload.permutations.map(permutation => ({ ...permutation }));\n }\n return axes.map(axis => ({\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: axis.description,\n type: axis.type\n }));\n }\n\n /**\n * Drop hydrated shader graphs while retaining the validated CPU payload.\n */\n ReleaseResources()\n {\n this.#shaders.clear();\n }\n\n /** Release the payload and every shader graph hydrated from it. */\n ReleasePayload()\n {\n this.#shaders.clear();\n this.#reader = null;\n return super.ReleasePayload();\n }\n\n static payload = ResourceRequirement.SHADER;\n\n}\n\n/**\n * Validate an attached permutation payload.\n *\n * Carbon has no equivalent: it fills `m_permutations` from the file and never\n * accepts one from a caller. This exists only so an attached payload cannot\n * silently produce a wrong permutation index, and it checks the one thing the\n * index arithmetic depends on - that every axis has options and a default that\n * addresses one of them.\n *\n * @param {object} payload Attached payload.\n */\nfunction validateEffectPayload(payload)\n{\n if (!Array.isArray(payload.permutations))\n {\n throw new TypeError(\n \"Tr2EffectRes payload requires a permutations array\"\n );\n }\n payload.permutations.forEach(normalizePermutationAxis);\n}\n\n/**\n * The permutation axes an attached payload declares.\n *\n * @param {object|null} payload Attached payload.\n * @returns {Array<object>} Normalized axes, empty when there are none.\n */\nfunction getPermutationAxes(payload)\n{\n if (!Array.isArray(payload?.permutations))\n {\n return [];\n }\n return payload.permutations.map(normalizePermutationAxis);\n}\n\n/**\n * Normalize and validate one permutation axis.\n *\n * @param {object} axis Candidate axis.\n * @returns {object} Owned, validated axis.\n */\nfunction normalizePermutationAxis(axis)\n{\n if (!axis || typeof axis !== \"object\" || Array.isArray(axis)\n || typeof axis.name !== \"string\" || !axis.name\n || !Array.isArray(axis.options) || !axis.options.length\n || axis.options.some(option => typeof option !== \"string\" || !option)\n || !Number.isSafeInteger(axis.defaultOption)\n || axis.defaultOption < 0\n || axis.defaultOption >= axis.options.length)\n {\n throw new TypeError(\"Tr2EffectRes permutation axis is malformed\");\n }\n return {\n name: axis.name,\n options: [ ...axis.options ],\n defaultOption: axis.defaultOption,\n description: String(axis.description ?? \"\"),\n type: Number(axis.type ?? 0)\n };\n}\n\n/**\n * The number of permutations the axes describe - the product of their option\n * counts, which is also the number of offset-table rows a dense container has.\n *\n * @param {object|null} payload Attached payload.\n * @returns {number|null} Permutation count, or null when no axes are declared.\n */\nfunction getPermutationVariantCount(payload)\n{\n const axes = getPermutationAxes(payload);\n if (!axes.length)\n {\n return null;\n }\n return axes.reduce((count, axis) => count * axis.options.length, 1);\n}\n\n/**\n * Return an owned snapshot of the current global option overrides.\n *\n * Carbon returns a const reference to the live vector; a JS caller cannot be\n * held to that, so this copies rather than exposing the array for mutation.\n *\n * @returns {Array<{name:string,value:string}>} Global option choices.\n */\nexport function GetGlobalEffectOptions()\n{\n return globalEffectOptions.map(option => ({ ...option }));\n}\n\n/**\n * Merge Carbon-style global effect option overrides.\n *\n * An empty value removes the override. Existing Tr2EffectRes shader caches\n * remain valid objects; callers rebuild effects to request the new selection.\n *\n * @param {Array<object>|Map<string,string>} changes Option changes.\n */\nexport function ModifyGlobalEffectOptions(changes = [])\n{\n for (const change of normalizeShaderOptions(changes))\n {\n const index = globalEffectOptions.findIndex(\n option => option.name === change.name\n );\n if (!change.value)\n {\n if (index >= 0)\n {\n globalEffectOptions.splice(index, 1);\n }\n }\n else if (index >= 0)\n {\n globalEffectOptions[index] = change;\n }\n else\n {\n globalEffectOptions.push(change);\n }\n }\n}\n\nfunction normalizeShaderOptions(options)\n{\n if (options instanceof Map)\n {\n return Array.from(options, ([ name, value ]) => ({\n name: String(name),\n value: String(value)\n }));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map(option => ({\n name: String(option?.name ?? \"\"),\n value: String(option?.value ?? \"\")\n }));\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectRes, {\n className: \"Tr2EffectRes\",\n family: \"resources\",\n methods: {\n GetShader: [ carbon.method, impl.adapted, impl.reason(\"Carbon interns the selected body's handles during the read (Tr2EffectDescription.cpp:587-666); ours are interned later at the Trinity boundary, so this returns the hydrated shader graph rather than an already-stamped one.\") ],\n GetShaderByIndex: [ impl.custom, impl.reason(\"Carbon selects compiled bodies through GetShader; CarbonEngineJS exposes exact package-index hydration for deterministic package consumers and tests.\") ],\n GetPermutationDescription: [ carbon.method, impl.adapted, impl.reason(\"Carbon exposes a Python tuple through Blue; CarbonEngineJS returns a JSON-friendly plain axis description.\") ],\n ReleaseResources: [ carbon.method, impl.adapted, impl.reason(\"Clears the hydrated shader graphs only. Carbon also does SetGood(false), SetPrepared(false), CancelPendingLoad() and NotifyReleaseCachedData(), and takes a TriStorage mask; not ported yet, Tr2EffectRes.cpp:328-341.\") ]\n }\n});\n"],"names":["globalEffectOptions","Tr2EffectRes","CjsResource","Map","DoLoad","data","options","reader","CjsCarbonEffectReader","clear","EffectCarriesBackendBlock","GetPath","SetPayload","permutations","map","axis","name","value","option","defaultOption","description","type","SetValues","constructor","values","skipUpdate","skipEvents","payload","ArrayBuffer","isView","validateResourcePayload","validateEffectPayload","GetShader","count","axes","getPermutationAxes","GetPayload","localOptions","normalizeShaderOptions","localCount","Number","isSafeInteger","Math","max","min","length","multiplier","index","selectedIndex","globalOption","find","requestedIndex","indexOf","optionIndex","localOption","GetShaderByIndex","GetContainerBytes","bytes","CarriesBackendBlock","TypeError","has","get","variantCount","getPermutationVariantCount","shader","Tr2Shader","fromCarbonBinary","set","GetPermutationDescription","Array","isArray","permutation","ReleaseResources","ReleasePayload","ResourceRequirement","SHADER","forEach","normalizePermutationAxis","some","String","reduce","GetGlobalEffectOptions","ModifyGlobalEffectOptions","changes","change","findIndex","splice","push","from","CjsSchema","define","className","family","methods","carbon","method","impl","adapted","reason","custom"],"mappings":"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"}