@carbonenginejs/runtime-trinity 0.6.0 → 0.8.0

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 (1091) hide show
  1. package/README.md +35 -243
  2. package/dist/controllers/CjsControllerExpressionProgram.js +157 -0
  3. package/dist/controllers/CjsControllerExpressionProgram.js.map +1 -1
  4. package/dist/controllers/ITr2ControllerAction.js +57 -0
  5. package/dist/controllers/ITr2ControllerAction.js.map +1 -1
  6. package/dist/controllers/Tr2ActionAnimateCurveSet.js +10 -0
  7. package/dist/controllers/Tr2ActionAnimateCurveSet.js.map +1 -1
  8. package/dist/controllers/Tr2ActionAnimateValue.js +26 -0
  9. package/dist/controllers/Tr2ActionAnimateValue.js.map +1 -1
  10. package/dist/controllers/Tr2ActionBindRTPC.js +11 -0
  11. package/dist/controllers/Tr2ActionBindRTPC.js.map +1 -1
  12. package/dist/controllers/Tr2ActionCallback.js +5 -0
  13. package/dist/controllers/Tr2ActionCallback.js.map +1 -1
  14. package/dist/controllers/Tr2ActionChildEffect.js +63 -0
  15. package/dist/controllers/Tr2ActionChildEffect.js.map +1 -1
  16. package/dist/controllers/Tr2ActionOverlay.js +68 -0
  17. package/dist/controllers/Tr2ActionOverlay.js.map +1 -1
  18. package/dist/controllers/Tr2ActionPlayCurveSet.js +16 -0
  19. package/dist/controllers/Tr2ActionPlayCurveSet.js.map +1 -1
  20. package/dist/controllers/Tr2ActionPlayMeshAnimation.js +29 -0
  21. package/dist/controllers/Tr2ActionPlayMeshAnimation.js.map +1 -1
  22. package/dist/controllers/Tr2ActionPlaySound.js +11 -0
  23. package/dist/controllers/Tr2ActionPlaySound.js.map +1 -1
  24. package/dist/controllers/Tr2ActionPython.js +11 -0
  25. package/dist/controllers/Tr2ActionPython.js.map +1 -1
  26. package/dist/controllers/Tr2ActionResetClipSphereCenter.js +17 -0
  27. package/dist/controllers/Tr2ActionResetClipSphereCenter.js.map +1 -1
  28. package/dist/controllers/Tr2ActionSetAttenuationScaling.js +5 -0
  29. package/dist/controllers/Tr2ActionSetAttenuationScaling.js.map +1 -1
  30. package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js +5 -0
  31. package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
  32. package/dist/controllers/Tr2ActionSetAudioSwitch.js +5 -0
  33. package/dist/controllers/Tr2ActionSetAudioSwitch.js.map +1 -1
  34. package/dist/controllers/Tr2ActionSetExternalControllerVariable.js +23 -0
  35. package/dist/controllers/Tr2ActionSetExternalControllerVariable.js.map +1 -1
  36. package/dist/controllers/Tr2ActionSetShaderOption.js +5 -0
  37. package/dist/controllers/Tr2ActionSetShaderOption.js.map +1 -1
  38. package/dist/controllers/Tr2ActionSetValue.js +35 -0
  39. package/dist/controllers/Tr2ActionSetValue.js.map +1 -1
  40. package/dist/controllers/Tr2ActionSpawnParticles.js +10 -0
  41. package/dist/controllers/Tr2ActionSpawnParticles.js.map +1 -1
  42. package/dist/controllers/Tr2BindingPoint.js +67 -0
  43. package/dist/controllers/Tr2BindingPoint.js.map +1 -1
  44. package/dist/controllers/Tr2Controller.js +37 -0
  45. package/dist/controllers/Tr2Controller.js.map +1 -1
  46. package/dist/controllers/Tr2ControllerEventHandler.js +10 -0
  47. package/dist/controllers/Tr2ControllerEventHandler.js.map +1 -1
  48. package/dist/controllers/Tr2ControllerExpression.js +17 -0
  49. package/dist/controllers/Tr2ControllerExpression.js.map +1 -1
  50. package/dist/controllers/Tr2ControllerFloatVariable.js +6 -0
  51. package/dist/controllers/Tr2ControllerFloatVariable.js.map +1 -1
  52. package/dist/controllers/Tr2ControllerReference.js +11 -0
  53. package/dist/controllers/Tr2ControllerReference.js.map +1 -1
  54. package/dist/controllers/Tr2StateMachine.js +17 -0
  55. package/dist/controllers/Tr2StateMachine.js.map +1 -1
  56. package/dist/controllers/Tr2StateMachineState.js +47 -0
  57. package/dist/controllers/Tr2StateMachineState.js.map +1 -1
  58. package/dist/controllers/Tr2StateMachineTransition.js +29 -0
  59. package/dist/controllers/Tr2StateMachineTransition.js.map +1 -1
  60. package/dist/controllers/Tr2SyncToAnimation.js +5 -0
  61. package/dist/controllers/Tr2SyncToAnimation.js.map +1 -1
  62. package/dist/controllers/Tr2TimelineController.js +61 -0
  63. package/dist/controllers/Tr2TimelineController.js.map +1 -1
  64. package/dist/controllers/contracts.js +24 -1
  65. package/dist/controllers/contracts.js.map +1 -1
  66. package/dist/controllers/index.js +1 -1
  67. package/dist/curves/CjsGrannyCurves.js +150 -0
  68. package/dist/curves/CjsGrannyCurves.js.map +1 -1
  69. package/dist/curves/Tr2BoneMatrixCurve.js +23 -0
  70. package/dist/curves/Tr2BoneMatrixCurve.js.map +1 -1
  71. package/dist/curves/Tr2CameraFollowCurveKey.js +6 -0
  72. package/dist/curves/Tr2CameraFollowCurveKey.js.map +1 -1
  73. package/dist/curves/Tr2CurveColor.js +6 -0
  74. package/dist/curves/Tr2CurveColor.js.map +1 -1
  75. package/dist/curves/Tr2CurveColorMixer.js +6 -0
  76. package/dist/curves/Tr2CurveColorMixer.js.map +1 -1
  77. package/dist/curves/Tr2CurveCombiner.js +5 -0
  78. package/dist/curves/Tr2CurveCombiner.js.map +1 -1
  79. package/dist/curves/Tr2CurveConstant.js +16 -0
  80. package/dist/curves/Tr2CurveConstant.js.map +1 -1
  81. package/dist/curves/Tr2CurveEulerRotation.js +5 -0
  82. package/dist/curves/Tr2CurveEulerRotation.js.map +1 -1
  83. package/dist/curves/Tr2CurveEulerRotationExpression.js +66 -0
  84. package/dist/curves/Tr2CurveEulerRotationExpression.js.map +1 -1
  85. package/dist/curves/Tr2CurveQuaternion.js +5 -0
  86. package/dist/curves/Tr2CurveQuaternion.js.map +1 -1
  87. package/dist/curves/Tr2CurveQuaternionKey.js +5 -0
  88. package/dist/curves/Tr2CurveQuaternionKey.js.map +1 -1
  89. package/dist/curves/Tr2CurveRandomAxisRotation.js +28 -0
  90. package/dist/curves/Tr2CurveRandomAxisRotation.js.map +1 -1
  91. package/dist/curves/Tr2CurveScalar.js +35 -0
  92. package/dist/curves/Tr2CurveScalar.js.map +1 -1
  93. package/dist/curves/Tr2CurveScalarExpression.js +11 -0
  94. package/dist/curves/Tr2CurveScalarExpression.js.map +1 -1
  95. package/dist/curves/Tr2CurveScalarKey.js +6 -0
  96. package/dist/curves/Tr2CurveScalarKey.js.map +1 -1
  97. package/dist/curves/Tr2CurveSetRange.js +5 -0
  98. package/dist/curves/Tr2CurveSetRange.js.map +1 -1
  99. package/dist/curves/Tr2CurveVector2.js +5 -0
  100. package/dist/curves/Tr2CurveVector2.js.map +1 -1
  101. package/dist/curves/Tr2CurveVector3.js +5 -0
  102. package/dist/curves/Tr2CurveVector3.js.map +1 -1
  103. package/dist/curves/Tr2CurveVector3Expression.js +71 -0
  104. package/dist/curves/Tr2CurveVector3Expression.js.map +1 -1
  105. package/dist/curves/Tr2CurveVector3Lerp.js +6 -0
  106. package/dist/curves/Tr2CurveVector3Lerp.js.map +1 -1
  107. package/dist/curves/Tr2DistanceTracker.js +6 -0
  108. package/dist/curves/Tr2DistanceTracker.js.map +1 -1
  109. package/dist/curves/Tr2FollowCurve.js +6 -0
  110. package/dist/curves/Tr2FollowCurve.js.map +1 -1
  111. package/dist/curves/Tr2GrannyEventTrack.js +5 -0
  112. package/dist/curves/Tr2GrannyEventTrack.js.map +1 -1
  113. package/dist/curves/Tr2GrannyTrack.js +6 -0
  114. package/dist/curves/Tr2GrannyTrack.js.map +1 -1
  115. package/dist/curves/Tr2GrannyTransformTrack.js +6 -0
  116. package/dist/curves/Tr2GrannyTransformTrack.js.map +1 -1
  117. package/dist/curves/Tr2GrannyVectorTrack.js +5 -0
  118. package/dist/curves/Tr2GrannyVectorTrack.js.map +1 -1
  119. package/dist/curves/Tr2MatrixKey.js +5 -0
  120. package/dist/curves/Tr2MatrixKey.js.map +1 -1
  121. package/dist/curves/Tr2ObjectFollowCurveKey.js +6 -0
  122. package/dist/curves/Tr2ObjectFollowCurveKey.js.map +1 -1
  123. package/dist/curves/Tr2QuaternionLerpCurve.js +6 -0
  124. package/dist/curves/Tr2QuaternionLerpCurve.js.map +1 -1
  125. package/dist/curves/Tr2RotationAdapter.js +6 -0
  126. package/dist/curves/Tr2RotationAdapter.js.map +1 -1
  127. package/dist/curves/Tr2ScalarExprKey.js +18 -0
  128. package/dist/curves/Tr2ScalarExprKey.js.map +1 -1
  129. package/dist/curves/Tr2ScalarExprKeyCurve.js +23 -0
  130. package/dist/curves/Tr2ScalarExprKeyCurve.js.map +1 -1
  131. package/dist/curves/Tr2ScalarFader.js +11 -0
  132. package/dist/curves/Tr2ScalarFader.js.map +1 -1
  133. package/dist/curves/Tr2TranslationAdapter.js +6 -0
  134. package/dist/curves/Tr2TranslationAdapter.js.map +1 -1
  135. package/dist/curves/TriColorSequencer.js +6 -0
  136. package/dist/curves/TriColorSequencer.js.map +1 -1
  137. package/dist/curves/TriCurveSet.js +23 -0
  138. package/dist/curves/TriCurveSet.js.map +1 -1
  139. package/dist/curves/TriEventCurve.js +23 -0
  140. package/dist/curves/TriEventCurve.js.map +1 -1
  141. package/dist/curves/TriEventKey.js +5 -0
  142. package/dist/curves/TriEventKey.js.map +1 -1
  143. package/dist/curves/TriPerlinCurve.js +30 -0
  144. package/dist/curves/TriPerlinCurve.js.map +1 -1
  145. package/dist/curves/TriVectorSequencer.js +6 -0
  146. package/dist/curves/TriVectorSequencer.js.map +1 -1
  147. package/dist/eve/AudioGameObject.js +89 -1
  148. package/dist/eve/AudioGameObject.js.map +1 -1
  149. package/dist/eve/BackAndForthData.js +7 -0
  150. package/dist/eve/BackAndForthData.js.map +1 -1
  151. package/dist/eve/CjsDistributionRandom.js +6 -0
  152. package/dist/eve/CjsDistributionRandom.js.map +1 -1
  153. package/dist/eve/CjsEveThrottleableState.js +11 -0
  154. package/dist/eve/CjsEveThrottleableState.js.map +1 -1
  155. package/dist/eve/EveChildUpdateParams.js +7 -0
  156. package/dist/eve/EveChildUpdateParams.js.map +1 -1
  157. package/dist/eve/EveComponentTypes.js.map +1 -1
  158. package/dist/eve/EveCustomMask.js +58 -27
  159. package/dist/eve/EveCustomMask.js.map +1 -1
  160. package/dist/eve/EveDistanceField.js +84 -0
  161. package/dist/eve/EveDistanceField.js.map +1 -1
  162. package/dist/eve/EveEntity.js +138 -0
  163. package/dist/eve/EveEntity.js.map +1 -0
  164. package/dist/eve/EveImpactOverlay.js +61 -0
  165. package/dist/eve/EveImpactOverlay.js.map +1 -1
  166. package/dist/eve/EveLODHelper.js +17 -13
  167. package/dist/eve/EveLODHelper.js.map +1 -1
  168. package/dist/eve/EveLineData.js +2 -0
  169. package/dist/eve/EveLineData.js.map +1 -1
  170. package/dist/eve/EveThrottleable.js +11 -0
  171. package/dist/eve/EveThrottleable.js.map +1 -1
  172. package/dist/eve/FollowASplineData.js +7 -0
  173. package/dist/eve/FollowASplineData.js.map +1 -1
  174. package/dist/eve/FormationData.js +6 -0
  175. package/dist/eve/FormationData.js.map +1 -1
  176. package/dist/eve/InertiaData.js +7 -0
  177. package/dist/eve/InertiaData.js.map +1 -1
  178. package/dist/eve/PlacementDataWithIdentifier.js +7 -0
  179. package/dist/eve/PlacementDataWithIdentifier.js.map +1 -1
  180. package/dist/eve/PlayFXData.js +7 -0
  181. package/dist/eve/PlayFXData.js.map +1 -1
  182. package/dist/eve/SeekTargetData.js +7 -0
  183. package/dist/eve/SeekTargetData.js.map +1 -1
  184. package/dist/eve/{EveSpaceObjectAttachmentUtils.js → attachment/EveSpaceObjectAttachmentUtils.js} +11 -11
  185. package/dist/eve/attachment/EveSpaceObjectAttachmentUtils.js.map +1 -0
  186. package/dist/eve/attachment/banner/EveBannerItem.js +70 -0
  187. package/dist/eve/attachment/banner/EveBannerItem.js.map +1 -0
  188. package/dist/eve/{EveBannerLight.js → attachment/banner/EveBannerLight.js} +13 -2
  189. package/dist/eve/attachment/banner/EveBannerLight.js.map +1 -0
  190. package/dist/eve/attachment/banner/EveBannerSet.js +537 -0
  191. package/dist/eve/attachment/banner/EveBannerSet.js.map +1 -0
  192. package/dist/eve/{EveBoosterSet2.js → attachment/booster/EveBoosterSet2.js} +204 -35
  193. package/dist/eve/attachment/booster/EveBoosterSet2.js.map +1 -0
  194. package/dist/eve/{EveBoosterSet2Renderable.js → attachment/booster/EveBoosterSet2Renderable.js} +205 -12
  195. package/dist/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -0
  196. package/dist/eve/{EveTrailsSet.js → attachment/booster/EveTrailsSet.js} +49 -1
  197. package/dist/eve/attachment/booster/EveTrailsSet.js.map +1 -0
  198. package/dist/eve/attachment/decal/EveSpaceObjectDecal.js +512 -0
  199. package/dist/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -0
  200. package/dist/eve/{EveHazeSet.js → attachment/haze/EveHazeSet.js} +65 -6
  201. package/dist/eve/attachment/haze/EveHazeSet.js.map +1 -0
  202. package/dist/eve/attachment/haze/EveHazeSetItem.js +64 -0
  203. package/dist/eve/attachment/haze/EveHazeSetItem.js.map +1 -0
  204. package/dist/eve/{EveHazeSetLight.js → attachment/haze/EveHazeSetLight.js} +13 -2
  205. package/dist/eve/attachment/haze/EveHazeSetLight.js.map +1 -0
  206. package/dist/eve/attachment/itemSetBounds.js +131 -0
  207. package/dist/eve/attachment/itemSetBounds.js.map +1 -0
  208. package/dist/eve/{EvePlaneLight.js → attachment/plane/EvePlaneLight.js} +14 -2
  209. package/dist/eve/attachment/plane/EvePlaneLight.js.map +1 -0
  210. package/dist/eve/{EvePlaneSet.js → attachment/plane/EvePlaneSet.js} +119 -7
  211. package/dist/eve/attachment/plane/EvePlaneSet.js.map +1 -0
  212. package/dist/eve/attachment/plane/EvePlaneSetItem.js +72 -0
  213. package/dist/eve/attachment/plane/EvePlaneSetItem.js.map +1 -0
  214. package/dist/eve/{EveSpotlightLight.js → attachment/spotlight/EveSpotlightLight.js} +13 -2
  215. package/dist/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -0
  216. package/dist/eve/{EveSpotlightSet.js → attachment/spotlight/EveSpotlightSet.js} +86 -6
  217. package/dist/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -0
  218. package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js +61 -0
  219. package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -0
  220. package/dist/eve/{EveSpriteLight.js → attachment/sprite/EveSpriteLight.js} +14 -2
  221. package/dist/eve/attachment/sprite/EveSpriteLight.js.map +1 -0
  222. package/dist/eve/{EveSpriteLineSet.js → attachment/sprite/EveSpriteLineSet.js} +69 -7
  223. package/dist/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -0
  224. package/dist/eve/{EveSpriteLineSetItem.js → attachment/sprite/EveSpriteLineSetItem.js} +29 -4
  225. package/dist/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -0
  226. package/dist/eve/{EveSpriteSet.js → attachment/sprite/EveSpriteSet.js} +87 -8
  227. package/dist/eve/attachment/sprite/EveSpriteSet.js.map +1 -0
  228. package/dist/{generated/eve/attachment/sprites → eve/attachment/sprite}/EveSpriteSetItem.js +23 -26
  229. package/dist/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -0
  230. package/dist/eve/attachment/turrets/EveTurretFiringFX.js +184 -2
  231. package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
  232. package/dist/eve/attachment/turrets/EveTurretSet.js +236 -7
  233. package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  234. package/dist/eve/attachment/turrets/EveTurretTarget.js +112 -0
  235. package/dist/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  236. package/dist/eve/camera/EveCamera.js +644 -0
  237. package/dist/eve/camera/EveCamera.js.map +1 -0
  238. package/dist/eve/child/EveChildAudio.js +63 -0
  239. package/dist/eve/child/EveChildAudio.js.map +1 -1
  240. package/dist/eve/child/EveChildBehaviorSystem.js +412 -0
  241. package/dist/eve/child/EveChildBehaviorSystem.js.map +1 -0
  242. package/dist/{generated/eve → eve}/child/EveChildBulletStorm.js +41 -3
  243. package/dist/eve/child/EveChildBulletStorm.js.map +1 -0
  244. package/dist/eve/child/EveChildContainer.js +175 -16
  245. package/dist/eve/child/EveChildContainer.js.map +1 -1
  246. package/dist/eve/child/EveChildEffectPropagator.js +1 -1
  247. package/dist/eve/child/EveChildEffectPropagator.js.map +1 -1
  248. package/dist/eve/child/EveChildFogVolume.js +72 -0
  249. package/dist/eve/child/EveChildFogVolume.js.map +1 -1
  250. package/dist/eve/child/EveChildInheritProperties.js +17 -0
  251. package/dist/eve/child/EveChildInheritProperties.js.map +1 -1
  252. package/dist/eve/child/EveChildInstancedMeshes.js +211 -1
  253. package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
  254. package/dist/eve/child/EveChildLightingOverride.js +74 -0
  255. package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
  256. package/dist/{generated/eve → eve}/child/EveChildLink.js +17 -16
  257. package/dist/eve/child/EveChildLink.js.map +1 -0
  258. package/dist/eve/child/EveChildMesh.js +351 -105
  259. package/dist/eve/child/EveChildMesh.js.map +1 -1
  260. package/dist/eve/child/EveChildSpherePin.js +108 -0
  261. package/dist/eve/child/EveChildSpherePin.js.map +1 -0
  262. package/dist/eve/child/EveChildTransform.js +44 -1
  263. package/dist/eve/child/EveChildTransform.js.map +1 -1
  264. package/dist/eve/child/IEveSpaceObjectChild.js +5 -0
  265. package/dist/eve/child/IEveSpaceObjectChild.js.map +1 -1
  266. package/dist/eve/child/behaviors/CollisionAvoidance.js +112 -0
  267. package/dist/eve/child/behaviors/CollisionAvoidance.js.map +1 -0
  268. package/dist/eve/child/behaviors/InclusionVolume.js +131 -0
  269. package/dist/eve/child/behaviors/InclusionVolume.js.map +1 -0
  270. package/dist/eve/child/behaviors/Wander.js +99 -0
  271. package/dist/eve/child/behaviors/Wander.js.map +1 -0
  272. package/dist/{generated/eve → eve}/child/behaviors/enums.js +1 -1
  273. package/dist/eve/child/behaviors/enums.js.map +1 -0
  274. package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js +540 -0
  275. package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -0
  276. package/dist/eve/{ProcessLifetimeData.js → child/behaviors/lifecycle/ProcessLifetimeData.js} +8 -2
  277. package/dist/eve/child/behaviors/lifecycle/ProcessLifetimeData.js.map +1 -0
  278. package/dist/eve/child/behaviors/{SplineTunnel.js → tunnels/SplineTunnel.js} +9 -7
  279. package/dist/eve/child/behaviors/tunnels/SplineTunnel.js.map +1 -0
  280. package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js +211 -0
  281. package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -0
  282. package/dist/eve/child/behaviors/{SplineTunnelPoint.js → tunnels/SplineTunnelPoint.js} +3 -3
  283. package/dist/eve/child/behaviors/tunnels/SplineTunnelPoint.js.map +1 -0
  284. package/dist/eve/child/lineSetPaths/EveBezierCurve.js +65 -0
  285. package/dist/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
  286. package/dist/eve/child/lineSetPaths/EveCircle.js +63 -0
  287. package/dist/eve/child/lineSetPaths/EveCircle.js.map +1 -1
  288. package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierAttachToBone.js +24 -16
  289. package/dist/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -0
  290. package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js +5 -0
  291. package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js.map +1 -1
  292. package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierBillboard3D.js +22 -19
  293. package/dist/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -0
  294. package/dist/eve/child/modifiers/EveChildModifierBooster.js +6 -0
  295. package/dist/eve/child/modifiers/EveChildModifierBooster.js.map +1 -1
  296. package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js +5 -0
  297. package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js.map +1 -1
  298. package/dist/eve/child/modifiers/EveChildModifierHalo.js +5 -0
  299. package/dist/eve/child/modifiers/EveChildModifierHalo.js.map +1 -1
  300. package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js +6 -0
  301. package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js.map +1 -1
  302. package/dist/eve/child/modifiers/EveChildModifierSRT.js +5 -0
  303. package/dist/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
  304. package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierStretch.js +31 -17
  305. package/dist/eve/child/modifiers/EveChildModifierStretch.js.map +1 -0
  306. package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierTranslateWithCamera.js +16 -14
  307. package/dist/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -0
  308. package/dist/{generated/eve → eve}/child/procedural/EveChildProceduralContainer.js +11 -4
  309. package/dist/eve/child/procedural/EveChildProceduralContainer.js.map +1 -0
  310. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMap.js +12 -12
  311. package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -0
  312. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +6 -6
  313. package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -0
  314. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCycling.js +12 -12
  315. package/dist/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -0
  316. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCyclingParameter.js +8 -8
  317. package/dist/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -0
  318. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandom.js +17 -17
  319. package/dist/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -0
  320. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandomParameter.js +7 -7
  321. package/dist/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -0
  322. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholdParameter.js +7 -7
  323. package/dist/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -0
  324. package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholds.js +17 -17
  325. package/dist/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -0
  326. package/dist/{generated/eve → eve}/distribution/EveBaseDistributionMethod.js +132 -3
  327. package/dist/eve/distribution/EveBaseDistributionMethod.js.map +1 -0
  328. package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +12 -1
  329. package/dist/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -0
  330. package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +9 -1
  331. package/dist/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -0
  332. package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +12 -1
  333. package/dist/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -0
  334. package/dist/eve/distribution/attributeModifiers/enums.js.map +1 -0
  335. package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorLocators.js +16 -3
  336. package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -0
  337. package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +31 -3
  338. package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -0
  339. package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorVolume.js +34 -3
  340. package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -0
  341. package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +14 -2
  342. package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -0
  343. package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +13 -2
  344. package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -0
  345. package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +13 -2
  346. package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -0
  347. package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +13 -2
  348. package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -0
  349. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerBurst.js +19 -1
  350. package/dist/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -0
  351. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +25 -1
  352. package/dist/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -0
  353. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerInterval.js +17 -1
  354. package/dist/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -0
  355. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +20 -1
  356. package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -0
  357. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +20 -1
  358. package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -0
  359. package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +20 -1
  360. package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -0
  361. package/dist/{generated/eve/effect → eve/effect/lensflare}/EveLensflare.js +44 -2
  362. package/dist/eve/effect/lensflare/EveLensflare.js.map +1 -0
  363. package/dist/eve/effect/multiEffect/EveMultiEffect.js +302 -0
  364. package/dist/eve/effect/multiEffect/EveMultiEffect.js.map +1 -0
  365. package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js +92 -0
  366. package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -0
  367. package/dist/eve/index.js +117 -47
  368. package/dist/eve/index.js.map +1 -1
  369. package/dist/eve/lights/CjsLightData.js +7 -0
  370. package/dist/eve/lights/CjsLightData.js.map +1 -1
  371. package/dist/eve/lights/Tr2Light.js +41 -0
  372. package/dist/eve/lights/Tr2Light.js.map +1 -1
  373. package/dist/eve/lights/Tr2PointLight.js +5 -0
  374. package/dist/eve/lights/Tr2PointLight.js.map +1 -1
  375. package/dist/eve/lights/Tr2SpotLight.js +5 -0
  376. package/dist/eve/lights/Tr2SpotLight.js.map +1 -1
  377. package/dist/eve/lights/Tr2TexturedPointLight.js +10 -0
  378. package/dist/eve/lights/Tr2TexturedPointLight.js.map +1 -1
  379. package/dist/eve/lights/lightConversion.js +29 -27
  380. package/dist/eve/lights/lightConversion.js.map +1 -1
  381. package/dist/eve/{EveLocator2.js → locator/EveLocator2.js} +20 -1
  382. package/dist/eve/locator/EveLocator2.js.map +1 -0
  383. package/dist/eve/{EveLocatorSets.js → locator/EveLocatorSets.js} +43 -1
  384. package/dist/eve/locator/EveLocatorSets.js.map +1 -0
  385. package/dist/eve/{Locator.js → locator/Locator.js} +6 -1
  386. package/dist/eve/locator/Locator.js.map +1 -0
  387. package/dist/eve/{LocatorData.js → locator/LocatorData.js} +3 -1
  388. package/dist/eve/locator/LocatorData.js.map +1 -0
  389. package/dist/eve/overlays/EveMeshOverlayEffect.js +208 -0
  390. package/dist/eve/overlays/EveMeshOverlayEffect.js.map +1 -0
  391. package/dist/eve/{EveParticleDirectForce.js → particles/force/EveParticleDirectForce.js} +5 -5
  392. package/dist/eve/particles/force/EveParticleDirectForce.js.map +1 -0
  393. package/dist/eve/{EveParticleDragForce.js → particles/force/EveParticleDragForce.js} +5 -5
  394. package/dist/eve/particles/force/EveParticleDragForce.js.map +1 -0
  395. package/dist/eve/{EveParticleSpring.js → particles/force/EveParticleSpring.js} +6 -6
  396. package/dist/eve/particles/force/EveParticleSpring.js.map +1 -0
  397. package/dist/{generated/eve/scene → eve/particles/static}/EveSceneStaticParticles.js +70 -36
  398. package/dist/eve/particles/static/EveSceneStaticParticles.js.map +1 -0
  399. package/dist/eve/perObjectData/childPerObjectRecords.js +90 -0
  400. package/dist/eve/perObjectData/childPerObjectRecords.js.map +1 -0
  401. package/dist/eve/renderable/stretch/CjsStretchRuntime.js +76 -0
  402. package/dist/eve/renderable/stretch/CjsStretchRuntime.js.map +1 -1
  403. package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +85 -1
  404. package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
  405. package/dist/eve/renderable/stretch/EveLocalPositionCurve.js +91 -0
  406. package/dist/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
  407. package/dist/eve/renderable/stretch/EveRemotePositionCurve.js +36 -0
  408. package/dist/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
  409. package/dist/eve/renderable/stretch/EveStretch.js +158 -9
  410. package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
  411. package/dist/eve/renderable/stretch/EveStretch2.js +121 -12
  412. package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
  413. package/dist/eve/renderable/stretch/EveStretch3.js +261 -8
  414. package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
  415. package/dist/eve/scene/EveSpaceScene.js +342 -6
  416. package/dist/eve/scene/EveSpaceScene.js.map +1 -1
  417. package/dist/{generated/eve/scene → eve/scene/components}/EveComponentCollection.js +24 -1
  418. package/dist/eve/scene/components/EveComponentCollection.js.map +1 -0
  419. package/dist/{generated/eve/scene → eve/scene/components}/EveComponentRegistry.js +74 -2
  420. package/dist/eve/scene/components/EveComponentRegistry.js.map +1 -0
  421. package/dist/eve/scene/picking/EvePickingContext.js +61 -0
  422. package/dist/eve/scene/picking/EvePickingContext.js.map +1 -0
  423. package/dist/eve/scene/shadows/TriShadowFrustum.js +70 -0
  424. package/dist/eve/scene/shadows/TriShadowFrustum.js.map +1 -0
  425. package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js +129 -0
  426. package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js.map +1 -0
  427. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +19 -19
  428. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -0
  429. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +19 -19
  430. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -0
  431. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +12 -12
  432. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -0
  433. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +12 -12
  434. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -0
  435. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +30 -30
  436. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -0
  437. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +9 -9
  438. package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -0
  439. package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +23 -23
  440. package/dist/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -0
  441. package/dist/eve/smartLights/attributeModifiers/enums.js.map +1 -0
  442. package/dist/{generated/eve → eve}/socket/EveSocketParameterBindingBase.js +26 -1
  443. package/dist/eve/socket/EveSocketParameterBindingBase.js.map +1 -0
  444. package/dist/{generated/eve → eve}/socket/EveSocketParameterBool.js +17 -1
  445. package/dist/eve/socket/EveSocketParameterBool.js.map +1 -0
  446. package/dist/{generated/eve → eve}/socket/EveSocketParameterColor.js +21 -5
  447. package/dist/eve/socket/EveSocketParameterColor.js.map +1 -0
  448. package/dist/eve/socket/EveSocketParameterFilePath.js +5 -5
  449. package/dist/eve/socket/EveSocketParameterFilePath.js.map +1 -1
  450. package/dist/{generated/eve → eve}/socket/EveSocketParameterFloat.js +17 -1
  451. package/dist/eve/socket/EveSocketParameterFloat.js.map +1 -0
  452. package/dist/{generated/eve → eve}/socket/EveSocketParameterInt.js +17 -1
  453. package/dist/eve/socket/EveSocketParameterInt.js.map +1 -0
  454. package/dist/{generated/eve → eve}/socket/EveSocketParameterString.js +42 -2
  455. package/dist/eve/socket/EveSocketParameterString.js.map +1 -0
  456. package/dist/{generated/eve → eve}/socket/EveSocketParameterVector2.js +17 -1
  457. package/dist/eve/socket/EveSocketParameterVector2.js.map +1 -0
  458. package/dist/{generated/eve → eve}/socket/EveSocketParameterVector3.js +17 -1
  459. package/dist/eve/socket/EveSocketParameterVector3.js.map +1 -0
  460. package/dist/{generated/eve → eve}/socket/EveSocketParameterVector4.js +17 -1
  461. package/dist/eve/socket/EveSocketParameterVector4.js.map +1 -0
  462. package/dist/eve/spaceObject/EveEffectRoot2.js +58 -31
  463. package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
  464. package/dist/eve/spaceObject/EveMissile.js +49 -1
  465. package/dist/eve/spaceObject/EveMissile.js.map +1 -1
  466. package/dist/eve/spaceObject/EveMissileWarhead.js +100 -1
  467. package/dist/eve/spaceObject/EveMissileWarhead.js.map +1 -1
  468. package/dist/eve/spaceObject/EveMobile.js +104 -0
  469. package/dist/eve/spaceObject/EveMobile.js.map +1 -1
  470. package/dist/eve/spaceObject/EveRootTransform.js +17 -0
  471. package/dist/eve/spaceObject/EveRootTransform.js.map +1 -1
  472. package/dist/{generated/eve → eve}/spaceObject/EveShip2.js +32 -12
  473. package/dist/eve/spaceObject/EveShip2.js.map +1 -0
  474. package/dist/eve/spaceObject/EveSpaceObject2.js +726 -199
  475. package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  476. package/dist/eve/spaceObject/EveTransform.js +143 -5
  477. package/dist/eve/spaceObject/EveTransform.js.map +1 -1
  478. package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js +70 -0
  479. package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js.map +1 -0
  480. package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js +19 -16
  481. package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js.map +1 -1
  482. package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +92 -0
  483. package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -0
  484. package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +158 -0
  485. package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -0
  486. package/dist/{generated/eve/spaceObject → eve/spaceObject/planet}/EvePlanet.js +2 -2
  487. package/dist/eve/spaceObject/planet/EvePlanet.js.map +1 -0
  488. package/dist/{generated/eve → eve}/spaceObject/swarm/EveSwarmRenderable.js +102 -64
  489. package/dist/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -0
  490. package/dist/eve/ui/EveEllipseDefinition.js +15 -0
  491. package/dist/eve/ui/EveEllipseDefinition.js.map +1 -1
  492. package/dist/eve/ui/EveEllipseSet.js +42 -0
  493. package/dist/eve/ui/EveEllipseSet.js.map +1 -1
  494. package/dist/{generated/eve → eve}/ui/EveSpherePin.js +76 -11
  495. package/dist/eve/ui/EveSpherePin.js.map +1 -0
  496. package/dist/eve/ui/EveSprite2dBracket.js +5 -0
  497. package/dist/eve/ui/EveSprite2dBracket.js.map +1 -1
  498. package/dist/eve/ui/EveUiObject.js +11 -0
  499. package/dist/eve/ui/EveUiObject.js.map +1 -1
  500. package/dist/{generated/eve/ui → eve/ui/lines}/EveLineSet.js +67 -6
  501. package/dist/eve/ui/lines/EveLineSet.js.map +1 -0
  502. package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +78 -0
  503. package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -0
  504. package/dist/{generated/eve/ui → eve/ui/tacticalOverlay}/EveTacticalTrails.js +22 -2
  505. package/dist/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -0
  506. package/dist/eve/virtualCamera/EveVirtualCamera.js +152 -0
  507. package/dist/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
  508. package/dist/eve/virtualCamera/EveVirtualCameraSystem.js +65 -0
  509. package/dist/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
  510. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +17 -0
  511. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
  512. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +19 -0
  513. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
  514. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +17 -0
  515. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
  516. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +29 -0
  517. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
  518. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +15 -0
  519. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
  520. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +38 -0
  521. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
  522. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +17 -0
  523. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
  524. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +18 -0
  525. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
  526. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +20 -0
  527. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
  528. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +20 -0
  529. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
  530. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js +11 -0
  531. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js.map +1 -1
  532. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js +14 -0
  533. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js.map +1 -1
  534. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +16 -0
  535. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
  536. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +20 -0
  537. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
  538. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +36 -0
  539. package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
  540. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js +36 -0
  541. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js.map +1 -1
  542. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js +11 -0
  543. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js.map +1 -1
  544. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +37 -0
  545. package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
  546. package/dist/eve/volume/EveBoxVolume.js +59 -0
  547. package/dist/eve/volume/EveBoxVolume.js.map +1 -1
  548. package/dist/eve/volume/EveEllipsoidVolume.js +54 -0
  549. package/dist/eve/volume/EveEllipsoidVolume.js.map +1 -1
  550. package/dist/eve/volume/EveSphereVolume.js +34 -0
  551. package/dist/eve/volume/EveSphereVolume.js.map +1 -1
  552. package/dist/generated/eve/child/EveChildCloud2.js +138 -138
  553. package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
  554. package/dist/generated/eve/child/EveChildParticleSystem.js +10 -4
  555. package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
  556. package/dist/generated/eve/child/EveChildSocket.js +1 -1
  557. package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
  558. package/dist/generated/eve/child/behaviors/BackAndForth.js +14 -17
  559. package/dist/generated/eve/child/behaviors/BackAndForth.js.map +1 -1
  560. package/dist/generated/eve/child/behaviors/BehaviorGroup.js +2 -2
  561. package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
  562. package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js +26 -29
  563. package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js.map +1 -1
  564. package/dist/generated/eve/child/behaviors/FollowASpline.js +13 -17
  565. package/dist/generated/eve/child/behaviors/FollowASpline.js.map +1 -1
  566. package/dist/generated/eve/child/behaviors/PlayFX.js +14 -14
  567. package/dist/generated/eve/child/behaviors/PlayFX.js.map +1 -1
  568. package/dist/generated/eve/child/behaviors/SeekTarget.js +1 -1
  569. package/dist/generated/eve/child/behaviors/SeekTarget.js.map +1 -1
  570. package/dist/generated/eve/child/behaviors/index.js +0 -6
  571. package/dist/generated/eve/child/behaviors/index.js.map +1 -1
  572. package/dist/generated/eve/child/index.js +0 -23
  573. package/dist/generated/eve/child/index.js.map +1 -1
  574. package/dist/generated/eve/effect/index.js +0 -3
  575. package/dist/generated/eve/effect/index.js.map +1 -1
  576. package/dist/generated/eve/index.js +0 -88
  577. package/dist/generated/eve/index.js.map +1 -1
  578. package/dist/generated/eve/scene/index.js +0 -6
  579. package/dist/generated/eve/scene/index.js.map +1 -1
  580. package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js +20 -20
  581. package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
  582. package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +1 -1
  583. package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
  584. package/dist/generated/eve/smartLights/index.js +0 -8
  585. package/dist/generated/eve/smartLights/index.js.map +1 -1
  586. package/dist/generated/eve/spaceObject/index.js +0 -4
  587. package/dist/generated/eve/spaceObject/index.js.map +1 -1
  588. package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +11 -11
  589. package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
  590. package/dist/generated/eve/spaceObject/swarm/index.js +0 -1
  591. package/dist/generated/eve/spaceObject/swarm/index.js.map +1 -1
  592. package/dist/generated/eve/ui/index.js +0 -4
  593. package/dist/generated/eve/ui/index.js.map +1 -1
  594. package/dist/generated/index.js +0 -93
  595. package/dist/generated/index.js.map +1 -1
  596. package/dist/generated/trinityCore/index.js +0 -5
  597. package/dist/generated/trinityCore/index.js.map +1 -1
  598. package/dist/index.js +130 -155
  599. package/dist/index.js.map +1 -1
  600. package/dist/particle/Tr2GpuSharedEmitter.js +39 -0
  601. package/dist/particle/Tr2GpuSharedEmitter.js.map +1 -1
  602. package/dist/particle/Tr2GpuUniqueEmitter.js +5 -0
  603. package/dist/particle/Tr2GpuUniqueEmitter.js.map +1 -1
  604. package/dist/particle/Tr2ParticleAttractorForce.js +10 -0
  605. package/dist/particle/Tr2ParticleAttractorForce.js.map +1 -1
  606. package/dist/particle/Tr2ParticleDirectForce.js +7 -0
  607. package/dist/particle/Tr2ParticleDirectForce.js.map +1 -1
  608. package/dist/particle/Tr2ParticleDragForce.js +7 -0
  609. package/dist/particle/Tr2ParticleDragForce.js.map +1 -1
  610. package/dist/particle/Tr2ParticleElementDeclaration.js +5 -0
  611. package/dist/particle/Tr2ParticleElementDeclaration.js.map +1 -1
  612. package/dist/particle/Tr2ParticleFluidDragForce.js +10 -0
  613. package/dist/particle/Tr2ParticleFluidDragForce.js.map +1 -1
  614. package/dist/particle/Tr2ParticleSpring.js +10 -0
  615. package/dist/particle/Tr2ParticleSpring.js.map +1 -1
  616. package/dist/particle/Tr2ParticleVortexForce.js +10 -0
  617. package/dist/particle/Tr2ParticleVortexForce.js.map +1 -1
  618. package/dist/particle/particleElementBinding.js +12 -0
  619. package/dist/particle/particleElementBinding.js.map +1 -1
  620. package/dist/postProcess/Tr2PPBloomEffect.js +6 -0
  621. package/dist/postProcess/Tr2PPBloomEffect.js.map +1 -1
  622. package/dist/postProcess/Tr2PPDepthOfFieldEffect.js +16 -0
  623. package/dist/postProcess/Tr2PPDepthOfFieldEffect.js.map +1 -1
  624. package/dist/postProcess/Tr2PPGenericEffect.js +7 -0
  625. package/dist/postProcess/Tr2PPGenericEffect.js.map +1 -1
  626. package/dist/postProcess/Tr2PPTaaEffect.js +10 -0
  627. package/dist/postProcess/Tr2PPTaaEffect.js.map +1 -1
  628. package/dist/postProcess/Tr2PPTonemappingEffect.js +5 -0
  629. package/dist/postProcess/Tr2PPTonemappingEffect.js.map +1 -1
  630. package/dist/postProcess/Tr2PostProcess.js +5 -0
  631. package/dist/postProcess/Tr2PostProcess.js.map +1 -1
  632. package/dist/postProcess/Tr2PostProcess2.js +147 -0
  633. package/dist/postProcess/Tr2PostProcess2.js.map +1 -1
  634. package/dist/postProcess/Tr2PostProcessAttributes.js +89 -0
  635. package/dist/postProcess/Tr2PostProcessAttributes.js.map +1 -1
  636. package/dist/renderJob/Tr2RenderJobs.js +34 -0
  637. package/dist/renderJob/Tr2RenderJobs.js.map +1 -1
  638. package/dist/renderJob/TriRenderJob.js +59 -0
  639. package/dist/renderJob/TriRenderJob.js.map +1 -1
  640. package/dist/renderJob/TriRenderStep.js +20 -0
  641. package/dist/renderJob/TriRenderStep.js.map +1 -1
  642. package/dist/renderJob/TriStepClear.js +18 -0
  643. package/dist/renderJob/TriStepClear.js.map +1 -1
  644. package/dist/renderJob/TriStepCopyRenderTarget.js +51 -0
  645. package/dist/renderJob/TriStepCopyRenderTarget.js.map +1 -1
  646. package/dist/renderJob/TriStepEnableWireframeMode.js +9 -0
  647. package/dist/renderJob/TriStepEnableWireframeMode.js.map +1 -1
  648. package/dist/renderJob/TriStepGenerateMipMaps.js +9 -0
  649. package/dist/renderJob/TriStepGenerateMipMaps.js.map +1 -1
  650. package/dist/renderJob/TriStepPopDepthStencil.js +6 -0
  651. package/dist/renderJob/TriStepPopDepthStencil.js.map +1 -1
  652. package/dist/renderJob/TriStepPopProjection.js +6 -0
  653. package/dist/renderJob/TriStepPopProjection.js.map +1 -1
  654. package/dist/renderJob/TriStepPopRenderTarget.js +12 -0
  655. package/dist/renderJob/TriStepPopRenderTarget.js.map +1 -1
  656. package/dist/renderJob/TriStepPopViewTransform.js +6 -0
  657. package/dist/renderJob/TriStepPopViewTransform.js.map +1 -1
  658. package/dist/renderJob/TriStepPopViewport.js +6 -0
  659. package/dist/renderJob/TriStepPopViewport.js.map +1 -1
  660. package/dist/renderJob/TriStepPresentSwapChain.js +12 -0
  661. package/dist/renderJob/TriStepPresentSwapChain.js.map +1 -1
  662. package/dist/renderJob/TriStepPushDepthStencil.js +17 -0
  663. package/dist/renderJob/TriStepPushDepthStencil.js.map +1 -1
  664. package/dist/renderJob/TriStepPushProjection.js +6 -0
  665. package/dist/renderJob/TriStepPushProjection.js.map +1 -1
  666. package/dist/renderJob/TriStepPushRenderTarget.js +9 -0
  667. package/dist/renderJob/TriStepPushRenderTarget.js.map +1 -1
  668. package/dist/renderJob/TriStepPushViewTransform.js +6 -0
  669. package/dist/renderJob/TriStepPushViewTransform.js.map +1 -1
  670. package/dist/renderJob/TriStepPushViewport.js +6 -0
  671. package/dist/renderJob/TriStepPushViewport.js.map +1 -1
  672. package/dist/renderJob/TriStepRemoteSync.js +17 -0
  673. package/dist/renderJob/TriStepRemoteSync.js.map +1 -1
  674. package/dist/renderJob/TriStepResolve.js +13 -0
  675. package/dist/renderJob/TriStepResolve.js.map +1 -1
  676. package/dist/renderJob/TriStepRunJob.js +12 -0
  677. package/dist/renderJob/TriStepRunJob.js.map +1 -1
  678. package/dist/renderJob/TriStepSetDepthStencil.js +12 -0
  679. package/dist/renderJob/TriStepSetDepthStencil.js.map +1 -1
  680. package/dist/renderJob/TriStepSetProjection.js +14 -0
  681. package/dist/renderJob/TriStepSetProjection.js.map +1 -1
  682. package/dist/renderJob/TriStepSetRenderState.js +20 -0
  683. package/dist/renderJob/TriStepSetRenderState.js.map +1 -1
  684. package/dist/renderJob/TriStepSetRenderTarget.js +12 -0
  685. package/dist/renderJob/TriStepSetRenderTarget.js.map +1 -1
  686. package/dist/renderJob/TriStepSetStdRndStates.js +18 -0
  687. package/dist/renderJob/TriStepSetStdRndStates.js.map +1 -1
  688. package/dist/renderJob/TriStepSetView.js +29 -2
  689. package/dist/renderJob/TriStepSetView.js.map +1 -1
  690. package/dist/renderJob/TriStepSetViewport.js +17 -0
  691. package/dist/renderJob/TriStepSetViewport.js.map +1 -1
  692. package/dist/renderJob/TriStepSetVisualizationMode.js +19 -0
  693. package/dist/renderJob/TriStepSetVisualizationMode.js.map +1 -1
  694. package/dist/shader/Tr2Effect.js +217 -2
  695. package/dist/shader/Tr2Effect.js.map +1 -1
  696. package/dist/shader/Tr2Material.js +41 -0
  697. package/dist/shader/Tr2Material.js.map +1 -1
  698. package/dist/shader/index.js +1 -11
  699. package/dist/shader/index.js.map +1 -1
  700. package/dist/shader/material/Tr2EffectLibraryParameters.js +7 -0
  701. package/dist/shader/material/Tr2EffectLibraryParameters.js.map +1 -1
  702. package/dist/shader/material/Tr2EffectPassParameters.js +23 -0
  703. package/dist/shader/material/Tr2EffectPassParameters.js.map +1 -1
  704. package/dist/shader/material/Tr2MaterialStageInput.js +15 -0
  705. package/dist/shader/material/Tr2MaterialStageInput.js.map +1 -1
  706. package/dist/shader/parameter/CjsParameter.js +94 -0
  707. package/dist/shader/parameter/CjsParameter.js.map +1 -1
  708. package/dist/shader/parameter/CjsVectorParameter.js +20 -0
  709. package/dist/shader/parameter/CjsVectorParameter.js.map +1 -1
  710. package/dist/shader/parameter/Tr2FloatParameter.js +53 -0
  711. package/dist/shader/parameter/Tr2FloatParameter.js.map +1 -1
  712. package/dist/shader/parameter/Tr2GeometryBufferParameter.js +39 -0
  713. package/dist/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  714. package/dist/shader/parameter/Tr2Matrix4Parameter.js +54 -0
  715. package/dist/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
  716. package/dist/shader/parameter/Tr2RuntimeTextureParameter.js +54 -0
  717. package/dist/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
  718. package/dist/shader/parameter/Tr2TextureAnimationParameter.js +35 -0
  719. package/dist/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
  720. package/dist/shader/parameter/Tr2Vector2Parameter.js +86 -0
  721. package/dist/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
  722. package/dist/shader/parameter/Tr2Vector3Parameter.js +95 -0
  723. package/dist/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
  724. package/dist/shader/parameter/Tr2Vector4Parameter.js +105 -0
  725. package/dist/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
  726. package/dist/shader/parameter/TriFloatArrayParameter.js +26 -0
  727. package/dist/shader/parameter/TriFloatArrayParameter.js.map +1 -1
  728. package/dist/shader/parameter/TriTextureParameter.js +84 -0
  729. package/dist/shader/parameter/TriTextureParameter.js.map +1 -1
  730. package/dist/shader/parameter/TriTransformParameter.js +2 -0
  731. package/dist/shader/parameter/TriTransformParameter.js.map +1 -1
  732. package/dist/shader/parameter/TriVariableParameter.js +38 -0
  733. package/dist/shader/parameter/TriVariableParameter.js.map +1 -1
  734. package/dist/shader/parameter/TriVector4.js +2 -0
  735. package/dist/shader/parameter/TriVector4.js.map +1 -1
  736. package/dist/shader/reflection/Tr2ShaderOption.js +6 -1
  737. package/dist/shader/reflection/Tr2ShaderOption.js.map +1 -1
  738. package/dist/shader/support/CjsVariableStore.js +140 -0
  739. package/dist/shader/support/CjsVariableStore.js.map +1 -1
  740. package/dist/shader/support/Tr2ShaderBuffer.js +15 -0
  741. package/dist/shader/support/Tr2ShaderBuffer.js.map +1 -1
  742. package/dist/trinityCore/CjsBatchManager.js +62 -2
  743. package/dist/trinityCore/CjsBatchManager.js.map +1 -1
  744. package/dist/trinityCore/GrannyBoneOffset.js +51 -0
  745. package/dist/trinityCore/GrannyBoneOffset.js.map +1 -1
  746. package/dist/trinityCore/ITriRenderBatchAccumulator.js +65 -3
  747. package/dist/trinityCore/ITriRenderBatchAccumulator.js.map +1 -1
  748. package/dist/trinityCore/Tr2DirectInstanceData.js +19 -0
  749. package/dist/trinityCore/Tr2DirectInstanceData.js.map +1 -1
  750. package/dist/trinityCore/Tr2ExpressionTermInfo.js +21 -0
  751. package/dist/trinityCore/Tr2ExpressionTermInfo.js.map +1 -1
  752. package/dist/trinityCore/Tr2GpuBuffer.js +5 -0
  753. package/dist/trinityCore/Tr2GpuBuffer.js.map +1 -1
  754. package/dist/{generated/trinityCore → trinityCore}/Tr2GrannyAnimation.js +137 -8
  755. package/dist/trinityCore/Tr2GrannyAnimation.js.map +1 -0
  756. package/dist/trinityCore/Tr2InstancedMesh.js +52 -0
  757. package/dist/trinityCore/Tr2InstancedMesh.js.map +1 -1
  758. package/dist/trinityCore/Tr2MaterialParameterStore.js +5 -0
  759. package/dist/trinityCore/Tr2MaterialParameterStore.js.map +1 -1
  760. package/dist/trinityCore/Tr2Mesh.js +37 -0
  761. package/dist/trinityCore/Tr2Mesh.js.map +1 -1
  762. package/dist/trinityCore/Tr2MeshArea.js +78 -0
  763. package/dist/trinityCore/Tr2MeshArea.js.map +1 -1
  764. package/dist/trinityCore/Tr2MeshBase.js +98 -2
  765. package/dist/trinityCore/Tr2MeshBase.js.map +1 -1
  766. package/dist/trinityCore/Tr2PerObjectData.js +10 -0
  767. package/dist/trinityCore/Tr2PerObjectData.js.map +1 -1
  768. package/dist/trinityCore/Tr2PickType.js +33 -0
  769. package/dist/trinityCore/Tr2PickType.js.map +1 -0
  770. package/dist/trinityCore/Tr2RenderBatch.js +137 -0
  771. package/dist/trinityCore/Tr2RenderBatch.js.map +1 -1
  772. package/dist/trinityCore/Tr2RenderContext.js +271 -0
  773. package/dist/trinityCore/Tr2RenderContext.js.map +1 -1
  774. package/dist/trinityCore/Tr2RuntimeInstanceData.js +179 -0
  775. package/dist/trinityCore/Tr2RuntimeInstanceData.js.map +1 -1
  776. package/dist/trinityCore/Tr2ShLightingManager.js +397 -0
  777. package/dist/trinityCore/Tr2ShLightingManager.js.map +1 -0
  778. package/dist/trinityCore/Tr2VariableStore.js +26 -0
  779. package/dist/trinityCore/Tr2VariableStore.js.map +1 -1
  780. package/dist/trinityCore/Tr2VisibilityResults.js +5 -0
  781. package/dist/trinityCore/Tr2VisibilityResults.js.map +1 -1
  782. package/dist/trinityCore/TriDevice.js +5 -0
  783. package/dist/trinityCore/TriDevice.js.map +1 -1
  784. package/dist/trinityCore/TriFrustum.js +21 -14
  785. package/dist/trinityCore/TriFrustum.js.map +1 -1
  786. package/dist/trinityCore/TriObserverLocal.js +43 -0
  787. package/dist/trinityCore/TriObserverLocal.js.map +1 -1
  788. package/dist/trinityCore/TriProjection.js +86 -32
  789. package/dist/trinityCore/TriProjection.js.map +1 -1
  790. package/dist/trinityCore/TriRect.js +12 -0
  791. package/dist/trinityCore/TriRect.js.map +1 -1
  792. package/dist/trinityCore/TriRenderBatchAccumulator.js +46 -0
  793. package/dist/trinityCore/TriRenderBatchAccumulator.js.map +1 -1
  794. package/dist/trinityCore/TriRenderBatchMap.js +39 -2
  795. package/dist/trinityCore/TriRenderBatchMap.js.map +1 -1
  796. package/dist/trinityCore/TriSettings.js +38 -0
  797. package/dist/trinityCore/TriSettings.js.map +1 -1
  798. package/dist/trinityCore/TriVariable.js +30 -0
  799. package/dist/trinityCore/TriVariable.js.map +1 -1
  800. package/dist/trinityCore/TriView.js +16 -1
  801. package/dist/trinityCore/TriView.js.map +1 -1
  802. package/dist/trinityCore/TriViewport.js +12 -0
  803. package/dist/trinityCore/TriViewport.js.map +1 -1
  804. package/dist/trinityCore/{Tr2BindingVector3.js → binding/Tr2BindingVector3.js} +1 -1
  805. package/dist/trinityCore/binding/Tr2BindingVector3.js.map +1 -0
  806. package/dist/trinityCore/binding/Tr2DynamicBinding.js +266 -0
  807. package/dist/trinityCore/binding/Tr2DynamicBinding.js.map +1 -0
  808. package/dist/trinityCore/binding/Tr2ExternalParameter.js +392 -0
  809. package/dist/trinityCore/binding/Tr2ExternalParameter.js.map +1 -0
  810. package/dist/trinityCore/{Tr2PyValueBinding.js → binding/Tr2PyValueBinding.js} +30 -6
  811. package/dist/trinityCore/binding/Tr2PyValueBinding.js.map +1 -0
  812. package/dist/trinityCore/binding/TriValueBinding.js +648 -0
  813. package/dist/trinityCore/binding/TriValueBinding.js.map +1 -0
  814. package/dist/trinityCore/index.js +11 -4
  815. package/dist/trinityCore/index.js.map +1 -1
  816. package/dist/trinityCore/pickRay.js +84 -0
  817. package/dist/trinityCore/pickRay.js.map +1 -0
  818. package/dist/trinityCore/rawData/CjsPerFrameLayouts.js +517 -0
  819. package/dist/trinityCore/rawData/CjsPerFrameLayouts.js.map +1 -0
  820. package/dist/trinityCore/rawData/CjsPerObjectLayouts.js +790 -0
  821. package/dist/trinityCore/rawData/CjsPerObjectLayouts.js.map +1 -0
  822. package/dist/trinityCore/rawData/RawData.js +323 -39
  823. package/dist/trinityCore/rawData/RawData.js.map +1 -1
  824. package/dist/trinityCore/rawData/TriPoolAllocator.js +357 -0
  825. package/dist/trinityCore/rawData/TriPoolAllocator.js.map +1 -0
  826. package/dist/trinityCore/rawData/constantLayout.js +175 -0
  827. package/dist/trinityCore/rawData/constantLayout.js.map +1 -0
  828. package/dist/utilities/Range.js +53 -0
  829. package/dist/utilities/Range.js.map +1 -1
  830. package/docs/README.md +88 -0
  831. package/docs/architecture.md +162 -0
  832. package/docs/concepts/eve-runtime-behavior.md +86 -0
  833. package/docs/concepts/generated-class-lifecycle.md +116 -0
  834. package/docs/reference/api.md +76 -0
  835. package/docs/reference/classes/eve-runtime.md +106 -0
  836. package/docs/reference/classes/trinity-core.md +26 -0
  837. package/docs/reference/implementation-status.md +104 -0
  838. package/docs/reference/main-semantic-extraction.md +104 -0
  839. package/package.json +34 -24
  840. package/dist/eve/DecalVSPerObjectData.js +0 -34
  841. package/dist/eve/DecalVSPerObjectData.js.map +0 -1
  842. package/dist/eve/EveBannerItem.js +0 -43
  843. package/dist/eve/EveBannerItem.js.map +0 -1
  844. package/dist/eve/EveBannerLight.js.map +0 -1
  845. package/dist/eve/EveBannerSet.js +0 -190
  846. package/dist/eve/EveBannerSet.js.map +0 -1
  847. package/dist/eve/EveBasicPerObjectData.js +0 -31
  848. package/dist/eve/EveBasicPerObjectData.js.map +0 -1
  849. package/dist/eve/EveBoosterSet2.js.map +0 -1
  850. package/dist/eve/EveBoosterSet2Renderable.js.map +0 -1
  851. package/dist/eve/EveChildSpherePinPerObjectData.js +0 -37
  852. package/dist/eve/EveChildSpherePinPerObjectData.js.map +0 -1
  853. package/dist/eve/EveHazeSet.js.map +0 -1
  854. package/dist/eve/EveHazeSetLight.js.map +0 -1
  855. package/dist/eve/EveLocator2.js.map +0 -1
  856. package/dist/eve/EveLocatorSets.js.map +0 -1
  857. package/dist/eve/EveParticleDirectForce.js.map +0 -1
  858. package/dist/eve/EveParticleDragForce.js.map +0 -1
  859. package/dist/eve/EveParticleSpring.js.map +0 -1
  860. package/dist/eve/EvePerObjectPSData.js +0 -29
  861. package/dist/eve/EvePerObjectPSData.js.map +0 -1
  862. package/dist/eve/EvePerObjectVSData.js +0 -29
  863. package/dist/eve/EvePerObjectVSData.js.map +0 -1
  864. package/dist/eve/EvePlaneLight.js.map +0 -1
  865. package/dist/eve/EvePlaneSet.js.map +0 -1
  866. package/dist/eve/EvePlaneSetItem.js +0 -45
  867. package/dist/eve/EvePlaneSetItem.js.map +0 -1
  868. package/dist/eve/EveSpaceObjectAttachmentUtils.js.map +0 -1
  869. package/dist/eve/EveSpaceObjectDecal.js +0 -150
  870. package/dist/eve/EveSpaceObjectDecal.js.map +0 -1
  871. package/dist/eve/EveSpaceObjectPSData.js +0 -73
  872. package/dist/eve/EveSpaceObjectPSData.js.map +0 -1
  873. package/dist/eve/EveSpaceObjectVSData.js +0 -79
  874. package/dist/eve/EveSpaceObjectVSData.js.map +0 -1
  875. package/dist/eve/EveSpacePerObjectData.js +0 -97
  876. package/dist/eve/EveSpacePerObjectData.js.map +0 -1
  877. package/dist/eve/EveSpherePinPerObjectData.js +0 -37
  878. package/dist/eve/EveSpherePinPerObjectData.js.map +0 -1
  879. package/dist/eve/EveSpotlightLight.js.map +0 -1
  880. package/dist/eve/EveSpotlightSet.js.map +0 -1
  881. package/dist/eve/EveSpriteLight.js.map +0 -1
  882. package/dist/eve/EveSpriteLineSet.js.map +0 -1
  883. package/dist/eve/EveSpriteLineSetItem.js.map +0 -1
  884. package/dist/eve/EveSpriteSet.js.map +0 -1
  885. package/dist/eve/EveTrailsSet.js.map +0 -1
  886. package/dist/eve/Locator.js.map +0 -1
  887. package/dist/eve/LocatorData.js.map +0 -1
  888. package/dist/eve/ProcessLifetimeData.js.map +0 -1
  889. package/dist/eve/attachment/turrets/EveTurretSetPSData.js +0 -47
  890. package/dist/eve/attachment/turrets/EveTurretSetPSData.js.map +0 -1
  891. package/dist/eve/attachment/turrets/EveTurretSetVSData.js +0 -62
  892. package/dist/eve/attachment/turrets/EveTurretSetVSData.js.map +0 -1
  893. package/dist/eve/child/behaviors/SplineTunnel.js.map +0 -1
  894. package/dist/eve/child/behaviors/SplineTunnelPoint.js.map +0 -1
  895. package/dist/eve/perObjectData/DecalPSPerObjectData.js +0 -56
  896. package/dist/eve/perObjectData/DecalPSPerObjectData.js.map +0 -1
  897. package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js +0 -31
  898. package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js.map +0 -1
  899. package/dist/eve/perObjectData/EveTurretSetPerObjectData.js +0 -36
  900. package/dist/eve/perObjectData/EveTurretSetPerObjectData.js.map +0 -1
  901. package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js +0 -64
  902. package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js.map +0 -1
  903. package/dist/generated/eve/EveCamera.js +0 -264
  904. package/dist/generated/eve/EveCamera.js.map +0 -1
  905. package/dist/generated/eve/EveEntity.js +0 -81
  906. package/dist/generated/eve/EveEntity.js.map +0 -1
  907. package/dist/generated/eve/attachment/decal/index.js +0 -2
  908. package/dist/generated/eve/attachment/decal/index.js.map +0 -1
  909. package/dist/generated/eve/attachment/haze/EveHazeSetItem.js +0 -52
  910. package/dist/generated/eve/attachment/haze/EveHazeSetItem.js.map +0 -1
  911. package/dist/generated/eve/attachment/haze/index.js +0 -2
  912. package/dist/generated/eve/attachment/haze/index.js.map +0 -1
  913. package/dist/generated/eve/attachment/index.js +0 -5
  914. package/dist/generated/eve/attachment/index.js.map +0 -1
  915. package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js +0 -55
  916. package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js.map +0 -1
  917. package/dist/generated/eve/attachment/spotlights/index.js +0 -2
  918. package/dist/generated/eve/attachment/spotlights/index.js.map +0 -1
  919. package/dist/generated/eve/attachment/sprites/EveSpriteSetItem.js.map +0 -1
  920. package/dist/generated/eve/attachment/sprites/index.js +0 -2
  921. package/dist/generated/eve/attachment/sprites/index.js.map +0 -1
  922. package/dist/generated/eve/attachment/turrets/enums.js +0 -32
  923. package/dist/generated/eve/attachment/turrets/enums.js.map +0 -1
  924. package/dist/generated/eve/attachment/turrets/index.js +0 -2
  925. package/dist/generated/eve/attachment/turrets/index.js.map +0 -1
  926. package/dist/generated/eve/child/EveChildBehaviorSystem.js +0 -357
  927. package/dist/generated/eve/child/EveChildBehaviorSystem.js.map +0 -1
  928. package/dist/generated/eve/child/EveChildBulletStorm.js.map +0 -1
  929. package/dist/generated/eve/child/EveChildLink.js.map +0 -1
  930. package/dist/generated/eve/child/EveChildSpherePin.js +0 -54
  931. package/dist/generated/eve/child/EveChildSpherePin.js.map +0 -1
  932. package/dist/generated/eve/child/behaviors/CollisionAvoidance.js +0 -85
  933. package/dist/generated/eve/child/behaviors/CollisionAvoidance.js.map +0 -1
  934. package/dist/generated/eve/child/behaviors/InclusionVolume.js +0 -104
  935. package/dist/generated/eve/child/behaviors/InclusionVolume.js.map +0 -1
  936. package/dist/generated/eve/child/behaviors/ProcessLifetime.js +0 -458
  937. package/dist/generated/eve/child/behaviors/ProcessLifetime.js.map +0 -1
  938. package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js +0 -161
  939. package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js.map +0 -1
  940. package/dist/generated/eve/child/behaviors/Wander.js +0 -92
  941. package/dist/generated/eve/child/behaviors/Wander.js.map +0 -1
  942. package/dist/generated/eve/child/behaviors/enums.js.map +0 -1
  943. package/dist/generated/eve/child/modifiers/EveChildModifierAttachToBone.js.map +0 -1
  944. package/dist/generated/eve/child/modifiers/EveChildModifierBillboard3D.js.map +0 -1
  945. package/dist/generated/eve/child/modifiers/EveChildModifierStretch.js.map +0 -1
  946. package/dist/generated/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +0 -1
  947. package/dist/generated/eve/child/modifiers/index.js +0 -5
  948. package/dist/generated/eve/child/modifiers/index.js.map +0 -1
  949. package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +0 -1
  950. package/dist/generated/eve/child/procedural/index.js +0 -10
  951. package/dist/generated/eve/child/procedural/index.js.map +0 -1
  952. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +0 -1
  953. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +0 -1
  954. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +0 -1
  955. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +0 -1
  956. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +0 -1
  957. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +0 -1
  958. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +0 -1
  959. package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +0 -1
  960. package/dist/generated/eve/child/procedural/selection/index.js +0 -9
  961. package/dist/generated/eve/child/procedural/selection/index.js.map +0 -1
  962. package/dist/generated/eve/distribution/EveBaseDistributionMethod.js.map +0 -1
  963. package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +0 -1
  964. package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +0 -1
  965. package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +0 -1
  966. package/dist/generated/eve/distribution/attributeModifiers/enums.js.map +0 -1
  967. package/dist/generated/eve/distribution/attributeModifiers/index.js +0 -5
  968. package/dist/generated/eve/distribution/attributeModifiers/index.js.map +0 -1
  969. package/dist/generated/eve/distribution/index.js +0 -19
  970. package/dist/generated/eve/distribution/index.js.map +0 -1
  971. package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +0 -1
  972. package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +0 -1
  973. package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +0 -1
  974. package/dist/generated/eve/distribution/placement/index.js +0 -4
  975. package/dist/generated/eve/distribution/placement/index.js.map +0 -1
  976. package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +0 -1
  977. package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +0 -1
  978. package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +0 -1
  979. package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +0 -1
  980. package/dist/generated/eve/distribution/spawnModifiers/index.js +0 -5
  981. package/dist/generated/eve/distribution/spawnModifiers/index.js.map +0 -1
  982. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +0 -1
  983. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +0 -1
  984. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +0 -1
  985. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +0 -1
  986. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +0 -1
  987. package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +0 -1
  988. package/dist/generated/eve/distribution/spawners/index.js +0 -7
  989. package/dist/generated/eve/distribution/spawners/index.js.map +0 -1
  990. package/dist/generated/eve/effect/EveLensflare.js.map +0 -1
  991. package/dist/generated/eve/effect/EveMultiEffect.js +0 -84
  992. package/dist/generated/eve/effect/EveMultiEffect.js.map +0 -1
  993. package/dist/generated/eve/effect/EveMultiEffectParameter.js +0 -45
  994. package/dist/generated/eve/effect/EveMultiEffectParameter.js.map +0 -1
  995. package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js +0 -47
  996. package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js.map +0 -1
  997. package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js +0 -63
  998. package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js.map +0 -1
  999. package/dist/generated/eve/fxAttributes/index.js +0 -3
  1000. package/dist/generated/eve/fxAttributes/index.js.map +0 -1
  1001. package/dist/generated/eve/overlays/EveMeshOverlayEffect.js +0 -58
  1002. package/dist/generated/eve/overlays/EveMeshOverlayEffect.js.map +0 -1
  1003. package/dist/generated/eve/overlays/index.js +0 -2
  1004. package/dist/generated/eve/overlays/index.js.map +0 -1
  1005. package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js +0 -66
  1006. package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js.map +0 -1
  1007. package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js +0 -39
  1008. package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js.map +0 -1
  1009. package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js +0 -34
  1010. package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js.map +0 -1
  1011. package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js +0 -32
  1012. package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +0 -1
  1013. package/dist/generated/eve/perObjectData/index.js +0 -5
  1014. package/dist/generated/eve/perObjectData/index.js.map +0 -1
  1015. package/dist/generated/eve/scene/EveComponentCollection.js.map +0 -1
  1016. package/dist/generated/eve/scene/EveComponentRegistry.js.map +0 -1
  1017. package/dist/generated/eve/scene/EvePickingContext.js +0 -43
  1018. package/dist/generated/eve/scene/EvePickingContext.js.map +0 -1
  1019. package/dist/generated/eve/scene/EveSceneStaticParticles.js.map +0 -1
  1020. package/dist/generated/eve/scene/TriShadowFrustum.js +0 -83
  1021. package/dist/generated/eve/scene/TriShadowFrustum.js.map +0 -1
  1022. package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +0 -140
  1023. package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +0 -1
  1024. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +0 -1
  1025. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +0 -1
  1026. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +0 -1
  1027. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +0 -1
  1028. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +0 -1
  1029. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +0 -1
  1030. package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +0 -1
  1031. package/dist/generated/eve/smartLights/attributeModifiers/enums.js.map +0 -1
  1032. package/dist/generated/eve/smartLights/attributeModifiers/index.js +0 -9
  1033. package/dist/generated/eve/smartLights/attributeModifiers/index.js.map +0 -1
  1034. package/dist/generated/eve/socket/EveSocketParameterBindingBase.js.map +0 -1
  1035. package/dist/generated/eve/socket/EveSocketParameterBool.js.map +0 -1
  1036. package/dist/generated/eve/socket/EveSocketParameterColor.js.map +0 -1
  1037. package/dist/generated/eve/socket/EveSocketParameterFloat.js.map +0 -1
  1038. package/dist/generated/eve/socket/EveSocketParameterInt.js.map +0 -1
  1039. package/dist/generated/eve/socket/EveSocketParameterString.js.map +0 -1
  1040. package/dist/generated/eve/socket/EveSocketParameterVector2.js.map +0 -1
  1041. package/dist/generated/eve/socket/EveSocketParameterVector3.js.map +0 -1
  1042. package/dist/generated/eve/socket/EveSocketParameterVector4.js.map +0 -1
  1043. package/dist/generated/eve/socket/index.js +0 -10
  1044. package/dist/generated/eve/socket/index.js.map +0 -1
  1045. package/dist/generated/eve/spaceObject/EvePlanet.js.map +0 -1
  1046. package/dist/generated/eve/spaceObject/EveShip2.js.map +0 -1
  1047. package/dist/generated/eve/spaceObject/IEveSpaceObject2.js +0 -46
  1048. package/dist/generated/eve/spaceObject/IEveSpaceObject2.js.map +0 -1
  1049. package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +0 -1
  1050. package/dist/generated/eve/ui/EveLineSet.js.map +0 -1
  1051. package/dist/generated/eve/ui/EveSpherePin.js.map +0 -1
  1052. package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js +0 -44
  1053. package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js.map +0 -1
  1054. package/dist/generated/eve/ui/EveTacticalTrails.js.map +0 -1
  1055. package/dist/generated/trinityCore/Tr2DynamicBinding.js +0 -58
  1056. package/dist/generated/trinityCore/Tr2DynamicBinding.js.map +0 -1
  1057. package/dist/generated/trinityCore/Tr2ExternalParameter.js +0 -164
  1058. package/dist/generated/trinityCore/Tr2ExternalParameter.js.map +0 -1
  1059. package/dist/generated/trinityCore/Tr2GrannyAnimation.js.map +0 -1
  1060. package/dist/generated/trinityCore/Tr2ShLightingManager.js +0 -48
  1061. package/dist/generated/trinityCore/Tr2ShLightingManager.js.map +0 -1
  1062. package/dist/generated/trinityCore/TriValueBinding.js +0 -249
  1063. package/dist/generated/trinityCore/TriValueBinding.js.map +0 -1
  1064. package/dist/shader/Tr2Shader.js +0 -150
  1065. package/dist/shader/Tr2Shader.js.map +0 -1
  1066. package/dist/shader/reflection/Tr2EffectConstant.js +0 -61
  1067. package/dist/shader/reflection/Tr2EffectConstant.js.map +0 -1
  1068. package/dist/shader/reflection/Tr2EffectDefine.js +0 -34
  1069. package/dist/shader/reflection/Tr2EffectDefine.js.map +0 -1
  1070. package/dist/shader/reflection/Tr2EffectDescription.js +0 -34
  1071. package/dist/shader/reflection/Tr2EffectDescription.js.map +0 -1
  1072. package/dist/shader/reflection/Tr2EffectLibrary.js +0 -61
  1073. package/dist/shader/reflection/Tr2EffectLibrary.js.map +0 -1
  1074. package/dist/shader/reflection/Tr2EffectParameterAnnotation.js +0 -54
  1075. package/dist/shader/reflection/Tr2EffectParameterAnnotation.js.map +0 -1
  1076. package/dist/shader/reflection/Tr2EffectResource.js +0 -63
  1077. package/dist/shader/reflection/Tr2EffectResource.js.map +0 -1
  1078. package/dist/shader/reflection/Tr2EffectStageInput.js +0 -58
  1079. package/dist/shader/reflection/Tr2EffectStageInput.js.map +0 -1
  1080. package/dist/shader/reflection/Tr2EffectTechnique.js +0 -40
  1081. package/dist/shader/reflection/Tr2EffectTechnique.js.map +0 -1
  1082. package/dist/shader/reflection/Tr2Pass.js +0 -46
  1083. package/dist/shader/reflection/Tr2Pass.js.map +0 -1
  1084. package/dist/shader/sampler/Tr2SamplerSetup.js +0 -34
  1085. package/dist/shader/sampler/Tr2SamplerSetup.js.map +0 -1
  1086. package/dist/trinityCore/Tr2BindingVector3.js.map +0 -1
  1087. package/dist/trinityCore/Tr2PyValueBinding.js.map +0 -1
  1088. package/dist/trinityCore/rawData/RawDataStore.js +0 -232
  1089. package/dist/trinityCore/rawData/RawDataStore.js.map +0 -1
  1090. /package/dist/{generated/eve → eve}/distribution/attributeModifiers/enums.js +0 -0
  1091. /package/dist/{generated/eve → eve}/smartLights/attributeModifiers/enums.js +0 -0
@@ -1,6 +1,6 @@
1
1
  import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { io, type, carbon, impl, schema } from '@carbonenginejs/runtime-utils/schema';
3
- import { EveEntity as _EveEntity } from '../../generated/eve/EveEntity.js';
3
+ import { EveEntity as _EveEntity } from '../EveEntity.js';
4
4
  import { EveChildUpdateParams as _EveChildUpdateParams } from '../EveChildUpdateParams.js';
5
5
  import { EveChildInheritProperties as _EveChildInheritPrope } from '../child/EveChildInheritProperties.js';
6
6
  import { box3 } from '@carbonenginejs/runtime-utils/box3';
@@ -12,12 +12,18 @@ import { vec4 } from '@carbonenginejs/runtime-utils/vec4';
12
12
  import { ReflectionMode } from '../../generated/eve/enums.js';
13
13
  import { EveComponentType, ShouldReflect } from '../EveComponentTypes.js';
14
14
  import { ImpactConfiguration } from '../../generated/include/enums.js';
15
- import { Tr2Lod, EveLODHelper } from '../EveLODHelper.js';
15
+ import { EveLODHelper } from '../EveLODHelper.js';
16
16
  import { TriBatchType } from '@carbonenginejs/runtime-utils/graphics';
17
- import { Tr2PerObjectData } from '../../trinityCore/Tr2PerObjectData.js';
17
+ import { MatrixCopyFrom3x4 } from '../lights/lightConversion.js';
18
+ import { getBoneList } from '../../trinityCore/Tr2GrannyAnimation.js';
18
19
  import { TriRenderBatchAreaBlock, Tr2RenderBatch } from '../../trinityCore/Tr2RenderBatch.js';
20
+ import { RawData } from '../../trinityCore/rawData/RawData.js';
21
+ import { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from '../../trinityCore/Tr2PickType.js';
22
+ import { IEveSpaceObject2ParentData as _IEveSpaceObject2Pare } from './IEveSpaceObject2ParentData.js';
23
+ import { EveCustomMask as _EveCustomMask } from '../EveCustomMask.js';
24
+ import { Tr2Lod } from '@carbonenginejs/runtime-utils/const/trinity';
19
25
 
20
- let _initProto, _initClass, _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_lastDamageLocatorHit, _init_extra_lastDamageLocatorHit, _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;
26
+ let _initProto, _initClass, _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_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;
21
27
 
22
28
  // Static scratch for the sorted-transparent area pass (allocation rules: hot
23
29
  // per-frame path, copy-into, never allocate per call).
@@ -28,17 +34,24 @@ const TRANSPARENT_CENTER = vec3.create();
28
34
  // Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).
29
35
  const OVERLAY_TYPE_OPAQUEONLY = 0;
30
36
  const OVERLAY_TYPE_ALL = 1;
37
+
38
+ /**
39
+ * The hull of an EVE space object - its mesh, locators, locator sets, decals,
40
+ * attachments, lights, effect children, overlay effects, impact overlay and
41
+ * controllers - together with the curve-driven world transform, visibility, LOD
42
+ * and batch submission that drive them each frame.
43
+ */
31
44
  let _EveSpaceObject;
32
45
  new class extends _identity {
33
46
  static [class EveSpaceObject2 extends _EveEntity {
34
47
  static {
35
48
  ({
36
- 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_lastDamageLocatorHit, _init_extra_lastDamageLocatorHit, _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],
49
+ 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_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],
37
50
  c: [_EveSpaceObject, _initClass]
38
51
  } = _applyDecs2311(this, [type.define({
39
52
  className: "EveSpaceObject2",
40
53
  family: "eve/spaceObject"
41
- })], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ReflectionMode")], 16, "reflectionMode"], [[io, io.persist, void 0, type.list("IEveSpaceObjectChild")], 16, "effectChildren"], [[io, io.persist, void 0, type.list("IEveTransform")], 16, "children"], [[io, io.notify, io, io.persist, type, type.string], 16, "name"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "mute"], [[io, io.readwrite, void 0, type.objectRef("EveChildInheritProperties")], 16, "inheritProperties"], [[io, io.persist, void 0, type.list("EveCustomMask")], 16, "customMasks"], [[io, io.persist, void 0, type.list("EveMeshOverlayEffect")], 16, "overlayEffects"], [[io, io.read, void 0, type.objectRef("Tr2BindingVector3")], 16, "positionDelta"], [[io, io.read, type, type.int32, void 0, schema.enum("Tr2Lod")], 16, "lodLevel"], [[io, io.persist, void 0, type.list("TriCurveSet")], 16, "curveSets"], [[io, io.readwrite, type, type.boolean], 16, "isPickable"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameter"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameterWithChildren"], [[io, io.read, type, type.vec3], 16, "generatedShapeEllipsoidCenter"], [[io, io.read, type, type.vec3], 16, "generatedShapeEllipsoidRadius"], [[io, io.read, void 0, type.objectRef("Tr2GrannyAnimation")], 16, "animationUpdater"], [[io, io.persist, type, type.string], 16, "dna"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "castShadow"], [[io, io.persist, type, type.boolean], 16, "isAnimated"], [[io, io.persist, type, type.boolean], 16, "dynamicBoundingSphereEnabled"], [[io, io.persist, void 0, type.list("IEveSpaceObjectAttachment")], 16, "attachments"], [[io, io.persist, void 0, type.list("EveSpaceObjectDecal")], 16, "decals"], [[io, io.notify, io, io.persist, void 0, type.list("Tr2Light")], 16, "lights"], [[io, io.persist, void 0, type.list("Tr2ExternalParameter")], 16, "externalParameters"], [[io, io.persist, void 0, type.list("ITr2Controller")], 16, "controllers"], [[io, io.persist, void 0, type.list("EveLocator2")], 16, "locators"], [[io, io.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[io, io.persist, void 0, type.objectRef("EveImpactOverlay")], 16, "impactOverlay"], [[io, io.persist, type, type.vec3], 16, "clipSphereCenter"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "clipSphereFactor2"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "clipSphereFactor"], [[io, io.persist, void 0, type.list("TriObserverLocal")], 16, "observers"], [[io, io.read, type, type.vec3], 16, "worldPosition"], [[io, io.persist, void 0, type.objectRef("ITriQuaternionFunction")], 16, "rotationCurve"], [[io, io.read, type, type.quat], 16, "worldRotation"], [[io, io.persist, type, type.float32], 16, "modelScale"], [[io, io.persist, void 0, type.list("EveLocatorSets")], 16, "locatorSets"], [[io, io.readwrite, type, type.float32], 16, "activationStrength"], [[io, io.readwrite, type, type.color], 16, "albedoColor"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.boolean], 16, "update"], [[io, io.read, type, type.float32], 16, "secondaryLightingSphereRadius"], [[io, io.persist, type, type.vec3], 16, "boundingSphereCenter"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "dirtLevel"], [[io, io.readwrite, type, type.vec4], 16, "customShaderData"], [[io, io.read, type, type.int32], 16, "lastDamageLocatorHit"], [[io, io.persist, type, type.float32], 16, "boundingSphereRadius"], [[io, io.read, type, type.vec3], 16, "modelWorldPosition"], [[io, io.persist, void 0, type.objectRef("ITriVectorFunction")], 16, "modelTranslationCurve"], [[io, io.persist, void 0, type.objectRef("ITriQuaternionFunction")], 16, "modelRotationCurve"], [[io, io.persist, type, type.vec3], 16, "shapeEllipsoidCenter"], [[io, io.persist, type, type.vec3], 16, "shapeEllipsoidRadius"], [[io, io.persist, void 0, type.objectRef("ITriVectorFunction")], 16, "translationCurve"], [[io, io.read, type, type.mat4], 16, "worldTransform"], [[io, io.read, type, type.mat4], 16, "inverseWorldTransform"], [[io, io.read, type, type.mat4], 16, "lastWorldTransform"], [[io, io.read, type, type.vec3], 16, "worldVelocity"], [[io, io.readwrite, void 0, type.objectRef("ITr2AudGeometry")], 16, "audioGeometry"], [[type, type.boolean], 16, "isVisible"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddController"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddObserver"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetInheritProperties"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetEffectChildByName"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddToEffectChildrenList"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddLight"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearLights"], [[carbon, carbon.method, impl, impl.implemented], 18, "RemoveFromEffectChildrenList"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetModelRotationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetModelRotationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetModelTranslationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetModelTranslationCurve"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateWorldTransform"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.")], 18, "UpdateWorldBounds"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.")], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.")], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, 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.")], 18, "RebuildCachedData"], [[carbon, carbon.method, impl, impl.implemented], 18, "ReleaseCachedData"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.")], 18, "GetShadowBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Generated EveMeshOverlayEffect has no method surface yet, so the per-batch-type effect selection reads its fields here until the class is promoted; realized-LOD draw args defer to the engine.")], 18, "GetBatchesFromOverlayVector"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The overlay HasTransparentArea predicate reads the generated class's transparentEffects field until the class is promoted.")], 18, "HasTransparentBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.")], 18, "GetSortValue"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.")], 18, "GetPerObjectData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShadowPerObjectData"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The granny bone list (Tr2GrannyAnimationUtils::GetBoneList, cpp:3545-3547) awaits the JS animation seam - (null, 0) is passed, the established EveChildMesh convention.")], 18, "GetLights"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "IsCastingShadow"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "DisplayChildren"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetObserverTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldRotation"], [[carbon, carbon.method, impl, impl.implemented], 18, "FindSoundEmitter"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMute"], [[carbon, carbon.method, impl, impl.adapted], 18, "PlayAnimationEx"], [[carbon, carbon.method, impl, impl.adapted], 18, "CalculateSkinnedBoundingBoxFromTransform"], [[carbon, carbon.method, impl, impl.adapted], 18, "CalculateSkinnedBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearImpactDamage"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearAnimations"], [[carbon, carbon.method, impl, impl.implemented], 18, "CreateImpactFromPosition"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "EndAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "FreezeHighDetailMesh"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorsForSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCloseLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetGoodLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorDirection"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.")], 18, "GetDamageLocatorPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetClosestDamageLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("TriRand is represented by Math.random; all locator scoring remains source-faithful.")], 18, "GetGoodDamageLocatorIndex"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRadius"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMissPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.implemented], 18, "HasImpactConfigurationShield"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.")], 18, "GetImpactPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageLocator"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTransformedDamageLocator"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsImpostor"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorPositionFromSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorRotationFromSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted], 18, "PlayAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChainAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChainAnimationEx"], [[carbon, carbon.method, impl, impl.adapted], 18, "RebuildBoundingSphereInformation"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.")], 18, "SetBoundingSphereInformation"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetControllerVariables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Geometry resources without multi-LOD support expose their sole browser LOD as index zero.")], 18, "GetLastUsedMeshLod"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLocatorTransform"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLocalBoundingBox"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetWorldBoundingBox"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsBoundingBoxReady"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.")], 18, "EstimatePixelDiameter"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsInFrustum"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphereCenter"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphereRadius"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBoneCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetImpactDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetImpactAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetProceduralContainerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.adapted], 18, "TransformLocators"]], 0, void 0, _EveEntity));
54
+ })], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ReflectionMode")], 16, "reflectionMode"], [[io, io.persist, void 0, type.list("IEveSpaceObjectChild")], 16, "effectChildren"], [[io, io.persist, void 0, type.list("IEveTransform")], 16, "children"], [[io, io.notify, io, io.persist, type, type.string], 16, "name"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "mute"], [[io, io.readwrite, void 0, type.objectRef("EveChildInheritProperties")], 16, "inheritProperties"], [[io, io.persist, void 0, type.list("EveCustomMask")], 16, "customMasks"], [[io, io.persist, void 0, type.list("EveMeshOverlayEffect")], 16, "overlayEffects"], [[io, io.read, void 0, type.objectRef("Tr2BindingVector3")], 16, "positionDelta"], [[io, io.read, type, type.int32, void 0, schema.enum("Tr2Lod")], 16, "lodLevel"], [[io, io.persist, void 0, type.list("TriCurveSet")], 16, "curveSets"], [[io, io.readwrite, type, type.boolean], 16, "isPickable"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameter"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameterWithChildren"], [[io, io.read, type, type.vec3], 16, "generatedShapeEllipsoidCenter"], [[io, io.read, type, type.vec3], 16, "generatedShapeEllipsoidRadius"], [[io, io.read, void 0, type.objectRef("Tr2GrannyAnimation")], 16, "animationUpdater"], [[io, io.persist, type, type.string], 16, "dna"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "castShadow"], [[io, io.persist, type, type.boolean], 16, "isAnimated"], [[io, io.persist, type, type.boolean], 16, "dynamicBoundingSphereEnabled"], [[io, io.persist, void 0, type.list("IEveSpaceObjectAttachment")], 16, "attachments"], [[io, io.persist, void 0, type.list("EveSpaceObjectDecal")], 16, "decals"], [[io, io.notify, io, io.persist, void 0, type.list("Tr2Light")], 16, "lights"], [[io, io.persist, void 0, type.list("Tr2ExternalParameter")], 16, "externalParameters"], [[io, io.persist, void 0, type.list("ITr2Controller")], 16, "controllers"], [[io, io.persist, void 0, type.list("EveLocator2")], 16, "locators"], [[io, io.persist, void 0, type.objectRef("Tr2MeshBase")], 16, "mesh"], [[io, io.persist, void 0, type.objectRef("EveImpactOverlay")], 16, "impactOverlay"], [[io, io.persist, type, type.vec3], 16, "clipSphereCenter"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "clipSphereFactor2"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "clipSphereFactor"], [[io, io.persist, void 0, type.list("TriObserverLocal")], 16, "observers"], [[io, io.read, type, type.vec3], 16, "worldPosition"], [[io, io.persist, void 0, type.objectRef("ITriQuaternionFunction")], 16, "rotationCurve"], [[io, io.read, type, type.quat], 16, "worldRotation"], [[io, io.persist, type, type.float32], 16, "modelScale"], [[io, io.persist, void 0, type.list("EveLocatorSets")], 16, "locatorSets"], [[io, io.readwrite, type, type.float32], 16, "activationStrength"], [[io, io.readwrite, type, type.color], 16, "albedoColor"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.boolean], 16, "update"], [[io, io.read, type, type.float32], 16, "secondaryLightingSphereRadius"], [[io, io.persist, type, type.vec3], 16, "boundingSphereCenter"], [[io, io.notify, io, io.readwrite, type, type.float32], 16, "dirtLevel"], [[io, io.readwrite, type, type.vec4], 16, "customShaderData"], [[io, io.read, type, type.vec4], 16, "spaceObjectShipData"], [[io, io.read, type, type.int32], 16, "lastDamageLocatorHit"], [[io, io.persist, type, type.float32], 16, "boundingSphereRadius"], [[io, io.read, type, type.vec3], 16, "modelWorldPosition"], [[io, io.persist, void 0, type.objectRef("ITriVectorFunction")], 16, "modelTranslationCurve"], [[io, io.persist, void 0, type.objectRef("ITriQuaternionFunction")], 16, "modelRotationCurve"], [[io, io.persist, type, type.vec3], 16, "shapeEllipsoidCenter"], [[io, io.persist, type, type.vec3], 16, "shapeEllipsoidRadius"], [[io, io.persist, void 0, type.objectRef("ITriVectorFunction")], 16, "translationCurve"], [[io, io.read, type, type.mat4], 16, "worldTransform"], [[io, io.read, type, type.mat4], 16, "inverseWorldTransform"], [[io, io.read, type, type.mat4], 16, "lastWorldTransform"], [[io, io.read, type, type.vec3], 16, "worldVelocity"], [[io, io.readwrite, void 0, type.objectRef("ITr2AudGeometry")], 16, "audioGeometry"], [[type, type.boolean], 16, "isVisible"], [[carbon, carbon.method, impl, impl.adapted], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddController"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddObserver"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetInheritProperties"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetEffectChildByName"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddToEffectChildrenList"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddLight"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearLights"], [[carbon, carbon.method, impl, impl.implemented], 18, "RemoveFromEffectChildrenList"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetModelRotationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetModelRotationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetModelTranslationCurve"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetModelTranslationCurve"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateWorldTransform"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.")], 18, "UpdateWorldBounds"], [[carbon, carbon.method, impl, impl.implemented], 18, "PrepareShaderData"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateShLighting"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearShLighting"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetParentData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPerObjectStructs"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.")], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.")], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, 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.")], 18, "RebuildCachedData"], [[carbon, carbon.method, impl, impl.implemented], 18, "ReleaseCachedData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPickingBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetID"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.")], 18, "GetShadowBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Overlay selection is fully represented in the CPU graph; realized-LOD draw arguments remain engine-owned.")], 18, "GetBatchesFromOverlayVector"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Portable mesh area access replaces Carbon's native mesh-area vectors.")], 18, "HasTransparentBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.")], 18, "GetSortValue"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.")], 18, "GetPerObjectData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShadowPerObjectData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLights"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "IsCastingShadow"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "DisplayChildren"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetObserverTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetModelCenterWorldPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldRotation"], [[carbon, carbon.method, impl, impl.implemented], 18, "FindSoundEmitter"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMute"], [[carbon, carbon.method, impl, impl.adapted], 18, "PlayAnimationEx"], [[carbon, carbon.method, impl, impl.adapted], 18, "CalculateSkinnedBoundingBoxFromTransform"], [[carbon, carbon.method, impl, impl.adapted], 18, "CalculateSkinnedBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearImpactDamage"], [[carbon, carbon.method, impl, impl.implemented], 18, "ClearAnimations"], [[carbon, carbon.method, impl, impl.implemented], 18, "CreateImpactFromPosition"], [[carbon, carbon.method, impl, impl.adapted], 18, "CreateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "EndAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "FreezeHighDetailMesh"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorsForSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCloseLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetGoodLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetDamageLocatorDirection"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.")], 18, "GetDamageLocatorPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetClosestDamageLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("TriRand is represented by Math.random; all locator scoring remains source-faithful.")], 18, "GetGoodDamageLocatorIndex"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRadius"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMissPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetImpactConfiguration"], [[carbon, carbon.method, impl, impl.implemented], 18, "HasImpactConfigurationShield"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.")], 18, "GetImpactPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateImpact"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDamageLocator"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTransformedDamageLocator"], [[carbon, carbon.method, impl, impl.adapted], 18, "IsImpostor"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorPositionFromSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocatorRotationFromSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted], 18, "PlayAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChainAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChainAnimationEx"], [[carbon, carbon.method, impl, impl.adapted], 18, "RebuildBoundingSphereInformation"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.")], 18, "SetBoundingSphereInformation"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetControllerVariables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Geometry resources without multi-LOD support expose their sole browser LOD as index zero.")], 18, "GetLastUsedMeshLod"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLocatorTransform"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetLocalBoundingBox"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetWorldBoundingBox"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsBoundingBoxReady"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.")], 18, "EstimatePixelDiameter"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsInFrustum"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphereCenter"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphereRadius"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetBoneCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetImpactDamageState"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetImpactAnimation"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetProceduralContainerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.adapted], 18, "TransformLocators"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShapeEllipsoid"]], 0, void 0, _EveEntity));
42
55
  }
43
56
  /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */
44
57
  reflectionMode = (_initProto(this), _init_reflectionMode(this, 3));
@@ -178,8 +191,15 @@ new class extends _identity {
178
191
  /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */
179
192
  customShaderData = (_init_extra_dirtLevel(this), _init_customShaderData(this, vec4.create()));
180
193
 
194
+ /**
195
+ * m_spaceObjectShipData (Vector4) [READ] - the packed shader ship data:
196
+ * .y activation strength, .z dirt level, .w bounding-sphere radius
197
+ * (PrepareShaderData, cpp:734-744). .x is authored elsewhere and left alone.
198
+ */
199
+ spaceObjectShipData = (_init_extra_customShaderData(this), _init_spaceObjectShipData(this, vec4.create()));
200
+
181
201
  /** m_lastDamageLocatorHit (int) [READ] */
182
- lastDamageLocatorHit = (_init_extra_customShaderData(this), _init_lastDamageLocatorHit(this, -1));
202
+ lastDamageLocatorHit = (_init_extra_spaceObjectShipData(this), _init_lastDamageLocatorHit(this, -1));
183
203
 
184
204
  /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */
185
205
  boundingSphereRadius = (_init_extra_lastDamageLocatorHit(this), _init_boundingSphereRadius(this, -1));
@@ -241,12 +261,43 @@ new class extends _identity {
241
261
 
242
262
  // Carbon m_impostorMode: the impostor system that raises it is unported.
243
263
  #impostorMode = false;
264
+
265
+ /** EVE_SPACEOBJECT_CUSTOWMASK_MAX (EveSpaceObject2.h:49) - custom-mask slots. */
266
+
267
+ /**
268
+ * Carbon g_secondaryLightingRadiusCutoffFactor (cpp:52), a registered engine
269
+ * setting defaulting to 0.3. It scales this hull's bounding radius into the
270
+ * cutoff below which a secondary light source is too small to matter.
271
+ */
272
+
273
+ /** Scratch for the per-frame shader-data fill; never allocate in it. */
274
+
275
+ // Carbon m_vsData / m_psData: the PERSISTENT per-object records. They are
276
+ // owner-held members across frames rather than pool leases, because the
277
+ // object fills them during update and reads them back afterwards
278
+ // (cpp:3747 takes the world translation out of the STORED transposed matrix).
279
+ // Carbon's paired m_perObjectDataVs/m_perObjectDataPs GPU buffers are the
280
+ // engine's business; Invalidate on these records carries the same signal.
281
+ #vsData = RawData.create("EveSpaceObjectVSData");
282
+ #psData = RawData.create("EveSpaceObjectPSData");
283
+
284
+ /** Alias for the mesh property; reads and writes go straight to mesh. */
244
285
  get meshLod() {
245
286
  return this.mesh;
246
287
  }
288
+
289
+ /** Alias for the mesh property; reads and writes go straight to mesh. */
247
290
  set meshLod(mesh) {
248
291
  this.mesh = mesh ?? null;
249
292
  }
293
+
294
+ /**
295
+ * Links the authored controllers, pushes authored inherit properties down to
296
+ * the effect children and lights, and derives the impact overlay's damage
297
+ * locator count from the "damage" locator set - which Carbon does at build
298
+ * time - so a field-populated graph reaches the same live state as the
299
+ * authoring path.
300
+ */
250
301
  Initialize() {
251
302
  for (const controller of this.controllers) {
252
303
  if (!controller?.IsLinked?.()) {
@@ -271,12 +322,24 @@ new class extends _identity {
271
322
  }
272
323
  return true;
273
324
  }
325
+
326
+ /** Returns the hull mesh, or null when none is attached. */
274
327
  GetMesh() {
275
328
  return this.mesh;
276
329
  }
330
+
331
+ /**
332
+ * Replaces the hull mesh; the cached area blocks are only rebuilt on the next
333
+ * batch call.
334
+ */
277
335
  SetMesh(mesh) {
278
336
  this.mesh = mesh ?? null;
279
337
  }
338
+
339
+ /**
340
+ * Appends a controller, links it to this object when it is not already linked,
341
+ * and replays the current controller variables onto it.
342
+ */
280
343
  AddController(controller) {
281
344
  this.controllers.push(controller);
282
345
  if (!controller?.IsLinked?.()) {
@@ -285,10 +348,22 @@ new class extends _identity {
285
348
  _EveSpaceObject.#ApplyControllerVariables(controller, this.#controllerVariables, "SetVariable");
286
349
  return controller;
287
350
  }
351
+
352
+ /**
353
+ * Appends a placement observer, which is repositioned from the observer
354
+ * transform on every synchronous update; the observer is returned for
355
+ * chaining.
356
+ */
288
357
  AddObserver(observer) {
289
358
  this.observers.push(observer);
290
359
  return observer;
291
360
  }
361
+
362
+ /**
363
+ * Sets the colour set that effect children and lights inherit, creating the
364
+ * inherit-properties holder on first use, and pushes it to the existing
365
+ * children and lights.
366
+ */
292
367
  SetInheritProperties(colorSet) {
293
368
  if (!this.inheritProperties) {
294
369
  this.inheritProperties = new _EveChildInheritPrope();
@@ -296,6 +371,8 @@ new class extends _identity {
296
371
  this.inheritProperties.SetProperties(colorSet);
297
372
  this.#PropagateInheritProperties();
298
373
  }
374
+
375
+ /** Pushes the current inherited properties to every effect child and light. */
299
376
  #PropagateInheritProperties() {
300
377
  const properties = this.inheritProperties.GetProperties();
301
378
  for (const child of this.effectChildren) {
@@ -305,6 +382,11 @@ new class extends _identity {
305
382
  light?.SetInheritProperties?.(properties);
306
383
  }
307
384
  }
385
+
386
+ /**
387
+ * Returns the first effect child with the given name, or null when none
388
+ * matches.
389
+ */
308
390
  GetEffectChildByName(name) {
309
391
  const target = String(name ?? "");
310
392
  for (const child of this.effectChildren) {
@@ -314,6 +396,12 @@ new class extends _identity {
314
396
  }
315
397
  return null;
316
398
  }
399
+
400
+ /**
401
+ * Appends an effect child, first giving it the hull's inherited properties and
402
+ * then replaying the current controller variables onto it, so a late addition
403
+ * starts in the same state as the rest.
404
+ */
317
405
  AddToEffectChildrenList(child) {
318
406
  if (this.inheritProperties) {
319
407
  child?.SetInheritProperties?.(this.inheritProperties.GetProperties());
@@ -322,15 +410,27 @@ new class extends _identity {
322
410
  _EveSpaceObject.#ApplyControllerVariables(child, this.#controllerVariables, "SetControllerVariable");
323
411
  return child;
324
412
  }
413
+
414
+ /** Appends a light, first giving it the hull's inherited properties. */
325
415
  AddLight(light) {
326
416
  if (this.inheritProperties) {
327
417
  light?.SetInheritProperties?.(this.inheritProperties.GetProperties());
328
418
  }
329
419
  this.lights.push(light);
330
420
  }
421
+
422
+ /**
423
+ * Drops every light from the hull; component registration is not revisited
424
+ * here.
425
+ */
331
426
  ClearLights() {
332
427
  this.lights.length = 0;
333
428
  }
429
+
430
+ /**
431
+ * Removes an effect child, returning false when it is not attached to this
432
+ * hull.
433
+ */
334
434
  RemoveFromEffectChildrenList(child) {
335
435
  const index = this.effectChildren.indexOf(child);
336
436
  if (index === -1) {
@@ -339,18 +439,38 @@ new class extends _identity {
339
439
  this.effectChildren.splice(index, 1);
340
440
  return true;
341
441
  }
442
+
443
+ /**
444
+ * Sets the curve that rotates the model within the hull's ball rotation, or
445
+ * clears it when passed nothing.
446
+ */
342
447
  SetModelRotationCurve(curve) {
343
448
  this.modelRotationCurve = curve ?? null;
344
449
  }
450
+
451
+ /** Returns the model rotation curve, or null when none is set. */
345
452
  GetModelRotationCurve() {
346
453
  return this.modelRotationCurve;
347
454
  }
455
+
456
+ /**
457
+ * Sets the curve that offsets the model within the hull's ball position, or
458
+ * clears it when passed nothing.
459
+ */
348
460
  SetModelTranslationCurve(curve) {
349
461
  this.modelTranslationCurve = curve ?? null;
350
462
  }
463
+
464
+ /** Returns the model translation curve, or null when none is set. */
351
465
  GetModelTranslationCurve() {
352
466
  return this.modelTranslationCurve;
353
467
  }
468
+
469
+ /**
470
+ * 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.
471
+ * @param {number} time Frame time; repeating the previous call's time is a no-op.
472
+ * @returns {boolean} False when the transform had already been built for this time.
473
+ */
354
474
  UpdateWorldTransform(time) {
355
475
  const nextTime = Number(time) || 0;
356
476
  if (this.#lastUpdateTransformTime === nextTime) {
@@ -358,6 +478,10 @@ new class extends _identity {
358
478
  }
359
479
  this.#lastUpdateTransformTime = nextTime;
360
480
  mat4.copy(this.lastWorldTransform, this.worldTransform);
481
+ // Carbon cpp:2675-2676: the OUTGOING transform becomes worldTransformLast,
482
+ // stored transposed in both records, before the new one is built.
483
+ this.#vsData.SetAndTranspose("worldTransformLast", this.lastWorldTransform);
484
+ this.#psData.SetAndTranspose("worldTransformLast", this.lastWorldTransform);
361
485
  _EveSpaceObject.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, _EveSpaceObject.#zero);
362
486
  if (this.translationCurve?.GetValueDotAt) {
363
487
  this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);
@@ -400,9 +524,9 @@ new class extends _identity {
400
524
  return true;
401
525
  }
402
526
 
403
- /**
404
- * Refreshes Carbon's realized world-space sphere from the dynamic skinned
405
- * sphere when available, otherwise from the authored local sphere.
527
+ /**
528
+ * Refreshes Carbon's realized world-space sphere from the dynamic skinned
529
+ * sphere when available, otherwise from the authored local sphere.
406
530
  */
407
531
  UpdateWorldBounds() {
408
532
  const updater = this.animationUpdater;
@@ -421,6 +545,114 @@ new class extends _identity {
421
545
  }
422
546
  return false;
423
547
  }
548
+
549
+ /**
550
+ * Carbon EveSpaceObject2::PrepareShaderData (cpp:734-763): refreshes the
551
+ * world bounds, packs the ship data, and derives the clip-sphere dissolve
552
+ * values into the persistent per-object records.
553
+ */
554
+ PrepareShaderData(updateContext = null) {
555
+ this.UpdateWorldBounds();
556
+
557
+ // An impact overlay may damp the activation strength; otherwise full on.
558
+ this.spaceObjectShipData[1] = this.impactOverlay ? this.impactOverlay.GetActivationStrength?.(updateContext) ?? 1 : 1;
559
+ this.spaceObjectShipData[3] = this.GetBoundingSphereRadius();
560
+ this.spaceObjectShipData[2] = this.dirtLevel;
561
+
562
+ // clipSphereFactor runs 0 (fully visible) to 1 (invisible); the shader gets
563
+ // a signed squared radius rather than the factor itself.
564
+ let normalizedBoundingRadius = this.GetBoundingSphereRadius() / (this.modelScale === 0 ? 1 : this.modelScale);
565
+ const clipOffset = vec3.length(this.clipSphereCenter);
566
+ normalizedBoundingRadius += clipOffset;
567
+ const insideSpherePercentage = Math.min(1, clipOffset / normalizedBoundingRadius);
568
+ const dissolveRadius = this.clipSphereFactor * normalizedBoundingRadius * (1 + insideSpherePercentage);
569
+ const center = this.GetBoundingSphereCenter();
570
+ const clipSphereCenter = _EveSpaceObject.#clipSphereCenterScratch;
571
+ vec3.add(clipSphereCenter, this.clipSphereCenter, center);
572
+ const clipRadiusSq = Math.sign(dissolveRadius) * dissolveRadius * dissolveRadius;
573
+ this.#psData.Set("clipSphereCenter", clipSphereCenter);
574
+ this.#psData.Set("clipRadiusSq", [clipRadiusSq]);
575
+ this.#vsData.Set("clipData", [clipSphereCenter[0], clipSphereCenter[1], clipSphereCenter[2], clipRadiusSq]);
576
+ const dissolveRadius2 = this.clipSphereFactor2 * normalizedBoundingRadius * (1 + insideSpherePercentage);
577
+ this.#psData.Set("clipRadius2Sq", [Math.sign(dissolveRadius2) * dissolveRadius2 * dissolveRadius2]);
578
+ this.#psData.Set("clipSphereFactor", [this.clipSphereFactor]);
579
+ this.#psData.Set("clipSphereFactor2", [this.clipSphereFactor2]);
580
+ }
581
+
582
+ /**
583
+ * Carbon EveSpaceObject2::UpdateShLighting (cpp:1411-1421): asks the scene's
584
+ * SH lighting manager for this hull's secondary-lighting coefficients, faded
585
+ * in across the low-detail threshold so a hull entering that range does not
586
+ * pop. The coefficients are cleared first, which is also what leaves the
587
+ * unwritten tail zero on the L1 path.
588
+ * @param {Object} manager - Tr2ShLightingManager
589
+ * @param {Object} [updateContext] - frame context, for the detail thresholds
590
+ */
591
+ UpdateShLighting(manager, updateContext = null) {
592
+ const coefficients = this.#psData.Get("shLightingCoefficients");
593
+ coefficients.fill(0);
594
+ const lowThreshold = _EveSpaceObject.#GetContextValue(updateContext, "GetLowDetailThreshold", "lowDetailThreshold");
595
+ if (!(this.estimatedPixelDiameterWithChildren > lowThreshold) || typeof manager?.GetLighting !== "function") {
596
+ return false;
597
+ }
598
+ const mediumThreshold = _EveSpaceObject.#GetContextValue(updateContext, "GetMediumDetailThreshold", "mediumDetailThreshold");
599
+ const intensityFadeRadius = (mediumThreshold - lowThreshold) * 0.25;
600
+ const intensity = Math.min(Math.max((this.estimatedPixelDiameterWithChildren - lowThreshold) / intensityFadeRadius, 0), 1);
601
+ manager.GetLighting(this.worldPosition, intensity, this.boundingSphereRadius * _EveSpaceObject.SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR, coefficients);
602
+ return true;
603
+ }
604
+
605
+ /**
606
+ * Carbon EveSpaceObject2::ClearShLighting (cpp:1423-1426): drops this hull's
607
+ * secondary-lighting contribution back to nothing.
608
+ */
609
+ ClearShLighting() {
610
+ this.#psData.Get("shLightingCoefficients").fill(0);
611
+ return true;
612
+ }
613
+
614
+ /**
615
+ * Carbon EveSpaceObject2::GetParentData (cpp:1872-1885): the values an
616
+ * attachment needs from its hull. `shLighting` is a LIVE view into the PS
617
+ * record, exactly as Carbon hands out a raw pointer into m_psData - an
618
+ * attachment reading it sees the hull's current coefficients.
619
+ * @param {Object} [out] - caller-owned record, refreshed in place
620
+ */
621
+ GetParentData(out = new _IEveSpaceObject2Pare()) {
622
+ mat4.copy(out.transform, this.worldTransform);
623
+ // Carbon memsets the record and never assigns killCount on this path.
624
+ out.killCount = 0;
625
+ vec4.copy(out.shipData, this.spaceObjectShipData);
626
+ vec3.copy(out.clipSphereCenter, this.#psData.Get("clipSphereCenter"));
627
+ out.clipRadiusSq = this.#psData.Get("clipRadiusSq")[0];
628
+ out.clipRadius2Sq = this.#psData.Get("clipRadius2Sq")[0];
629
+ out.clipFactor = this.#psData.Get("clipSphereFactor")[0];
630
+ out.clipFactor2 = this.#psData.Get("clipSphereFactor2")[0];
631
+ out.shLighting = this.#psData.Get("shLightingCoefficients");
632
+ vec4.copy(out.customData, this.#psData.Get("customData"));
633
+ return out;
634
+ }
635
+
636
+ /**
637
+ * Carbon EveSpaceObject2::GetPerObjectStructs (cpp:1485-1490): hands a copy
638
+ * of both records to a caller, with the VS record's customData taken from the
639
+ * PS record as Carbon does.
640
+ * @returns {{vs: RawData, ps: RawData}} independent copies, not live records
641
+ */
642
+ GetPerObjectStructs(vsData = RawData.create("EveSpaceObjectVSData"), psData = RawData.create("EveSpaceObjectPSData")) {
643
+ vsData.CopyFrom(this.#vsData);
644
+ psData.CopyFrom(this.#psData);
645
+ vsData.Set("customData", this.#psData.Get("customData"));
646
+ return {
647
+ vs: vsData,
648
+ ps: psData
649
+ };
650
+ }
651
+
652
+ /**
653
+ * 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.
654
+ * @returns {boolean} False when the update flag is off; the world transform is refreshed either way.
655
+ */
424
656
  UpdateSyncronous(updateContext = null) {
425
657
  const time = _EveSpaceObject.#GetContextValue(updateContext, "GetTime", "currentTime", "time");
426
658
  this.UpdateWorldTransform(time);
@@ -457,6 +689,11 @@ new class extends _identity {
457
689
  this.impactOverlay?.UpdateSyncronous?.(updateContext, this);
458
690
  return true;
459
691
  }
692
+
693
+ /**
694
+ * 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.
695
+ * @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.
696
+ */
460
697
  UpdateAsyncronous(updateContext = null) {
461
698
  if (!this.update) {
462
699
  return 0;
@@ -467,6 +704,42 @@ new class extends _identity {
467
704
  controller?.Update?.(frequency);
468
705
  }
469
706
 
707
+ // Carbon cpp:626-663: the persistent buffers are invalidated once per
708
+ // frame, then the shader data is prepared and copied into both records.
709
+ this.#vsData.Invalidate();
710
+ this.#psData.Invalidate();
711
+ const previousActivationStrength = this.spaceObjectShipData[1];
712
+ this.PrepareShaderData(updateContext);
713
+ if (previousActivationStrength !== this.spaceObjectShipData[1]) {
714
+ this.SetControllerVariable?.("ActivationStrength", this.spaceObjectShipData[1]);
715
+ }
716
+ this.#psData.Set("shipData", this.spaceObjectShipData);
717
+ this.#vsData.Set("shipData", this.spaceObjectShipData);
718
+ // m_psData.customData is script/SOF-driven; the model field is its author.
719
+ this.#psData.Set("customData", this.customShaderData);
720
+ // Both records carry the same two matrices; each is written from the
721
+ // LOGICAL transform, which produces the bytes Carbon's `m_psData.x =
722
+ // m_vsData.x` copy of the already-transposed value produces.
723
+ this.#vsData.SetAndTranspose("worldTransform", this.worldTransform);
724
+ this.#vsData.SetAndTranspose("invWorldTransform", this.inverseWorldTransform);
725
+ this.#psData.SetAndTranspose("worldTransform", this.worldTransform);
726
+ this.#psData.SetAndTranspose("invWorldTransform", this.inverseWorldTransform);
727
+ const shapeCenter = _EveSpaceObject.#shapeCenterScratch;
728
+ const shapeRadius = _EveSpaceObject.#shapeRadiusScratch;
729
+ this.GetShapeEllipsoid(shapeCenter, shapeRadius);
730
+ this.#vsData.Set("ellpsoidRadii", [shapeRadius[0], shapeRadius[1], shapeRadius[2], 0]);
731
+ this.#vsData.Set("ellpsoidCenter", [shapeCenter[0], shapeCenter[1], shapeCenter[2], 0]);
732
+ if (this.impactOverlay) {
733
+ this.#psData.Set("impactDataOffset", [this.impactOverlay.GetDataTextureOffset?.() ?? 0]);
734
+ }
735
+ for (let slot = 0; slot < _EveSpaceObject.CUSTOM_MASK_MAX; slot++) {
736
+ if (this.customMasks.length > slot) {
737
+ this.customMasks[slot]?.FillPerObjectData?.(slot, this.#vsData, this.#psData);
738
+ } else {
739
+ _EveCustomMask.ZeroPerObjectData(slot, this.#vsData, this.#psData);
740
+ }
741
+ }
742
+
470
743
  // Object-level curve sets update only on frames the sync-side LOD gate
471
744
  // stamped, receiving the context time as BOTH realTime and simTime
472
745
  // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==
@@ -496,9 +769,9 @@ new class extends _identity {
496
769
  return frequency;
497
770
  }
498
771
 
499
- /**
500
- * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards
501
- * visibility to the explicitly owned visual branches.
772
+ /**
773
+ * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards
774
+ * visibility to the explicitly owned visual branches.
502
775
  */
503
776
  UpdateVisibility(updateContext = null, _parentTransform = _EveSpaceObject.#identityTransform) {
504
777
  this.isVisible = false;
@@ -523,8 +796,15 @@ new class extends _identity {
523
796
  this.#isMeshVisible = true;
524
797
  }
525
798
  }
799
+
800
+ // Bones so a bone-parented attachment's bounds follow its bone, which is
801
+ // what drives the per-bone AABB union (Carbon BoundingBox.cpp:815-833).
802
+ const {
803
+ bones,
804
+ boneCount
805
+ } = getBoneList(this.animationUpdater);
526
806
  for (const attachment of this.attachments) {
527
- if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0)) {
807
+ if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, bones, boneCount)) {
528
808
  this.#isMeshVisible = true;
529
809
  this.isVisible = true;
530
810
  }
@@ -587,10 +867,10 @@ new class extends _identity {
587
867
  return out;
588
868
  }
589
869
 
590
- /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated
591
- * attachments recurse, the impact overlay contributes, the hull mesh delegates
592
- * per batch type, and TRANSPARENT routes through the distance-sorted area
593
- * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is
870
+ /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated
871
+ * attachments recurse, the impact overlay contributes, the hull mesh delegates
872
+ * per batch type, and TRANSPARENT routes through the distance-sorted area
873
+ * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is
594
874
  * deferred with the overlay realization work. */
595
875
  GetBatches(batches, batchType, perObjectData, reason, renderContext = null) {
596
876
  if (!this.mesh) return false;
@@ -625,6 +905,13 @@ new class extends _identity {
625
905
  // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come
626
906
  // from the geometry resource when it exposes them; a failed lookup keeps
627
907
  // Carbon's origin-center fallback.
908
+
909
+ /**
910
+ * Commits the mesh's transparent areas back-to-front, ordering them by the
911
+ * squared distance from the view position to each area's world-space
912
+ * bounding-box center and falling back to the object origin when the geometry
913
+ * resource cannot supply a box.
914
+ */
628
915
  #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext) {
629
916
  const geometry = this.mesh.GetGeometryResource?.() ?? null;
630
917
  const viewPosition = renderContext?.GetViewPosition?.();
@@ -655,10 +942,10 @@ new class extends _identity {
655
942
  }
656
943
  }
657
944
 
658
- /** Rebuilds the cached overlay/shadow area-block lists from the current mesh
659
- * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by
660
- * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +
661
- * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the
945
+ /** Rebuilds the cached overlay/shadow area-block lists from the current mesh
946
+ * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by
947
+ * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +
948
+ * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the
662
949
  * shadow list groups OPAQUE areas by shared material. All coalesced. */
663
950
  RebuildCachedData() {
664
951
  this.ReleaseCachedData();
@@ -677,6 +964,11 @@ new class extends _identity {
677
964
  }
678
965
  this.#cachedAreaBlocksBuilt = true;
679
966
  }
967
+
968
+ /**
969
+ * Drops the cached overlay and shadow area-block lists so the next batch call
970
+ * rebuilds them from the current mesh.
971
+ */
680
972
  ReleaseCachedData() {
681
973
  for (const blocks of this.#overlayMeshAreaBlocks) {
682
974
  blocks.length = 0;
@@ -684,14 +976,68 @@ new class extends _identity {
684
976
  this.#shadowMeshOpaqueAreas.length = 0;
685
977
  this.#cachedAreaBlocksBuilt = false;
686
978
  }
979
+
980
+ /**
981
+ * Rebuilds the cached area blocks on first use when a mesh is attached; Carbon
982
+ * instead rebuilds them from the geometry-resource load callback.
983
+ */
687
984
  #EnsureCachedAreaBlocks() {
688
985
  if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();
689
986
  }
690
987
 
691
- /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per
692
- * cached shared-material OPAQUE area block, using the area's own material.
693
- * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the
694
- * engine via the geometry source descriptor, so shadowPixelSize travels unused
988
+ /**
989
+ * Carbon EveSpaceObject2::GetPickingBatches (cpp:3645-3675): collects the
990
+ * geometry a pick pass should test, by mask. It is ordinary batch collection
991
+ * - the pick itself is an engine pass that renders these and reads IDs back.
992
+ *
993
+ * The OPAQUE bit deliberately pulls in the transparent and additive OVERLAY
994
+ * effects too, so a cloaking hull stays pickable.
995
+ *
996
+ * @param {Object} batches - the picking accumulator
997
+ * @param {Number} pickTypes - a Tr2PickType mask
998
+ * @param {Object} perObjectData - this hull's per-object record
999
+ */
1000
+ GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null) {
1001
+ if (pickTypes & Tr2PickType.PICK_TYPE_PICKING) {
1002
+ this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);
1003
+ }
1004
+ if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE) {
1005
+ this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);
1006
+ this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);
1007
+ this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_TRANSPARENT, this.mesh);
1008
+ this.GetBatchesFromOverlayVector(batches, perObjectData, TriBatchType.TRIBATCHTYPE_ADDITIVE, this.mesh);
1009
+ }
1010
+ if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT) {
1011
+ // Carbon takes the mesh's OWN areas here rather than going through
1012
+ // GetBatches, and returns early when the mesh is absent or hidden - so a
1013
+ // hidden mesh suppresses the transparent pass only, not the ones above.
1014
+ if (!this.mesh || this.mesh.display === false) {
1015
+ return true;
1016
+ }
1017
+ for (const batchType of [TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE]) {
1018
+ const areas = this.mesh.GetAreas?.(batchType);
1019
+ if (areas) {
1020
+ this.mesh.GetBatches?.(batches, areas, perObjectData);
1021
+ }
1022
+ }
1023
+ }
1024
+ return true;
1025
+ }
1026
+
1027
+ /**
1028
+ * Carbon EveSpaceObject2::GetID (cpp:3640-3643): a picked area resolves to
1029
+ * the hull itself, so the area index is deliberately ignored.
1030
+ * @param {Number} [_areaID] - the picked area, unused by this class
1031
+ * @returns {EveSpaceObject2} this
1032
+ */
1033
+ GetID(_areaID = 0) {
1034
+ return this;
1035
+ }
1036
+
1037
+ /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per
1038
+ * cached shared-material OPAQUE area block, using the area's own material.
1039
+ * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the
1040
+ * engine via the geometry source descriptor, so shadowPixelSize travels unused
695
1041
  * until engine LOD selection consumes it. */
696
1042
  GetShadowBatches(batches, perObjectData, _shadowPixelSize) {
697
1043
  if (!this.mesh || this.mesh.display === false) return false;
@@ -714,10 +1060,10 @@ new class extends _identity {
714
1060
  return committed;
715
1061
  }
716
1062
 
717
- /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the
718
- * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at
719
- * maximum priority; each displayed overlay effect draws its per-batch-type
720
- * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything
1063
+ /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the
1064
+ * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at
1065
+ * maximum priority; each displayed overlay effect draws its per-batch-type
1066
+ * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything
721
1067
  * else -> TYPE_ALL). */
722
1068
  GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh) {
723
1069
  const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;
@@ -735,7 +1081,7 @@ new class extends _identity {
735
1081
  for (const overlay of this.overlayEffects) {
736
1082
  const effects = this.#OverlayEffectsFor(overlay, batchType);
737
1083
  if (!effects) continue;
738
- const overlayType = batchType === TriBatchType.TRIBATCHTYPE_OPAQUE ? OVERLAY_TYPE_OPAQUEONLY : OVERLAY_TYPE_ALL;
1084
+ const overlayType = overlay.GetType(batchType);
739
1085
  const blocks = this.#overlayMeshAreaBlocks[overlayType];
740
1086
  for (const effect of effects) {
741
1087
  for (const block of blocks) {
@@ -745,6 +1091,12 @@ new class extends _identity {
745
1091
  }
746
1092
  return (batches.GetBatchCount?.() ?? 0) > committedBefore;
747
1093
  }
1094
+
1095
+ /**
1096
+ * Builds and commits one render batch drawing a single cached area block with
1097
+ * the given material and optional priority, skipping the block when the
1098
+ * material yields no valid batch.
1099
+ */
748
1100
  #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority) {
749
1101
  const batch = new Tr2RenderBatch();
750
1102
  batch.SetMaterial(material);
@@ -755,35 +1107,34 @@ new class extends _identity {
755
1107
  batches.Commit(batch);
756
1108
  }
757
1109
 
758
- // EveMeshOverlayEffect::GetEffects (display-gated, per batch type). Prefers a
759
- // promoted method surface; falls back to the generated class's fields.
1110
+ // EveMeshOverlayEffect::GetEffects (display-gated, per batch type).
1111
+
1112
+ /**
1113
+ * Returns an overlay effect's display-gated effect list for a batch type, or
1114
+ * null when it contributes none.
1115
+ */
760
1116
  #OverlayEffectsFor(overlay, batchType) {
761
- if (!overlay) return null;
762
- if (typeof overlay.GetEffects === "function") return overlay.GetEffects(batchType) ?? null;
763
- if (overlay.display === false) return null;
764
- switch (batchType) {
765
- case TriBatchType.TRIBATCHTYPE_OPAQUE:
766
- return overlay.opaqueEffects ?? null;
767
- case TriBatchType.TRIBATCHTYPE_DECAL:
768
- return overlay.decalEffects ?? null;
769
- case TriBatchType.TRIBATCHTYPE_TRANSPARENT:
770
- return overlay.transparentEffects ?? null;
771
- case TriBatchType.TRIBATCHTYPE_ADDITIVE:
772
- return overlay.additiveEffects ?? null;
773
- case TriBatchType.TRIBATCHTYPE_DISTORTION:
774
- return overlay.distortionEffects ?? null;
775
- default:
776
- return null;
777
- }
1117
+ return overlay?.GetEffects?.(batchType) ?? null;
778
1118
  }
1119
+
1120
+ /**
1121
+ * Reports whether the hull mesh has transparent areas or any overlay effect
1122
+ * does, which tells the renderer to route this object through the sorted
1123
+ * transparent pass.
1124
+ */
779
1125
  HasTransparentBatches() {
780
1126
  if (!this.mesh) return false;
781
1127
  if ((this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;
782
1128
  for (const overlay of this.overlayEffects) {
783
- if (overlay?.HasTransparentArea?.() ?? (overlay?.transparentEffects?.length ?? 0) > 0) return true;
1129
+ if (overlay?.HasTransparentArea?.()) return true;
784
1130
  }
785
1131
  return false;
786
1132
  }
1133
+
1134
+ /**
1135
+ * Returns the distance from the render context's view position to the hull
1136
+ * world translation, used to order transparent renderables back-to-front.
1137
+ */
787
1138
  GetSortValue(renderContext = null) {
788
1139
  const viewPosition = renderContext?.GetViewPosition?.();
789
1140
  const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];
@@ -792,14 +1143,25 @@ new class extends _identity {
792
1143
  return Math.hypot(x, y, z);
793
1144
  }
794
1145
 
795
- /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,
796
- * which calls back into the object at upload time; the GPU-free record carries
797
- * the same live object reference for the engine serializer (the space-object
1146
+ /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,
1147
+ * which calls back into the object at upload time; the GPU-free record carries
1148
+ * the same live object reference for the engine serializer (the space-object
798
1149
  * Main profile) to pull current values at realization. */
799
- GetPerObjectData(accumulator = null) {
800
- const data = typeof accumulator?.Allocate === "function" ? accumulator.Allocate(Tr2PerObjectData) : new Tr2PerObjectData();
801
- data.object = this;
802
- return data;
1150
+ GetPerObjectData(_accumulator = null) {
1151
+ // Carbon cpp:1437-1445: the bone ring is uploaded and its OFFSETS stamped
1152
+ // into the record, then a pooled handle referencing the two persistent
1153
+ // buffers is returned. The offsets are GPU addresses with no CPU
1154
+ // derivation, so they stay at their zero default here; the bone count is
1155
+ // CPU-known and is written.
1156
+ const boneCount = this.animationUpdater?.IsInitialized?.() ? this.animationUpdater.GetMeshBoneCount?.() ?? 0 : null;
1157
+ if (boneCount !== null) {
1158
+ this.#vsData.SetIndex("boneOffsets", 2, [boneCount]);
1159
+ }
1160
+ this.#vsData.Set("customData", this.#psData.Get("customData"));
1161
+ return {
1162
+ vs: this.#vsData,
1163
+ ps: this.#psData
1164
+ };
803
1165
  }
804
1166
 
805
1167
  /** Carbon forwards the shadow pass to the same per-object record. */
@@ -807,34 +1169,41 @@ new class extends _identity {
807
1169
  return this.GetPerObjectData(accumulator);
808
1170
  }
809
1171
 
810
- /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only
811
- * (no lights-empty early-out, unlike EveChildMesh), then per light
812
- * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by
813
- * SetBrightnessMultiplier(m_activationStrength) - the order is contract:
814
- * the submission uses the multiplier stamped on the PREVIOUS pass (first
815
- * pass uses the Tr2Light default 1) - one frame of activation-strength
816
- * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is
1172
+ /** Carbon EveSpaceObject2::GetLights (cpp:3536-3555): display gate only
1173
+ * (no lights-empty early-out, unlike EveChildMesh), then per light
1174
+ * AddLight(manager, worldTransform, 1, bones, boneCount) FOLLOWED by
1175
+ * SetBrightnessMultiplier(m_activationStrength) - the order is contract:
1176
+ * the submission uses the multiplier stamped on the PREVIOUS pass (first
1177
+ * pass uses the Tr2Light default 1) - one frame of activation-strength
1178
+ * lag, preserved verbatim. cpp:3554's dead `DisplayChildren()` local is
817
1179
  * not ported. */
818
1180
  GetLights(lightManager) {
819
1181
  if (!this.display) {
820
1182
  return;
821
1183
  }
1184
+
1185
+ // cpp:3545-3547 - Tr2GrannyAnimationUtils::GetBoneList, so a bone-parented
1186
+ // light is placed by its bone rather than by the object transform alone.
1187
+ const {
1188
+ bones,
1189
+ boneCount
1190
+ } = getBoneList(this.animationUpdater);
822
1191
  for (const light of this.lights) {
823
- light?.AddLight?.(lightManager, this.worldTransform, 1, null, 0);
1192
+ light?.AddLight?.(lightManager, this.worldTransform, 1, bones, boneCount);
824
1193
  light?.SetBrightnessMultiplier?.(this.activationStrength);
825
1194
  }
826
1195
  }
827
1196
 
828
- /** Carbon EveSpaceObject2::IsCastingShadow (cpp:1940-1990) culls against the
829
- * camera/shadow frustums; awaits the TriFrustum port (visibility pass).
1197
+ /** Carbon EveSpaceObject2::IsCastingShadow (cpp:1940-1990) culls against the
1198
+ * camera/shadow frustums; awaits the TriFrustum port (visibility pass).
830
1199
  * Presence satisfies the "ShadowCaster" duck contract. */
831
1200
  IsCastingShadow(..._args) {
832
1201
  throw new Error("EveSpaceObject2.IsCastingShadow is not implemented in CarbonEngineJS.");
833
1202
  }
834
1203
 
835
- /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its
836
- * own components and its children with the scene registration container "so
837
- * we don't have to traverse the tree every frame". RegisterAudioGeometry
1204
+ /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its
1205
+ * own components and its children with the scene registration container "so
1206
+ * we don't have to traverse the tree every frame". RegisterAudioGeometry
838
1207
  * (cpp:3572-3575) is audio-engine-owned and unported. Gate m_display. */
839
1208
  RegisterComponents() {
840
1209
  const registry = this.GetComponentRegistry();
@@ -857,10 +1226,10 @@ new class extends _identity {
857
1226
  }
858
1227
  }
859
1228
 
860
- /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards
861
- * the un-registration to the children only - EveEntity::UnRegister already
862
- * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does
863
- * not re-check display. UnregisterAudioGeometry (cpp:3617) is
1229
+ /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards
1230
+ * the un-registration to the children only - EveEntity::UnRegister already
1231
+ * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does
1232
+ * not re-check display. UnregisterAudioGeometry (cpp:3617) is
864
1233
  * audio-engine-owned and unported. */
865
1234
  UnRegisterComponents() {
866
1235
  const registry = this.GetComponentRegistry();
@@ -873,21 +1242,57 @@ new class extends _identity {
873
1242
  }
874
1243
  }
875
1244
  }
1245
+
1246
+ /**
1247
+ * Reports whether children and effect children should be shown; always true on
1248
+ * the base hull, subclasses gate it on activation state.
1249
+ */
876
1250
  DisplayChildren() {
877
1251
  return true;
878
1252
  }
1253
+
1254
+ /**
1255
+ * Returns the transform placement observers are attached to - the live hull
1256
+ * world transform.
1257
+ */
879
1258
  GetObserverTransform() {
880
1259
  return this.worldTransform;
881
1260
  }
1261
+
1262
+ /**
1263
+ * Returns the transform effect children are placed against - the live hull
1264
+ * world transform, not a copy.
1265
+ */
882
1266
  GetLocalToWorldTransform() {
883
1267
  return this.worldTransform;
884
1268
  }
1269
+
1270
+ /** Carbon's non-updating model-center query. */
1271
+ GetModelCenterWorldPosition(out) {
1272
+ vec3.transformMat4(out, this.boundingSphereCenter, this.worldTransform);
1273
+ }
1274
+
1275
+ /**
1276
+ * Returns the live curve-sampled ball position; the array is the object's own
1277
+ * field and is rewritten by the next transform update.
1278
+ */
885
1279
  GetWorldPosition() {
886
1280
  return this.worldPosition;
887
1281
  }
1282
+
1283
+ /**
1284
+ * Returns the live curve-sampled ball rotation, which excludes the model
1285
+ * rotation curve; the quaternion is the object's own field and is rewritten by
1286
+ * the next transform update.
1287
+ */
888
1288
  GetWorldRotation() {
889
1289
  return this.worldRotation;
890
1290
  }
1291
+
1292
+ /**
1293
+ * Finds a sound emitter by observer name on this hull and then recursively in
1294
+ * the effect children, returning null when no emitter carries the name.
1295
+ */
891
1296
  FindSoundEmitter(name) {
892
1297
  const target = String(name ?? "");
893
1298
  for (const observer of this.observers) {
@@ -903,6 +1308,11 @@ new class extends _identity {
903
1308
  }
904
1309
  return null;
905
1310
  }
1311
+
1312
+ /**
1313
+ * Sets the mute flag and pushes it to every effect child and placement
1314
+ * observer.
1315
+ */
906
1316
  SetMute(mute) {
907
1317
  this.mute = !!mute;
908
1318
  for (const child of this.effectChildren) {
@@ -913,19 +1323,19 @@ new class extends _identity {
913
1323
  }
914
1324
  }
915
1325
 
916
- /**
917
- * Plays an animation with explicit loop, start, and speed settings
918
- * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).
1326
+ /**
1327
+ * Plays an animation with explicit loop, start, and speed settings
1328
+ * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).
919
1329
  */
920
1330
  PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true) {
921
1331
  this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);
922
1332
  }
923
1333
 
924
- /**
925
- * Calculates the skinned bounding box under a transform (CMF path: the
926
- * local box corners transformed with perspective divide). The granny path
927
- * is unported. Returns an inverted-empty { min, max } box when dynamic
928
- * bounds are disabled, as Carbon's BoundingBoxInitialize does.
1334
+ /**
1335
+ * Calculates the skinned bounding box under a transform (CMF path: the
1336
+ * local box corners transformed with perspective divide). The granny path
1337
+ * is unported. Returns an inverted-empty { min, max } box when dynamic
1338
+ * bounds are disabled, as Carbon's BoundingBoxInitialize does.
929
1339
  */
930
1340
  CalculateSkinnedBoundingBoxFromTransform(transform) {
931
1341
  const min = vec3.fromValues(Infinity, Infinity, Infinity);
@@ -949,10 +1359,10 @@ new class extends _identity {
949
1359
  };
950
1360
  }
951
1361
 
952
- /**
953
- * Calculates the skinned bounding sphere (CMF path: the current bounding
954
- * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds
955
- * are disabled.
1362
+ /**
1363
+ * Calculates the skinned bounding sphere (CMF path: the current bounding
1364
+ * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds
1365
+ * are disabled.
956
1366
  */
957
1367
  CalculateSkinnedBoundingSphere(out = vec4.create()) {
958
1368
  if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.()) {
@@ -962,30 +1372,30 @@ new class extends _identity {
962
1372
  return vec4.set(out, 0, 0, 0, -1);
963
1373
  }
964
1374
 
965
- /**
966
- * Clears all impact and damage effects on the impact overlay.
1375
+ /**
1376
+ * Clears all impact and damage effects on the impact overlay.
967
1377
  */
968
1378
  ClearImpactDamage() {
969
1379
  this.impactOverlay?.Clear?.();
970
1380
  }
971
1381
 
972
- /**
973
- * Clears all animations on the animation updater.
1382
+ /**
1383
+ * Clears all animations on the animation updater.
974
1384
  */
975
1385
  ClearAnimations() {
976
1386
  this.animationUpdater?.ClearAnimations?.();
977
1387
  }
978
1388
 
979
- /**
980
- * Creates an impact facing a position on the closest facing damage locator.
1389
+ /**
1390
+ * Creates an impact facing a position on the closest facing damage locator.
981
1391
  */
982
1392
  CreateImpactFromPosition(position, direction, lifeTime, size) {
983
1393
  const closestDamageLocator = this.#GetClosestLocatorIndex(position, _EveSpaceObject.#damageLocatorSetName);
984
1394
  return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);
985
1395
  }
986
1396
 
987
- /**
988
- * Creates an impact effect on a damage locator through the impact overlay.
1397
+ /**
1398
+ * Creates an impact effect on a damage locator through the impact overlay.
989
1399
  */
990
1400
  CreateImpact(damageLocatorIndex, direction, lifeTime, size) {
991
1401
  if (this.impactOverlay) {
@@ -994,16 +1404,16 @@ new class extends _identity {
994
1404
  return -1;
995
1405
  }
996
1406
 
997
- /**
998
- * Ends the current animation on the animation updater.
1407
+ /**
1408
+ * Ends the current animation on the animation updater.
999
1409
  */
1000
1410
  EndAnimation() {
1001
1411
  this.animationUpdater?.EndAnimation?.();
1002
1412
  }
1003
1413
 
1004
- /**
1005
- * Freezes LOD selection at the current mesh and marks decal geometry
1006
- * frozen.
1414
+ /**
1415
+ * Freezes LOD selection at the current mesh and marks decal geometry
1416
+ * frozen.
1007
1417
  */
1008
1418
  FreezeHighDetailMesh() {
1009
1419
  this.#allowLodSelection = false;
@@ -1012,31 +1422,31 @@ new class extends _identity {
1012
1422
  }
1013
1423
  }
1014
1424
 
1015
- /**
1016
- * Gets the number of damage locators on this object.
1425
+ /**
1426
+ * Gets the number of damage locators on this object.
1017
1427
  */
1018
1428
  GetDamageLocatorCount() {
1019
1429
  return this.GetLocatorCount(_EveSpaceObject.#damageLocatorSetName);
1020
1430
  }
1021
1431
 
1022
- /**
1023
- * Gets the number of locators in a named locator set.
1432
+ /**
1433
+ * Gets the number of locators in a named locator set.
1024
1434
  */
1025
1435
  GetLocatorCount(locatorSetName) {
1026
1436
  return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;
1027
1437
  }
1028
1438
 
1029
- /**
1030
- * Gets the first locator list whose set has the requested Carbon name.
1031
- * The returned list remains owned by the locator set.
1439
+ /**
1440
+ * Gets the first locator list whose set has the requested Carbon name.
1441
+ * The returned list remains owned by the locator set.
1032
1442
  */
1033
1443
  GetLocatorsForSet(locatorSetName) {
1034
1444
  return this.#GetLocatorsForSet(locatorSetName);
1035
1445
  }
1036
1446
 
1037
- /**
1038
- * Gets the closest locator in a set to a world position, ignoring locator
1039
- * facing. Returns -1 when the set is missing or empty.
1447
+ /**
1448
+ * Gets the closest locator in a set to a world position, ignoring locator
1449
+ * facing. Returns -1 when the set is missing or empty.
1040
1450
  */
1041
1451
  GetCloseLocatorIndex(position, locatorSetName) {
1042
1452
  const locators = this.#GetLocatorsForSet(locatorSetName);
@@ -1059,19 +1469,19 @@ new class extends _identity {
1059
1469
  return closestIndex;
1060
1470
  }
1061
1471
 
1062
- /**
1063
- * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex
1064
- * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not
1065
- * script-exposed.
1472
+ /**
1473
+ * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex
1474
+ * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not
1475
+ * script-exposed.
1066
1476
  */
1067
1477
  GetGoodLocatorIndex(position, locatorSetName) {
1068
1478
  return this.GetCloseLocatorIndex(position, locatorSetName);
1069
1479
  }
1070
1480
 
1071
- /**
1072
- * Gets the local direction of an indexed damage locator, (0,0,0) for
1073
- * indices out of range (Carbon script GetDamageLocatorDirection maps to
1074
- * GetDamageLocatorDirectionLocal).
1481
+ /**
1482
+ * Gets the local direction of an indexed damage locator, (0,0,0) for
1483
+ * indices out of range (Carbon script GetDamageLocatorDirection maps to
1484
+ * GetDamageLocatorDirectionLocal).
1075
1485
  */
1076
1486
  GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create()) {
1077
1487
  const targetableCall = typeof inWorldSpaceOrOut === "boolean";
@@ -1191,7 +1601,7 @@ new class extends _identity {
1191
1601
  vec3.transformMat4(_EveSpaceObject.#rayOrigin, posPrev, this.inverseWorldTransform);
1192
1602
  vec3.transformMat4(_EveSpaceObject.#rayEnd, posNow, this.inverseWorldTransform);
1193
1603
  vec3.subtract(_EveSpaceObject.#rayDirection, _EveSpaceObject.#rayEnd, _EveSpaceObject.#rayOrigin);
1194
- this.#GetShapeEllipsoid(_EveSpaceObject.#ellipsoidCenter, _EveSpaceObject.#ellipsoidRadii);
1604
+ this.GetShapeEllipsoid(_EveSpaceObject.#ellipsoidCenter, _EveSpaceObject.#ellipsoidRadii);
1195
1605
  const t = _EveSpaceObject.#IntersectEllipsoidRay(out, _EveSpaceObject.#ellipsoidCenter, _EveSpaceObject.#ellipsoidRadii, _EveSpaceObject.#rayOrigin, _EveSpaceObject.#rayDirection);
1196
1606
  if (t !== null && t >= -1 && t <= 1) {
1197
1607
  vec3.transformMat4(out, out, this.worldTransform);
@@ -1209,9 +1619,9 @@ new class extends _identity {
1209
1619
  return this.impactOverlay?.UpdateImpact?.(out, direction, impactIndex) ?? false;
1210
1620
  }
1211
1621
 
1212
- /**
1213
- * Gets the local position of an indexed damage locator, (0,0,0) for
1214
- * indices out of range.
1622
+ /**
1623
+ * Gets the local position of an indexed damage locator, (0,0,0) for
1624
+ * indices out of range.
1215
1625
  */
1216
1626
  GetDamageLocator(index, out = vec3.create()) {
1217
1627
  const locators = this.#GetLocatorsForSet(_EveSpaceObject.#damageLocatorSetName);
@@ -1223,9 +1633,9 @@ new class extends _identity {
1223
1633
  return out;
1224
1634
  }
1225
1635
 
1226
- /**
1227
- * Gets the world-space position of an indexed damage locator, (0,0,0) for
1228
- * indices out of range (returned untransformed, as Carbon does).
1636
+ /**
1637
+ * Gets the world-space position of an indexed damage locator, (0,0,0) for
1638
+ * indices out of range (returned untransformed, as Carbon does).
1229
1639
  */
1230
1640
  GetTransformedDamageLocator(index, out = vec3.create()) {
1231
1641
  const locators = this.#GetLocatorsForSet(_EveSpaceObject.#damageLocatorSetName);
@@ -1237,18 +1647,18 @@ new class extends _identity {
1237
1647
  return vec3.transformMat4(out, out, this.worldTransform);
1238
1648
  }
1239
1649
 
1240
- /**
1241
- * Checks whether this object is in impostor mode. The impostor system that
1242
- * raises the flag is unported, so this reports the default until then.
1650
+ /**
1651
+ * Checks whether this object is in impostor mode. The impostor system that
1652
+ * raises the flag is unported, so this reports the default until then.
1243
1653
  */
1244
1654
  IsImpostor() {
1245
1655
  return this.#impostorMode;
1246
1656
  }
1247
1657
 
1248
- /**
1249
- * Gets a locator position from a named set. Out-of-range or missing-set
1250
- * queries return the world translation in world space and (0,0,0) in
1251
- * object space, as Carbon does.
1658
+ /**
1659
+ * Gets a locator position from a named set. Out-of-range or missing-set
1660
+ * queries return the world translation in world space and (0,0,0) in
1661
+ * object space, as Carbon does.
1252
1662
  */
1253
1663
  GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create()) {
1254
1664
  const locators = this.#GetLocatorsForSet(locatorSetName);
@@ -1266,9 +1676,9 @@ new class extends _identity {
1266
1676
  return out;
1267
1677
  }
1268
1678
 
1269
- /**
1270
- * Gets a locator direction from a named set. Out-of-range or missing-set
1271
- * queries return (0,1,0), as Carbon does.
1679
+ /**
1680
+ * Gets a locator direction from a named set. Out-of-range or missing-set
1681
+ * queries return (0,1,0), as Carbon does.
1272
1682
  */
1273
1683
  GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create()) {
1274
1684
  const locators = this.#GetLocatorsForSet(locatorSetName);
@@ -1282,6 +1692,11 @@ new class extends _identity {
1282
1692
  }
1283
1693
  return out;
1284
1694
  }
1695
+
1696
+ /**
1697
+ * Raises a named controller event on this hull's controllers and forwards it
1698
+ * to the effect children and overlay effects.
1699
+ */
1285
1700
  HandleControllerEvent(name) {
1286
1701
  const eventName = String(name ?? "");
1287
1702
  for (const controller of this.controllers) {
@@ -1295,24 +1710,24 @@ new class extends _identity {
1295
1710
  }
1296
1711
  }
1297
1712
 
1298
- /**
1299
- * Plays an animation once, replacing the current one
1300
- * (Carbon script PlayAnimation maps to PlayAnimationOnce).
1713
+ /**
1714
+ * Plays an animation once, replacing the current one
1715
+ * (Carbon script PlayAnimation maps to PlayAnimationOnce).
1301
1716
  */
1302
1717
  PlayAnimation(animName) {
1303
1718
  this.#PlayAnimation(animName, true, 1, 0, 1, true);
1304
1719
  }
1305
1720
 
1306
- /**
1307
- * Chains an animation once after the current one (Carbon ChainAnimation).
1721
+ /**
1722
+ * Chains an animation once after the current one (Carbon ChainAnimation).
1308
1723
  */
1309
1724
  ChainAnimation(animName) {
1310
1725
  this.#PlayAnimation(animName, false, 1, 0, 1, true);
1311
1726
  }
1312
1727
 
1313
- /**
1314
- * Chains an animation with explicit loop, start, and speed settings
1315
- * (Carbon ChainAnimationEx).
1728
+ /**
1729
+ * Chains an animation with explicit loop, start, and speed settings
1730
+ * (Carbon ChainAnimationEx).
1316
1731
  */
1317
1732
  ChainAnimationEx(animName, loopCount, start, speed) {
1318
1733
  this.#PlayAnimation(animName, false, loopCount, start, speed, true);
@@ -1321,13 +1736,18 @@ new class extends _identity {
1321
1736
  // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels
1322
1737
  // into the animation updater, which owns playback state; a missing updater
1323
1738
  // is a Carbon-faithful no-op.
1739
+
1740
+ /**
1741
+ * Forwards a playback request to the animation updater, which owns all
1742
+ * animation state; a hull without an updater does nothing, as in Carbon.
1743
+ */
1324
1744
  #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone) {
1325
1745
  this.animationUpdater?.PlayAnimation?.(String(animName ?? ""), replace, loopCount, delay, speed, clearWhenDone);
1326
1746
  }
1327
1747
 
1328
- /**
1329
- * Recalculates the authored bounding sphere from the mesh geometry
1330
- * resource. Fails when no mesh or ready geometry resource is attached.
1748
+ /**
1749
+ * Recalculates the authored bounding sphere from the mesh geometry
1750
+ * resource. Fails when no mesh or ready geometry resource is attached.
1331
1751
  */
1332
1752
  RebuildBoundingSphereInformation() {
1333
1753
  const mesh = this.mesh;
@@ -1357,6 +1777,11 @@ new class extends _identity {
1357
1777
  this.UpdateWorldBounds();
1358
1778
  return this;
1359
1779
  }
1780
+
1781
+ /**
1782
+ * Returns a plain-object snapshot of the controller variables currently
1783
+ * stamped on this hull.
1784
+ */
1360
1785
  GetControllerVariables() {
1361
1786
  return Object.fromEntries(this.#controllerVariables);
1362
1787
  }
@@ -1369,11 +1794,11 @@ new class extends _identity {
1369
1794
  return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;
1370
1795
  }
1371
1796
 
1372
- /**
1373
- * Gets a named locator's transform (Carbon script GetLocatorTransform maps
1374
- * to GetEveLocatorTransform): the identity for unknown names, the animated
1375
- * bone world transform when the animation updater resolves the name, else
1376
- * the authored locator transform.
1797
+ /**
1798
+ * Gets a named locator's transform (Carbon script GetLocatorTransform maps
1799
+ * to GetEveLocatorTransform): the identity for unknown names, the animated
1800
+ * bone world transform when the animation updater resolves the name, else
1801
+ * the authored locator transform.
1377
1802
  */
1378
1803
  GetLocatorTransform(name, out = mat4.create()) {
1379
1804
  const target = String(name ?? "");
@@ -1393,11 +1818,11 @@ new class extends _identity {
1393
1818
  return mat4.copy(out, locator.GetTransform());
1394
1819
  }
1395
1820
 
1396
- /**
1397
- * Gets the local axis-aligned bounding box: dynamic skinned bounds when
1398
- * enabled, else the mesh box, else the cached box (at worst it lags one
1399
- * frame). With out arguments it fills them and returns true; without, it
1400
- * returns { min, max }.
1821
+ /**
1822
+ * Gets the local axis-aligned bounding box: dynamic skinned bounds when
1823
+ * enabled, else the mesh box, else the cached box (at worst it lags one
1824
+ * frame). With out arguments it fills them and returns true; without, it
1825
+ * returns { min, max }.
1401
1826
  */
1402
1827
  GetLocalBoundingBox(minBounds, maxBounds) {
1403
1828
  const min = vec3.create();
@@ -1429,7 +1854,7 @@ new class extends _identity {
1429
1854
  /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */
1430
1855
  GetWorldBoundingBox(minBounds, maxBounds) {
1431
1856
  box3.fromBounds(_EveSpaceObject.#localBox, this.#localAabbMin, this.#localAabbMax);
1432
- _EveSpaceObject.#TransformBox(_EveSpaceObject.#worldBox, _EveSpaceObject.#localBox, this.worldTransform);
1857
+ box3.transformMat4(_EveSpaceObject.#worldBox, _EveSpaceObject.#localBox, this.worldTransform);
1433
1858
  const min = minBounds ?? vec3.create();
1434
1859
  const max = maxBounds ?? vec3.create();
1435
1860
  vec3.set(min, _EveSpaceObject.#worldBox[0], _EveSpaceObject.#worldBox[1], _EveSpaceObject.#worldBox[2]);
@@ -1446,9 +1871,9 @@ new class extends _identity {
1446
1871
  return !!geometryResource?.IsGood?.();
1447
1872
  }
1448
1873
 
1449
- /**
1450
- * Gets Carbon's realized world sphere, optionally accumulated with transform
1451
- * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.
1874
+ /**
1875
+ * Gets Carbon's realized world sphere, optionally accumulated with transform
1876
+ * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.
1452
1877
  */
1453
1878
  GetBoundingSphere(out = sph3.create(), query = 0) {
1454
1879
  if (!this.UpdateWorldBounds()) return false;
@@ -1484,9 +1909,9 @@ new class extends _identity {
1484
1909
  return this.#isInFrustum;
1485
1910
  }
1486
1911
 
1487
- /**
1488
- * Gets the bounding sphere center, preferring the dynamic skinned sphere
1489
- * when one is published.
1912
+ /**
1913
+ * Gets the bounding sphere center, preferring the dynamic skinned sphere
1914
+ * when one is published.
1490
1915
  */
1491
1916
  GetBoundingSphereCenter(out = vec3.create()) {
1492
1917
  if (this.#dynamicBoundingSphere[3] !== -1) {
@@ -1495,9 +1920,9 @@ new class extends _identity {
1495
1920
  return vec3.copy(out, this.boundingSphereCenter);
1496
1921
  }
1497
1922
 
1498
- /**
1499
- * Gets the model-scaled bounding sphere radius, preferring the dynamic
1500
- * skinned sphere when one is published.
1923
+ /**
1924
+ * Gets the model-scaled bounding sphere radius, preferring the dynamic
1925
+ * skinned sphere when one is published.
1501
1926
  */
1502
1927
  GetBoundingSphereRadius() {
1503
1928
  if (this.#dynamicBoundingSphere[3] !== -1) {
@@ -1506,9 +1931,9 @@ new class extends _identity {
1506
1931
  return this.modelScale * this.boundingSphereRadius;
1507
1932
  }
1508
1933
 
1509
- /**
1510
- * Gets the number of mesh-bound bones. Carbon dereferences the animation
1511
- * updater unchecked; CarbonEngineJS reports 0 when none is attached.
1934
+ /**
1935
+ * Gets the number of mesh-bound bones. Carbon dereferences the animation
1936
+ * updater unchecked; CarbonEngineJS reports 0 when none is attached.
1512
1937
  */
1513
1938
  GetBoneCount() {
1514
1939
  const updater = this.animationUpdater;
@@ -1523,6 +1948,12 @@ new class extends _identity {
1523
1948
  }
1524
1949
  return updater.GetMeshBindingBoneCount?.() ?? 0;
1525
1950
  }
1951
+
1952
+ /**
1953
+ * Pushes shield, armor and hull damage levels to the impact overlay and
1954
+ * mirrors them into the ShieldDamage, ArmorDamage and HullDamage controller
1955
+ * variables so bound effects follow.
1956
+ */
1526
1957
  SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true) {
1527
1958
  this.impactOverlay?.SetDamageState?.(shield, armor, hull, doCreateArmorImpacts);
1528
1959
  this.SetControllerVariable("ShieldDamage", shield);
@@ -1530,12 +1961,18 @@ new class extends _identity {
1530
1961
  this.SetControllerVariable("HullDamage", hull);
1531
1962
  }
1532
1963
 
1533
- /**
1534
- * Toggles a named impact-overlay animation (boosters, hardeners, ...).
1964
+ /**
1965
+ * Toggles a named impact-overlay animation (boosters, hardeners, ...).
1535
1966
  */
1536
1967
  SetImpactAnimation(name, enable, duration) {
1537
1968
  this.impactOverlay?.ToggleEffect?.(name, enable, duration);
1538
1969
  }
1970
+
1971
+ /**
1972
+ * Stores a controller variable on the hull and pushes it to the controllers,
1973
+ * effect children and overlay effects; the stored value is replayed onto
1974
+ * controllers and children added later.
1975
+ */
1539
1976
  SetControllerVariable(name, value) {
1540
1977
  const key = String(name ?? "");
1541
1978
  const next = Number(value);
@@ -1550,11 +1987,21 @@ new class extends _identity {
1550
1987
  overlay?.SetControllerVariable?.(key, next);
1551
1988
  }
1552
1989
  }
1990
+
1991
+ /**
1992
+ * Forwards a procedural-container variable to every effect child; the hull
1993
+ * itself keeps no copy.
1994
+ */
1553
1995
  SetProceduralContainerVariable(name, value) {
1554
1996
  for (const child of this.effectChildren) {
1555
1997
  child?.SetProceduralContainerVariable?.(name, value);
1556
1998
  }
1557
1999
  }
2000
+
2001
+ /**
2002
+ * Starts this hull's controllers and those of its effect children and overlay
2003
+ * effects.
2004
+ */
1558
2005
  StartControllers() {
1559
2006
  for (const controller of this.controllers) {
1560
2007
  controller?.Start?.();
@@ -1567,13 +2014,13 @@ new class extends _identity {
1567
2014
  }
1568
2015
  }
1569
2016
 
1570
- /**
1571
- * Applies bone and model transforms to locators and returns
1572
- * [position, rotation, boneIndex] tuples, as the Carbon script surface
1573
- * does (TransformLocators maps to PyTransformLocators). Accepts either
1574
- * locator records ({ position, direction, boneIndex }, Carbon's
1575
- * LocatorStructureList shape) or the same [position, rotation, boneIndex]
1576
- * tuple shape it returns.
2017
+ /**
2018
+ * Applies bone and model transforms to locators and returns
2019
+ * [position, rotation, boneIndex] tuples, as the Carbon script surface
2020
+ * does (TransformLocators maps to PyTransformLocators). Accepts either
2021
+ * locator records ({ position, direction, boneIndex }, Carbon's
2022
+ * LocatorStructureList shape) or the same [position, rotation, boneIndex]
2023
+ * tuple shape it returns.
1577
2024
  */
1578
2025
  TransformLocators(locators = []) {
1579
2026
  const result = [];
@@ -1601,6 +2048,12 @@ new class extends _identity {
1601
2048
 
1602
2049
  // Carbon Blue TransformLocator: bone-attached records pick up the mesh
1603
2050
  // bone matrix; without bone data the authored values pass through.
2051
+
2052
+ /**
2053
+ * Applies the mesh bone matrix to a locator position and rotation for
2054
+ * bone-attached locators; the authored values pass through unchanged when
2055
+ * there is no usable bone data.
2056
+ */
1604
2057
  #TransformLocator(position, rotation, boneIndex) {
1605
2058
  const updater = this.animationUpdater;
1606
2059
  if (boneIndex <= 0 || !updater?.IsInitialized?.()) {
@@ -1618,6 +2071,12 @@ new class extends _identity {
1618
2071
  // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()
1619
2072
  // origin (pure GetValueAt, no playback advance): translation adds, model
1620
2073
  // rotation rotates the position and pre-multiplies.
2074
+
2075
+ /**
2076
+ * Applies the model translation and rotation curves sampled at time 0 to a
2077
+ * locator position and rotation, matching Carbon's Blue locator surface, which
2078
+ * reads the curves without advancing playback.
2079
+ */
1621
2080
  #ApplyModelTransform(position, rotation) {
1622
2081
  if (this.modelTranslationCurve) {
1623
2082
  const translation = vec3.create();
@@ -1633,6 +2092,11 @@ new class extends _identity {
1633
2092
  }
1634
2093
 
1635
2094
  // Carbon GetLocatorsForSet: first set matching the name wins.
2095
+
2096
+ /**
2097
+ * Returns the locator list of the first locator set carrying the name, or null
2098
+ * when no set matches; the list stays owned by the locator set.
2099
+ */
1636
2100
  #GetLocatorsForSet(locatorSetName) {
1637
2101
  const target = String(locatorSetName ?? "");
1638
2102
  for (const set of this.locatorSets) {
@@ -1647,6 +2111,13 @@ new class extends _identity {
1647
2111
  // authored quaternion; bone-attached locators additionally apply the mesh
1648
2112
  // bone matrix. Carbon leaves the outputs untouched (caller-uninitialized)
1649
2113
  // when bone data is missing; CarbonEngineJS keeps the unskinned values.
2114
+
2115
+ /**
2116
+ * Writes a locator's object-space position and its direction, which is +Y
2117
+ * rotated by the authored quaternion, applying the mesh bone matrix for
2118
+ * bone-attached locators; where Carbon leaves the outputs untouched when bone
2119
+ * data is missing, this keeps the unskinned values.
2120
+ */
1650
2121
  #GetLocatorInObjectSpace(outPosition, outDirection, locator) {
1651
2122
  vec3.transformQuat(outDirection, _EveSpaceObject.#unitY, locator.direction);
1652
2123
  vec3.copy(outPosition, locator.position);
@@ -1665,6 +2136,12 @@ new class extends _identity {
1665
2136
 
1666
2137
  // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the
1667
2138
  // set is missing, -1 when no locator faces the position.
2139
+
2140
+ /**
2141
+ * Returns the index of the nearest locator in a named set that faces the given
2142
+ * world position - 0 when the set is missing, -1 when no locator faces the
2143
+ * position.
2144
+ */
1668
2145
  #GetClosestLocatorIndex(position, locatorSetName) {
1669
2146
  const locators = this.#GetLocatorsForSet(locatorSetName);
1670
2147
  if (!locators) {
@@ -1688,7 +2165,16 @@ new class extends _identity {
1688
2165
  }
1689
2166
  return closestIndex;
1690
2167
  }
1691
- #GetShapeEllipsoid(outCenter, outRadii) {
2168
+
2169
+ /**
2170
+ * Reports whether a locator faces a position, by testing that stepping the
2171
+ * object-space position back along the locator direction shortens it.
2172
+ */
2173
+
2174
+ /** Rotates a direction by a matrix's rotation basis, ignoring its translation. */
2175
+
2176
+ /** Carbon's authored-or-derived local shape ellipsoid query. */
2177
+ GetShapeEllipsoid(outCenter, outRadii) {
1692
2178
  if (this.shapeEllipsoidRadius[0] > 0) {
1693
2179
  vec3.copy(outCenter, this.shapeEllipsoidCenter);
1694
2180
  vec3.copy(outRadii, this.shapeEllipsoidRadius);
@@ -1706,12 +2192,67 @@ new class extends _identity {
1706
2192
  vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);
1707
2193
  }
1708
2194
 
2195
+ /**
2196
+ * Maps the negated dot product of a locator direction and an offset direction
2197
+ * onto Carbon's square-root fit score, the ranking used to pick a varied
2198
+ * damage locator.
2199
+ */
2200
+
2201
+ /**
2202
+ * Intersects a ray with an axis-aligned ellipsoid in the ellipsoid's own space and writes the hit point into out.
2203
+ * @returns {number|null} The ray parameter at the hit, or null when the ray is degenerate or misses.
2204
+ */
2205
+
2206
+ /** Reports whether a point lies inside an axis-aligned ellipsoid. */
2207
+
1709
2208
  // Mesh bone matrices come from the animation updater; only mat4-shaped
1710
2209
  // entries are usable.
1711
2210
 
1712
- // Avoid box3.transformMat4's legacy all-components-sum empty sentinel: a
1713
- // valid symmetric box such as [-1,-1,-1,1,1,1] has that same sum.
2211
+ /**
2212
+ * Unpacks one bone from the updater's palette into a mat4, or null when the
2213
+ * index is out of range.
2214
+ *
2215
+ * The palette is Carbon's storage - one contiguous Float4x3 buffer, stride
2216
+ * 12 - so a bone is expanded rather than borrowed. Carbon does the same at
2217
+ * every read site with TriMatrixCopyFrom3x4.
2218
+ */
2219
+
2220
+ /**
2221
+ * Replays every stored controller variable onto a newly added controller or
2222
+ * effect child through the named setter, so late additions start with the same
2223
+ * state.
2224
+ */
2225
+
2226
+ /**
2227
+ * Samples a curve into out through whichever of Update or GetValueAt it
2228
+ * exposes, writing the fallback when there is no curve and copying back curves
2229
+ * that return a new array instead of filling out.
2230
+ */
2231
+
2232
+ /**
2233
+ * Reads a numeric value from the update context, preferring a getter method
2234
+ * and falling back to the named properties, and yields 0 when nothing supplies
2235
+ * it.
2236
+ */
2237
+
2238
+ /**
2239
+ * Returns a world sphere's on-screen diameter in pixels from the frustum's
2240
+ * exact query, or 0 when the frustum does not expose it.
2241
+ */
2242
+
2243
+ /**
2244
+ * Returns a world sphere's on-screen diameter in pixels, preferring the
2245
+ * frustum's cheaper estimated query and falling back to the exact one, or 0
2246
+ * when the frustum exposes neither.
2247
+ */
2248
+
2249
+ /** Writes a center and radius into a caller-owned sph3. */
1714
2250
  }];
2251
+ CUSTOM_MASK_MAX = _EveCustomMask.CUSTOM_MASK_COUNT;
2252
+ SECONDARY_LIGHTING_RADIUS_CUTOFF_FACTOR = 0.3;
2253
+ #clipSphereCenterScratch = vec3.create();
2254
+ #shapeCenterScratch = vec3.create();
2255
+ #shapeRadiusScratch = vec3.create();
1715
2256
  #IsLocatorFacingPosition(locatorDirection, posInObjectSpace) {
1716
2257
  const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);
1717
2258
  return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);
@@ -1756,8 +2297,10 @@ new class extends _identity {
1756
2297
  }
1757
2298
  #GetBoneMatrix(updater, boneIndex) {
1758
2299
  const bones = updater.GetMeshBoneMatrixList?.();
1759
- const bone = bones?.[boneIndex];
1760
- return bone && bone.length >= 16 ? bone : null;
2300
+ if (!bones || boneIndex < 0 || (boneIndex + 1) * 12 > bones.length) {
2301
+ return null;
2302
+ }
2303
+ return MatrixCopyFrom3x4(mat4.create(), bones, boneIndex);
1761
2304
  }
1762
2305
  #ApplyControllerVariables(target, variables, methodName) {
1763
2306
  const setter = target?.[methodName];
@@ -1811,21 +2354,6 @@ new class extends _identity {
1811
2354
  #SetSphere(out, center, radius) {
1812
2355
  return sph3.set(out, center[0], center[1], center[2], radius);
1813
2356
  }
1814
- #TransformBox(out, bounds, transform) {
1815
- out[0] = out[1] = out[2] = Infinity;
1816
- out[3] = out[4] = out[5] = -Infinity;
1817
- for (let index = 0; index < 8; index++) {
1818
- vec3.set(_EveSpaceObject.#boxCorner, index & 1 ? bounds[3] : bounds[0], index & 2 ? bounds[4] : bounds[1], index & 4 ? bounds[5] : bounds[2]);
1819
- vec3.transformMat4(_EveSpaceObject.#boxCorner, _EveSpaceObject.#boxCorner, transform);
1820
- out[0] = Math.min(out[0], _EveSpaceObject.#boxCorner[0]);
1821
- out[1] = Math.min(out[1], _EveSpaceObject.#boxCorner[1]);
1822
- out[2] = Math.min(out[2], _EveSpaceObject.#boxCorner[2]);
1823
- out[3] = Math.max(out[3], _EveSpaceObject.#boxCorner[0]);
1824
- out[4] = Math.max(out[4], _EveSpaceObject.#boxCorner[1]);
1825
- out[5] = Math.max(out[5], _EveSpaceObject.#boxCorner[2]);
1826
- }
1827
- return out;
1828
- }
1829
2357
  #zero = Object.freeze([0, 0, 0]);
1830
2358
  #unitY = Object.freeze([0, 1, 0]);
1831
2359
  #locatorDirection = vec3.create();
@@ -1846,7 +2374,6 @@ new class extends _identity {
1846
2374
  #worldSphere = sph3.create();
1847
2375
  #localBox = box3.create();
1848
2376
  #worldBox = box3.create();
1849
- #boxCorner = vec3.create();
1850
2377
  #identityRotation = Object.freeze([0, 0, 0, 1]);
1851
2378
  #identityTransform = mat4.create();
1852
2379
  #damageLocatorSetName = "damage";