@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":"EveSpaceObject2.js","sources":["../../../../../src/trinity/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.h\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.cpp\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2_Blue.cpp\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\nimport { IEveInheritPropertiesOwner, withIEveInheritPropertiesOwner } from \"../IEveInheritPropertiesOwner.js\";\nimport { withIEveSpaceObject2 } from \"../IEveSpaceObject2.js\";\nimport { withITr2BoundingBox } from \"#contracts\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\nimport { color } from \"#math/color\";\nimport { box3 } from \"#math/box3\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { sph3 } from \"#math/sph3\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\nimport { MatrixCopyFrom3x4 } from \"../lights/lightConversion.js\";\nimport { getBoneList } from \"../../core/animation/Tr2GrannyAnimation.js\";\nimport { Tr2PerObjectData } from \"../../core/rawData/perObjectData/Tr2PerObjectData.js\";\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../core/batch/TriRenderBatch/index.js\";\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\nimport { CarbonVertexElements } from \"../../core/vertex/vertexUsage.js\";\nimport { RawData } from \"../../core/rawData/RawData.js\";\nimport { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from \"../../core/view/Tr2PickType.js\";\nimport { IEveSpaceObject2ParentData } from \"./IEveSpaceObject2ParentData.js\";\nimport { EveCustomMask } from \"../EveCustomMask.js\";\nimport { EveCollectAreas } from \"../child/EveSpaceObjectChild.js\";\nimport { EveGetLocatorPose, EveLocatorSets } from \"../locator/EveLocatorSets.js\";\nimport { Locator } from \"../locator/Locator.js\";\nimport { TriPerlinCurve } from \"../../curves/curve/TriPerlinCurve.js\";\nimport { withITr2Renderable } from \"../../core/ITr2Renderable.js\";\nimport { Tr2RenderReason } from \"../../generated/trinityCore/enums.js\";\n\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\n// per-frame path, copy-into, never allocate per call).\nconst TRANSPARENT_AABB_MIN = vec3.create();\nconst TRANSPARENT_AABB_MAX = vec3.create();\nconst TRANSPARENT_CENTER = vec3.create();\n\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\nconst OVERLAY_TYPE_ALL = 1;\n\n/**\n * The hull of an EVE space object - its mesh, locators, locator sets, decals,\n * attachments, lights, effect children, overlay effects, impact overlay and\n * controllers - together with the curve-driven world transform, visibility, LOD\n * and batch submission that drive them each frame.\n */\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\nexport class EveSpaceObject2 extends withIEveInheritPropertiesOwner(withIEveSpaceObject2(withITr2Renderable(withITr2BoundingBox(EveEntity))))\n{\n\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\n @io.notify\n @io.persist\n @type.int32\n @type.enum(\"ReflectionMode\")\n reflectionMode = 3;\n\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectChild\")\n effectChildren = [];\n\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveTransform\")\n children = [];\n\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\n @io.notify\n @io.persist\n @type.string\n name = \"\";\n\n /** m_mute (bool) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.boolean\n mute = false;\n\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"EveChildInheritProperties\")\n inheritProperties = null;\n\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveCustomMask\")\n customMasks = [];\n\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveMeshOverlayEffect\")\n overlayEffects = [];\n\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\n @io.read\n @type.objectRef(\"Tr2BindingVector3\")\n positionDelta = null;\n\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\n @io.read\n @type.int32\n @type.enum(\"Tr2Lod\")\n lodLevel = -1;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_isPickable (bool) [READWRITE] */\n @io.readwrite\n @type.boolean\n isPickable = true;\n\n /** m_estimatedPixelDiameter (float) [READ] */\n @io.read\n @type.float32\n estimatedPixelDiameter = 0;\n\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\n @io.read\n @type.float32\n estimatedPixelDiameterWithChildren = 0;\n\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\n @io.read\n @type.vec3\n generatedShapeEllipsoidCenter = vec3.create();\n\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\n @io.read\n @type.vec3\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\n\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2GrannyAnimation\")\n animationUpdater = null;\n\n /** m_dna (std::string) [READ, PERSIST] */\n @io.persist\n @type.string\n dna = \"\";\n\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\n @io.notify\n @io.persist\n @type.boolean\n castShadow = false;\n\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n isAnimated = false;\n\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\n @io.persist\n @type.boolean\n dynamicBoundingSphereEnabled = false;\n\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectAttachment\")\n attachments = [];\n\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveSpaceObjectDecal\")\n decals = [];\n\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.list(\"Tr2Light\")\n lights = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"ITr2Controller\")\n controllers = [];\n\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLocator2\")\n locators = [];\n\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"Tr2MeshBase\")\n mesh = null;\n\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"EveImpactOverlay\")\n impactOverlay = null;\n\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n clipSphereCenter = vec3.create();\n\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n clipSphereFactor2 = 0;\n\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n clipSphereFactor = 0;\n\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriObserverLocal\")\n observers = [];\n\n /** m_worldPosition (Vector3) [READ] */\n @io.read\n @type.vec3\n worldPosition = vec3.create();\n\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriQuaternionFunction\")\n rotationCurve = null;\n\n /** m_worldRotation (Quaternion) [READ] */\n @io.read\n @type.quat\n worldRotation = quat.create();\n\n /** m_modelScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n modelScale = 1;\n\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLocatorSets\")\n locatorSets = [];\n\n /** m_activationStrength (float) [READWRITE] */\n @io.readwrite\n @type.float32\n activationStrength = 1;\n\n /** m_albedoColor (Color) [READWRITE] */\n @io.readwrite\n @type.color\n albedoColor = color.createLinear();\n\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n update = true;\n\n /** m_secondaryLightingSphereRadius (float) [READ] */\n @io.read\n @type.float32\n secondaryLightingSphereRadius = 0;\n\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n boundingSphereCenter = vec3.create();\n\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.float32\n dirtLevel = 0;\n\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\n @io.readwrite\n @type.vec4\n customShaderData = vec4.create();\n\n /**\n * m_spaceObjectShipData (Vector4) [READ] - the packed shader ship data:\n * .y activation strength, .z dirt level, .w bounding-sphere radius\n * (PrepareShaderData, cpp:734-744). .x is authored elsewhere and left alone.\n */\n @io.read\n @type.vec4\n spaceObjectShipData = vec4.create();\n\n /** m_lastDamageLocatorHit (int) [READ] */\n @io.read\n @type.int32\n lastDamageLocatorHit = -1;\n\n @io.notify\n @io.readwrite\n @type.boolean\n damageLocatorAutoFilterEnabled = false;\n\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n boundingSphereRadius = -1;\n\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\n @io.read\n @type.vec3\n modelWorldPosition = vec3.create();\n\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriVectorFunction\")\n modelTranslationCurve = null;\n\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriQuaternionFunction\")\n modelRotationCurve = null;\n\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n shapeEllipsoidCenter = vec3.create();\n\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\n\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.objectRef(\"ITriVectorFunction\")\n translationCurve = null;\n\n @io.read\n @type.mat4\n worldTransform = mat4.create();\n\n @io.read\n @type.mat4\n inverseWorldTransform = mat4.create();\n\n @io.read\n @type.mat4\n lastWorldTransform = mat4.create();\n\n @io.read\n @type.vec3\n worldVelocity = vec3.create();\n\n @io.readwrite\n @type.objectRef(\"ITr2AudGeometry\")\n audioGeometry = null;\n\n @type.boolean\n isVisible = false;\n\n #controllerVariables = new Map([\n [\"DirtLevel\", 0],\n [\"ActivationStrength\", 1],\n [\"ShieldDamage\", 1],\n [\"ArmorDamage\", 1],\n [\"HullDamage\", 1],\n [\"ClipSphereFactor\", 0],\n [\"ClipSphereFactor2\", 0]\n ]);\n\n #lastUpdateTransformTime = null;\n\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\n // side updates curve sets only when it matches the frame time.\n #lastCurveUpdateTime = 0;\n\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\n // updater port publishes skinned bounds here.\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\n\n // Carbon keeps the realized world sphere separate from the authored local\n // sphere. UpdateWorldBounds refreshes it from PrepareShaderData, which is\n // Carbon's only refresh point - so a reader sees one value for a whole frame.\n #boundingSphereWorldRadius = -1;\n\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\n #isInFrustum = false;\n\n #isMeshVisible = false;\n\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\n\n #meshScreenSize = 0;\n\n #overlayMeshAreaBlocks = [ [], [] ];\n\n #shadowMeshOpaqueAreas = [];\n\n #cachedAreaBlocksBuilt = false;\n\n #mergedLocatorSets = [];\n\n #mergedDamageLocatorSources = [];\n\n #damageLocatorEnabled = [];\n\n #mergedLocatorSetsDirty = true;\n\n #damageLocatorFilterRequested = false;\n\n #damageFilterOccluders = [];\n\n // Carbon m_damageFilterAreas (EveSpaceObject2.h:829): the shared area pool\n // the occluders' areaStart/areaCount ranges index into.\n #damageFilterAreas = [];\n\n // 0 idle, 1 pending, 2 active raycast session. Carbon initializes Idle\n // (EveSpaceObject2.cpp:208); SOF's eager RunDamageLocatorFilter was removed\n // upstream (ae5680b3), so filtering runs only when requested or auto-enabled.\n #damageFilterState = 0;\n\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\n // LOD selection assigns a mesh (at worst it lags one frame).\n #localAabbMin = vec3.create();\n\n #localAabbMax = vec3.create();\n\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\n #allowLodSelection = true;\n\n // Carbon m_impostorMode: the impostor system that raises it is unported.\n #impostorMode = false;\n\n /** EVE_SPACEOBJECT_CUSTOWMASK_MAX (EveSpaceObject2.h:49) - custom-mask slots. */\n static CUSTOM_MASK_MAX = EveCustomMask.CUSTOM_MASK_COUNT;\n\n /**\n * Carbon g_secondaryLightingRadiusCutoffFactor (cpp:52), a registered engine\n * setting defaulting to 0.3. It scales this hull's bounding radius into the\n * cutoff below which a secondary light source is too small to matter.\n */\n static SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR = 0.3;\n\n /** Scratch for the per-frame shader-data fill; never allocate in it. */\n static #clipSphereCenterScratch = vec3.create();\n\n static #shapeCenterScratch = vec3.create();\n\n static #shapeRadiusScratch = vec3.create();\n\n // Carbon m_vsData / m_psData: the PERSISTENT per-object records. They are\n // owner-held members across frames rather than pool leases, because the\n // object fills them during update and reads them back afterwards\n // (cpp:3747 takes the world translation out of the STORED transposed matrix).\n // Carbon's paired m_perObjectDataVs/m_perObjectDataPs GPU buffers are the\n // engine's business; Invalidate on these records carries the same signal.\n /** The ParentData Carbon builds on the stack for the decal pass\n * (EveSpaceObject2.cpp:1696), held here so the pass does not allocate. */\n #decalParentData = new IEveSpaceObject2ParentData();\n\n #vsData = RawData.create(\"EveSpaceObjectVSData\");\n\n #psData = RawData.create(\"EveSpaceObjectPSData\");\n\n /** Alias for the mesh property; reads and writes go straight to mesh. */\n get meshLod()\n {\n return this.mesh;\n }\n\n /** Alias for the mesh property; reads and writes go straight to mesh. */\n set meshLod(mesh)\n {\n this.mesh = mesh ?? null;\n }\n\n /**\n * Links the authored controllers, pushes authored inherit properties down to\n * the effect children and lights, and derives the impact overlay's damage\n * locator count from the \"damage\" locator set - which Carbon does at build\n * time - so a field-populated graph reaches the same live state as the\n * authoring path.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n for (const controller of this.controllers)\n {\n if (!controller?.IsLinked())\n {\n controller?.Link(this);\n }\n }\n // Authored inherit properties propagate as part of the lifecycle so a\n // field-populated graph (values import, document hydration) matches the\n // SetInheritProperties authoring path.\n if (this.inheritProperties)\n {\n this.#PropagateInheritProperties();\n }\n\n for (const child of this.effectChildren) child.SetOwner(this);\n\n this.InvalidateMergedLocators(\"structure\");\n // Carbon derives the impact overlay's damage locator count from the\n // \"damage\" locator set at build time; deriving it here keeps it out of\n // the authored values while reproducing the same live state.\n if (this.impactOverlay)\n {\n this.EnsureChildLocatorMerged();\n this.impactOverlay.SetDamageLocatorCount(this.GetDamageLocatorCount());\n }\n return true;\n }\n\n /** Returns the hull mesh, or null when none is attached. */\n @carbon.method\n @impl.implemented\n GetMesh()\n {\n return this.mesh;\n }\n\n /**\n * Replaces the hull mesh; the cached area blocks are only rebuilt on the next\n * batch call.\n */\n @carbon.method\n @impl.adapted\n SetMesh(mesh)\n {\n this.mesh = mesh ?? null;\n }\n\n /** Borrowed overlay vector used by child mesh inheritance. */\n @carbon.method\n @impl.implemented\n GetOverlayEffects()\n {\n return this.overlayEffects;\n }\n\n /**\n * Appends a controller, links it to this object when it is not already linked,\n * and replays the current controller variables onto it.\n */\n @carbon.method\n @impl.adapted\n AddController(controller)\n {\n this.controllers.push(controller);\n if (!controller?.IsLinked())\n {\n controller?.Link(this);\n }\n EveSpaceObject2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\n return controller;\n }\n\n /**\n * Appends a placement observer, which is repositioned from the observer\n * transform on every synchronous update; the observer is returned for\n * chaining.\n */\n @carbon.method\n @impl.implemented\n AddObserver(observer)\n {\n this.observers.push(observer);\n return observer;\n }\n\n /**\n * Sets the colour set that effect children and lights inherit, creating the\n * inherit-properties holder on first use, and pushes it to the existing\n * children and lights.\n */\n @carbon.method\n @impl.implemented\n SetInheritProperties(colorSet)\n {\n if (!this.inheritProperties)\n {\n this.inheritProperties = new EveChildInheritProperties();\n }\n this.inheritProperties.SetProperties(colorSet);\n this.#PropagateInheritProperties();\n }\n\n /** Pushes the current inherited properties to every effect child and light. */\n #PropagateInheritProperties()\n {\n const properties = this.inheritProperties.GetProperties();\n for (const child of this.effectChildren)\n {\n if (child instanceof IEveInheritPropertiesOwner) child.SetInheritProperties(properties);\n }\n for (const light of this.lights)\n {\n if (light instanceof IEveInheritPropertiesOwner) light.SetInheritProperties(properties);\n }\n }\n\n /**\n * Returns the first effect child with the given name, or null when none\n * matches.\n */\n @carbon.method\n @impl.implemented\n GetEffectChildByName(name)\n {\n const target = String(name ?? \"\");\n for (const child of this.effectChildren)\n {\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\n {\n return child;\n }\n }\n return null;\n }\n\n /**\n * Appends an effect child, first giving it the hull's inherited properties and\n * then replaying the current controller variables onto it, so a late addition\n * starts in the same state as the rest.\n */\n @carbon.method\n @impl.adapted\n AddToEffectChildrenList(child)\n {\n if (this.inheritProperties)\n {\n if (child instanceof IEveInheritPropertiesOwner) child.SetInheritProperties(this.inheritProperties.GetProperties());\n }\n child.SetOwner(this);\n this.effectChildren.push(child);\n this.InvalidateMergedLocators(\"structure\");\n EveSpaceObject2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\n return child;\n }\n\n /** Appends a light, first giving it the hull's inherited properties. */\n @carbon.method\n @impl.implemented\n AddLight(light)\n {\n if (this.inheritProperties)\n {\n if (light instanceof IEveInheritPropertiesOwner) light.SetInheritProperties(this.inheritProperties.GetProperties());\n }\n this.lights.push(light);\n }\n\n /**\n * Drops every light from the hull; component registration is not revisited\n * here.\n */\n @carbon.method\n @impl.implemented\n ClearLights()\n {\n this.lights.length = 0;\n }\n\n /**\n * Removes an effect child, returning false when it is not attached to this\n * hull.\n */\n @carbon.method\n @impl.implemented\n RemoveFromEffectChildrenList(child)\n {\n const index = this.effectChildren.indexOf(child);\n if (index === -1)\n {\n return false;\n }\n this.effectChildren.splice(index, 1);\n child.SetOwner(null);\n this.InvalidateMergedLocators(\"structure\");\n return true;\n }\n\n /**\n * Sets the curve that rotates the model within the hull's ball rotation, or\n * clears it when passed nothing.\n */\n @carbon.method\n @impl.implemented\n SetModelRotationCurve(curve)\n {\n this.modelRotationCurve = curve ?? null;\n }\n\n /** Returns the model rotation curve, or null when none is set. */\n @carbon.method\n @impl.implemented\n GetModelRotationCurve()\n {\n return this.modelRotationCurve;\n }\n\n /**\n * Sets the curve that offsets the model within the hull's ball position, or\n * clears it when passed nothing.\n */\n @carbon.method\n @impl.implemented\n SetModelTranslationCurve(curve)\n {\n this.modelTranslationCurve = curve ?? null;\n }\n\n /** Returns the model translation curve, or null when none is set. */\n @carbon.method\n @impl.implemented\n GetModelTranslationCurve()\n {\n return this.modelTranslationCurve;\n }\n\n /**\n * Rebuilds the hull world transform for a frame from the ball position and rotation curves plus the optional model translation and rotation curves, applies modelScale as a uniform scale, then refreshes the inverse transform and the world bounds; the previous world transform is kept for motion vectors and the world velocity comes from the position curve's derivative.\n * @param {number} time Frame time; repeating the previous call's time is a no-op.\n * @returns {boolean} False when the transform had already been built for this time.\n */\n @carbon.method\n @impl.adapted\n UpdateWorldTransform(time)\n {\n const nextTime = Number(time) || 0;\n if (this.#lastUpdateTransformTime === nextTime)\n {\n return false;\n }\n this.#lastUpdateTransformTime = nextTime;\n mat4.copy(this.lastWorldTransform, this.worldTransform);\n // Carbon cpp:2675-2676: the OUTGOING transform becomes worldTransformLast,\n // stored transposed in both records, before the new one is built.\n this.#vsData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\n this.#psData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\n\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\n if (this.translationCurve?.GetValueDotAt)\n {\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\n }\n else\n {\n vec3.set(this.worldVelocity, 0, 0, 0);\n }\n\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\n const rotation = quat.clone(this.worldRotation);\n if (this.modelRotationCurve)\n {\n const modelRotation = quat.create();\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\n quat.multiply(rotation, rotation, modelRotation);\n }\n\n mat4.fromQuat(this.worldTransform, rotation);\n if (this.modelScale !== 1)\n {\n // Carbon (row-vector): m_worldTransform * scaleMatrix - scale LAST\n // (cpp:2711-2716). gl mat4.scale builds W*S = scale FIRST; equivalent\n // ONLY because modelScale is strictly uniform (a uniform scale commutes\n // with the pure rotation here). If modelScale ever becomes a vec3 this\n // must become mat4.multiply(w, S, w) per the swap rule.\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\n }\n\n if (this.modelTranslationCurve)\n {\n const modelTranslation = vec3.create();\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\n }\n else\n {\n this.worldTransform[12] = this.worldPosition[0];\n this.worldTransform[13] = this.worldPosition[1];\n this.worldTransform[14] = this.worldPosition[2];\n }\n\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\n {\n mat4.identity(this.inverseWorldTransform);\n }\n return true;\n }\n\n /**\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\n * sphere when available, otherwise from the authored local sphere.\n */\n @carbon.method\n @impl.implemented\n UpdateWorldBounds()\n {\n const updater = this.animationUpdater;\n if (this.dynamicBoundingSphereEnabled && updater && updater.IsInitialized())\n {\n updater.GetDynamicBounds(\n this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\n if (this.#dynamicBoundingSphere[3] > 0)\n {\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\n\n return;\n }\n }\n if (this.boundingSphereRadius > 0)\n {\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\n }\n }\n\n /**\n * Carbon EveSpaceObject2::PrepareShaderData (cpp:734-763): refreshes the\n * world bounds, packs the ship data, and derives the clip-sphere dissolve\n * values into the persistent per-object records.\n */\n @carbon.method\n @impl.implemented\n PrepareShaderData(updateContext = null)\n {\n this.UpdateWorldBounds();\n\n // An impact overlay may damp the activation strength; otherwise full on.\n this.spaceObjectShipData[1] = this.impactOverlay\n ? this.impactOverlay.GetActivationStrength(updateContext)\n : 1;\n this.spaceObjectShipData[3] = this.GetBoundingSphereRadius();\n this.spaceObjectShipData[2] = this.dirtLevel;\n\n // clipSphereFactor runs 0 (fully visible) to 1 (invisible); the shader gets\n // a signed squared radius rather than the factor itself.\n let normalizedBoundingRadius = this.GetBoundingSphereRadius() / (this.modelScale === 0 ? 1 : this.modelScale);\n const clipOffset = vec3.length(this.clipSphereCenter);\n normalizedBoundingRadius += clipOffset;\n const insideSpherePercentage = Math.min(1, clipOffset / normalizedBoundingRadius);\n const dissolveRadius = this.clipSphereFactor * normalizedBoundingRadius * (1 + insideSpherePercentage);\n\n const center = this.GetBoundingSphereCenter();\n const clipSphereCenter = EveSpaceObject2.#clipSphereCenterScratch;\n vec3.add(clipSphereCenter, this.clipSphereCenter, center);\n const clipRadiusSq = Math.sign(dissolveRadius) * dissolveRadius * dissolveRadius;\n\n this.#psData.Set(\"clipSphereCenter\", clipSphereCenter);\n this.#psData.Set(\"clipRadiusSq\", [clipRadiusSq]);\n this.#vsData.Set(\"clipData\", [clipSphereCenter[0], clipSphereCenter[1], clipSphereCenter[2], clipRadiusSq]);\n\n const dissolveRadius2 = this.clipSphereFactor2 * normalizedBoundingRadius * (1 + insideSpherePercentage);\n this.#psData.Set(\"clipRadius2Sq\", [Math.sign(dissolveRadius2) * dissolveRadius2 * dissolveRadius2]);\n this.#psData.Set(\"clipSphereFactor\", [this.clipSphereFactor]);\n this.#psData.Set(\"clipSphereFactor2\", [this.clipSphereFactor2]);\n }\n\n /**\n * Carbon EveSpaceObject2::UpdateShLighting (cpp:1411-1421): asks the scene's\n * SH lighting manager for this hull's secondary-lighting coefficients, faded\n * in across the low-detail threshold so a hull entering that range does not\n * pop. The coefficients are cleared first, which is also what leaves the\n * unwritten tail zero on the L1 path.\n * @param {Object} manager - Tr2ShLightingManager\n * @param {Object} [updateContext] - frame context, for the detail thresholds\n */\n @carbon.method\n @impl.implemented\n UpdateShLighting(manager, updateContext = null)\n {\n const coefficients = this.#psData.Get(\"shLightingCoefficients\");\n\n coefficients.fill(0);\n\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\n\n if (!(this.estimatedPixelDiameterWithChildren > lowThreshold) || typeof manager?.GetLighting !== \"function\")\n {\n return false;\n }\n\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\n const intensityFadeRadius = (mediumThreshold - lowThreshold) * 0.25;\n const intensity = Math.min(Math.max((this.estimatedPixelDiameterWithChildren - lowThreshold) / intensityFadeRadius, 0), 1);\n\n manager.GetLighting(\n this.worldPosition,\n intensity,\n this.boundingSphereRadius * EveSpaceObject2.SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR,\n coefficients\n );\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::ClearShLighting (cpp:1423-1426): drops this hull's\n * secondary-lighting contribution back to nothing.\n */\n @carbon.method\n @impl.implemented\n ClearShLighting()\n {\n this.#psData.Get(\"shLightingCoefficients\").fill(0);\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::GetParentData (cpp:1872-1885): the values an\n * attachment needs from its hull. `shLighting` is a LIVE view into the PS\n * record, exactly as Carbon hands out a raw pointer into m_psData - an\n * attachment reading it sees the hull's current coefficients.\n * @param {Object} [out] - caller-owned record, refreshed in place\n */\n @carbon.method\n @impl.implemented\n GetParentData(out = new IEveSpaceObject2ParentData())\n {\n mat4.copy(out.transform, this.worldTransform);\n // Carbon memsets the record and never assigns killCount on this path.\n out.killCount = 0;\n vec4.copy(out.shipData, this.spaceObjectShipData);\n vec3.copy(out.clipSphereCenter, this.#psData.Get(\"clipSphereCenter\"));\n out.clipRadiusSq = this.#psData.Get(\"clipRadiusSq\")[0];\n out.clipRadius2Sq = this.#psData.Get(\"clipRadius2Sq\")[0];\n out.clipFactor = this.#psData.Get(\"clipSphereFactor\")[0];\n out.clipFactor2 = this.#psData.Get(\"clipSphereFactor2\")[0];\n out.shLighting = this.#psData.Get(\"shLightingCoefficients\");\n vec4.copy(out.customData, this.#psData.Get(\"customData\"));\n\n return out;\n }\n\n /**\n * Carbon EveSpaceObject2::GetPerObjectStructs (cpp:1485-1490): hands a copy\n * of both records to a caller, with the VS record's customData taken from the\n * PS record as Carbon does.\n * @returns {{vs: RawData, ps: RawData}} independent copies, not live records\n */\n @carbon.method\n @impl.implemented\n GetPerObjectStructs(vsData = RawData.create(\"EveSpaceObjectVSData\"), psData = RawData.create(\"EveSpaceObjectPSData\"))\n {\n vsData.CopyFrom(this.#vsData);\n psData.CopyFrom(this.#psData);\n vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\n return { vs: vsData, ps: psData };\n }\n\n /**\n * Refreshes the world transform, then - when the update flag is on - places the observers, stamps the LOD-gated curve clock while advancing the overlay effects, runs the effect children's synchronous pass with the current placement, and updates the impact overlay; the overlay effects receive the context time as both clocks, as Carbon does.\n * @returns {boolean} False when the update flag is off; the world transform is refreshed either way.\n */\n @carbon.method\n @impl.adapted\n UpdateSyncronous(updateContext = null)\n {\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n this.UpdateWorldTransform(time);\n if (!this.update)\n {\n return false;\n }\n\n const observerTransform = this.GetObserverTransform();\n for (const observer of this.observers)\n {\n observer?.Update(observerTransform);\n }\n\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\n // receive the context time as BOTH clocks, as Carbon does; the async pass\n // updates curve sets only on frames stamped here.\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\n {\n this.#lastCurveUpdateTime = time;\n for (const overlay of this.overlayEffects)\n {\n overlay?.Update(time, time);\n }\n }\n\n if (this.effectChildren.length)\n {\n const params = new EveChildUpdateParams();\n params.spaceObjectParent = this;\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\n params.activationStrength = this.activationStrength;\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\n for (const child of this.effectChildren)\n {\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\n child?.UpdateSyncronous(updateContext, params);\n }\n }\n\n this.EnsureChildLocatorMerged();\n this.UpdateDamageLocatorFilter();\n if (this.impactOverlay) this.impactOverlay.UpdateSyncronous(updateContext, this);\n return true;\n }\n\n /**\n * Runs the controllers at a frequency derived from the hull's estimated pixel diameter against the context's high-detail threshold, advances the object curve sets only on frames the synchronous LOD gate stamped, then updates the transform children, the effect children and the impact overlay.\n * @returns {number} The controller update frequency in 0..1, which is also handed to the effect children; 0 when the hull is not visible or the update flag is off.\n */\n @carbon.method\n @impl.adapted\n UpdateAsyncronous(updateContext = null)\n {\n if (!this.update)\n {\n return 0;\n }\n\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\n const frequency = this.isVisible && threshold > 0\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\n : 0;\n for (const controller of this.controllers)\n {\n controller?.Update(frequency);\n }\n\n // Carbon cpp:626-663: the persistent buffers are invalidated once per\n // frame, then the shader data is prepared and copied into both records.\n this.#vsData.Invalidate();\n this.#psData.Invalidate();\n\n const previousActivationStrength = this.spaceObjectShipData[1];\n this.PrepareShaderData(updateContext);\n if (previousActivationStrength !== this.spaceObjectShipData[1])\n {\n this.SetControllerVariable(\"ActivationStrength\", this.spaceObjectShipData[1]);\n }\n\n this.#psData.Set(\"shipData\", this.spaceObjectShipData);\n this.#vsData.Set(\"shipData\", this.spaceObjectShipData);\n // m_psData.customData is script/SOF-driven; the model field is its author.\n this.#psData.Set(\"customData\", this.customShaderData);\n // Both records carry the same two matrices; each is written from the\n // LOGICAL transform, which produces the bytes Carbon's `m_psData.x =\n // m_vsData.x` copy of the already-transposed value produces.\n this.#vsData.SetAndTranspose(\"worldTransform\", this.worldTransform);\n this.#vsData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\n this.#psData.SetAndTranspose(\"worldTransform\", this.worldTransform);\n this.#psData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\n\n const shapeCenter = EveSpaceObject2.#shapeCenterScratch;\n const shapeRadius = EveSpaceObject2.#shapeRadiusScratch;\n this.GetShapeEllipsoid(shapeCenter, shapeRadius);\n this.#vsData.Set(\"ellpsoidRadii\", [ shapeRadius[0], shapeRadius[1], shapeRadius[2], 0 ]);\n this.#vsData.Set(\"ellpsoidCenter\", [ shapeCenter[0], shapeCenter[1], shapeCenter[2], 0 ]);\n\n if (this.impactOverlay)\n {\n this.#psData.Set(\"impactDataOffset\", [ this.impactOverlay.GetDataTextureOffset() ]);\n }\n\n for (let slot = 0; slot < EveSpaceObject2.CUSTOM_MASK_MAX; slot++)\n {\n if (this.customMasks.length > slot)\n {\n this.customMasks[slot]?.FillPerObjectData?.(slot, this.#vsData, this.#psData);\n }\n else\n {\n EveCustomMask.ZeroPerObjectData(slot, this.#vsData, this.#psData);\n }\n }\n\n // Object-level curve sets update only on frames the sync-side LOD gate\n // stamped, receiving the context time as BOTH realTime and simTime\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\n // time) (*it)->Update(time, time)).\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n if (this.#lastCurveUpdateTime === time)\n {\n for (const curveSet of this.curveSets)\n {\n curveSet.Update(time, time, updateContext.renderContext);\n }\n }\n\n for (const child of this.children)\n {\n child?.Update?.(updateContext);\n }\n\n if (this.effectChildren.length)\n {\n const params = new EveChildUpdateParams();\n params.spaceObjectParent = this;\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\n params.activationStrength = this.activationStrength;\n params.controllerUpdateFrequency = frequency;\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\n for (const child of this.effectChildren)\n {\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\n child?.UpdateAsyncronous(updateContext, params);\n }\n }\n\n if (this.impactOverlay) this.impactOverlay.UpdateAsyncronous(updateContext, this);\n return frequency;\n }\n\n /**\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\n * visibility to the explicitly owned visual branches.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.\")\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\n {\n this.isVisible = false;\n this.#isMeshVisible = false;\n this.#isInFrustum = false;\n if (!this.display)\n {\n return false;\n }\n\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\n this.#impostorMode = false;\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\n\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\n {\n EveSpaceObject2.#SetSphere(\n EveSpaceObject2.#worldSphere,\n this.modelWorldPosition,\n this.#boundingSphereWorldRadius\n );\n if (frustum?.IsSphereVisible(EveSpaceObject2.#worldSphere) !== false)\n {\n this.EstimatePixelDiameter(frustum);\n this.#isMeshVisible = true;\n }\n }\n\n // Bones so a bone-parented attachment's bounds follow its bone, which is\n // what drives the per-bone AABB union (Carbon BoundingBox.cpp:815-833).\n const { bones, boneCount } = getBoneList(this.animationUpdater);\n\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n if (attachment.UpdateVisibility(updateContext, this.worldTransform, bones, boneCount))\n {\n this.#isMeshVisible = true;\n this.isVisible = true;\n }\n }\n\n if (this.DisplayChildren())\n {\n for (const child of this.children)\n {\n child?.UpdateVisibility(updateContext, this.worldTransform);\n }\n }\n\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\n {\n this.#isInFrustum = frustum?.IsSphereVisible(EveSpaceObject2.#worldSphere) !== false;\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\n {\n this.isVisible = true;\n }\n }\n\n if (this.isVisible)\n {\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\n\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\n }\n\n for (const observer of this.observers)\n {\n const target = observer?.GetObserver() ?? observer?.observer;\n target?.SetVisibility?.(this.isVisible);\n }\n for (const child of this.effectChildren)\n {\n child?.UpdateVisibility(updateContext, this.worldTransform, this.#lodLevelWithChildren);\n }\n\n // Carbon cpp:1694-1706: the decals take one ParentData built for the pass,\n // after the mesh bone palette when the updater has one.\n if (this.#isMeshVisible)\n {\n const parentData = this.GetParentData(this.#decalParentData);\n for (const decal of this.decals)\n {\n if (boneCount) decal.SetBoneMatrix(bones, boneCount);\n decal.UpdateVisibility(updateContext, parentData);\n }\n }\n\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\n {\n EveSpaceObject2.#SetSphere(\n EveSpaceObject2.#worldSphere,\n this.modelWorldPosition,\n this.#boundingSphereWorldRadius\n );\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\n }\n return this.isVisible;\n }\n\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.\")\n GetRenderables(out = [])\n {\n if (!this.display || !this.isVisible) return out;\n if (this.#allowLodSelection && this.#isMeshVisible)\n {\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\n }\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\n {\n out.push(this);\n }\n if (this.DisplayChildren())\n {\n for (const child of this.children) child?.GetRenderables(out);\n }\n for (const child of this.effectChildren)\n {\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables(out);\n }\n if (this.mesh && this.#isMeshVisible)\n {\n // Not optional-chained: a mesh HAS a geometry resource accessor and a\n // decal HAS GetRenderables. Guarding them turned a missing method into a\n // decal that drew nothing and reported nothing.\n const geometryResource = this.mesh.GetGeometryResource();\n if (geometryResource)\n {\n for (const decal of this.decals)\n {\n decal.GetRenderables(out, null, geometryResource, this.#meshScreenSize);\n }\n }\n }\n return out;\n }\n\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\n * per batch type, and TRANSPARENT routes through the distance-sorted area\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\n * deferred with the overlay realization work. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\n {\n if (!this.mesh) return false;\n if (this.mesh.display === false) return false;\n\n // Returns whether any batch was committed (JS addition; Carbon returns\n // void). The O(1) accumulator count makes the delta check free.\n const committedBefore = batches.GetBatchCount?.() ?? 0;\n\n if (this.activationStrength !== 0)\n {\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n attachment.GetBatches(batches, batchType, perObjectData, reason);\n }\n }\n\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\n\n const areas = this.mesh.GetAreas(batchType);\n if (areas)\n {\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\n {\n // Carbon EveSpaceObject2.cpp:1130 passes the screen size resolved in\n // UpdateVisibility, so the mesh draws the LOD this object was culled\n // at; reverseWinding is left default on every EveSpaceObject2 path.\n this.mesh.GetBatches(batches, areas, perObjectData, this.#meshScreenSize);\n }\n else\n {\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\n }\n }\n\n // add overlay effect batches (Carbon calls this for every batch type)\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\n\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\n }\n\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\n // object-space area bounding-box centers -> world space -> squared distance to\n // the view position, sorted back-to-front (descending), committed in that\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\n // from the geometry resource when it exposes them; a failed lookup keeps\n // Carbon's origin-center fallback.\n\n /**\n * Commits the mesh's transparent areas back-to-front, ordering them by the\n * squared distance from the view position to each area's world-space\n * bounding-box center and falling back to the object origin when the geometry\n * resource cannot supply a box.\n */\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\n {\n const geometry = this.mesh.GetGeometryResource() ?? null;\n const viewPosition = renderContext?.GetViewPosition();\n const meshIndex = this.mesh.meshIndex ?? 0;\n\n // Carbon resolves the LOD once for the whole sorted list (cpp:72) and\n // returns early when there is none. This port keeps collecting so a\n // GPU-free graph still produces batches; the LOD only supplies draw\n // arguments.\n const lod = geometry?.GetMeshLod?.(meshIndex, this.#meshScreenSize) ?? null;\n\n const sorted = [];\n for (const area of areas)\n {\n if (!area || area.GetDisplay?.() === false) continue;\n\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\n {\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\n }\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\n\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\n }\n\n sorted.sort((a, b) => b.distance - a.distance);\n\n for (const entry of sorted)\n {\n const area = entry.area;\n if (!area.GetMaterialInterface?.()) continue;\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData, false, lod);\n if (batch) batches.Commit(batch);\n }\n }\n\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\n RebuildCachedData()\n {\n this.ReleaseCachedData();\n if (!this.mesh) return;\n\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\n this.mesh.CollectAreaBlocks(\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\n for (const blocks of this.#overlayMeshAreaBlocks)\n {\n TriRenderBatchAreaBlock.Optimize(blocks);\n }\n\n this.mesh.CollectAreaBlocksWithSharedMaterials(\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\n for (const collector of this.#shadowMeshOpaqueAreas)\n {\n collector.Optimize();\n }\n this.#cachedAreaBlocksBuilt = true;\n }\n\n /**\n * Drops the cached overlay and shadow area-block lists so the next batch call\n * rebuilds them from the current mesh.\n */\n @carbon.method\n @impl.implemented\n ReleaseCachedData()\n {\n for (const blocks of this.#overlayMeshAreaBlocks)\n {\n blocks.length = 0;\n }\n this.#shadowMeshOpaqueAreas.length = 0;\n this.#cachedAreaBlocksBuilt = false;\n }\n\n /**\n * Rebuilds the cached area blocks on first use when a mesh is attached; Carbon\n * instead rebuilds them from the geometry-resource load callback.\n */\n #EnsureCachedAreaBlocks()\n {\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\n }\n\n /**\n * Carbon EveSpaceObject2::GetPickingBatches (cpp:3645-3675): collects the\n * geometry a pick pass should test, by mask. It is ordinary batch collection\n * - the pick itself is an engine pass that renders these and reads IDs back.\n *\n * The OPAQUE bit deliberately pulls in the transparent and additive OVERLAY\n * effects too, so a cloaking hull stays pickable.\n *\n * @param {Object} batches - the picking accumulator\n * @param {Number} pickTypes - a Tr2PickType mask\n * @param {Object} perObjectData - this hull's per-object record\n */\n @carbon.method\n @impl.implemented\n GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null)\n {\n if (pickTypes & Tr2PickType.PICK_TYPE_PICKING)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_TRANSPARENT, this.mesh);\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_ADDITIVE, this.mesh);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT)\n {\n // Carbon takes the mesh's OWN areas here rather than going through\n // GetBatches, and returns early when the mesh is absent or hidden - so a\n // hidden mesh suppresses the transparent pass only, not the ones above.\n if (!this.mesh || this.mesh.display === false)\n {\n return true;\n }\n\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE ])\n {\n const areas = this.mesh.GetAreas(batchType);\n\n if (areas)\n {\n this.mesh.GetBatches?.(batches, areas, perObjectData);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Carbon EveSpaceObject2::GetID (cpp:3640-3643): a picked area resolves to\n * the hull itself, so the area index is deliberately ignored.\n * @param {Number} [_areaID] - the picked area, unused by this class\n * @returns {EveSpaceObject2} this\n */\n @carbon.method\n @impl.implemented\n GetID(_areaID = 0)\n {\n return this;\n }\n\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\n * cached shared-material OPAQUE area block, using the area's own material.\n * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the\n * engine via the geometry source descriptor, so shadowPixelSize travels unused\n * until engine LOD selection consumes it. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.\")\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\n {\n if (!this.mesh || this.mesh.display === false) return false;\n this.#EnsureCachedAreaBlocks();\n\n const geometry = this.mesh.GetGeometryResource() ?? null;\n const meshIndex = this.mesh.meshIndex ?? 0;\n\n let committed = false;\n for (const collector of this.#shadowMeshOpaqueAreas)\n {\n const material = collector.shaderMaterial;\n if (!material) continue;\n for (const block of collector.areaBlockVector)\n {\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(material);\n if (!batch.IsValid()) continue;\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\n batch.SetPerObjectData(perObjectData ?? null);\n committed = batches.Commit(batch) || committed;\n }\n }\n return committed;\n }\n\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\n * maximum priority; each displayed overlay effect draws its per-batch-type\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\n * else -> TYPE_ALL). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Overlay selection is fully represented in the CPU graph; realized-LOD draw arguments remain engine-owned.\")\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\n {\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\n if (!impactEffect && !this.overlayEffects.length) return false;\n if (!mesh) return false;\n this.#EnsureCachedAreaBlocks();\n\n const committedBefore = batches.GetBatchCount?.() ?? 0;\n\n const geometry = mesh.GetGeometryResource() ?? null;\n if (!geometry || geometry.IsGood() === false) return false;\n const meshIndex = mesh.meshIndex ?? 0;\n\n // Carbon resolves the LOD ONCE for the whole overlay walk\n // (EveSpaceObject2.cpp:1198) and returns early when there is none. Resolving\n // it per block instead re-walks the LOD list for every block of every effect\n // of every overlay; EveChildMesh already hoists it, and this path was the\n // outlier.\n const lod = geometry.GetMeshLod?.(meshIndex, this.#meshScreenSize) ?? null;\n if (!lod) return false;\n\n // Carbon binds lod->m_mesh->m_vertexDeclarationHandle onto every block batch\n // exactly as onto a mesh area batch (cpp:1214). Leaving it zero makes every\n // overlay look like one declaration, and the handle is what binning and\n // sorting compare - so blocks of different layouts would share a bin.\n const overlayElements = CarbonVertexElements(geometry.GetMeshVertexElements?.(meshIndex));\n const overlayDeclaration = overlayElements.length\n ? Tr2EffectStateManager.getVertexDeclarationHandle(overlayElements)\n : 0;\n\n if (impactEffect)\n {\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\n {\n this.#CommitBlockBatch(\n batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF, lod, overlayDeclaration);\n }\n }\n\n for (const overlay of this.overlayEffects)\n {\n const effects = this.#OverlayEffectsFor(overlay, batchType);\n if (!effects) continue;\n\n const overlayType = overlay.GetType(batchType);\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\n for (const effect of effects)\n {\n for (const block of blocks)\n {\n this.#CommitBlockBatch(\n batches, effect, geometry, meshIndex, block, perObjectData, 0, lod, overlayDeclaration);\n }\n }\n }\n\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\n }\n\n /**\n * Builds and commits one render batch drawing a single cached area block with\n * the given material and optional priority, skipping the block when the\n * material yields no valid batch.\n */\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority, lod, vertexDeclaration)\n {\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(material);\n if (!batch.IsValid()) return;\n if (priority !== 0) batch.SetPriority(priority);\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\n batch.SetVertexDeclaration(vertexDeclaration);\n batch.SetPerObjectData(perObjectData ?? null);\n const draw = Tr2RenderBatch.resolveDrawArguments(\n lod, block.startIndex, block.count, false);\n if (!draw) return;\n batch.SetDrawIndexedInstanced(\n draw.indexCountPerInstance,\n draw.instanceCount,\n draw.startIndexLocation,\n draw.baseVertexLocation,\n draw.startInstanceLocation);\n batches.Commit(batch);\n }\n\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type).\n\n /**\n * Returns an overlay effect's display-gated effect list for a batch type, or\n * null when it contributes none.\n */\n #OverlayEffectsFor(overlay, batchType)\n {\n return overlay?.GetEffects?.(batchType) ?? null;\n }\n\n /**\n * Reports whether the hull mesh has transparent areas or any overlay effect\n * does, which tells the renderer to route this object through the sorted\n * transparent pass.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Portable mesh area access replaces Carbon's native mesh-area vectors.\")\n HasTransparentBatches()\n {\n if (!this.mesh) return false;\n if ((this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\n\n for (const overlay of this.overlayEffects)\n {\n if (overlay?.HasTransparentArea?.()) return true;\n }\n return false;\n }\n\n /**\n * Returns the distance from the render context's view position to the hull\n * world translation, used to order transparent renderables back-to-front.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\n GetSortValue(renderContext = null)\n {\n const viewPosition = renderContext?.GetViewPosition();\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\n return Math.hypot(x, y, z);\n }\n\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>.\n * This port retains persistent VS/PS RawData and returns those records\n * directly. GPU-derived bone-ring offsets remain at their CPU defaults until\n * an engine supplies them; other CPU-known values are already encoded. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Trinity retains and fills persistent VS/PS RawData; the engine owns device buffers, GPU-derived offsets, upload, and binding.\")\n GetPerObjectData(_accumulator = null)\n {\n // Carbon cpp:1437-1445: the bone ring is uploaded and its OFFSETS stamped\n // into the record, then a pooled handle referencing the two persistent\n // buffers is returned. The offsets are GPU addresses with no CPU\n // derivation, so they stay at their zero default here; the bone count is\n // CPU-known and is written.\n const boneCount = this.animationUpdater?.IsInitialized?.()\n ? (this.animationUpdater.GetMeshBoneCount?.() ?? 0)\n : null;\n if (boneCount !== null)\n {\n this.#vsData.SetIndex(\"boneOffsets\", 2, [ boneCount ]);\n }\n this.#vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\n\n return { vs: this.#vsData, ps: this.#psData };\n }\n\n /** Carbon forwards the shadow pass to the same per-object record. */\n @carbon.method\n @impl.implemented\n GetShadowPerObjectData(accumulator = null)\n {\n return this.GetPerObjectData(accumulator);\n }\n\n /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only\n * (no lights-empty early-out, unlike EveChildMesh), then per light\n * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by\n * SetBrightnessMultiplier(m_activationStrength) - the order is contract:\n * the submission uses the multiplier stamped on the PREVIOUS pass (first\n * pass uses the Tr2Light default 1) - one frame of activation-strength\n * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is\n * not ported. */\n @carbon.method\n @impl.implemented\n GetLights(lightManager)\n {\n if (!this.display)\n {\n return;\n }\n\n // cpp:3545-3547 - Tr2GrannyAnimationUtils::GetBoneList, so a bone-parented\n // light is placed by its bone rather than by the object transform alone.\n const { bones, boneCount } = getBoneList(this.animationUpdater);\n\n for (const light of this.lights)\n {\n light?.AddLight(lightManager, this.worldTransform, 1, bones, boneCount);\n light?.SetBrightnessMultiplier?.(this.activationStrength);\n }\n }\n\n /**\n * Carbon EveSpaceObject2::IsCastingShadow (cpp:2252-2274): applies the\n * display, world-sphere and reflection gates, then tests the realized sphere\n * against the supplied shadow frustum. Carbon's float& result is represented\n * by an optional length-one array.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The optional length-one array replaces Carbon's float& sizeInShadow out-parameter.\")\n IsCastingShadow(cameraFrustum, shadowFrustum, renderReason, sizeInShadowOut = null)\n {\n if (!this.display || this.#boundingSphereWorldRadius <= 0)\n {\n return false;\n }\n if (renderReason === Tr2RenderReason.TR2RENDERREASON_REFLECTION &&\n !ShouldReflect(this.reflectionMode))\n {\n return false;\n }\n\n EveSpaceObject2.#SetSphere(\n EveSpaceObject2.#worldSphere,\n this.modelWorldPosition,\n this.#boundingSphereWorldRadius\n );\n\n let sizeInShadow = 0;\n if (sizeInShadowOut)\n {\n sizeInShadowOut[0] = 0;\n }\n if (shadowFrustum.IsVisible(cameraFrustum, EveSpaceObject2.#worldSphere))\n {\n sizeInShadow = shadowFrustum.GetSizeInShadow(EveSpaceObject2.#worldSphere);\n if (sizeInShadowOut)\n {\n sizeInShadowOut[0] = sizeInShadow;\n }\n }\n return sizeInShadow > 15;\n }\n\n /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its\n * own components and its children with the scene registration container \"so\n * we don't have to traverse the tree every frame\". RegisterAudioGeometry\n * (cpp:3572-3575) is audio-engine-owned and unported. Gate m_display. */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n if (this.lights.length)\n {\n registry.RegisterComponent(EveComponentType.LightOwner, this);\n }\n\n if (ShouldReflect(this.reflectionMode))\n {\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\n }\n\n if (this.castShadow)\n {\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\n }\n\n for (const child of this.effectChildren)\n {\n child?.Register(registry);\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.Register(registry);\n }\n }\n }\n\n /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards\n * the un-registration to the children only - EveEntity::UnRegister already\n * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does\n * not re-check display. UnregisterAudioGeometry (cpp:3617) is\n * audio-engine-owned and unported. */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n for (const child of this.effectChildren)\n {\n child?.UnRegister(registry);\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.UnRegister(registry);\n }\n }\n }\n\n /**\n * Reports whether children and effect children should be shown; always true on\n * the base hull, subclasses gate it on activation state.\n */\n @carbon.method\n @impl.implemented\n DisplayChildren()\n {\n return true;\n }\n\n /**\n * Returns the transform placement observers are attached to - the live hull\n * world transform.\n */\n @carbon.method\n @impl.implemented\n GetObserverTransform()\n {\n return this.worldTransform;\n }\n\n /**\n * Returns the transform effect children are placed against - the live hull\n * world transform, not a copy.\n */\n @carbon.method\n @impl.implemented\n GetLocalToWorldTransform()\n {\n return this.worldTransform;\n }\n\n /** Carbon's non-updating model-center query. */\n @carbon.method\n @impl.implemented\n GetModelCenterWorldPosition(out)\n {\n vec3.transformMat4(out, this.boundingSphereCenter, this.worldTransform);\n }\n\n /**\n * Returns the live curve-sampled ball position; the array is the object's own\n * field and is rewritten by the next transform update.\n */\n @carbon.method\n @impl.implemented\n GetWorldPosition()\n {\n return this.worldPosition;\n }\n\n /**\n * Returns the live curve-sampled ball rotation, which excludes the model\n * rotation curve; the quaternion is the object's own field and is rewritten by\n * the next transform update.\n */\n @carbon.method\n @impl.implemented\n GetWorldRotation()\n {\n return this.worldRotation;\n }\n\n /**\n * Finds a sound emitter by observer name on this hull and then recursively in\n * the effect children, returning null when no emitter carries the name.\n */\n @carbon.method\n @impl.implemented\n FindSoundEmitter(name)\n {\n const target = String(name ?? \"\");\n for (const observer of this.observers)\n {\n if (observer?.name === target)\n {\n return typeof observer.GetObserver === \"function\"\n ? observer.GetObserver()\n : observer.observer ?? null;\n }\n }\n for (const child of this.effectChildren)\n {\n const emitter = child?.FindSoundEmitter?.(target);\n if (emitter)\n {\n return emitter;\n }\n }\n return null;\n }\n\n /**\n * Sets the mute flag and pushes it to every effect child and placement\n * observer.\n */\n @carbon.method\n @impl.adapted\n SetMute(mute)\n {\n this.mute = !!mute;\n for (const child of this.effectChildren)\n {\n child?.SetMute?.(this.mute);\n }\n for (const observer of this.observers)\n {\n observer?.SetMute(this.mute);\n }\n }\n\n /**\n * Plays an animation with explicit loop, start, and speed settings\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\n */\n @carbon.method\n @impl.adapted\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\n {\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\n }\n\n /**\n * Calculates the skinned bounding box under a transform (CMF path: the\n * local box corners transformed with perspective divide). The granny path\n * is unported. Returns an inverted-empty { min, max } box when dynamic\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\n */\n @carbon.method\n @impl.adapted\n CalculateSkinnedBoundingBoxFromTransform(transform)\n {\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource()?.IsUsingCMF?.())\n {\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\n const corner = vec3.create();\n for (let index = 0; index < 8; index++)\n {\n vec3.set(\n corner,\n index & 1 ? localMax[0] : localMin[0],\n index & 2 ? localMax[1] : localMin[1],\n index & 4 ? localMax[2] : localMin[2]\n );\n vec3.transformMat4(corner, corner, transform);\n vec3.min(min, min, corner);\n vec3.max(max, max, corner);\n }\n }\n return { min, max };\n }\n\n /**\n * Calculates the skinned bounding sphere (CMF path: the current bounding\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\n * are disabled.\n */\n @carbon.method\n @impl.adapted\n CalculateSkinnedBoundingSphere(out = vec4.create())\n {\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource()?.IsUsingCMF?.())\n {\n const center = this.GetBoundingSphereCenter();\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\n }\n return vec4.set(out, 0, 0, 0, -1);\n }\n\n /** Marks the derived locator graph stale and restarts any requested filter. */\n @carbon.method\n @impl.implemented\n InvalidateMergedLocators(reason = \"structure\")\n {\n this.#mergedLocatorSetsDirty = true;\n this.#ReleaseDamageFilterSessions();\n if (reason === \"structure\" || this.damageLocatorAutoFilterEnabled || this.#damageFilterState !== 0)\n {\n this.#damageFilterState = 1;\n }\n }\n\n /**\n * Rebuilds the locator sets visible on this object from its own authored sets\n * plus the sets owned by child meshes and nested child containers.\n */\n @carbon.method\n @impl.adapted\n EnsureChildLocatorMerged()\n {\n if (!this.#mergedLocatorSetsDirty) return;\n\n this.#mergedLocatorSets.length = 0;\n this.#mergedDamageLocatorSources.length = 0;\n const childSources = [];\n const identity = mat4.create();\n for (const child of this.effectChildren) child.CollectOwnedLocatorSets(identity, childSources);\n\n for (const authored of this.locatorSets)\n {\n const locators = authored.GetLocators();\n if (!locators.length) continue;\n const copy = new EveLocatorSets();\n copy.Set(authored.GetName(), locators);\n this.#mergedLocatorSets.push(copy);\n }\n\n const locatorTransform = mat4.create();\n const transformed = mat4.create();\n for (const source of childSources)\n {\n const sourceSet = source.sets;\n let merged = this.#mergedLocatorSets.find(set => set.HasName(sourceSet.GetName()));\n if (!merged)\n {\n merged = new EveLocatorSets();\n merged.SetName(sourceSet.GetName());\n this.#mergedLocatorSets.push(merged);\n }\n\n const start = merged.locators.length;\n for (const locator of sourceSet.GetLocators())\n {\n mat4.fromRotationTranslationScale(\n locatorTransform, locator.direction, locator.position, locator.scale);\n // Carbon row-vector locator * childToObject => gl-matrix childToObject * locator.\n mat4.multiply(transformed, source.childToObject, locatorTransform);\n\n const result = new Locator();\n mat4.getTranslation(result.position, transformed);\n mat4.getRotation(result.direction, transformed);\n quat.normalize(result.direction, result.direction);\n mat4.getScaling(result.scale, transformed);\n result.boneIndex = -1;\n result.partTag = Number(locator.partTag) >>> 0;\n merged.locators.push(result);\n }\n\n if (sourceSet.HasName(EveSpaceObject2.#damageLocatorSetName))\n {\n this.#mergedDamageLocatorSources.push({\n owner: source.owner,\n partTag: source.owner.GetPartTag(),\n start,\n count: sourceSet.GetLocators().length,\n // Carbon LocatorSourceRange.childToObject (EveSpaceObject2.cpp:1938):\n // lets GetLocatorInObjectSpace pose merged damage locators against\n // the owning child's skeleton, then lift them into object space.\n childToObject: source.childToObject\n });\n }\n }\n\n this.#mergedLocatorSetsDirty = false;\n }\n\n /** Releases every active raycast preparation session used by damage filtering. */\n #ReleaseDamageFilterSessions()\n {\n if (this.#damageFilterState !== 2) return;\n for (const occluder of this.#damageFilterOccluders) occluder.geometry.ResetRayCaster();\n this.#damageFilterOccluders.length = 0;\n this.#damageFilterAreas.length = 0;\n }\n\n /**\n * Collects prepared hull and child geometry and opens raycast sessions\n * (Carbon CollectOccluders, EveSpaceObject2.cpp:1960-2028): occluders carry\n * areaStart/areaCount ranges into the shared #damageFilterAreas pool, and\n * records with no matching areas are skipped rather than raycast whole.\n */\n #CollectDamageFilterOccluders()\n {\n this.#damageFilterOccluders.length = 0;\n this.#damageFilterAreas.length = 0;\n if (this.mesh)\n {\n const geometry = this.mesh.GetGeometryResource();\n if (geometry)\n {\n if (!geometry.IsPrepared())\n {\n return false;\n }\n if (geometry.IsGood())\n {\n const areaStart = this.#damageFilterAreas.length;\n EveCollectAreas(TriBatchType.TRIBATCHTYPE_OPAQUE, this.mesh, this.#damageFilterAreas);\n const areaCount = this.#damageFilterAreas.length - areaStart;\n if (areaCount !== 0)\n {\n this.#damageFilterOccluders.push({\n geometry,\n fromObject: mat4.create(),\n areaStart,\n areaCount\n });\n }\n }\n }\n }\n\n const childGeometry = [];\n const identity = mat4.create();\n for (const child of this.effectChildren)\n {\n child.CollectOwnedGeometry(\n TriBatchType.TRIBATCHTYPE_OPAQUE, identity, childGeometry, this.#damageFilterAreas);\n }\n\n for (const source of childGeometry)\n {\n if (source.areaCount === 0) continue;\n if (!source.geometry.IsPrepared())\n {\n this.#damageFilterOccluders.length = 0;\n this.#damageFilterAreas.length = 0;\n return false;\n }\n if (!source.geometry.IsGood()) continue;\n\n const fromObject = mat4.create();\n if (!mat4.invert(fromObject, source.childToObject)) mat4.identity(fromObject);\n this.#damageFilterOccluders.push({\n geometry: source.geometry,\n fromObject,\n areaStart: source.areaStart,\n areaCount: source.areaCount\n });\n }\n\n for (const occluder of this.#damageFilterOccluders) occluder.geometry.PrepareRayCaster();\n return true;\n }\n\n /** Reports whether all pending raycast sessions are ready or failed. */\n #AreDamageFilterOccludersReady()\n {\n for (let index = 0; index < this.#damageFilterOccluders.length;)\n {\n const occluder = this.#damageFilterOccluders[index];\n if (occluder.geometry.HasRayCasterPreparationFailed())\n {\n occluder.geometry.ResetRayCaster();\n this.#damageFilterOccluders.splice(index, 1);\n continue;\n }\n if (!occluder.geometry.IsRayCasterReady()) return false;\n index++;\n }\n return true;\n }\n\n /** Rebuilds the enabled mask by testing each locator ray against occluders. */\n #RefreshDamageLocatorMask(damageLocators)\n {\n this.#damageLocatorEnabled = damageLocators.map(locator =>\n {\n const direction = vec3.transformQuat(vec3.create(), EveSpaceObject2.#unitY, locator.direction);\n const origin = vec3.scaleAndAdd(vec3.create(), locator.position, direction, 0.1);\n let occluded = false;\n let backfacing = false;\n let rayLength = Infinity;\n const frontFaceMinDistance = 0.05 * this.boundingSphereRadius;\n\n for (const occluder of this.#damageFilterOccluders)\n {\n if (occluder.areaCount === 0) continue;\n\n const rayOrigin = vec3.transformMat4(vec3.create(), origin, occluder.fromObject);\n const rayDirection = vec3.fromValues(\n occluder.fromObject[0] * direction[0] + occluder.fromObject[4] * direction[1] + occluder.fromObject[8] * direction[2],\n occluder.fromObject[1] * direction[0] + occluder.fromObject[5] * direction[1] + occluder.fromObject[9] * direction[2],\n occluder.fromObject[2] * direction[0] + occluder.fromObject[6] * direction[1] + occluder.fromObject[10] * direction[2]);\n\n // Carbon EveSpaceObject2.cpp:2100-2122: the outer loop walks the\n // occluder's pool range, the INNER loop every sub-area\n // (area.index .. index+count) - a single GetIndex() raycast\n // under-tests multi-area geometry.\n for (let poolIndex = occluder.areaStart; poolIndex < occluder.areaStart + occluder.areaCount; poolIndex++)\n {\n const area = this.#damageFilterAreas[poolIndex];\n for (let areaIndex = area.index; areaIndex < area.index + area.count; areaIndex++)\n {\n const hit = {};\n if (!occluder.geometry.GetIntersectionPoints(\n rayOrigin, rayDirection, hit, areaIndex, rayLength)) continue;\n\n rayLength = hit.distance;\n backfacing = !area.alphaCutout &&\n ((vec3.dot(hit.unnormalizedNormal, rayDirection) > 0) !== area.reversed);\n if (rayLength < frontFaceMinDistance)\n {\n occluded = true;\n break;\n }\n }\n if (occluded) break;\n }\n if (occluded) break;\n }\n return !occluded && !backfacing;\n });\n }\n\n /** Advances the asynchronous damage-locator filtering state machine. */\n @carbon.method\n @impl.implemented\n UpdateDamageLocatorFilter()\n {\n if (this.#damageFilterState === 0) return;\n if (!this.damageLocatorAutoFilterEnabled && !this.#damageLocatorFilterRequested)\n {\n this.#damageLocatorEnabled.length = 0;\n this.#ReleaseDamageFilterSessions();\n this.#damageFilterState = 0;\n return;\n }\n\n const damageLocators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!damageLocators?.length)\n {\n this.#damageLocatorEnabled.length = 0;\n this.#ReleaseDamageFilterSessions();\n this.#damageFilterState = 0;\n this.#damageLocatorFilterRequested = false;\n return;\n }\n this.#damageLocatorEnabled = Array.from({ length: damageLocators.length }, () => true);\n\n if (this.#damageFilterState === 1)\n {\n if (!this.#CollectDamageFilterOccluders()) return;\n this.#damageFilterState = 2;\n }\n if (!this.#AreDamageFilterOccludersReady()) return;\n\n this.#RefreshDamageLocatorMask(damageLocators);\n this.#ReleaseDamageFilterSessions();\n this.#damageFilterState = 0;\n this.#damageLocatorFilterRequested = false;\n\n if (this.impactOverlay && this.impactOverlay.GetArmorImpactGoalCount() > 0)\n {\n const last = this.impactOverlay.GetLastDamageState();\n this.ClearImpactDamage();\n this.SetImpactDamageState(last[0], last[1], last[2], true);\n }\n }\n\n /** Requests a damage-locator filter pass. */\n @carbon.method\n @impl.implemented\n RunDamageLocatorFilter()\n {\n this.#damageLocatorFilterRequested = true;\n if (this.#damageFilterState === 0) this.#damageFilterState = 1;\n }\n\n /**\n * Clears all impact and damage effects on the impact overlay.\n */\n @carbon.method\n @impl.implemented\n ClearImpactDamage()\n {\n if (this.impactOverlay) this.impactOverlay.Clear();\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n const overlay = range.owner.GetDamageOverlay();\n if (overlay) overlay.Clear();\n }\n }\n\n /**\n * Clears all animations on the animation updater.\n */\n @carbon.method\n @impl.implemented\n ClearAnimations()\n {\n this.animationUpdater?.ClearAnimations?.();\n }\n\n /**\n * Creates an impact facing a position on the closest facing damage locator.\n */\n @carbon.method\n @impl.implemented\n CreateImpactFromPosition(position, direction, lifeTime, size)\n {\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\n }\n\n /**\n * Creates an impact effect on a damage locator through the impact overlay.\n */\n @carbon.method\n @impl.adapted\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\n {\n if (this.impactOverlay)\n {\n const configuration = this.impactOverlay.GetImpactConfiguration();\n if (configuration === ImpactConfiguration.IMPACT_ARMOR ||\n configuration === ImpactConfiguration.IMPACT_HULL)\n {\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n if (damageLocatorIndex < range.start || damageLocatorIndex >= range.start + range.count) continue;\n return this.#EnsureChildDamageOverlay(range).CreateImpact(\n damageLocatorIndex - range.start, size, false);\n }\n }\n return this.impactOverlay.CreateImpact(\n damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this);\n }\n return -1;\n }\n\n /**\n * Ends the current animation on the animation updater.\n */\n @carbon.method\n @impl.implemented\n EndAnimation()\n {\n this.animationUpdater?.EndAnimation?.();\n }\n\n /**\n * Freezes LOD selection at the current mesh and marks decal geometry\n * frozen.\n */\n @carbon.method\n @impl.implemented\n FreezeHighDetailMesh()\n {\n this.#allowLodSelection = false;\n for (const decal of this.decals)\n {\n decal?.SetHighDetailDecalState?.(true);\n }\n }\n\n /**\n * Gets the number of damage locators on this object.\n */\n @carbon.method\n @impl.implemented\n GetDamageLocatorCount()\n {\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\n }\n\n /**\n * Gets the number of locators in a named locator set.\n */\n @carbon.method\n @impl.implemented\n GetLocatorCount(locatorSetName)\n {\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\n }\n\n /**\n * Gets the first locator list whose set has the requested Carbon name.\n * The returned list remains owned by the locator set.\n */\n @carbon.method\n @impl.implemented\n GetLocatorsForSet(locatorSetName)\n {\n return this.#GetLocatorsForSet(locatorSetName);\n }\n\n /** Appends copies of a named locator set, merging with an existing authored set. */\n @carbon.method\n @impl.implemented\n MergeToLocatorSet(locatorSet)\n {\n const locators = locatorSet.GetLocators();\n if (!locators.length) return;\n\n this.InvalidateMergedLocators(\"structure\");\n const existing = this.locatorSets.find(set => set.HasName(locatorSet.GetName()));\n if (existing)\n {\n existing.Append(locators);\n return;\n }\n this.AddLocatorSet(locatorSet.GetName(), locators);\n }\n\n /** Adds a new authored locator set without replacing another set of the same name. */\n @carbon.method\n @impl.implemented\n AddLocatorSet(name, locators)\n {\n const locatorSet = new EveLocatorSets();\n locatorSet.Set(name, Array.from(locators));\n this.locatorSets.push(locatorSet);\n this.InvalidateMergedLocators(\"structure\");\n return locatorSet;\n }\n\n /** Removes all authored locator sets and invalidates every derived locator view. */\n @carbon.method\n @impl.implemented\n ClearLocatorSets()\n {\n this.locatorSets.length = 0;\n this.InvalidateMergedLocators(\"structure\");\n }\n\n /**\n * Gets the closest locator in a set to a world position, ignoring locator\n * facing. Returns -1 when the set is missing or empty.\n */\n @carbon.method\n @impl.implemented\n GetCloseLocatorIndex(position, locatorSetName)\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (!locators)\n {\n return -1;\n }\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\n const locatorPosition = vec3.create();\n const locatorDirection = vec3.create();\n let closestLength = Infinity;\n let closestIndex = -1;\n for (let index = 0; index < locators.length; index++)\n {\n if (locatorSetName === EveSpaceObject2.#damageLocatorSetName &&\n index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\n this.GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index],\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\n if (distance < closestLength)\n {\n closestIndex = index;\n closestLength = distance;\n }\n }\n return closestIndex;\n }\n\n /**\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\n * script-exposed.\n */\n @carbon.method\n @impl.adapted\n GetGoodLocatorIndex(position, locatorSetName)\n {\n return this.GetCloseLocatorIndex(position, locatorSetName);\n }\n\n /**\n * Gets the local direction of an indexed damage locator, (0,0,0) for\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\n * GetDamageLocatorDirectionLocal).\n */\n @carbon.method\n @impl.adapted\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\n {\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\n if (!targetableCall) out = inWorldSpaceOrOut;\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\n return targetableCall ? false : out;\n }\n const position = vec3.create();\n this.GetLocatorInObjectSpace(position, out, locators[index], index);\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\n return targetableCall ? true : out;\n }\n\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n else vec3.set(out, 0, 0, 0);\n return false;\n }\n this.GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index], index);\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\n return true;\n }\n\n /**\n * Gets a damage locator's BIND position in object space - the merged set's\n * authored position, no animation (Carbon EveSpaceObject2.cpp:2785-2796).\n * Impact overlays seed decals here so they stay put on animated parts.\n */\n @carbon.method\n @impl.implemented\n GetDamageLocatorBindPosition(index, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n vec3.set(out, 0, 0, 0);\n return false;\n }\n vec3.copy(out, locators[index].position);\n return true;\n }\n\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\n @carbon.method\n @impl.implemented\n GetClosestDamageLocatorIndex(position)\n {\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\n }\n\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\n GetGoodDamageLocatorIndex(position)\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators) return 0;\n\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\n let minDistance = Infinity;\n let maxDistance = Number.MIN_VALUE;\n let bestDirectionFit = 0;\n\n for (let index = 0; index < locators.length; index++)\n {\n if (index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\n const locator = locators[index];\n this.GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator, index);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\n minDistance = Math.min(minDistance, distance);\n maxDistance = Math.max(maxDistance, distance);\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\n }\n\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\n let bestFit = 1;\n let bestLocator = -1;\n for (let index = 0; index < locators.length; index++)\n {\n if (index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\n this.GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index], index);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\n const range = maxDistance - minDistance;\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\n let value = 2 * scale - 1;\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\n value *= 0.5;\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\n const fit = Math.abs(value - desiredFit);\n if (fit < bestFit)\n {\n bestFit = fit;\n bestLocator = index;\n }\n }\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\n }\n\n /** Gets the model-scaled target radius. */\n @carbon.method\n @impl.implemented\n GetRadius()\n {\n return this.GetBoundingSphereRadius();\n }\n\n /** Computes a miss point just outside the model silhouette. */\n @carbon.method\n @impl.implemented\n GetMissPosition(hit, source, out = vec3.create())\n {\n if (this.boundingSphereRadius > 0)\n {\n vec3.copy(out, this.modelWorldPosition);\n if (hit && source)\n {\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\n }\n }\n else\n {\n this.GetDamageLocatorPosition(-1, true, out);\n }\n return out;\n }\n\n /** Gets the current target impact material. */\n @carbon.method\n @impl.implemented\n GetImpactConfiguration()\n {\n return this.impactOverlay\n ? this.impactOverlay.GetImpactConfiguration()\n : ImpactConfiguration.IMPACT_INVALID;\n }\n\n /** Replaces the ship impact overlay. */\n @carbon.method\n @impl.implemented\n SetImpactOverlay(overlay)\n {\n this.impactOverlay = overlay;\n }\n\n /** Returns the ship impact overlay. */\n @carbon.method\n @impl.implemented\n GetImpactOverlay()\n {\n return this.impactOverlay;\n }\n\n /** Reports whether impacts currently use the authored shield ellipsoid. */\n @carbon.method\n @impl.implemented\n HasImpactConfigurationShield()\n {\n return !!this.impactOverlay?.HasShieldEllipsoid()\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\n }\n\n /** Resolves a shield-ray or damage-locator collision point. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\n {\n if (!this.HasImpactConfigurationShield())\n {\n this.GetDamageLocatorPosition(locator, true, out);\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\n }\n\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\n this.GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\n if (t !== null && t >= -1 && t <= 1)\n {\n vec3.transformMat4(out, out, this.worldTransform);\n return true;\n }\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\n {\n vec3.copy(out, posNow);\n return true;\n }\n return false;\n }\n\n /** Updates an existing impact overlay entry. */\n @carbon.method\n @impl.implemented\n UpdateImpact(out, direction, impactIndex)\n {\n if (!this.impactOverlay) return false;\n if (this.impactOverlay.UpdateImpact(out, direction, impactIndex)) return true;\n\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n const overlay = range.owner.GetDamageOverlay();\n if (overlay && overlay.HasImpact(impactIndex)) return true;\n }\n return false;\n }\n\n /**\n * Gets the local position of an indexed damage locator, (0,0,0) for\n * indices out of range.\n */\n @carbon.method\n @impl.implemented\n GetDamageLocator(index, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.GetLocatorInObjectSpace(out, direction, locators[index], index);\n return out;\n }\n\n /**\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\n * indices out of range (returned untransformed, as Carbon does).\n */\n @carbon.method\n @impl.implemented\n GetTransformedDamageLocator(index, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\n if (!locators || !(index >= 0 && index < locators.length))\n {\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.GetLocatorInObjectSpace(out, direction, locators[index], index);\n return vec3.transformMat4(out, out, this.worldTransform);\n }\n\n /**\n * Checks whether this object is in impostor mode. The impostor system that\n * raises the flag is unported, so this reports the default until then.\n */\n @carbon.method\n @impl.adapted\n IsImpostor()\n {\n return this.#impostorMode;\n }\n\n /**\n * Gets a locator position from a named set. Out-of-range or missing-set\n * queries return the world translation in world space and (0,0,0) in\n * object space, as Carbon does.\n */\n @carbon.method\n @impl.implemented\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (index < 0 || !locators || index >= locators.length)\n {\n if (inWorldSpace)\n {\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\n }\n return vec3.set(out, 0, 0, 0);\n }\n const direction = vec3.create();\n this.GetLocatorInObjectSpace(out, direction, locators[index],\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\n if (inWorldSpace)\n {\n vec3.transformMat4(out, out, this.worldTransform);\n }\n return out;\n }\n\n /**\n * Gets a locator direction from a named set. Out-of-range or missing-set\n * queries return (0,1,0), as Carbon does.\n */\n @carbon.method\n @impl.implemented\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (index < 0 || !locators || index >= locators.length)\n {\n return vec3.set(out, 0, 1, 0);\n }\n const position = vec3.create();\n this.GetLocatorInObjectSpace(position, out, locators[index],\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\n if (inWorldSpace)\n {\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\n }\n return out;\n }\n\n /**\n * Raises a named controller event on this hull's controllers and forwards it\n * to the effect children and overlay effects.\n */\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n const eventName = String(name ?? \"\");\n for (const controller of this.controllers)\n {\n controller?.HandleEvent(eventName);\n }\n for (const child of this.effectChildren)\n {\n child?.HandleControllerEvent(eventName);\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.HandleControllerEvent(eventName);\n }\n }\n\n /**\n * Plays an animation once, replacing the current one\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\n */\n @carbon.method\n @impl.adapted\n PlayAnimation(animName)\n {\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\n }\n\n /**\n * Chains an animation once after the current one (Carbon ChainAnimation).\n */\n @carbon.method\n @impl.implemented\n ChainAnimation(animName)\n {\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\n }\n\n /**\n * Chains an animation with explicit loop, start, and speed settings\n * (Carbon ChainAnimationEx).\n */\n @carbon.method\n @impl.implemented\n ChainAnimationEx(animName, loopCount, start, speed)\n {\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\n }\n\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\n // into the animation updater, which owns playback state; a missing updater\n // is a Carbon-faithful no-op.\n\n /**\n * Forwards a playback request to the animation updater, which owns all\n * animation state; a hull without an updater does nothing, as in Carbon.\n */\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\n {\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\n }\n\n /**\n * Recalculates the authored bounding sphere from the mesh geometry\n * resource. Fails when no mesh or ready geometry resource is attached.\n */\n @carbon.method\n @impl.adapted\n RebuildBoundingSphereInformation()\n {\n const mesh = this.mesh;\n if (!mesh)\n {\n return false;\n }\n const geometryRes = mesh.GetGeometryResource();\n if (!geometryRes || !geometryRes.IsGood?.())\n {\n return false;\n }\n geometryRes.RecalculateBoundingSphere?.();\n const sphere = vec4.create();\n geometryRes.GetBoundingSphere(mesh.GetMeshIndex?.() ?? 0, sphere);\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\n this.boundingSphereRadius = sphere[3];\n return true;\n }\n\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\n SetBoundingSphereInformation(sphere)\n {\n if (sphere?.center)\n {\n vec3.copy(this.boundingSphereCenter, sphere.center);\n this.boundingSphereRadius = Number(sphere.radius);\n }\n else\n {\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\n }\n return this;\n }\n\n /**\n * Returns a plain-object snapshot of the controller variables currently\n * stamped on this hull.\n */\n @carbon.method\n @impl.implemented\n GetControllerVariables()\n {\n return Object.fromEntries(this.#controllerVariables);\n }\n\n /** Gets Carbon's most recently selected geometry LOD. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\n GetLastUsedMeshLod()\n {\n const geometryResource = this.mesh?.GetGeometryResource();\n if (!geometryResource) return -1;\n if (!this.#allowLodSelection) return 0;\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\n }\n\n /**\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\n * to GetEveLocatorTransform): the identity for unknown names, the animated\n * bone world transform when the animation updater resolves the name, else\n * the authored locator transform.\n */\n @carbon.method\n @impl.adapted\n GetLocatorTransform(name, out = mat4.create())\n {\n const target = String(name ?? \"\");\n let locator = null;\n for (const candidate of this.locators)\n {\n if (candidate?.GetName?.() === target)\n {\n locator = candidate;\n break;\n }\n }\n if (!locator)\n {\n return mat4.identity(out);\n }\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\n {\n return out;\n }\n return mat4.copy(out, locator.GetTransform());\n }\n\n /**\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\n * enabled, else the mesh box, else the cached box (at worst it lags one\n * frame). With out arguments it fills them and returns true; without, it\n * returns { min, max }.\n */\n @carbon.method\n @impl.adapted\n GetLocalBoundingBox(minBounds, maxBounds)\n {\n const min = vec3.create();\n const max = vec3.create();\n const updater = this.animationUpdater;\n if (this.dynamicBoundingSphereEnabled && updater && updater.IsInitialized())\n {\n const sphere = vec4.create();\n updater.GetDynamicBounds(sphere, min, max);\n vec3.copy(this.#localAabbMin, min);\n vec3.copy(this.#localAabbMax, max);\n }\n else if (this.mesh && this.mesh.GetBoundingBox(min, max))\n {\n vec3.copy(this.#localAabbMin, min);\n vec3.copy(this.#localAabbMax, max);\n }\n else\n {\n vec3.copy(min, this.#localAabbMin);\n vec3.copy(max, this.#localAabbMax);\n }\n if (minBounds && maxBounds)\n {\n vec3.copy(minBounds, min);\n vec3.copy(maxBounds, max);\n return true;\n }\n return { min, max };\n }\n\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\n @carbon.method\n @impl.adapted\n GetWorldBoundingBox(minBounds, maxBounds)\n {\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\n box3.transformMat4(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\n const min = minBounds ?? vec3.create();\n const max = maxBounds ?? vec3.create();\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\n return minBounds && maxBounds ? true : { min, max };\n }\n\n /** Reports whether the attached mesh has a ready geometry resource. */\n @carbon.method\n @impl.implemented\n IsBoundingBoxReady()\n {\n if (!this.mesh) return false;\n const geometryResource = this.mesh.GetGeometryResource();\n return geometryResource ? geometryResource.IsGood() : false;\n }\n\n /**\n * Gets Carbon's realized world sphere, optionally accumulated with transform\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\n */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = sph3.create(), query = 0)\n {\n if (this.boundingSphereRadius <= 0 && this.#dynamicBoundingSphere[3] <= 0) return false;\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\n if (!query || !this.DisplayChildren()) return true;\n for (const child of this.children)\n {\n if (child.GetBoundingSphere(EveSpaceObject2.#childSphere, query))\n {\n sph3.union(out, out, EveSpaceObject2.#childSphere);\n }\n }\n for (const child of this.effectChildren)\n {\n if (child.GetBoundingSphere(EveSpaceObject2.#childSphere, query))\n {\n sph3.union(out, out, EveSpaceObject2.#childSphere);\n }\n }\n return true;\n }\n\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\n EstimatePixelDiameter(frustum)\n {\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\n {\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\n }\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\n return this.estimatedPixelDiameter;\n }\n\n /** Reports the result of the latest Carbon visibility update. */\n @carbon.method\n @impl.implemented\n IsInFrustum()\n {\n return this.#isInFrustum;\n }\n\n /**\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\n * when one is published.\n */\n @carbon.method\n @impl.implemented\n GetBoundingSphereCenter(out = vec3.create())\n {\n if (this.#dynamicBoundingSphere[3] !== -1)\n {\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\n }\n return vec3.copy(out, this.boundingSphereCenter);\n }\n\n /**\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\n * skinned sphere when one is published.\n */\n @carbon.method\n @impl.implemented\n GetBoundingSphereRadius()\n {\n if (this.#dynamicBoundingSphere[3] !== -1)\n {\n return this.modelScale * this.#dynamicBoundingSphere[3];\n }\n return this.modelScale * this.boundingSphereRadius;\n }\n\n /**\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\n */\n @carbon.method\n @impl.adapted\n GetBoneCount()\n {\n const updater = this.animationUpdater;\n if (!updater)\n {\n return 0;\n }\n if (updater.IsUsingCMF?.())\n {\n if (!updater.HasMeshBinding?.())\n {\n return 0;\n }\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\n }\n return updater.GetMeshBindingBoneCount?.() ?? 0;\n }\n\n /**\n * Pushes shield, armor and hull damage levels to the impact overlay and\n * mirrors them into the ShieldDamage, ArmorDamage and HullDamage controller\n * variables so bound effects follow.\n */\n @carbon.method\n @impl.adapted\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\n {\n if (this.impactOverlay)\n {\n this.impactOverlay.GetDamageOverlay().SetEnabledDamageLocators(this.#damageLocatorEnabled);\n this.impactOverlay.SetDamageState(shield, armor, hull, doCreateArmorImpacts);\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n this.#EnsureChildDamageOverlay(range).SetDamageState(\n shield, armor, hull, doCreateArmorImpacts);\n }\n }\n this.SetControllerVariable(\"ShieldDamage\", shield);\n this.SetControllerVariable(\"ArmorDamage\", armor);\n this.SetControllerVariable(\"HullDamage\", hull);\n }\n\n /**\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\n */\n @carbon.method\n @impl.implemented\n SetImpactAnimation(name, enable, duration)\n {\n if (!this.impactOverlay) return;\n this.impactOverlay.ToggleEffect(name, enable, duration);\n if (name === \"shieldboost\" || name === \"shieldhardening\") return;\n\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n this.#EnsureChildDamageOverlay(range).ToggleEffect(name, enable, duration);\n }\n }\n\n /** Creates and synchronizes the damage overlay owned by one child-locator range. */\n #EnsureChildDamageOverlay(range)\n {\n let overlay = range.owner.GetDamageOverlay();\n if (!overlay)\n {\n overlay = range.owner.EnsureDamageOverlay();\n const shipDamage = this.impactOverlay.GetDamageOverlay();\n // The part's OWN armour shader (Carbon EveSpaceObject2.cpp:3529, commit\n // 6975d9f1): an animated part needs the skinned variant, which the\n // ship-wide effect is not.\n overlay.SetArmorDamageShaderEffect(range.owner.GetArmorDamageShaderEffect());\n const flicker = shipDamage.GetHullDamageFlickerCurve();\n if (flicker) overlay.SetHullDamageFlickerCurve(TriPerlinCurve.from(flicker.GetValues()));\n overlay.SetSeed(shipDamage.GetSeed() + range.owner.GetPartTag());\n }\n\n overlay.SetDamageLocatorCount(range.count);\n overlay.SetEnabledDamageLocators(\n this.#damageLocatorEnabled.slice(range.start, range.start + range.count));\n overlay.SetImpactIndexSource(this.impactOverlay.GetDamageOverlay());\n return overlay;\n }\n\n /**\n * Stores a controller variable on the hull and pushes it to the controllers,\n * effect children and overlay effects; the stored value is replayed onto\n * controllers and children added later.\n */\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n const key = String(name ?? \"\");\n const next = Number(value);\n this.#controllerVariables.set(key, next);\n for (const controller of this.controllers)\n {\n controller?.SetVariable(key, next);\n }\n for (const child of this.effectChildren)\n {\n child?.SetControllerVariable(key, next);\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.SetControllerVariable(key, next);\n }\n }\n\n /**\n * Forwards a procedural-container variable to every effect child; the hull\n * itself keeps no copy.\n */\n @carbon.method\n @impl.implemented\n SetProceduralContainerVariable(name, value)\n {\n for (const child of this.effectChildren)\n {\n child?.SetProceduralContainerVariable?.(name, value);\n }\n }\n\n /**\n * Starts this hull's controllers and those of its effect children and overlay\n * effects.\n */\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n for (const controller of this.controllers)\n {\n controller?.Start();\n }\n for (const child of this.effectChildren)\n {\n child?.StartControllers();\n }\n for (const overlay of this.overlayEffects)\n {\n overlay?.StartControllers();\n }\n }\n\n /**\n * Applies bone and model transforms to locators and returns\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\n * does (TransformLocators maps to PyTransformLocators). Accepts either\n * locator records ({ position, direction, boneIndex }, Carbon's\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\n * tuple shape it returns.\n */\n @carbon.method\n @impl.adapted\n TransformLocators(locators = [])\n {\n const result = [];\n for (const locator of locators ?? [])\n {\n const record = Array.isArray(locator)\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\n const boneIndex = Number(record.boneIndex ?? 0);\n this.#TransformLocator(position, rotation, boneIndex);\n if (this.modelTranslationCurve || this.modelRotationCurve)\n {\n this.#ApplyModelTransform(position, rotation);\n }\n result.push([position, rotation, boneIndex]);\n }\n return result;\n }\n\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\n // bone matrix; without bone data the authored values pass through.\n\n /**\n * Applies the mesh bone matrix to a locator position and rotation for\n * bone-attached locators; the authored values pass through unchanged when\n * there is no usable bone data.\n */\n #TransformLocator(position, rotation, boneIndex)\n {\n const updater = this.animationUpdater;\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\n {\n return;\n }\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\n if (!bone)\n {\n return;\n }\n vec3.transformMat4(position, position, bone);\n const boneRotation = mat4.getRotation(quat.create(), bone);\n quat.multiply(rotation, boneRotation, rotation);\n }\n\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\n // origin (pure GetValueAt, no playback advance): translation adds, model\n // rotation rotates the position and pre-multiplies.\n\n /**\n * Applies the model translation and rotation curves sampled at time 0 to a\n * locator position and rotation, matching Carbon's Blue locator surface, which\n * reads the curves without advancing playback.\n */\n #ApplyModelTransform(position, rotation)\n {\n if (this.modelTranslationCurve)\n {\n const translation = vec3.create();\n this.modelTranslationCurve.GetValueAt?.(0, translation);\n vec3.add(position, position, translation);\n }\n if (this.modelRotationCurve)\n {\n const modelRotation = quat.create();\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\n vec3.transformQuat(position, position, modelRotation);\n quat.multiply(rotation, modelRotation, rotation);\n }\n }\n\n // Carbon GetLocatorsForSet: first set matching the name wins.\n\n /**\n * Returns the locator list of the first locator set carrying the name, or null\n * when no set matches; the list stays owned by the locator set.\n */\n #GetLocatorsForSet(locatorSetName)\n {\n const target = String(locatorSetName ?? \"\");\n this.EnsureChildLocatorMerged();\n for (const set of this.#mergedLocatorSets)\n {\n if (set.HasName(target))\n {\n return set.GetLocators();\n }\n }\n return null;\n }\n\n /**\n * Writes a locator's object-space position and direction (Carbon\n * EveSpaceObject2.cpp:3751-3772, rewritten upstream by 3d988b1d).\n *\n * A merged damage locator (mergedDamageIndex >= 0, indexing the merged\n * damage set) delegates to the owning child's animated pose - the locator's\n * boneIndex addresses the CHILD's skeleton, never this object's - then\n * lifts the result through the range's childToObject transform; Carbon\n * normalizes the direction HERE but not in EveGetLocatorPose, and that\n * asymmetry is preserved. Every other locator resolves against this\n * object's own animation updater.\n *\n * Overridable on purpose: Carbon's EveSwarm overrides this.\n */\n @carbon.method\n @impl.implemented\n GetLocatorInObjectSpace(outPosition, outDirection, locator, mergedDamageIndex = -1)\n {\n if (mergedDamageIndex >= 0)\n {\n this.EnsureChildLocatorMerged();\n for (const range of this.#mergedDamageLocatorSources)\n {\n if (range.owner && mergedDamageIndex >= range.start && mergedDamageIndex < range.start + range.count)\n {\n if (range.owner.GetDamageLocatorAnimatedLocal(mergedDamageIndex - range.start, outPosition, outDirection))\n {\n vec3.transformMat4(outPosition, outPosition, range.childToObject);\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, range.childToObject);\n vec3.normalize(outDirection, outDirection);\n return;\n }\n break;\n }\n }\n }\n\n EveGetLocatorPose(outPosition, outDirection, this.animationUpdater, locator);\n }\n\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\n // set is missing, -1 when no locator faces the position.\n\n /**\n * Returns the index of the nearest locator in a named set that faces the given\n * world position - 0 when the set is missing, -1 when no locator faces the\n * position.\n */\n #GetClosestLocatorIndex(position, locatorSetName)\n {\n const locators = this.#GetLocatorsForSet(locatorSetName);\n if (!locators)\n {\n return 0;\n }\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\n const locatorPosition = vec3.create();\n const locatorDirection = vec3.create();\n let closestLength = Infinity;\n let closestIndex = -1;\n for (let index = 0; index < locators.length; index++)\n {\n if (locatorSetName === EveSpaceObject2.#damageLocatorSetName &&\n index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\n this.GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index],\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\n {\n continue;\n }\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\n if (distance < closestLength)\n {\n closestIndex = index;\n closestLength = distance;\n }\n }\n return closestIndex;\n }\n\n /**\n * Reports whether a locator faces a position, by testing that stepping the\n * object-space position back along the locator direction shortens it.\n */\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\n {\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\n }\n\n /** Rotates a direction by a matrix's rotation basis, ignoring its translation. */\n static #TransformNormal(out, direction, matrix)\n {\n const x = direction[0];\n const y = direction[1];\n const z = direction[2];\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\n return out;\n }\n\n /** Carbon's authored-or-derived local shape ellipsoid query. */\n @carbon.method\n @impl.implemented\n GetShapeEllipsoid(outCenter, outRadii)\n {\n if (this.shapeEllipsoidRadius[0] > 0)\n {\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\n }\n else\n {\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\n if (bounds === false)\n {\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\n }\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\n }\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\n }\n\n /**\n * Maps the negated dot product of a locator direction and an offset direction\n * onto Carbon's square-root fit score, the ranking used to pick a varied\n * damage locator.\n */\n static #GetDirectionFit(v0, v1)\n {\n const direction = -vec3.dot(v0, v1);\n return direction < 0\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\n }\n\n /**\n * Intersects a ray with an axis-aligned ellipsoid in the ellipsoid's own space and writes the hit point into out.\n * @returns {number|null} The ray parameter at the hit, or null when the ray is degenerate or misses.\n */\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\n {\n const vx = direction[0] / radii[0];\n const vy = direction[1] / radii[1];\n const vz = direction[2] / radii[2];\n const sx = (origin[0] - center[0]) / radii[0];\n const sy = (origin[1] - center[1]) / radii[1];\n const sz = (origin[2] - center[2]) / radii[2];\n const vv = vx * vx + vy * vy + vz * vz;\n if (!(vv > 0)) return null;\n const vs = vx * sx + vy * sy + vz * sz;\n const ss = sx * sx + sy * sy + sz * sz;\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\n if (discriminant < 0) return null;\n discriminant = Math.sqrt(discriminant);\n let t = -discriminant - vs / vv;\n if (t < 0) t = discriminant - vs / vv;\n vec3.scaleAndAdd(out, origin, direction, t);\n return t;\n }\n\n /** Reports whether a point lies inside an axis-aligned ellipsoid. */\n static #IsPointInsideEllipsoid(center, radii, point)\n {\n const x = (point[0] - center[0]) / radii[0];\n const y = (point[1] - center[1]) / radii[1];\n const z = (point[2] - center[2]) / radii[2];\n return x * x + y * y + z * z <= 1;\n }\n\n // Mesh bone matrices come from the animation updater; only mat4-shaped\n // entries are usable.\n\n /**\n * Unpacks one bone from the updater's palette into a mat4, or null when the\n * index is out of range.\n *\n * The palette is Carbon's storage - one contiguous Float4x3 buffer, stride\n * 12 - so a bone is expanded rather than borrowed. Carbon does the same at\n * every read site with TriMatrixCopyFrom3x4.\n */\n static #GetBoneMatrix(updater, boneIndex)\n {\n const bones = updater.GetMeshBoneMatrixList?.();\n\n if (!bones || boneIndex < 0 || (boneIndex + 1) * 12 > bones.length)\n {\n return null;\n }\n\n return MatrixCopyFrom3x4(mat4.create(), bones, boneIndex);\n }\n\n /**\n * Replays every stored controller variable onto a newly added controller or\n * effect child through the named setter, so late additions start with the same\n * state.\n */\n static #ApplyControllerVariables(target, variables, methodName)\n {\n const setter = target?.[methodName];\n if (typeof setter !== \"function\")\n {\n return;\n }\n for (const [name, value] of variables)\n {\n setter.call(target, name, value);\n }\n }\n\n /**\n * Samples a curve into out through whichever of Update or GetValueAt it\n * exposes, writing the fallback when there is no curve and copying back curves\n * that return a new array instead of filling out.\n */\n static #UpdateCurve(curve, time, out, fallback)\n {\n if (!curve)\n {\n for (let index = 0; index < out.length; index++)\n {\n out[index] = fallback[index];\n }\n return out;\n }\n\n let result;\n if (typeof curve.Update === \"function\")\n {\n result = curve.Update(time, out);\n }\n else if (typeof curve.GetValueAt === \"function\")\n {\n result = curve.GetValueAt(time, out);\n }\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\n {\n for (let index = 0; index < out.length; index++)\n {\n out[index] = result[index];\n }\n }\n return out;\n }\n\n /**\n * Reads a numeric value from the update context, preferring a getter method\n * and falling back to the named properties, and yields 0 when nothing supplies\n * it.\n */\n static #GetContextValue(context, methodName, ...propertyNames)\n {\n const method = context?.[methodName];\n if (typeof method === \"function\")\n {\n return Number(method.call(context)) || 0;\n }\n for (const propertyName of propertyNames)\n {\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\n {\n return Number(context[propertyName]) || 0;\n }\n }\n return 0;\n }\n\n /**\n * Returns a world sphere's on-screen diameter in pixels from the frustum's\n * exact query, or 0 when the frustum does not expose it.\n */\n static #GetPixelSize(frustum, sphere)\n {\n const method = frustum?.GetPixelSizeAccross;\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\n }\n\n /**\n * Returns a world sphere's on-screen diameter in pixels, preferring the\n * frustum's cheaper estimated query and falling back to the exact one, or 0\n * when the frustum exposes neither.\n */\n static #GetEstimatedPixelSize(frustum, sphere)\n {\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\n }\n\n /** Writes a center and radius into a caller-owned sph3. */\n static #SetSphere(out, center, radius)\n {\n return sph3.set(out, center[0], center[1], center[2], radius);\n }\n\n static #zero = Object.freeze([0, 0, 0]);\n\n static #unitY = Object.freeze([0, 1, 0]);\n\n static #locatorDirection = vec3.create();\n static #locatorPosition = vec3.create();\n static #locatorOffset = vec3.create();\n static #objectPosition = vec3.create();\n static #missOffset = vec3.create();\n static #missDirection = vec3.create();\n static #rayOrigin = vec3.create();\n static #rayEnd = vec3.create();\n static #rayDirection = vec3.create();\n static #ellipsoidCenter = vec3.create();\n static #ellipsoidRadii = vec3.create();\n static #boundsMin = vec3.create();\n static #boundsMax = vec3.create();\n static #childSphere = sph3.create();\n static #localSphere = sph3.create();\n static #worldSphere = sph3.create();\n static #localBox = box3.create();\n static #worldBox = box3.create();\n\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\n\n static #identityTransform = mat4.create();\n\n static #damageLocatorSetName = \"damage\";\n\n static ReflectionMode = ReflectionMode;\n\n static Tr2Lod = Tr2Lod;\n\n static ImpactConfiguration = ImpactConfiguration;\n\n}\n\nCjsSchema.decorateField(EveSpaceObject2, \"meshLod\", io.persist, type.objectRef(\"Tr2MeshBase\"));\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","_withIEveInheritPrope","withIEveInheritPropertiesOwner","withIEveSpaceObject2","withITr2Renderable","withITr2BoundingBox","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_spaceObjectShipData","_init_extra_spaceObjectShipData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_damageLocatorAutoFilterEnabled","_init_extra_damageLocatorAutoFilterEnabled","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","carbon","method","impl","adapted","implemented","reason","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","spaceObjectShipData","lastDamageLocatorHit","damageLocatorAutoFilterEnabled","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","IEveSpaceObject2ParentData","RawData","meshLod","Initialize","controller","IsLinked","Link","child","SetOwner","InvalidateMergedLocators","EnsureChildLocatorMerged","SetDamageLocatorCount","GetDamageLocatorCount","GetMesh","SetMesh","GetOverlayEffects","AddController","push","AddObserver","observer","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","IEveInheritPropertiesOwner","light","GetEffectChildByName","target","String","GetName","AddToEffectChildrenList","AddLight","ClearLights","length","RemoveFromEffectChildrenList","index","indexOf","splice","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","SetAndTranspose","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","PrepareShaderData","updateContext","GetActivationStrength","GetBoundingSphereRadius","normalizedBoundingRadius","clipOffset","insideSpherePercentage","Math","min","dissolveRadius","center","GetBoundingSphereCenter","add","clipRadiusSq","sign","Set","dissolveRadius2","UpdateShLighting","manager","coefficients","Get","fill","lowThreshold","GetLighting","mediumThreshold","intensityFadeRadius","intensity","max","SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR","ClearShLighting","GetParentData","out","transform","killCount","shipData","clipRadius2Sq","clipFactor","clipFactor2","shLighting","customData","GetPerObjectStructs","vsData","psData","CopyFrom","vs","ps","UpdateSyncronous","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateDamageLocatorFilter","UpdateAsyncronous","threshold","frequency","Invalidate","previousActivationStrength","SetControllerVariable","shapeCenter","shapeRadius","GetShapeEllipsoid","GetDataTextureOffset","slot","CUSTOM_MASK_MAX","FillPerObjectData","EveCustomMask","ZeroPerObjectData","curveSet","renderContext","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","bones","boneCount","getBoneList","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","parentData","decal","SetBoneMatrix","Infinity","UseWithScreenSize","GetRenderables","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","GetBatches","batches","batchType","perObjectData","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","lod","GetMeshLod","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetPickingBatches","pickTypes","TR2_PICK_TYPE_DEFAULT","Tr2PickType","PICK_TYPE_PICKING","TRIBATCHTYPE_PICKING","PICK_TYPE_OPAQUE","TRIBATCHTYPE_ADDITIVE","PICK_TYPE_TRANSPARENT","GetID","_areaID","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","IsGood","overlayElements","CarbonVertexElements","GetMeshVertexElements","overlayDeclaration","Tr2EffectStateManager","getVertexDeclarationHandle","effects","overlayType","GetType","effect","#CommitBlockBatch","priority","vertexDeclaration","SetPriority","SetVertexDeclaration","draw","resolveDrawArguments","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","#OverlayEffectsFor","GetEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","_accumulator","GetMeshBoneCount","SetIndex","GetShadowPerObjectData","accumulator","GetLights","lightManager","SetBrightnessMultiplier","IsCastingShadow","cameraFrustum","shadowFrustum","renderReason","sizeInShadowOut","Tr2RenderReason","TR2RENDERREASON_REFLECTION","ShouldReflect","sizeInShadow","IsVisible","GetSizeInShadow","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetModelCenterWorldPosition","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","childSources","CollectOwnedLocatorSets","authored","GetLocators","EveLocatorSets","locatorTransform","transformed","source","sourceSet","sets","merged","find","HasName","SetName","locator","fromRotationTranslationScale","direction","position","childToObject","result","Locator","getTranslation","getRotation","normalize","getScaling","boneIndex","partTag","owner","GetPartTag","#ReleaseDamageFilterSessions","occluder","ResetRayCaster","#CollectDamageFilterOccluders","IsPrepared","areaStart","EveCollectAreas","areaCount","fromObject","childGeometry","CollectOwnedGeometry","PrepareRayCaster","#AreDamageFilterOccludersReady","HasRayCasterPreparationFailed","IsRayCasterReady","#RefreshDamageLocatorMask","damageLocators","map","transformQuat","origin","scaleAndAdd","occluded","backfacing","rayLength","frontFaceMinDistance","rayOrigin","rayDirection","poolIndex","areaIndex","hit","GetIntersectionPoints","alphaCutout","dot","unnormalizedNormal","reversed","Array","from","GetArmorImpactGoalCount","last","GetLastDamageState","ClearImpactDamage","SetImpactDamageState","RunDamageLocatorFilter","Clear","range","GetDamageOverlay","ClearAnimations","CreateImpactFromPosition","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","configuration","GetImpactConfiguration","ImpactConfiguration","IMPACT_ARMOR","IMPACT_HULL","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetLocatorCount","locatorSetName","GetLocatorsForSet","MergeToLocatorSet","locatorSet","existing","Append","AddLocatorSet","ClearLocatorSets","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","GetLocatorInObjectSpace","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetDamageLocatorBindPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","subtract","desiredFit","random","bestFit","bestLocator","value","sqrt","abs","fit","GetRadius","GetMissPosition","directionLength","offsetLength","IMPACT_INVALID","SetImpactOverlay","GetImpactOverlay","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","HasImpact","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","shield","armor","hull","doCreateArmorImpacts","SetEnabledDamageLocators","SetDamageState","SetImpactAnimation","enable","duration","ToggleEffect","#EnsureChildDamageOverlay","EnsureDamageOverlay","shipDamage","SetArmorDamageShaderEffect","GetArmorDamageShaderEffect","flicker","GetHullDamageFlickerCurve","SetHullDamageFlickerCurve","TriPerlinCurve","GetValues","SetSeed","GetSeed","slice","SetImpactIndexSource","key","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","record","isArray","#TransformLocator","bone","boneRotation","#ApplyModelTransform","translation","GetValueAt","#GetLocatorsForSet","outPosition","outDirection","mergedDamageIndex","GetDamageLocatorAnimatedLocal","EveGetLocatorPose","#GetClosestLocatorIndex","outCenter","outRadii","bounds","lerp","CUSTOM_MASK_COUNT","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","vx","vy","vz","sx","sy","sz","vv","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","GetMeshBoneMatrixList","MatrixCopyFrom3x4","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","freeze","ReflectionMode","constructor","CjsSchema","decorateField"],"mappings":"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"}
1
+ {"version":3,"file":"EveSpaceObject2.js","sources":["../../../../../src/trinity/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.h\r\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2.cpp\r\n// Source: trinity/trinity/Eve/SpaceObject/EveSpaceObject2_Blue.cpp\r\nimport \"../../../global/blue/registerTrinityEnums.js\";\r\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\r\nimport { IEveInheritPropertiesOwner } from \"../IEveInheritPropertiesOwner.js\";\r\nimport { IEveSpaceObject2 } from \"../IEveSpaceObject2.js\";\r\nimport { ITr2BoundingBox } from \"#contracts\";\r\nimport { EveEntity } from \"../EveEntity.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\r\nimport { color } from \"#math/color\";\r\nimport { box3 } from \"#math/box3\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { sph3 } from \"#math/sph3\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { CjsModel } from \"#model\";\r\nimport { BLUELISTEVENT } from \"#consts/blue\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\r\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\r\nimport { MatrixCopyFrom3x4 } from \"../lights/lightConversion.js\";\r\nimport { getBoneList } from \"../../core/animation/Tr2GrannyAnimation.js\";\r\nimport { Tr2PerObjectData } from \"../../core/rawData/perObjectData/Tr2PerObjectData.js\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../core/batch/TriRenderBatch/index.js\";\r\nimport { Tr2EffectStateManager } from \"../../shader/Tr2EffectStateManager.js\";\r\nimport { CarbonVertexElements } from \"../../core/vertex/vertexUsage.js\";\r\nimport { RawData } from \"../../core/rawData/RawData.js\";\r\nimport { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from \"../../core/view/Tr2PickType.js\";\r\nimport { IEveSpaceObject2ParentData } from \"./IEveSpaceObject2ParentData.js\";\r\nimport { EveCustomMask } from \"../EveCustomMask.js\";\r\nimport { EveCollectAreas } from \"../child/EveSpaceObjectChild.js\";\r\nimport { EveGetLocatorPose, EveLocatorSets } from \"../locator/EveLocatorSets.js\";\r\nimport { Locator } from \"../locator/Locator.js\";\r\nimport { TriPerlinCurve } from \"../../curves/curve/TriPerlinCurve.js\";\r\nimport { ITr2Renderable } from \"../../core/ITr2Renderable.js\";\r\nimport { Tr2RenderReason } from \"../../generated/trinityCore/enums.js\";\r\n\r\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\r\n// per-frame path, copy-into, never allocate per call).\r\nconst TRANSPARENT_AABB_MIN = vec3.create();\r\nconst TRANSPARENT_AABB_MAX = vec3.create();\r\nconst TRANSPARENT_CENTER = vec3.create();\r\n\r\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\r\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\r\nconst OVERLAY_TYPE_ALL = 1;\r\n\r\n/**\r\n * The hull of an EVE space object - its mesh, locators, locator sets, decals,\r\n * attachments, lights, effect children, overlay effects, impact overlay and\r\n * controllers - together with the curve-driven world transform, visibility, LOD\r\n * and batch submission that drive them each frame.\r\n */\r\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\r\n@carbon.inherit(ITr2BoundingBox, ITr2Renderable, IEveSpaceObject2, IEveInheritPropertiesOwner)\r\nexport class EveSpaceObject2 extends EveEntity\r\n{\r\n\r\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\r\n @edit.notify\r\n @edit.persist\r\n @type.int32\r\n @type.enum(\"trinity.EntityComponents.ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n effectChildren = [];\r\n\r\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"IEveTransform\")\r\n children = [];\r\n\r\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\r\n @edit.notify\r\n @edit.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_mute (bool) [READWRITE, NOTIFY] */\r\n @edit.notify\r\n @edit.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\r\n @edit.readwrite\r\n @type.objectRef(\"EveChildInheritProperties\")\r\n inheritProperties = null;\r\n\r\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"EveCustomMask\")\r\n customMasks = [];\r\n\r\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"EveMeshOverlayEffect\")\r\n overlayEffects = [];\r\n\r\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\r\n @edit.read\r\n @type.objectRef(\"Tr2BindingVector3\")\r\n positionDelta = null;\r\n\r\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\r\n @edit.read\r\n @type.int32\r\n @type.enum(\"trinity.Tr2Lod\")\r\n lodLevel = -1;\r\n\r\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n /** m_isPickable (bool) [READWRITE] */\r\n @edit.readwrite\r\n @type.boolean\r\n isPickable = true;\r\n\r\n /** m_estimatedPixelDiameter (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n estimatedPixelDiameter = 0;\r\n\r\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n estimatedPixelDiameterWithChildren = 0;\r\n\r\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\r\n @edit.read\r\n @type.vec3\r\n generatedShapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\r\n @edit.read\r\n @type.vec3\r\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\r\n @edit.read\r\n @type.objectRef(\"Tr2GrannyAnimation\")\r\n animationUpdater = null;\r\n\r\n /** m_dna (std::string) [READ, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n dna = \"\";\r\n\r\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\r\n @edit.notify\r\n @edit.persist\r\n @type.boolean\r\n castShadow = false;\r\n\r\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n isAnimated = false;\r\n\r\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n dynamicBoundingSphereEnabled = false;\r\n\r\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"EveSpaceObjectDecal\")\r\n decals = [];\r\n\r\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\r\n @edit.notify\r\n @edit.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"EveLocator2\")\r\n locators = [];\r\n\r\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"EveImpactOverlay\")\r\n impactOverlay = null;\r\n\r\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n clipSphereCenter = vec3.create();\r\n\r\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\r\n @edit.notify\r\n @edit.readwrite\r\n @type.float32\r\n clipSphereFactor2 = 0;\r\n\r\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\r\n @edit.notify\r\n @edit.readwrite\r\n @type.float32\r\n clipSphereFactor = 0;\r\n\r\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n /** m_worldPosition (Vector3) [READ] */\r\n @edit.read\r\n @type.vec3\r\n worldPosition = vec3.create();\r\n\r\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n rotationCurve = null;\r\n\r\n /** m_worldRotation (Quaternion) [READ] */\r\n @edit.read\r\n @type.quat\r\n worldRotation = quat.create();\r\n\r\n /** m_modelScale (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n modelScale = 1;\r\n\r\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"EveLocatorSets\")\r\n locatorSets = [];\r\n\r\n /** m_activationStrength (float) [READWRITE] */\r\n @edit.readwrite\r\n @type.float32\r\n activationStrength = 1;\r\n\r\n /** m_albedoColor (Color) [READWRITE] */\r\n @edit.readwrite\r\n @type.color\r\n albedoColor = color.createLinear();\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @edit.notify\r\n @edit.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_update (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n update = true;\r\n\r\n /** m_secondaryLightingSphereRadius (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n secondaryLightingSphereRadius = 0;\r\n\r\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\r\n @edit.notify\r\n @edit.readwrite\r\n @type.float32\r\n dirtLevel = 0;\r\n\r\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\r\n @edit.readwrite\r\n @type.vec4\r\n customShaderData = vec4.create();\r\n\r\n /**\r\n * m_spaceObjectShipData (Vector4) [READ] - the packed shader ship data:\r\n * .y activation strength, .z dirt level, .w bounding-sphere radius\r\n * (PrepareShaderData, cpp:734-744). .x is authored elsewhere and left alone.\r\n */\r\n @edit.read\r\n @type.vec4\r\n spaceObjectShipData = vec4.create();\r\n\r\n /** m_lastDamageLocatorHit (int) [READ] */\r\n @edit.read\r\n @type.int32\r\n lastDamageLocatorHit = -1;\r\n\r\n @edit.notify\r\n @edit.readwrite\r\n @type.boolean\r\n damageLocatorAutoFilterEnabled = false;\r\n\r\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n boundingSphereRadius = -1;\r\n\r\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\r\n @edit.read\r\n @type.vec3\r\n modelWorldPosition = vec3.create();\r\n\r\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n modelTranslationCurve = null;\r\n\r\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n modelRotationCurve = null;\r\n\r\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n shapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n translationCurve = null;\r\n\r\n @edit.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @edit.read\r\n @type.mat4\r\n inverseWorldTransform = mat4.create();\r\n\r\n @edit.read\r\n @type.mat4\r\n lastWorldTransform = mat4.create();\r\n\r\n @edit.read\r\n @type.vec3\r\n worldVelocity = vec3.create();\r\n\r\n @edit.readwrite\r\n @type.objectRef(\"ITr2AudGeometry\")\r\n audioGeometry = null;\r\n\r\n @type.boolean\r\n isVisible = false;\r\n\r\n #controllerVariables = new Map([\r\n [\"DirtLevel\", 0],\r\n [\"ActivationStrength\", 1],\r\n [\"ShieldDamage\", 1],\r\n [\"ArmorDamage\", 1],\r\n [\"HullDamage\", 1],\r\n [\"ClipSphereFactor\", 0],\r\n [\"ClipSphereFactor2\", 0]\r\n ]);\r\n\r\n #lastUpdateTransformTime = null;\r\n\r\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\r\n // side updates curve sets only when it matches the frame time.\r\n #lastCurveUpdateTime = 0;\r\n\r\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\r\n // updater port publishes skinned bounds here.\r\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\r\n\r\n // Carbon keeps the realized world sphere separate from the authored local\r\n // sphere. UpdateWorldBounds refreshes it from PrepareShaderData, which is\r\n // Carbon's only refresh point - so a reader sees one value for a whole frame.\r\n #boundingSphereWorldRadius = -1;\r\n\r\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\r\n #isInFrustum = false;\r\n\r\n #isMeshVisible = false;\r\n\r\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\r\n\r\n #meshScreenSize = 0;\r\n\r\n #overlayMeshAreaBlocks = [ [], [] ];\r\n\r\n #shadowMeshOpaqueAreas = [];\r\n\r\n #cachedAreaBlocksBuilt = false;\r\n\r\n #mergedLocatorSets = [];\r\n\r\n #mergedDamageLocatorSources = [];\r\n\r\n #damageLocatorEnabled = [];\r\n\r\n #mergedLocatorSetsDirty = true;\r\n\r\n #damageLocatorFilterRequested = false;\r\n\r\n #damageFilterOccluders = [];\r\n\r\n // Carbon m_damageFilterAreas (EveSpaceObject2.h:829): the shared area pool\r\n // the occluders' areaStart/areaCount ranges index into.\r\n #damageFilterAreas = [];\r\n\r\n // 0 idle, 1 pending, 2 active raycast session. Carbon initializes Idle\r\n // (EveSpaceObject2.cpp:208); SOF's eager RunDamageLocatorFilter was removed\r\n // upstream (ae5680b3), so filtering runs only when requested or auto-enabled.\r\n #damageFilterState = 0;\r\n\r\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\r\n // LOD selection assigns a mesh (at worst it lags one frame).\r\n #localAabbMin = vec3.create();\r\n\r\n #localAabbMax = vec3.create();\r\n\r\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\r\n #allowLodSelection = true;\r\n\r\n // Carbon m_impostorMode: the impostor system that raises it is unported.\r\n #impostorMode = false;\r\n\r\n /** EVE_SPACEOBJECT_CUSTOWMASK_MAX (EveSpaceObject2.h:49) - custom-mask slots. */\r\n static CUSTOM_MASK_MAX = EveCustomMask.CUSTOM_MASK_COUNT;\r\n\r\n /**\r\n * Carbon g_secondaryLightingRadiusCutoffFactor (cpp:52), a registered engine\r\n * setting defaulting to 0.3. It scales this hull's bounding radius into the\r\n * cutoff below which a secondary light source is too small to matter.\r\n */\r\n static SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR = 0.3;\r\n\r\n /** Scratch for the per-frame shader-data fill; never allocate in it. */\r\n static #clipSphereCenterScratch = vec3.create();\r\n\r\n static #shapeCenterScratch = vec3.create();\r\n\r\n static #shapeRadiusScratch = vec3.create();\r\n\r\n // Carbon m_vsData / m_psData: the PERSISTENT per-object records. They are\r\n // owner-held members across frames rather than pool leases, because the\r\n // object fills them during update and reads them back afterwards\r\n // (cpp:3747 takes the world translation out of the STORED transposed matrix).\r\n // Carbon's paired m_perObjectDataVs/m_perObjectDataPs GPU buffers are the\r\n // engine's business; Invalidate on these records carries the same signal.\r\n /** The ParentData Carbon builds on the stack for the decal pass\r\n * (EveSpaceObject2.cpp:1696), held here so the pass does not allocate. */\r\n #decalParentData = new IEveSpaceObject2ParentData();\r\n\r\n #vsData = RawData.create(\"EveSpaceObjectVSData\");\r\n\r\n #psData = RawData.create(\"EveSpaceObjectPSData\");\r\n\r\n /** Alias for the mesh property; reads and writes go straight to mesh. */\r\n get meshLod()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n /** Alias for the mesh property; reads and writes go straight to mesh. */\r\n set meshLod(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n /**\r\n * Links the authored controllers, pushes authored inherit properties down to\r\n * the effect children and lights, and derives the impact overlay's damage\r\n * locator count from the \"damage\" locator set - which Carbon does at build\r\n * time - so a field-populated graph reaches the same live state as the\r\n * authoring path.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked())\r\n {\r\n controller?.Link(this);\r\n }\r\n }\r\n // Authored inherit properties propagate as part of the lifecycle so a\r\n // field-populated graph (values import, document hydration) matches the\r\n // SetInheritProperties authoring path.\r\n if (this.inheritProperties)\r\n {\r\n this.#PropagateInheritProperties();\r\n }\r\n\r\n for (const child of this.effectChildren) child.SetOwner(this);\r\n\r\n this.InvalidateMergedLocators(\"structure\");\r\n // Carbon derives the impact overlay's damage locator count from the\r\n // \"damage\" locator set at build time; deriving it here keeps it out of\r\n // the authored values while reproducing the same live state.\r\n if (this.impactOverlay)\r\n {\r\n this.EnsureChildLocatorMerged();\r\n this.impactOverlay.SetDamageLocatorCount(this.GetDamageLocatorCount());\r\n }\r\n return true;\r\n }\r\n\r\n /** Returns the hull mesh, or null when none is attached. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMesh()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n /**\r\n * Replaces the hull mesh; the cached area blocks are only rebuilt on the next\r\n * batch call.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetMesh(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n /** Borrowed overlay vector used by child mesh inheritance. */\r\n @carbon.method\r\n @impl.implemented\r\n GetOverlayEffects()\r\n {\r\n return this.overlayEffects;\r\n }\r\n\r\n /**\r\n * Appends a controller, links it to this object when it is not already linked,\r\n * and replays the current controller variables onto it.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n AddController(controller)\r\n {\r\n // The link and the variable replay are the INSERTED arm's (cpp:297-311).\r\n CjsModel.addChild(this, \"controllers\", controller);\r\n return controller;\r\n }\r\n\r\n /**\r\n * Appends a placement observer, which is repositioned from the observer\r\n * transform on every synchronous update; the observer is returned for\r\n * chaining.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n return observer;\r\n }\r\n\r\n /**\r\n * Sets the colour set that effect children and lights inherit, creating the\r\n * inherit-properties holder on first use, and pushes it to the existing\r\n * children and lights.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n if (!this.inheritProperties)\r\n {\r\n this.inheritProperties = new EveChildInheritProperties();\r\n }\r\n this.inheritProperties.SetProperties(colorSet);\r\n this.#PropagateInheritProperties();\r\n }\r\n\r\n /** Pushes the current inherited properties to every effect child and light. */\r\n #PropagateInheritProperties()\r\n {\r\n const properties = this.inheritProperties.GetProperties();\r\n for (const child of this.effectChildren)\r\n {\r\n if (CjsSchema.cast(child, IEveInheritPropertiesOwner)) child.SetInheritProperties(properties);\r\n }\r\n for (const light of this.lights)\r\n {\r\n if (CjsSchema.cast(light, IEveInheritPropertiesOwner)) light.SetInheritProperties(properties);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the first effect child with the given name, or null when none\r\n * matches.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetEffectChildByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const child of this.effectChildren)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\r\n {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Carbon OnListModified (EveSpaceObject2.cpp:291-469), the owner reacting to\r\n * its own lists. Carbon installs itself on six of them at cpp:217-222 and the\r\n * lists notify it; a JavaScript array has no notify slot, so the managed child\r\n * mutation drives the same call.\r\n *\r\n * Controllers link and replay the recorded variables on insert, unlink on\r\n * remove, and unlink every one on unload. Effect children take ownership,\r\n * replay variables and register with the component registry; removal\r\n * unregisters and clears ownership. Overlay effects replay variables only.\r\n * Inherited properties reach a newly inserted child or light. The LightOwner\r\n * component follows the list edges: registered on the first light, dropped on\r\n * the last removal or an unload. Decals renumber their priorities, which is\r\n * the one arm needing SWAPPED and MOVED.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n OnListModified(event, key = 0, key2 = 0, value = null, list = null)\r\n {\r\n const masked = event & BLUELISTEVENT.BELIST_EVENTMASK;\r\n const loading = (event & BLUELISTEVENT.BELIST_LOADING) !== 0;\r\n\r\n if (list === this.controllers && !loading)\r\n {\r\n if (masked === BLUELISTEVENT.BELIST_INSERTED && value)\r\n {\r\n value.Link(this);\r\n EveSpaceObject2.#ApplyControllerVariables(value, this.#controllerVariables, \"SetVariable\");\r\n }\r\n else if (masked === BLUELISTEVENT.BELIST_REMOVED && value) value.Unlink();\r\n else if (masked === BLUELISTEVENT.BELIST_UNLOADSTART)\r\n {\r\n for (const controller of this.controllers) controller.Unlink();\r\n }\r\n }\r\n else if (list === this.effectChildren && !loading)\r\n {\r\n const registry = this.IsInRegistry() ? this.GetComponentRegistry() : null;\r\n if (masked === BLUELISTEVENT.BELIST_INSERTED)\r\n {\r\n value.SetOwner(this);\r\n EveSpaceObject2.#ApplyControllerVariables(value, this.#controllerVariables, \"SetControllerVariable\");\r\n // Carbon casts to EveEntityPtr before registering (cpp:333-341).\r\n const inserted = registry ? CjsSchema.cast(value, EveEntity) : null;\r\n if (inserted) inserted.Register(registry);\r\n }\r\n else if (masked === BLUELISTEVENT.BELIST_REMOVED)\r\n {\r\n const removed = registry ? CjsSchema.cast(value, EveEntity) : null;\r\n if (removed) removed.UnRegister(registry);\r\n value.SetOwner(null);\r\n }\r\n else if (masked === BLUELISTEVENT.BELIST_UNLOADSTART)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n const entity = registry ? CjsSchema.cast(child, EveEntity) : null;\r\n if (entity) entity.UnRegister(registry);\r\n child.SetOwner(null);\r\n }\r\n }\r\n }\r\n else if (list === this.overlayEffects && !loading && masked === BLUELISTEVENT.BELIST_INSERTED)\r\n {\r\n EveSpaceObject2.#ApplyControllerVariables(value, this.#controllerVariables, \"SetControllerVariable\");\r\n }\r\n\r\n // Independent of the LOADING guard above: inherited properties reach a\r\n // child or light however it arrived (cpp:389-411).\r\n if (masked === BLUELISTEVENT.BELIST_INSERTED && this.inheritProperties\r\n && (list === this.effectChildren || list === this.lights)\r\n && CjsSchema.cast(value, IEveInheritPropertiesOwner))\r\n {\r\n value.SetInheritProperties(this.inheritProperties.GetProperties());\r\n }\r\n\r\n if (list === this.lights) this.#OnLightListModified(masked);\r\n if (list === this.decals) this.#OnDecalListModified(masked, key, key2);\r\n }\r\n\r\n /**\r\n * Carbon cpp:413-431: the LightOwner component follows the list EDGES - the\r\n * first light registers it, the last removal or an unload drops it. The same\r\n * size rule RegisterComponents applies at registration time.\r\n */\r\n #OnLightListModified(masked)\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (!registry) return;\r\n if (masked === BLUELISTEVENT.BELIST_UNLOADSTART || (masked === BLUELISTEVENT.BELIST_REMOVED && !this.lights.length))\r\n {\r\n registry.UnRegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n else if (masked === BLUELISTEVENT.BELIST_INSERTED && this.lights.length === 1)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n }\r\n\r\n /**\r\n * Carbon cpp:433-468: a decal's priority IS its index, so every structural\r\n * change renumbers from the affected position. The append special case is\r\n * Carbon's own comment - \"in case someone calls the append function of\r\n * bluelist from python\" - and it renumbers the last entry alone.\r\n */\r\n #OnDecalListModified(masked, key, key2)\r\n {\r\n const decals = this.decals;\r\n if (masked === BLUELISTEVENT.BELIST_INSERTED && key === decals.length)\r\n {\r\n decals[decals.length - 1]?.SetPriority(decals.length - 1);\r\n return;\r\n }\r\n if (masked === BLUELISTEVENT.BELIST_INSERTED || masked === BLUELISTEVENT.BELIST_REMOVED)\r\n {\r\n for (let index = key; index < decals.length; index++) decals[index]?.SetPriority(index);\r\n return;\r\n }\r\n if (masked === BLUELISTEVENT.BELIST_SWAPPED)\r\n {\r\n decals[key]?.SetPriority(key);\r\n decals[key2]?.SetPriority(key2);\r\n return;\r\n }\r\n if (masked === BLUELISTEVENT.BELIST_MOVED)\r\n {\r\n const low = Math.min(key, key2);\r\n const high = Math.max(key, key2);\r\n for (let index = low; index <= high && index < decals.length; index++) decals[index]?.SetPriority(index);\r\n }\r\n }\r\n\r\n /**\r\n * Appends an effect child, first giving it the hull's inherited properties and\r\n * then replaying the current controller variables onto it, so a late addition\r\n * starts in the same state as the rest.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n AddToEffectChildrenList(child)\r\n {\r\n // The ownership, the inherited properties and the variable replay are the\r\n // INSERTED arm's (cpp:322-342), reached through the managed mutation.\r\n CjsModel.addChild(this, \"effectChildren\", child);\r\n this.InvalidateMergedLocators(\"structure\");\r\n return child;\r\n }\r\n\r\n /** Appends a light, first giving it the hull's inherited properties. */\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n // The inherited properties and the LightOwner registration on the FIRST\r\n // light are the hook's (cpp:402-431).\r\n CjsModel.addChild(this, \"lights\", light);\r\n }\r\n\r\n /**\r\n * Drops every light from the hull; component registration is not revisited\r\n * here.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n // UNLOADSTART, which is what drops the LightOwner component registration\r\n // (cpp:413-421). Emptying the array by hand left it registered.\r\n CjsModel.clearChildren(this, \"lights\");\r\n }\r\n\r\n /**\r\n * Removes an effect child, returning false when it is not attached to this\r\n * hull.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n // The unregister and the cleared ownership are the REMOVED arm's\r\n // (cpp:343-353).\r\n if (!CjsModel.removeChild(this, \"effectChildren\", child)) return false;\r\n this.InvalidateMergedLocators(\"structure\");\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the curve that rotates the model within the hull's ball rotation, or\r\n * clears it when passed nothing.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetModelRotationCurve(curve)\r\n {\r\n this.modelRotationCurve = curve ?? null;\r\n }\r\n\r\n /** Returns the model rotation curve, or null when none is set. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurve()\r\n {\r\n return this.modelRotationCurve;\r\n }\r\n\r\n /**\r\n * Sets the curve that offsets the model within the hull's ball position, or\r\n * clears it when passed nothing.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetModelTranslationCurve(curve)\r\n {\r\n this.modelTranslationCurve = curve ?? null;\r\n }\r\n\r\n /** Returns the model translation curve, or null when none is set. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurve()\r\n {\r\n return this.modelTranslationCurve;\r\n }\r\n\r\n /**\r\n * Rebuilds the hull world transform for a frame from the ball position and rotation curves plus the optional model translation and rotation curves, applies modelScale as a uniform scale, then refreshes the inverse transform and the world bounds; the previous world transform is kept for motion vectors and the world velocity comes from the position curve's derivative.\r\n * @param {number} time Frame time; repeating the previous call's time is a no-op.\r\n * @returns {boolean} False when the transform had already been built for this time.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateWorldTransform(time)\r\n {\r\n const nextTime = Number(time) || 0;\r\n if (this.#lastUpdateTransformTime === nextTime)\r\n {\r\n return false;\r\n }\r\n this.#lastUpdateTransformTime = nextTime;\r\n mat4.copy(this.lastWorldTransform, this.worldTransform);\r\n // Carbon cpp:2675-2676: the OUTGOING transform becomes worldTransformLast,\r\n // stored transposed in both records, before the new one is built.\r\n this.#vsData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\r\n this.#psData.SetAndTranspose(\"worldTransformLast\", this.lastWorldTransform);\r\n\r\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\r\n if (this.translationCurve?.GetValueDotAt)\r\n {\r\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\r\n }\r\n else\r\n {\r\n vec3.set(this.worldVelocity, 0, 0, 0);\r\n }\r\n\r\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\r\n const rotation = quat.clone(this.worldRotation);\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\r\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\r\n quat.multiply(rotation, rotation, modelRotation);\r\n }\r\n\r\n mat4.fromQuat(this.worldTransform, rotation);\r\n if (this.modelScale !== 1)\r\n {\r\n // Carbon (row-vector): m_worldTransform * scaleMatrix - scale LAST\r\n // (cpp:2711-2716). gl mat4.scale builds W*S = scale FIRST; equivalent\r\n // ONLY because modelScale is strictly uniform (a uniform scale commutes\r\n // with the pure rotation here). If modelScale ever becomes a vec3 this\r\n // must become mat4.multiply(w, S, w) per the swap rule.\r\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\r\n }\r\n\r\n if (this.modelTranslationCurve)\r\n {\r\n const modelTranslation = vec3.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\r\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\r\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\r\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\r\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\r\n }\r\n else\r\n {\r\n this.worldTransform[12] = this.worldPosition[0];\r\n this.worldTransform[13] = this.worldPosition[1];\r\n this.worldTransform[14] = this.worldPosition[2];\r\n }\r\n\r\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\r\n {\r\n mat4.identity(this.inverseWorldTransform);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\r\n * sphere when available, otherwise from the authored local sphere.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateWorldBounds()\r\n {\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater && updater.IsInitialized())\r\n {\r\n updater.GetDynamicBounds(\r\n this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\r\n if (this.#dynamicBoundingSphere[3] > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\r\n\r\n return;\r\n }\r\n }\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\r\n }\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::PrepareShaderData (cpp:734-763): refreshes the\r\n * world bounds, packs the ship data, and derives the clip-sphere dissolve\r\n * values into the persistent per-object records.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n PrepareShaderData(updateContext = null)\r\n {\r\n this.UpdateWorldBounds();\r\n\r\n // An impact overlay may damp the activation strength; otherwise full on.\r\n this.spaceObjectShipData[1] = this.impactOverlay\r\n ? this.impactOverlay.GetActivationStrength(updateContext)\r\n : 1;\r\n this.spaceObjectShipData[3] = this.GetBoundingSphereRadius();\r\n this.spaceObjectShipData[2] = this.dirtLevel;\r\n\r\n // clipSphereFactor runs 0 (fully visible) to 1 (invisible); the shader gets\r\n // a signed squared radius rather than the factor itself.\r\n let normalizedBoundingRadius = this.GetBoundingSphereRadius() / (this.modelScale === 0 ? 1 : this.modelScale);\r\n const clipOffset = vec3.length(this.clipSphereCenter);\r\n normalizedBoundingRadius += clipOffset;\r\n const insideSpherePercentage = Math.min(1, clipOffset / normalizedBoundingRadius);\r\n const dissolveRadius = this.clipSphereFactor * normalizedBoundingRadius * (1 + insideSpherePercentage);\r\n\r\n const center = this.GetBoundingSphereCenter();\r\n const clipSphereCenter = EveSpaceObject2.#clipSphereCenterScratch;\r\n vec3.add(clipSphereCenter, this.clipSphereCenter, center);\r\n const clipRadiusSq = Math.sign(dissolveRadius) * dissolveRadius * dissolveRadius;\r\n\r\n this.#psData.Set(\"clipSphereCenter\", clipSphereCenter);\r\n this.#psData.Set(\"clipRadiusSq\", [clipRadiusSq]);\r\n this.#vsData.Set(\"clipData\", [clipSphereCenter[0], clipSphereCenter[1], clipSphereCenter[2], clipRadiusSq]);\r\n\r\n const dissolveRadius2 = this.clipSphereFactor2 * normalizedBoundingRadius * (1 + insideSpherePercentage);\r\n this.#psData.Set(\"clipRadius2Sq\", [Math.sign(dissolveRadius2) * dissolveRadius2 * dissolveRadius2]);\r\n this.#psData.Set(\"clipSphereFactor\", [this.clipSphereFactor]);\r\n this.#psData.Set(\"clipSphereFactor2\", [this.clipSphereFactor2]);\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::UpdateShLighting (cpp:1411-1421): asks the scene's\r\n * SH lighting manager for this hull's secondary-lighting coefficients, faded\r\n * in across the low-detail threshold so a hull entering that range does not\r\n * pop. The coefficients are cleared first, which is also what leaves the\r\n * unwritten tail zero on the L1 path.\r\n * @param {Object} manager - Tr2ShLightingManager\r\n * @param {Object} [updateContext] - frame context, for the detail thresholds\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateShLighting(manager, updateContext = null)\r\n {\r\n const coefficients = this.#psData.Get(\"shLightingCoefficients\");\r\n\r\n coefficients.fill(0);\r\n\r\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n\r\n if (!(this.estimatedPixelDiameterWithChildren > lowThreshold) || typeof manager?.GetLighting !== \"function\")\r\n {\r\n return false;\r\n }\r\n\r\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const intensityFadeRadius = (mediumThreshold - lowThreshold) * 0.25;\r\n const intensity = Math.min(Math.max((this.estimatedPixelDiameterWithChildren - lowThreshold) / intensityFadeRadius, 0), 1);\r\n\r\n manager.GetLighting(\r\n this.worldPosition,\r\n intensity,\r\n this.boundingSphereRadius * EveSpaceObject2.SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR,\r\n coefficients\r\n );\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::ClearShLighting (cpp:1423-1426): drops this hull's\r\n * secondary-lighting contribution back to nothing.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearShLighting()\r\n {\r\n this.#psData.Get(\"shLightingCoefficients\").fill(0);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::GetParentData (cpp:1872-1885): the values an\r\n * attachment needs from its hull. `shLighting` is a LIVE view into the PS\r\n * record, exactly as Carbon hands out a raw pointer into m_psData - an\r\n * attachment reading it sees the hull's current coefficients.\r\n * @param {Object} [out] - caller-owned record, refreshed in place\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetParentData(out = new IEveSpaceObject2ParentData())\r\n {\r\n mat4.copy(out.transform, this.worldTransform);\r\n // Carbon memsets the record and never assigns killCount on this path.\r\n out.killCount = 0;\r\n vec4.copy(out.shipData, this.spaceObjectShipData);\r\n vec3.copy(out.clipSphereCenter, this.#psData.Get(\"clipSphereCenter\"));\r\n out.clipRadiusSq = this.#psData.Get(\"clipRadiusSq\")[0];\r\n out.clipRadius2Sq = this.#psData.Get(\"clipRadius2Sq\")[0];\r\n out.clipFactor = this.#psData.Get(\"clipSphereFactor\")[0];\r\n out.clipFactor2 = this.#psData.Get(\"clipSphereFactor2\")[0];\r\n out.shLighting = this.#psData.Get(\"shLightingCoefficients\");\r\n vec4.copy(out.customData, this.#psData.Get(\"customData\"));\r\n\r\n return out;\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::GetPerObjectStructs (cpp:1485-1490): hands a copy\r\n * of both records to a caller, with the VS record's customData taken from the\r\n * PS record as Carbon does.\r\n * @returns {{vs: RawData, ps: RawData}} independent copies, not live records\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPerObjectStructs(vsData = RawData.create(\"EveSpaceObjectVSData\"), psData = RawData.create(\"EveSpaceObjectPSData\"))\r\n {\r\n vsData.CopyFrom(this.#vsData);\r\n psData.CopyFrom(this.#psData);\r\n vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\r\n return { vs: vsData, ps: psData };\r\n }\r\n\r\n /**\r\n * Refreshes the world transform, then - when the update flag is on - places the observers, stamps the LOD-gated curve clock while advancing the overlay effects, runs the effect children's synchronous pass with the current placement, and updates the impact overlay; the overlay effects receive the context time as both clocks, as Carbon does.\r\n * @returns {boolean} False when the update flag is off; the world transform is refreshed either way.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateSyncronous(updateContext = null)\r\n {\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n this.UpdateWorldTransform(time);\r\n if (!this.update)\r\n {\r\n return false;\r\n }\r\n\r\n const observerTransform = this.GetObserverTransform();\r\n for (const observer of this.observers)\r\n {\r\n observer?.Update(observerTransform);\r\n }\r\n\r\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\r\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\r\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\r\n // receive the context time as BOTH clocks, as Carbon does; the async pass\r\n // updates curve sets only on frames stamped here.\r\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\r\n {\r\n this.#lastCurveUpdateTime = time;\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.Update(time, time);\r\n }\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateSyncronous(updateContext, params);\r\n }\r\n }\r\n\r\n this.EnsureChildLocatorMerged();\r\n this.UpdateDamageLocatorFilter();\r\n if (this.impactOverlay) this.impactOverlay.UpdateSyncronous(updateContext, this);\r\n return true;\r\n }\r\n\r\n /**\r\n * Runs the controllers at a frequency derived from the hull's estimated pixel diameter against the context's high-detail threshold, advances the object curve sets only on frames the synchronous LOD gate stamped, then updates the transform children, the effect children and the impact overlay.\r\n * @returns {number} The controller update frequency in 0..1, which is also handed to the effect children; 0 when the hull is not visible or the update flag is off.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext = null)\r\n {\r\n if (!this.update)\r\n {\r\n return 0;\r\n }\r\n\r\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\r\n const frequency = this.isVisible && threshold > 0\r\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\r\n : 0;\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Update(frequency);\r\n }\r\n\r\n // Carbon cpp:626-663: the persistent buffers are invalidated once per\r\n // frame, then the shader data is prepared and copied into both records.\r\n this.#vsData.Invalidate();\r\n this.#psData.Invalidate();\r\n\r\n const previousActivationStrength = this.spaceObjectShipData[1];\r\n this.PrepareShaderData(updateContext);\r\n if (previousActivationStrength !== this.spaceObjectShipData[1])\r\n {\r\n this.SetControllerVariable(\"ActivationStrength\", this.spaceObjectShipData[1]);\r\n }\r\n\r\n this.#psData.Set(\"shipData\", this.spaceObjectShipData);\r\n this.#vsData.Set(\"shipData\", this.spaceObjectShipData);\r\n // m_psData.customData is script/SOF-driven; the model field is its author.\r\n this.#psData.Set(\"customData\", this.customShaderData);\r\n // Both records carry the same two matrices; each is written from the\r\n // LOGICAL transform, which produces the bytes Carbon's `m_psData.x =\r\n // m_vsData.x` copy of the already-transposed value produces.\r\n this.#vsData.SetAndTranspose(\"worldTransform\", this.worldTransform);\r\n this.#vsData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\r\n this.#psData.SetAndTranspose(\"worldTransform\", this.worldTransform);\r\n this.#psData.SetAndTranspose(\"invWorldTransform\", this.inverseWorldTransform);\r\n\r\n const shapeCenter = EveSpaceObject2.#shapeCenterScratch;\r\n const shapeRadius = EveSpaceObject2.#shapeRadiusScratch;\r\n this.GetShapeEllipsoid(shapeCenter, shapeRadius);\r\n this.#vsData.Set(\"ellpsoidRadii\", [ shapeRadius[0], shapeRadius[1], shapeRadius[2], 0 ]);\r\n this.#vsData.Set(\"ellpsoidCenter\", [ shapeCenter[0], shapeCenter[1], shapeCenter[2], 0 ]);\r\n\r\n if (this.impactOverlay)\r\n {\r\n this.#psData.Set(\"impactDataOffset\", [ this.impactOverlay.GetDataTextureOffset() ]);\r\n }\r\n\r\n for (let slot = 0; slot < EveSpaceObject2.CUSTOM_MASK_MAX; slot++)\r\n {\r\n if (this.customMasks.length > slot)\r\n {\r\n this.customMasks[slot]?.FillPerObjectData?.(slot, this.#vsData, this.#psData);\r\n }\r\n else\r\n {\r\n EveCustomMask.ZeroPerObjectData(slot, this.#vsData, this.#psData);\r\n }\r\n }\r\n\r\n // Object-level curve sets update only on frames the sync-side LOD gate\r\n // stamped, receiving the context time as BOTH realTime and simTime\r\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\r\n // time) (*it)->Update(time, time)).\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n if (this.#lastCurveUpdateTime === time)\r\n {\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet.Update(time, time, updateContext.renderContext);\r\n }\r\n }\r\n\r\n for (const child of this.children)\r\n {\r\n child?.Update?.(updateContext);\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n params.controllerUpdateFrequency = frequency;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateAsyncronous(updateContext, params);\r\n }\r\n }\r\n\r\n if (this.impactOverlay) this.impactOverlay.UpdateAsyncronous(updateContext, this);\r\n return frequency;\r\n }\r\n\r\n /**\r\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\r\n * visibility to the explicitly owned visual branches.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization are not ported yet; graph visibility and LOD state are preserved.\")\r\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\r\n {\r\n this.isVisible = false;\r\n this.#isMeshVisible = false;\r\n this.#isInFrustum = false;\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n\r\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\r\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n this.#impostorMode = false;\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\r\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\r\n\r\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n if (frustum?.IsSphereVisible(EveSpaceObject2.#worldSphere) !== false)\r\n {\r\n this.EstimatePixelDiameter(frustum);\r\n this.#isMeshVisible = true;\r\n }\r\n }\r\n\r\n // Bones so a bone-parented attachment's bounds follow its bone, which is\r\n // what drives the per-bone AABB union (Carbon BoundingBox.cpp:815-833).\r\n const { bones, boneCount } = getBoneList(this.animationUpdater);\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n if (attachment.UpdateVisibility(updateContext, this.worldTransform, bones, boneCount))\r\n {\r\n this.#isMeshVisible = true;\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children)\r\n {\r\n child?.UpdateVisibility(updateContext, this.worldTransform);\r\n }\r\n }\r\n\r\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\r\n {\r\n this.#isInFrustum = frustum?.IsSphereVisible(EveSpaceObject2.#worldSphere) !== false;\r\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\r\n {\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.isVisible)\r\n {\r\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\r\n\r\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\r\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n }\r\n\r\n for (const observer of this.observers)\r\n {\r\n const target = observer?.GetObserver() ?? observer?.observer;\r\n target?.SetVisibility?.(this.isVisible);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UpdateVisibility(updateContext, this.worldTransform, this.#lodLevelWithChildren);\r\n }\r\n\r\n // Carbon cpp:1694-1706: the decals take one ParentData built for the pass,\r\n // after the mesh bone palette when the updater has one.\r\n if (this.#isMeshVisible)\r\n {\r\n const parentData = this.GetParentData(this.#decalParentData);\r\n for (const decal of this.decals)\r\n {\r\n if (boneCount) decal.SetBoneMatrix(bones, boneCount);\r\n decal.UpdateVisibility(updateContext, parentData);\r\n }\r\n }\r\n\r\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\r\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\r\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\r\n }\r\n return this.isVisible;\r\n }\r\n\r\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Impostor submission and decal mesh caches are not ported yet; Trinity returns the backend-neutral renderable graph.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display || !this.isVisible) return out;\r\n if (this.#allowLodSelection && this.#isMeshVisible)\r\n {\r\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\r\n }\r\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\r\n {\r\n out.push(this);\r\n }\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children) child?.GetRenderables(out);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables(out);\r\n }\r\n if (this.mesh && this.#isMeshVisible)\r\n {\r\n // Not optional-chained: a mesh HAS a geometry resource accessor and a\r\n // decal HAS GetRenderables. Guarding them turned a missing method into a\r\n // decal that drew nothing and reported nothing.\r\n const geometryResource = this.mesh.GetGeometryResource();\r\n if (geometryResource)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal.GetRenderables(out, null, geometryResource, this.#meshScreenSize);\r\n }\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\r\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\r\n * per batch type, and TRANSPARENT routes through the distance-sorted area\r\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\r\n * deferred with the overlay realization work. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\r\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\r\n {\r\n if (!this.mesh) return false;\r\n if (this.mesh.display === false) return false;\r\n\r\n // Returns whether any batch was committed (JS addition; Carbon returns\r\n // void). The O(1) accumulator count makes the delta check free.\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n if (this.activationStrength !== 0)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n attachment.GetBatches(batches, batchType, perObjectData, reason);\r\n }\r\n }\r\n\r\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\r\n\r\n const areas = this.mesh.GetAreas(batchType);\r\n if (areas)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n // Carbon EveSpaceObject2.cpp:1130 passes the screen size resolved in\r\n // UpdateVisibility, so the mesh draws the LOD this object was culled\r\n // at; reverseWinding is left default on every EveSpaceObject2 path.\r\n this.mesh.GetBatches(batches, areas, perObjectData, this.#meshScreenSize);\r\n }\r\n else\r\n {\r\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\r\n }\r\n }\r\n\r\n // add overlay effect batches (Carbon calls this for every batch type)\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\r\n // object-space area bounding-box centers -> world space -> squared distance to\r\n // the view position, sorted back-to-front (descending), committed in that\r\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\r\n // from the geometry resource when it exposes them; a failed lookup keeps\r\n // Carbon's origin-center fallback.\r\n\r\n /**\r\n * Commits the mesh's transparent areas back-to-front, ordering them by the\r\n * squared distance from the view position to each area's world-space\r\n * bounding-box center and falling back to the object origin when the geometry\r\n * resource cannot supply a box.\r\n */\r\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\r\n {\r\n const geometry = this.mesh.GetGeometryResource() ?? null;\r\n const viewPosition = renderContext?.GetViewPosition();\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n // Carbon resolves the LOD once for the whole sorted list (cpp:72) and\r\n // returns early when there is none. This port keeps collecting so a\r\n // GPU-free graph still produces batches; the LOD only supplies draw\r\n // arguments.\r\n const lod = geometry?.GetMeshLod?.(meshIndex, this.#meshScreenSize) ?? null;\r\n\r\n const sorted = [];\r\n for (const area of areas)\r\n {\r\n if (!area || area.GetDisplay?.() === false) continue;\r\n\r\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\r\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\r\n {\r\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\r\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\r\n }\r\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\r\n\r\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\r\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\r\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\r\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\r\n }\r\n\r\n sorted.sort((a, b) => b.distance - a.distance);\r\n\r\n for (const entry of sorted)\r\n {\r\n const area = entry.area;\r\n if (!area.GetMaterialInterface?.()) continue;\r\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData, false, lod);\r\n if (batch) batches.Commit(batch);\r\n }\r\n }\r\n\r\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\r\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\r\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\r\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\r\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\r\n RebuildCachedData()\r\n {\r\n this.ReleaseCachedData();\r\n if (!this.mesh) return;\r\n\r\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\r\n this.mesh.CollectAreaBlocks(\r\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n TriRenderBatchAreaBlock.Optimize(blocks);\r\n }\r\n\r\n this.mesh.CollectAreaBlocksWithSharedMaterials(\r\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n collector.Optimize();\r\n }\r\n this.#cachedAreaBlocksBuilt = true;\r\n }\r\n\r\n /**\r\n * Drops the cached overlay and shadow area-block lists so the next batch call\r\n * rebuilds them from the current mesh.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ReleaseCachedData()\r\n {\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n blocks.length = 0;\r\n }\r\n this.#shadowMeshOpaqueAreas.length = 0;\r\n this.#cachedAreaBlocksBuilt = false;\r\n }\r\n\r\n /**\r\n * Rebuilds the cached area blocks on first use when a mesh is attached; Carbon\r\n * instead rebuilds them from the geometry-resource load callback.\r\n */\r\n #EnsureCachedAreaBlocks()\r\n {\r\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::GetPickingBatches (cpp:3645-3675): collects the\r\n * geometry a pick pass should test, by mask. It is ordinary batch collection\r\n * - the pick itself is an engine pass that renders these and reads IDs back.\r\n *\r\n * The OPAQUE bit deliberately pulls in the transparent and additive OVERLAY\r\n * effects too, so a cloaking hull stays pickable.\r\n *\r\n * @param {Object} batches - the picking accumulator\r\n * @param {Number} pickTypes - a Tr2PickType mask\r\n * @param {Object} perObjectData - this hull's per-object record\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null)\r\n {\r\n if (pickTypes & Tr2PickType.PICK_TYPE_PICKING)\r\n {\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);\r\n }\r\n\r\n if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE)\r\n {\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_TRANSPARENT, this.mesh);\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_ADDITIVE, this.mesh);\r\n }\r\n\r\n if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT)\r\n {\r\n // Carbon takes the mesh's OWN areas here rather than going through\r\n // GetBatches, and returns early when the mesh is absent or hidden - so a\r\n // hidden mesh suppresses the transparent pass only, not the ones above.\r\n if (!this.mesh || this.mesh.display === false)\r\n {\r\n return true;\r\n }\r\n\r\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE ])\r\n {\r\n const areas = this.mesh.GetAreas(batchType);\r\n\r\n if (areas)\r\n {\r\n this.mesh.GetBatches?.(batches, areas, perObjectData);\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::GetID (cpp:3640-3643): a picked area resolves to\r\n * the hull itself, so the area index is deliberately ignored.\r\n * @param {Number} [_areaID] - the picked area, unused by this class\r\n * @returns {EveSpaceObject2} this\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetID(_areaID = 0)\r\n {\r\n return this;\r\n }\r\n\r\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\r\n * cached shared-material OPAQUE area block, using the area's own material.\r\n * Carbon bakes LOD draw args at this point; doing the same is not ported, so\r\n * they travel as a geometry source descriptor and shadowPixelSize goes unused\r\n * until LOD selection is ported. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"LOD draw args are left as a geometry source descriptor and primitive-count gating is not ported yet; Carbon bakes both here.\")\r\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\r\n {\r\n if (!this.mesh || this.mesh.display === false) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const geometry = this.mesh.GetGeometryResource() ?? null;\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n let committed = false;\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n const material = collector.shaderMaterial;\r\n if (!material) continue;\r\n for (const block of collector.areaBlockVector)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) continue;\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n committed = batches.Commit(batch) || committed;\r\n }\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\r\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\r\n * maximum priority; each displayed overlay effect draws its per-batch-type\r\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\r\n * else -> TYPE_ALL). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overlay selection is fully represented in the CPU graph; realized-LOD draw arguments are not ported yet.\")\r\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\r\n {\r\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\r\n if (!impactEffect && !this.overlayEffects.length) return false;\r\n if (!mesh) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n const geometry = mesh.GetGeometryResource() ?? null;\r\n if (!geometry || geometry.IsGood() === false) return false;\r\n const meshIndex = mesh.meshIndex ?? 0;\r\n\r\n // Carbon resolves the LOD ONCE for the whole overlay walk\r\n // (EveSpaceObject2.cpp:1198) and returns early when there is none. Resolving\r\n // it per block instead re-walks the LOD list for every block of every effect\r\n // of every overlay; EveChildMesh already hoists it, and this path was the\r\n // outlier.\r\n const lod = geometry.GetMeshLod?.(meshIndex, this.#meshScreenSize) ?? null;\r\n if (!lod) return false;\r\n\r\n // Carbon binds lod->m_mesh->m_vertexDeclarationHandle onto every block batch\r\n // exactly as onto a mesh area batch (cpp:1214). Leaving it zero makes every\r\n // overlay look like one declaration, and the handle is what binning and\r\n // sorting compare - so blocks of different layouts would share a bin.\r\n const overlayElements = CarbonVertexElements(geometry.GetMeshVertexElements?.(meshIndex));\r\n const overlayDeclaration = overlayElements.length\r\n ? Tr2EffectStateManager.getVertexDeclarationHandle(overlayElements)\r\n : 0;\r\n\r\n if (impactEffect)\r\n {\r\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\r\n {\r\n this.#CommitBlockBatch(\r\n batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF, lod, overlayDeclaration);\r\n }\r\n }\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n const effects = this.#OverlayEffectsFor(overlay, batchType);\r\n if (!effects) continue;\r\n\r\n const overlayType = overlay.GetType(batchType);\r\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\r\n for (const effect of effects)\r\n {\r\n for (const block of blocks)\r\n {\r\n this.#CommitBlockBatch(\r\n batches, effect, geometry, meshIndex, block, perObjectData, 0, lod, overlayDeclaration);\r\n }\r\n }\r\n }\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n /**\r\n * Builds and commits one render batch drawing a single cached area block with\r\n * the given material and optional priority, skipping the block when the\r\n * material yields no valid batch.\r\n */\r\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority, lod, vertexDeclaration)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) return;\r\n if (priority !== 0) batch.SetPriority(priority);\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetVertexDeclaration(vertexDeclaration);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n const draw = Tr2RenderBatch.resolveDrawArguments(\r\n lod, block.startIndex, block.count, false);\r\n if (!draw) return;\r\n batch.SetDrawIndexedInstanced(\r\n draw.indexCountPerInstance,\r\n draw.instanceCount,\r\n draw.startIndexLocation,\r\n draw.baseVertexLocation,\r\n draw.startInstanceLocation);\r\n batches.Commit(batch);\r\n }\r\n\r\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type).\r\n\r\n /**\r\n * Returns an overlay effect's display-gated effect list for a batch type, or\r\n * null when it contributes none.\r\n */\r\n #OverlayEffectsFor(overlay, batchType)\r\n {\r\n return overlay?.GetEffects?.(batchType) ?? null;\r\n }\r\n\r\n /**\r\n * Reports whether the hull mesh has transparent areas or any overlay effect\r\n * does, which tells the renderer to route this object through the sorted\r\n * transparent pass.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Portable mesh area access replaces Carbon's native mesh-area vectors.\")\r\n HasTransparentBatches()\r\n {\r\n if (!this.mesh) return false;\r\n if ((this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n if (overlay?.HasTransparentArea?.()) return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns the distance from the render context's view position to the hull\r\n * world translation, used to order transparent renderables back-to-front.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z);\r\n }\r\n\r\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>.\r\n * This port retains persistent VS/PS RawData and returns those records\r\n * directly. GPU-derived bone-ring offsets remain at their CPU defaults until\r\n * an engine supplies them; other CPU-known values are already encoded. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Trinity retains and fills persistent VS/PS RawData; the engine owns device buffers, GPU-derived offsets, upload, and binding.\")\r\n GetPerObjectData(_accumulator = null)\r\n {\r\n // Carbon cpp:1437-1445: the bone ring is uploaded and its OFFSETS stamped\r\n // into the record, then a pooled handle referencing the two persistent\r\n // buffers is returned. The offsets are GPU addresses with no CPU\r\n // derivation, so they stay at their zero default here; the bone count is\r\n // CPU-known and is written.\r\n const boneCount = this.animationUpdater?.IsInitialized?.()\r\n ? (this.animationUpdater.GetMeshBoneCount?.() ?? 0)\r\n : null;\r\n if (boneCount !== null)\r\n {\r\n this.#vsData.SetIndex(\"boneOffsets\", 2, [ boneCount ]);\r\n }\r\n this.#vsData.Set(\"customData\", this.#psData.Get(\"customData\"));\r\n\r\n return { vs: this.#vsData, ps: this.#psData };\r\n }\r\n\r\n /** Carbon forwards the shadow pass to the same per-object record. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(accumulator = null)\r\n {\r\n return this.GetPerObjectData(accumulator);\r\n }\r\n\r\n /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only\r\n * (no lights-empty early-out, unlike EveChildMesh), then per light\r\n * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by\r\n * SetBrightnessMultiplier(m_activationStrength) - the order is contract:\r\n * the submission uses the multiplier stamped on the PREVIOUS pass (first\r\n * pass uses the Tr2Light default 1) - one frame of activation-strength\r\n * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is\r\n * not ported. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLights(lightManager)\r\n {\r\n if (!this.display)\r\n {\r\n return;\r\n }\r\n\r\n // cpp:3545-3547 - Tr2GrannyAnimationUtils::GetBoneList, so a bone-parented\r\n // light is placed by its bone rather than by the object transform alone.\r\n const { bones, boneCount } = getBoneList(this.animationUpdater);\r\n\r\n for (const light of this.lights)\r\n {\r\n light?.AddLight(lightManager, this.worldTransform, 1, bones, boneCount);\r\n light?.SetBrightnessMultiplier?.(this.activationStrength);\r\n }\r\n }\r\n\r\n /**\r\n * Carbon EveSpaceObject2::IsCastingShadow (cpp:2252-2274): applies the\r\n * display, world-sphere and reflection gates, then tests the realized sphere\r\n * against the supplied shadow frustum. Carbon's float& result is represented\r\n * by an optional length-one array.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The optional length-one array replaces Carbon's float& sizeInShadow out-parameter.\")\r\n IsCastingShadow(cameraFrustum, shadowFrustum, renderReason, sizeInShadowOut = null)\r\n {\r\n if (!this.display || this.#boundingSphereWorldRadius <= 0)\r\n {\r\n return false;\r\n }\r\n if (renderReason === Tr2RenderReason.TR2RENDERREASON_REFLECTION &&\r\n !ShouldReflect(this.reflectionMode))\r\n {\r\n return false;\r\n }\r\n\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n\r\n let sizeInShadow = 0;\r\n if (sizeInShadowOut)\r\n {\r\n sizeInShadowOut[0] = 0;\r\n }\r\n if (shadowFrustum.IsVisible(cameraFrustum, EveSpaceObject2.#worldSphere))\r\n {\r\n sizeInShadow = shadowFrustum.GetSizeInShadow(EveSpaceObject2.#worldSphere);\r\n if (sizeInShadowOut)\r\n {\r\n sizeInShadowOut[0] = sizeInShadow;\r\n }\r\n }\r\n return sizeInShadow > 15;\r\n }\r\n\r\n /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its\r\n * own components and its children with the scene registration container \"so\r\n * we don't have to traverse the tree every frame\". RegisterAudioGeometry\r\n * (cpp:3572-3575) is audio-engine-owned and unported. Gate m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n\r\n if (ShouldReflect(this.reflectionMode))\r\n {\r\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\r\n }\r\n\r\n if (this.castShadow)\r\n {\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n\r\n for (const child of this.effectChildren)\r\n {\r\n child?.Register(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.Register(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards\r\n * the un-registration to the children only - EveEntity::UnRegister already\r\n * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does\r\n * not re-check display. UnregisterAudioGeometry (cpp:3617) is\r\n * audio-engine-owned and unported. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UnRegister(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UnRegister(registry);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Reports whether children and effect children should be shown; always true on\r\n * the base hull, subclasses gate it on activation state.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n DisplayChildren()\r\n {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns the transform placement observers are attached to - the live hull\r\n * world transform.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetObserverTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * Returns the transform effect children are placed against - the live hull\r\n * world transform, not a copy.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n /** Carbon's non-updating model-center query. */\r\n @carbon.method\r\n @impl.implemented\r\n GetModelCenterWorldPosition(out)\r\n {\r\n vec3.transformMat4(out, this.boundingSphereCenter, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Returns the live curve-sampled ball position; the array is the object's own\r\n * field and is rewritten by the next transform update.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldPosition()\r\n {\r\n return this.worldPosition;\r\n }\r\n\r\n /**\r\n * Returns the live curve-sampled ball rotation, which excludes the model\r\n * rotation curve; the quaternion is the object's own field and is rewritten by\r\n * the next transform update.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldRotation()\r\n {\r\n return this.worldRotation;\r\n }\r\n\r\n /**\r\n * Finds a sound emitter by observer name on this hull and then recursively in\r\n * the effect children, returning null when no emitter carries the name.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const observer of this.observers)\r\n {\r\n if (observer?.name === target)\r\n {\r\n return typeof observer.GetObserver === \"function\"\r\n ? observer.GetObserver()\r\n : observer.observer ?? null;\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter)\r\n {\r\n return emitter;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Sets the mute flag and pushes it to every effect child and placement\r\n * observer.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetMute(mute)\r\n {\r\n this.mute = !!mute;\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetMute?.(this.mute);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.SetMute(this.mute);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation with explicit loop, start, and speed settings\r\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\r\n {\r\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding box under a transform (CMF path: the\r\n * local box corners transformed with perspective divide). The granny path\r\n * is unported. Returns an inverted-empty { min, max } box when dynamic\r\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingBoxFromTransform(transform)\r\n {\r\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\r\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource()?.IsUsingCMF?.())\r\n {\r\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\r\n const corner = vec3.create();\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n corner,\r\n index & 1 ? localMax[0] : localMin[0],\r\n index & 2 ? localMax[1] : localMin[1],\r\n index & 4 ? localMax[2] : localMin[2]\r\n );\r\n vec3.transformMat4(corner, corner, transform);\r\n vec3.min(min, min, corner);\r\n vec3.max(max, max, corner);\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding sphere (CMF path: the current bounding\r\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\r\n * are disabled.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingSphere(out = vec4.create())\r\n {\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource()?.IsUsingCMF?.())\r\n {\r\n const center = this.GetBoundingSphereCenter();\r\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\r\n }\r\n return vec4.set(out, 0, 0, 0, -1);\r\n }\r\n\r\n /** Marks the derived locator graph stale and restarts any requested filter. */\r\n @carbon.method\r\n @impl.implemented\r\n InvalidateMergedLocators(reason = \"structure\")\r\n {\r\n this.#mergedLocatorSetsDirty = true;\r\n this.#ReleaseDamageFilterSessions();\r\n if (reason === \"structure\" || this.damageLocatorAutoFilterEnabled || this.#damageFilterState !== 0)\r\n {\r\n this.#damageFilterState = 1;\r\n }\r\n }\r\n\r\n /**\r\n * Rebuilds the locator sets visible on this object from its own authored sets\r\n * plus the sets owned by child meshes and nested child containers.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n EnsureChildLocatorMerged()\r\n {\r\n if (!this.#mergedLocatorSetsDirty) return;\r\n\r\n this.#mergedLocatorSets.length = 0;\r\n this.#mergedDamageLocatorSources.length = 0;\r\n const childSources = [];\r\n const identity = mat4.create();\r\n for (const child of this.effectChildren) child.CollectOwnedLocatorSets(identity, childSources);\r\n\r\n for (const authored of this.locatorSets)\r\n {\r\n const locators = authored.GetLocators();\r\n if (!locators.length) continue;\r\n const copy = new EveLocatorSets();\r\n copy.Set(authored.GetName(), locators);\r\n this.#mergedLocatorSets.push(copy);\r\n }\r\n\r\n const locatorTransform = mat4.create();\r\n const transformed = mat4.create();\r\n for (const source of childSources)\r\n {\r\n const sourceSet = source.sets;\r\n let merged = this.#mergedLocatorSets.find(set => set.HasName(sourceSet.GetName()));\r\n if (!merged)\r\n {\r\n merged = new EveLocatorSets();\r\n merged.SetName(sourceSet.GetName());\r\n this.#mergedLocatorSets.push(merged);\r\n }\r\n\r\n const start = merged.locators.length;\r\n for (const locator of sourceSet.GetLocators())\r\n {\r\n mat4.fromRotationTranslationScale(\r\n locatorTransform, locator.direction, locator.position, locator.scale);\r\n // Carbon row-vector locator * childToObject => gl-matrix childToObject * locator.\r\n mat4.multiply(transformed, source.childToObject, locatorTransform);\r\n\r\n const result = new Locator();\r\n mat4.getTranslation(result.position, transformed);\r\n mat4.getRotation(result.direction, transformed);\r\n quat.normalize(result.direction, result.direction);\r\n mat4.getScaling(result.scale, transformed);\r\n result.boneIndex = -1;\r\n result.partTag = Number(locator.partTag) >>> 0;\r\n merged.locators.push(result);\r\n }\r\n\r\n if (sourceSet.HasName(EveSpaceObject2.#damageLocatorSetName))\r\n {\r\n this.#mergedDamageLocatorSources.push({\r\n owner: source.owner,\r\n partTag: source.owner.GetPartTag(),\r\n start,\r\n count: sourceSet.GetLocators().length,\r\n // Carbon LocatorSourceRange.childToObject (EveSpaceObject2.cpp:1938):\r\n // lets GetLocatorInObjectSpace pose merged damage locators against\r\n // the owning child's skeleton, then lift them into object space.\r\n childToObject: source.childToObject\r\n });\r\n }\r\n }\r\n\r\n this.#mergedLocatorSetsDirty = false;\r\n }\r\n\r\n /** Releases every active raycast preparation session used by damage filtering. */\r\n #ReleaseDamageFilterSessions()\r\n {\r\n if (this.#damageFilterState !== 2) return;\r\n for (const occluder of this.#damageFilterOccluders) occluder.geometry.ResetRayCaster();\r\n this.#damageFilterOccluders.length = 0;\r\n this.#damageFilterAreas.length = 0;\r\n }\r\n\r\n /**\r\n * Collects prepared hull and child geometry and opens raycast sessions\r\n * (Carbon CollectOccluders, EveSpaceObject2.cpp:1960-2028): occluders carry\r\n * areaStart/areaCount ranges into the shared #damageFilterAreas pool, and\r\n * records with no matching areas are skipped rather than raycast whole.\r\n */\r\n #CollectDamageFilterOccluders()\r\n {\r\n this.#damageFilterOccluders.length = 0;\r\n this.#damageFilterAreas.length = 0;\r\n if (this.mesh)\r\n {\r\n const geometry = this.mesh.GetGeometryResource();\r\n if (geometry)\r\n {\r\n if (!geometry.IsPrepared())\r\n {\r\n return false;\r\n }\r\n if (geometry.IsGood())\r\n {\r\n const areaStart = this.#damageFilterAreas.length;\r\n EveCollectAreas(TriBatchType.TRIBATCHTYPE_OPAQUE, this.mesh, this.#damageFilterAreas);\r\n const areaCount = this.#damageFilterAreas.length - areaStart;\r\n if (areaCount !== 0)\r\n {\r\n this.#damageFilterOccluders.push({\r\n geometry,\r\n fromObject: mat4.create(),\r\n areaStart,\r\n areaCount\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n const childGeometry = [];\r\n const identity = mat4.create();\r\n for (const child of this.effectChildren)\r\n {\r\n child.CollectOwnedGeometry(\r\n TriBatchType.TRIBATCHTYPE_OPAQUE, identity, childGeometry, this.#damageFilterAreas);\r\n }\r\n\r\n for (const source of childGeometry)\r\n {\r\n if (source.areaCount === 0) continue;\r\n if (!source.geometry.IsPrepared())\r\n {\r\n this.#damageFilterOccluders.length = 0;\r\n this.#damageFilterAreas.length = 0;\r\n return false;\r\n }\r\n if (!source.geometry.IsGood()) continue;\r\n\r\n const fromObject = mat4.create();\r\n if (!mat4.invert(fromObject, source.childToObject)) mat4.identity(fromObject);\r\n this.#damageFilterOccluders.push({\r\n geometry: source.geometry,\r\n fromObject,\r\n areaStart: source.areaStart,\r\n areaCount: source.areaCount\r\n });\r\n }\r\n\r\n for (const occluder of this.#damageFilterOccluders) occluder.geometry.PrepareRayCaster();\r\n return true;\r\n }\r\n\r\n /** Reports whether all pending raycast sessions are ready or failed. */\r\n #AreDamageFilterOccludersReady()\r\n {\r\n for (let index = 0; index < this.#damageFilterOccluders.length;)\r\n {\r\n const occluder = this.#damageFilterOccluders[index];\r\n if (occluder.geometry.HasRayCasterPreparationFailed())\r\n {\r\n occluder.geometry.ResetRayCaster();\r\n this.#damageFilterOccluders.splice(index, 1);\r\n continue;\r\n }\r\n if (!occluder.geometry.IsRayCasterReady()) return false;\r\n index++;\r\n }\r\n return true;\r\n }\r\n\r\n /** Rebuilds the enabled mask by testing each locator ray against occluders. */\r\n #RefreshDamageLocatorMask(damageLocators)\r\n {\r\n this.#damageLocatorEnabled = damageLocators.map(locator =>\r\n {\r\n const direction = vec3.transformQuat(vec3.create(), EveSpaceObject2.#unitY, locator.direction);\r\n const origin = vec3.scaleAndAdd(vec3.create(), locator.position, direction, 0.1);\r\n let occluded = false;\r\n let backfacing = false;\r\n let rayLength = Infinity;\r\n const frontFaceMinDistance = 0.05 * this.boundingSphereRadius;\r\n\r\n for (const occluder of this.#damageFilterOccluders)\r\n {\r\n if (occluder.areaCount === 0) continue;\r\n\r\n const rayOrigin = vec3.transformMat4(vec3.create(), origin, occluder.fromObject);\r\n const rayDirection = vec3.fromValues(\r\n occluder.fromObject[0] * direction[0] + occluder.fromObject[4] * direction[1] + occluder.fromObject[8] * direction[2],\r\n occluder.fromObject[1] * direction[0] + occluder.fromObject[5] * direction[1] + occluder.fromObject[9] * direction[2],\r\n occluder.fromObject[2] * direction[0] + occluder.fromObject[6] * direction[1] + occluder.fromObject[10] * direction[2]);\r\n\r\n // Carbon EveSpaceObject2.cpp:2100-2122: the outer loop walks the\r\n // occluder's pool range, the INNER loop every sub-area\r\n // (area.index .. index+count) - a single GetIndex() raycast\r\n // under-tests multi-area geometry.\r\n for (let poolIndex = occluder.areaStart; poolIndex < occluder.areaStart + occluder.areaCount; poolIndex++)\r\n {\r\n const area = this.#damageFilterAreas[poolIndex];\r\n for (let areaIndex = area.index; areaIndex < area.index + area.count; areaIndex++)\r\n {\r\n const hit = {};\r\n if (!occluder.geometry.GetIntersectionPoints(\r\n rayOrigin, rayDirection, hit, areaIndex, rayLength)) continue;\r\n\r\n rayLength = hit.distance;\r\n backfacing = !area.alphaCutout &&\r\n ((vec3.dot(hit.unnormalizedNormal, rayDirection) > 0) !== area.reversed);\r\n if (rayLength < frontFaceMinDistance)\r\n {\r\n occluded = true;\r\n break;\r\n }\r\n }\r\n if (occluded) break;\r\n }\r\n if (occluded) break;\r\n }\r\n return !occluded && !backfacing;\r\n });\r\n }\r\n\r\n /** Advances the asynchronous damage-locator filtering state machine. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateDamageLocatorFilter()\r\n {\r\n if (this.#damageFilterState === 0) return;\r\n if (!this.damageLocatorAutoFilterEnabled && !this.#damageLocatorFilterRequested)\r\n {\r\n this.#damageLocatorEnabled.length = 0;\r\n this.#ReleaseDamageFilterSessions();\r\n this.#damageFilterState = 0;\r\n return;\r\n }\r\n\r\n const damageLocators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!damageLocators?.length)\r\n {\r\n this.#damageLocatorEnabled.length = 0;\r\n this.#ReleaseDamageFilterSessions();\r\n this.#damageFilterState = 0;\r\n this.#damageLocatorFilterRequested = false;\r\n return;\r\n }\r\n this.#damageLocatorEnabled = Array.from({ length: damageLocators.length }, () => true);\r\n\r\n if (this.#damageFilterState === 1)\r\n {\r\n if (!this.#CollectDamageFilterOccluders()) return;\r\n this.#damageFilterState = 2;\r\n }\r\n if (!this.#AreDamageFilterOccludersReady()) return;\r\n\r\n this.#RefreshDamageLocatorMask(damageLocators);\r\n this.#ReleaseDamageFilterSessions();\r\n this.#damageFilterState = 0;\r\n this.#damageLocatorFilterRequested = false;\r\n\r\n if (this.impactOverlay && this.impactOverlay.GetArmorImpactGoalCount() > 0)\r\n {\r\n const last = this.impactOverlay.GetLastDamageState();\r\n this.ClearImpactDamage();\r\n this.SetImpactDamageState(last[0], last[1], last[2], true);\r\n }\r\n }\r\n\r\n /** Requests a damage-locator filter pass. */\r\n @carbon.method\r\n @impl.implemented\r\n RunDamageLocatorFilter()\r\n {\r\n this.#damageLocatorFilterRequested = true;\r\n if (this.#damageFilterState === 0) this.#damageFilterState = 1;\r\n }\r\n\r\n /**\r\n * Clears all impact and damage effects on the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearImpactDamage()\r\n {\r\n if (this.impactOverlay) this.impactOverlay.Clear();\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n const overlay = range.owner.GetDamageOverlay();\r\n if (overlay) overlay.Clear();\r\n }\r\n }\r\n\r\n /**\r\n * Clears all animations on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearAnimations()\r\n {\r\n this.animationUpdater?.ClearAnimations?.();\r\n }\r\n\r\n /**\r\n * Creates an impact facing a position on the closest facing damage locator.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CreateImpactFromPosition(position, direction, lifeTime, size)\r\n {\r\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\r\n }\r\n\r\n /**\r\n * Creates an impact effect on a damage locator through the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\r\n {\r\n if (this.impactOverlay)\r\n {\r\n const configuration = this.impactOverlay.GetImpactConfiguration();\r\n if (configuration === ImpactConfiguration.IMPACT_ARMOR ||\r\n configuration === ImpactConfiguration.IMPACT_HULL)\r\n {\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n if (damageLocatorIndex < range.start || damageLocatorIndex >= range.start + range.count) continue;\r\n return this.#EnsureChildDamageOverlay(range).CreateImpact(\r\n damageLocatorIndex - range.start, size, false);\r\n }\r\n }\r\n return this.impactOverlay.CreateImpact(\r\n damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this);\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Ends the current animation on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n EndAnimation()\r\n {\r\n this.animationUpdater?.EndAnimation?.();\r\n }\r\n\r\n /**\r\n * Freezes LOD selection at the current mesh and marks decal geometry\r\n * frozen.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n FreezeHighDetailMesh()\r\n {\r\n this.#allowLodSelection = false;\r\n for (const decal of this.decals)\r\n {\r\n decal?.SetHighDetailDecalState?.(true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the number of damage locators on this object.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorCount()\r\n {\r\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the number of locators in a named locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\r\n }\r\n\r\n /**\r\n * Gets the first locator list whose set has the requested Carbon name.\r\n * The returned list remains owned by the locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorsForSet(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName);\r\n }\r\n\r\n /** Appends copies of a named locator set, merging with an existing authored set. */\r\n @carbon.method\r\n @impl.implemented\r\n MergeToLocatorSet(locatorSet)\r\n {\r\n const locators = locatorSet.GetLocators();\r\n if (!locators.length) return;\r\n\r\n this.InvalidateMergedLocators(\"structure\");\r\n const existing = this.locatorSets.find(set => set.HasName(locatorSet.GetName()));\r\n if (existing)\r\n {\r\n existing.Append(locators);\r\n return;\r\n }\r\n this.AddLocatorSet(locatorSet.GetName(), locators);\r\n }\r\n\r\n /** Adds a new authored locator set without replacing another set of the same name. */\r\n @carbon.method\r\n @impl.implemented\r\n AddLocatorSet(name, locators)\r\n {\r\n const locatorSet = new EveLocatorSets();\r\n locatorSet.Set(name, Array.from(locators));\r\n this.locatorSets.push(locatorSet);\r\n this.InvalidateMergedLocators(\"structure\");\r\n return locatorSet;\r\n }\r\n\r\n /** Removes all authored locator sets and invalidates every derived locator view. */\r\n @carbon.method\r\n @impl.implemented\r\n ClearLocatorSets()\r\n {\r\n this.locatorSets.length = 0;\r\n this.InvalidateMergedLocators(\"structure\");\r\n }\r\n\r\n /**\r\n * Gets the closest locator in a set to a world position, ignoring locator\r\n * facing. Returns -1 when the set is missing or empty.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCloseLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return -1;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n if (locatorSetName === EveSpaceObject2.#damageLocatorSetName &&\r\n index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\r\n this.GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index],\r\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n /**\r\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\r\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\r\n * script-exposed.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetGoodLocatorIndex(position, locatorSetName)\r\n {\r\n return this.GetCloseLocatorIndex(position, locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the local direction of an indexed damage locator, (0,0,0) for\r\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\r\n * GetDamageLocatorDirectionLocal).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\r\n {\r\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\r\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\r\n if (!targetableCall) out = inWorldSpaceOrOut;\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\r\n return targetableCall ? false : out;\r\n }\r\n const position = vec3.create();\r\n this.GetLocatorInObjectSpace(position, out, locators[index], index);\r\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n return targetableCall ? true : out;\r\n }\r\n\r\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\r\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n else vec3.set(out, 0, 0, 0);\r\n return false;\r\n }\r\n this.GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index], index);\r\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets a damage locator's BIND position in object space - the merged set's\r\n * authored position, no animation (Carbon EveSpaceObject2.cpp:2785-2796).\r\n * Impact overlays seed decals here so they stay put on animated parts.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorBindPosition(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n vec3.set(out, 0, 0, 0);\r\n return false;\r\n }\r\n vec3.copy(out, locators[index].position);\r\n return true;\r\n }\r\n\r\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\r\n @carbon.method\r\n @impl.implemented\r\n GetClosestDamageLocatorIndex(position)\r\n {\r\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\r\n GetGoodDamageLocatorIndex(position)\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators) return 0;\r\n\r\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\r\n let minDistance = Infinity;\r\n let maxDistance = Number.MIN_VALUE;\r\n let bestDirectionFit = 0;\r\n\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n if (index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\r\n const locator = locators[index];\r\n this.GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator, index);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n minDistance = Math.min(minDistance, distance);\r\n maxDistance = Math.max(maxDistance, distance);\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\r\n }\r\n\r\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\r\n let bestFit = 1;\r\n let bestLocator = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n if (index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\r\n this.GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index], index);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n const range = maxDistance - minDistance;\r\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\r\n let value = 2 * scale - 1;\r\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\r\n value *= 0.5;\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\r\n const fit = Math.abs(value - desiredFit);\r\n if (fit < bestFit)\r\n {\r\n bestFit = fit;\r\n bestLocator = index;\r\n }\r\n }\r\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\r\n }\r\n\r\n /** Gets the model-scaled target radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRadius()\r\n {\r\n return this.GetBoundingSphereRadius();\r\n }\r\n\r\n /** Computes a miss point just outside the model silhouette. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMissPosition(hit, source, out = vec3.create())\r\n {\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.copy(out, this.modelWorldPosition);\r\n if (hit && source)\r\n {\r\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\r\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\r\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\r\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\r\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\r\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\r\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\r\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\r\n }\r\n }\r\n else\r\n {\r\n this.GetDamageLocatorPosition(-1, true, out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Gets the current target impact material. */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactConfiguration()\r\n {\r\n return this.impactOverlay\r\n ? this.impactOverlay.GetImpactConfiguration()\r\n : ImpactConfiguration.IMPACT_INVALID;\r\n }\r\n\r\n /** Replaces the ship impact overlay. */\r\n @carbon.method\r\n @impl.implemented\r\n SetImpactOverlay(overlay)\r\n {\r\n this.impactOverlay = overlay;\r\n }\r\n\r\n /** Returns the ship impact overlay. */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactOverlay()\r\n {\r\n return this.impactOverlay;\r\n }\r\n\r\n /** Reports whether impacts currently use the authored shield ellipsoid. */\r\n @carbon.method\r\n @impl.implemented\r\n HasImpactConfigurationShield()\r\n {\r\n return !!this.impactOverlay?.HasShieldEllipsoid()\r\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\r\n }\r\n\r\n /** Resolves a shield-ray or damage-locator collision point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\r\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\r\n {\r\n if (!this.HasImpactConfigurationShield())\r\n {\r\n this.GetDamageLocatorPosition(locator, true, out);\r\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\r\n }\r\n\r\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\r\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\r\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\r\n this.GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\r\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\r\n if (t !== null && t >= -1 && t <= 1)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\r\n {\r\n vec3.copy(out, posNow);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Updates an existing impact overlay entry. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateImpact(out, direction, impactIndex)\r\n {\r\n if (!this.impactOverlay) return false;\r\n if (this.impactOverlay.UpdateImpact(out, direction, impactIndex)) return true;\r\n\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n const overlay = range.owner.GetDamageOverlay();\r\n if (overlay && overlay.HasImpact(impactIndex)) return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the local position of an indexed damage locator, (0,0,0) for\r\n * indices out of range.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.GetLocatorInObjectSpace(out, direction, locators[index], index);\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\r\n * indices out of range (returned untransformed, as Carbon does).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTransformedDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.GetLocatorInObjectSpace(out, direction, locators[index], index);\r\n return vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Checks whether this object is in impostor mode. The impostor system that\r\n * raises the flag is unported, so this reports the default until then.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n IsImpostor()\r\n {\r\n return this.#impostorMode;\r\n }\r\n\r\n /**\r\n * Gets a locator position from a named set. Out-of-range or missing-set\r\n * queries return the world translation in world space and (0,0,0) in\r\n * object space, as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n if (inWorldSpace)\r\n {\r\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n }\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.GetLocatorInObjectSpace(out, direction, locators[index],\r\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\r\n if (inWorldSpace)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets a locator direction from a named set. Out-of-range or missing-set\r\n * queries return (0,1,0), as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n return vec3.set(out, 0, 1, 0);\r\n }\r\n const position = vec3.create();\r\n this.GetLocatorInObjectSpace(position, out, locators[index],\r\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\r\n if (inWorldSpace)\r\n {\r\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Raises a named controller event on this hull's controllers and forwards it\r\n * to the effect children and overlay effects.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n const eventName = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n controller?.HandleEvent(eventName);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.HandleControllerEvent(eventName);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.HandleControllerEvent(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation once, replacing the current one\r\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation once after the current one (Carbon ChainAnimation).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation with explicit loop, start, and speed settings\r\n * (Carbon ChainAnimationEx).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimationEx(animName, loopCount, start, speed)\r\n {\r\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\r\n }\r\n\r\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\r\n // into the animation updater, which owns playback state; a missing updater\r\n // is a Carbon-faithful no-op.\r\n\r\n /**\r\n * Forwards a playback request to the animation updater, which owns all\r\n * animation state; a hull without an updater does nothing, as in Carbon.\r\n */\r\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\r\n {\r\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Recalculates the authored bounding sphere from the mesh geometry\r\n * resource. Fails when no mesh or ready geometry resource is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n RebuildBoundingSphereInformation()\r\n {\r\n const mesh = this.mesh;\r\n if (!mesh)\r\n {\r\n return false;\r\n }\r\n const geometryRes = mesh.GetGeometryResource();\r\n if (!geometryRes || !geometryRes.IsGood?.())\r\n {\r\n return false;\r\n }\r\n geometryRes.RecalculateBoundingSphere?.();\r\n const sphere = vec4.create();\r\n geometryRes.GetBoundingSphere(mesh.GetMeshIndex?.() ?? 0, sphere);\r\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\r\n this.boundingSphereRadius = sphere[3];\r\n return true;\r\n }\r\n\r\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\r\n SetBoundingSphereInformation(sphere)\r\n {\r\n if (sphere?.center)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = Number(sphere.radius);\r\n }\r\n else\r\n {\r\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a plain-object snapshot of the controller variables currently\r\n * stamped on this hull.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetControllerVariables()\r\n {\r\n return Object.fromEntries(this.#controllerVariables);\r\n }\r\n\r\n /** Gets Carbon's most recently selected geometry LOD. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\r\n GetLastUsedMeshLod()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource();\r\n if (!geometryResource) return -1;\r\n if (!this.#allowLodSelection) return 0;\r\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\r\n }\r\n\r\n /**\r\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\r\n * to GetEveLocatorTransform): the identity for unknown names, the animated\r\n * bone world transform when the animation updater resolves the name, else\r\n * the authored locator transform.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocatorTransform(name, out = mat4.create())\r\n {\r\n const target = String(name ?? \"\");\r\n let locator = null;\r\n for (const candidate of this.locators)\r\n {\r\n if (candidate?.GetName?.() === target)\r\n {\r\n locator = candidate;\r\n break;\r\n }\r\n }\r\n if (!locator)\r\n {\r\n return mat4.identity(out);\r\n }\r\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\r\n {\r\n return out;\r\n }\r\n return mat4.copy(out, locator.GetTransform());\r\n }\r\n\r\n /**\r\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\r\n * enabled, else the mesh box, else the cached box (at worst it lags one\r\n * frame). With out arguments it fills them and returns true; without, it\r\n * returns { min, max }.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocalBoundingBox(minBounds, maxBounds)\r\n {\r\n const min = vec3.create();\r\n const max = vec3.create();\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater && updater.IsInitialized())\r\n {\r\n const sphere = vec4.create();\r\n updater.GetDynamicBounds(sphere, min, max);\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else if (this.mesh && this.mesh.GetBoundingBox(min, max))\r\n {\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else\r\n {\r\n vec3.copy(min, this.#localAabbMin);\r\n vec3.copy(max, this.#localAabbMax);\r\n }\r\n if (minBounds && maxBounds)\r\n {\r\n vec3.copy(minBounds, min);\r\n vec3.copy(maxBounds, max);\r\n return true;\r\n }\r\n return { min, max };\r\n }\r\n\r\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\r\n @carbon.method\r\n @impl.adapted\r\n GetWorldBoundingBox(minBounds, maxBounds)\r\n {\r\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\r\n box3.transformMat4(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\r\n const min = minBounds ?? vec3.create();\r\n const max = maxBounds ?? vec3.create();\r\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\r\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\r\n return minBounds && maxBounds ? true : { min, max };\r\n }\r\n\r\n /** Reports whether the attached mesh has a ready geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n IsBoundingBoxReady()\r\n {\r\n if (!this.mesh) return false;\r\n const geometryResource = this.mesh.GetGeometryResource();\r\n return geometryResource ? geometryResource.IsGood() : false;\r\n }\r\n\r\n /**\r\n * Gets Carbon's realized world sphere, optionally accumulated with transform\r\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = sph3.create(), query = 0)\r\n {\r\n if (this.boundingSphereRadius <= 0 && this.#dynamicBoundingSphere[3] <= 0) return false;\r\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\r\n if (!query || !this.DisplayChildren()) return true;\r\n for (const child of this.children)\r\n {\r\n if (child.GetBoundingSphere(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (child.GetBoundingSphere(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\r\n EstimatePixelDiameter(frustum)\r\n {\r\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\r\n {\r\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\r\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\r\n }\r\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\r\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\r\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n return this.estimatedPixelDiameter;\r\n }\r\n\r\n /** Reports the result of the latest Carbon visibility update. */\r\n @carbon.method\r\n @impl.implemented\r\n IsInFrustum()\r\n {\r\n return this.#isInFrustum;\r\n }\r\n\r\n /**\r\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\r\n * when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereCenter(out = vec3.create())\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\r\n }\r\n return vec3.copy(out, this.boundingSphereCenter);\r\n }\r\n\r\n /**\r\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\r\n * skinned sphere when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return this.modelScale * this.#dynamicBoundingSphere[3];\r\n }\r\n return this.modelScale * this.boundingSphereRadius;\r\n }\r\n\r\n /**\r\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\r\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoneCount()\r\n {\r\n const updater = this.animationUpdater;\r\n if (!updater)\r\n {\r\n return 0;\r\n }\r\n if (updater.IsUsingCMF?.())\r\n {\r\n if (!updater.HasMeshBinding?.())\r\n {\r\n return 0;\r\n }\r\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\r\n }\r\n return updater.GetMeshBindingBoneCount?.() ?? 0;\r\n }\r\n\r\n /**\r\n * Pushes shield, armor and hull damage levels to the impact overlay and\r\n * mirrors them into the ShieldDamage, ArmorDamage and HullDamage controller\r\n * variables so bound effects follow.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\r\n {\r\n if (this.impactOverlay)\r\n {\r\n this.impactOverlay.GetDamageOverlay().SetEnabledDamageLocators(this.#damageLocatorEnabled);\r\n this.impactOverlay.SetDamageState(shield, armor, hull, doCreateArmorImpacts);\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n this.#EnsureChildDamageOverlay(range).SetDamageState(\r\n shield, armor, hull, doCreateArmorImpacts);\r\n }\r\n }\r\n this.SetControllerVariable(\"ShieldDamage\", shield);\r\n this.SetControllerVariable(\"ArmorDamage\", armor);\r\n this.SetControllerVariable(\"HullDamage\", hull);\r\n }\r\n\r\n /**\r\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetImpactAnimation(name, enable, duration)\r\n {\r\n if (!this.impactOverlay) return;\r\n this.impactOverlay.ToggleEffect(name, enable, duration);\r\n if (name === \"shieldboost\" || name === \"shieldhardening\") return;\r\n\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n this.#EnsureChildDamageOverlay(range).ToggleEffect(name, enable, duration);\r\n }\r\n }\r\n\r\n /** Creates and synchronizes the damage overlay owned by one child-locator range. */\r\n #EnsureChildDamageOverlay(range)\r\n {\r\n let overlay = range.owner.GetDamageOverlay();\r\n if (!overlay)\r\n {\r\n overlay = range.owner.EnsureDamageOverlay();\r\n const shipDamage = this.impactOverlay.GetDamageOverlay();\r\n // The part's OWN armour shader (Carbon EveSpaceObject2.cpp:3529, commit\r\n // 6975d9f1): an animated part needs the skinned variant, which the\r\n // ship-wide effect is not.\r\n overlay.SetArmorDamageShaderEffect(range.owner.GetArmorDamageShaderEffect());\r\n const flicker = shipDamage.GetHullDamageFlickerCurve();\r\n if (flicker) overlay.SetHullDamageFlickerCurve(TriPerlinCurve.from(flicker.GetValues()));\r\n overlay.SetSeed(shipDamage.GetSeed() + range.owner.GetPartTag());\r\n }\r\n\r\n overlay.SetDamageLocatorCount(range.count);\r\n overlay.SetEnabledDamageLocators(\r\n this.#damageLocatorEnabled.slice(range.start, range.start + range.count));\r\n overlay.SetImpactIndexSource(this.impactOverlay.GetDamageOverlay());\r\n return overlay;\r\n }\r\n\r\n /**\r\n * Stores a controller variable on the hull and pushes it to the controllers,\r\n * effect children and overlay effects; the stored value is replayed onto\r\n * controllers and children added later.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name ?? \"\");\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers)\r\n {\r\n controller?.SetVariable(key, next);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetControllerVariable(key, next);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.SetControllerVariable(key, next);\r\n }\r\n }\r\n\r\n /**\r\n * Forwards a procedural-container variable to every effect child; the hull\r\n * itself keeps no copy.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n\r\n /**\r\n * Starts this hull's controllers and those of its effect children and overlay\r\n * effects.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Start();\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.StartControllers();\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.StartControllers();\r\n }\r\n }\r\n\r\n /**\r\n * Applies bone and model transforms to locators and returns\r\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\r\n * does (TransformLocators maps to PyTransformLocators). Accepts either\r\n * locator records ({ position, direction, boneIndex }, Carbon's\r\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\r\n * tuple shape it returns.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n TransformLocators(locators = [])\r\n {\r\n const result = [];\r\n for (const locator of locators ?? [])\r\n {\r\n const record = Array.isArray(locator)\r\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\r\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\r\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\r\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\r\n const boneIndex = Number(record.boneIndex ?? 0);\r\n this.#TransformLocator(position, rotation, boneIndex);\r\n if (this.modelTranslationCurve || this.modelRotationCurve)\r\n {\r\n this.#ApplyModelTransform(position, rotation);\r\n }\r\n result.push([position, rotation, boneIndex]);\r\n }\r\n return result;\r\n }\r\n\r\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\r\n // bone matrix; without bone data the authored values pass through.\r\n\r\n /**\r\n * Applies the mesh bone matrix to a locator position and rotation for\r\n * bone-attached locators; the authored values pass through unchanged when\r\n * there is no usable bone data.\r\n */\r\n #TransformLocator(position, rotation, boneIndex)\r\n {\r\n const updater = this.animationUpdater;\r\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\r\n {\r\n return;\r\n }\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\r\n if (!bone)\r\n {\r\n return;\r\n }\r\n vec3.transformMat4(position, position, bone);\r\n const boneRotation = mat4.getRotation(quat.create(), bone);\r\n quat.multiply(rotation, boneRotation, rotation);\r\n }\r\n\r\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\r\n // origin (pure GetValueAt, no playback advance): translation adds, model\r\n // rotation rotates the position and pre-multiplies.\r\n\r\n /**\r\n * Applies the model translation and rotation curves sampled at time 0 to a\r\n * locator position and rotation, matching Carbon's Blue locator surface, which\r\n * reads the curves without advancing playback.\r\n */\r\n #ApplyModelTransform(position, rotation)\r\n {\r\n if (this.modelTranslationCurve)\r\n {\r\n const translation = vec3.create();\r\n this.modelTranslationCurve.GetValueAt?.(0, translation);\r\n vec3.add(position, position, translation);\r\n }\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\r\n vec3.transformQuat(position, position, modelRotation);\r\n quat.multiply(rotation, modelRotation, rotation);\r\n }\r\n }\r\n\r\n // Carbon GetLocatorsForSet: first set matching the name wins.\r\n\r\n /**\r\n * Returns the locator list of the first locator set carrying the name, or null\r\n * when no set matches; the list stays owned by the locator set.\r\n */\r\n #GetLocatorsForSet(locatorSetName)\r\n {\r\n const target = String(locatorSetName ?? \"\");\r\n this.EnsureChildLocatorMerged();\r\n for (const set of this.#mergedLocatorSets)\r\n {\r\n if (set.HasName(target))\r\n {\r\n return set.GetLocators();\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Writes a locator's object-space position and direction (Carbon\r\n * EveSpaceObject2.cpp:3751-3772, rewritten upstream by 3d988b1d).\r\n *\r\n * A merged damage locator (mergedDamageIndex >= 0, indexing the merged\r\n * damage set) delegates to the owning child's animated pose - the locator's\r\n * boneIndex addresses the CHILD's skeleton, never this object's - then\r\n * lifts the result through the range's childToObject transform; Carbon\r\n * normalizes the direction HERE but not in EveGetLocatorPose, and that\r\n * asymmetry is preserved. Every other locator resolves against this\r\n * object's own animation updater.\r\n *\r\n * Overridable on purpose: Carbon's EveSwarm overrides this.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorInObjectSpace(outPosition, outDirection, locator, mergedDamageIndex = -1)\r\n {\r\n if (mergedDamageIndex >= 0)\r\n {\r\n this.EnsureChildLocatorMerged();\r\n for (const range of this.#mergedDamageLocatorSources)\r\n {\r\n if (range.owner && mergedDamageIndex >= range.start && mergedDamageIndex < range.start + range.count)\r\n {\r\n if (range.owner.GetDamageLocatorAnimatedLocal(mergedDamageIndex - range.start, outPosition, outDirection))\r\n {\r\n vec3.transformMat4(outPosition, outPosition, range.childToObject);\r\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, range.childToObject);\r\n vec3.normalize(outDirection, outDirection);\r\n return;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n EveGetLocatorPose(outPosition, outDirection, this.animationUpdater, locator);\r\n }\r\n\r\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\r\n // set is missing, -1 when no locator faces the position.\r\n\r\n /**\r\n * Returns the index of the nearest locator in a named set that faces the given\r\n * world position - 0 when the set is missing, -1 when no locator faces the\r\n * position.\r\n */\r\n #GetClosestLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return 0;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n if (locatorSetName === EveSpaceObject2.#damageLocatorSetName &&\r\n index < this.#damageLocatorEnabled.length && !this.#damageLocatorEnabled[index]) continue;\r\n this.GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index],\r\n locatorSetName === EveSpaceObject2.#damageLocatorSetName ? index : -1);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n /**\r\n * Reports whether a locator faces a position, by testing that stepping the\r\n * object-space position back along the locator direction shortens it.\r\n */\r\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\r\n {\r\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\r\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\r\n }\r\n\r\n /** Rotates a direction by a matrix's rotation basis, ignoring its translation. */\r\n static #TransformNormal(out, direction, matrix)\r\n {\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\r\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\r\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\r\n return out;\r\n }\r\n\r\n /** Carbon's authored-or-derived local shape ellipsoid query. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShapeEllipsoid(outCenter, outRadii)\r\n {\r\n if (this.shapeEllipsoidRadius[0] > 0)\r\n {\r\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\r\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\r\n }\r\n else\r\n {\r\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\r\n if (bounds === false)\r\n {\r\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\r\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\r\n }\r\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\r\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\r\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\r\n }\r\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\r\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\r\n }\r\n\r\n /**\r\n * Maps the negated dot product of a locator direction and an offset direction\r\n * onto Carbon's square-root fit score, the ranking used to pick a varied\r\n * damage locator.\r\n */\r\n static #GetDirectionFit(v0, v1)\r\n {\r\n const direction = -vec3.dot(v0, v1);\r\n return direction < 0\r\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\r\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\r\n }\r\n\r\n /**\r\n * Intersects a ray with an axis-aligned ellipsoid in the ellipsoid's own space and writes the hit point into out.\r\n * @returns {number|null} The ray parameter at the hit, or null when the ray is degenerate or misses.\r\n */\r\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\r\n {\r\n const vx = direction[0] / radii[0];\r\n const vy = direction[1] / radii[1];\r\n const vz = direction[2] / radii[2];\r\n const sx = (origin[0] - center[0]) / radii[0];\r\n const sy = (origin[1] - center[1]) / radii[1];\r\n const sz = (origin[2] - center[2]) / radii[2];\r\n const vv = vx * vx + vy * vy + vz * vz;\r\n if (!(vv > 0)) return null;\r\n const vs = vx * sx + vy * sy + vz * sz;\r\n const ss = sx * sx + sy * sy + sz * sz;\r\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\r\n if (discriminant < 0) return null;\r\n discriminant = Math.sqrt(discriminant);\r\n let t = -discriminant - vs / vv;\r\n if (t < 0) t = discriminant - vs / vv;\r\n vec3.scaleAndAdd(out, origin, direction, t);\r\n return t;\r\n }\r\n\r\n /** Reports whether a point lies inside an axis-aligned ellipsoid. */\r\n static #IsPointInsideEllipsoid(center, radii, point)\r\n {\r\n const x = (point[0] - center[0]) / radii[0];\r\n const y = (point[1] - center[1]) / radii[1];\r\n const z = (point[2] - center[2]) / radii[2];\r\n return x * x + y * y + z * z <= 1;\r\n }\r\n\r\n // Mesh bone matrices come from the animation updater; only mat4-shaped\r\n // entries are usable.\r\n\r\n /**\r\n * Unpacks one bone from the updater's palette into a mat4, or null when the\r\n * index is out of range.\r\n *\r\n * The palette is Carbon's storage - one contiguous Float4x3 buffer, stride\r\n * 12 - so a bone is expanded rather than borrowed. Carbon does the same at\r\n * every read site with TriMatrixCopyFrom3x4.\r\n */\r\n static #GetBoneMatrix(updater, boneIndex)\r\n {\r\n const bones = updater.GetMeshBoneMatrixList?.();\r\n\r\n if (!bones || boneIndex < 0 || (boneIndex + 1) * 12 > bones.length)\r\n {\r\n return null;\r\n }\r\n\r\n return MatrixCopyFrom3x4(mat4.create(), bones, boneIndex);\r\n }\r\n\r\n /**\r\n * Replays every stored controller variable onto a newly added controller or\r\n * effect child through the named setter, so late additions start with the same\r\n * state.\r\n */\r\n static #ApplyControllerVariables(target, variables, methodName)\r\n {\r\n const setter = target?.[methodName];\r\n if (typeof setter !== \"function\")\r\n {\r\n return;\r\n }\r\n for (const [name, value] of variables)\r\n {\r\n setter.call(target, name, value);\r\n }\r\n }\r\n\r\n /**\r\n * Samples a curve into out through whichever of Update or GetValueAt it\r\n * exposes, writing the fallback when there is no curve and copying back curves\r\n * that return a new array instead of filling out.\r\n */\r\n static #UpdateCurve(curve, time, out, fallback)\r\n {\r\n if (!curve)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = fallback[index];\r\n }\r\n return out;\r\n }\r\n\r\n let result;\r\n if (typeof curve.Update === \"function\")\r\n {\r\n result = curve.Update(time, out);\r\n }\r\n else if (typeof curve.GetValueAt === \"function\")\r\n {\r\n result = curve.GetValueAt(time, out);\r\n }\r\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = result[index];\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Reads a numeric value from the update context, preferring a getter method\r\n * and falling back to the named properties, and yields 0 when nothing supplies\r\n * it.\r\n */\r\n static #GetContextValue(context, methodName, ...propertyNames)\r\n {\r\n const method = context?.[methodName];\r\n if (typeof method === \"function\")\r\n {\r\n return Number(method.call(context)) || 0;\r\n }\r\n for (const propertyName of propertyNames)\r\n {\r\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\r\n {\r\n return Number(context[propertyName]) || 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Returns a world sphere's on-screen diameter in pixels from the frustum's\r\n * exact query, or 0 when the frustum does not expose it.\r\n */\r\n static #GetPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n /**\r\n * Returns a world sphere's on-screen diameter in pixels, preferring the\r\n * frustum's cheaper estimated query and falling back to the exact one, or 0\r\n * when the frustum exposes neither.\r\n */\r\n static #GetEstimatedPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n /** Writes a center and radius into a caller-owned sph3. */\r\n static #SetSphere(out, center, radius)\r\n {\r\n return sph3.set(out, center[0], center[1], center[2], radius);\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #unitY = Object.freeze([0, 1, 0]);\r\n\r\n static #locatorDirection = vec3.create();\r\n static #locatorPosition = vec3.create();\r\n static #locatorOffset = vec3.create();\r\n static #objectPosition = vec3.create();\r\n static #missOffset = vec3.create();\r\n static #missDirection = vec3.create();\r\n static #rayOrigin = vec3.create();\r\n static #rayEnd = vec3.create();\r\n static #rayDirection = vec3.create();\r\n static #ellipsoidCenter = vec3.create();\r\n static #ellipsoidRadii = vec3.create();\r\n static #boundsMin = vec3.create();\r\n static #boundsMax = vec3.create();\r\n static #childSphere = sph3.create();\r\n static #localSphere = sph3.create();\r\n static #worldSphere = sph3.create();\r\n static #localBox = box3.create();\r\n static #worldBox = box3.create();\r\n\r\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\r\n\r\n static #identityTransform = mat4.create();\r\n\r\n static #damageLocatorSetName = \"damage\";\r\n\r\n static ReflectionMode = ReflectionMode;\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n static ImpactConfiguration = ImpactConfiguration;\r\n\r\n}\r\n\r\nCjsSchema.decorateField(EveSpaceObject2, \"meshLod\", edit.persist, type.objectRef(\"Tr2MeshBase\"));\r\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_spaceObjectShipData","_init_extra_spaceObjectShipData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_damageLocatorAutoFilterEnabled","_init_extra_damageLocatorAutoFilterEnabled","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2BoundingBox","ITr2Renderable","IEveSpaceObject2","IEveInheritPropertiesOwner","edit","notify","persist","int32","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","method","impl","adapted","implemented","reason","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","spaceObjectShipData","lastDamageLocatorHit","damageLocatorAutoFilterEnabled","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","IEveSpaceObject2ParentData","RawData","meshLod","Initialize","controller","IsLinked","Link","child","SetOwner","InvalidateMergedLocators","EnsureChildLocatorMerged","SetDamageLocatorCount","GetDamageLocatorCount","GetMesh","SetMesh","GetOverlayEffects","AddController","CjsModel","addChild","AddObserver","observer","push","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","CjsSchema","cast","light","GetEffectChildByName","target","String","GetName","OnListModified","event","key","key2","value","masked","BLUELISTEVENT","BELIST_EVENTMASK","loading","BELIST_LOADING","BELIST_INSERTED","BELIST_REMOVED","Unlink","BELIST_UNLOADSTART","registry","IsInRegistry","GetComponentRegistry","inserted","Register","removed","UnRegister","entity","#OnLightListModified","length","UnRegisterComponent","EveComponentType","LightOwner","RegisterComponent","#OnDecalListModified","SetPriority","index","BELIST_SWAPPED","BELIST_MOVED","low","Math","min","high","max","AddToEffectChildrenList","AddLight","ClearLights","clearChildren","RemoveFromEffectChildrenList","removeChild","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","SetAndTranspose","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","PrepareShaderData","updateContext","GetActivationStrength","GetBoundingSphereRadius","normalizedBoundingRadius","clipOffset","insideSpherePercentage","dissolveRadius","center","GetBoundingSphereCenter","add","clipRadiusSq","sign","Set","dissolveRadius2","UpdateShLighting","manager","coefficients","Get","fill","lowThreshold","GetLighting","mediumThreshold","intensityFadeRadius","intensity","SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR","ClearShLighting","GetParentData","out","transform","killCount","shipData","clipRadius2Sq","clipFactor","clipFactor2","shLighting","customData","GetPerObjectStructs","vsData","psData","CopyFrom","vs","ps","UpdateSyncronous","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateDamageLocatorFilter","UpdateAsyncronous","threshold","frequency","Invalidate","previousActivationStrength","SetControllerVariable","shapeCenter","shapeRadius","GetShapeEllipsoid","GetDataTextureOffset","slot","CUSTOM_MASK_MAX","FillPerObjectData","EveCustomMask","ZeroPerObjectData","curveSet","renderContext","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","bones","boneCount","getBoneList","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","parentData","decal","SetBoneMatrix","Infinity","UseWithScreenSize","GetRenderables","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","GetBatches","batches","batchType","perObjectData","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","lod","GetMeshLod","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetPickingBatches","pickTypes","TR2_PICK_TYPE_DEFAULT","Tr2PickType","PICK_TYPE_PICKING","TRIBATCHTYPE_PICKING","PICK_TYPE_OPAQUE","TRIBATCHTYPE_ADDITIVE","PICK_TYPE_TRANSPARENT","GetID","_areaID","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","IsGood","overlayElements","CarbonVertexElements","GetMeshVertexElements","overlayDeclaration","Tr2EffectStateManager","getVertexDeclarationHandle","effects","overlayType","GetType","effect","#CommitBlockBatch","priority","vertexDeclaration","SetVertexDeclaration","draw","resolveDrawArguments","SetDrawIndexedInstanced","indexCountPerInstance","instanceCount","startIndexLocation","baseVertexLocation","startInstanceLocation","#OverlayEffectsFor","GetEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","_accumulator","GetMeshBoneCount","SetIndex","GetShadowPerObjectData","accumulator","GetLights","lightManager","SetBrightnessMultiplier","IsCastingShadow","cameraFrustum","shadowFrustum","renderReason","sizeInShadowOut","Tr2RenderReason","TR2RENDERREASON_REFLECTION","ShouldReflect","sizeInShadow","IsVisible","GetSizeInShadow","RegisterComponents","ReflectionRenderable","ShadowCaster","UnRegisterComponents","GetModelCenterWorldPosition","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","childSources","CollectOwnedLocatorSets","authored","GetLocators","EveLocatorSets","locatorTransform","transformed","source","sourceSet","sets","merged","find","HasName","SetName","locator","fromRotationTranslationScale","direction","position","childToObject","result","Locator","getTranslation","getRotation","normalize","getScaling","boneIndex","partTag","owner","GetPartTag","#ReleaseDamageFilterSessions","occluder","ResetRayCaster","#CollectDamageFilterOccluders","IsPrepared","areaStart","EveCollectAreas","areaCount","fromObject","childGeometry","CollectOwnedGeometry","PrepareRayCaster","#AreDamageFilterOccludersReady","HasRayCasterPreparationFailed","splice","IsRayCasterReady","#RefreshDamageLocatorMask","damageLocators","map","transformQuat","origin","scaleAndAdd","occluded","backfacing","rayLength","frontFaceMinDistance","rayOrigin","rayDirection","poolIndex","areaIndex","hit","GetIntersectionPoints","alphaCutout","dot","unnormalizedNormal","reversed","Array","from","GetArmorImpactGoalCount","last","GetLastDamageState","ClearImpactDamage","SetImpactDamageState","RunDamageLocatorFilter","Clear","range","GetDamageOverlay","ClearAnimations","CreateImpactFromPosition","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","configuration","GetImpactConfiguration","ImpactConfiguration","IMPACT_ARMOR","IMPACT_HULL","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetLocatorCount","locatorSetName","GetLocatorsForSet","MergeToLocatorSet","locatorSet","existing","Append","AddLocatorSet","ClearLocatorSets","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","GetLocatorInObjectSpace","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetDamageLocatorBindPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","subtract","desiredFit","random","bestFit","bestLocator","sqrt","abs","fit","GetRadius","GetMissPosition","directionLength","offsetLength","IMPACT_INVALID","SetImpactOverlay","GetImpactOverlay","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","HasImpact","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","shield","armor","hull","doCreateArmorImpacts","SetEnabledDamageLocators","SetDamageState","SetImpactAnimation","enable","duration","ToggleEffect","#EnsureChildDamageOverlay","EnsureDamageOverlay","shipDamage","SetArmorDamageShaderEffect","GetArmorDamageShaderEffect","flicker","GetHullDamageFlickerCurve","SetHullDamageFlickerCurve","TriPerlinCurve","GetValues","SetSeed","GetSeed","slice","SetImpactIndexSource","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","record","isArray","#TransformLocator","bone","boneRotation","#ApplyModelTransform","translation","GetValueAt","#GetLocatorsForSet","outPosition","outDirection","mergedDamageIndex","GetDamageLocatorAnimatedLocal","EveGetLocatorPose","#GetClosestLocatorIndex","outCenter","outRadii","bounds","lerp","CUSTOM_MASK_COUNT","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","vx","vy","vz","sx","sy","sz","vv","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","GetMeshBoneMatrixList","MatrixCopyFrom3x4","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","freeze","ReflectionMode","constructor","decorateField"],"mappings":"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"}