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

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 (384) hide show
  1. package/dist/global/blue/BlueClasses.js +200 -0
  2. package/dist/global/blue/BlueClasses.js.map +1 -0
  3. package/dist/global/blue/IBlueClasses.js +79 -0
  4. package/dist/global/blue/IBlueClasses.js.map +1 -0
  5. package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
  6. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
  7. package/dist/global/blue/blue.js +8 -2
  8. package/dist/global/blue/blue.js.map +1 -1
  9. package/dist/global/blue/index.js +2 -0
  10. package/dist/global/blue/index.js.map +1 -1
  11. package/dist/global/consts/index.js +0 -1
  12. package/dist/global/consts/index.js.map +1 -1
  13. package/dist/global/consts/renderContext/formats.js +26 -25
  14. package/dist/global/consts/renderContext/formats.js.map +1 -1
  15. package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
  16. package/dist/global/imageio/BitmapDimensions.js.map +1 -0
  17. package/dist/global/imageio/Cutout.js +28 -0
  18. package/dist/global/imageio/Cutout.js.map +1 -0
  19. package/dist/global/imageio/HostBitmap.js +1106 -0
  20. package/dist/global/imageio/HostBitmap.js.map +1 -0
  21. package/dist/global/imageio/ImageIOResult.js +99 -0
  22. package/dist/global/imageio/ImageIOResult.js.map +1 -0
  23. package/dist/global/imageio/ImageUtility.js +205 -0
  24. package/dist/global/imageio/ImageUtility.js.map +1 -0
  25. package/dist/global/imageio/LoadParameters.js +86 -0
  26. package/dist/global/imageio/LoadParameters.js.map +1 -0
  27. package/dist/global/imageio/Metadata.js +22 -0
  28. package/dist/global/imageio/Metadata.js.map +1 -0
  29. package/dist/global/imageio/index.js +8 -0
  30. package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
  31. package/dist/global/index.js +2 -1
  32. package/dist/global/index.js.map +1 -1
  33. package/dist/global/math/color.js +1 -1
  34. package/dist/global/math/color.js.map +1 -1
  35. package/dist/global/schema/CjsSchema.js +8 -0
  36. package/dist/global/schema/CjsSchema.js.map +1 -1
  37. package/dist/index.js +12 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/resource/CjsResMan.js +47 -7
  40. package/dist/resource/CjsResMan.js.map +1 -1
  41. package/dist/resource/Tr2LightProfileRes.js +37 -0
  42. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  43. package/dist/resource/format/CjsByteWriter.js +46 -46
  44. package/dist/resource/format/CjsByteWriter.js.map +1 -1
  45. package/dist/resource/format/CjsFormat.js +7 -8
  46. package/dist/resource/format/CjsFormat.js.map +1 -1
  47. package/dist/resource/format/CjsFormatStore.js +8 -8
  48. package/dist/resource/format/CjsFormatStore.js.map +1 -1
  49. package/dist/resource/format/CjsGeometryFormat.js +114 -0
  50. package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
  51. package/dist/resource/format/CjsImageFormat.js +282 -0
  52. package/dist/resource/format/CjsImageFormat.js.map +1 -0
  53. package/dist/resource/format/CjsResourceProbe.js +12 -48
  54. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  55. package/dist/resource/format/CjsStringTable.js +37 -37
  56. package/dist/resource/format/CjsStringTable.js.map +1 -1
  57. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
  58. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  59. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
  60. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
  61. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
  62. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  63. package/dist/resource/format/index.js +3 -1
  64. package/dist/resource/format/index.js.map +1 -1
  65. package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
  66. package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
  67. package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
  68. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  69. package/dist/resource/formats/bnk/core/helpers.js +1 -3
  70. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  71. package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
  72. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  73. package/dist/resource/formats/cmf/core/constants.js +1 -2
  74. package/dist/resource/formats/cmf/core/constants.js.map +1 -1
  75. package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
  76. package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
  77. package/dist/resource/formats/cmf/core/helpers.js +13 -13
  78. package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
  79. package/dist/resource/formats/cmf/core/writer.js +24 -24
  80. package/dist/resource/formats/cmf/core/writer.js.map +1 -1
  81. package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
  82. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  83. package/dist/resource/formats/dds/core/helpers.js +125 -40
  84. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  85. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
  86. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  87. package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
  88. package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
  89. package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
  90. package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
  91. package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
  92. package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
  93. package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
  94. package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
  95. package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
  96. package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
  97. package/dist/resource/formats/dxbc/core/decoder.js +2 -2
  98. package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
  99. package/dist/resource/formats/dxbc/core/helpers.js +3 -3
  100. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  101. package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
  102. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  103. package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
  104. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  105. package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
  106. package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
  107. package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
  108. package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
  109. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
  110. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
  111. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
  112. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
  113. package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
  114. package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
  115. package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
  116. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  117. package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
  118. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  119. package/dist/resource/formats/gltf/core/helpers.js +3 -12
  120. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  121. package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
  122. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  123. package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
  124. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  125. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
  126. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  127. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
  128. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
  129. package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
  130. package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
  131. package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
  132. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  133. package/dist/resource/formats/jpeg/core/helpers.js +3 -5
  134. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  135. package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
  136. package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
  137. package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
  138. package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
  139. package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
  140. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  141. package/dist/resource/formats/mp3/core/helpers.js +3 -5
  142. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
  144. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  145. package/dist/resource/formats/mp4/core/helpers.js +3 -5
  146. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  147. package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
  148. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  149. package/dist/resource/formats/obj/core/helpers.js +5 -113
  150. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  151. package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
  152. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  153. package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
  154. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  155. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
  156. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  157. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
  158. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
  159. package/dist/resource/formats/png/CjsPngFormat.js +40 -15
  160. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  161. package/dist/resource/formats/png/core/helpers.js +4 -6
  162. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  163. package/dist/resource/formats/red/CjsRedFormat.js +22 -28
  164. package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
  165. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
  166. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  167. package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
  168. package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
  169. package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
  170. package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  171. package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
  172. package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
  173. package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
  174. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  175. package/dist/resource/formats/stl/core/helpers.js +5 -19
  176. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
  178. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  179. package/dist/resource/formats/tga/core/helpers.js +3 -5
  180. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
  182. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  183. package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
  184. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  185. package/dist/resource/formats/wav/core/helpers.js +3 -5
  186. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
  188. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  189. package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
  190. package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
  191. package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
  192. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  193. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
  194. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  195. package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
  196. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
  197. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
  198. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  199. package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
  200. package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
  201. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  202. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
  203. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  204. package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
  205. package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
  206. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
  207. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
  208. package/dist/resource/formats/webgpu/core/helpers.js +1 -1
  209. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  210. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
  211. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
  212. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
  213. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  214. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
  215. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
  216. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
  217. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
  218. package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
  219. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  220. package/dist/resource/formats/webm/core/helpers.js +3 -5
  221. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  222. package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
  223. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  224. package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
  225. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  226. package/dist/resource/formats/wem/core/bitStream.js +35 -35
  227. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  228. package/dist/resource/formats/wem/core/helpers.js +1 -3
  229. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  230. package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
  231. package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
  232. package/dist/resource/imageio/ImageIO.js +142 -0
  233. package/dist/resource/imageio/ImageIO.js.map +1 -0
  234. package/dist/resource/imageio/index.js +17 -0
  235. package/dist/resource/imageio/index.js.map +1 -0
  236. package/dist/resource/index.js +7 -0
  237. package/dist/resource/index.js.map +1 -1
  238. package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
  239. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  240. package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
  241. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  242. package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
  243. package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
  244. package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
  245. package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
  246. package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
  247. package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
  248. package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
  249. package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
  250. package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
  251. package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
  252. package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
  253. package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
  254. package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
  255. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
  256. package/dist/resource/texture/Tr2ImageRes.js +100 -68
  257. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  258. package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
  259. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  260. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
  261. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  262. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
  263. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  264. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
  265. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  266. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
  267. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  268. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
  269. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  270. package/dist/resource/texture/TriTextureRes.js +151 -29
  271. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  272. package/dist/resource/texture/index.js +7 -0
  273. package/dist/resource/texture/index.js.map +1 -1
  274. package/dist/resource/texture/registerTextureResources.js +83 -0
  275. package/dist/resource/texture/registerTextureResources.js.map +1 -0
  276. package/dist/resource/texture/solidColorTexture.js +10 -19
  277. package/dist/resource/texture/solidColorTexture.js.map +1 -1
  278. package/dist/sof/EveSOF.js +39 -7
  279. package/dist/sof/EveSOF.js.map +1 -1
  280. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
  281. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
  282. package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
  283. package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
  284. package/dist/trinity/core/Tr2RenderUtils.js +1 -1
  285. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
  286. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
  287. package/dist/trinity/core/Tr2TextureReference.js +114 -0
  288. package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
  289. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  290. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  291. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
  292. package/dist/trinity/core/index.js +1 -0
  293. package/dist/trinity/core/index.js.map +1 -1
  294. package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
  295. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  296. package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
  297. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
  298. package/dist/trinity/core/procedural/gradientTexture.js +10 -13
  299. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
  300. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
  301. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  302. package/dist/trinity/eve/EveImpactOverlay.js +102 -50
  303. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  304. package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
  305. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  306. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
  307. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  308. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
  309. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  310. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
  311. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  312. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
  313. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  314. package/dist/trinity/eve/child/EveChildMesh.js +242 -234
  315. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  316. package/dist/trinity/eve/child/EveChildTurret.js +57 -16
  317. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  318. package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
  319. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  320. package/dist/trinity/eve/index.js +2 -2
  321. package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
  322. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  323. package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
  324. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  325. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
  326. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  327. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
  328. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  329. package/dist/trinity/generated/index.js +0 -1
  330. package/dist/trinity/generated/index.js.map +1 -1
  331. package/dist/trinity/generated/trinityCore/index.js +0 -1
  332. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  333. package/dist/trinity/index.js +3 -3
  334. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
  335. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  336. package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
  337. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  338. package/dist/trinity/shader/Tr2Material.js +1 -1
  339. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
  340. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
  341. package/dist/trinityal/index.js +1 -1
  342. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
  343. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  344. package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
  345. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  346. package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
  347. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  348. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
  349. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  350. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
  351. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  352. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
  353. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  354. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
  355. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
  356. package/dist/trinityal/webgpu/internal.js +1 -0
  357. package/dist/trinityal/webgpu/internal.js.map +1 -1
  358. package/docs/global/reference/classes/README.md +90 -0
  359. package/docs/resource/concepts/format-capabilities.md +3 -3
  360. package/docs/resource/formats/README.md +1 -1
  361. package/docs/resource/reference/classes/core.md +31 -1
  362. package/docs/resource/reference/classes/formats.md +7 -7
  363. package/docs/resource/reference/classes/resources.md +76 -16
  364. package/docs/trinity/reference/classes/generated.md +0 -10
  365. package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
  366. package/docs/trinityal/reference/classes/README.md +0 -10
  367. package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
  368. package/package.json +4 -3
  369. package/dist/global/consts/webgpu/index.js +0 -2
  370. package/dist/global/consts/webgpu/textureFormats.js +0 -180
  371. package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
  372. package/dist/resource/formats/dxbc/core/container.js.map +0 -1
  373. package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
  374. package/dist/resource/formats/dxbc/core/program.js.map +0 -1
  375. package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
  376. package/dist/resource/formats/stl/core/targets.js.map +0 -1
  377. package/dist/resource/formats/webgl/core/errors.js.map +0 -1
  378. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
  379. package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
  380. package/dist/resource/texture/texturePipelineBehavior.js +0 -332
  381. package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
  382. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
  383. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
  384. package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EveTurretSet.js","sources":["../../../../../../src/trinity/eve/attachment/turrets/EveTurretSet.js"],"sourcesContent":["// Source: trinity/trinity/Eve/Turret/EveTurretSet.h\r\n// Source: trinity/trinity/Eve/Turret/EveTurretSet.cpp\r\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\r\nimport { carbon, impl, edit, type, CjsSchema } from \"#schema\";\r\nimport { EveEntity } from \"../../EveEntity.js\";\r\nimport { EveComponentType } from \"../../EveComponentTypes.js\";\r\nimport { EveTurretAiming } from \"./EveTurretAiming.js\";\r\nimport { EveTurretTarget } from \"./EveTurretTarget.js\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { vec4 } from \"#math/vec4\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { Tr2RenderReason } from \"../../../generated/trinityCore/enums.js\";\r\nimport { Tr2PerObjectData } from \"../../../core/rawData/perObjectData/Tr2PerObjectData.js\";\r\nimport { Tr2RenderBatch } from \"../../../core/batch/TriRenderBatch/index.js\";\r\nimport { Tr2Vector4Parameter } from \"../../../shader/parameter/Tr2Vector4Parameter.js\";\r\nimport { ITr2Renderable } from \"../../../core/ITr2Renderable.js\";\r\n\r\n/** Carbon BoundingSphereTransform (Utilities/BoundingSphere.cpp:70-81):\r\n * center = TransformCoord(center, tf); radius *= max of the basis row lengths\r\n * (|GetX/Y/Z| = gl flat [0..2]/[4..6]/[8..10]). Single-matrix application -\r\n * NO composition, NO operand swap. Mutates the packed (x, y, z, radius)\r\n * sphere in place. */\r\nfunction BoundingSphereTransform(transform, sphere)\r\n{\r\n vec3.transformMat4(sphere, sphere, transform);\r\n sphere[3] *= Math.max(\r\n Math.hypot(transform[0], transform[1], transform[2]),\r\n Math.hypot(transform[4], transform[5], transform[6]),\r\n Math.hypot(transform[8], transform[9], transform[10])\r\n );\r\n return sphere;\r\n}\r\n\r\n/** Owns a hull's instanced turrets and drives their aiming, animation, firing, visibility, batches, shadows, and per-object data. */\r\n@type.define({ className: \"EveTurretSet\", family: \"eve/attachment/turrets\" })\r\n@carbon.inherit(ITr2Renderable)\r\nexport class EveTurretSet extends EveEntity\r\n{\r\n\r\n /** m_impactBehaviour (ImpactBehaviour::Type - enum ImpactBehaviour) [READWRITE, NOTIFY, PERSIST, ENUM] */\r\n @edit.notify\r\n @edit.persist\r\n @type.int32\r\n @type.enum(\"ImpactBehaviour\")\r\n impactBehaviour = 0;\r\n\r\n /** m_firingEffect (EveTurretFiringFXPtr) [HIDDEN] */\r\n @type.objectRef(\"EveTurretFiringFX\")\r\n firingEffect = null;\r\n\r\n /** m_ambientEffect (IEveSpaceObjectChildPtr) [PERSISTONLY] */\r\n @edit.persistOnly\r\n @type.model(\"IEveSpaceObjectChild\")\r\n ambientEffect = null;\r\n\r\n /** m_name (std::string) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_firingEffectResPath (std::string) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n firingEffectResPath = \"\";\r\n\r\n /** m_chooseRandomLocator (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n chooseRandomLocator = true;\r\n\r\n /** m_boundingSphere (Vector4) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec4\r\n boundingSphere = vec4.create();\r\n\r\n /** m_randomizeExplosionRotation (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n randomizeExplosionRotation = true;\r\n\r\n /** m_lodLevel (LOD - enum LOD) [READ] */\r\n @edit.read\r\n @type.int32\r\n @type.enum(\"LOD\")\r\n lodLevel = 0;\r\n\r\n /** m_currentCyclingFiresPos (uint32_t) [READ] */\r\n @edit.read\r\n @type.uint32\r\n currentCyclingFiresPos = 0;\r\n\r\n /** m_useRandomFiringDelay (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n useRandomFiringDelay = true;\r\n\r\n /** m_bottomClipHeight (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n bottomClipHeight = 0;\r\n\r\n /** m_geometryResource (TriGeometryResPtr) [READ] */\r\n @edit.read\r\n @type.objectRef(\"TriGeometryRes\")\r\n geometryResource = null;\r\n\r\n /** m_maxTrackingTime (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n maxTrackingTime = 1;\r\n\r\n /** m_visibleCount (unsigned int) [READ] */\r\n @edit.read\r\n @type.uint32\r\n visibleCount = 0;\r\n\r\n /** m_trackingInfluence (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n trackingInfluence = 0;\r\n\r\n /** m_swarmID (unsigned int) [READWRITE] */\r\n @edit.readwrite\r\n @type.uint32\r\n swarmID = 0;\r\n\r\n /** m_maxCyclingFirePos (uint32_t) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.uint32\r\n maxCyclingFirePos = 1;\r\n\r\n /** m_playMovementSound (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n playMovementSound = true;\r\n\r\n /** m_isOnline (bool) [READWRITE] */\r\n @edit.readwrite\r\n @type.boolean\r\n isOnline = true;\r\n\r\n /** m_target (EveTurretTargetPtr) [READ] */\r\n @edit.read\r\n @type.objectRef(\"EveTurretTarget\")\r\n target = new EveTurretTarget();\r\n\r\n /** m_locatorName (std::string) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n locatorName = \"\";\r\n\r\n /** m_sysBonePitchFactor (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitchFactor = 1;\r\n\r\n /** m_sysBonePitchMax (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitchMax = 90;\r\n\r\n /** m_sysBonePitchMin (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitchMin = 0;\r\n\r\n /** m_sysBonePitchOffset (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitchOffset = 0;\r\n\r\n /** m_sysBonePitch01Factor (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch01Factor = 1;\r\n\r\n /** m_sysBonePitch01Offset (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch01Offset = 0;\r\n\r\n /** m_sysBonePitch02Factor (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch02Factor = 1;\r\n\r\n /** m_sysBonePitch02Offset (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch02Offset = 0;\r\n\r\n /** m_sysBonePitch03Factor (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch03Factor = 1;\r\n\r\n /** m_sysBonePitch03Offset (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBonePitch03Offset = 0;\r\n\r\n /** m_updatePitchPose (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n updatePitchPose = false;\r\n\r\n /** m_geomResPath (std::string) [READWRITE, NOTIFY, PERSIST] */\r\n @edit.notify\r\n @edit.persist\r\n @type.string\r\n geometryResPath = \"\";\r\n\r\n /** m_impactSize (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n impactSize = 0;\r\n\r\n /** m_state (State - enum State) [READ, PERSIST] */\r\n @edit.persist\r\n @type.int32\r\n @type.enum(\"State\")\r\n state = 2;\r\n\r\n /** m_sysBoneHeight (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n sysBoneHeight = 1;\r\n\r\n /** m_randomFiringDelay (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n randomFiringDelay = 0;\r\n\r\n /** m_turretEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.model(\"Tr2Effect\")\r\n turretEffect = null;\r\n\r\n /** m_idleToTargetingMovementAudioEvent (std::wstring) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n idleToTargetingMovementAudioEvent = \"\";\r\n\r\n /** m_targetingToIdleMovementAudioEvent (std::wstring) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.string\r\n targetingToIdleMovementAudioEvent = \"\";\r\n\r\n /** m_generatedDistributedAmbientEffect (EveChildInstanceContainerPtr) [READ] */\r\n @edit.read\r\n @type.objectRef(\"EveChildInstanceContainer\")\r\n generatedDistributedAmbientEffect = null;\r\n\r\n /** m_cyclingFireGroupCount (uint32_t) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.uint32\r\n cyclingFireGroupCount = 1;\r\n\r\n /** m_turretMovementObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.model(\"TriObserverLocal\")\r\n turretMovementObserver = null;\r\n\r\n /** m_slotNumber (int) [READWRITE] */\r\n @edit.readwrite\r\n @type.int32\r\n slotNumber = -1;\r\n\r\n /** m_ambientEffectEditingMode (bool) [READWRITE, NOTIFY] */\r\n @edit.notify\r\n @edit.readwrite\r\n @type.boolean\r\n ambientEffectEditingMode = false;\r\n\r\n /** m_displayEffects (bool) [READWRITE] */\r\n @edit.readwrite\r\n @type.boolean\r\n displayEffects = true;\r\n\r\n /** m_display (bool) [READWRITE] */\r\n @edit.readwrite\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_useDynamicBounds (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @edit.notify\r\n @edit.persist\r\n @type.boolean\r\n useDynamicBounds = false;\r\n\r\n /** m_estimatedPixelDiameter (float) [READ] */\r\n @edit.read\r\n @type.float32\r\n estimatedPixelDiameter = -1;\r\n\r\n /** m_lowLodFiringEffectScale (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n lowLodFiringEffectScale = vec3.fromValues(1, 1, 1);\r\n\r\n /** m_lowLodFiringEffectTranslation (Vector3) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.vec3\r\n lowLodFiringEffectTranslation = vec3.create();\r\n\r\n /** m_lowLodFiringEffectRotation (Quaternion) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.quat\r\n lowLodFiringEffectRotation = quat.create();\r\n\r\n /** m_useLowLodFiringTransform (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n useLowLodFiringTransform = false;\r\n\r\n /** m_laserMissBehaviour (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n laserMissBehaviour = false;\r\n\r\n /** m_projectileMissBehaviour (bool) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.boolean\r\n projectileMissBehaviour = false;\r\n\r\n /** Values the OnModified chain compares against; null until first snapshot. */\r\n\r\n #turrets = [];\r\n\r\n #parentTransform = mat4.create();\r\n\r\n /** m_shipTransformPrev - last frame's parent transform, for motion vectors. */\r\n #shipTransformPrev = mat4.create();\r\n\r\n /**\r\n * m_parentData - the hull values an attachment renders with, refreshed by the\r\n * parent through IEveSpaceObject2::GetParentData.\r\n */\r\n #parentData = {};\r\n\r\n /**\r\n * m_skeletonBoneIndices - the shader's bone mapping, shared by every turret\r\n * of the set. Skeleton realization is not ported yet, so this stays empty until\r\n * one is supplied and the default count applies.\r\n */\r\n #skeletonBoneIndices = [];\r\n\r\n /** Default bones per turret when no skeleton mapping is present (cpp:2334). */\r\n static DEFAULT_BONES_PER_TURRET = 3;\r\n\r\n /** Tr2ShLightingManager::PACKED_COEFFICIENT_COUNT. */\r\n static SH_COEFFICIENT_COUNT = 7;\r\n\r\n /** Carbon's placeholder pose for a visible-but-invalid turret (cpp:2335-2336). */\r\n static #invalidTranslation = vec4.fromValues(0, 0, 0, 1);\r\n\r\n static #invalidRotation = quat.create();\r\n\r\n static #zero4 = vec4.create();\r\n\r\n #activeTurret = EveTurretSet.INVALID_INDEX;\r\n\r\n #highDetailFrozen = false;\r\n\r\n #trackingInfluenceDelta = 0;\r\n\r\n #delayToFadeOutTracking = 0;\r\n\r\n #delayToFadeInTracking = 0;\r\n\r\n #recheckTimeLeft = 2;\r\n\r\n /** Carbon method RebuildBoundingSphere (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Geometry resources are duck-typed; the runtime Trinity layer stores their computed sphere without creating render buffers.\")\r\n RebuildBoundingSphere()\r\n {\r\n const resource = this.geometryResource;\r\n if (!resource) return false;\r\n resource.RecalculateBoundingSphere?.();\r\n const value = resource.GetBoundingSphere(0, this.boundingSphere);\r\n if (value?.length >= 4 && value !== this.boundingSphere) vec4.copy(this.boundingSphere, value);\r\n return value !== false;\r\n }\r\n\r\n /** Carbon method ForceStateDeactive (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n ForceStateDeactive()\r\n {\r\n this.trackingInfluence = 0;\r\n this.#delayToFadeOutTracking = 0;\r\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\r\n this.target?.StopFireAtLocator?.();\r\n this.firingEffect?.StopFiring?.();\r\n this.state = EveTurretSet.State.STATE_DEACTIVE;\r\n this.#playAll(\"\", \"Inactive\", 0);\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method ForceStateTargeting (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n ForceStateTargeting()\r\n {\r\n this.trackingInfluence = this.maxTrackingTime;\r\n this.#trackingInfluenceDelta = 0;\r\n this.#activeTurret = this.GetClosestTurret();\r\n this.state = EveTurretSet.State.STATE_TARGETING;\r\n this.#playTurret(this.#activeTurret, \"\", \"Active\", 0);\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method FreezeHighDetailLOD (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The graph freezes its LOD state; geometry creation is not ported yet.\")\r\n FreezeHighDetailLOD()\r\n {\r\n this.lodLevel = EveTurretSet.LOD.LOD_DISABLED;\r\n this.#highDetailFrozen = true;\r\n this.geometryResource?.Prepare?.();\r\n }\r\n\r\n /** Returns the turret effect Carbon exposes to SOF material setup. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShader()\r\n {\r\n return this.turretEffect;\r\n }\r\n\r\n /**\r\n * The shared sysbone aiming math, synced from this set's flat tuning\r\n * fields. Carbon embeds EveTurretAiming by value (EveTurretSet.h:425) and\r\n * re-exposes its members as these flat Blue attributes; pose-owning\r\n * consumers of the UpdateTrackingPose seam use THIS object so both hosts\r\n * run identical math.\r\n */\r\n @impl.adapted\r\n @impl.reason(\"Carbon's by-value embed becomes an accessor because the pose pipeline (the aiming consumer) lives behind the animation seam.\")\r\n GetAiming()\r\n {\r\n const aiming = this.#aiming;\r\n aiming.sysBoneHeight = this.sysBoneHeight;\r\n aiming.sysBonePitchOffset = this.sysBonePitchOffset;\r\n aiming.sysBonePitchFactor = this.sysBonePitchFactor;\r\n aiming.sysBonePitchMin = this.sysBonePitchMin;\r\n aiming.sysBonePitchMax = this.sysBonePitchMax;\r\n aiming.sysBonePitch01Offset = this.sysBonePitch01Offset;\r\n aiming.sysBonePitch01Factor = this.sysBonePitch01Factor;\r\n aiming.sysBonePitch02Offset = this.sysBonePitch02Offset;\r\n aiming.sysBonePitch02Factor = this.sysBonePitch02Factor;\r\n aiming.sysBonePitch03Offset = this.sysBonePitch03Offset;\r\n aiming.sysBonePitch03Factor = this.sysBonePitch03Factor;\r\n return aiming;\r\n }\r\n\r\n #aiming = new EveTurretAiming();\r\n\r\n /**\r\n * Applies resolved SOF vec4 values to the turret effect's constant path, or\r\n * to its nominal vector-parameter path when no constants are authored.\r\n */\r\n @impl.custom\r\n @impl.reason(\"The combined runtime keeps SOF independently importable by putting the nominal Tr2Effect application boundary on the owning turret class.\")\r\n ApplySofTurretMaterial(resolveParameter)\r\n {\r\n const effect = this.GetShader();\r\n if (!effect)\r\n {\r\n return false;\r\n }\r\n\r\n if (effect.constParameters.length)\r\n {\r\n effect.StartUpdate();\r\n try\r\n {\r\n for (const parameter of effect.constParameters)\r\n {\r\n const value = resolveParameter(parameter.name);\r\n if (value)\r\n {\r\n vec4.copy(parameter.value, value);\r\n }\r\n }\r\n }\r\n finally\r\n {\r\n effect.EndUpdate();\r\n }\r\n return true;\r\n }\r\n\r\n for (const parameter of effect.parameters)\r\n {\r\n // Picking the vec4 entries out of a mixed parameter list. This names a\r\n // LEAF CLASS because the family has no declared contract to ask for:\r\n // Carbon derives it from ITriEffectParameter and ITriReroutable\r\n // (Tr2Vector4Parameter.h:13-16) and our port put the shared behaviour on\r\n // an invented CjsParameter instead. See\r\n // .agents/parameter-family-missing-contracts.md.\r\n if (!CjsSchema.cast(parameter, Tr2Vector4Parameter))\r\n {\r\n continue;\r\n }\r\n const value = resolveParameter(parameter.GetParameterName());\r\n if (value)\r\n {\r\n parameter.SetValue(value);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Carbon method GetShotTimeVariance (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n GetShotTimeVariance()\r\n {\r\n return 0.6;\r\n }\r\n\r\n /** Carbon method MissQueueSize (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n MissQueueSize()\r\n {\r\n return this.target?.MissQueueSize?.() ?? 0;\r\n }\r\n\r\n /** Carbon method GetLastShotTime (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n GetLastShotTime()\r\n {\r\n return this.target?.GetLastShotTime?.() ?? 0;\r\n }\r\n\r\n /** Carbon method EnterStateDeactive (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n EnterStateDeactive()\r\n {\r\n if (this.state === EveTurretSet.State.STATE_DEACTIVE) return;\r\n if (this.state === EveTurretSet.State.STATE_FIRING) this.firingEffect?.StopFiring?.();\r\n if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n this.#delayToFadeOutTracking = 0.0001;\r\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\r\n this.target?.StopFireAtLocator?.();\r\n this.#playAll(\"Pack\", \"Inactive\", 1);\r\n }\r\n else\r\n {\r\n this.trackingInfluence = 0;\r\n this.#delayToFadeOutTracking = 0;\r\n this.#playAll(\"Pack\", \"Inactive\", 0);\r\n }\r\n this.state = EveTurretSet.State.STATE_DEACTIVE;\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method EnterStateFiring (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's geometry/animation selection is represented by portable turret records and controller forwarding.\")\r\n EnterStateFiring()\r\n {\r\n if (!this.#setupFiringState()) return false;\r\n if (this.firingEffect && this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n if (this.firingEffect.IsLooping?.())\r\n {\r\n this.firingEffect.PrepareFiringEffectMoveObjects?.();\r\n return true;\r\n }\r\n this.firingEffect.StopFiring?.();\r\n }\r\n if (this.firingEffect)\r\n {\r\n if (this.maxCyclingFirePos > 1) this.firingEffect.PrepareFiring?.(this.randomFiringDelay, this.currentCyclingFiresPos, this.cyclingFireGroupCount);\r\n else this.firingEffect.PrepareFiring?.(this.randomFiringDelay);\r\n this.firingEffect.SetImpactConfiguration?.(this.target?.GetImpactConfiguration?.());\r\n }\r\n this.state = EveTurretSet.State.STATE_FIRING;\r\n this.#setAmbientState();\r\n return true;\r\n }\r\n\r\n /** Carbon method EnterStateIdle (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n EnterStateIdle()\r\n {\r\n if (!this.isOnline) return;\r\n if (this.state === EveTurretSet.State.STATE_DEACTIVE)\r\n {\r\n this.#playAll(\"Deploy\", \"Active\", 0);\r\n this.trackingInfluence = 0;\r\n }\r\n else if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n this.#delayToFadeOutTracking = 0.0001;\r\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\r\n this.target?.StopFireAtLocator?.();\r\n this.firingEffect?.StopFiring?.();\r\n this.#playAll(\"\", \"Active\", 1);\r\n this.turretMovementObserver?.GetObserver()?.SendEvent?.(this.targetingToIdleMovementAudioEvent);\r\n }\r\n else this.#playAll(\"\", \"Active\", 0);\r\n this.state = EveTurretSet.State.STATE_IDLE;\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method EnterStateReloading (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n EnterStateReloading()\r\n {\r\n const wasDeactive = this.state === EveTurretSet.State.STATE_DEACTIVE;\r\n if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n this.#delayToFadeOutTracking = 0.0001;\r\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\r\n this.target?.StopFireAtLocator?.();\r\n this.firingEffect?.StopFiring?.();\r\n this.#playAll(\"Reload\", \"Active\", 1);\r\n }\r\n else if (!wasDeactive) this.#playAll(\"Reload\", \"Active\", 0);\r\n this.state = EveTurretSet.State.STATE_RELOADING;\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method EnterStateTargeting (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\r\n EnterStateTargeting()\r\n {\r\n if (!this.isOnline) return;\r\n if (this.state === EveTurretSet.State.STATE_DEACTIVE)\r\n {\r\n this.#delayToFadeInTracking = this.#playAll(\"Deploy\", \"Active\", 1) + 0.0001;\r\n }\r\n else if (this.state === EveTurretSet.State.STATE_IDLE || this.state === EveTurretSet.State.STATE_RELOADING)\r\n {\r\n this.#delayToFadeInTracking = 0.0001;\r\n this.#playAll(\"\", \"Active\", 1);\r\n }\r\n else if (this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\r\n this.target?.StopFireAtLocator?.();\r\n this.firingEffect?.StopFiring?.();\r\n this.#playAll(\"\", \"Active\", 0);\r\n }\r\n this.state = EveTurretSet.State.STATE_TARGETING;\r\n this.#setAmbientState();\r\n }\r\n\r\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\r\n HandleControllerEvent(name)\r\n {\r\n this.firingEffect?.HandleControllerEvent(name);\r\n this.#ambientEffect()?.HandleControllerEvent(name);\r\n }\r\n\r\n /** Carbon method GetFiringBoneWorldTransform (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Portable turret records and duck-typed geometry bone transforms replace Carbon's CMF/Granny split.\")\r\n GetFiringBoneWorldTransform(muzzle = 0, out = mat4.create())\r\n {\r\n let turretIndex = this.#activeTurret;\r\n if (turretIndex === EveTurretSet.INVALID_INDEX) turretIndex = this.GetClosestTurret();\r\n if (turretIndex === EveTurretSet.INVALID_INDEX) return mat4.copy(out, this.#parentTransform);\r\n const turret = this.#turrets[turretIndex];\r\n const world = turret?.worldMatrix ?? turret?.transform ?? turret;\r\n if (world?.length === 16) mat4.copy(out, world);\r\n else mat4.copy(out, this.#parentTransform);\r\n if (!this.firingEffect) return out;\r\n const boneID = this.firingEffect?.GetPerMuzzleBoneID?.(muzzle) ?? EveTurretSet.INVALID_INDEX;\r\n if (boneID === EveTurretSet.INVALID_INDEX)\r\n {\r\n if (this.useLowLodFiringTransform)\r\n {\r\n mat4.fromRotationTranslationScale(EveTurretSet.#lowLodTransform, this.lowLodFiringEffectRotation, this.lowLodFiringEffectTranslation, this.lowLodFiringEffectScale);\r\n mat4.multiply(out, out, EveTurretSet.#lowLodTransform);\r\n }\r\n return out;\r\n }\r\n const boneTransform = turret?.GetBoneTransform?.(boneID, EveTurretSet.#boneTransform)\r\n ?? this.geometryResource?.GetBoneTransform?.(turretIndex, boneID, EveTurretSet.#boneTransform);\r\n if (boneTransform?.length === 16)\r\n {\r\n if (boneTransform !== EveTurretSet.#boneTransform) mat4.copy(EveTurretSet.#boneTransform, boneTransform);\r\n return mat4.multiply(out, out, EveTurretSet.#boneTransform);\r\n }\r\n if (this.useLowLodFiringTransform)\r\n {\r\n mat4.fromRotationTranslationScale(EveTurretSet.#lowLodTransform, this.lowLodFiringEffectRotation, this.lowLodFiringEffectTranslation, this.lowLodFiringEffectScale);\r\n mat4.multiply(out, out, EveTurretSet.#lowLodTransform);\r\n return out;\r\n }\r\n if (this.sysBonePitchMin < 45)\r\n {\r\n vec3.set(EveTurretSet.#turretPosition, out[12], out[13], out[14]);\r\n const target = this.target?.GetTrackingPosition?.() ?? this.target?.position ?? EveTurretSet.#zero;\r\n vec3.subtract(EveTurretSet.#targetDirection, target, EveTurretSet.#turretPosition);\r\n if (vec3.squaredLength(EveTurretSet.#targetDirection))\r\n {\r\n quat.rotationTo(EveTurretSet.#directRotation, EveTurretSet.#unitZ, EveTurretSet.#targetDirection);\r\n mat4.fromRotationTranslation(out, EveTurretSet.#directRotation, EveTurretSet.#turretPosition);\r\n }\r\n }\r\n else\r\n {\r\n mat4.fromXRotation(EveTurretSet.#launcherRotation, -Math.PI * 0.5);\r\n mat4.multiply(out, out, EveTurretSet.#launcherRotation);\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\r\n SetControllerVariable(name, value)\r\n {\r\n this.firingEffect?.SetControllerVariable(name, value);\r\n this.#ambientEffect()?.SetControllerVariable(name, value);\r\n }\r\n\r\n /** Carbon method SetShotMissed (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n SetShotMissed(missed)\r\n {\r\n this.target?.SetShotMissed?.(missed);\r\n }\r\n\r\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\r\n StartControllers()\r\n {\r\n this.firingEffect?.StartControllers();\r\n this.#ambientEffect()?.StartControllers();\r\n }\r\n\r\n /**\r\n * Creates the target when absent, pushes the authored miss and impact\r\n * behaviour into it, and initializes the firing and ambient effects.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"InitializeGeometryResource and the granny skeleton load are not ported; Carbon calls them from here (cpp:146-165).\")\r\n Initialize()\r\n {\r\n this.target ??= new EveTurretTarget();\r\n this.target.SetBehaviour(this.laserMissBehaviour, this.projectileMissBehaviour, this.impactSize, this.impactBehaviour);\r\n this.firingEffect?.Initialize();\r\n this.#ambientEffect()?.Initialize();\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon OnModified (EveTurretSet.cpp:167-201). FIVE arms, and they are an\r\n * `else if` CHAIN: Carbon is notified once per changed member, so exactly one\r\n * arm runs per notification.\r\n *\r\n * Our settle reports a whole write instead, so the chain is evaluated against\r\n * the values last seen rather than against a Be::Var pointer - one arm per\r\n * settle, in the donor's order. Every arm stays present even where its body\r\n * is unported, because removing one would let a change fall through to the\r\n * next arm and run work the donor would not have run.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"JS dispatches the native hook using the exposed member name; existing class-owned rendering/resource adaptations remain unchanged.\")\r\n OnModified(propertyName)\r\n {\r\n if (propertyName === \"display\")\r\n {\r\n this.ReRegister();\r\n }\r\n else if (propertyName === \"geometryResPath\")\r\n {\r\n this.ReRegister();\r\n // Carbon reloads here (cpp:177, \"new gr2 file specified -> reload!\").\r\n // InitializeGeometryResource is unported: it asks BeResMan for the\r\n // geometry and re-attaches the notify target (cpp:252-290).\r\n }\r\n else if (propertyName === \"ambientEffectEditingMode\")\r\n {\r\n // Carbon re-sets the ambient effect to itself, which re-runs\r\n // InitializeAmbientEffect (cpp:181, cpp:3554-3565). Unported: the\r\n // generated distributed container it builds does not exist here.\r\n }\r\n else if (propertyName === \"laserMissBehaviour\" || propertyName === \"projectileMissBehaviour\"\r\n || propertyName === \"impactSize\" || propertyName === \"impactBehaviour\")\r\n {\r\n this.target.SetBehaviour(this.laserMissBehaviour, this.projectileMissBehaviour, this.impactSize, this.impactBehaviour);\r\n }\r\n else if (propertyName === \"useDynamicBounds\")\r\n {\r\n // Carbon rebuilds the per-bone bounds (cpp:187-200), taking the CMF\r\n // branch whenever the geometry is absent, unloaded or CMF - which is\r\n // always, for us. InitializeDynamicBounds is unported, and porting it\r\n // alone buys nothing until GetDynamicBounds and GetLocalBoundingBox\r\n // land with it.\r\n }\r\n return true;\r\n }\r\n\r\n /** Attaches the firing effect and initializes it immediately. */\r\n @carbon.method\r\n @impl.implemented\r\n SetFiringEffect(effect)\r\n {\r\n this.firingEffect = effect ?? null;\r\n this.firingEffect?.Initialize();\r\n }\r\n\r\n /**\r\n * Offers an object to the target for validation; on acceptance it sends the\r\n * idle-to-targeting movement audio event when coming from idle or switching\r\n * targets, and rescales the firing effect to the new target's radius. Returns\r\n * whether the object was accepted.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon QueryInterface target attachment is delegated to EveTurretTarget's browser-compatible target validation.\")\r\n SetTargetObject(object)\r\n {\r\n this.target ??= new EveTurretTarget();\r\n const previous = this.target.GetTargetable?.();\r\n const accepted = this.target.SetTargetable(object);\r\n if (accepted)\r\n {\r\n if ((this.state === EveTurretSet.State.STATE_IDLE || previous !== object) && this.playMovementSound && this.idleToTargetingMovementAudioEvent)\r\n {\r\n this.turretMovementObserver?.GetObserver()?.SendEvent?.(this.idleToTargetingMovementAudioEvent);\r\n }\r\n this.SetTargetScale();\r\n }\r\n return accepted;\r\n }\r\n\r\n /** The object currently being targeted, or null. */\r\n @carbon.method\r\n @impl.implemented\r\n GetTargetObject()\r\n {\r\n return this.target?.GetTargetable?.() ?? null;\r\n }\r\n\r\n /**\r\n * Rescales the firing effect from the target's radius, passing -1 when there\r\n * is no target.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetTargetScale()\r\n {\r\n this.firingEffect?.SetScaleByRadius?.(this.target?.GetRadius?.() ?? -1);\r\n }\r\n\r\n /**\r\n * Replaces the turret records, truncated to the fixed 24-turret limit,\r\n * normalizing each into the record shape and resetting visibleCount.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.\")\r\n SetTurrets(turrets = [])\r\n {\r\n this.#turrets = Array.from(turrets).slice(0, EveTurretSet.MAX_TURRETS_PER_SET).map(turret => this.#normalizeTurret(turret));\r\n this.visibleCount = this.#turrets.length;\r\n return this.#turrets;\r\n }\r\n\r\n /**\r\n * Appends one normalized turret record and returns it, or null once the fixed\r\n * 24-turret limit is reached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.\")\r\n AddTurret(turret)\r\n {\r\n if (this.#turrets.length >= EveTurretSet.MAX_TURRETS_PER_SET) return null;\r\n const value = this.#normalizeTurret(turret);\r\n this.#turrets.push(value);\r\n this.visibleCount = this.#turrets.length;\r\n return value;\r\n }\r\n\r\n /**\r\n * The live turret record list; the records are mutated in place by\r\n * UpdateTurretTransforms, so this is not a snapshot.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTurrets()\r\n {\r\n return this.#turrets;\r\n }\r\n\r\n /** Carbon method SetLocalTransform. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Portable records replace Carbon's CMF/Granny SingleTurretData allocation while retaining its fixed 24-turret limit and scale removal.\")\r\n SetLocalTransform(turretIndex, localMatrix)\r\n {\r\n const index = Number(turretIndex) >>> 0;\r\n if (index >= EveTurretSet.MAX_TURRETS_PER_SET || localMatrix?.length !== 16) return false;\r\n while (this.#turrets.length <= index)\r\n {\r\n const turret = this.#normalizeTurret(null);\r\n turret.valid = false;\r\n turret.display = false;\r\n this.#turrets.push(turret);\r\n }\r\n const turret = this.#turrets[index];\r\n mat4.getRotation(EveTurretSet.#localRotation, localMatrix);\r\n mat4.getTranslation(EveTurretSet.#localTranslation, localMatrix);\r\n mat4.fromRotationTranslation(turret.localMatrix, EveTurretSet.#localRotation, EveTurretSet.#localTranslation);\r\n quat.copy(turret.localQuaternion, EveTurretSet.#localRotation);\r\n vec4.set(turret.localPosition, EveTurretSet.#localTranslation[0], EveTurretSet.#localTranslation[1], EveTurretSet.#localTranslation[2], 1);\r\n turret.valid = false;\r\n turret.display = false;\r\n this.generatedDistributedAmbientEffect?.UpdateInstance?.(index, EveTurretSet.#unitScale, turret.localQuaternion, EveTurretSet.#localTranslation);\r\n this.visibleCount = this.#turrets.length;\r\n return true;\r\n }\r\n\r\n /**\r\n * Stores the hull transform and immediately recomputes every turret's world\r\n * matrix from it.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetParentTransform(transform)\r\n {\r\n mat4.copy(this.#parentTransform, transform);\r\n this.UpdateTurretTransforms(transform);\r\n }\r\n\r\n /**\r\n * Recomputes each turret's world matrix as the parent transform applied to its\r\n * local matrix and marks the record valid; defaults to the stored parent\r\n * transform.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateTurretTransforms(parentTransform = this.#parentTransform)\r\n {\r\n mat4.copy(this.#parentTransform, parentTransform);\r\n for (const turret of this.#turrets)\r\n {\r\n mat4.multiply(turret.worldMatrix, parentTransform, turret.localMatrix);\r\n turret.valid = true;\r\n }\r\n }\r\n\r\n /**\r\n * The index of the turret whose world up axis points most directly at its\r\n * nearest damage locator, or 0 when no valid turret is found.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The closest portable turret is selected from its world up-axis and the target tracking position.\")\r\n GetClosestTurret()\r\n {\r\n return this.#getClosestTurretAndLocator().turret;\r\n }\r\n\r\n /**\r\n * Convenience update that runs the synchronous then asynchronous phase against\r\n * the stored parent transform.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"This combined browser convenience update runs Carbon's explicit synchronous and asynchronous phases in order.\")\r\n Update(context)\r\n {\r\n this.UpdateSyncronous(context);\r\n this.UpdateAsyncronous(context, this.#parentTransform);\r\n return true;\r\n }\r\n\r\n /**\r\n * Runs the synchronous phase: while a looping effect fires it re-picks the\r\n * turret and locator every two seconds, then updates the firing effect, feeds\r\n * the target the current muzzle start position, and updates the ambient effect\r\n * and movement observer from the first turret.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animation cleanup and task dispatch are forwarded through portable records; target and firing timing remain source-faithful.\")\r\n UpdateSyncronous(context, parentTransform = this.#parentTransform)\r\n {\r\n const deltaTime = Number(context?.GetDeltaT?.() ?? context?.deltaTime ?? context?.deltaT ?? 0);\r\n if (parentTransform?.length === 16) mat4.copy(this.#parentTransform, parentTransform);\r\n if (this.firingEffect)\r\n {\r\n if (this.#activeTurret !== EveTurretSet.INVALID_INDEX && this.firingEffect.IsLooping?.() && this.state === EveTurretSet.State.STATE_FIRING)\r\n {\r\n this.#recheckTimeLeft -= deltaTime;\r\n if (this.#recheckTimeLeft < 0)\r\n {\r\n const pair = this.#getClosestTurretAndLocator();\r\n if (pair.turret !== this.#activeTurret || pair.locator !== this.target?.GetLocator?.()) this.#setupFiringState();\r\n this.#recheckTimeLeft = 2;\r\n }\r\n }\r\n this.firingEffect.UpdateSynchronous?.(context);\r\n }\r\n vec3.set(EveTurretSet.#sourcePosition, this.#parentTransform[12], this.#parentTransform[13], this.#parentTransform[14]);\r\n this.firingEffect?.GetStartPosition?.(EveTurretSet.#sourcePosition);\r\n this.target?.Update(deltaTime, EveTurretSet.#sourcePosition);\r\n this.#ambientEffect()?.UpdateSyncronous(context, { isVisible: this.display, localToWorldTransform: this.#parentTransform });\r\n if (this.#turrets.length) this.turretMovementObserver?.Update(this.#turrets[0].worldMatrix);\r\n return true;\r\n }\r\n\r\n /**\r\n * Runs the asynchronous phase: recomputes the turret world matrices, ramps the\r\n * tracking influence through its fade-in and fade-out delays, pushes the\r\n * target position into each valid turret's tracking pose in that turret's\r\n * local space, then hands the firing effect its end position and per-muzzle\r\n * world transforms.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Skeleton realization is not ported yet; portable turret records may consume the same local-target tracking hook.\")\r\n UpdateAsyncronous(context, parentData = this.#parentTransform)\r\n {\r\n const deltaTime = Number(context?.GetDeltaT?.() ?? context?.deltaTime ?? context?.deltaT ?? 0);\r\n const parentTransform = parentData?.transform?.length === 16 ? parentData.transform : parentData;\r\n if (parentTransform?.length === 16)\r\n {\r\n // The OUTGOING parent transform becomes m_shipTransformPrev before the\r\n // new one is adopted, so the record can carry both.\r\n mat4.copy(this.#shipTransformPrev, this.#parentTransform);\r\n this.UpdateTurretTransforms(parentTransform);\r\n }\r\n if (parentData && parentData !== this.#parentTransform && !ArrayBuffer.isView(parentData) && !Array.isArray(parentData))\r\n {\r\n this.#parentData = parentData;\r\n }\r\n if (this.#trackingInfluenceDelta !== 0)\r\n {\r\n this.trackingInfluence += this.#trackingInfluenceDelta * deltaTime;\r\n if (this.trackingInfluence > this.maxTrackingTime)\r\n {\r\n this.trackingInfluence = this.maxTrackingTime;\r\n this.#trackingInfluenceDelta = 0;\r\n }\r\n else if (this.trackingInfluence < 0)\r\n {\r\n this.trackingInfluence = 0;\r\n this.#trackingInfluenceDelta = 0;\r\n }\r\n }\r\n if (this.#delayToFadeOutTracking > 0)\r\n {\r\n this.#delayToFadeOutTracking -= deltaTime;\r\n if (this.#delayToFadeOutTracking <= 0)\r\n {\r\n this.#delayToFadeOutTracking = 0;\r\n this.#trackingInfluenceDelta = -1;\r\n }\r\n }\r\n if (this.#delayToFadeInTracking > 0)\r\n {\r\n this.#delayToFadeInTracking -= deltaTime;\r\n if (this.#delayToFadeInTracking <= 0)\r\n {\r\n this.#delayToFadeInTracking = 0;\r\n this.#trackingInfluenceDelta = 1;\r\n }\r\n }\r\n if (this.trackingInfluence !== 0)\r\n {\r\n const trackingPosition = this.target?.GetTrackingPosition?.() ?? this.target?.position;\r\n if (trackingPosition)\r\n {\r\n for (const turret of this.#turrets)\r\n {\r\n if (!turret.valid || !mat4.invert(EveTurretSet.#inverseTurret, turret.worldMatrix)) continue;\r\n vec3.transformMat4(EveTurretSet.#localTarget, trackingPosition, EveTurretSet.#inverseTurret);\r\n const hook = turret.UpdateTrackingPose ?? turret.source?.UpdateTrackingPose;\r\n hook?.call(turret.source ?? turret, EveTurretSet.#localTarget, this.trackingInfluence, this);\r\n }\r\n }\r\n }\r\n if (this.firingEffect)\r\n {\r\n this.firingEffect.SetEndPosition?.(this.target?.GetTargetPosition?.() ?? this.target?.targetPosition ?? EveTurretSet.#zero);\r\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount?.(); muzzle++)\r\n {\r\n this.firingEffect.SetMuzzleTransform?.(muzzle, this.GetFiringBoneWorldTransform(muzzle, EveTurretSet.#muzzleTransform));\r\n }\r\n this.firingEffect.SetDisplayDestObject?.(this.target?.ShowDestObject?.() ?? true);\r\n this.firingEffect.UpdateAsynchronous?.(context);\r\n }\r\n this.#ambientEffect()?.UpdateAsyncronous(context, { isVisible: this.display, localToWorldTransform: this.#parentTransform });\r\n return true;\r\n }\r\n\r\n /**\r\n * Appends the firing and ambient effect renderables to out; gated on display,\r\n * and each contribution additionally on displayEffects.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Renderable collection is backend-neutral; geometry and batch realization are not ported yet.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display) return out;\r\n if (this.displayEffects) this.firingEffect?.GetRenderables(out);\r\n if (this.#ambientEffect() && this.displayEffects) this.#ambientEffect().GetRenderables(out);\r\n return out;\r\n }\r\n\r\n /**\r\n * Forwards visibility to the firing and ambient effects; gated on display and,\r\n * per effect, on displayEffects. The turret geometry itself is not culled\r\n * here.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Visibility is forwarded through backend-neutral firing and ambient graph contracts.\")\r\n UpdateVisibility(context)\r\n {\r\n if (!this.display) return false;\r\n if (this.displayEffects) this.firingEffect?.UpdateVisibility(context);\r\n if (this.displayEffects) this.#ambientEffect()?.UpdateVisibility(context, this.#parentTransform);\r\n return true;\r\n }\r\n\r\n /** Carbon EveTurretSet::RegisterComponents (cpp:238-256): ShadowCaster leaf\r\n * self-registration, then forwards the firing effect and the ambient effect\r\n * (GetAmbientEffectOrGeneratedEffect, mirrored by #ambientEffect). Gate\r\n * m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n this.firingEffect?.Register(registry);\r\n this.#ambientEffect()?.Register(registry);\r\n }\r\n }\r\n\r\n /** Carbon EveTurretSet::UnRegisterComponents (cpp:258-274): forwards the\r\n * firing and ambient effects only (own components were already removed by\r\n * EveEntity::UnRegister, EveEntity.cpp:90); no display re-check. */\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 this.firingEffect?.UnRegister(registry);\r\n this.#ambientEffect()?.UnRegister(registry);\r\n }\r\n }\r\n\r\n /** Carbon EveTurretSet::HasTransparentBatches: instanced turrets are opaque. */\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n return false;\r\n }\r\n\r\n /**\r\n * Emits Carbon's single opaque instanced turret batch. The geometry source\r\n * and instance count are portable; the engine resolves allocations and the\r\n * instance stream during realization.\r\n * @returns {Boolean} whether the batch was committed\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Instance stream, vertex declaration and realized LOD allocations are not ported yet; Trinity records their canonical geometry source and instance count.\")\r\n GetBatches(batches, batchType, perObjectData, _reason)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_OPAQUE || !this.display || !this.visibleCount || !this.geometryResource)\r\n {\r\n return false;\r\n }\r\n\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(this.turretEffect);\r\n if (!batch.IsValid())\r\n {\r\n return false;\r\n }\r\n batch.SetGeometrySource(this.geometryResource, 0, -1, -1, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batch.instanceCount = this.visibleCount >>> 0;\r\n return batches.Commit(batch);\r\n }\r\n\r\n /** Carbon EveTurretSet::GetSortValue: opaque turret instances use key one. */\r\n @carbon.method\r\n @impl.implemented\r\n GetSortValue()\r\n {\r\n return 1;\r\n }\r\n\r\n /** Carbon EveTurretSet::IsCastingShadow (cpp:2022-2051): after the\r\n * display/geometry (cpp:2024) and reflection-reason (cpp:2029) early-outs -\r\n * which do NOT write the out-param, so a stale previous-caster value\r\n * survives at the scene call sites (EveSpaceScene.cpp:2391/2517) - the\r\n * SET-level bounding sphere is transformed by EVERY turret's world matrix\r\n * (including invisible ones - no per-turret visibility gate, unlike\r\n * UpdateVisibility cpp:2070-2088), gated on transformed radius > 0, culled\r\n * with shadowFrustum.IsVisible, and the MAX GetSizeInShadow accumulates.\r\n * Returns sizeInShadow > 5 (the swarm uses 15). Carbon's float& out-param\r\n * becomes the optional trailing length-1 array (out-params last). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The length-1 out array replaces the float& out-param; the shadow math is ported, including exactly which paths write the out value.\")\r\n IsCastingShadow(cameraFrustum, shadowFrustum, renderReason, sizeInShadowOut = null)\r\n {\r\n if (!this.display || !this.geometryResource)\r\n {\r\n return false;\r\n }\r\n if (Number(renderReason ?? Tr2RenderReason.TR2RENDERREASON_NORMAL) === Tr2RenderReason.TR2RENDERREASON_REFLECTION)\r\n {\r\n return false;\r\n }\r\n\r\n let sizeInShadow = 0;\r\n if (sizeInShadowOut)\r\n {\r\n sizeInShadowOut[0] = 0;\r\n }\r\n for (const turret of this.GetTurrets())\r\n {\r\n const sphere = EveTurretSet.#shadowSphereScratch;\r\n vec4.copy(sphere, this.boundingSphere);\r\n BoundingSphereTransform(turret.worldMatrix, sphere);\r\n if (sphere[3] > 0 && shadowFrustum?.IsVisible?.(cameraFrustum, sphere))\r\n {\r\n sizeInShadow = Math.max(sizeInShadow, shadowFrustum.GetSizeInShadow(sphere));\r\n if (sizeInShadowOut)\r\n {\r\n sizeInShadowOut[0] = sizeInShadow;\r\n }\r\n }\r\n }\r\n return sizeInShadow > 5;\r\n }\r\n\r\n /** Carbon EveTurretSet::GetShadowBatches (cpp:2221-2254): one instanced\r\n * batch for the whole turret geometry - material m_turretEffect, instance\r\n * count m_visibleCount, mesh 0 at the lowest LOD. QUIRK: shadowPixelSize is\r\n * completely IGNORED (always GetMeshLod(0, 0), cpp:2235) - the swarm uses\r\n * it for LOD, the turret does not. The shadow path commits without the\r\n * normal path's validity check (cpp:2253 vs 2211) - equivalent here because\r\n * Commit drops invalid batches. Returns whether the batch was committed\r\n * (JS addition; Carbon returns void). NOTE: JS visibleCount is currently\r\n * the total turret count (the adapted UpdateVisibility does no per-turret\r\n * frustum cull), a pre-existing adaptation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Instance stream, vertex declaration and LOD allocations (cpp:2227-2250) are not ported; the batch records the geometry source, turret effect, per-object data and the CPU-known instance count meanwhile.\")\r\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\r\n {\r\n if (!this.display || !this.visibleCount)\r\n {\r\n return false;\r\n }\r\n if (!this.geometryResource)\r\n {\r\n return false;\r\n }\r\n\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(this.turretEffect);\r\n if (!batch.IsValid())\r\n {\r\n return false;\r\n }\r\n batch.SetGeometrySource(this.geometryResource, 0, -1, -1, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batch.instanceCount = this.visibleCount >>> 0;\r\n return batches.Commit(batch);\r\n }\r\n\r\n /** Carbon EveTurretSet::GetPerObjectData (cpp:2275-2518): early-outs on a\r\n * missing/bad geometry resource RETURN NULL - and the cascade path stores\r\n * that null and still calls GetShadowBatches with it (EveSpaceScene.cpp:\r\n * 717/727), so a null per-object record on a batch is legal. The\r\n * EveTurretSetPerObjectData fill includes the ship matrices, compacted\r\n * per-visible turret SRT arrays, and the SH/clip PS block (cpp:2300-2511).\r\n * Trinity fills every CPU-known field in canonical RawData. Only the bone\r\n * palette's GPU ring-buffer offsets remain engine-supplied. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Trinity fills the CPU-known EveTurretSet VS/PS RawData fields; bone-palette ring offsets and IsGood/GetMeshCount realization gates are not ported yet, while the CPU gate is geometry presence.\")\r\n GetPerObjectData(accumulator = null)\r\n {\r\n if (!this.geometryResource || typeof accumulator?.Alloc !== \"function\")\r\n {\r\n return null;\r\n }\r\n\r\n const vs = accumulator.Alloc(\"EveTurretSetVSData\");\r\n const ps = accumulator.Alloc(\"EveTurretSetPSData\");\r\n const parent = this.#parentData;\r\n\r\n // Carbon cpp:2305-2309.\r\n vs.SetAndTranspose(\"shipMatrix\", parent.transform ?? this.#parentTransform);\r\n vs.SetAndTranspose(\"prevShipMatrix\", this.#shipTransformPrev);\r\n vs.Set(\"baseCutoffData\", [ this.bottomClipHeight, 0, 0, 0 ]);\r\n\r\n if (this.#turrets.length)\r\n {\r\n // The shader's bone-index mapping is shared by every turret of the set;\r\n // three bones is Carbon's default when no skeleton mapping is present.\r\n const boneCount = this.#skeletonBoneIndices.length || EveTurretSet.DEFAULT_BONES_PER_TURRET;\r\n\r\n // Only VISIBLE turrets consume a slot, and the array is filled densely -\r\n // the unwritten tail deliberately keeps whatever the arena held\r\n // (cpp:2322-2341).\r\n let turretIndex = 0;\r\n for (const turret of this.#turrets)\r\n {\r\n // Carbon's SingleTurret::visible is this port's `display`.\r\n if (turret.display === false)\r\n {\r\n continue;\r\n }\r\n if (turret.valid)\r\n {\r\n vs.SetIndex(\"turretRotation\", turretIndex, turret.localQuaternion);\r\n vs.SetIndex(\"turretTranslation\", turretIndex, turret.localPosition);\r\n }\r\n else\r\n {\r\n vs.SetIndex(\"turretTranslation\", turretIndex, EveTurretSet.#invalidTranslation);\r\n vs.SetIndex(\"turretRotation\", turretIndex, EveTurretSet.#invalidRotation);\r\n }\r\n turretIndex++;\r\n }\r\n\r\n // currentBoneOffset/prevBoneOffset are GPU ring addresses with no CPU\r\n // derivation (cpp:2387-2388); they stay at their zero default.\r\n vs.Set(\"turretSetData\", [ boneCount, 0, 0, 0 ]);\r\n\r\n // ps data (cpp:2394-2404)\r\n ps.Set(\"shipData\", parent.shipData ?? EveTurretSet.#zero4);\r\n const clipCenter = parent.clipSphereCenter ?? EveTurretSet.#zero4;\r\n ps.Set(\"clipData1\", [ clipCenter[0], clipCenter[1], clipCenter[2], parent.clipRadiusSq ?? 0 ]);\r\n ps.Set(\"clipRadius2Sq\", [ parent.clipRadius2Sq ?? 0 ]);\r\n\r\n // The hull's coefficients when it published any, zeroes otherwise.\r\n for (let index = 0; index < EveTurretSet.SH_COEFFICIENT_COUNT; index++)\r\n {\r\n const source = parent.shLighting\r\n ? parent.shLighting.subarray(index * 4, index * 4 + 4)\r\n : EveTurretSet.#zero4;\r\n ps.SetIndex(\"shLightingCoefficients\", index, source);\r\n }\r\n }\r\n\r\n return { vs, ps };\r\n }\r\n\r\n /** Carbon EveTurretSet::GetShadowPerObjectData (cpp:2520-2523): pure\r\n * forward to GetPerObjectData. */\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 * Establishes everything one shot needs: the firing turret and locator, the\r\n * advanced cycling fire position, the random firing delay, the fire animation\r\n * on the chosen turret, the target's impact timing derived from the effect's\r\n * duration and peak time, and the ambient controller's turret state. Returns\r\n * false when deactivated or untargeted.\r\n */\r\n #setupFiringState()\r\n {\r\n if (this.state === EveTurretSet.State.STATE_DEACTIVE || !this.target) return false;\r\n const pair = this.#getClosestTurretAndLocator();\r\n this.#activeTurret = pair.turret;\r\n if (this.maxCyclingFirePos > 1)\r\n {\r\n this.currentCyclingFiresPos += this.cyclingFireGroupCount;\r\n if (this.currentCyclingFiresPos >= this.maxCyclingFirePos * this.cyclingFireGroupCount) this.currentCyclingFiresPos = 0;\r\n }\r\n this.randomFiringDelay = this.useRandomFiringDelay ? this.GetShotTimeVariance() * Math.random() : 0;\r\n const effectTotalTime = Number(this.firingEffect?.GetFiringDuration?.() ?? 0);\r\n const effectPeakTime = Number(this.firingEffect?.GetFiringPeakTime?.() ?? 0);\r\n const source = this.#parentTransform.subarray(12, 15);\r\n const locator = pair.locator;\r\n if (this.state === EveTurretSet.State.STATE_IDLE || this.state === EveTurretSet.State.STATE_RELOADING)\r\n {\r\n this.randomFiringDelay += this.maxTrackingTime;\r\n this.#delayToFadeInTracking = 0.0001;\r\n }\r\n const fireName = this.currentCyclingFiresPos > 0 ? `Fire0${Math.floor(this.currentCyclingFiresPos / this.cyclingFireGroupCount)}` : \"Fire\";\r\n this.#turrets.forEach((_turret, index) => this.#playTurret(index, index === this.#activeTurret ? fireName : \"\", \"Active\", this.randomFiringDelay));\r\n this.target.StartFireAtLocator?.(locator ?? -1, this.randomFiringDelay + effectPeakTime, effectTotalTime - effectPeakTime, source);\r\n const ambient = this.#ambientEffect();\r\n if (ambient)\r\n {\r\n ambient.SetControllerVariable(\"TurretState\", this.state === EveTurretSet.State.STATE_FIRING ? EveTurretSet.State.STATE_TARGETING : this.state);\r\n ambient.SetControllerVariableOnInstance?.(this.#activeTurret, \"TurretState\", EveTurretSet.State.STATE_FIRING);\r\n ambient.SetControllerVariableOnInstance?.(this.#activeTurret, \"FiringDelay\", this.randomFiringDelay);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Picks the turret whose world up axis best aligns with its nearest damage\r\n * locator and, when chooseRandomLocator is set, re-picks the turret against a\r\n * random valid locator instead; falls back to turret 0. Returns the shared\r\n * pair record, valid only until the next call.\r\n */\r\n #getClosestTurretAndLocator()\r\n {\r\n const pair = EveTurretSet.#closestPair;\r\n pair.turret = EveTurretSet.INVALID_INDEX;\r\n pair.locator = -1;\r\n if (!this.#turrets.length) return pair;\r\n let closestAngle = -1;\r\n for (let index = 0; index < this.#turrets.length; index++)\r\n {\r\n const turret = this.#turrets[index];\r\n if (!turret.valid) continue;\r\n const transform = turret.worldMatrix;\r\n vec3.set(EveTurretSet.#turretPosition, transform[12], transform[13], transform[14]);\r\n const locator = this.target?.FindClosestLocator?.(EveTurretSet.#turretPosition, EveTurretSet.#locatorPosition) ?? -1;\r\n vec3.subtract(EveTurretSet.#targetDirection, EveTurretSet.#locatorPosition, EveTurretSet.#turretPosition);\r\n if (vec3.squaredLength(EveTurretSet.#targetDirection)) vec3.normalize(EveTurretSet.#targetDirection, EveTurretSet.#targetDirection);\r\n vec3.normalize(EveTurretSet.#turretUp, vec3.set(EveTurretSet.#turretUp, transform[4], transform[5], transform[6]));\r\n const angle = vec3.dot(EveTurretSet.#turretUp, EveTurretSet.#targetDirection);\r\n if (angle > closestAngle)\r\n {\r\n closestAngle = angle;\r\n pair.turret = index;\r\n pair.locator = locator;\r\n }\r\n }\r\n if (pair.turret !== EveTurretSet.INVALID_INDEX && this.chooseRandomLocator)\r\n {\r\n const transform = this.#turrets[pair.turret].worldMatrix;\r\n vec3.set(EveTurretSet.#turretPosition, transform[12], transform[13], transform[14]);\r\n const randomLocator = this.target?.FindRandomValidLocator?.(EveTurretSet.#turretPosition, EveTurretSet.#locatorPosition) ?? -1;\r\n if (randomLocator !== pair.locator && randomLocator !== -1)\r\n {\r\n pair.locator = randomLocator;\r\n closestAngle = -1;\r\n for (let index = 0; index < this.#turrets.length; index++)\r\n {\r\n const turret = this.#turrets[index];\r\n if (!turret.valid) continue;\r\n const turretTransform = turret.worldMatrix;\r\n vec3.set(EveTurretSet.#turretPosition, turretTransform[12], turretTransform[13], turretTransform[14]);\r\n vec3.subtract(EveTurretSet.#targetDirection, EveTurretSet.#locatorPosition, EveTurretSet.#turretPosition);\r\n if (vec3.squaredLength(EveTurretSet.#targetDirection)) vec3.normalize(EveTurretSet.#targetDirection, EveTurretSet.#targetDirection);\r\n vec3.normalize(EveTurretSet.#turretUp, vec3.set(EveTurretSet.#turretUp, turretTransform[4], turretTransform[5], turretTransform[6]));\r\n const angle = vec3.dot(EveTurretSet.#turretUp, EveTurretSet.#targetDirection);\r\n if (angle > closestAngle)\r\n {\r\n closestAngle = angle;\r\n pair.turret = index;\r\n }\r\n }\r\n }\r\n }\r\n if (pair.turret === EveTurretSet.INVALID_INDEX) pair.turret = 0;\r\n return pair;\r\n }\r\n\r\n /**\r\n * Plays an animation on every turret and returns the longest duration\r\n * reported.\r\n */\r\n #playAll(animation, loop, delay)\r\n {\r\n let duration = 0;\r\n for (let index = 0; index < this.#turrets.length; index++) duration = Math.max(duration, this.#playTurret(index, animation, loop, delay));\r\n return duration;\r\n }\r\n\r\n /**\r\n * Plays an animation on one turret through the record's own hook or its\r\n * controller, returning the reported duration, or 0 when the turret or the\r\n * hook is absent.\r\n */\r\n #playTurret(index, animation, loop, delay)\r\n {\r\n const turret = this.#turrets[index];\r\n if (!turret) return 0;\r\n return Number(turret.PlayAnimation?.(animation, loop, delay) ?? turret.controller?.PlayAnimation?.(animation, { loop, delay }) ?? 0);\r\n }\r\n\r\n /**\r\n * The ambient effect in force: the authored one while in ambient-effect\r\n * editing mode, otherwise the generated distributed instance container when\r\n * one exists.\r\n */\r\n #ambientEffect()\r\n {\r\n return this.ambientEffectEditingMode ? this.ambientEffect : this.generatedDistributedAmbientEffect ?? this.ambientEffect;\r\n }\r\n\r\n /**\r\n * Pushes the current state onto the ambient effect's TurretState controller\r\n * variable.\r\n */\r\n #setAmbientState()\r\n {\r\n this.#ambientEffect()?.SetControllerVariable(\"TurretState\", this.state);\r\n }\r\n\r\n /**\r\n * Coerces a caller-supplied turret into the record shape - local and world\r\n * matrices, local quaternion and position, valid and display flags - reusing\r\n * the object in place when it already carries a local matrix, and otherwise\r\n * wrapping it as the record's source.\r\n */\r\n #normalizeTurret(turret)\r\n {\r\n if (turret?.localMatrix?.length === 16)\r\n {\r\n turret.worldMatrix ??= mat4.create();\r\n turret.localQuaternion ??= quat.create();\r\n turret.localPosition ??= vec4.create();\r\n turret.valid ??= true;\r\n return turret;\r\n }\r\n const localMatrix = mat4.create();\r\n if (turret?.length === 16) mat4.copy(localMatrix, turret);\r\n else if (turret?.transform?.length === 16) mat4.copy(localMatrix, turret.transform);\r\n return { source: turret, localMatrix, worldMatrix: mat4.clone(localMatrix), localQuaternion: quat.create(), localPosition: vec4.create(), valid: turret !== null, display: turret?.display ?? true, canFireWhenHidden: !!turret?.canFireWhenHidden };\r\n }\r\n\r\n static ImpactBehaviour = EveTurretTarget.ImpactBehaviour;\r\n\r\n static LOD = Object.freeze({\r\n LOD_INVALID: 0,\r\n LOD_EMPTY: 1,\r\n LOD_HIGHEST: 2,\r\n LOD_DISABLED: 3,\r\n });\r\n\r\n // The enum belongs to the extracted aiming math (EveTurretAiming.h:13-31);\r\n // the alias keeps this host's established surface on one identity.\r\n static SystemBones = EveTurretAiming.SystemBones;\r\n\r\n static State = Object.freeze({\r\n STATE_INVALID: 0,\r\n STATE_DEACTIVE: 1,\r\n STATE_IDLE: 2,\r\n STATE_TARGETING: 3,\r\n STATE_FIRING: 4,\r\n STATE_RELOADING: 5\r\n });\r\n\r\n static INVALID_INDEX = 0xffffffff;\r\n\r\n static MAX_TURRETS_PER_SET = 24;\r\n\r\n static #boneTransform = mat4.create();\r\n static #lowLodTransform = mat4.create();\r\n static #muzzleTransform = mat4.create();\r\n static #turretPosition = vec3.create();\r\n static #targetDirection = vec3.create();\r\n static #turretUp = vec3.create();\r\n static #locatorPosition = vec3.create();\r\n static #zero = vec3.create();\r\n static #sourcePosition = vec3.create();\r\n static #localTranslation = vec3.create();\r\n static #localRotation = quat.create();\r\n static #unitScale = vec3.fromValues(1, 1, 1);\r\n static #inverseTurret = mat4.create();\r\n static #shadowSphereScratch = vec4.create();\r\n static #localTarget = vec3.create();\r\n static #directRotation = quat.create();\r\n static #launcherRotation = mat4.create();\r\n static #unitZ = vec3.fromValues(0, 0, 1);\r\n static #closestPair = { turret: EveTurretSet.INVALID_INDEX, locator: -1 };\r\n\r\n}\r\n"],"names":["BoundingSphereTransform","transform","sphere","vec3","transformMat4","Math","max","hypot","_EveTurretSet","_identity","EveTurretSet","EveEntity","e","_init_impactBehaviour","_init_extra_impactBehaviour","_init_firingEffect","_init_extra_firingEffect","_init_ambientEffect","_init_extra_ambientEffect","_init_name","_init_extra_name","_init_firingEffectResPath","_init_extra_firingEffectResPath","_init_chooseRandomLocator","_init_extra_chooseRandomLocator","_init_boundingSphere","_init_extra_boundingSphere","_init_randomizeExplosionRotation","_init_extra_randomizeExplosionRotation","_init_lodLevel","_init_extra_lodLevel","_init_currentCyclingFiresPos","_init_extra_currentCyclingFiresPos","_init_useRandomFiringDelay","_init_extra_useRandomFiringDelay","_init_bottomClipHeight","_init_extra_bottomClipHeight","_init_geometryResource","_init_extra_geometryResource","_init_maxTrackingTime","_init_extra_maxTrackingTime","_init_visibleCount","_init_extra_visibleCount","_init_trackingInfluence","_init_extra_trackingInfluence","_init_swarmID","_init_extra_swarmID","_init_maxCyclingFirePos","_init_extra_maxCyclingFirePos","_init_playMovementSound","_init_extra_playMovementSound","_init_isOnline","_init_extra_isOnline","_init_target","_init_extra_target","_init_locatorName","_init_extra_locatorName","_init_sysBonePitchFactor","_init_extra_sysBonePitchFactor","_init_sysBonePitchMax","_init_extra_sysBonePitchMax","_init_sysBonePitchMin","_init_extra_sysBonePitchMin","_init_sysBonePitchOffset","_init_extra_sysBonePitchOffset","_init_sysBonePitch01Factor","_init_extra_sysBonePitch01Factor","_init_sysBonePitch01Offset","_init_extra_sysBonePitch01Offset","_init_sysBonePitch02Factor","_init_extra_sysBonePitch02Factor","_init_sysBonePitch02Offset","_init_extra_sysBonePitch02Offset","_init_sysBonePitch03Factor","_init_extra_sysBonePitch03Factor","_init_sysBonePitch03Offset","_init_extra_sysBonePitch03Offset","_init_updatePitchPose","_init_extra_updatePitchPose","_init_geometryResPath","_init_extra_geometryResPath","_init_impactSize","_init_extra_impactSize","_init_state","_init_extra_state","_init_sysBoneHeight","_init_extra_sysBoneHeight","_init_randomFiringDelay","_init_extra_randomFiringDelay","_init_turretEffect","_init_extra_turretEffect","_init_idleToTargetingMovementAudioEvent","_init_extra_idleToTargetingMovementAudioEvent","_init_targetingToIdleMovementAudioEvent","_init_extra_targetingToIdleMovementAudioEvent","_init_generatedDistributedAmbientEffect","_init_extra_generatedDistributedAmbientEffect","_init_cyclingFireGroupCount","_init_extra_cyclingFireGroupCount","_init_turretMovementObserver","_init_extra_turretMovementObserver","_init_slotNumber","_init_extra_slotNumber","_init_ambientEffectEditingMode","_init_extra_ambientEffectEditingMode","_init_displayEffects","_init_extra_displayEffects","_init_display","_init_extra_display","_init_useDynamicBounds","_init_extra_useDynamicBounds","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_lowLodFiringEffectScale","_init_extra_lowLodFiringEffectScale","_init_lowLodFiringEffectTranslation","_init_extra_lowLodFiringEffectTranslation","_init_lowLodFiringEffectRotation","_init_extra_lowLodFiringEffectRotation","_init_useLowLodFiringTransform","_init_extra_useLowLodFiringTransform","_init_laserMissBehaviour","_init_extra_laserMissBehaviour","_init_projectileMissBehaviour","_init_extra_projectileMissBehaviour","_initProto","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2Renderable","edit","notify","persist","int32","enum","objectRef","persistOnly","model","string","boolean","vec4","read","uint32","float32","readwrite","quat","method","impl","adapted","reason","implemented","custom","impactBehaviour","firingEffect","ambientEffect","name","firingEffectResPath","chooseRandomLocator","boundingSphere","create","randomizeExplosionRotation","lodLevel","currentCyclingFiresPos","useRandomFiringDelay","bottomClipHeight","geometryResource","maxTrackingTime","visibleCount","trackingInfluence","swarmID","maxCyclingFirePos","playMovementSound","isOnline","target","EveTurretTarget","locatorName","sysBonePitchFactor","sysBonePitchMax","sysBonePitchMin","sysBonePitchOffset","sysBonePitch01Factor","sysBonePitch01Offset","sysBonePitch02Factor","sysBonePitch02Offset","sysBonePitch03Factor","sysBonePitch03Offset","updatePitchPose","geometryResPath","impactSize","state","sysBoneHeight","randomFiringDelay","turretEffect","idleToTargetingMovementAudioEvent","targetingToIdleMovementAudioEvent","generatedDistributedAmbientEffect","cyclingFireGroupCount","turretMovementObserver","slotNumber","ambientEffectEditingMode","displayEffects","display","useDynamicBounds","estimatedPixelDiameter","lowLodFiringEffectScale","fromValues","lowLodFiringEffectTranslation","lowLodFiringEffectRotation","useLowLodFiringTransform","laserMissBehaviour","projectileMissBehaviour","mat4","INVALID_INDEX","RebuildBoundingSphere","resource","RecalculateBoundingSphere","value","GetBoundingSphere","length","copy","ForceStateDeactive","StopFireAtLocator","StopFiring","State","STATE_DEACTIVE","ForceStateTargeting","GetClosestTurret","STATE_TARGETING","FreezeHighDetailLOD","LOD","LOD_DISABLED","Prepare","GetShader","GetAiming","aiming","EveTurretAiming","ApplySofTurretMaterial","resolveParameter","effect","constParameters","StartUpdate","parameter","EndUpdate","parameters","CjsSchema","cast","Tr2Vector4Parameter","GetParameterName","SetValue","GetShotTimeVariance","MissQueueSize","GetLastShotTime","EnterStateDeactive","STATE_FIRING","EnterStateFiring","IsLooping","PrepareFiringEffectMoveObjects","PrepareFiring","SetImpactConfiguration","GetImpactConfiguration","EnterStateIdle","GetObserver","SendEvent","STATE_IDLE","EnterStateReloading","wasDeactive","STATE_RELOADING","EnterStateTargeting","HandleControllerEvent","GetFiringBoneWorldTransform","muzzle","out","turretIndex","turret","world","worldMatrix","boneID","GetPerMuzzleBoneID","fromRotationTranslationScale","multiply","boneTransform","GetBoneTransform","set","GetTrackingPosition","position","subtract","squaredLength","rotationTo","fromRotationTranslation","fromXRotation","PI","SetControllerVariable","SetShotMissed","missed","StartControllers","Initialize","SetBehaviour","OnModified","propertyName","ReRegister","SetFiringEffect","SetTargetObject","object","previous","GetTargetable","accepted","SetTargetable","SetTargetScale","GetTargetObject","SetScaleByRadius","GetRadius","SetTurrets","turrets","Array","from","slice","MAX_TURRETS_PER_SET","map","AddTurret","push","GetTurrets","SetLocalTransform","localMatrix","index","Number","valid","getRotation","getTranslation","localQuaternion","localPosition","UpdateInstance","SetParentTransform","UpdateTurretTransforms","parentTransform","Update","context","UpdateSyncronous","UpdateAsyncronous","deltaTime","GetDeltaT","deltaT","pair","locator","GetLocator","UpdateSynchronous","GetStartPosition","isVisible","localToWorldTransform","parentData","ArrayBuffer","isView","isArray","trackingPosition","invert","hook","UpdateTrackingPose","source","call","SetEndPosition","GetTargetPosition","targetPosition","GetPerMuzzleEffectCount","SetMuzzleTransform","SetDisplayDestObject","ShowDestObject","UpdateAsynchronous","GetRenderables","UpdateVisibility","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","ShadowCaster","Register","UnRegisterComponents","UnRegister","HasTransparentBatches","GetBatches","batches","batchType","perObjectData","_reason","TriBatchType","TRIBATCHTYPE_OPAQUE","batch","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","SetPerObjectData","instanceCount","Commit","GetSortValue","IsCastingShadow","cameraFrustum","shadowFrustum","renderReason","sizeInShadowOut","Tr2RenderReason","TR2RENDERREASON_NORMAL","TR2RENDERREASON_REFLECTION","sizeInShadow","IsVisible","GetSizeInShadow","GetShadowBatches","_shadowPixelSize","GetPerObjectData","accumulator","Alloc","vs","ps","parent","SetAndTranspose","Set","boneCount","DEFAULT_BONES_PER_TURRET","SetIndex","shipData","clipCenter","clipSphereCenter","clipRadiusSq","clipRadius2Sq","SH_COEFFICIENT_COUNT","shLighting","subarray","GetShadowPerObjectData","#setupFiringState","random","effectTotalTime","GetFiringDuration","effectPeakTime","GetFiringPeakTime","fireName","floor","forEach","_turret","StartFireAtLocator","ambient","SetControllerVariableOnInstance","#getClosestTurretAndLocator","closestAngle","FindClosestLocator","normalize","angle","dot","randomLocator","FindRandomValidLocator","turretTransform","#playAll","animation","loop","delay","duration","#playTurret","PlayAnimation","controller","#ambientEffect","#setAmbientState","#normalizeTurret","clone","canFireWhenHidden","ImpactBehaviour","Object","freeze","LOD_INVALID","LOD_EMPTY","LOD_HIGHEST","SystemBones","STATE_INVALID","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"EveTurretSet.js","sources":["../../../../../../src/trinity/eve/attachment/turrets/EveTurretSet.js"],"sourcesContent":["// Source: trinity/trinity/Eve/Turret/EveTurretSet.h\n// Source: trinity/trinity/Eve/Turret/EveTurretSet.cpp\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\nimport { carbon, impl, edit, type, CjsSchema } from \"#schema\";\nimport { EveEntity } from \"../../EveEntity.js\";\nimport { EveComponentType } from \"../../EveComponentTypes.js\";\nimport { EveTurretAiming } from \"./EveTurretAiming.js\";\nimport { EVE_TURRET_RANDOM_DELAY_MAX, EveTurretTarget } from \"./EveTurretTarget.js\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { TriBatchType } from \"#consts/graphics\";\nimport { Tr2RenderReason } from \"../../../generated/trinityCore/enums.js\";\nimport { Tr2PerObjectData } from \"../../../core/rawData/perObjectData/Tr2PerObjectData.js\";\nimport { Tr2RenderBatch } from \"../../../core/batch/TriRenderBatch/index.js\";\nimport { Tr2Vector4Parameter } from \"../../../shader/parameter/Tr2Vector4Parameter.js\";\nimport { ITr2Renderable } from \"../../../core/ITr2Renderable.js\";\n\n/** Carbon BoundingSphereTransform (Utilities/BoundingSphere.cpp:70-81):\n * center = TransformCoord(center, tf); radius *= max of the basis row lengths\n * (|GetX/Y/Z| = gl flat [0..2]/[4..6]/[8..10]). Single-matrix application -\n * NO composition, NO operand swap. Mutates the packed (x, y, z, radius)\n * sphere in place. */\nfunction BoundingSphereTransform(transform, sphere)\n{\n vec3.transformMat4(sphere, sphere, transform);\n sphere[3] *= Math.max(\n Math.hypot(transform[0], transform[1], transform[2]),\n Math.hypot(transform[4], transform[5], transform[6]),\n Math.hypot(transform[8], transform[9], transform[10])\n );\n return sphere;\n}\n\n/** Owns a hull's instanced turrets and drives their aiming, animation, firing, visibility, batches, shadows, and per-object data. */\n@type.define({ className: \"EveTurretSet\", family: \"eve/attachment/turrets\" })\n@carbon.inherit(ITr2Renderable)\nexport class EveTurretSet extends EveEntity\n{\n\n /** m_impactBehaviour (ImpactBehaviour::Type - enum ImpactBehaviour) [READWRITE, NOTIFY, PERSIST, ENUM] */\n @edit.notify\n @edit.persist\n @type.int32\n @type.enum(\"ImpactBehaviour\")\n impactBehaviour = 0;\n\n /** m_firingEffect (EveTurretFiringFXPtr) [HIDDEN] */\n @type.objectRef(\"EveTurretFiringFX\")\n firingEffect = null;\n\n /** m_ambientEffect (IEveSpaceObjectChildPtr) [PERSISTONLY] */\n @edit.persistOnly\n @type.model(\"IEveSpaceObjectChild\")\n ambientEffect = null;\n\n /** m_name (std::string) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n name = \"\";\n\n /** m_firingEffectResPath (std::string) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n firingEffectResPath = \"\";\n\n /** m_chooseRandomLocator (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n chooseRandomLocator = true;\n\n /** m_boundingSphere (Vector4) [READWRITE, PERSIST] */\n @edit.persist\n @type.vec4\n boundingSphere = vec4.create();\n\n /** m_randomizeExplosionRotation (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n randomizeExplosionRotation = true;\n\n /** m_lodLevel (LOD - enum LOD) [READ] */\n @edit.read\n @type.int32\n @type.enum(\"LOD\")\n lodLevel = 0;\n\n /** m_currentCyclingFiresPos (uint32_t) [READ] */\n @edit.read\n @type.uint32\n currentCyclingFiresPos = 0;\n\n /** m_useRandomFiringDelay (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n useRandomFiringDelay = true;\n\n /** m_bottomClipHeight (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n bottomClipHeight = 0;\n\n /** m_geometryResource (TriGeometryResPtr) [READ] */\n @edit.read\n @type.objectRef(\"TriGeometryRes\")\n geometryResource = null;\n\n /** m_maxTrackingTime (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n maxTrackingTime = 1;\n\n /** m_visibleCount (unsigned int) [READ] */\n @edit.read\n @type.uint32\n visibleCount = 0;\n\n /** m_trackingInfluence (float) [READ] */\n @edit.read\n @type.float32\n trackingInfluence = 0;\n\n /** m_swarmID (unsigned int) [READWRITE] */\n @edit.readwrite\n @type.uint32\n swarmID = 0;\n\n /** m_maxCyclingFirePos (uint32_t) [READWRITE, PERSIST] */\n @edit.persist\n @type.uint32\n maxCyclingFirePos = 1;\n\n /** m_playMovementSound (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n playMovementSound = true;\n\n /** m_isOnline (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n isOnline = true;\n\n /** m_target (EveTurretTargetPtr) [READ] */\n @edit.read\n @type.objectRef(\"EveTurretTarget\")\n target = new EveTurretTarget();\n\n /** m_locatorName (std::string) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n locatorName = \"\";\n\n /** m_sysBonePitchFactor (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitchFactor = 1;\n\n /** m_sysBonePitchMax (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitchMax = 90;\n\n /** m_sysBonePitchMin (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitchMin = 0;\n\n /** m_sysBonePitchOffset (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitchOffset = 0;\n\n /** m_sysBonePitch01Factor (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch01Factor = 1;\n\n /** m_sysBonePitch01Offset (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch01Offset = 0;\n\n /** m_sysBonePitch02Factor (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch02Factor = 1;\n\n /** m_sysBonePitch02Offset (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch02Offset = 0;\n\n /** m_sysBonePitch03Factor (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch03Factor = 1;\n\n /** m_sysBonePitch03Offset (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBonePitch03Offset = 0;\n\n /** m_updatePitchPose (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n updatePitchPose = false;\n\n /** m_geomResPath (std::string) [READWRITE, NOTIFY, PERSIST] */\n @edit.notify\n @edit.persist\n @type.string\n geometryResPath = \"\";\n\n /** m_impactSize (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n impactSize = 0;\n\n /** m_state (State - enum State) [READ, PERSIST] */\n @edit.persist\n @type.int32\n @type.enum(\"State\")\n state = 2;\n\n /** m_sysBoneHeight (float) [READWRITE, PERSIST] */\n @edit.persist\n @type.float32\n sysBoneHeight = 1;\n\n /** m_randomFiringDelay (float) [READ] */\n @edit.read\n @type.float32\n randomFiringDelay = 0;\n\n /** m_turretEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\n @edit.persist\n @type.model(\"Tr2Effect\")\n turretEffect = null;\n\n /** m_idleToTargetingMovementAudioEvent (std::wstring) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n idleToTargetingMovementAudioEvent = \"\";\n\n /** m_targetingToIdleMovementAudioEvent (std::wstring) [READWRITE, PERSIST] */\n @edit.persist\n @type.string\n targetingToIdleMovementAudioEvent = \"\";\n\n /** m_generatedDistributedAmbientEffect (EveChildInstanceContainerPtr) [READ] */\n @edit.read\n @type.objectRef(\"EveChildInstanceContainer\")\n generatedDistributedAmbientEffect = null;\n\n /** m_cyclingFireGroupCount (uint32_t) [READWRITE, PERSIST] */\n @edit.persist\n @type.uint32\n cyclingFireGroupCount = 1;\n\n /** m_turretMovementObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\n @edit.persist\n @type.model(\"TriObserverLocal\")\n turretMovementObserver = null;\n\n /** m_slotNumber (int) [READWRITE] */\n @edit.readwrite\n @type.int32\n slotNumber = -1;\n\n /** m_ambientEffectEditingMode (bool) [READWRITE, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @type.boolean\n ambientEffectEditingMode = false;\n\n /** m_displayEffects (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n displayEffects = true;\n\n /** m_display (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n display = true;\n\n /** m_useDynamicBounds (bool) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.persist\n @type.boolean\n useDynamicBounds = false;\n\n /** m_estimatedPixelDiameter (float) [READ] */\n @edit.read\n @type.float32\n estimatedPixelDiameter = -1;\n\n /** m_lowLodFiringEffectScale (Vector3) [READWRITE, PERSIST] */\n @edit.persist\n @type.vec3\n lowLodFiringEffectScale = vec3.fromValues(1, 1, 1);\n\n /** m_lowLodFiringEffectTranslation (Vector3) [READWRITE, PERSIST] */\n @edit.persist\n @type.vec3\n lowLodFiringEffectTranslation = vec3.create();\n\n /** m_lowLodFiringEffectRotation (Quaternion) [READWRITE, PERSIST] */\n @edit.persist\n @type.quat\n lowLodFiringEffectRotation = quat.create();\n\n /** m_useLowLodFiringTransform (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n useLowLodFiringTransform = false;\n\n /** m_laserMissBehaviour (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n laserMissBehaviour = false;\n\n /** m_projectileMissBehaviour (bool) [READWRITE, PERSIST] */\n @edit.persist\n @type.boolean\n projectileMissBehaviour = false;\n\n /** Values the OnModified chain compares against; null until first snapshot. */\n\n #turrets = [];\n\n #parentTransform = mat4.create();\n\n /** m_shipTransformPrev - last frame's parent transform, for motion vectors. */\n #shipTransformPrev = mat4.create();\n\n /**\n * m_parentData - the hull values an attachment renders with, refreshed by the\n * parent through IEveSpaceObject2::GetParentData.\n */\n #parentData = {};\n\n /**\n * m_skeletonBoneIndices - the shader's bone mapping, shared by every turret\n * of the set. Skeleton realization is not ported yet, so this stays empty until\n * one is supplied and the default count applies.\n */\n #skeletonBoneIndices = [];\n\n /** Default bones per turret when no skeleton mapping is present (cpp:2334). */\n static DEFAULT_BONES_PER_TURRET = 3;\n\n /** Tr2ShLightingManager::PACKED_COEFFICIENT_COUNT. */\n static SH_COEFFICIENT_COUNT = 7;\n\n /** Carbon's placeholder pose for a visible-but-invalid turret (cpp:2335-2336). */\n static #invalidTranslation = vec4.fromValues(0, 0, 0, 1);\n\n static #invalidRotation = quat.create();\n\n static #zero4 = vec4.create();\n\n #activeTurret = EveTurretSet.INVALID_INDEX;\n\n #highDetailFrozen = false;\n\n #trackingInfluenceDelta = 0;\n\n #delayToFadeOutTracking = 0;\n\n #delayToFadeInTracking = 0;\n\n #recheckTimeLeft = 2;\n\n /** Carbon method RebuildBoundingSphere (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Geometry resources are duck-typed; the runtime Trinity layer stores their computed sphere without creating render buffers.\")\n RebuildBoundingSphere()\n {\n const resource = this.geometryResource;\n if (!resource) return false;\n resource.RecalculateBoundingSphere?.();\n const value = resource.GetBoundingSphere(0, this.boundingSphere);\n if (value?.length >= 4 && value !== this.boundingSphere) vec4.copy(this.boundingSphere, value);\n return value !== false;\n }\n\n /** Carbon method ForceStateDeactive (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n ForceStateDeactive()\n {\n this.trackingInfluence = 0;\n this.#delayToFadeOutTracking = 0;\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\n this.target?.StopFireAtLocator?.();\n this.firingEffect?.StopFiring?.();\n this.state = EveTurretSet.State.STATE_DEACTIVE;\n this.#playAll(\"\", \"Inactive\", 0);\n this.#setAmbientState();\n }\n\n /** Carbon method ForceStateTargeting (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n ForceStateTargeting()\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n this.#activeTurret = this.GetClosestTurret();\n this.state = EveTurretSet.State.STATE_TARGETING;\n this.#playTurret(this.#activeTurret, \"\", \"Active\", 0);\n this.#setAmbientState();\n }\n\n /** Carbon method FreezeHighDetailLOD (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The graph freezes its LOD state; geometry creation is not ported yet.\")\n FreezeHighDetailLOD()\n {\n this.lodLevel = EveTurretSet.LOD.LOD_DISABLED;\n this.#highDetailFrozen = true;\n this.geometryResource?.Prepare?.();\n }\n\n /** Returns the turret effect Carbon exposes to SOF material setup. */\n @carbon.method\n @impl.implemented\n GetShader()\n {\n return this.turretEffect;\n }\n\n /**\n * The shared sysbone aiming math, synced from this set's flat tuning\n * fields. Carbon embeds EveTurretAiming by value (EveTurretSet.h:423) and\n * re-exposes its members as these flat Blue attributes; pose-owning\n * consumers of the UpdateTrackingPose seam use THIS object so both hosts\n * run identical math.\n */\n @impl.adapted\n @impl.reason(\"Carbon's by-value embed becomes an accessor because the pose pipeline (the aiming consumer) lives behind the animation seam.\")\n GetAiming()\n {\n const aiming = this.#aiming;\n aiming.sysBoneHeight = this.sysBoneHeight;\n aiming.sysBonePitchOffset = this.sysBonePitchOffset;\n aiming.sysBonePitchFactor = this.sysBonePitchFactor;\n aiming.sysBonePitchMin = this.sysBonePitchMin;\n aiming.sysBonePitchMax = this.sysBonePitchMax;\n aiming.sysBonePitch01Offset = this.sysBonePitch01Offset;\n aiming.sysBonePitch01Factor = this.sysBonePitch01Factor;\n aiming.sysBonePitch02Offset = this.sysBonePitch02Offset;\n aiming.sysBonePitch02Factor = this.sysBonePitch02Factor;\n aiming.sysBonePitch03Offset = this.sysBonePitch03Offset;\n aiming.sysBonePitch03Factor = this.sysBonePitch03Factor;\n return aiming;\n }\n\n #aiming = new EveTurretAiming();\n\n /**\n * Applies resolved SOF vec4 values to the turret effect's constant path, or\n * to its nominal vector-parameter path when no constants are authored.\n */\n @impl.custom\n @impl.reason(\"The combined runtime keeps SOF independently importable by putting the nominal Tr2Effect application boundary on the owning turret class.\")\n ApplySofTurretMaterial(resolveParameter)\n {\n const effect = this.GetShader();\n if (!effect)\n {\n return false;\n }\n return EveTurretSet.applyFactionToTurretShader(effect, resolveParameter);\n }\n\n /**\n * The effect-walking half of Carbon's private EveSOF::ApplyFactionToTurretShader\n * (EveSOF.cpp:4201-4254): overwrites a turret effect's constants, or its\n * vec4 parameters when no constants are authored, with resolved SOF values.\n * Shared by the ship turret set and EveChildTurret; the value resolution\n * stays in SOF, which cannot import this layer.\n * @param {Object} effect - a Tr2Effect\n * @param {Function} resolveParameter - parameter name -> vec4 or null\n * @returns {Boolean} true\n */\n @impl.custom\n @impl.reason(\"The combined runtime keeps SOF independently importable, so the Tr2Effect half of Carbon's EveSOF helper lives beside the turret classes that own the effects.\")\n static applyFactionToTurretShader(effect, resolveParameter)\n {\n if (effect.constParameters.length)\n {\n effect.StartUpdate();\n try\n {\n for (const parameter of effect.constParameters)\n {\n const value = resolveParameter(parameter.name);\n if (value)\n {\n vec4.copy(parameter.value, value);\n }\n }\n }\n finally\n {\n effect.EndUpdate();\n }\n return true;\n }\n\n for (const parameter of effect.parameters)\n {\n // Picking the vec4 entries out of a mixed parameter list. This names a\n // LEAF CLASS because the family has no declared contract to ask for:\n // Carbon derives it from ITriEffectParameter and ITriReroutable\n // (Tr2Vector4Parameter.h:13-16) and our port put the shared behaviour on\n // an invented CjsParameter instead. See\n // .agents/parameter-family-missing-contracts.md.\n if (!CjsSchema.cast(parameter, Tr2Vector4Parameter))\n {\n continue;\n }\n const value = resolveParameter(parameter.GetParameterName());\n if (value)\n {\n parameter.SetValue(value);\n }\n }\n return true;\n }\n\n /** Carbon method GetShotTimeVariance (EveTurretSet.h:223-226). */\n @carbon.method\n @impl.implemented\n GetShotTimeVariance()\n {\n return EVE_TURRET_RANDOM_DELAY_MAX;\n }\n\n /** Carbon method MissQueueSize (EveTurretSet.cpp:3597-3600). */\n @carbon.method\n @impl.implemented\n MissQueueSize()\n {\n return this.target.MissQueueSize();\n }\n\n /** Carbon method GetLastShotTime (EveTurretSet.cpp:3606-3609). */\n @carbon.method\n @impl.implemented\n GetLastShotTime()\n {\n return this.target.GetLastShotTime();\n }\n\n /** Carbon method EnterStateDeactive (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n EnterStateDeactive()\n {\n if (this.state === EveTurretSet.State.STATE_DEACTIVE) return;\n if (this.state === EveTurretSet.State.STATE_FIRING) this.firingEffect?.StopFiring?.();\n if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\n {\n this.#delayToFadeOutTracking = 0.0001;\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\n this.target?.StopFireAtLocator?.();\n this.#playAll(\"Pack\", \"Inactive\", 1);\n }\n else\n {\n this.trackingInfluence = 0;\n this.#delayToFadeOutTracking = 0;\n this.#playAll(\"Pack\", \"Inactive\", 0);\n }\n this.state = EveTurretSet.State.STATE_DEACTIVE;\n this.#setAmbientState();\n }\n\n /** Carbon method EnterStateFiring (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's geometry/animation selection is represented by portable turret records and controller forwarding.\")\n EnterStateFiring()\n {\n if (!this.#setupFiringState()) return false;\n if (this.firingEffect && this.state === EveTurretSet.State.STATE_FIRING)\n {\n if (this.firingEffect.IsLooping?.())\n {\n this.firingEffect.PrepareFiringEffectMoveObjects?.();\n return true;\n }\n this.firingEffect.StopFiring?.();\n }\n if (this.firingEffect)\n {\n if (this.maxCyclingFirePos > 1) this.firingEffect.PrepareFiring?.(this.randomFiringDelay, this.currentCyclingFiresPos, this.cyclingFireGroupCount);\n else this.firingEffect.PrepareFiring?.(this.randomFiringDelay);\n this.firingEffect.SetImpactConfiguration?.(this.target?.GetImpactConfiguration?.());\n }\n this.state = EveTurretSet.State.STATE_FIRING;\n this.#setAmbientState();\n return true;\n }\n\n /** Carbon method EnterStateIdle (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n EnterStateIdle()\n {\n if (!this.isOnline) return;\n if (this.state === EveTurretSet.State.STATE_DEACTIVE)\n {\n this.#playAll(\"Deploy\", \"Active\", 0);\n this.trackingInfluence = 0;\n }\n else if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\n {\n this.#delayToFadeOutTracking = 0.0001;\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\n this.target?.StopFireAtLocator?.();\n this.firingEffect?.StopFiring?.();\n this.#playAll(\"\", \"Active\", 1);\n this.turretMovementObserver?.GetObserver()?.SendEvent?.(this.targetingToIdleMovementAudioEvent);\n }\n else this.#playAll(\"\", \"Active\", 0);\n this.state = EveTurretSet.State.STATE_IDLE;\n this.#setAmbientState();\n }\n\n /** Carbon method EnterStateReloading (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n EnterStateReloading()\n {\n const wasDeactive = this.state === EveTurretSet.State.STATE_DEACTIVE;\n if (this.state === EveTurretSet.State.STATE_TARGETING || this.state === EveTurretSet.State.STATE_FIRING)\n {\n this.#delayToFadeOutTracking = 0.0001;\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\n this.target?.StopFireAtLocator?.();\n this.firingEffect?.StopFiring?.();\n this.#playAll(\"Reload\", \"Active\", 1);\n }\n else if (!wasDeactive) this.#playAll(\"Reload\", \"Active\", 0);\n this.state = EveTurretSet.State.STATE_RELOADING;\n this.#setAmbientState();\n }\n\n /** Carbon method EnterStateTargeting (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.\")\n EnterStateTargeting()\n {\n if (!this.isOnline) return;\n if (this.state === EveTurretSet.State.STATE_DEACTIVE)\n {\n this.#delayToFadeInTracking = this.#playAll(\"Deploy\", \"Active\", 1) + 0.0001;\n }\n else if (this.state === EveTurretSet.State.STATE_IDLE || this.state === EveTurretSet.State.STATE_RELOADING)\n {\n this.#delayToFadeInTracking = 0.0001;\n this.#playAll(\"\", \"Active\", 1);\n }\n else if (this.state === EveTurretSet.State.STATE_FIRING)\n {\n this.#activeTurret = EveTurretSet.INVALID_INDEX;\n this.target?.StopFireAtLocator?.();\n this.firingEffect?.StopFiring?.();\n this.#playAll(\"\", \"Active\", 0);\n }\n this.state = EveTurretSet.State.STATE_TARGETING;\n this.#setAmbientState();\n }\n\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\n HandleControllerEvent(name)\n {\n this.firingEffect?.HandleControllerEvent(name);\n this.#ambientEffect()?.HandleControllerEvent(name);\n }\n\n /** Carbon method GetFiringBoneWorldTransform (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Portable turret records and duck-typed geometry bone transforms replace Carbon's CMF/Granny split.\")\n GetFiringBoneWorldTransform(muzzle = 0, out = mat4.create())\n {\n let turretIndex = this.#activeTurret;\n if (turretIndex === EveTurretSet.INVALID_INDEX) turretIndex = this.GetClosestTurret();\n if (turretIndex === EveTurretSet.INVALID_INDEX) return mat4.copy(out, this.#parentTransform);\n const turret = this.#turrets[turretIndex];\n const world = turret?.worldMatrix ?? turret?.transform ?? turret;\n if (world?.length === 16) mat4.copy(out, world);\n else mat4.copy(out, this.#parentTransform);\n if (!this.firingEffect) return out;\n const boneID = this.firingEffect?.GetPerMuzzleBoneID?.(muzzle) ?? EveTurretSet.INVALID_INDEX;\n if (boneID === EveTurretSet.INVALID_INDEX)\n {\n if (this.useLowLodFiringTransform)\n {\n mat4.fromRotationTranslationScale(EveTurretSet.#lowLodTransform, this.lowLodFiringEffectRotation, this.lowLodFiringEffectTranslation, this.lowLodFiringEffectScale);\n mat4.multiply(out, out, EveTurretSet.#lowLodTransform);\n }\n return out;\n }\n const boneTransform = turret?.GetBoneTransform?.(boneID, EveTurretSet.#boneTransform)\n ?? this.geometryResource?.GetBoneTransform?.(turretIndex, boneID, EveTurretSet.#boneTransform);\n if (boneTransform?.length === 16)\n {\n if (boneTransform !== EveTurretSet.#boneTransform) mat4.copy(EveTurretSet.#boneTransform, boneTransform);\n return mat4.multiply(out, out, EveTurretSet.#boneTransform);\n }\n if (this.useLowLodFiringTransform)\n {\n mat4.fromRotationTranslationScale(EveTurretSet.#lowLodTransform, this.lowLodFiringEffectRotation, this.lowLodFiringEffectTranslation, this.lowLodFiringEffectScale);\n mat4.multiply(out, out, EveTurretSet.#lowLodTransform);\n return out;\n }\n if (this.sysBonePitchMin < 45)\n {\n vec3.set(EveTurretSet.#turretPosition, out[12], out[13], out[14]);\n const target = this.target?.GetTrackingPosition?.() ?? this.target?.position ?? EveTurretSet.#zero;\n vec3.subtract(EveTurretSet.#targetDirection, target, EveTurretSet.#turretPosition);\n if (vec3.squaredLength(EveTurretSet.#targetDirection))\n {\n quat.rotationTo(EveTurretSet.#directRotation, EveTurretSet.#unitZ, EveTurretSet.#targetDirection);\n mat4.fromRotationTranslation(out, EveTurretSet.#directRotation, EveTurretSet.#turretPosition);\n }\n }\n else\n {\n mat4.fromXRotation(EveTurretSet.#launcherRotation, -Math.PI * 0.5);\n mat4.multiply(out, out, EveTurretSet.#launcherRotation);\n }\n return out;\n }\n\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\n SetControllerVariable(name, value)\n {\n this.firingEffect?.SetControllerVariable(name, value);\n this.#ambientEffect()?.SetControllerVariable(name, value);\n }\n\n /** Carbon method SetShotMissed (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n SetShotMissed(missed)\n {\n this.target?.SetShotMissed?.(missed);\n }\n\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing/ambient child forwarding.\")\n StartControllers()\n {\n this.firingEffect?.StartControllers();\n this.#ambientEffect()?.StartControllers();\n }\n\n /**\n * Creates the target when absent, pushes the authored miss and impact\n * behaviour into it, and initializes the firing and ambient effects.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"InitializeGeometryResource and the granny skeleton load are not ported; Carbon calls them from here (cpp:146-165).\")\n Initialize()\n {\n this.target ??= new EveTurretTarget();\n this.target.SetBehaviour(this.laserMissBehaviour, this.projectileMissBehaviour, this.impactSize, this.impactBehaviour);\n this.firingEffect?.Initialize();\n this.#ambientEffect()?.Initialize();\n return true;\n }\n\n /**\n * Carbon OnModified (EveTurretSet.cpp:167-201). FIVE arms, and they are an\n * `else if` CHAIN: Carbon is notified once per changed member, so exactly one\n * arm runs per notification.\n *\n * Our settle reports a whole write instead, so the chain is evaluated against\n * the values last seen rather than against a Be::Var pointer - one arm per\n * settle, in the donor's order. Every arm stays present even where its body\n * is unported, because removing one would let a change fall through to the\n * next arm and run work the donor would not have run.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"JS dispatches the native hook using the exposed member name; existing class-owned rendering/resource adaptations remain unchanged.\")\n OnModified(propertyName)\n {\n if (propertyName === \"display\")\n {\n this.ReRegister();\n }\n else if (propertyName === \"geometryResPath\")\n {\n this.ReRegister();\n // Carbon reloads here (cpp:177, \"new gr2 file specified -> reload!\").\n // InitializeGeometryResource is unported: it asks BeResMan for the\n // geometry and re-attaches the notify target (cpp:252-290).\n }\n else if (propertyName === \"ambientEffectEditingMode\")\n {\n // Carbon re-sets the ambient effect to itself, which re-runs\n // InitializeAmbientEffect (cpp:181, cpp:3554-3565). Unported: the\n // generated distributed container it builds does not exist here.\n }\n else if (propertyName === \"laserMissBehaviour\" || propertyName === \"projectileMissBehaviour\"\n || propertyName === \"impactSize\" || propertyName === \"impactBehaviour\")\n {\n this.target.SetBehaviour(this.laserMissBehaviour, this.projectileMissBehaviour, this.impactSize, this.impactBehaviour);\n }\n else if (propertyName === \"useDynamicBounds\")\n {\n // Carbon rebuilds the per-bone bounds (cpp:187-200), taking the CMF\n // branch whenever the geometry is absent, unloaded or CMF - which is\n // always, for us. InitializeDynamicBounds is unported, and porting it\n // alone buys nothing until GetDynamicBounds and GetLocalBoundingBox\n // land with it.\n }\n return true;\n }\n\n /** Attaches the firing effect and initializes it immediately. */\n @carbon.method\n @impl.implemented\n SetFiringEffect(effect)\n {\n this.firingEffect = effect ?? null;\n this.firingEffect?.Initialize();\n }\n\n /**\n * Offers an object to the target for validation; on acceptance it sends the\n * idle-to-targeting movement audio event when coming from idle or switching\n * targets, and rescales the firing effect to the new target's radius. Returns\n * whether the object was accepted.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon QueryInterface target attachment is delegated to EveTurretTarget's browser-compatible target validation.\")\n SetTargetObject(object)\n {\n // Carbon EveTurretSet.cpp:3630-3633: the ship set cannot clear its target;\n // only EveChildTurret passes null through to EveTurretTarget.\n if (!object) return false;\n this.target ??= new EveTurretTarget();\n const previous = this.target.GetTargetable?.();\n const accepted = this.target.SetTargetable(object);\n if (accepted)\n {\n if ((this.state === EveTurretSet.State.STATE_IDLE || previous !== object) && this.playMovementSound && this.idleToTargetingMovementAudioEvent)\n {\n this.turretMovementObserver?.GetObserver()?.SendEvent?.(this.idleToTargetingMovementAudioEvent);\n }\n this.SetTargetScale();\n }\n return accepted;\n }\n\n /** The object currently being targeted, or null. */\n @carbon.method\n @impl.implemented\n GetTargetObject()\n {\n return this.target?.GetTargetable?.() ?? null;\n }\n\n /**\n * Rescales the firing effect from the target's radius, passing -1 when there\n * is no target.\n */\n @carbon.method\n @impl.implemented\n SetTargetScale()\n {\n this.firingEffect?.SetScaleByRadius?.(this.target?.GetRadius?.() ?? -1);\n }\n\n /**\n * Replaces the turret records, truncated to the fixed 24-turret limit,\n * normalizing each into the record shape and resetting visibleCount.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.\")\n SetTurrets(turrets = [])\n {\n this.#turrets = Array.from(turrets).slice(0, EveTurretSet.MAX_TURRETS_PER_SET).map(turret => this.#normalizeTurret(turret));\n this.visibleCount = this.#turrets.length;\n return this.#turrets;\n }\n\n /**\n * Appends one normalized turret record and returns it, or null once the fixed\n * 24-turret limit is reached.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.\")\n AddTurret(turret)\n {\n if (this.#turrets.length >= EveTurretSet.MAX_TURRETS_PER_SET) return null;\n const value = this.#normalizeTurret(turret);\n this.#turrets.push(value);\n this.visibleCount = this.#turrets.length;\n return value;\n }\n\n /**\n * The live turret record list; the records are mutated in place by\n * UpdateTurretTransforms, so this is not a snapshot.\n */\n @carbon.method\n @impl.implemented\n GetTurrets()\n {\n return this.#turrets;\n }\n\n /** Carbon method SetLocalTransform. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Portable records replace Carbon's CMF/Granny SingleTurretData allocation while retaining its fixed 24-turret limit and scale removal.\")\n SetLocalTransform(turretIndex, localMatrix)\n {\n const index = Number(turretIndex) >>> 0;\n if (index >= EveTurretSet.MAX_TURRETS_PER_SET || localMatrix?.length !== 16) return false;\n while (this.#turrets.length <= index)\n {\n const turret = this.#normalizeTurret(null);\n turret.valid = false;\n turret.display = false;\n this.#turrets.push(turret);\n }\n const turret = this.#turrets[index];\n mat4.getRotation(EveTurretSet.#localRotation, localMatrix);\n mat4.getTranslation(EveTurretSet.#localTranslation, localMatrix);\n mat4.fromRotationTranslation(turret.localMatrix, EveTurretSet.#localRotation, EveTurretSet.#localTranslation);\n quat.copy(turret.localQuaternion, EveTurretSet.#localRotation);\n vec4.set(turret.localPosition, EveTurretSet.#localTranslation[0], EveTurretSet.#localTranslation[1], EveTurretSet.#localTranslation[2], 1);\n turret.valid = false;\n turret.display = false;\n this.generatedDistributedAmbientEffect?.UpdateInstance?.(index, EveTurretSet.#unitScale, turret.localQuaternion, EveTurretSet.#localTranslation);\n this.visibleCount = this.#turrets.length;\n return true;\n }\n\n /**\n * Stores the hull transform and immediately recomputes every turret's world\n * matrix from it.\n */\n @carbon.method\n @impl.implemented\n SetParentTransform(transform)\n {\n mat4.copy(this.#parentTransform, transform);\n this.UpdateTurretTransforms(transform);\n }\n\n /**\n * Recomputes each turret's world matrix as the parent transform applied to its\n * local matrix and marks the record valid; defaults to the stored parent\n * transform.\n */\n @carbon.method\n @impl.implemented\n UpdateTurretTransforms(parentTransform = this.#parentTransform)\n {\n mat4.copy(this.#parentTransform, parentTransform);\n for (const turret of this.#turrets)\n {\n mat4.multiply(turret.worldMatrix, parentTransform, turret.localMatrix);\n turret.valid = true;\n }\n }\n\n /**\n * The index of the turret whose world up axis points most directly at its\n * nearest damage locator, or 0 when no valid turret is found.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The closest portable turret is selected from its world up-axis and the target tracking position.\")\n GetClosestTurret()\n {\n return this.#getClosestTurretAndLocator().turret;\n }\n\n /**\n * Convenience update that runs the synchronous then asynchronous phase against\n * the stored parent transform.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"This combined browser convenience update runs Carbon's explicit synchronous and asynchronous phases in order.\")\n Update(context)\n {\n this.UpdateSyncronous(context);\n this.UpdateAsyncronous(context, this.#parentTransform);\n return true;\n }\n\n /**\n * Runs the synchronous phase: while a looping effect fires it re-picks the\n * turret and locator every two seconds, then updates the firing effect, feeds\n * the target the current muzzle start position, and updates the ambient effect\n * and movement observer from the first turret.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animation cleanup and task dispatch are forwarded through portable records; target and firing timing remain source-faithful.\")\n UpdateSyncronous(context, parentTransform = this.#parentTransform)\n {\n const deltaTime = Number(context?.GetDeltaT?.() ?? context?.deltaTime ?? context?.deltaT ?? 0);\n if (parentTransform?.length === 16) mat4.copy(this.#parentTransform, parentTransform);\n if (this.firingEffect)\n {\n if (this.#activeTurret !== EveTurretSet.INVALID_INDEX && this.firingEffect.IsLooping?.() && this.state === EveTurretSet.State.STATE_FIRING)\n {\n this.#recheckTimeLeft -= deltaTime;\n if (this.#recheckTimeLeft < 0)\n {\n const pair = this.#getClosestTurretAndLocator();\n if (pair.turret !== this.#activeTurret || pair.locator !== this.target?.GetLocator?.()) this.#setupFiringState();\n this.#recheckTimeLeft = 2;\n }\n }\n this.firingEffect.UpdateSynchronous?.(context);\n }\n vec3.set(EveTurretSet.#sourcePosition, this.#parentTransform[12], this.#parentTransform[13], this.#parentTransform[14]);\n this.firingEffect?.GetStartPosition?.(EveTurretSet.#sourcePosition);\n this.target?.Update(deltaTime, EveTurretSet.#sourcePosition);\n this.#ambientEffect()?.UpdateSyncronous(context, { isVisible: this.display, localToWorldTransform: this.#parentTransform });\n if (this.#turrets.length) this.turretMovementObserver?.Update(this.#turrets[0].worldMatrix);\n return true;\n }\n\n /**\n * Runs the asynchronous phase: recomputes the turret world matrices, ramps the\n * tracking influence through its fade-in and fade-out delays, pushes the\n * target position into each valid turret's tracking pose in that turret's\n * local space, then hands the firing effect its end position and per-muzzle\n * world transforms.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Skeleton realization is not ported yet; portable turret records may consume the same local-target tracking hook.\")\n UpdateAsyncronous(context, parentData = this.#parentTransform)\n {\n const deltaTime = Number(context?.GetDeltaT?.() ?? context?.deltaTime ?? context?.deltaT ?? 0);\n const parentTransform = parentData?.transform?.length === 16 ? parentData.transform : parentData;\n if (parentTransform?.length === 16)\n {\n // The OUTGOING parent transform becomes m_shipTransformPrev before the\n // new one is adopted, so the record can carry both.\n mat4.copy(this.#shipTransformPrev, this.#parentTransform);\n this.UpdateTurretTransforms(parentTransform);\n }\n if (parentData && parentData !== this.#parentTransform && !ArrayBuffer.isView(parentData) && !Array.isArray(parentData))\n {\n this.#parentData = parentData;\n }\n if (this.#trackingInfluenceDelta !== 0)\n {\n this.trackingInfluence += this.#trackingInfluenceDelta * deltaTime;\n if (this.trackingInfluence > this.maxTrackingTime)\n {\n this.trackingInfluence = this.maxTrackingTime;\n this.#trackingInfluenceDelta = 0;\n }\n else if (this.trackingInfluence < 0)\n {\n this.trackingInfluence = 0;\n this.#trackingInfluenceDelta = 0;\n }\n }\n if (this.#delayToFadeOutTracking > 0)\n {\n this.#delayToFadeOutTracking -= deltaTime;\n if (this.#delayToFadeOutTracking <= 0)\n {\n this.#delayToFadeOutTracking = 0;\n this.#trackingInfluenceDelta = -1;\n }\n }\n if (this.#delayToFadeInTracking > 0)\n {\n this.#delayToFadeInTracking -= deltaTime;\n if (this.#delayToFadeInTracking <= 0)\n {\n this.#delayToFadeInTracking = 0;\n this.#trackingInfluenceDelta = 1;\n }\n }\n if (this.trackingInfluence !== 0)\n {\n const trackingPosition = this.target?.GetTrackingPosition?.() ?? this.target?.position;\n if (trackingPosition)\n {\n for (const turret of this.#turrets)\n {\n if (!turret.valid || !mat4.invert(EveTurretSet.#inverseTurret, turret.worldMatrix)) continue;\n vec3.transformMat4(EveTurretSet.#localTarget, trackingPosition, EveTurretSet.#inverseTurret);\n const hook = turret.UpdateTrackingPose ?? turret.source?.UpdateTrackingPose;\n hook?.call(turret.source ?? turret, EveTurretSet.#localTarget, this.trackingInfluence, this);\n }\n }\n }\n if (this.firingEffect)\n {\n this.firingEffect.SetEndPosition?.(this.target?.GetTargetPosition?.() ?? this.target?.targetPosition ?? EveTurretSet.#zero);\n for (let muzzle = 0; muzzle < this.firingEffect.GetPerMuzzleEffectCount?.(); muzzle++)\n {\n this.firingEffect.SetMuzzleTransform?.(muzzle, this.GetFiringBoneWorldTransform(muzzle, EveTurretSet.#muzzleTransform));\n }\n this.firingEffect.SetDisplayDestObject?.(this.target?.ShowDestObject?.() ?? true);\n this.firingEffect.UpdateAsynchronous?.(context);\n }\n this.#ambientEffect()?.UpdateAsyncronous(context, { isVisible: this.display, localToWorldTransform: this.#parentTransform });\n return true;\n }\n\n /**\n * Appends the firing and ambient effect renderables to out; gated on display,\n * and each contribution additionally on displayEffects.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Renderable collection is backend-neutral; geometry and batch realization are not ported yet.\")\n GetRenderables(out = [])\n {\n if (!this.display) return out;\n if (this.displayEffects) this.firingEffect?.GetRenderables(out);\n if (this.#ambientEffect() && this.displayEffects) this.#ambientEffect().GetRenderables(out);\n return out;\n }\n\n /**\n * Forwards visibility to the firing and ambient effects; gated on display and,\n * per effect, on displayEffects. The turret geometry itself is not culled\n * here.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Visibility is forwarded through backend-neutral firing and ambient graph contracts.\")\n UpdateVisibility(context)\n {\n if (!this.display) return false;\n if (this.displayEffects) this.firingEffect?.UpdateVisibility(context);\n if (this.displayEffects) this.#ambientEffect()?.UpdateVisibility(context, this.#parentTransform);\n return true;\n }\n\n /** Carbon EveTurretSet::RegisterComponents (cpp:238-256): ShadowCaster leaf\n * self-registration, then forwards the firing effect and the ambient effect\n * (GetAmbientEffectOrGeneratedEffect, mirrored by #ambientEffect). Gate\n * m_display. */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry && this.display)\n {\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\n this.firingEffect?.Register(registry);\n this.#ambientEffect()?.Register(registry);\n }\n }\n\n /** Carbon EveTurretSet::UnRegisterComponents (cpp:258-274): forwards the\n * firing and ambient effects only (own components were already removed by\n * EveEntity::UnRegister, EveEntity.cpp:90); no display re-check. */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n this.firingEffect?.UnRegister(registry);\n this.#ambientEffect()?.UnRegister(registry);\n }\n }\n\n /** Carbon EveTurretSet::HasTransparentBatches: instanced turrets are opaque. */\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n return false;\n }\n\n /**\n * Emits Carbon's single opaque instanced turret batch. The geometry source\n * and instance count are portable; the engine resolves allocations and the\n * instance stream during realization.\n * @returns {Boolean} whether the batch was committed\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Instance stream, vertex declaration and realized LOD allocations are not ported yet; Trinity records their canonical geometry source and instance count.\")\n GetBatches(batches, batchType, perObjectData, _reason)\n {\n if (batchType !== TriBatchType.TRIBATCHTYPE_OPAQUE || !this.display || !this.visibleCount || !this.geometryResource)\n {\n return false;\n }\n\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(this.turretEffect);\n if (!batch.IsValid())\n {\n return false;\n }\n batch.SetGeometrySource(this.geometryResource, 0, -1, -1, false);\n batch.SetPerObjectData(perObjectData ?? null);\n batch.instanceCount = this.visibleCount >>> 0;\n return batches.Commit(batch);\n }\n\n /** Carbon EveTurretSet::GetSortValue: opaque turret instances use key one. */\n @carbon.method\n @impl.implemented\n GetSortValue()\n {\n return 1;\n }\n\n /** Carbon EveTurretSet::IsCastingShadow (cpp:2022-2051): after the\n * display/geometry (cpp:2024) and reflection-reason (cpp:2029) early-outs -\n * which do NOT write the out-param, so a stale previous-caster value\n * survives at the scene call sites (EveSpaceScene.cpp:2391/2517) - the\n * SET-level bounding sphere is transformed by EVERY turret's world matrix\n * (including invisible ones - no per-turret visibility gate, unlike\n * UpdateVisibility cpp:2070-2088), gated on transformed radius > 0, culled\n * with shadowFrustum.IsVisible, and the MAX GetSizeInShadow accumulates.\n * Returns sizeInShadow > 5 (the swarm uses 15). Carbon's float& out-param\n * becomes the optional trailing length-1 array (out-params last). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The length-1 out array replaces the float& out-param; the shadow math is ported, including exactly which paths write the out value.\")\n IsCastingShadow(cameraFrustum, shadowFrustum, renderReason, sizeInShadowOut = null)\n {\n if (!this.display || !this.geometryResource)\n {\n return false;\n }\n if (Number(renderReason ?? Tr2RenderReason.TR2RENDERREASON_NORMAL) === Tr2RenderReason.TR2RENDERREASON_REFLECTION)\n {\n return false;\n }\n\n let sizeInShadow = 0;\n if (sizeInShadowOut)\n {\n sizeInShadowOut[0] = 0;\n }\n for (const turret of this.GetTurrets())\n {\n const sphere = EveTurretSet.#shadowSphereScratch;\n vec4.copy(sphere, this.boundingSphere);\n BoundingSphereTransform(turret.worldMatrix, sphere);\n if (sphere[3] > 0 && shadowFrustum?.IsVisible?.(cameraFrustum, sphere))\n {\n sizeInShadow = Math.max(sizeInShadow, shadowFrustum.GetSizeInShadow(sphere));\n if (sizeInShadowOut)\n {\n sizeInShadowOut[0] = sizeInShadow;\n }\n }\n }\n return sizeInShadow > 5;\n }\n\n /** Carbon EveTurretSet::GetShadowBatches (cpp:2221-2254): one instanced\n * batch for the whole turret geometry - material m_turretEffect, instance\n * count m_visibleCount, mesh 0 at the lowest LOD. QUIRK: shadowPixelSize is\n * completely IGNORED (always GetMeshLod(0, 0), cpp:2235) - the swarm uses\n * it for LOD, the turret does not. The shadow path commits without the\n * normal path's validity check (cpp:2253 vs 2211) - equivalent here because\n * Commit drops invalid batches. Returns whether the batch was committed\n * (JS addition; Carbon returns void). NOTE: JS visibleCount is currently\n * the total turret count (the adapted UpdateVisibility does no per-turret\n * frustum cull), a pre-existing adaptation. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Instance stream, vertex declaration and LOD allocations (cpp:2227-2250) are not ported; the batch records the geometry source, turret effect, per-object data and the CPU-known instance count meanwhile.\")\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\n {\n if (!this.display || !this.visibleCount)\n {\n return false;\n }\n if (!this.geometryResource)\n {\n return false;\n }\n\n const batch = new Tr2RenderBatch();\n batch.SetMaterial(this.turretEffect);\n if (!batch.IsValid())\n {\n return false;\n }\n batch.SetGeometrySource(this.geometryResource, 0, -1, -1, false);\n batch.SetPerObjectData(perObjectData ?? null);\n batch.instanceCount = this.visibleCount >>> 0;\n return batches.Commit(batch);\n }\n\n /** Carbon EveTurretSet::GetPerObjectData (cpp:2275-2518): early-outs on a\n * missing/bad geometry resource RETURN NULL - and the cascade path stores\n * that null and still calls GetShadowBatches with it (EveSpaceScene.cpp:\n * 717/727), so a null per-object record on a batch is legal. The\n * EveTurretSetPerObjectData fill includes the ship matrices, compacted\n * per-visible turret SRT arrays, and the SH/clip PS block (cpp:2300-2511).\n * Trinity fills every CPU-known field in canonical RawData. Only the bone\n * palette's GPU ring-buffer offsets remain engine-supplied. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Trinity fills the CPU-known EveTurretSet VS/PS RawData fields; bone-palette ring offsets and IsGood/GetMeshCount realization gates are not ported yet, while the CPU gate is geometry presence.\")\n GetPerObjectData(accumulator = null)\n {\n if (!this.geometryResource || typeof accumulator?.Alloc !== \"function\")\n {\n return null;\n }\n\n const vs = accumulator.Alloc(\"EveTurretSetVSData\");\n const ps = accumulator.Alloc(\"EveTurretSetPSData\");\n const parent = this.#parentData;\n\n // Carbon cpp:2305-2309.\n vs.SetAndTranspose(\"shipMatrix\", parent.transform ?? this.#parentTransform);\n vs.SetAndTranspose(\"prevShipMatrix\", this.#shipTransformPrev);\n vs.Set(\"baseCutoffData\", [ this.bottomClipHeight, 0, 0, 0 ]);\n\n if (this.#turrets.length)\n {\n // The shader's bone-index mapping is shared by every turret of the set;\n // three bones is Carbon's default when no skeleton mapping is present.\n const boneCount = this.#skeletonBoneIndices.length || EveTurretSet.DEFAULT_BONES_PER_TURRET;\n\n // Only VISIBLE turrets consume a slot, and the array is filled densely -\n // the unwritten tail deliberately keeps whatever the arena held\n // (cpp:2322-2341).\n let turretIndex = 0;\n for (const turret of this.#turrets)\n {\n // Carbon's SingleTurret::visible is this port's `display`.\n if (turret.display === false)\n {\n continue;\n }\n if (turret.valid)\n {\n vs.SetIndex(\"turretRotation\", turretIndex, turret.localQuaternion);\n vs.SetIndex(\"turretTranslation\", turretIndex, turret.localPosition);\n }\n else\n {\n vs.SetIndex(\"turretTranslation\", turretIndex, EveTurretSet.#invalidTranslation);\n vs.SetIndex(\"turretRotation\", turretIndex, EveTurretSet.#invalidRotation);\n }\n turretIndex++;\n }\n\n // currentBoneOffset/prevBoneOffset are GPU ring addresses with no CPU\n // derivation (cpp:2387-2388); they stay at their zero default.\n vs.Set(\"turretSetData\", [ boneCount, 0, 0, 0 ]);\n\n // ps data (cpp:2394-2404)\n ps.Set(\"shipData\", parent.shipData ?? EveTurretSet.#zero4);\n const clipCenter = parent.clipSphereCenter ?? EveTurretSet.#zero4;\n ps.Set(\"clipData1\", [ clipCenter[0], clipCenter[1], clipCenter[2], parent.clipRadiusSq ?? 0 ]);\n ps.Set(\"clipRadius2Sq\", [ parent.clipRadius2Sq ?? 0 ]);\n\n // The hull's coefficients when it published any, zeroes otherwise.\n for (let index = 0; index < EveTurretSet.SH_COEFFICIENT_COUNT; index++)\n {\n const source = parent.shLighting\n ? parent.shLighting.subarray(index * 4, index * 4 + 4)\n : EveTurretSet.#zero4;\n ps.SetIndex(\"shLightingCoefficients\", index, source);\n }\n }\n\n return { vs, ps };\n }\n\n /** Carbon EveTurretSet::GetShadowPerObjectData (cpp:2520-2523): pure\n * forward to GetPerObjectData. */\n @carbon.method\n @impl.implemented\n GetShadowPerObjectData(accumulator = null)\n {\n return this.GetPerObjectData(accumulator);\n }\n\n /**\n * Establishes everything one shot needs: the firing turret and locator, the\n * advanced cycling fire position, the random firing delay, the fire animation\n * on the chosen turret, the target's impact timing derived from the effect's\n * duration and peak time, and the ambient controller's turret state. Returns\n * false when deactivated or untargeted.\n */\n #setupFiringState()\n {\n if (this.state === EveTurretSet.State.STATE_DEACTIVE || !this.target) return false;\n const pair = this.#getClosestTurretAndLocator();\n this.#activeTurret = pair.turret;\n if (this.maxCyclingFirePos > 1)\n {\n this.currentCyclingFiresPos += this.cyclingFireGroupCount;\n if (this.currentCyclingFiresPos >= this.maxCyclingFirePos * this.cyclingFireGroupCount) this.currentCyclingFiresPos = 0;\n }\n this.randomFiringDelay = this.useRandomFiringDelay ? this.GetShotTimeVariance() * Math.random() : 0;\n const effectTotalTime = Number(this.firingEffect?.GetFiringDuration?.() ?? 0);\n const effectPeakTime = Number(this.firingEffect?.GetFiringPeakTime?.() ?? 0);\n const source = this.#parentTransform.subarray(12, 15);\n const locator = pair.locator;\n if (this.state === EveTurretSet.State.STATE_IDLE || this.state === EveTurretSet.State.STATE_RELOADING)\n {\n this.randomFiringDelay += this.maxTrackingTime;\n this.#delayToFadeInTracking = 0.0001;\n }\n const fireName = this.currentCyclingFiresPos > 0 ? `Fire0${Math.floor(this.currentCyclingFiresPos / this.cyclingFireGroupCount)}` : \"Fire\";\n this.#turrets.forEach((_turret, index) => this.#playTurret(index, index === this.#activeTurret ? fireName : \"\", \"Active\", this.randomFiringDelay));\n this.target.StartFireAtLocator?.(locator ?? -1, this.randomFiringDelay + effectPeakTime, effectTotalTime - effectPeakTime, source);\n const ambient = this.#ambientEffect();\n if (ambient)\n {\n ambient.SetControllerVariable(\"TurretState\", this.state === EveTurretSet.State.STATE_FIRING ? EveTurretSet.State.STATE_TARGETING : this.state);\n ambient.SetControllerVariableOnInstance?.(this.#activeTurret, \"TurretState\", EveTurretSet.State.STATE_FIRING);\n ambient.SetControllerVariableOnInstance?.(this.#activeTurret, \"FiringDelay\", this.randomFiringDelay);\n }\n return true;\n }\n\n /**\n * Picks the turret whose world up axis best aligns with its nearest damage\n * locator and, when chooseRandomLocator is set, re-picks the turret against a\n * random valid locator instead; falls back to turret 0. Returns the shared\n * pair record, valid only until the next call.\n */\n #getClosestTurretAndLocator()\n {\n const pair = EveTurretSet.#closestPair;\n pair.turret = EveTurretSet.INVALID_INDEX;\n pair.locator = -1;\n if (!this.#turrets.length) return pair;\n let closestAngle = -1;\n for (let index = 0; index < this.#turrets.length; index++)\n {\n const turret = this.#turrets[index];\n if (!turret.valid) continue;\n const transform = turret.worldMatrix;\n vec3.set(EveTurretSet.#turretPosition, transform[12], transform[13], transform[14]);\n const locator = this.target?.FindClosestLocator?.(EveTurretSet.#turretPosition, EveTurretSet.#locatorPosition) ?? -1;\n vec3.subtract(EveTurretSet.#targetDirection, EveTurretSet.#locatorPosition, EveTurretSet.#turretPosition);\n if (vec3.squaredLength(EveTurretSet.#targetDirection)) vec3.normalize(EveTurretSet.#targetDirection, EveTurretSet.#targetDirection);\n vec3.normalize(EveTurretSet.#turretUp, vec3.set(EveTurretSet.#turretUp, transform[4], transform[5], transform[6]));\n const angle = vec3.dot(EveTurretSet.#turretUp, EveTurretSet.#targetDirection);\n if (angle > closestAngle)\n {\n closestAngle = angle;\n pair.turret = index;\n pair.locator = locator;\n }\n }\n if (pair.turret !== EveTurretSet.INVALID_INDEX && this.chooseRandomLocator)\n {\n const transform = this.#turrets[pair.turret].worldMatrix;\n vec3.set(EveTurretSet.#turretPosition, transform[12], transform[13], transform[14]);\n const randomLocator = this.target?.FindRandomValidLocator?.(EveTurretSet.#turretPosition, EveTurretSet.#locatorPosition) ?? -1;\n if (randomLocator !== pair.locator && randomLocator !== -1)\n {\n pair.locator = randomLocator;\n closestAngle = -1;\n for (let index = 0; index < this.#turrets.length; index++)\n {\n const turret = this.#turrets[index];\n if (!turret.valid) continue;\n const turretTransform = turret.worldMatrix;\n vec3.set(EveTurretSet.#turretPosition, turretTransform[12], turretTransform[13], turretTransform[14]);\n vec3.subtract(EveTurretSet.#targetDirection, EveTurretSet.#locatorPosition, EveTurretSet.#turretPosition);\n if (vec3.squaredLength(EveTurretSet.#targetDirection)) vec3.normalize(EveTurretSet.#targetDirection, EveTurretSet.#targetDirection);\n vec3.normalize(EveTurretSet.#turretUp, vec3.set(EveTurretSet.#turretUp, turretTransform[4], turretTransform[5], turretTransform[6]));\n const angle = vec3.dot(EveTurretSet.#turretUp, EveTurretSet.#targetDirection);\n if (angle > closestAngle)\n {\n closestAngle = angle;\n pair.turret = index;\n }\n }\n }\n }\n if (pair.turret === EveTurretSet.INVALID_INDEX) pair.turret = 0;\n return pair;\n }\n\n /**\n * Plays an animation on every turret and returns the longest duration\n * reported.\n */\n #playAll(animation, loop, delay)\n {\n let duration = 0;\n for (let index = 0; index < this.#turrets.length; index++) duration = Math.max(duration, this.#playTurret(index, animation, loop, delay));\n return duration;\n }\n\n /**\n * Plays an animation on one turret through the record's own hook or its\n * controller, returning the reported duration, or 0 when the turret or the\n * hook is absent.\n */\n #playTurret(index, animation, loop, delay)\n {\n const turret = this.#turrets[index];\n if (!turret) return 0;\n return Number(turret.PlayAnimation?.(animation, loop, delay) ?? turret.controller?.PlayAnimation?.(animation, { loop, delay }) ?? 0);\n }\n\n /**\n * The ambient effect in force: the authored one while in ambient-effect\n * editing mode, otherwise the generated distributed instance container when\n * one exists.\n */\n #ambientEffect()\n {\n return this.ambientEffectEditingMode ? this.ambientEffect : this.generatedDistributedAmbientEffect ?? this.ambientEffect;\n }\n\n /**\n * Pushes the current state onto the ambient effect's TurretState controller\n * variable.\n */\n #setAmbientState()\n {\n this.#ambientEffect()?.SetControllerVariable(\"TurretState\", this.state);\n }\n\n /**\n * Coerces a caller-supplied turret into the record shape - local and world\n * matrices, local quaternion and position, valid and display flags - reusing\n * the object in place when it already carries a local matrix, and otherwise\n * wrapping it as the record's source.\n */\n #normalizeTurret(turret)\n {\n if (turret?.localMatrix?.length === 16)\n {\n turret.worldMatrix ??= mat4.create();\n turret.localQuaternion ??= quat.create();\n turret.localPosition ??= vec4.create();\n turret.valid ??= true;\n return turret;\n }\n const localMatrix = mat4.create();\n if (turret?.length === 16) mat4.copy(localMatrix, turret);\n else if (turret?.transform?.length === 16) mat4.copy(localMatrix, turret.transform);\n return { source: turret, localMatrix, worldMatrix: mat4.clone(localMatrix), localQuaternion: quat.create(), localPosition: vec4.create(), valid: turret !== null, display: turret?.display ?? true, canFireWhenHidden: !!turret?.canFireWhenHidden };\n }\n\n static ImpactBehaviour = EveTurretTarget.ImpactBehaviour;\n\n static LOD = Object.freeze({\n LOD_INVALID: 0,\n LOD_EMPTY: 1,\n LOD_HIGHEST: 2,\n LOD_DISABLED: 3,\n });\n\n // The enum belongs to the extracted aiming math (EveTurretAiming.h:13-31);\n // the alias keeps this host's established surface on one identity.\n static SystemBones = EveTurretAiming.SystemBones;\n\n static State = Object.freeze({\n STATE_INVALID: 0,\n STATE_DEACTIVE: 1,\n STATE_IDLE: 2,\n STATE_TARGETING: 3,\n STATE_FIRING: 4,\n STATE_RELOADING: 5\n });\n\n static INVALID_INDEX = 0xffffffff;\n\n static MAX_TURRETS_PER_SET = 24;\n\n static #boneTransform = mat4.create();\n static #lowLodTransform = mat4.create();\n static #muzzleTransform = mat4.create();\n static #turretPosition = vec3.create();\n static #targetDirection = vec3.create();\n static #turretUp = vec3.create();\n static #locatorPosition = vec3.create();\n static #zero = vec3.create();\n static #sourcePosition = vec3.create();\n static #localTranslation = vec3.create();\n static #localRotation = quat.create();\n static #unitScale = vec3.fromValues(1, 1, 1);\n static #inverseTurret = mat4.create();\n static #shadowSphereScratch = vec4.create();\n static #localTarget = vec3.create();\n static #directRotation = quat.create();\n static #launcherRotation = mat4.create();\n static #unitZ = vec3.fromValues(0, 0, 1);\n static #closestPair = { turret: EveTurretSet.INVALID_INDEX, locator: -1 };\n\n}\n"],"names":["BoundingSphereTransform","transform","sphere","vec3","transformMat4","Math","max","hypot","_EveTurretSet","_identity","EveTurretSet","EveEntity","e","_init_impactBehaviour","_init_extra_impactBehaviour","_init_firingEffect","_init_extra_firingEffect","_init_ambientEffect","_init_extra_ambientEffect","_init_name","_init_extra_name","_init_firingEffectResPath","_init_extra_firingEffectResPath","_init_chooseRandomLocator","_init_extra_chooseRandomLocator","_init_boundingSphere","_init_extra_boundingSphere","_init_randomizeExplosionRotation","_init_extra_randomizeExplosionRotation","_init_lodLevel","_init_extra_lodLevel","_init_currentCyclingFiresPos","_init_extra_currentCyclingFiresPos","_init_useRandomFiringDelay","_init_extra_useRandomFiringDelay","_init_bottomClipHeight","_init_extra_bottomClipHeight","_init_geometryResource","_init_extra_geometryResource","_init_maxTrackingTime","_init_extra_maxTrackingTime","_init_visibleCount","_init_extra_visibleCount","_init_trackingInfluence","_init_extra_trackingInfluence","_init_swarmID","_init_extra_swarmID","_init_maxCyclingFirePos","_init_extra_maxCyclingFirePos","_init_playMovementSound","_init_extra_playMovementSound","_init_isOnline","_init_extra_isOnline","_init_target","_init_extra_target","_init_locatorName","_init_extra_locatorName","_init_sysBonePitchFactor","_init_extra_sysBonePitchFactor","_init_sysBonePitchMax","_init_extra_sysBonePitchMax","_init_sysBonePitchMin","_init_extra_sysBonePitchMin","_init_sysBonePitchOffset","_init_extra_sysBonePitchOffset","_init_sysBonePitch01Factor","_init_extra_sysBonePitch01Factor","_init_sysBonePitch01Offset","_init_extra_sysBonePitch01Offset","_init_sysBonePitch02Factor","_init_extra_sysBonePitch02Factor","_init_sysBonePitch02Offset","_init_extra_sysBonePitch02Offset","_init_sysBonePitch03Factor","_init_extra_sysBonePitch03Factor","_init_sysBonePitch03Offset","_init_extra_sysBonePitch03Offset","_init_updatePitchPose","_init_extra_updatePitchPose","_init_geometryResPath","_init_extra_geometryResPath","_init_impactSize","_init_extra_impactSize","_init_state","_init_extra_state","_init_sysBoneHeight","_init_extra_sysBoneHeight","_init_randomFiringDelay","_init_extra_randomFiringDelay","_init_turretEffect","_init_extra_turretEffect","_init_idleToTargetingMovementAudioEvent","_init_extra_idleToTargetingMovementAudioEvent","_init_targetingToIdleMovementAudioEvent","_init_extra_targetingToIdleMovementAudioEvent","_init_generatedDistributedAmbientEffect","_init_extra_generatedDistributedAmbientEffect","_init_cyclingFireGroupCount","_init_extra_cyclingFireGroupCount","_init_turretMovementObserver","_init_extra_turretMovementObserver","_init_slotNumber","_init_extra_slotNumber","_init_ambientEffectEditingMode","_init_extra_ambientEffectEditingMode","_init_displayEffects","_init_extra_displayEffects","_init_display","_init_extra_display","_init_useDynamicBounds","_init_extra_useDynamicBounds","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_lowLodFiringEffectScale","_init_extra_lowLodFiringEffectScale","_init_lowLodFiringEffectTranslation","_init_extra_lowLodFiringEffectTranslation","_init_lowLodFiringEffectRotation","_init_extra_lowLodFiringEffectRotation","_init_useLowLodFiringTransform","_init_extra_useLowLodFiringTransform","_init_laserMissBehaviour","_init_extra_laserMissBehaviour","_init_projectileMissBehaviour","_init_extra_projectileMissBehaviour","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","carbon","inherit","ITr2Renderable","edit","notify","persist","int32","enum","objectRef","persistOnly","model","string","boolean","vec4","read","uint32","float32","readwrite","quat","method","impl","adapted","reason","implemented","custom","impactBehaviour","firingEffect","ambientEffect","name","firingEffectResPath","chooseRandomLocator","boundingSphere","create","randomizeExplosionRotation","lodLevel","currentCyclingFiresPos","useRandomFiringDelay","bottomClipHeight","geometryResource","maxTrackingTime","visibleCount","trackingInfluence","swarmID","maxCyclingFirePos","playMovementSound","isOnline","target","EveTurretTarget","locatorName","sysBonePitchFactor","sysBonePitchMax","sysBonePitchMin","sysBonePitchOffset","sysBonePitch01Factor","sysBonePitch01Offset","sysBonePitch02Factor","sysBonePitch02Offset","sysBonePitch03Factor","sysBonePitch03Offset","updatePitchPose","geometryResPath","impactSize","state","sysBoneHeight","randomFiringDelay","turretEffect","idleToTargetingMovementAudioEvent","targetingToIdleMovementAudioEvent","generatedDistributedAmbientEffect","cyclingFireGroupCount","turretMovementObserver","slotNumber","ambientEffectEditingMode","displayEffects","display","useDynamicBounds","estimatedPixelDiameter","lowLodFiringEffectScale","fromValues","lowLodFiringEffectTranslation","lowLodFiringEffectRotation","useLowLodFiringTransform","laserMissBehaviour","projectileMissBehaviour","mat4","INVALID_INDEX","RebuildBoundingSphere","resource","RecalculateBoundingSphere","value","GetBoundingSphere","length","copy","ForceStateDeactive","StopFireAtLocator","StopFiring","State","STATE_DEACTIVE","ForceStateTargeting","GetClosestTurret","STATE_TARGETING","FreezeHighDetailLOD","LOD","LOD_DISABLED","Prepare","GetShader","GetAiming","aiming","EveTurretAiming","ApplySofTurretMaterial","resolveParameter","effect","applyFactionToTurretShader","constParameters","StartUpdate","parameter","EndUpdate","parameters","CjsSchema","cast","Tr2Vector4Parameter","GetParameterName","SetValue","GetShotTimeVariance","EVE_TURRET_RANDOM_DELAY_MAX","MissQueueSize","GetLastShotTime","EnterStateDeactive","STATE_FIRING","EnterStateFiring","IsLooping","PrepareFiringEffectMoveObjects","PrepareFiring","SetImpactConfiguration","GetImpactConfiguration","EnterStateIdle","GetObserver","SendEvent","STATE_IDLE","EnterStateReloading","wasDeactive","STATE_RELOADING","EnterStateTargeting","HandleControllerEvent","GetFiringBoneWorldTransform","muzzle","out","turretIndex","turret","world","worldMatrix","boneID","GetPerMuzzleBoneID","fromRotationTranslationScale","multiply","boneTransform","GetBoneTransform","set","GetTrackingPosition","position","subtract","squaredLength","rotationTo","fromRotationTranslation","fromXRotation","PI","SetControllerVariable","SetShotMissed","missed","StartControllers","Initialize","SetBehaviour","OnModified","propertyName","ReRegister","SetFiringEffect","SetTargetObject","object","previous","GetTargetable","accepted","SetTargetable","SetTargetScale","GetTargetObject","SetScaleByRadius","GetRadius","SetTurrets","turrets","Array","from","slice","MAX_TURRETS_PER_SET","map","AddTurret","push","GetTurrets","SetLocalTransform","localMatrix","index","Number","valid","getRotation","getTranslation","localQuaternion","localPosition","UpdateInstance","SetParentTransform","UpdateTurretTransforms","parentTransform","Update","context","UpdateSyncronous","UpdateAsyncronous","deltaTime","GetDeltaT","deltaT","pair","locator","GetLocator","UpdateSynchronous","GetStartPosition","isVisible","localToWorldTransform","parentData","ArrayBuffer","isView","isArray","trackingPosition","invert","hook","UpdateTrackingPose","source","call","SetEndPosition","GetTargetPosition","targetPosition","GetPerMuzzleEffectCount","SetMuzzleTransform","SetDisplayDestObject","ShowDestObject","UpdateAsynchronous","GetRenderables","UpdateVisibility","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","ShadowCaster","Register","UnRegisterComponents","UnRegister","HasTransparentBatches","GetBatches","batches","batchType","perObjectData","_reason","TriBatchType","TRIBATCHTYPE_OPAQUE","batch","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","SetPerObjectData","instanceCount","Commit","GetSortValue","IsCastingShadow","cameraFrustum","shadowFrustum","renderReason","sizeInShadowOut","Tr2RenderReason","TR2RENDERREASON_NORMAL","TR2RENDERREASON_REFLECTION","sizeInShadow","IsVisible","GetSizeInShadow","GetShadowBatches","_shadowPixelSize","GetPerObjectData","accumulator","Alloc","vs","ps","parent","SetAndTranspose","Set","boneCount","DEFAULT_BONES_PER_TURRET","SetIndex","shipData","clipCenter","clipSphereCenter","clipRadiusSq","clipRadius2Sq","SH_COEFFICIENT_COUNT","shLighting","subarray","GetShadowPerObjectData","#setupFiringState","random","effectTotalTime","GetFiringDuration","effectPeakTime","GetFiringPeakTime","fireName","floor","forEach","_turret","StartFireAtLocator","ambient","SetControllerVariableOnInstance","#getClosestTurretAndLocator","closestAngle","FindClosestLocator","normalize","angle","dot","randomLocator","FindRandomValidLocator","turretTransform","#playAll","animation","loop","delay","duration","#playTurret","PlayAnimation","controller","#ambientEffect","#setAmbientState","#normalizeTurret","clone","canFireWhenHidden","ImpactBehaviour","Object","freeze","LOD_INVALID","LOD_EMPTY","LOD_HIGHEST","SystemBones","STATE_INVALID","constructor"],"mappings":"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"}