@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.2

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 (935) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/schema/CjsSchema.js +20 -2
  80. package/dist/global/schema/CjsSchema.js.map +1 -1
  81. package/dist/global/schema/hydration.js +14 -0
  82. package/dist/global/schema/hydration.js.map +1 -1
  83. package/dist/global/utils/bytes.js +22 -4
  84. package/dist/global/utils/bytes.js.map +1 -1
  85. package/dist/global/utils/checksum.js +80 -0
  86. package/dist/global/utils/checksum.js.map +1 -0
  87. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  88. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  89. package/dist/global/utils/errors/CjsError.js +21 -52
  90. package/dist/global/utils/errors/CjsError.js.map +1 -1
  91. package/dist/global/utils/errors/abort.js +1 -1
  92. package/dist/global/utils/errors/abort.js.map +1 -1
  93. package/dist/global/utils/errors/index.js +2 -1
  94. package/dist/global/utils/errors/index.js.map +1 -1
  95. package/dist/global/utils/index.js +4 -2
  96. package/dist/global/utils/index.js.map +1 -1
  97. package/dist/index.js +95 -35
  98. package/dist/index.js.map +1 -1
  99. package/dist/input/Tr2MainWindow.js +7 -9
  100. package/dist/input/Tr2MainWindow.js.map +1 -1
  101. package/dist/resource/CjsResMan.js +33 -39
  102. package/dist/resource/CjsResMan.js.map +1 -1
  103. package/dist/resource/CjsResource.js +19 -5
  104. package/dist/resource/CjsResource.js.map +1 -1
  105. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  106. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  107. package/dist/resource/audio/CjsAudioRes.js +4 -5
  108. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  109. package/dist/resource/format/CjsBitReader.js +263 -0
  110. package/dist/resource/format/CjsBitReader.js.map +1 -0
  111. package/dist/resource/format/CjsByteReader.js +130 -125
  112. package/dist/resource/format/CjsByteReader.js.map +1 -1
  113. package/dist/resource/format/CjsFormat.js +11 -4
  114. package/dist/resource/format/CjsFormat.js.map +1 -1
  115. package/dist/resource/format/CjsFormatError.js +37 -1
  116. package/dist/resource/format/CjsFormatError.js.map +1 -1
  117. package/dist/resource/format/CjsResourceProbe.js +41 -37
  118. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  119. package/dist/resource/format/carbonRecordGuard.js +33 -0
  120. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  121. package/dist/resource/format/imageSignatures.js +202 -0
  122. package/dist/resource/format/imageSignatures.js.map +1 -0
  123. package/dist/resource/format/index.js +2 -1
  124. package/dist/resource/format/index.js.map +1 -1
  125. package/dist/resource/format/jsonPolicies.js +180 -0
  126. package/dist/resource/format/jsonPolicies.js.map +1 -0
  127. package/dist/resource/formats/black/core/helpers.js +18 -29
  128. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  129. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  130. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  132. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  133. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  134. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  136. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  138. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  140. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  142. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  144. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  145. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  146. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  147. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  148. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  149. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  150. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  151. package/dist/resource/formats/cmf/core/binary.js +54 -60
  152. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  153. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  154. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  155. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  156. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  157. package/dist/resource/formats/dds/core/bc7.js +28 -24
  158. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  159. package/dist/resource/formats/dds/core/helpers.js +7 -133
  160. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  162. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  163. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  164. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  166. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  167. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  168. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  170. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  171. package/dist/resource/formats/flac/core/helpers.js +1 -62
  172. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  174. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  175. package/dist/resource/formats/gif/core/helpers.js +1 -63
  176. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  178. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  179. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  180. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  182. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/container.js +1 -10
  184. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  185. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  186. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/gr2/core/shared.js +193 -189
  188. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  189. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  190. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  191. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  192. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  194. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  195. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  196. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  198. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  199. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  200. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  202. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  203. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  204. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  206. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  207. package/dist/resource/formats/obj/core/helpers.js +93 -115
  208. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  210. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  211. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  212. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  213. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  214. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  215. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  216. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  217. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  218. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  219. package/dist/resource/formats/png/core/helpers.js +13 -152
  220. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/png/core/writer.js +3 -27
  222. package/dist/resource/formats/png/core/writer.js.map +1 -1
  223. package/dist/resource/formats/red/core/helpers.js +19 -29
  224. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  226. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  227. package/dist/resource/formats/stl/core/helpers.js +44 -66
  228. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  230. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  231. package/dist/resource/formats/tga/core/helpers.js +7 -153
  232. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  234. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  235. package/dist/resource/formats/vta/core/helpers.js +1 -17
  236. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  238. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  239. package/dist/resource/formats/wav/core/helpers.js +1 -15
  240. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  241. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  242. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  243. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
  244. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  245. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
  246. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  247. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  248. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  249. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  250. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  251. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  252. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  253. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  254. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  255. package/dist/resource/formats/webm/core/helpers.js +1 -73
  256. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  257. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  258. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  259. package/dist/resource/formats/webp/core/helpers.js +1 -62
  260. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  261. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  262. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  263. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  264. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  265. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  266. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  267. package/dist/resource/formats/wem/core/helpers.js +1 -15
  268. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  269. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  270. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  271. package/dist/resource/geometry/MeshDecalData.js +23 -25
  272. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  273. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  274. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  276. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  278. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  280. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  281. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  282. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  283. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  284. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  285. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  286. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  287. package/dist/resource/geometry/TriJointBinding.js +16 -24
  288. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  289. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  290. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  291. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  292. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  293. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  294. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  295. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  296. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  297. package/dist/resource/index.js +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  299. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  301. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  303. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  305. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  307. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  309. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  310. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  311. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  312. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  313. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  314. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  315. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  316. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  317. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  318. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  319. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  320. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  321. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  322. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  323. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  324. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  325. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  327. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  329. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  333. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  335. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  336. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  337. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  338. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  339. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  340. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  341. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  342. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  343. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  344. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  345. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  346. package/dist/resource/worker/protocol.js +18 -1
  347. package/dist/resource/worker/protocol.js.map +1 -1
  348. package/dist/sof/EveSOF.js +2 -222
  349. package/dist/sof/EveSOF.js.map +1 -1
  350. package/dist/sof/SofDocumentBuilder.js +205 -0
  351. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  352. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  353. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  354. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  355. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  356. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  357. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  358. package/dist/sof/faction/index.js +3 -1
  359. package/dist/sof/faction/index.js.map +1 -1
  360. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  361. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  362. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  363. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  364. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  365. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  366. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  367. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  368. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  369. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  370. package/dist/sof/generic/index.js +5 -1
  371. package/dist/sof/generic/index.js.map +1 -1
  372. package/dist/sof/index.js +23 -7
  373. package/dist/sof/index.js.map +1 -1
  374. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  375. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  376. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  377. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  378. package/dist/sof/pattern/index.js +2 -1
  379. package/dist/sof/pattern/index.js.map +1 -1
  380. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  381. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  382. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  383. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  384. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  385. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  386. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  387. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  388. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  389. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  390. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  391. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  392. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  393. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  395. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  398. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  399. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  400. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  401. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  402. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  403. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  404. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  405. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  406. package/dist/sof/shared/index.js +13 -4
  407. package/dist/sof/shared/index.js.map +1 -1
  408. package/dist/sof/sofDocumentValues.js +33 -0
  409. package/dist/sof/sofDocumentValues.js.map +1 -0
  410. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  411. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  412. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  413. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  414. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  415. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  416. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  417. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  418. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  419. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  420. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  421. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  424. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  425. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  426. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  427. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  428. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  429. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  430. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  431. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  432. package/dist/trinity/controllers/index.js +5 -2
  433. package/dist/trinity/controllers/index.js.map +1 -1
  434. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  435. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  436. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  437. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  438. package/dist/trinity/core/ITr2Updateable.js +2 -1
  439. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  440. package/dist/trinity/core/Tr2Blitter.js +6 -3
  441. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  442. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  443. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  444. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  445. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  446. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  447. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  448. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  449. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  450. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  451. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  452. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  453. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  454. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  455. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  456. package/dist/trinity/core/Tr2Renderer.js +146 -1
  457. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  458. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  459. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  460. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  461. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  462. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  463. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  464. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  465. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  466. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  467. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  468. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  469. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  470. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  471. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  472. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  473. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  474. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  475. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  476. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  477. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  478. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  479. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  480. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  481. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  482. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  483. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  484. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  485. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  486. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  487. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  488. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  489. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  490. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  491. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  492. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  493. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  494. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  495. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  496. package/dist/trinity/core/index.js +42 -15
  497. package/dist/trinity/core/index.js.map +1 -1
  498. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  499. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  500. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  501. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  502. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  503. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  504. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  505. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  506. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  507. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  508. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  509. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  510. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  511. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  512. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  513. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  514. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  515. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  516. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  517. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  519. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  520. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  521. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  522. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  547. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  549. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  550. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  551. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  552. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  553. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  573. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  575. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  577. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  578. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  579. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  580. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  581. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  582. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  583. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  584. package/dist/trinity/core/variable/TriVariable.js +83 -83
  585. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  586. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  587. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  588. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  589. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  590. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  591. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  592. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  593. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  594. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  595. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  596. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  597. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  598. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  599. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  600. package/dist/trinity/eve/IEveTransform.js +2 -1
  601. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  602. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  603. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  604. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  605. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  606. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  607. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  608. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  609. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  610. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  611. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  612. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  613. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  614. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  615. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  616. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  617. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  619. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  621. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  622. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  623. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  624. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  625. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  626. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  627. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  628. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  629. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  631. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  632. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  633. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  634. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  635. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  636. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  639. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  640. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  641. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  643. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  645. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  647. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  648. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  649. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  650. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  651. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  652. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  653. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  654. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  655. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  656. package/dist/trinity/eve/index.js +10 -4
  657. package/dist/trinity/eve/index.js.map +1 -1
  658. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  659. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  660. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  661. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  662. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  663. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  664. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  665. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  666. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  667. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  668. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  669. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  670. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  671. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  672. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  673. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  674. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  675. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  676. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  677. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  678. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  679. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  680. package/dist/trinity/generated/index.js +0 -1
  681. package/dist/trinity/generated/index.js.map +1 -1
  682. package/dist/trinity/generated/trinityCore/index.js +0 -1
  683. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  684. package/dist/trinity/index.js +59 -23
  685. package/dist/trinity/index.js.map +1 -1
  686. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  687. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  688. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  689. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  690. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  691. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  692. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  693. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  694. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  695. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  696. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  697. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  698. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  699. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  700. package/dist/trinity/particle/index.js +2 -1
  701. package/dist/trinity/particle/index.js.map +1 -1
  702. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  703. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  704. package/dist/trinity/shader/Tr2Effect.js +131 -58
  705. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  706. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  707. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  708. package/dist/trinity/shader/Tr2Material.js +21 -4
  709. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  710. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  711. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  712. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  713. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  714. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  715. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  716. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  717. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  718. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  719. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  720. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  721. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  724. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  728. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  729. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  730. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  731. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  732. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  733. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  734. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  735. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  736. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  737. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  740. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  741. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  742. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  743. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  744. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  745. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  746. package/dist/trinityal/index.js +22 -9
  747. package/dist/trinityal/index.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  749. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  751. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  752. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  753. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  754. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  755. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  756. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  757. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  758. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  759. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  761. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  762. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  763. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  764. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  765. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  766. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  767. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  769. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  771. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  772. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  773. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  774. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  775. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  776. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  777. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  778. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  779. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  780. package/dist/trinityal/stub/index.js +8 -4
  781. package/dist/trinityal/stub/index.js.map +1 -1
  782. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  783. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  785. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  787. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  789. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  791. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  793. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  795. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  796. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  797. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  799. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  800. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  801. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  802. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  803. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  804. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  807. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  813. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  815. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  817. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  821. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  822. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  823. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  824. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  825. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  826. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  827. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  828. package/dist/trinityal/webgpu/internal.js +12 -11
  829. package/dist/trinityal/webgpu/internal.js.map +1 -1
  830. package/docs/audio/reference/classes/trinity.md +44 -34
  831. package/docs/character/architecture.md +276 -0
  832. package/docs/character/reference/character-appearance-plans.md +30 -66
  833. package/docs/character/reference/prepared-libraries.md +14 -30
  834. package/docs/global/reference/api.md +2 -1
  835. package/docs/global/reference/classes/README.md +53 -71
  836. package/docs/global/reference/classes/dropped.md +16 -0
  837. package/docs/resource/README.md +19 -15
  838. package/docs/resource/architecture.md +9 -2
  839. package/docs/resource/concepts/format-capabilities.md +124 -80
  840. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  841. package/docs/resource/formats/README.md +230 -224
  842. package/docs/resource/formats/bitknit2.md +221 -0
  843. package/docs/resource/formats/carbon-effect-container.md +184 -269
  844. package/docs/resource/formats/gr2.md +6 -1
  845. package/docs/resource/formats/schemabound.md +28 -48
  846. package/docs/resource/formats/static.md +70 -97
  847. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  848. package/docs/resource/formats/webgl/decl-io.md +165 -256
  849. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  850. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  851. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  852. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  853. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  854. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
  855. package/docs/resource/reference/classes/core.md +256 -236
  856. package/docs/resource/reference/classes/formats.md +1668 -1672
  857. package/docs/resource/reference/workers.md +4 -2
  858. package/docs/sof/reference/classes/core.md +1 -1
  859. package/docs/sof/reference/classes/faction.md +2 -2
  860. package/docs/sof/reference/classes/generic.md +4 -4
  861. package/docs/sof/reference/classes/pattern.md +1 -1
  862. package/docs/sof/reference/classes/shared.md +10 -10
  863. package/docs/trinity/architecture.md +55 -44
  864. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  865. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  866. package/docs/trinity/reference/classes/dropped.md +0 -189
  867. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  868. package/docs/trinity/reference/classes/generated.md +0 -10
  869. package/docs/trinity/reference/classes/particle.md +2 -2
  870. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  871. package/docs/trinity/reference/implementation-status.md +50 -75
  872. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  873. package/docs/trinityal/reference/classes/README.md +77 -27
  874. package/docs/trinityal/reference/classes/dropped.md +92 -0
  875. package/docs/trinityal/webgpu/README.md +3 -1
  876. package/docs/trinityal/webgpu/architecture.md +121 -228
  877. package/docs/trinityal/webgpu/reference/api.md +5 -5
  878. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  879. package/format-notices/gr2/NOTICE +18 -12
  880. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  881. package/package.json +4 -1
  882. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  883. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  884. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  885. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  886. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  887. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  888. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  889. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  890. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  891. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  892. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  893. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  894. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  895. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  896. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  897. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  898. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  899. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  900. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  901. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  902. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  903. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  904. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  905. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  906. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  907. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  908. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  909. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  910. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  911. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  912. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  913. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  914. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  915. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  916. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  917. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  918. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  919. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  920. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  921. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  922. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  923. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  930. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  931. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  932. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  933. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  934. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  935. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EveChildMesh.js","sources":["../../../../../src/trinity/eve/child/EveChildMesh.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.h\r\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp\r\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { sph3 } from \"#math/sph3\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { getBoneList } from \"../../core/animation/Tr2GrannyAnimation.js\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { carbon, impl, io, type } from \"#schema\";\r\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\r\nimport { EveChildTransform, applyTransformModifiers } from \"./EveChildTransform.js\";\r\nimport { Origin } from \"../../generated/eve/child/enums.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\nimport { Tr2RenderReason } from \"../../generated/trinityCore/enums.js\";\r\nimport { Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { Tr2PerObjectData } from \"../../core/rawData/Tr2PerObjectData.js\";\r\nimport { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from \"../../core/view/Tr2PickType.js\";\r\nimport {\r\n createChildPerObjectRecords,\r\n inheritParentPerObjectData,\r\n stampChildTransforms\r\n} from \"../perObjectData/childPerObjectRecords.js\";\r\nimport { Float4x3 } from \"../../utilities/Float4x3.js\";\r\nimport { EveCollectAreas } from \"./EveSpaceObjectChild.js\";\r\nimport { EveGetLocatorPose } from \"../locator/EveLocatorSets.js\";\r\nimport { EveDamageOverlay } from \"../overlays/EveDamageOverlay.js\";\r\nimport {\r\n CollectOverlayAreaBlocks,\r\n EmitDamageOverlayBatches,\r\n EmitOverlayBatches\r\n} from \"../overlays/overlayBatches.js\";\r\nimport { withITr2Renderable } from \"../../core/ITr2Renderable.js\";\r\n\r\n// Module scratch for the hot per-frame visibility/shadow paths (allocation\r\n// rules: copy-into, never allocate per call; child updates run sequentially so\r\n// the scratch is non-reentrant by construction).\r\nconst INVERSE_WORLD_SCRATCH = mat4.create();\r\nconst LOCAL_VIEW_SCRATCH = vec3.create();\r\nconst INSTANCE_SPHERE_SCRATCH = vec4.create();\r\nconst SHADOW_SPHERE_SCRATCH = vec4.create();\r\nconst BOX_CORNER_SCRATCH = vec3.create();\r\nconst BOX_QUERY_SCRATCH = { min: vec3.create(), max: vec3.create() };\r\nconst ZERO_VEC3 = vec3.create();\r\n\r\n// Carbon's (nullptr, 0) bone result - frozen so callers cannot mutate it.\r\nconst NO_BONE_TRANSFORMS = Object.freeze({ bones: null, boneCount: 0 });\r\n\r\n\r\n/**\r\n * Space-object child that draws one mesh under its own transform, owning its\r\n * decals, lights, attachments, morph weights, world bounds and screen-size LOD\r\n * state.\r\n */\r\n@type.define({ className: \"EveChildMesh\", family: \"eve/child\" })\r\nexport class EveChildMesh extends withITr2Renderable(EveChildTransform)\r\n{\r\n #isMorphsBaked = false;\r\n\r\n #morphAnimationBuffer = [];\r\n\r\n #morphAnimationOffsets = {\r\n runtimeEvaluatedOffset: 0,\r\n runtimeEvaluatedCount: 0,\r\n bakedOffset: 0,\r\n bakedCount: 0,\r\n allCount: 0\r\n };\r\n\r\n // Carbon m_isVisible/m_instancesVisible/m_hasUpdated/m_activationStrength:\r\n // runtime-only frame state (never persisted; Carbon keeps them out of the\r\n // Blue surface too).\r\n #isVisible = false;\r\n\r\n #instancesVisible = false;\r\n\r\n #hasUpdated = false;\r\n\r\n #activationStrength = 1;\r\n\r\n /** m_vsData / m_psData - this child's PERSISTENT per-object record pair. */\r\n #perObjectData = createChildPerObjectRecords();\r\n\r\n /** Carbon's local `lastWorldTransform` (cpp:912), kept across frames here. */\r\n #lastWorldTransform = mat4.create();\r\n\r\n // Carbon m_worldBoundingBox/m_worldBoundingSphere: world-space bounds\r\n // refreshed by UpdateAsyncronous; the sphere is invalid while radius <= 0.\r\n #worldBoundsMin = vec3.create();\r\n\r\n #worldBoundsMax = vec3.create();\r\n\r\n #worldBoundsValid = false;\r\n\r\n #worldBoundingSphere = vec4.create();\r\n\r\n /** Identity rest-pose palette for skinned shaders without live animation. */\r\n #restPoseBoneTransforms = null;\r\n\r\n #parentOverlayEffects = null;\r\n\r\n #overlayAreaBlocks = [ [], [] ];\r\n\r\n #overlayAreaBlocksBuilt = false;\r\n\r\n // Carbon sets these two programmatically from SOF (EveSOF.cpp:3971-3972);\r\n // CarbonEngineJS delivers built objects as documents, so both persist.\r\n @io.persist\r\n @type.list(\"EveLocatorSets\")\r\n ownedLocatorSets = [];\r\n\r\n @io.persist\r\n @type.objectRef(\"Tr2Effect\")\r\n armorDamageShader = null;\r\n\r\n /**\r\n * Clears the private visibility state for a derived child whose own Carbon\r\n * cull rejects it before EveChildMesh::UpdateVisibility runs.\r\n *\r\n * EveChildInstanceMeshRenderer owns exactly that two-stage cull. Keeping the\r\n * mutation here preserves one state owner instead of shadowing the four\r\n * private values in the subclass.\r\n */\r\n _ResetVisibilityState()\r\n {\r\n this.#isVisible = false;\r\n this.currentScreenSize = -1;\r\n this.#instancesVisible = false;\r\n this.currentInstanceScreenSize = -1;\r\n }\r\n\r\n /** Carbon-derived classes read m_activationStrength after the mesh update. */\r\n _GetActivationStrength()\r\n {\r\n return this.#activationStrength;\r\n }\r\n\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n @io.persist\r\n @type.list(\"IEveChildTransformModifier\")\r\n transformModifiers = [];\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n @io.persist\r\n @type.boolean\r\n inheritOverlayEffects = true;\r\n\r\n @io.persist\r\n @type.list(\"EveMeshOverlayEffect\")\r\n overlayEffects = [];\r\n\r\n @io.persist\r\n @type.objectRef(\"EveDamageOverlay\")\r\n damageOverlay = null;\r\n\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n castShadow = false;\r\n\r\n @io.notify\r\n @io.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.persist\r\n @type.quat\r\n rotation = quat.create();\r\n\r\n @io.persist\r\n @type.vec3\r\n translation = vec3.create();\r\n\r\n @io.persist\r\n @type.vec3\r\n scaling = vec3.fromValues(1, 1, 1);\r\n\r\n @io.persist\r\n @type.mat4\r\n localTransform = mat4.create();\r\n\r\n @io.persist\r\n @type.list(\"EveSpaceObjectDecal\")\r\n decals = [];\r\n\r\n @io.persist\r\n @type.boolean\r\n staticTransform = false;\r\n\r\n @io.notify\r\n @io.persist\r\n @type.objectRef(\"Tr2GrannyAnimation\")\r\n animationUpdater = null;\r\n\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"Tr2Lod\")\r\n lowestLodVisible = 0;\r\n\r\n @io.persist\r\n @type.float32\r\n minScreenSize = 0;\r\n\r\n @io.persist\r\n @type.float32\r\n sortValueOffset = 0;\r\n\r\n @io.persist\r\n @type.float32\r\n sortValueScale = 1;\r\n\r\n @io.read\r\n @type.float32\r\n currentScreenSize = -1;\r\n\r\n @io.read\r\n @type.float32\r\n currentInstanceScreenSize = -1;\r\n\r\n @io.persist\r\n @type.boolean\r\n useSRT = true;\r\n\r\n @io.persist\r\n @type.boolean\r\n updateAnimation = true;\r\n\r\n // SOF-authored placement/instance values; persisted so the values\r\n // interchange reproduces Carbon's hidden child placement state.\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"Origin\")\r\n origin = 0;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.array(\"mat4\")\r\n instanceTransforms = [];\r\n\r\n @io.persist\r\n @type.string\r\n sofDna = \"\";\r\n\r\n @io.persist\r\n @type.string\r\n sofParentHullName = \"\";\r\n\r\n @io.persist\r\n @type.string\r\n sofLocatorSetName = \"\";\r\n\r\n @io.persist\r\n @type.string\r\n sofLocatorIndex = \"\";\r\n\r\n /**\r\n * Rebuilds the local transform up front when the child is marked\r\n * staticTransform, since UpdateTransform will not rebuild it on later frames.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n if (this.staticTransform)\r\n {\r\n this.RebuildLocalTransform();\r\n }\r\n\r\n // cpp:84 - bind the updater to this mesh's geometry.\r\n this.InitializeAnimation();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Applies the authored scale/rotation/translation and, when supplied, the\r\n * lowest LOD level at which the child stays visible; returns the rebuilt local\r\n * transform.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\r\n {\r\n super.Setup(scale, rotation, translation, lowestLodVisible);\r\n if (lowestLodVisible !== null && lowestLodVisible !== undefined)\r\n {\r\n this.lowestLodVisible = Number(lowestLodVisible) | 0;\r\n }\r\n return this.localTransform;\r\n }\r\n\r\n /**\r\n * Replaces the instance placement list with clones of the supplied matrices, so later caller mutations do not reach the child.\r\n * @param {Iterable<Float32Array>} instances - 16-value matrices; a wrongly sized entry throws TypeError\r\n * @returns {Array<Float32Array>} the stored list\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetInstanceTransforms(instances)\r\n {\r\n const next = [];\r\n for (const transform of instances ?? [])\r\n {\r\n if (!transform || transform.length !== 16)\r\n {\r\n throw new TypeError(\"EveChildMesh instance transforms must contain 16 values\");\r\n }\r\n next.push(mat4.clone(transform));\r\n }\r\n this.instanceTransforms = next;\r\n return this.instanceTransforms;\r\n }\r\n\r\n /**\r\n * Returns the live instance transform list, not a copy - mutating it changes\r\n * what the child renders.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetInstanceTransforms()\r\n {\r\n return this.instanceTransforms;\r\n }\r\n\r\n /**\r\n * Assigns the Tr2MeshBase this child draws; a nullish value clears it, which\r\n * also makes the child permanently invisible (UpdateVisibility requires a\r\n * mesh).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetMesh(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n this.#overlayAreaBlocksBuilt = false;\r\n this.#restPoseBoneTransforms = null;\r\n }\r\n\r\n /** Appends an overlay owned by this child; inherited hull overlays render after it. */\r\n @carbon.method\r\n @impl.implemented\r\n AddOverlayEffect(effect)\r\n {\r\n if (!effect) throw new TypeError(\"EveChildMesh overlay effect must not be null\");\r\n this.overlayEffects.push(effect);\r\n }\r\n\r\n /** Removes the first matching owned overlay. */\r\n @carbon.method\r\n @impl.implemented\r\n RemoveOverlayEffect(effect)\r\n {\r\n const index = this.overlayEffects.indexOf(effect);\r\n if (index !== -1) this.overlayEffects.splice(index, 1);\r\n }\r\n\r\n /** Returns the first owned overlay whose authored name matches. */\r\n @carbon.method\r\n @impl.implemented\r\n GetOverlayEffectByName(name)\r\n {\r\n return this.overlayEffects.find(effect => effect.name === String(name)) ?? null;\r\n }\r\n\r\n /**\r\n * Records whether this child's placement was authored in space or by SOF (the\r\n * Origin enum).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetOrigin(origin)\r\n {\r\n this.origin = Number(origin) | 0;\r\n }\r\n\r\n /**\r\n * Copies the given scale into the child's SRT scaling; it reaches the world\r\n * transform on the next local-transform rebuild.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetScale(scale)\r\n {\r\n vec3.copy(this.scaling, scale);\r\n }\r\n\r\n /**\r\n * Sets the reflection mode, which decides whether the child registers as a\r\n * ReflectionRenderable and whether it casts shadows during reflection passes.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetReflectionMode(mode)\r\n {\r\n this.reflectionMode = Number(mode) | 0;\r\n }\r\n\r\n /**\r\n * Sets whether the child registers as a shadow caster and contributes opaque\r\n * shadow batches.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetCastShadow(castShadow)\r\n {\r\n this.castShadow = !!castShadow;\r\n }\r\n\r\n /**\r\n * Sets the minimum screen size, in pixels across, that the child's world\r\n * bounding sphere must reach - after the frame's inverse LOD factor scaling -\r\n * before UpdateVisibility marks it visible.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetMinScreenSize(minScreenSize)\r\n {\r\n this.minScreenSize = Number(minScreenSize);\r\n }\r\n\r\n /** Carbon EveChildMesh::GetLocalToWorldTransform (cpp:1047-1050); the\r\n * optional out follows the EveChildInstancedMeshes copy-out shape. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * The authored name, persisted with the child and used to identify it in the\r\n * parent graph.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n /** Sets the authored child name, coercing nullish to the empty string. */\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /**\r\n * Appends a transform modifier; modifiers fold over the child's world\r\n * transform in insertion order on each async update.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddTransformModifier(modifier)\r\n {\r\n this.transformModifiers.push(modifier);\r\n }\r\n\r\n /**\r\n * Appends a decal; decals refresh their visibility only while the child itself\r\n * is visible, and ride along in GetRenderables when the mesh has a geometry\r\n * resource.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddDecal(decal)\r\n {\r\n this.decals.push(decal);\r\n }\r\n\r\n /**\r\n * Appends an attachment; attachments refresh their lights and visibility every\r\n * frame regardless of the child's own visibility.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddAttachment(attachment)\r\n {\r\n this.attachments.push(attachment);\r\n }\r\n\r\n /**\r\n * Drops every attachment, removing their lights, batches and visibility\r\n * updates from this child.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearAttachments()\r\n {\r\n this.attachments.length = 0;\r\n }\r\n\r\n /**\r\n * Appends a light, submitted to the light manager from the child's world\r\n * transform while the child displays.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n this.lights.push(light);\r\n }\r\n\r\n /**\r\n * Drops every light, which also stops the child registering as a LightOwner on\r\n * the next component registration.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n this.lights.length = 0;\r\n }\r\n\r\n /** Returns true unconditionally - a child mesh reports itself as always on. */\r\n @carbon.method\r\n @impl.implemented\r\n IsAlwaysOn()\r\n {\r\n return true;\r\n }\r\n\r\n /** Forwards a shader option to the mesh, every decal and every attachment. */\r\n @carbon.method\r\n @impl.implemented\r\n SetShaderOption(name, value)\r\n {\r\n this.mesh?.SetShaderOption?.(name, value);\r\n for (const decal of this.decals)\r\n {\r\n decal?.SetShaderOption?.(name, value);\r\n }\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n attachment.SetShaderOption(name, value);\r\n }\r\n }\r\n\r\n /**\r\n * Names of the mesh's morph targets in index order, or an empty array when the\r\n * mesh exposes none; the indices line up with the records GetMorphTargets\r\n * returns.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMorphTargetNames()\r\n {\r\n return this.mesh?.GetMorphTargetNames?.() ?? [];\r\n }\r\n\r\n /**\r\n * Writes a named morph weight on the mesh; it only reaches the render path\r\n * after the next UpdateMorphAnimationBuffer pass re-sorts the indexed buffer.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetMorphTargetWeight(name, weight)\r\n {\r\n this.mesh?.SetMorphTargetWeight?.(name, weight);\r\n }\r\n\r\n /**\r\n * Reads a named morph weight straight from the mesh (0 when it has no such\r\n * target), bypassing any animation-driven value the morph buffer may have\r\n * applied.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMorphTargetWeight(name)\r\n {\r\n return this.mesh?.GetMorphTargetWeight?.(name) ?? 0;\r\n }\r\n\r\n /** Rebuilds the source-backed indexed morph buffer from manual and animation weights. */\r\n @impl.adapted\r\n UpdateMorphAnimationBuffer()\r\n {\r\n const names = this.mesh?.GetMorphTargetNames?.();\r\n\r\n this.#morphAnimationOffsets = {\r\n runtimeEvaluatedOffset: 0,\r\n runtimeEvaluatedCount: 0,\r\n bakedOffset: 0,\r\n bakedCount: 0,\r\n allCount: 0\r\n };\r\n\r\n if (!Array.isArray(names))\r\n {\r\n this.#morphAnimationBuffer = [];\r\n return 0;\r\n }\r\n\r\n const manual = this.mesh?.GetMorphAnimations?.();\r\n const records = names.map((name, index) => ({\r\n index,\r\n weight: ReadMorphWeight(\r\n ReadNamedMorph(manual, name) ?? this.mesh?.GetMorphTargetWeight?.(name) ?? 0,\r\n name,\r\n \"mesh\"\r\n ),\r\n baked: !!(this.mesh?.IsBakedMorph?.(index)\r\n ?? this.mesh?.GetBakedMorphTarget?.(name)\r\n ?? false)\r\n }));\r\n\r\n if (this.animationUpdater?.IsInitialized?.())\r\n {\r\n const animated = this.animationUpdater.GetMorphAnimations?.();\r\n\r\n for (const record of records)\r\n {\r\n const name = names[record.index];\r\n const value = ReadNamedMorph(animated, name);\r\n\r\n if (value !== undefined)\r\n {\r\n record.weight = ReadMorphWeight(value, name, \"animation\");\r\n }\r\n }\r\n }\r\n\r\n const runtime = [];\r\n const baked = [];\r\n const inactive = [];\r\n\r\n for (const record of records)\r\n {\r\n if (record.weight >= 0.001)\r\n {\r\n (record.baked ? baked : runtime).push(record);\r\n }\r\n else\r\n {\r\n inactive.push(record);\r\n }\r\n }\r\n\r\n this.#morphAnimationBuffer = [ ...runtime, ...baked, ...inactive ];\r\n this.#morphAnimationOffsets.runtimeEvaluatedCount = runtime.length;\r\n this.#morphAnimationOffsets.bakedOffset = runtime.length;\r\n this.#morphAnimationOffsets.bakedCount = baked.length;\r\n this.#morphAnimationOffsets.allCount = runtime.length + baked.length;\r\n return this.#morphAnimationOffsets.allCount;\r\n }\r\n\r\n /** Returns detached active indexed morph records for the native filter. */\r\n @impl.adapted\r\n GetMorphTargets(filter = 2)\r\n {\r\n const normalized = NormalizeMorphFilter(filter);\r\n let offset = 0;\r\n let count = 0;\r\n\r\n if (normalized === 2)\r\n {\r\n count = this.#morphAnimationOffsets.allCount;\r\n }\r\n else if (normalized === 0)\r\n {\r\n offset = this.#isMorphsBaked\r\n ? this.#morphAnimationOffsets.runtimeEvaluatedOffset\r\n : 0;\r\n count = this.#isMorphsBaked\r\n ? this.#morphAnimationOffsets.runtimeEvaluatedCount\r\n : this.#morphAnimationOffsets.allCount;\r\n }\r\n else\r\n {\r\n offset = this.#morphAnimationOffsets.bakedOffset;\r\n count = this.#morphAnimationOffsets.bakedCount;\r\n }\r\n\r\n return this.#morphAnimationBuffer.slice(offset, offset + count)\r\n .map(value => ({ index: value.index, weight: value.weight }));\r\n }\r\n\r\n /**\r\n * Always returns null: a child mesh exposes no packed area-id lookup, since\r\n * its SOF identity lives directly on its\r\n * sofParentHullName/sofLocatorSetName/sofLocatorIndex fields.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetSofSourceLocator()\r\n {\r\n return null;\r\n }\r\n\r\n /**\r\n * Sync-side frame update (Carbon EveChildMesh::UpdateSyncronous,\r\n * cpp:1002-1045). Carbon's body is entirely audio-geometry registration\r\n * (cpp:1004-1010, 1044 - engine/audio-owned, omitted) plus animationUpdater\r\n * re-binding and PrePhysicsAnimation stepping (cpp:1011-1042 - skipped: the\r\n * JS animation seam is absent, there is no Tr2GrannyAnimation runtime), so\r\n * the port is a documented frame-contract no-op.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Audio-geometry registration is engine-owned and the animationUpdater branches await the JS animation seam; nothing else remains in Carbon's body.\")\r\n UpdateSyncronous(updateContext, _params)\r\n {\r\n if (this.damageOverlay) this.damageOverlay.UpdateSyncronous(updateContext);\r\n\r\n const time = updateContext.GetTime();\r\n for (const overlay of this.overlayEffects) overlay.Update(time, time);\r\n }\r\n\r\n /**\r\n * Per-frame async update (Carbon EveChildMesh::UpdateAsyncronous,\r\n * cpp:903-1000): rebuild the world transform from the parent, fold the\r\n * transform modifiers over it, store the activation strength, refresh the\r\n * attachment lights, the morph buffer, and the world bounds. The GPU ring\r\n * buffer advance/per-object-data invalidation (cpp:905-909), audio geometry\r\n * (cpp:920-930), parent VS/PS struct refresh (cpp:932-960), and the skinned\r\n * GetBounds overload are not modelled, hence @impl.adapted.\r\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\r\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\r\n * @returns {Float32Array} worldTransform\r\n */\r\n @carbon.method\r\n @carbon.contextual([\"camera\"])\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext, params)\r\n {\r\n const parentTransform = params?.localToWorldTransform;\r\n\r\n // Carbon captures the OUTGOING transform before rebuilding (cpp:912).\r\n mat4.copy(this.#lastWorldTransform, this.worldTransform);\r\n\r\n if (parentTransform && parentTransform.length === 16)\r\n {\r\n this.UpdateTransform(parentTransform);\r\n }\r\n\r\n applyTransformModifiers(\r\n this,\r\n updateContext,\r\n params?.boneCount ?? 0,\r\n params?.bones ?? null\r\n );\r\n\r\n // Carbon cpp:932-954: inherit the hull's per-object values, rebase the clip\r\n // data by this child's translation, then stamp our own transforms.\r\n const parent = params?.spaceObjectParent ?? null;\r\n inheritParentPerObjectData(this.#perObjectData, parent, this.translation);\r\n this.#parentOverlayEffects = this.inheritOverlayEffects && Array.isArray(parent?.overlayEffects)\r\n ? parent.overlayEffects\r\n : null;\r\n if (parent && !this.inheritOverlayEffects)\r\n {\r\n this.#perObjectData.vs.Set(\"clipData\", [ 0, 0, 0, 0 ]);\r\n this.#perObjectData.ps.Set(\"clipRadiusSq\", [ 0 ]);\r\n this.#perObjectData.ps.Set(\"clipRadius2Sq\", [ 0 ]);\r\n this.#perObjectData.ps.Set(\"clipSphereFactor\", [ 0 ]);\r\n this.#perObjectData.ps.Set(\"clipSphereFactor2\", [ 0 ]);\r\n }\r\n stampChildTransforms(this.#perObjectData, this.worldTransform, this.#lastWorldTransform);\r\n\r\n this.#activationStrength = Number(params?.activationStrength ?? 1);\r\n if (this.damageOverlay)\r\n {\r\n const flicker = this.damageOverlay.GetActivationStrength(updateContext);\r\n this.#activationStrength *= flicker;\r\n const shipData = this.#perObjectData.ps.Get(\"shipData\");\r\n this.#perObjectData.ps.Set(\"shipData\", [ shipData[0], parent ? shipData[1] * flicker : flicker, shipData[2], shipData[3] ]);\r\n this.#perObjectData.ps.Set(\"impactDataOffset\", [ this.damageOverlay.GetDataTextureOffset() ]);\r\n }\r\n\r\n // Carbon (cpp:962-970): attachments refresh their lights from the updated\r\n // world transform. Bones come from GetBoneTransforms (animationUpdater) -\r\n // null until the JS animation seam exists.\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n attachment.UpdateLights(this.worldTransform, null, 0, this.#activationStrength, 0);\r\n }\r\n\r\n this.UpdateMorphAnimationBuffer();\r\n\r\n // Carbon (cpp:974-997): world AABB from the mesh bounds, world sphere\r\n // enclosing it. The skinned GetBounds overload (animation transforms +\r\n // morph targets, cpp:977-982) awaits the animation seam; the maintained\r\n // Tr2MeshBase GetBounds supplies the static/material bounds meanwhile.\r\n this.#worldBoundsValid = false;\r\n const bounds = this.mesh ? this.mesh.GetBounds() : null;\r\n\r\n if (bounds?.min && bounds?.max)\r\n {\r\n this.#worldBoundsMin[0] = this.#worldBoundsMin[1] = this.#worldBoundsMin[2] = Infinity;\r\n this.#worldBoundsMax[0] = this.#worldBoundsMax[1] = this.#worldBoundsMax[2] = -Infinity;\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n BOX_CORNER_SCRATCH,\r\n index & 1 ? bounds.max[0] : bounds.min[0],\r\n index & 2 ? bounds.max[1] : bounds.min[1],\r\n index & 4 ? bounds.max[2] : bounds.min[2]\r\n );\r\n vec3.transformMat4(BOX_CORNER_SCRATCH, BOX_CORNER_SCRATCH, this.worldTransform);\r\n vec3.min(this.#worldBoundsMin, this.#worldBoundsMin, BOX_CORNER_SCRATCH);\r\n vec3.max(this.#worldBoundsMax, this.#worldBoundsMax, BOX_CORNER_SCRATCH);\r\n }\r\n this.#worldBoundsValid = true;\r\n sph3.fromBounds(this.#worldBoundingSphere, this.#worldBoundsMin, this.#worldBoundsMax);\r\n }\r\n else\r\n {\r\n sph3.set(this.#worldBoundingSphere, 0, 0, 0, 0);\r\n }\r\n\r\n if (this.damageOverlay)\r\n {\r\n const localSphere = vec4.fromValues(0, 0, 0, -1);\r\n if (bounds?.min && bounds?.max)\r\n {\r\n const cx = (bounds.min[0] + bounds.max[0]) * 0.5;\r\n const cy = (bounds.min[1] + bounds.max[1]) * 0.5;\r\n const cz = (bounds.min[2] + bounds.max[2]) * 0.5;\r\n vec4.set(localSphere, cx, cy, cz,\r\n Math.hypot(bounds.max[0] - cx, bounds.max[1] - cy, bounds.max[2] - cz));\r\n }\r\n this.damageOverlay.UpdateAsyncronous(updateContext, {\r\n boundingSphere: localSphere,\r\n estimatedPixelDiameter: Math.max(this.currentScreenSize, 0),\r\n isInFrustum: this.#isVisible,\r\n // Bind pose, not animated: the overlay seeds decals at the stable\r\n // authored position (Carbon EveChildMesh.cpp:1130, commit 98ee5e08).\r\n getDamageLocatorPositionOS: (index, out) => this.GetDamageLocatorBindPositionLocal(index, out)\r\n }, 0, false);\r\n }\r\n\r\n this.#hasUpdated = true;\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * Frame visibility + LOD state (Carbon EveChildMesh::UpdateVisibility,\r\n * cpp:366-463): screen size via the frustum, invLodFactor scaling, the\r\n * minScreenSize/lowestLodVisible gates, the per-instance visibility gate,\r\n * and the attachment/decal visibility fan-out. Carbon recomputes the local\r\n * mesh bounds here (cpp:380-394) but consumes only the world sphere/box\r\n * computed in UpdateAsyncronous, so the dead recompute is skipped. The\r\n * raytracing branch (cpp:450-462) is engine-owned and omitted.\r\n * @param {Object} updateContext - frame context (frustum + invLodFactor ducks)\r\n * @param {Float32Array} _parentTransform\r\n * @param {Number} parentLod - parent Tr2Lod level\r\n * @returns {Boolean} isVisible\r\n */\r\n /**\r\n * The mesh's bone palette, as a borrowed Float4x3 buffer and its bone count.\r\n *\r\n * Carbon `EveChildMesh::GetBoneTransforms` (cpp:1285-1307). Carbon branches:\r\n * the updater's own palette when it has a mesh binding, otherwise a separate\r\n * `Tr2AnimationMeshBinding` palette. Only the first branch exists here -\r\n * `Tr2AnimationMeshBinding` is unported - so a mesh relying on the second\r\n * gets no bones rather than the wrong ones.\r\n *\r\n * Carbon also assigns `accumulatedTransforms` and never reads it; that dead\r\n * local is not reproduced.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Tr2AnimationMeshBinding remains unported; Carbon's identity rest-pose fallback is used when neither live palette source is available.\")\r\n GetBoneTransforms()\r\n {\r\n const updater = this.animationUpdater;\r\n\r\n if (!updater || !updater.IsInitialized())\r\n {\r\n return this.GetRestPoseBoneTransforms();\r\n }\r\n\r\n // cpp:1297-1302 - the updater's own palette when it binds to the mesh.\r\n if (updater.HasMeshBinding())\r\n {\r\n return getBoneList(updater);\r\n }\r\n\r\n // A maintained Tr2AnimationMeshBinding would be consulted here. Until that\r\n // source exists, Carbon's final identity rest-pose path is the safe result.\r\n return this.GetRestPoseBoneTransforms();\r\n }\r\n\r\n /**\r\n * Builds Carbon's identity Float4x3 rest-pose palette. Geometry with no bone\r\n * bindings still receives one identity because skinned shaders read bone 0.\r\n */\r\n @impl.implemented\r\n GetRestPoseBoneTransforms()\r\n {\r\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\r\n if (!geometry)\r\n {\r\n return NO_BONE_TRANSFORMS;\r\n }\r\n\r\n const meshIndex = Number(this.mesh.GetMeshIndex()) >>> 0;\r\n const mesh = geometry.GetMeshData(meshIndex);\r\n const boneCount = Math.max(mesh?.boneBindings?.length ?? 0, 1);\r\n\r\n if (!this.#restPoseBoneTransforms || this.#restPoseBoneTransforms.length !== boneCount * 12)\r\n {\r\n const identity = Float4x3.fromMat4(mat4.create());\r\n this.#restPoseBoneTransforms = new Float32Array(boneCount * 12);\r\n for (let index = 0; index < boneCount; index++)\r\n {\r\n this.#restPoseBoneTransforms.set(identity, index * 12);\r\n }\r\n }\r\n\r\n return { bones: this.#restPoseBoneTransforms, boneCount };\r\n }\r\n\r\n /**\r\n * Resolves this child's visibility for the frame from its world bounding\r\n * sphere, the parent LOD, and the authored screen-size thresholds, recording\r\n * the mesh and per-instance screen sizes the batch path then draws at.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Bone-fed decal bounds still await the decal seam and the raytracing refresh is engine-owned; the LOD/screen-size math and the bone-fed attachment pass are ported.\")\r\n UpdateVisibility(updateContext, _parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\r\n {\r\n this.#isVisible = false;\r\n this.currentScreenSize = -1;\r\n this.#instancesVisible = false;\r\n this.currentInstanceScreenSize = -1;\r\n\r\n if (!this.#hasUpdated)\r\n {\r\n return false;\r\n }\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const invLodFactor = Number(updateContext?.GetInvLodFactor?.() ?? updateContext?.invLodFactor) || 1;\r\n\r\n if (this.mesh)\r\n {\r\n this.currentScreenSize = Number(frustum?.GetPixelSizeAccross?.(this.#worldBoundingSphere) ?? Infinity) || 0;\r\n\r\n // Cached Tr2InstancedMesh downcast in Carbon (m_instancedMesh); the JS\r\n // port duck-types the instanced surface instead.\r\n const instanced = typeof this.mesh.GetInstanceBoundsClosestToPoint === \"function\";\r\n let instanceBounds = null;\r\n\r\n if (instanced)\r\n {\r\n // Carbon: TransformCoord(frustum.m_viewPos, Inverse(m_worldTransform))\r\n // - a single-matrix point transform (no composition; TransformCoord\r\n // maps to vec3.transformMat4 unchanged per the math conventions).\r\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\r\n {\r\n mat4.identity(INVERSE_WORLD_SCRATCH);\r\n }\r\n const viewPos = frustum?.viewPos ?? ZERO_VEC3;\r\n vec3.transformMat4(LOCAL_VIEW_SCRATCH, viewPos, INVERSE_WORLD_SCRATCH);\r\n instanceBounds = this.mesh.GetInstanceBoundsClosestToPoint(LOCAL_VIEW_SCRATCH);\r\n }\r\n\r\n if (instanceBounds)\r\n {\r\n // Carbon: instanceBounds.Transform(m_worldTransform) - single-matrix\r\n // sphere transform, ported via sph3.transformMat4.\r\n sph3.set(\r\n INSTANCE_SPHERE_SCRATCH,\r\n instanceBounds.center[0],\r\n instanceBounds.center[1],\r\n instanceBounds.center[2],\r\n instanceBounds.radius\r\n );\r\n sph3.transformMat4(INSTANCE_SPHERE_SCRATCH, INSTANCE_SPHERE_SCRATCH, this.worldTransform);\r\n this.currentInstanceScreenSize = Number(frustum?.GetPixelSizeAccross?.(INSTANCE_SPHERE_SCRATCH) ?? Infinity) || 0;\r\n this.mesh.UseWithScreenSize?.(this.currentInstanceScreenSize, INSTANCE_SPHERE_SCRATCH[3]);\r\n }\r\n else\r\n {\r\n // Carbon uses std::numeric_limits<float>::max(); Infinity keeps the\r\n // instance gate permanently open the same way.\r\n this.currentInstanceScreenSize = Infinity;\r\n this.mesh.UseWithScreenSize?.(this.currentScreenSize, this.#worldBoundingSphere[3]);\r\n }\r\n\r\n this.currentScreenSize *= invLodFactor;\r\n this.currentInstanceScreenSize *= invLodFactor;\r\n\r\n BOX_QUERY_SCRATCH.min = this.#worldBoundsMin;\r\n BOX_QUERY_SCRATCH.max = this.#worldBoundsMax;\r\n const boxVisible = this.#worldBoundsValid &&\r\n (frustum?.IsBoxVisible ? !!frustum.IsBoxVisible(BOX_QUERY_SCRATCH) : true);\r\n\r\n if (boxVisible)\r\n {\r\n this.#isVisible = parentLod >= this.lowestLodVisible && this.currentScreenSize >= this.minScreenSize;\r\n this.#instancesVisible = this.#isVisible &&\r\n this.currentInstanceScreenSize >= EveChildMesh.#instanceScreenSizeThreshold;\r\n }\r\n }\r\n\r\n // Carbon (cpp:427-435): attachments always refresh visibility, fed the bone\r\n // palette so a bone-parented attachment is placed by its bone.\r\n const { bones, boneCount } = this.GetBoneTransforms();\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n attachment.UpdateVisibility(updateContext, this.worldTransform, bones, boneCount);\r\n }\r\n\r\n if (this.#isVisible)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n // Carbon (cpp:441-446) feeds animated bone matrices to the decal first\r\n // - skipped until the JS animation seam exists. Carbon passes\r\n // &m_parentData (per-object shading struct, GPU seam); the owning\r\n // child stands in as the duck-typed parent.\r\n decal?.UpdateVisibility(updateContext, this);\r\n }\r\n }\r\n\r\n return this.#isVisible;\r\n }\r\n\r\n /**\r\n * Collects this child (and its decals) as renderables (Carbon\r\n * EveChildMesh::GetRenderables, cpp:571-616): instanced meshes contribute\r\n * only while the per-instance gate passed; decals ride along through their\r\n * duck-typed renderable collectors (mesh cache is engine-owned, passed null\r\n * as in EveSpaceObject2.GetRenderables).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The decal mesh cache is engine-owned (null placeholder); collection structure is ported.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.#isVisible)\r\n {\r\n return out;\r\n }\r\n\r\n const instanced = typeof this.mesh?.GetInstanceBoundsClosestToPoint === \"function\";\r\n\r\n if (instanced)\r\n {\r\n if (this.#instancesVisible)\r\n {\r\n out.push(this);\r\n if (this.decals.length && this.mesh.GetGeometryResource())\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal?.GetInstancedRenderables?.(out, null, this.mesh, this.currentInstanceScreenSize);\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n out.push(this);\r\n const geometryResource = this.mesh?.GetGeometryResource();\r\n if (this.decals.length && geometryResource)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal?.GetRenderables(out, null, geometryResource, this.currentScreenSize);\r\n }\r\n }\r\n }\r\n\r\n return out;\r\n }\r\n\r\n /** Carbon EveChildMesh::GetBoundingSphere (cpp:618-627): the realized world\r\n * sphere, valid only after an update produced bounds (radius > 0). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create(), _query = 0)\r\n {\r\n if (this.#worldBoundingSphere[3] > 0)\r\n {\r\n vec4.copy(out, this.#worldBoundingSphere);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildMesh::HasTransparentBatches (cpp:629-637). */\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n if (this.display && this.mesh)\r\n {\r\n if ((this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\r\n for (const overlay of this.overlayEffects)\r\n {\r\n if (overlay.HasTransparentArea()) return true;\r\n }\r\n for (const overlay of this.#parentOverlayEffects ?? [])\r\n {\r\n if (overlay.HasTransparentArea()) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildMesh::IsVisible (cpp:639-650): sphere-in-frustum plus the\r\n * estimated pixel size against the context visibility threshold. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Frustum and threshold arrive via the duck-typed update context instead of renderer state.\")\r\n IsVisible(updateContext)\r\n {\r\n if (this.#worldBoundingSphere[3] > 0)\r\n {\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n if (frustum?.IsSphereVisible(this.#worldBoundingSphere) !== false)\r\n {\r\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\r\n const size = Number(typeof method === \"function\" ? method.call(frustum, this.#worldBoundingSphere) : 0) || 0;\r\n const threshold = Number(updateContext?.GetVisibilityThreshold?.() ?? updateContext?.visibilityThreshold) || 0;\r\n return size >= threshold;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildMesh::GetBatches (cpp:652-670): the mesh delegates per\r\n * batch type and activated attachments recurse, at\r\n * min(currentInstanceScreenSize, currentScreenSize) and with a reverse-winding\r\n * flag from Determinant(m_worldTransform) < 0 - a negative determinant means\r\n * the transform mirrors, which flips triangle facing. A determinant is\r\n * transpose-invariant, so the row-vector/column-vector difference does not\r\n * apply to this test. Returns whether any batch was committed (JS addition;\r\n * Carbon returns void). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBatches(batches, batchType, perObjectData, reason = Tr2RenderReason.TR2RENDERREASON_NORMAL)\r\n {\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n\r\n let committed = false;\r\n\r\n if (this.mesh)\r\n {\r\n committed = this.mesh.GetBatches(\r\n batches,\r\n this.mesh.GetAreas(batchType),\r\n perObjectData,\r\n Math.min(this.currentInstanceScreenSize, this.currentScreenSize),\r\n mat4.determinant(this.worldTransform) < 0) === true;\r\n }\r\n\r\n if (this.#activationStrength !== 0)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n if (!attachment) continue;\r\n committed = attachment.GetBatches(batches, batchType, perObjectData, reason) === true || committed;\r\n }\r\n }\r\n\r\n committed = this.GetBatchesFromOverlayVector(batches, perObjectData, batchType) || committed;\r\n\r\n return committed;\r\n }\r\n\r\n /** Emits damage, child-owned, then inherited parent overlays over this mesh. */\r\n @carbon.method\r\n @impl.adapted\r\n GetBatchesFromOverlayVector(batches, perObjectData, batchType)\r\n {\r\n const damageEffect = this.damageOverlay\r\n ? this.damageOverlay.GetArmorDamageShader(batchType)\r\n : null;\r\n const parentOverlays = this.#parentOverlayEffects;\r\n if (!this.mesh || (!damageEffect && !this.overlayEffects.length && !parentOverlays?.length)) return false;\r\n\r\n const geometry = this.mesh.GetGeometryResource();\r\n if (!geometry || geometry.IsGood() === false) return false;\r\n\r\n if (!this.#overlayAreaBlocksBuilt)\r\n {\r\n CollectOverlayAreaBlocks(this.mesh, this.#overlayAreaBlocks);\r\n this.#overlayAreaBlocksBuilt = true;\r\n }\r\n\r\n const meshIndex = this.mesh.GetMeshIndex();\r\n const lod = geometry.GetMeshLod(\r\n meshIndex, Math.min(this.currentInstanceScreenSize, this.currentScreenSize));\r\n let committed = false;\r\n\r\n if (damageEffect)\r\n {\r\n committed = EmitDamageOverlayBatches(\r\n batches, perObjectData, damageEffect, this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\r\n }\r\n if (this.overlayEffects.length)\r\n {\r\n committed = EmitOverlayBatches(\r\n batches, perObjectData, batchType, this.overlayEffects,\r\n this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\r\n }\r\n if (parentOverlays?.length)\r\n {\r\n committed = EmitOverlayBatches(\r\n batches, perObjectData, batchType, parentOverlays,\r\n this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon EveChildMesh::GetShadowBatches (cpp:672-681): the OPAQUE areas\r\n * only, gated on display/mesh/hasUpdated, at the caller's shadow pixel size\r\n * rather than the child's own screen size. Returns whether any batch was\r\n * committed (JS addition; Carbon returns void). */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowBatches(batches, perObjectData, shadowPixelSize = Infinity)\r\n {\r\n if (this.display && this.mesh && this.#hasUpdated)\r\n {\r\n return this.mesh.GetBatches(\r\n batches,\r\n this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_OPAQUE),\r\n perObjectData,\r\n shadowPixelSize,\r\n mat4.determinant(this.worldTransform) < 0) === true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildMesh::GetSortValue (cpp:787-792): view distance scaled by\r\n * sortValueScale plus sortValueOffset. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z) * this.sortValueScale + this.sortValueOffset;\r\n }\r\n\r\n /** Carbon EveChildMesh::GetShadowPerObjectData (cpp:794-797) forwards the\r\n * shadow pass to the same per-object record. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(accumulator = null)\r\n {\r\n return this.GetPerObjectData(accumulator);\r\n }\r\n\r\n /**\r\n * Carbon EveChildMesh::GetPerObjectData (cpp:799-843): resets the morph\r\n * counters, uploads the bone and morph rings, then hands back a handle over\r\n * this child's two PERSISTENT buffers.\r\n *\r\n * The ring OFFSETS (`boneOffsets[0..1]`, `morphTargetAnimationDataOffset`,\r\n * `morphTargetVertexDataOffset`, `bakedMorphTargetVertexDataOffset`) are GPU\r\n * addresses with no CPU derivation, so they keep their defaults; the counts,\r\n * which are CPU-known, are written.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"GPU ring-buffer offsets have no CPU derivation and keep their defaults; every CPU-known field is filled.\")\r\n GetPerObjectData(_accumulator = null)\r\n {\r\n this.#perObjectData.vs.Set(\"activeMorphTargetsCount\", [ 0 ]);\r\n // Carbon seeds the baked-morph offset with UINT32_MAX, not zero.\r\n this.#perObjectData.vs.Set(\"bakedMorphTargetVertexDataOffset\", [ 0xffffffff ]);\r\n\r\n if (this.animationUpdater && this.animationUpdater.IsInitialized())\r\n {\r\n const boneCount = this.animationUpdater.GetMeshBoneCount();\r\n this.#perObjectData.vs.SetIndex(\"boneOffsets\", 2, [ boneCount ]);\r\n }\r\n\r\n return { vs: this.#perObjectData.vs, ps: this.#perObjectData.ps };\r\n }\r\n\r\n /**\r\n * Carbon's two IsCastingShadow overloads, dispatched on the second argument:\r\n * a position vector (length >= 3) selects the sphere-overlap overload\r\n * (cpp:338-364); anything else is the shadow-frustum overload (cpp:295-336),\r\n * whose Carbon out-param float& sizeInShadow becomes the optional trailing\r\n * length-1 array (out-params last).\r\n * @param {Object} cameraFrustum\r\n * @param {Object|Float32Array} shadowFrustumOrPosition\r\n * @param {Number} renderReasonOrRadius\r\n * @param {Array|Number} sizeInShadowOutOrRenderReason\r\n * @returns {Boolean}\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overload dispatch by argument shape and a length-1 out array replace C++ overloading and the float& out-param; the shadow math is ported.\")\r\n IsCastingShadow(cameraFrustum, shadowFrustumOrPosition, renderReasonOrRadius, sizeInShadowOutOrRenderReason = null)\r\n {\r\n if (!this.display || !this.castShadow || !this.#hasUpdated)\r\n {\r\n return false;\r\n }\r\n\r\n const positionOverload = typeof shadowFrustumOrPosition?.length === \"number\" &&\r\n shadowFrustumOrPosition.length >= 3;\r\n const renderReason = positionOverload\r\n ? Number(sizeInShadowOutOrRenderReason ?? Tr2RenderReason.TR2RENDERREASON_NORMAL)\r\n : Number(renderReasonOrRadius ?? Tr2RenderReason.TR2RENDERREASON_NORMAL);\r\n\r\n if (renderReason === Tr2RenderReason.TR2RENDERREASON_REFLECTION &&\r\n !ShouldReflect(this.reflectionMode))\r\n {\r\n return false;\r\n }\r\n\r\n if (positionOverload)\r\n {\r\n // Carbon (cpp:338-364): squared distance between the world sphere and\r\n // the query sphere against their combined radius.\r\n if (!this.GetBoundingSphere(SHADOW_SPHERE_SCRATCH))\r\n {\r\n return false;\r\n }\r\n const position = shadowFrustumOrPosition;\r\n const radius = Number(renderReasonOrRadius) || 0;\r\n const dx = SHADOW_SPHERE_SCRATCH[0] - position[0];\r\n const dy = SHADOW_SPHERE_SCRATCH[1] - position[1];\r\n const dz = SHADOW_SPHERE_SCRATCH[2] - position[2];\r\n const combined = radius + SHADOW_SPHERE_SCRATCH[3];\r\n return dx * dx + dy * dy + dz * dz - combined * combined < 0;\r\n }\r\n\r\n // Carbon (cpp:295-336): shadow-frustum visibility, then the size in the\r\n // shadow map from the instance sphere nearest the shadow eye (falling back\r\n // to the whole world sphere).\r\n const shadowFrustum = shadowFrustumOrPosition;\r\n const sizeOut = sizeInShadowOutOrRenderReason;\r\n if (sizeOut)\r\n {\r\n sizeOut[0] = 0;\r\n }\r\n\r\n if (this.#worldBoundingSphere[3] <= 0)\r\n {\r\n return false;\r\n }\r\n\r\n let sizeInShadow = 0;\r\n if (shadowFrustum?.IsVisible?.(cameraFrustum, this.#worldBoundingSphere))\r\n {\r\n let sphere = this.#worldBoundingSphere;\r\n if (typeof this.mesh?.GetInstanceBoundsClosestToPoint === \"function\")\r\n {\r\n // Carbon: TransformCoord(shadowFrustum.GetEyePos(), Inverse(\r\n // m_worldTransform)) - single-matrix point transform (no composition).\r\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\r\n {\r\n mat4.identity(INVERSE_WORLD_SCRATCH);\r\n }\r\n const eyePos = shadowFrustum?.GetEyePos?.() ?? ZERO_VEC3;\r\n vec3.transformMat4(LOCAL_VIEW_SCRATCH, eyePos, INVERSE_WORLD_SCRATCH);\r\n const instanceBounds = this.mesh.GetInstanceBoundsClosestToPoint(LOCAL_VIEW_SCRATCH);\r\n if (instanceBounds)\r\n {\r\n // Carbon: instanceBounds.Transform(m_worldTransform) - single-matrix\r\n // sphere transform.\r\n sph3.set(\r\n INSTANCE_SPHERE_SCRATCH,\r\n instanceBounds.center[0],\r\n instanceBounds.center[1],\r\n instanceBounds.center[2],\r\n instanceBounds.radius\r\n );\r\n sph3.transformMat4(INSTANCE_SPHERE_SCRATCH, INSTANCE_SPHERE_SCRATCH, this.worldTransform);\r\n sphere = INSTANCE_SPHERE_SCRATCH;\r\n }\r\n }\r\n sizeInShadow = Number(shadowFrustum?.GetSizeInShadow?.(sphere)) || 0;\r\n }\r\n\r\n if (sizeOut)\r\n {\r\n sizeOut[0] = sizeInShadow;\r\n }\r\n return sizeInShadow > 5;\r\n }\r\n\r\n /** Carbon EveChildMesh::ChangeLOD (cpp:1052-1054) is an intentional no-op. */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD(_lod)\r\n {\r\n }\r\n\r\n /** Carbon EveChildMesh::RegisterComponents (cpp:239-269): LightOwner when\r\n * lights are authored; ReflectionRenderable (ShouldReflect) and ShadowCaster\r\n * (castShadow) only when a mesh is present; then forwards the attachments.\r\n * Gate m_display. \"MeshMorph\" stays OUT-OF-BAND: Carbon registers it at\r\n * baked-morph need inside BakeMorphs (cpp:1404-1409), not here - the JS\r\n * BakeMorphs stub is the site that would register it when the GPU morph\r\n * bake is ported. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n\r\n if (this.mesh !== null)\r\n {\r\n if (ShouldReflect(this.reflectionMode))\r\n {\r\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\r\n }\r\n if (this.castShadow)\r\n {\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.Register(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildMesh::UnRegisterComponents (cpp:275-290): forwards the\r\n * attachments only (own components were already removed by\r\n * EveEntity::UnRegister, EveEntity.cpp:90); no display re-check.\r\n * UnregisterAudioGeometry (cpp:277) is audio-engine-owned and unported. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UnRegister(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildMesh::GetLights (cpp:1638-1652): BOTH gates (empty\r\n * lights and display, cpp:1640 - unlike EveSpaceObject2's display-only),\r\n * then per light AddLight(manager, worldTransform, 1, bones, boneCount)\r\n * FOLLOWED by SetBrightnessMultiplier(m_activationStrength) - the\r\n * one-frame-lag order is contract (the submission uses the multiplier\r\n * stamped on the previous pass; the first pass uses the Tr2Light default\r\n * 1). */\r\n @carbon.method\r\n @impl.implemented\r\n GetLights(lightManager)\r\n {\r\n if (!this.lights.length || !this.display)\r\n {\r\n return;\r\n }\r\n\r\n // cpp:1645 - bones so a bone-parented light is placed by its bone.\r\n const { bones, boneCount } = this.GetBoneTransforms();\r\n\r\n for (const light of this.lights)\r\n {\r\n light?.AddLight(lightManager, this.worldTransform, 1, bones, boneCount);\r\n light?.SetBrightnessMultiplier?.(this.#activationStrength);\r\n }\r\n }\r\n\r\n /** Carbon EveChildMesh::GetID returns GetRawRoot(), i.e. this object. */\r\n @carbon.method\r\n @impl.implemented\r\n GetID(_area = 0)\r\n {\r\n return this;\r\n }\r\n\r\n /** Invalidates merged locators on both the old and new owner. */\r\n @carbon.method\r\n @impl.implemented\r\n SetOwner(owner)\r\n {\r\n if (this.GetOwner() === owner) return;\r\n const oldOwner = this.GetOwner();\r\n if (oldOwner) oldOwner.InvalidateMergedLocators(\"structure\");\r\n super.SetOwner(owner);\r\n if (owner) owner.InvalidateMergedLocators(\"structure\");\r\n }\r\n\r\n /** Contributes child-owned locator sets with the child-to-object transform. */\r\n @carbon.method\r\n @impl.adapted\r\n CollectOwnedLocatorSets(parentTransform, out)\r\n {\r\n if (!this.ownedLocatorSets.length) return;\r\n const local = this.RebuildLocalTransform();\r\n const childToObject = mat4.create();\r\n mat4.multiply(childToObject, parentTransform, local);\r\n for (const sets of this.ownedLocatorSets)\r\n {\r\n out.push({ childToObject: mat4.clone(childToObject), owner: this, sets });\r\n }\r\n }\r\n\r\n /**\r\n * Contributes this child's geometry to the owner's merged raycast set\r\n * (Carbon EveChildMesh.cpp:2061-2077): one record per mesh, its areas\r\n * appended to the shared pool by batch type.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CollectOwnedGeometry(type, parentTransform, out, areaPool)\r\n {\r\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\r\n if (!geometry) return;\r\n const local = this.RebuildLocalTransform();\r\n const childToObject = mat4.create();\r\n mat4.multiply(childToObject, parentTransform, local);\r\n const areaStart = areaPool.length;\r\n EveCollectAreas(type, this.mesh, areaPool);\r\n out.push({ geometry, childToObject, areaStart, areaCount: areaPool.length - areaStart });\r\n }\r\n\r\n /** Replaces the locator sets owned by this child and invalidates the owner. */\r\n @carbon.method\r\n @impl.adapted\r\n SetOwnedLocatorSets(sets)\r\n {\r\n this.ownedLocatorSets = Array.from(sets ?? []);\r\n const owner = this.GetOwner();\r\n if (owner) owner.InvalidateMergedLocators(\"structure\");\r\n }\r\n\r\n /** Returns this child mesh's armour and hull damage overlay. */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageOverlay()\r\n {\r\n return this.damageOverlay;\r\n }\r\n\r\n /** Creates this child mesh's damage overlay when it does not yet exist. */\r\n @carbon.method\r\n @impl.implemented\r\n EnsureDamageOverlay()\r\n {\r\n this.damageOverlay ??= new EveDamageOverlay();\r\n return this.damageOverlay;\r\n }\r\n\r\n /** Sets the per-part armour damage shader stamped by SOF placement creation. */\r\n @carbon.method\r\n @impl.implemented\r\n SetArmorDamageShaderEffect(effect)\r\n {\r\n this.armorDamageShader = effect ?? null;\r\n }\r\n\r\n /** Returns the per-part armour damage shader, or null when the part has none. */\r\n @carbon.method\r\n @impl.implemented\r\n GetArmorDamageShaderEffect()\r\n {\r\n return this.armorDamageShader;\r\n }\r\n\r\n /**\r\n * Returns the locator list of this child's own damage set, or null when the\r\n * child owns no damage locators (Carbon EveChildMesh.cpp:2117-2127).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetOwnedDamageLocators()\r\n {\r\n for (const set of this.ownedLocatorSets)\r\n {\r\n if (set.HasName(\"damage\")) return set.GetLocators();\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Resolves one damage locator's BIND-pose position in the child's local\r\n * space - no bone transform, the stable overlay seed position (Carbon\r\n * EveChildMesh.cpp:2129-2139).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorBindPositionLocal(index, out = vec3.create())\r\n {\r\n const locators = this.GetOwnedDamageLocators();\r\n const locatorIndex = Number(index) | 0;\r\n if (!locators || locatorIndex < 0 || locatorIndex >= locators.length) return false;\r\n vec3.copy(out, locators[locatorIndex].position);\r\n return true;\r\n }\r\n\r\n /**\r\n * Resolves one damage locator's animated position and direction in the\r\n * child's local space, posed by this child's own animation updater (Carbon\r\n * EveChildMesh.cpp:2141-2151).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorAnimatedLocal(index, outPosition, outDirection)\r\n {\r\n const locators = this.GetOwnedDamageLocators();\r\n const locatorIndex = Number(index) | 0;\r\n if (!locators || locatorIndex < 0 || locatorIndex >= locators.length) return false;\r\n EveGetLocatorPose(outPosition, outDirection, this.animationUpdater, locators[locatorIndex]);\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon EveChildMesh::GetPickingBatches (cpp:862-889): collects the geometry\r\n * a pick pass should test, by mask. Unlike the hull's version this one has no\r\n * overlay effects to pull in.\r\n *\r\n * @param {Object} batches - the picking accumulator\r\n * @param {Number} pickTypes - a Tr2PickType mask\r\n * @param {Object} perObjectData - this child's per-object record\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null)\r\n {\r\n if (pickTypes & Tr2PickType.PICK_TYPE_PICKING)\r\n {\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);\r\n }\r\n\r\n if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE)\r\n {\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);\r\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);\r\n }\r\n\r\n if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT)\r\n {\r\n // A hidden mesh suppresses the transparent pass only; Carbon returns\r\n // early here, after the collections above have already run.\r\n if (!this.mesh || this.mesh.display === false)\r\n {\r\n return true;\r\n }\r\n\r\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE ])\r\n {\r\n const areas = this.mesh.GetAreas(batchType);\r\n\r\n if (areas)\r\n {\r\n this.mesh.GetBatches?.(batches, areas, perObjectData);\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Binds the animation updater to this mesh's geometry, so a child with no\r\n * animation resource of its own animates from the mesh's own bone binding.\r\n *\r\n * Carbon `EveChildMesh::InitializeAnimation` (cpp:217-232). Only runs when\r\n * the updater has no authored resPath - one that does keeps its own\r\n * resource. When the mesh has no geometry yet the shared binding is cleared\r\n * rather than left stale, so a later mesh swap rebinds cleanly.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n InitializeAnimation()\r\n {\r\n const updater = this.animationUpdater;\r\n\r\n if (!updater || updater.resPath_)\r\n {\r\n return;\r\n }\r\n\r\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\r\n\r\n if (geometry)\r\n {\r\n updater.SetUseMeshBinding(true);\r\n updater.SetSharedGeometryRes(geometry);\r\n return;\r\n }\r\n\r\n updater.SetSharedGeometryRes(null);\r\n }\r\n\r\n /** Carbon BakeMorphs runs the merge-morphs GPU compute pass; GPU-owned. */\r\n @carbon.method\r\n @impl.notImplemented\r\n BakeMorphs(..._args)\r\n {\r\n throw new Error(\"EveChildMesh.BakeMorphs is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon UnbakeMorphs releases the baked-morph GPU allocation; GPU-owned. */\r\n @carbon.method\r\n @impl.notImplemented\r\n UnbakeMorphs(..._args)\r\n {\r\n throw new Error(\"EveChildMesh.UnbakeMorphs is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon IsMeshBaked reads the baked-morph GPU allocation state; GPU-owned. */\r\n @carbon.method\r\n @impl.notImplemented\r\n IsMeshBaked(..._args)\r\n {\r\n throw new Error(\"EveChildMesh.IsMeshBaked is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n // Carbon s_instanceScreenSizeThreshold (EveChildMesh.cpp:22).\r\n static #instanceScreenSizeThreshold = 1;\r\n\r\n static Origin = Origin;\r\n\r\n static ReflectionMode = ReflectionMode;\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n}\r\n\r\nfunction ReadNamedMorph(values, name)\r\n{\r\n if (values instanceof Map)\r\n {\r\n return values.has(name) ? values.get(name) : undefined;\r\n }\r\n\r\n if (values && typeof values === \"object\" && Object.hasOwn(values, name))\r\n {\r\n return values[name];\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction ReadMorphWeight(value, name, source)\r\n{\r\n const weight = Number(value && typeof value === \"object\" ? value.weight : value);\r\n\r\n if (!Number.isFinite(weight))\r\n {\r\n throw new TypeError(`EveChildMesh ${source} morph target \"${name}\" weight must be finite`);\r\n }\r\n\r\n return weight;\r\n}\r\n\r\nfunction NormalizeMorphFilter(value)\r\n{\r\n if (typeof value === \"string\")\r\n {\r\n const normalized = value.toLowerCase();\r\n if (normalized === \"runtime\" || normalized === \"runtime_evaluated\") return 0;\r\n if (normalized === \"baked\") return 1;\r\n if (normalized === \"all\") return 2;\r\n }\r\n\r\n const filter = Number(value);\r\n if (filter === 0 || filter === 1 || filter === 2) return filter;\r\n throw new TypeError(`Unsupported EveChildMesh morph target filter \"${value}\"`);\r\n}\r\n"],"names":["INVERSE_WORLD_SCRATCH","mat4","create","LOCAL_VIEW_SCRATCH","vec3","INSTANCE_SPHERE_SCRATCH","vec4","SHADOW_SPHERE_SCRATCH","BOX_CORNER_SCRATCH","BOX_QUERY_SCRATCH","min","max","ZERO_VEC3","NO_BONE_TRANSFORMS","Object","freeze","bones","boneCount","_EveChildMesh","_identity","EveChildMesh","_withITr2Renderable","withITr2Renderable","EveChildTransform","e","_init_ownedLocatorSets","_init_extra_ownedLocatorSets","_init_armorDamageShader","_init_extra_armorDamageShader","_init_reflectionMode","_init_extra_reflectionMode","_init_transformModifiers","_init_extra_transformModifiers","_init_worldTransform","_init_extra_worldTransform","_init_display","_init_extra_display","_init_inheritOverlayEffects","_init_extra_inheritOverlayEffects","_init_overlayEffects","_init_extra_overlayEffects","_init_damageOverlay","_init_extra_damageOverlay","_init_castShadow","_init_extra_castShadow","_init_mesh","_init_extra_mesh","_init_name","_init_extra_name","_init_rotation","_init_extra_rotation","_init_translation","_init_extra_translation","_init_scaling","_init_extra_scaling","_init_localTransform","_init_extra_localTransform","_init_decals","_init_extra_decals","_init_staticTransform","_init_extra_staticTransform","_init_animationUpdater","_init_extra_animationUpdater","_init_attachments","_init_extra_attachments","_init_lights","_init_extra_lights","_init_lowestLodVisible","_init_extra_lowestLodVisible","_init_minScreenSize","_init_extra_minScreenSize","_init_sortValueOffset","_init_extra_sortValueOffset","_init_sortValueScale","_init_extra_sortValueScale","_init_currentScreenSize","_init_extra_currentScreenSize","_init_currentInstanceScreenSize","_init_extra_currentInstanceScreenSize","_init_useSRT","_init_extra_useSRT","_init_updateAnimation","_init_extra_updateAnimation","_init_origin","_init_extra_origin","_init_instanceTransforms","_init_extra_instanceTransforms","_init_sofDna","_init_extra_sofDna","_init_sofParentHullName","_init_extra_sofParentHullName","_init_sofLocatorSetName","_init_extra_sofLocatorSetName","_init_sofLocatorIndex","_init_extra_sofLocatorIndex","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","objectRef","notify","int32","enum","read","boolean","string","quat","float32","rebuild","array","carbon","method","impl","adapted","implemented","reason","contextual","notImplemented","constructor","args","runtimeEvaluatedOffset","runtimeEvaluatedCount","bakedOffset","bakedCount","allCount","createChildPerObjectRecords","ownedLocatorSets","armorDamageShader","_ResetVisibilityState","currentScreenSize","currentInstanceScreenSize","_GetActivationStrength","reflectionMode","transformModifiers","worldTransform","display","inheritOverlayEffects","overlayEffects","damageOverlay","castShadow","mesh","name","rotation","translation","scaling","fromValues","localTransform","decals","staticTransform","animationUpdater","attachments","lights","lowestLodVisible","minScreenSize","sortValueOffset","sortValueScale","useSRT","updateAnimation","origin","instanceTransforms","sofDna","sofParentHullName","sofLocatorSetName","sofLocatorIndex","Initialize","RebuildLocalTransform","InitializeAnimation","Setup","scale","undefined","Number","SetInstanceTransforms","instances","next","transform","length","TypeError","push","clone","GetInstanceTransforms","SetMesh","AddOverlayEffect","effect","RemoveOverlayEffect","index","indexOf","splice","GetOverlayEffectByName","find","String","SetOrigin","SetScale","copy","SetReflectionMode","mode","SetCastShadow","SetMinScreenSize","GetLocalToWorldTransform","out","GetName","SetName","AddTransformModifier","modifier","AddDecal","decal","AddAttachment","attachment","ClearAttachments","AddLight","light","ClearLights","IsAlwaysOn","SetShaderOption","value","GetMorphTargetNames","SetMorphTargetWeight","weight","GetMorphTargetWeight","UpdateMorphAnimationBuffer","names","Array","isArray","manual","GetMorphAnimations","records","map","ReadMorphWeight","ReadNamedMorph","baked","IsBakedMorph","GetBakedMorphTarget","IsInitialized","animated","record","runtime","inactive","GetMorphTargets","filter","normalized","NormalizeMorphFilter","offset","count","slice","GetSofSourceLocator","UpdateSyncronous","updateContext","_params","time","GetTime","overlay","Update","UpdateAsyncronous","params","parentTransform","localToWorldTransform","UpdateTransform","applyTransformModifiers","parent","spaceObjectParent","inheritParentPerObjectData","vs","Set","ps","stampChildTransforms","activationStrength","flicker","GetActivationStrength","shipData","Get","GetDataTextureOffset","UpdateLights","bounds","GetBounds","Infinity","set","transformMat4","sph3","fromBounds","localSphere","cx","cy","cz","Math","hypot","boundingSphere","estimatedPixelDiameter","isInFrustum","getDamageLocatorPositionOS","GetDamageLocatorBindPositionLocal","GetBoneTransforms","updater","GetRestPoseBoneTransforms","HasMeshBinding","getBoneList","geometry","GetGeometryResource","meshIndex","GetMeshIndex","GetMeshData","boneBindings","identity","Float4x3","fromMat4","Float32Array","UpdateVisibility","_parentTransform","parentLod","Tr2Lod","TR2_LOD_HIGH","frustum","GetFrustum","invLodFactor","GetInvLodFactor","GetPixelSizeAccross","instanced","GetInstanceBoundsClosestToPoint","instanceBounds","invert","viewPos","center","radius","UseWithScreenSize","boxVisible","IsBoxVisible","GetRenderables","GetInstancedRenderables","geometryResource","GetBoundingSphere","_query","HasTransparentBatches","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","HasTransparentArea","IsVisible","IsSphereVisible","GetPixelSizeAccrossEst","size","call","threshold","GetVisibilityThreshold","visibilityThreshold","GetBatches","batches","batchType","perObjectData","Tr2RenderReason","TR2RENDERREASON_NORMAL","committed","determinant","GetBatchesFromOverlayVector","damageEffect","GetArmorDamageShader","parentOverlays","IsGood","CollectOverlayAreaBlocks","lod","GetMeshLod","EmitDamageOverlayBatches","EmitOverlayBatches","GetShadowBatches","shadowPixelSize","TRIBATCHTYPE_OPAQUE","GetSortValue","renderContext","viewPosition","GetViewPosition","x","y","z","GetShadowPerObjectData","accumulator","GetPerObjectData","_accumulator","GetMeshBoneCount","SetIndex","IsCastingShadow","cameraFrustum","shadowFrustumOrPosition","renderReasonOrRadius","sizeInShadowOutOrRenderReason","positionOverload","renderReason","TR2RENDERREASON_REFLECTION","ShouldReflect","position","dx","dy","dz","combined","shadowFrustum","sizeOut","sizeInShadow","sphere","eyePos","GetEyePos","GetSizeInShadow","ChangeLOD","_lod","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetLights","lightManager","SetBrightnessMultiplier","GetID","_area","SetOwner","owner","GetOwner","oldOwner","InvalidateMergedLocators","CollectOwnedLocatorSets","local","childToObject","multiply","sets","CollectOwnedGeometry","areaPool","areaStart","EveCollectAreas","areaCount","SetOwnedLocatorSets","from","GetDamageOverlay","EnsureDamageOverlay","EveDamageOverlay","SetArmorDamageShaderEffect","GetArmorDamageShaderEffect","GetOwnedDamageLocators","HasName","GetLocators","locators","locatorIndex","GetDamageLocatorAnimatedLocal","outPosition","outDirection","EveGetLocatorPose","GetPickingBatches","pickTypes","TR2_PICK_TYPE_DEFAULT","Tr2PickType","PICK_TYPE_PICKING","TRIBATCHTYPE_PICKING","PICK_TYPE_OPAQUE","TRIBATCHTYPE_DECAL","PICK_TYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","areas","resPath_","SetUseMeshBinding","SetSharedGeometryRes","BakeMorphs","_args","Error","UnbakeMorphs","IsMeshBaked","Origin","ReflectionMode","values","Map","has","get","hasOwn","source","isFinite","toLowerCase"],"mappings":"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"}
1
+ {"version":3,"file":"EveChildMesh.js","sources":["../../../../../src/trinity/eve/child/EveChildMesh.js"],"sourcesContent":["// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.h\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp\n// Source: trinity/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { sph3 } from \"#math/sph3\";\nimport { vec3 } from \"#math/vec3\";\nimport { getBoneList } from \"../../core/animation/Tr2GrannyAnimation.js\";\nimport { vec4 } from \"#math/vec4\";\nimport { carbon, impl, io, type } from \"#schema\";\nimport { ReflectionMode, TriBatchType } from \"#consts/graphics\";\nimport { EveChildTransform, applyTransformModifiers } from \"./EveChildTransform.js\";\nimport { Origin } from \"../../generated/eve/child/enums.js\";\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\nimport { Tr2RenderReason } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2Lod } from \"../EveLODHelper.js\";\nimport { Tr2PerObjectData } from \"../../core/rawData/perObjectData/Tr2PerObjectData.js\";\nimport { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from \"../../core/view/Tr2PickType.js\";\nimport {\n createChildPerObjectRecords,\n inheritParentPerObjectData,\n stampChildTransforms\n} from \"../perObjectData/childPerObjectRecords.js\";\nimport { Float4x3 } from \"../../utilities/Float4x3.js\";\nimport { EveCollectAreas } from \"./EveSpaceObjectChild.js\";\nimport { EveGetLocatorPose } from \"../locator/EveLocatorSets.js\";\nimport { EveDamageOverlay } from \"../overlays/EveDamageOverlay.js\";\nimport {\n CollectOverlayAreaBlocks,\n EmitDamageOverlayBatches,\n EmitOverlayBatches\n} from \"../overlays/overlayBatches.js\";\nimport { withITr2Renderable } from \"../../core/ITr2Renderable.js\";\n\n// Module scratch for the hot per-frame visibility/shadow paths (allocation\n// rules: copy-into, never allocate per call; child updates run sequentially so\n// the scratch is non-reentrant by construction).\nconst INVERSE_WORLD_SCRATCH = mat4.create();\nconst LOCAL_VIEW_SCRATCH = vec3.create();\nconst INSTANCE_SPHERE_SCRATCH = vec4.create();\nconst SHADOW_SPHERE_SCRATCH = vec4.create();\nconst BOX_CORNER_SCRATCH = vec3.create();\nconst BOX_QUERY_SCRATCH = { min: vec3.create(), max: vec3.create() };\nconst ZERO_VEC3 = vec3.create();\n\n// Carbon's (nullptr, 0) bone result - frozen so callers cannot mutate it.\nconst NO_BONE_TRANSFORMS = Object.freeze({ bones: null, boneCount: 0 });\n\n\n/**\n * Space-object child that draws one mesh under its own transform, owning its\n * decals, lights, attachments, morph weights, world bounds and screen-size LOD\n * state.\n */\n@type.define({ className: \"EveChildMesh\", family: \"eve/child\" })\nexport class EveChildMesh extends withITr2Renderable(EveChildTransform)\n{\n #isMorphsBaked = false;\n\n #morphAnimationBuffer = [];\n\n #morphAnimationOffsets = {\n runtimeEvaluatedOffset: 0,\n runtimeEvaluatedCount: 0,\n bakedOffset: 0,\n bakedCount: 0,\n allCount: 0\n };\n\n // Carbon m_isVisible/m_instancesVisible/m_hasUpdated/m_activationStrength:\n // runtime-only frame state (never persisted; Carbon keeps them out of the\n // Blue surface too).\n #isVisible = false;\n\n #instancesVisible = false;\n\n #hasUpdated = false;\n\n #activationStrength = 1;\n\n /** m_vsData / m_psData - this child's PERSISTENT per-object record pair. */\n #perObjectData = createChildPerObjectRecords();\n\n /** Carbon's local `lastWorldTransform` (cpp:912), kept across frames here. */\n #lastWorldTransform = mat4.create();\n\n // Carbon m_worldBoundingBox/m_worldBoundingSphere: world-space bounds\n // refreshed by UpdateAsyncronous; the sphere is invalid while radius <= 0.\n #worldBoundsMin = vec3.create();\n\n #worldBoundsMax = vec3.create();\n\n #worldBoundsValid = false;\n\n #worldBoundingSphere = vec4.create();\n\n /** Identity rest-pose palette for skinned shaders without live animation. */\n #restPoseBoneTransforms = null;\n\n #parentOverlayEffects = null;\n\n #overlayAreaBlocks = [ [], [] ];\n\n #overlayAreaBlocksBuilt = false;\n\n // Carbon sets these two programmatically from SOF (EveSOF.cpp:3971-3972);\n // CarbonEngineJS delivers built objects as documents, so both persist.\n @io.persist\n @type.list(\"EveLocatorSets\")\n ownedLocatorSets = [];\n\n @io.persist\n @type.objectRef(\"Tr2Effect\")\n armorDamageShader = null;\n\n /**\n * Clears the private visibility state for a derived child whose own Carbon\n * cull rejects it before EveChildMesh::UpdateVisibility runs.\n *\n * EveChildInstanceMeshRenderer owns exactly that two-stage cull. Keeping the\n * mutation here preserves one state owner instead of shadowing the four\n * private values in the subclass.\n */\n _ResetVisibilityState()\n {\n this.#isVisible = false;\n this.currentScreenSize = -1;\n this.#instancesVisible = false;\n this.currentInstanceScreenSize = -1;\n }\n\n /** Carbon-derived classes read m_activationStrength after the mesh update. */\n _GetActivationStrength()\n {\n return this.#activationStrength;\n }\n\n @io.notify\n @io.persist\n @type.int32\n @type.enum(\"ReflectionMode\")\n reflectionMode = 3;\n\n @io.persist\n @type.list(\"IEveChildTransformModifier\")\n transformModifiers = [];\n\n @io.read\n @type.mat4\n worldTransform = mat4.create();\n\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n @io.persist\n @type.boolean\n inheritOverlayEffects = true;\n\n @io.persist\n @type.list(\"EveMeshOverlayEffect\")\n overlayEffects = [];\n\n @io.persist\n @type.objectRef(\"EveDamageOverlay\")\n damageOverlay = null;\n\n @io.notify\n @io.persist\n @type.boolean\n castShadow = false;\n\n @io.notify\n @io.persist\n @type.objectRef(\"Tr2MeshBase\")\n mesh = null;\n\n @io.persist\n @type.string\n name = \"\";\n\n @io.persist\n @type.quat\n rotation = quat.create();\n\n @io.persist\n @type.vec3\n translation = vec3.create();\n\n @io.persist\n @type.vec3\n scaling = vec3.fromValues(1, 1, 1);\n\n @io.persist\n @type.mat4\n localTransform = mat4.create();\n\n @io.persist\n @type.list(\"EveSpaceObjectDecal\")\n decals = [];\n\n @io.persist\n @type.boolean\n staticTransform = false;\n\n @io.notify\n @io.persist\n @type.objectRef(\"Tr2GrannyAnimation\")\n animationUpdater = null;\n\n @io.persist\n @type.list(\"IEveSpaceObjectAttachment\")\n attachments = [];\n\n @io.persist\n @type.list(\"Tr2Light\")\n lights = [];\n\n @io.persist\n @type.int32\n @type.enum(\"Tr2Lod\")\n lowestLodVisible = 0;\n\n @io.persist\n @type.float32\n minScreenSize = 0;\n\n @io.persist\n @type.float32\n sortValueOffset = 0;\n\n @io.persist\n @type.float32\n sortValueScale = 1;\n\n @io.read\n @type.float32\n currentScreenSize = -1;\n\n @io.read\n @type.float32\n currentInstanceScreenSize = -1;\n\n @io.persist\n @type.boolean\n useSRT = true;\n\n @io.persist\n @type.boolean\n updateAnimation = true;\n\n // SOF-authored placement/instance values; persisted so the values\n // interchange reproduces Carbon's hidden child placement state.\n @io.persist\n @type.int32\n @type.enum(\"Origin\")\n origin = 0;\n\n @io.rebuild(\"instanceBuffer\")\n @io.persist\n @type.array(\"mat4\")\n instanceTransforms = [];\n\n @io.persist\n @type.string\n sofDna = \"\";\n\n @io.persist\n @type.string\n sofParentHullName = \"\";\n\n @io.persist\n @type.string\n sofLocatorSetName = \"\";\n\n @io.persist\n @type.string\n sofLocatorIndex = \"\";\n\n /**\n * Rebuilds the local transform up front when the child is marked\n * staticTransform, since UpdateTransform will not rebuild it on later frames.\n */\n @carbon.method\n @impl.adapted\n Initialize()\n {\n if (this.staticTransform)\n {\n this.RebuildLocalTransform();\n }\n\n // cpp:84 - bind the updater to this mesh's geometry.\n this.InitializeAnimation();\n\n return true;\n }\n\n /**\n * Applies the authored scale/rotation/translation and, when supplied, the\n * lowest LOD level at which the child stays visible; returns the rebuilt local\n * transform.\n */\n @carbon.method\n @impl.implemented\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\n {\n super.Setup(scale, rotation, translation, lowestLodVisible);\n if (lowestLodVisible !== null && lowestLodVisible !== undefined)\n {\n this.lowestLodVisible = Number(lowestLodVisible) | 0;\n }\n return this.localTransform;\n }\n\n /**\n * Replaces the instance placement list with clones of the supplied matrices, so later caller mutations do not reach the child.\n * @param {Iterable<Float32Array>} instances - 16-value matrices; a wrongly sized entry throws TypeError\n * @returns {Array<Float32Array>} the stored list\n */\n @carbon.method\n @impl.implemented\n SetInstanceTransforms(instances)\n {\n const next = [];\n for (const transform of instances ?? [])\n {\n if (!transform || transform.length !== 16)\n {\n throw new TypeError(\"EveChildMesh instance transforms must contain 16 values\");\n }\n next.push(mat4.clone(transform));\n }\n this.instanceTransforms = next;\n return this.instanceTransforms;\n }\n\n /**\n * Returns the live instance transform list, not a copy - mutating it changes\n * what the child renders.\n */\n @carbon.method\n @impl.adapted\n GetInstanceTransforms()\n {\n return this.instanceTransforms;\n }\n\n /**\n * Assigns the Tr2MeshBase this child draws; a nullish value clears it, which\n * also makes the child permanently invisible (UpdateVisibility requires a\n * mesh).\n */\n @carbon.method\n @impl.implemented\n SetMesh(mesh)\n {\n this.mesh = mesh ?? null;\n this.#overlayAreaBlocksBuilt = false;\n this.#restPoseBoneTransforms = null;\n }\n\n /** Appends an overlay owned by this child; inherited hull overlays render after it. */\n @carbon.method\n @impl.implemented\n AddOverlayEffect(effect)\n {\n if (!effect) throw new TypeError(\"EveChildMesh overlay effect must not be null\");\n this.overlayEffects.push(effect);\n }\n\n /** Removes the first matching owned overlay. */\n @carbon.method\n @impl.implemented\n RemoveOverlayEffect(effect)\n {\n const index = this.overlayEffects.indexOf(effect);\n if (index !== -1) this.overlayEffects.splice(index, 1);\n }\n\n /** Returns the first owned overlay whose authored name matches. */\n @carbon.method\n @impl.implemented\n GetOverlayEffectByName(name)\n {\n return this.overlayEffects.find(effect => effect.name === String(name)) ?? null;\n }\n\n /**\n * Records whether this child's placement was authored in space or by SOF (the\n * Origin enum).\n */\n @carbon.method\n @impl.implemented\n SetOrigin(origin)\n {\n this.origin = Number(origin) | 0;\n }\n\n /**\n * Copies the given scale into the child's SRT scaling; it reaches the world\n * transform on the next local-transform rebuild.\n */\n @carbon.method\n @impl.implemented\n SetScale(scale)\n {\n vec3.copy(this.scaling, scale);\n }\n\n /**\n * Sets the reflection mode, which decides whether the child registers as a\n * ReflectionRenderable and whether it casts shadows during reflection passes.\n */\n @carbon.method\n @impl.implemented\n SetReflectionMode(mode)\n {\n this.reflectionMode = Number(mode) | 0;\n }\n\n /**\n * Sets whether the child registers as a shadow caster and contributes opaque\n * shadow batches.\n */\n @carbon.method\n @impl.implemented\n SetCastShadow(castShadow)\n {\n this.castShadow = !!castShadow;\n }\n\n /**\n * Sets the minimum screen size, in pixels across, that the child's world\n * bounding sphere must reach - after the frame's inverse LOD factor scaling -\n * before UpdateVisibility marks it visible.\n */\n @carbon.method\n @impl.implemented\n SetMinScreenSize(minScreenSize)\n {\n this.minScreenSize = Number(minScreenSize);\n }\n\n /** Carbon EveChildMesh::GetLocalToWorldTransform (cpp:1047-1050); the\n * optional out follows the EveChildInstancedMeshes copy-out shape. */\n @carbon.method\n @impl.implemented\n GetLocalToWorldTransform(out = null)\n {\n if (out)\n {\n return mat4.copy(out, this.worldTransform);\n }\n return this.worldTransform;\n }\n\n /**\n * The authored name, persisted with the child and used to identify it in the\n * parent graph.\n */\n @carbon.method\n @impl.implemented\n GetName()\n {\n return this.name;\n }\n\n /** Sets the authored child name, coercing nullish to the empty string. */\n @carbon.method\n @impl.implemented\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n /**\n * Appends a transform modifier; modifiers fold over the child's world\n * transform in insertion order on each async update.\n */\n @carbon.method\n @impl.implemented\n AddTransformModifier(modifier)\n {\n this.transformModifiers.push(modifier);\n }\n\n /**\n * Appends a decal; decals refresh their visibility only while the child itself\n * is visible, and ride along in GetRenderables when the mesh has a geometry\n * resource.\n */\n @carbon.method\n @impl.implemented\n AddDecal(decal)\n {\n this.decals.push(decal);\n }\n\n /**\n * Appends an attachment; attachments refresh their lights and visibility every\n * frame regardless of the child's own visibility.\n */\n @carbon.method\n @impl.implemented\n AddAttachment(attachment)\n {\n this.attachments.push(attachment);\n }\n\n /**\n * Drops every attachment, removing their lights, batches and visibility\n * updates from this child.\n */\n @carbon.method\n @impl.implemented\n ClearAttachments()\n {\n this.attachments.length = 0;\n }\n\n /**\n * Appends a light, submitted to the light manager from the child's world\n * transform while the child displays.\n */\n @carbon.method\n @impl.implemented\n AddLight(light)\n {\n this.lights.push(light);\n }\n\n /**\n * Drops every light, which also stops the child registering as a LightOwner on\n * the next component registration.\n */\n @carbon.method\n @impl.implemented\n ClearLights()\n {\n this.lights.length = 0;\n }\n\n /** Returns true unconditionally - a child mesh reports itself as always on. */\n @carbon.method\n @impl.implemented\n IsAlwaysOn()\n {\n return true;\n }\n\n /** Forwards a shader option to the mesh, every decal and every attachment. */\n @carbon.method\n @impl.implemented\n SetShaderOption(name, value)\n {\n this.mesh?.SetShaderOption?.(name, value);\n for (const decal of this.decals)\n {\n decal?.SetShaderOption?.(name, value);\n }\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n attachment.SetShaderOption(name, value);\n }\n }\n\n /**\n * Names of the mesh's morph targets in index order, or an empty array when the\n * mesh exposes none; the indices line up with the records GetMorphTargets\n * returns.\n */\n @carbon.method\n @impl.adapted\n GetMorphTargetNames()\n {\n return this.mesh?.GetMorphTargetNames?.() ?? [];\n }\n\n /**\n * Writes a named morph weight on the mesh; it only reaches the render path\n * after the next UpdateMorphAnimationBuffer pass re-sorts the indexed buffer.\n */\n @carbon.method\n @impl.adapted\n SetMorphTargetWeight(name, weight)\n {\n this.mesh?.SetMorphTargetWeight?.(name, weight);\n }\n\n /**\n * Reads a named morph weight straight from the mesh (0 when it has no such\n * target), bypassing any animation-driven value the morph buffer may have\n * applied.\n */\n @carbon.method\n @impl.adapted\n GetMorphTargetWeight(name)\n {\n return this.mesh?.GetMorphTargetWeight?.(name) ?? 0;\n }\n\n /** Rebuilds the source-backed indexed morph buffer from manual and animation weights. */\n @impl.adapted\n UpdateMorphAnimationBuffer()\n {\n const names = this.mesh?.GetMorphTargetNames?.();\n\n this.#morphAnimationOffsets = {\n runtimeEvaluatedOffset: 0,\n runtimeEvaluatedCount: 0,\n bakedOffset: 0,\n bakedCount: 0,\n allCount: 0\n };\n\n if (!Array.isArray(names))\n {\n this.#morphAnimationBuffer = [];\n return 0;\n }\n\n const manual = this.mesh?.GetMorphAnimations?.();\n const records = names.map((name, index) => ({\n index,\n weight: ReadMorphWeight(\n ReadNamedMorph(manual, name) ?? this.mesh?.GetMorphTargetWeight?.(name) ?? 0,\n name,\n \"mesh\"\n ),\n baked: !!(this.mesh?.IsBakedMorph?.(index)\n ?? this.mesh?.GetBakedMorphTarget?.(name)\n ?? false)\n }));\n\n if (this.animationUpdater?.IsInitialized?.())\n {\n const animated = this.animationUpdater.GetMorphAnimations?.();\n\n for (const record of records)\n {\n const name = names[record.index];\n const value = ReadNamedMorph(animated, name);\n\n if (value !== undefined)\n {\n record.weight = ReadMorphWeight(value, name, \"animation\");\n }\n }\n }\n\n const runtime = [];\n const baked = [];\n const inactive = [];\n\n for (const record of records)\n {\n if (record.weight >= 0.001)\n {\n (record.baked ? baked : runtime).push(record);\n }\n else\n {\n inactive.push(record);\n }\n }\n\n this.#morphAnimationBuffer = [ ...runtime, ...baked, ...inactive ];\n this.#morphAnimationOffsets.runtimeEvaluatedCount = runtime.length;\n this.#morphAnimationOffsets.bakedOffset = runtime.length;\n this.#morphAnimationOffsets.bakedCount = baked.length;\n this.#morphAnimationOffsets.allCount = runtime.length + baked.length;\n return this.#morphAnimationOffsets.allCount;\n }\n\n /** Returns detached active indexed morph records for the native filter. */\n @impl.adapted\n GetMorphTargets(filter = 2)\n {\n const normalized = NormalizeMorphFilter(filter);\n let offset = 0;\n let count = 0;\n\n if (normalized === 2)\n {\n count = this.#morphAnimationOffsets.allCount;\n }\n else if (normalized === 0)\n {\n offset = this.#isMorphsBaked\n ? this.#morphAnimationOffsets.runtimeEvaluatedOffset\n : 0;\n count = this.#isMorphsBaked\n ? this.#morphAnimationOffsets.runtimeEvaluatedCount\n : this.#morphAnimationOffsets.allCount;\n }\n else\n {\n offset = this.#morphAnimationOffsets.bakedOffset;\n count = this.#morphAnimationOffsets.bakedCount;\n }\n\n return this.#morphAnimationBuffer.slice(offset, offset + count)\n .map(value => ({ index: value.index, weight: value.weight }));\n }\n\n /**\n * Always returns null: a child mesh exposes no packed area-id lookup, since\n * its SOF identity lives directly on its\n * sofParentHullName/sofLocatorSetName/sofLocatorIndex fields.\n */\n @carbon.method\n @impl.adapted\n GetSofSourceLocator()\n {\n return null;\n }\n\n /**\n * Sync-side frame update (Carbon EveChildMesh::UpdateSyncronous,\n * cpp:1002-1045). Carbon's body is entirely audio-geometry registration\n * (cpp:1004-1010, 1044 - engine/audio-owned, omitted) plus animationUpdater\n * re-binding and PrePhysicsAnimation stepping (cpp:1011-1042 - skipped: the\n * JS animation seam is absent, there is no Tr2GrannyAnimation runtime), so\n * the port is a documented frame-contract no-op.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Audio-geometry registration is engine-owned and the animationUpdater branches await the JS animation seam; nothing else remains in Carbon's body.\")\n UpdateSyncronous(updateContext, _params)\n {\n if (this.damageOverlay) this.damageOverlay.UpdateSyncronous(updateContext);\n\n const time = updateContext.GetTime();\n for (const overlay of this.overlayEffects) overlay.Update(time, time);\n }\n\n /**\n * Per-frame async update (Carbon EveChildMesh::UpdateAsyncronous,\n * cpp:903-1000): rebuild the world transform from the parent, fold the\n * transform modifiers over it, store the activation strength, refresh the\n * attachment lights, the morph buffer, and the world bounds. The GPU ring\n * buffer advance/per-object-data invalidation (cpp:905-909), audio geometry\n * (cpp:920-930), parent VS/PS struct refresh (cpp:932-960), and the skinned\n * GetBounds overload are not modelled, hence @impl.adapted.\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\n * @returns {Float32Array} worldTransform\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.adapted\n UpdateAsyncronous(updateContext, params)\n {\n const parentTransform = params?.localToWorldTransform;\n\n // Carbon captures the OUTGOING transform before rebuilding (cpp:912).\n mat4.copy(this.#lastWorldTransform, this.worldTransform);\n\n if (parentTransform && parentTransform.length === 16)\n {\n this.UpdateTransform(parentTransform);\n }\n\n applyTransformModifiers(\n this,\n updateContext,\n params?.boneCount ?? 0,\n params?.bones ?? null\n );\n\n // Carbon cpp:932-954: inherit the hull's per-object values, rebase the clip\n // data by this child's translation, then stamp our own transforms.\n const parent = params?.spaceObjectParent ?? null;\n inheritParentPerObjectData(this.#perObjectData, parent, this.translation);\n this.#parentOverlayEffects = this.inheritOverlayEffects && Array.isArray(parent?.overlayEffects)\n ? parent.overlayEffects\n : null;\n if (parent && !this.inheritOverlayEffects)\n {\n this.#perObjectData.vs.Set(\"clipData\", [ 0, 0, 0, 0 ]);\n this.#perObjectData.ps.Set(\"clipRadiusSq\", [ 0 ]);\n this.#perObjectData.ps.Set(\"clipRadius2Sq\", [ 0 ]);\n this.#perObjectData.ps.Set(\"clipSphereFactor\", [ 0 ]);\n this.#perObjectData.ps.Set(\"clipSphereFactor2\", [ 0 ]);\n }\n stampChildTransforms(this.#perObjectData, this.worldTransform, this.#lastWorldTransform);\n\n this.#activationStrength = Number(params?.activationStrength ?? 1);\n if (this.damageOverlay)\n {\n const flicker = this.damageOverlay.GetActivationStrength(updateContext);\n this.#activationStrength *= flicker;\n const shipData = this.#perObjectData.ps.Get(\"shipData\");\n this.#perObjectData.ps.Set(\"shipData\", [ shipData[0], parent ? shipData[1] * flicker : flicker, shipData[2], shipData[3] ]);\n this.#perObjectData.ps.Set(\"impactDataOffset\", [ this.damageOverlay.GetDataTextureOffset() ]);\n }\n\n // Carbon (cpp:962-970): attachments refresh their lights from the updated\n // world transform. Bones come from GetBoneTransforms (animationUpdater) -\n // null until the JS animation seam exists.\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n attachment.UpdateLights(this.worldTransform, null, 0, this.#activationStrength, 0);\n }\n\n this.UpdateMorphAnimationBuffer();\n\n // Carbon (cpp:974-997): world AABB from the mesh bounds, world sphere\n // enclosing it. The skinned GetBounds overload (animation transforms +\n // morph targets, cpp:977-982) awaits the animation seam; the maintained\n // Tr2MeshBase GetBounds supplies the static/material bounds meanwhile.\n this.#worldBoundsValid = false;\n const bounds = this.mesh ? this.mesh.GetBounds() : null;\n\n if (bounds?.min && bounds?.max)\n {\n this.#worldBoundsMin[0] = this.#worldBoundsMin[1] = this.#worldBoundsMin[2] = Infinity;\n this.#worldBoundsMax[0] = this.#worldBoundsMax[1] = this.#worldBoundsMax[2] = -Infinity;\n for (let index = 0; index < 8; index++)\n {\n vec3.set(\n BOX_CORNER_SCRATCH,\n index & 1 ? bounds.max[0] : bounds.min[0],\n index & 2 ? bounds.max[1] : bounds.min[1],\n index & 4 ? bounds.max[2] : bounds.min[2]\n );\n vec3.transformMat4(BOX_CORNER_SCRATCH, BOX_CORNER_SCRATCH, this.worldTransform);\n vec3.min(this.#worldBoundsMin, this.#worldBoundsMin, BOX_CORNER_SCRATCH);\n vec3.max(this.#worldBoundsMax, this.#worldBoundsMax, BOX_CORNER_SCRATCH);\n }\n this.#worldBoundsValid = true;\n sph3.fromBounds(this.#worldBoundingSphere, this.#worldBoundsMin, this.#worldBoundsMax);\n }\n else\n {\n sph3.set(this.#worldBoundingSphere, 0, 0, 0, 0);\n }\n\n if (this.damageOverlay)\n {\n const localSphere = vec4.fromValues(0, 0, 0, -1);\n if (bounds?.min && bounds?.max)\n {\n const cx = (bounds.min[0] + bounds.max[0]) * 0.5;\n const cy = (bounds.min[1] + bounds.max[1]) * 0.5;\n const cz = (bounds.min[2] + bounds.max[2]) * 0.5;\n vec4.set(localSphere, cx, cy, cz,\n Math.hypot(bounds.max[0] - cx, bounds.max[1] - cy, bounds.max[2] - cz));\n }\n this.damageOverlay.UpdateAsyncronous(updateContext, {\n boundingSphere: localSphere,\n estimatedPixelDiameter: Math.max(this.currentScreenSize, 0),\n isInFrustum: this.#isVisible,\n // Bind pose, not animated: the overlay seeds decals at the stable\n // authored position (Carbon EveChildMesh.cpp:1130, commit 98ee5e08).\n getDamageLocatorPositionOS: (index, out) => this.GetDamageLocatorBindPositionLocal(index, out)\n }, 0, false);\n }\n\n this.#hasUpdated = true;\n return this.worldTransform;\n }\n\n /**\n * Frame visibility + LOD state (Carbon EveChildMesh::UpdateVisibility,\n * cpp:366-463): screen size via the frustum, invLodFactor scaling, the\n * minScreenSize/lowestLodVisible gates, the per-instance visibility gate,\n * and the attachment/decal visibility fan-out. Carbon recomputes the local\n * mesh bounds here (cpp:380-394) but consumes only the world sphere/box\n * computed in UpdateAsyncronous, so the dead recompute is skipped. The\n * raytracing branch (cpp:450-462) is engine-owned and omitted.\n * @param {Object} updateContext - frame context (frustum + invLodFactor ducks)\n * @param {Float32Array} _parentTransform\n * @param {Number} parentLod - parent Tr2Lod level\n * @returns {Boolean} isVisible\n */\n /**\n * The mesh's bone palette, as a borrowed Float4x3 buffer and its bone count.\n *\n * Carbon `EveChildMesh::GetBoneTransforms` (cpp:1285-1307). Carbon branches:\n * the updater's own palette when it has a mesh binding, otherwise a separate\n * `Tr2AnimationMeshBinding` palette. Only the first branch exists here -\n * `Tr2AnimationMeshBinding` is unported - so a mesh relying on the second\n * gets no bones rather than the wrong ones.\n *\n * Carbon also assigns `accumulatedTransforms` and never reads it; that dead\n * local is not reproduced.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2AnimationMeshBinding remains unported; Carbon's identity rest-pose fallback is used when neither live palette source is available.\")\n GetBoneTransforms()\n {\n const updater = this.animationUpdater;\n\n if (!updater || !updater.IsInitialized())\n {\n return this.GetRestPoseBoneTransforms();\n }\n\n // cpp:1297-1302 - the updater's own palette when it binds to the mesh.\n if (updater.HasMeshBinding())\n {\n return getBoneList(updater);\n }\n\n // A maintained Tr2AnimationMeshBinding would be consulted here. Until that\n // source exists, Carbon's final identity rest-pose path is the safe result.\n return this.GetRestPoseBoneTransforms();\n }\n\n /**\n * Builds Carbon's identity Float4x3 rest-pose palette. Geometry with no bone\n * bindings still receives one identity because skinned shaders read bone 0.\n */\n @impl.implemented\n GetRestPoseBoneTransforms()\n {\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\n if (!geometry)\n {\n return NO_BONE_TRANSFORMS;\n }\n\n const meshIndex = Number(this.mesh.GetMeshIndex()) >>> 0;\n const mesh = geometry.GetMeshData(meshIndex);\n const boneCount = Math.max(mesh?.boneBindings?.length ?? 0, 1);\n\n if (!this.#restPoseBoneTransforms || this.#restPoseBoneTransforms.length !== boneCount * 12)\n {\n const identity = Float4x3.fromMat4(mat4.create());\n this.#restPoseBoneTransforms = new Float32Array(boneCount * 12);\n for (let index = 0; index < boneCount; index++)\n {\n this.#restPoseBoneTransforms.set(identity, index * 12);\n }\n }\n\n return { bones: this.#restPoseBoneTransforms, boneCount };\n }\n\n /**\n * Resolves this child's visibility for the frame from its world bounding\n * sphere, the parent LOD, and the authored screen-size thresholds, recording\n * the mesh and per-instance screen sizes the batch path then draws at.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Bone-fed decal bounds still await the decal seam and the raytracing refresh is engine-owned; the LOD/screen-size math and the bone-fed attachment pass are ported.\")\n UpdateVisibility(updateContext, _parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\n {\n this.#isVisible = false;\n this.currentScreenSize = -1;\n this.#instancesVisible = false;\n this.currentInstanceScreenSize = -1;\n\n if (!this.#hasUpdated)\n {\n return false;\n }\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const invLodFactor = Number(updateContext?.GetInvLodFactor?.() ?? updateContext?.invLodFactor) || 1;\n\n if (this.mesh)\n {\n this.currentScreenSize = Number(frustum?.GetPixelSizeAccross?.(this.#worldBoundingSphere) ?? Infinity) || 0;\n\n // Cached Tr2InstancedMesh downcast in Carbon (m_instancedMesh); the JS\n // port duck-types the instanced surface instead.\n const instanced = typeof this.mesh.GetInstanceBoundsClosestToPoint === \"function\";\n let instanceBounds = null;\n\n if (instanced)\n {\n // Carbon: TransformCoord(frustum.m_viewPos, Inverse(m_worldTransform))\n // - a single-matrix point transform (no composition; TransformCoord\n // maps to vec3.transformMat4 unchanged per the math conventions).\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\n {\n mat4.identity(INVERSE_WORLD_SCRATCH);\n }\n const viewPos = frustum?.viewPos ?? ZERO_VEC3;\n vec3.transformMat4(LOCAL_VIEW_SCRATCH, viewPos, INVERSE_WORLD_SCRATCH);\n instanceBounds = this.mesh.GetInstanceBoundsClosestToPoint(LOCAL_VIEW_SCRATCH);\n }\n\n if (instanceBounds)\n {\n // Carbon: instanceBounds.Transform(m_worldTransform) - single-matrix\n // sphere transform, ported via sph3.transformMat4.\n sph3.set(\n INSTANCE_SPHERE_SCRATCH,\n instanceBounds.center[0],\n instanceBounds.center[1],\n instanceBounds.center[2],\n instanceBounds.radius\n );\n sph3.transformMat4(INSTANCE_SPHERE_SCRATCH, INSTANCE_SPHERE_SCRATCH, this.worldTransform);\n this.currentInstanceScreenSize = Number(frustum?.GetPixelSizeAccross?.(INSTANCE_SPHERE_SCRATCH) ?? Infinity) || 0;\n this.mesh.UseWithScreenSize?.(this.currentInstanceScreenSize, INSTANCE_SPHERE_SCRATCH[3]);\n }\n else\n {\n // Carbon uses std::numeric_limits<float>::max(); Infinity keeps the\n // instance gate permanently open the same way.\n this.currentInstanceScreenSize = Infinity;\n this.mesh.UseWithScreenSize?.(this.currentScreenSize, this.#worldBoundingSphere[3]);\n }\n\n this.currentScreenSize *= invLodFactor;\n this.currentInstanceScreenSize *= invLodFactor;\n\n BOX_QUERY_SCRATCH.min = this.#worldBoundsMin;\n BOX_QUERY_SCRATCH.max = this.#worldBoundsMax;\n const boxVisible = this.#worldBoundsValid &&\n (frustum?.IsBoxVisible ? !!frustum.IsBoxVisible(BOX_QUERY_SCRATCH) : true);\n\n if (boxVisible)\n {\n this.#isVisible = parentLod >= this.lowestLodVisible && this.currentScreenSize >= this.minScreenSize;\n this.#instancesVisible = this.#isVisible &&\n this.currentInstanceScreenSize >= EveChildMesh.#instanceScreenSizeThreshold;\n }\n }\n\n // Carbon (cpp:427-435): attachments always refresh visibility, fed the bone\n // palette so a bone-parented attachment is placed by its bone.\n const { bones, boneCount } = this.GetBoneTransforms();\n\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n attachment.UpdateVisibility(updateContext, this.worldTransform, bones, boneCount);\n }\n\n if (this.#isVisible)\n {\n for (const decal of this.decals)\n {\n // Carbon (cpp:441-446) feeds animated bone matrices to the decal first\n // - skipped until the JS animation seam exists. Carbon passes\n // &m_parentData (per-object shading struct, GPU seam); the owning\n // child stands in as the duck-typed parent.\n decal?.UpdateVisibility(updateContext, this);\n }\n }\n\n return this.#isVisible;\n }\n\n /**\n * Collects this child (and its decals) as renderables (Carbon\n * EveChildMesh::GetRenderables, cpp:571-616): instanced meshes contribute\n * only while the per-instance gate passed; decals ride along through their\n * duck-typed renderable collectors (mesh cache is engine-owned, passed null\n * as in EveSpaceObject2.GetRenderables).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The decal mesh cache is engine-owned (null placeholder); collection structure is ported.\")\n GetRenderables(out = [])\n {\n if (!this.#isVisible)\n {\n return out;\n }\n\n const instanced = typeof this.mesh?.GetInstanceBoundsClosestToPoint === \"function\";\n\n if (instanced)\n {\n if (this.#instancesVisible)\n {\n out.push(this);\n if (this.decals.length && this.mesh.GetGeometryResource())\n {\n for (const decal of this.decals)\n {\n decal?.GetInstancedRenderables?.(out, null, this.mesh, this.currentInstanceScreenSize);\n }\n }\n }\n }\n else\n {\n out.push(this);\n const geometryResource = this.mesh?.GetGeometryResource();\n if (this.decals.length && geometryResource)\n {\n for (const decal of this.decals)\n {\n decal?.GetRenderables(out, null, geometryResource, this.currentScreenSize);\n }\n }\n }\n\n return out;\n }\n\n /** Carbon EveChildMesh::GetBoundingSphere (cpp:618-627): the realized world\n * sphere, valid only after an update produced bounds (radius > 0). */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create(), _query = 0)\n {\n if (this.#worldBoundingSphere[3] > 0)\n {\n vec4.copy(out, this.#worldBoundingSphere);\n return true;\n }\n return false;\n }\n\n /** Carbon EveChildMesh::HasTransparentBatches (cpp:629-637). */\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n if (this.display && this.mesh)\n {\n if ((this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\n for (const overlay of this.overlayEffects)\n {\n if (overlay.HasTransparentArea()) return true;\n }\n for (const overlay of this.#parentOverlayEffects ?? [])\n {\n if (overlay.HasTransparentArea()) return true;\n }\n }\n return false;\n }\n\n /** Carbon EveChildMesh::IsVisible (cpp:639-650): sphere-in-frustum plus the\n * estimated pixel size against the context visibility threshold. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Frustum and threshold arrive via the duck-typed update context instead of renderer state.\")\n IsVisible(updateContext)\n {\n if (this.#worldBoundingSphere[3] > 0)\n {\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n if (frustum?.IsSphereVisible(this.#worldBoundingSphere) !== false)\n {\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\n const size = Number(typeof method === \"function\" ? method.call(frustum, this.#worldBoundingSphere) : 0) || 0;\n const threshold = Number(updateContext?.GetVisibilityThreshold?.() ?? updateContext?.visibilityThreshold) || 0;\n return size >= threshold;\n }\n }\n return false;\n }\n\n /** Carbon EveChildMesh::GetBatches (cpp:652-670): the mesh delegates per\n * batch type and activated attachments recurse, at\n * min(currentInstanceScreenSize, currentScreenSize) and with a reverse-winding\n * flag from Determinant(m_worldTransform) < 0 - a negative determinant means\n * the transform mirrors, which flips triangle facing. A determinant is\n * transpose-invariant, so the row-vector/column-vector difference does not\n * apply to this test. Returns whether any batch was committed (JS addition;\n * Carbon returns void). */\n @carbon.method\n @impl.implemented\n GetBatches(batches, batchType, perObjectData, reason = Tr2RenderReason.TR2RENDERREASON_NORMAL)\n {\n if (!this.display)\n {\n return false;\n }\n\n let committed = false;\n\n if (this.mesh)\n {\n committed = this.mesh.GetBatches(\n batches,\n this.mesh.GetAreas(batchType),\n perObjectData,\n Math.min(this.currentInstanceScreenSize, this.currentScreenSize),\n mat4.determinant(this.worldTransform) < 0) === true;\n }\n\n if (this.#activationStrength !== 0)\n {\n for (const attachment of this.attachments)\n {\n if (!attachment) continue;\n committed = attachment.GetBatches(batches, batchType, perObjectData, reason) === true || committed;\n }\n }\n\n committed = this.GetBatchesFromOverlayVector(batches, perObjectData, batchType) || committed;\n\n return committed;\n }\n\n /** Emits damage, child-owned, then inherited parent overlays over this mesh. */\n @carbon.method\n @impl.adapted\n GetBatchesFromOverlayVector(batches, perObjectData, batchType)\n {\n const damageEffect = this.damageOverlay\n ? this.damageOverlay.GetArmorDamageShader(batchType)\n : null;\n const parentOverlays = this.#parentOverlayEffects;\n if (!this.mesh || (!damageEffect && !this.overlayEffects.length && !parentOverlays?.length)) return false;\n\n const geometry = this.mesh.GetGeometryResource();\n if (!geometry || geometry.IsGood() === false) return false;\n\n if (!this.#overlayAreaBlocksBuilt)\n {\n CollectOverlayAreaBlocks(this.mesh, this.#overlayAreaBlocks);\n this.#overlayAreaBlocksBuilt = true;\n }\n\n const meshIndex = this.mesh.GetMeshIndex();\n const lod = geometry.GetMeshLod(\n meshIndex, Math.min(this.currentInstanceScreenSize, this.currentScreenSize));\n let committed = false;\n\n if (damageEffect)\n {\n committed = EmitDamageOverlayBatches(\n batches, perObjectData, damageEffect, this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\n }\n if (this.overlayEffects.length)\n {\n committed = EmitOverlayBatches(\n batches, perObjectData, batchType, this.overlayEffects,\n this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\n }\n if (parentOverlays?.length)\n {\n committed = EmitOverlayBatches(\n batches, perObjectData, batchType, parentOverlays,\n this.#overlayAreaBlocks, geometry, meshIndex, lod) || committed;\n }\n return committed;\n }\n\n /** Carbon EveChildMesh::GetShadowBatches (cpp:672-681): the OPAQUE areas\n * only, gated on display/mesh/hasUpdated, at the caller's shadow pixel size\n * rather than the child's own screen size. Returns whether any batch was\n * committed (JS addition; Carbon returns void). */\n @carbon.method\n @impl.implemented\n GetShadowBatches(batches, perObjectData, shadowPixelSize = Infinity)\n {\n if (this.display && this.mesh && this.#hasUpdated)\n {\n return this.mesh.GetBatches(\n batches,\n this.mesh.GetAreas(TriBatchType.TRIBATCHTYPE_OPAQUE),\n perObjectData,\n shadowPixelSize,\n mat4.determinant(this.worldTransform) < 0) === true;\n }\n return false;\n }\n\n /** Carbon EveChildMesh::GetSortValue (cpp:787-792): view distance scaled by\n * sortValueScale plus sortValueOffset. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\n GetSortValue(renderContext = null)\n {\n const viewPosition = renderContext?.GetViewPosition();\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\n return Math.hypot(x, y, z) * this.sortValueScale + this.sortValueOffset;\n }\n\n /** Carbon EveChildMesh::GetShadowPerObjectData (cpp:794-797) forwards the\n * shadow pass to the same per-object record. */\n @carbon.method\n @impl.implemented\n GetShadowPerObjectData(accumulator = null)\n {\n return this.GetPerObjectData(accumulator);\n }\n\n /**\n * Carbon EveChildMesh::GetPerObjectData (cpp:799-843): resets the morph\n * counters, uploads the bone and morph rings, then hands back a handle over\n * this child's two PERSISTENT buffers.\n *\n * The ring OFFSETS (`boneOffsets[0..1]`, `morphTargetAnimationDataOffset`,\n * `morphTargetVertexDataOffset`, `bakedMorphTargetVertexDataOffset`) are GPU\n * addresses with no CPU derivation, so they keep their defaults; the counts,\n * which are CPU-known, are written.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"GPU ring-buffer offsets have no CPU derivation and keep their defaults; every CPU-known field is filled.\")\n GetPerObjectData(_accumulator = null)\n {\n this.#perObjectData.vs.Set(\"activeMorphTargetsCount\", [ 0 ]);\n // Carbon seeds the baked-morph offset with UINT32_MAX, not zero.\n this.#perObjectData.vs.Set(\"bakedMorphTargetVertexDataOffset\", [ 0xffffffff ]);\n\n if (this.animationUpdater && this.animationUpdater.IsInitialized())\n {\n const boneCount = this.animationUpdater.GetMeshBoneCount();\n this.#perObjectData.vs.SetIndex(\"boneOffsets\", 2, [ boneCount ]);\n }\n\n return { vs: this.#perObjectData.vs, ps: this.#perObjectData.ps };\n }\n\n /**\n * Carbon's two IsCastingShadow overloads, dispatched on the second argument:\n * a position vector (length >= 3) selects the sphere-overlap overload\n * (cpp:338-364); anything else is the shadow-frustum overload (cpp:295-336),\n * whose Carbon out-param float& sizeInShadow becomes the optional trailing\n * length-1 array (out-params last).\n * @param {Object} cameraFrustum\n * @param {Object|Float32Array} shadowFrustumOrPosition\n * @param {Number} renderReasonOrRadius\n * @param {Array|Number} sizeInShadowOutOrRenderReason\n * @returns {Boolean}\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Overload dispatch by argument shape and a length-1 out array replace C++ overloading and the float& out-param; the shadow math is ported.\")\n IsCastingShadow(cameraFrustum, shadowFrustumOrPosition, renderReasonOrRadius, sizeInShadowOutOrRenderReason = null)\n {\n if (!this.display || !this.castShadow || !this.#hasUpdated)\n {\n return false;\n }\n\n const positionOverload = typeof shadowFrustumOrPosition?.length === \"number\" &&\n shadowFrustumOrPosition.length >= 3;\n const renderReason = positionOverload\n ? Number(sizeInShadowOutOrRenderReason ?? Tr2RenderReason.TR2RENDERREASON_NORMAL)\n : Number(renderReasonOrRadius ?? Tr2RenderReason.TR2RENDERREASON_NORMAL);\n\n if (renderReason === Tr2RenderReason.TR2RENDERREASON_REFLECTION &&\n !ShouldReflect(this.reflectionMode))\n {\n return false;\n }\n\n if (positionOverload)\n {\n // Carbon (cpp:338-364): squared distance between the world sphere and\n // the query sphere against their combined radius.\n if (!this.GetBoundingSphere(SHADOW_SPHERE_SCRATCH))\n {\n return false;\n }\n const position = shadowFrustumOrPosition;\n const radius = Number(renderReasonOrRadius) || 0;\n const dx = SHADOW_SPHERE_SCRATCH[0] - position[0];\n const dy = SHADOW_SPHERE_SCRATCH[1] - position[1];\n const dz = SHADOW_SPHERE_SCRATCH[2] - position[2];\n const combined = radius + SHADOW_SPHERE_SCRATCH[3];\n return dx * dx + dy * dy + dz * dz - combined * combined < 0;\n }\n\n // Carbon (cpp:295-336): shadow-frustum visibility, then the size in the\n // shadow map from the instance sphere nearest the shadow eye (falling back\n // to the whole world sphere).\n const shadowFrustum = shadowFrustumOrPosition;\n const sizeOut = sizeInShadowOutOrRenderReason;\n if (sizeOut)\n {\n sizeOut[0] = 0;\n }\n\n if (this.#worldBoundingSphere[3] <= 0)\n {\n return false;\n }\n\n let sizeInShadow = 0;\n if (shadowFrustum?.IsVisible?.(cameraFrustum, this.#worldBoundingSphere))\n {\n let sphere = this.#worldBoundingSphere;\n if (typeof this.mesh?.GetInstanceBoundsClosestToPoint === \"function\")\n {\n // Carbon: TransformCoord(shadowFrustum.GetEyePos(), Inverse(\n // m_worldTransform)) - single-matrix point transform (no composition).\n if (!mat4.invert(INVERSE_WORLD_SCRATCH, this.worldTransform))\n {\n mat4.identity(INVERSE_WORLD_SCRATCH);\n }\n const eyePos = shadowFrustum?.GetEyePos?.() ?? ZERO_VEC3;\n vec3.transformMat4(LOCAL_VIEW_SCRATCH, eyePos, INVERSE_WORLD_SCRATCH);\n const instanceBounds = this.mesh.GetInstanceBoundsClosestToPoint(LOCAL_VIEW_SCRATCH);\n if (instanceBounds)\n {\n // Carbon: instanceBounds.Transform(m_worldTransform) - single-matrix\n // sphere transform.\n sph3.set(\n INSTANCE_SPHERE_SCRATCH,\n instanceBounds.center[0],\n instanceBounds.center[1],\n instanceBounds.center[2],\n instanceBounds.radius\n );\n sph3.transformMat4(INSTANCE_SPHERE_SCRATCH, INSTANCE_SPHERE_SCRATCH, this.worldTransform);\n sphere = INSTANCE_SPHERE_SCRATCH;\n }\n }\n sizeInShadow = Number(shadowFrustum?.GetSizeInShadow?.(sphere)) || 0;\n }\n\n if (sizeOut)\n {\n sizeOut[0] = sizeInShadow;\n }\n return sizeInShadow > 5;\n }\n\n /** Carbon EveChildMesh::ChangeLOD (cpp:1052-1054) is an intentional no-op. */\n @carbon.method\n @impl.implemented\n ChangeLOD(_lod)\n {\n }\n\n /** Carbon EveChildMesh::RegisterComponents (cpp:239-269): LightOwner when\n * lights are authored; ReflectionRenderable (ShouldReflect) and ShadowCaster\n * (castShadow) only when a mesh is present; then forwards the attachments.\n * Gate m_display. \"MeshMorph\" stays OUT-OF-BAND: Carbon registers it at\n * baked-morph need inside BakeMorphs (cpp:1404-1409), not here - the JS\n * BakeMorphs stub is the site that would register it when the GPU morph\n * bake is ported. */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n if (this.lights.length)\n {\n registry.RegisterComponent(EveComponentType.LightOwner, this);\n }\n\n if (this.mesh !== null)\n {\n if (ShouldReflect(this.reflectionMode))\n {\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\n }\n if (this.castShadow)\n {\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\n }\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.Register(registry);\n }\n }\n }\n\n /** Carbon EveChildMesh::UnRegisterComponents (cpp:275-290): forwards the\n * attachments only (own components were already removed by\n * EveEntity::UnRegister, EveEntity.cpp:90); no display re-check.\n * UnregisterAudioGeometry (cpp:277) is audio-engine-owned and unported. */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n for (const attachment of this.attachments)\n {\n attachment?.UnRegister(registry);\n }\n }\n }\n\n /** Carbon EveChildMesh::GetLights (cpp:1638-1652): BOTH gates (empty\n * lights and display, cpp:1640 - unlike EveSpaceObject2's display-only),\n * then per light AddLight(manager, worldTransform, 1, bones, boneCount)\n * FOLLOWED by SetBrightnessMultiplier(m_activationStrength) - the\n * one-frame-lag order is contract (the submission uses the multiplier\n * stamped on the previous pass; the first pass uses the Tr2Light default\n * 1). */\n @carbon.method\n @impl.implemented\n GetLights(lightManager)\n {\n if (!this.lights.length || !this.display)\n {\n return;\n }\n\n // cpp:1645 - bones so a bone-parented light is placed by its bone.\n const { bones, boneCount } = this.GetBoneTransforms();\n\n for (const light of this.lights)\n {\n light?.AddLight(lightManager, this.worldTransform, 1, bones, boneCount);\n light?.SetBrightnessMultiplier?.(this.#activationStrength);\n }\n }\n\n /** Carbon EveChildMesh::GetID returns GetRawRoot(), i.e. this object. */\n @carbon.method\n @impl.implemented\n GetID(_area = 0)\n {\n return this;\n }\n\n /** Invalidates merged locators on both the old and new owner. */\n @carbon.method\n @impl.implemented\n SetOwner(owner)\n {\n if (this.GetOwner() === owner) return;\n const oldOwner = this.GetOwner();\n if (oldOwner) oldOwner.InvalidateMergedLocators(\"structure\");\n super.SetOwner(owner);\n if (owner) owner.InvalidateMergedLocators(\"structure\");\n }\n\n /** Contributes child-owned locator sets with the child-to-object transform. */\n @carbon.method\n @impl.adapted\n CollectOwnedLocatorSets(parentTransform, out)\n {\n if (!this.ownedLocatorSets.length) return;\n const local = this.RebuildLocalTransform();\n const childToObject = mat4.create();\n mat4.multiply(childToObject, parentTransform, local);\n for (const sets of this.ownedLocatorSets)\n {\n out.push({ childToObject: mat4.clone(childToObject), owner: this, sets });\n }\n }\n\n /**\n * Contributes this child's geometry to the owner's merged raycast set\n * (Carbon EveChildMesh.cpp:2061-2077): one record per mesh, its areas\n * appended to the shared pool by batch type.\n */\n @carbon.method\n @impl.implemented\n CollectOwnedGeometry(type, parentTransform, out, areaPool)\n {\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\n if (!geometry) return;\n const local = this.RebuildLocalTransform();\n const childToObject = mat4.create();\n mat4.multiply(childToObject, parentTransform, local);\n const areaStart = areaPool.length;\n EveCollectAreas(type, this.mesh, areaPool);\n out.push({ geometry, childToObject, areaStart, areaCount: areaPool.length - areaStart });\n }\n\n /** Replaces the locator sets owned by this child and invalidates the owner. */\n @carbon.method\n @impl.adapted\n SetOwnedLocatorSets(sets)\n {\n this.ownedLocatorSets = Array.from(sets ?? []);\n const owner = this.GetOwner();\n if (owner) owner.InvalidateMergedLocators(\"structure\");\n }\n\n /** Returns this child mesh's armour and hull damage overlay. */\n @carbon.method\n @impl.implemented\n GetDamageOverlay()\n {\n return this.damageOverlay;\n }\n\n /** Creates this child mesh's damage overlay when it does not yet exist. */\n @carbon.method\n @impl.implemented\n EnsureDamageOverlay()\n {\n this.damageOverlay ??= new EveDamageOverlay();\n return this.damageOverlay;\n }\n\n /** Sets the per-part armour damage shader stamped by SOF placement creation. */\n @carbon.method\n @impl.implemented\n SetArmorDamageShaderEffect(effect)\n {\n this.armorDamageShader = effect ?? null;\n }\n\n /** Returns the per-part armour damage shader, or null when the part has none. */\n @carbon.method\n @impl.implemented\n GetArmorDamageShaderEffect()\n {\n return this.armorDamageShader;\n }\n\n /**\n * Returns the locator list of this child's own damage set, or null when the\n * child owns no damage locators (Carbon EveChildMesh.cpp:2117-2127).\n */\n @carbon.method\n @impl.implemented\n GetOwnedDamageLocators()\n {\n for (const set of this.ownedLocatorSets)\n {\n if (set.HasName(\"damage\")) return set.GetLocators();\n }\n return null;\n }\n\n /**\n * Resolves one damage locator's BIND-pose position in the child's local\n * space - no bone transform, the stable overlay seed position (Carbon\n * EveChildMesh.cpp:2129-2139).\n */\n @carbon.method\n @impl.implemented\n GetDamageLocatorBindPositionLocal(index, out = vec3.create())\n {\n const locators = this.GetOwnedDamageLocators();\n const locatorIndex = Number(index) | 0;\n if (!locators || locatorIndex < 0 || locatorIndex >= locators.length) return false;\n vec3.copy(out, locators[locatorIndex].position);\n return true;\n }\n\n /**\n * Resolves one damage locator's animated position and direction in the\n * child's local space, posed by this child's own animation updater (Carbon\n * EveChildMesh.cpp:2141-2151).\n */\n @carbon.method\n @impl.implemented\n GetDamageLocatorAnimatedLocal(index, outPosition, outDirection)\n {\n const locators = this.GetOwnedDamageLocators();\n const locatorIndex = Number(index) | 0;\n if (!locators || locatorIndex < 0 || locatorIndex >= locators.length) return false;\n EveGetLocatorPose(outPosition, outDirection, this.animationUpdater, locators[locatorIndex]);\n return true;\n }\n\n /**\n * Carbon EveChildMesh::GetPickingBatches (cpp:862-889): collects the geometry\n * a pick pass should test, by mask. Unlike the hull's version this one has no\n * overlay effects to pull in.\n *\n * @param {Object} batches - the picking accumulator\n * @param {Number} pickTypes - a Tr2PickType mask\n * @param {Object} perObjectData - this child's per-object record\n */\n @carbon.method\n @impl.implemented\n GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null)\n {\n if (pickTypes & Tr2PickType.PICK_TYPE_PICKING)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE)\n {\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);\n this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_DECAL, perObjectData);\n }\n\n if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT)\n {\n // A hidden mesh suppresses the transparent pass only; Carbon returns\n // early here, after the collections above have already run.\n if (!this.mesh || this.mesh.display === false)\n {\n return true;\n }\n\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, TriBatchType.TRIBATCHTYPE_ADDITIVE ])\n {\n const areas = this.mesh.GetAreas(batchType);\n\n if (areas)\n {\n this.mesh.GetBatches?.(batches, areas, perObjectData);\n }\n }\n }\n\n return true;\n }\n\n /**\n * Binds the animation updater to this mesh's geometry, so a child with no\n * animation resource of its own animates from the mesh's own bone binding.\n *\n * Carbon `EveChildMesh::InitializeAnimation` (cpp:217-232). Only runs when\n * the updater has no authored resPath - one that does keeps its own\n * resource. When the mesh has no geometry yet the shared binding is cleared\n * rather than left stale, so a later mesh swap rebinds cleanly.\n */\n @carbon.method\n @impl.implemented\n InitializeAnimation()\n {\n const updater = this.animationUpdater;\n\n if (!updater || updater.resPath_)\n {\n return;\n }\n\n const geometry = this.mesh ? this.mesh.GetGeometryResource() : null;\n\n if (geometry)\n {\n updater.SetUseMeshBinding(true);\n updater.SetSharedGeometryRes(geometry);\n return;\n }\n\n updater.SetSharedGeometryRes(null);\n }\n\n /** Carbon BakeMorphs runs the merge-morphs GPU compute pass; GPU-owned. */\n @carbon.method\n @impl.notImplemented\n BakeMorphs(..._args)\n {\n throw new Error(\"EveChildMesh.BakeMorphs is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon UnbakeMorphs releases the baked-morph GPU allocation; GPU-owned. */\n @carbon.method\n @impl.notImplemented\n UnbakeMorphs(..._args)\n {\n throw new Error(\"EveChildMesh.UnbakeMorphs is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon IsMeshBaked reads the baked-morph GPU allocation state; GPU-owned. */\n @carbon.method\n @impl.notImplemented\n IsMeshBaked(..._args)\n {\n throw new Error(\"EveChildMesh.IsMeshBaked is not implemented in CarbonEngineJS.\");\n }\n\n // Carbon s_instanceScreenSizeThreshold (EveChildMesh.cpp:22).\n static #instanceScreenSizeThreshold = 1;\n\n static Origin = Origin;\n\n static ReflectionMode = ReflectionMode;\n\n static Tr2Lod = Tr2Lod;\n\n}\n\nfunction ReadNamedMorph(values, name)\n{\n if (values instanceof Map)\n {\n return values.has(name) ? values.get(name) : undefined;\n }\n\n if (values && typeof values === \"object\" && Object.hasOwn(values, name))\n {\n return values[name];\n }\n\n return undefined;\n}\n\nfunction ReadMorphWeight(value, name, source)\n{\n const weight = Number(value && typeof value === \"object\" ? value.weight : value);\n\n if (!Number.isFinite(weight))\n {\n throw new TypeError(`EveChildMesh ${source} morph target \"${name}\" weight must be finite`);\n }\n\n return weight;\n}\n\nfunction NormalizeMorphFilter(value)\n{\n if (typeof value === \"string\")\n {\n const normalized = value.toLowerCase();\n if (normalized === \"runtime\" || normalized === \"runtime_evaluated\") return 0;\n if (normalized === \"baked\") return 1;\n if (normalized === \"all\") return 2;\n }\n\n const filter = Number(value);\n if (filter === 0 || filter === 1 || filter === 2) return filter;\n throw new TypeError(`Unsupported EveChildMesh morph target filter \"${value}\"`);\n}\n"],"names":["INVERSE_WORLD_SCRATCH","mat4","create","LOCAL_VIEW_SCRATCH","vec3","INSTANCE_SPHERE_SCRATCH","vec4","SHADOW_SPHERE_SCRATCH","BOX_CORNER_SCRATCH","BOX_QUERY_SCRATCH","min","max","ZERO_VEC3","NO_BONE_TRANSFORMS","Object","freeze","bones","boneCount","_EveChildMesh","_identity","EveChildMesh","_withITr2Renderable","withITr2Renderable","EveChildTransform","e","_init_ownedLocatorSets","_init_extra_ownedLocatorSets","_init_armorDamageShader","_init_extra_armorDamageShader","_init_reflectionMode","_init_extra_reflectionMode","_init_transformModifiers","_init_extra_transformModifiers","_init_worldTransform","_init_extra_worldTransform","_init_display","_init_extra_display","_init_inheritOverlayEffects","_init_extra_inheritOverlayEffects","_init_overlayEffects","_init_extra_overlayEffects","_init_damageOverlay","_init_extra_damageOverlay","_init_castShadow","_init_extra_castShadow","_init_mesh","_init_extra_mesh","_init_name","_init_extra_name","_init_rotation","_init_extra_rotation","_init_translation","_init_extra_translation","_init_scaling","_init_extra_scaling","_init_localTransform","_init_extra_localTransform","_init_decals","_init_extra_decals","_init_staticTransform","_init_extra_staticTransform","_init_animationUpdater","_init_extra_animationUpdater","_init_attachments","_init_extra_attachments","_init_lights","_init_extra_lights","_init_lowestLodVisible","_init_extra_lowestLodVisible","_init_minScreenSize","_init_extra_minScreenSize","_init_sortValueOffset","_init_extra_sortValueOffset","_init_sortValueScale","_init_extra_sortValueScale","_init_currentScreenSize","_init_extra_currentScreenSize","_init_currentInstanceScreenSize","_init_extra_currentInstanceScreenSize","_init_useSRT","_init_extra_useSRT","_init_updateAnimation","_init_extra_updateAnimation","_init_origin","_init_extra_origin","_init_instanceTransforms","_init_extra_instanceTransforms","_init_sofDna","_init_extra_sofDna","_init_sofParentHullName","_init_extra_sofParentHullName","_init_sofLocatorSetName","_init_extra_sofLocatorSetName","_init_sofLocatorIndex","_init_extra_sofLocatorIndex","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","objectRef","notify","int32","enum","read","boolean","string","quat","float32","rebuild","array","carbon","method","impl","adapted","implemented","reason","contextual","notImplemented","constructor","args","runtimeEvaluatedOffset","runtimeEvaluatedCount","bakedOffset","bakedCount","allCount","createChildPerObjectRecords","ownedLocatorSets","armorDamageShader","_ResetVisibilityState","currentScreenSize","currentInstanceScreenSize","_GetActivationStrength","reflectionMode","transformModifiers","worldTransform","display","inheritOverlayEffects","overlayEffects","damageOverlay","castShadow","mesh","name","rotation","translation","scaling","fromValues","localTransform","decals","staticTransform","animationUpdater","attachments","lights","lowestLodVisible","minScreenSize","sortValueOffset","sortValueScale","useSRT","updateAnimation","origin","instanceTransforms","sofDna","sofParentHullName","sofLocatorSetName","sofLocatorIndex","Initialize","RebuildLocalTransform","InitializeAnimation","Setup","scale","undefined","Number","SetInstanceTransforms","instances","next","transform","length","TypeError","push","clone","GetInstanceTransforms","SetMesh","AddOverlayEffect","effect","RemoveOverlayEffect","index","indexOf","splice","GetOverlayEffectByName","find","String","SetOrigin","SetScale","copy","SetReflectionMode","mode","SetCastShadow","SetMinScreenSize","GetLocalToWorldTransform","out","GetName","SetName","AddTransformModifier","modifier","AddDecal","decal","AddAttachment","attachment","ClearAttachments","AddLight","light","ClearLights","IsAlwaysOn","SetShaderOption","value","GetMorphTargetNames","SetMorphTargetWeight","weight","GetMorphTargetWeight","UpdateMorphAnimationBuffer","names","Array","isArray","manual","GetMorphAnimations","records","map","ReadMorphWeight","ReadNamedMorph","baked","IsBakedMorph","GetBakedMorphTarget","IsInitialized","animated","record","runtime","inactive","GetMorphTargets","filter","normalized","NormalizeMorphFilter","offset","count","slice","GetSofSourceLocator","UpdateSyncronous","updateContext","_params","time","GetTime","overlay","Update","UpdateAsyncronous","params","parentTransform","localToWorldTransform","UpdateTransform","applyTransformModifiers","parent","spaceObjectParent","inheritParentPerObjectData","vs","Set","ps","stampChildTransforms","activationStrength","flicker","GetActivationStrength","shipData","Get","GetDataTextureOffset","UpdateLights","bounds","GetBounds","Infinity","set","transformMat4","sph3","fromBounds","localSphere","cx","cy","cz","Math","hypot","boundingSphere","estimatedPixelDiameter","isInFrustum","getDamageLocatorPositionOS","GetDamageLocatorBindPositionLocal","GetBoneTransforms","updater","GetRestPoseBoneTransforms","HasMeshBinding","getBoneList","geometry","GetGeometryResource","meshIndex","GetMeshIndex","GetMeshData","boneBindings","identity","Float4x3","fromMat4","Float32Array","UpdateVisibility","_parentTransform","parentLod","Tr2Lod","TR2_LOD_HIGH","frustum","GetFrustum","invLodFactor","GetInvLodFactor","GetPixelSizeAccross","instanced","GetInstanceBoundsClosestToPoint","instanceBounds","invert","viewPos","center","radius","UseWithScreenSize","boxVisible","IsBoxVisible","GetRenderables","GetInstancedRenderables","geometryResource","GetBoundingSphere","_query","HasTransparentBatches","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","HasTransparentArea","IsVisible","IsSphereVisible","GetPixelSizeAccrossEst","size","call","threshold","GetVisibilityThreshold","visibilityThreshold","GetBatches","batches","batchType","perObjectData","Tr2RenderReason","TR2RENDERREASON_NORMAL","committed","determinant","GetBatchesFromOverlayVector","damageEffect","GetArmorDamageShader","parentOverlays","IsGood","CollectOverlayAreaBlocks","lod","GetMeshLod","EmitDamageOverlayBatches","EmitOverlayBatches","GetShadowBatches","shadowPixelSize","TRIBATCHTYPE_OPAQUE","GetSortValue","renderContext","viewPosition","GetViewPosition","x","y","z","GetShadowPerObjectData","accumulator","GetPerObjectData","_accumulator","GetMeshBoneCount","SetIndex","IsCastingShadow","cameraFrustum","shadowFrustumOrPosition","renderReasonOrRadius","sizeInShadowOutOrRenderReason","positionOverload","renderReason","TR2RENDERREASON_REFLECTION","ShouldReflect","position","dx","dy","dz","combined","shadowFrustum","sizeOut","sizeInShadow","sphere","eyePos","GetEyePos","GetSizeInShadow","ChangeLOD","_lod","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetLights","lightManager","SetBrightnessMultiplier","GetID","_area","SetOwner","owner","GetOwner","oldOwner","InvalidateMergedLocators","CollectOwnedLocatorSets","local","childToObject","multiply","sets","CollectOwnedGeometry","areaPool","areaStart","EveCollectAreas","areaCount","SetOwnedLocatorSets","from","GetDamageOverlay","EnsureDamageOverlay","EveDamageOverlay","SetArmorDamageShaderEffect","GetArmorDamageShaderEffect","GetOwnedDamageLocators","HasName","GetLocators","locators","locatorIndex","GetDamageLocatorAnimatedLocal","outPosition","outDirection","EveGetLocatorPose","GetPickingBatches","pickTypes","TR2_PICK_TYPE_DEFAULT","Tr2PickType","PICK_TYPE_PICKING","TRIBATCHTYPE_PICKING","PICK_TYPE_OPAQUE","TRIBATCHTYPE_DECAL","PICK_TYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","areas","resPath_","SetUseMeshBinding","SetSharedGeometryRes","BakeMorphs","_args","Error","UnbakeMorphs","IsMeshBaked","Origin","ReflectionMode","values","Map","has","get","hasOwn","source","isFinite","toLowerCase"],"mappings":"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"}