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

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 (929) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/utils/bytes.js +22 -4
  80. package/dist/global/utils/bytes.js.map +1 -1
  81. package/dist/global/utils/checksum.js +80 -0
  82. package/dist/global/utils/checksum.js.map +1 -0
  83. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  84. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  85. package/dist/global/utils/errors/CjsError.js +21 -52
  86. package/dist/global/utils/errors/CjsError.js.map +1 -1
  87. package/dist/global/utils/errors/abort.js +1 -1
  88. package/dist/global/utils/errors/abort.js.map +1 -1
  89. package/dist/global/utils/errors/index.js +2 -1
  90. package/dist/global/utils/errors/index.js.map +1 -1
  91. package/dist/global/utils/index.js +4 -2
  92. package/dist/global/utils/index.js.map +1 -1
  93. package/dist/index.js +95 -35
  94. package/dist/index.js.map +1 -1
  95. package/dist/input/Tr2MainWindow.js +7 -9
  96. package/dist/input/Tr2MainWindow.js.map +1 -1
  97. package/dist/resource/CjsResMan.js +33 -39
  98. package/dist/resource/CjsResMan.js.map +1 -1
  99. package/dist/resource/CjsResource.js +19 -5
  100. package/dist/resource/CjsResource.js.map +1 -1
  101. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  102. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  103. package/dist/resource/audio/CjsAudioRes.js +4 -5
  104. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  105. package/dist/resource/format/CjsBitReader.js +263 -0
  106. package/dist/resource/format/CjsBitReader.js.map +1 -0
  107. package/dist/resource/format/CjsByteReader.js +130 -125
  108. package/dist/resource/format/CjsByteReader.js.map +1 -1
  109. package/dist/resource/format/CjsFormat.js +11 -4
  110. package/dist/resource/format/CjsFormat.js.map +1 -1
  111. package/dist/resource/format/CjsFormatError.js +37 -1
  112. package/dist/resource/format/CjsFormatError.js.map +1 -1
  113. package/dist/resource/format/CjsResourceProbe.js +41 -37
  114. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  115. package/dist/resource/format/carbonRecordGuard.js +33 -0
  116. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  117. package/dist/resource/format/imageSignatures.js +202 -0
  118. package/dist/resource/format/imageSignatures.js.map +1 -0
  119. package/dist/resource/format/index.js +2 -1
  120. package/dist/resource/format/index.js.map +1 -1
  121. package/dist/resource/format/jsonPolicies.js +180 -0
  122. package/dist/resource/format/jsonPolicies.js.map +1 -0
  123. package/dist/resource/formats/black/core/helpers.js +18 -29
  124. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  125. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  126. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  127. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  128. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  129. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  130. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  132. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  133. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  134. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  136. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  138. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  140. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  142. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  144. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  145. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  146. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  147. package/dist/resource/formats/cmf/core/binary.js +54 -60
  148. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  149. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  150. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  151. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  152. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  153. package/dist/resource/formats/dds/core/bc7.js +28 -24
  154. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  155. package/dist/resource/formats/dds/core/helpers.js +7 -133
  156. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  157. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  158. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  159. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  160. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  162. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  163. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  164. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  166. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  167. package/dist/resource/formats/flac/core/helpers.js +1 -62
  168. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  170. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  171. package/dist/resource/formats/gif/core/helpers.js +1 -63
  172. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  174. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  175. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  176. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  178. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  179. package/dist/resource/formats/gr2/core/container.js +1 -10
  180. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  181. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  182. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/shared.js +193 -189
  184. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  185. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  186. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  187. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  188. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  189. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  190. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  191. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  192. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  194. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  195. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  196. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  198. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  199. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  200. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  202. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  203. package/dist/resource/formats/obj/core/helpers.js +93 -115
  204. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  206. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  207. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  208. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  210. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  211. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  212. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  213. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  214. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  215. package/dist/resource/formats/png/core/helpers.js +13 -152
  216. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  217. package/dist/resource/formats/png/core/writer.js +3 -27
  218. package/dist/resource/formats/png/core/writer.js.map +1 -1
  219. package/dist/resource/formats/red/core/helpers.js +19 -29
  220. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  222. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/resource/formats/stl/core/helpers.js +44 -66
  224. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  226. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  227. package/dist/resource/formats/tga/core/helpers.js +7 -153
  228. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  230. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  231. package/dist/resource/formats/vta/core/helpers.js +1 -17
  232. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  234. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  235. package/dist/resource/formats/wav/core/helpers.js +1 -15
  236. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  238. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  239. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
  240. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  241. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  242. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  243. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  244. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  245. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  246. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  247. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  248. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  249. package/dist/resource/formats/webm/core/helpers.js +1 -73
  250. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  251. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  252. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  253. package/dist/resource/formats/webp/core/helpers.js +1 -62
  254. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  255. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  256. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  257. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  258. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  259. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  260. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  261. package/dist/resource/formats/wem/core/helpers.js +1 -15
  262. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  263. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  264. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  265. package/dist/resource/geometry/MeshDecalData.js +23 -25
  266. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  267. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  268. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  272. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  273. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  274. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  276. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  278. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  280. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  281. package/dist/resource/geometry/TriJointBinding.js +16 -24
  282. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  283. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  284. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  285. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  286. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  287. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  288. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  289. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  290. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  291. package/dist/resource/index.js +1 -1
  292. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  293. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  294. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  295. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  296. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  297. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  299. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  301. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  303. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  305. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  307. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  309. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  310. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  311. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  312. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  313. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  314. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  315. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  319. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  321. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  323. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  325. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  327. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  329. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  337. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  338. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  339. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  340. package/dist/resource/worker/protocol.js +18 -1
  341. package/dist/resource/worker/protocol.js.map +1 -1
  342. package/dist/sof/EveSOF.js +2 -222
  343. package/dist/sof/EveSOF.js.map +1 -1
  344. package/dist/sof/SofDocumentBuilder.js +205 -0
  345. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  346. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  347. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  348. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  349. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  350. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  351. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  352. package/dist/sof/faction/index.js +3 -1
  353. package/dist/sof/faction/index.js.map +1 -1
  354. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  355. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  356. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  357. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  358. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  359. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  360. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  361. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  362. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  363. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  364. package/dist/sof/generic/index.js +5 -1
  365. package/dist/sof/generic/index.js.map +1 -1
  366. package/dist/sof/index.js +23 -7
  367. package/dist/sof/index.js.map +1 -1
  368. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  369. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  370. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  371. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  372. package/dist/sof/pattern/index.js +2 -1
  373. package/dist/sof/pattern/index.js.map +1 -1
  374. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  375. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  376. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  377. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  378. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  379. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  380. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  381. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  382. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  383. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  384. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  385. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  386. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  387. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  388. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  389. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  390. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  391. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  392. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  393. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  395. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  398. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  399. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  400. package/dist/sof/shared/index.js +13 -4
  401. package/dist/sof/shared/index.js.map +1 -1
  402. package/dist/sof/sofDocumentValues.js +33 -0
  403. package/dist/sof/sofDocumentValues.js.map +1 -0
  404. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  405. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  406. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  407. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  408. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  409. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  410. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  411. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  412. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  413. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  414. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  415. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  416. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  417. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  418. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  419. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  420. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  421. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  424. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  425. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  426. package/dist/trinity/controllers/index.js +5 -2
  427. package/dist/trinity/controllers/index.js.map +1 -1
  428. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  429. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  430. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  431. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  432. package/dist/trinity/core/ITr2Updateable.js +2 -1
  433. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  434. package/dist/trinity/core/Tr2Blitter.js +6 -3
  435. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  436. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  437. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  438. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  439. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  440. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  441. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  442. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  443. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  444. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  445. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  446. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  447. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  448. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  449. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  450. package/dist/trinity/core/Tr2Renderer.js +146 -1
  451. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  452. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  453. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  454. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  455. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  456. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  457. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  458. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  459. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  460. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  461. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  462. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  463. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  464. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  465. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  466. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  467. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  468. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  469. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  470. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  471. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  472. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  473. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  474. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  475. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  476. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  477. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  478. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  479. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  480. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  481. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  482. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  483. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  484. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  485. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  486. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  487. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  488. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  489. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  490. package/dist/trinity/core/index.js +42 -15
  491. package/dist/trinity/core/index.js.map +1 -1
  492. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  493. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  494. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  495. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  496. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  497. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  498. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  499. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  500. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  501. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  502. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  503. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  504. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  505. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  506. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  507. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  508. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  509. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  510. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  511. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  512. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  513. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  514. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  515. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  516. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  517. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  519. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  520. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  521. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  522. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  547. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  549. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  550. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  551. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  552. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  553. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  573. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  575. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  577. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  578. package/dist/trinity/core/variable/TriVariable.js +83 -83
  579. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  580. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  581. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  582. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  583. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  584. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  585. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  586. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  587. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  588. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  589. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  590. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  591. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  592. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  593. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  594. package/dist/trinity/eve/IEveTransform.js +2 -1
  595. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  596. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  597. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  598. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  599. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  600. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  601. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  602. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  603. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  604. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  605. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  606. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  607. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  608. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  609. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  610. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  611. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  612. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  613. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  614. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  615. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  616. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  617. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  619. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  621. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  622. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  623. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  624. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  625. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  626. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  627. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  628. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  629. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  631. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  632. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  633. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  634. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  635. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  636. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  639. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  640. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  641. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  643. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  645. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  647. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  648. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  649. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  650. package/dist/trinity/eve/index.js +10 -4
  651. package/dist/trinity/eve/index.js.map +1 -1
  652. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  653. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  654. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  655. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  656. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  657. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  658. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  659. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  660. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  661. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  662. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  663. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  664. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  665. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  666. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  667. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  668. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  669. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  670. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  671. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  672. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  673. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  674. package/dist/trinity/generated/index.js +0 -1
  675. package/dist/trinity/generated/index.js.map +1 -1
  676. package/dist/trinity/generated/trinityCore/index.js +0 -1
  677. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  678. package/dist/trinity/index.js +59 -23
  679. package/dist/trinity/index.js.map +1 -1
  680. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  681. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  682. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  683. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  684. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  685. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  686. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  687. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  688. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  689. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  690. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  691. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  692. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  693. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  694. package/dist/trinity/particle/index.js +2 -1
  695. package/dist/trinity/particle/index.js.map +1 -1
  696. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  697. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  698. package/dist/trinity/shader/Tr2Effect.js +131 -58
  699. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  700. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  701. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  702. package/dist/trinity/shader/Tr2Material.js +21 -4
  703. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  704. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  705. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  706. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  707. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  708. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  709. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  710. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  711. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  712. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  713. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  714. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  715. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  716. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  717. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  718. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  719. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  720. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  721. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  724. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  728. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  729. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  730. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  731. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  732. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  733. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  734. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  735. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  736. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  737. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  740. package/dist/trinityal/index.js +22 -9
  741. package/dist/trinityal/index.js.map +1 -1
  742. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  743. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  744. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  745. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  746. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  747. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  749. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  751. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  752. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  753. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  754. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  755. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  756. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  757. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  758. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  759. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  761. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  762. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  763. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  764. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  765. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  766. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  767. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  769. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  771. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  772. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  773. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  774. package/dist/trinityal/stub/index.js +8 -4
  775. package/dist/trinityal/stub/index.js.map +1 -1
  776. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  777. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  778. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  779. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  780. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  781. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  782. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  783. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  785. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  787. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  789. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  791. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  793. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  795. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  796. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  797. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  799. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  800. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  801. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  802. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  803. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  804. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  807. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  813. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  815. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  817. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  821. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  822. package/dist/trinityal/webgpu/internal.js +12 -11
  823. package/dist/trinityal/webgpu/internal.js.map +1 -1
  824. package/docs/audio/reference/classes/trinity.md +44 -34
  825. package/docs/character/architecture.md +276 -0
  826. package/docs/character/reference/character-appearance-plans.md +30 -66
  827. package/docs/character/reference/prepared-libraries.md +14 -30
  828. package/docs/global/reference/api.md +2 -1
  829. package/docs/global/reference/classes/README.md +53 -71
  830. package/docs/global/reference/classes/dropped.md +16 -0
  831. package/docs/resource/README.md +19 -15
  832. package/docs/resource/architecture.md +9 -2
  833. package/docs/resource/concepts/format-capabilities.md +124 -80
  834. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  835. package/docs/resource/formats/README.md +230 -224
  836. package/docs/resource/formats/bitknit2.md +221 -0
  837. package/docs/resource/formats/carbon-effect-container.md +184 -269
  838. package/docs/resource/formats/gr2.md +6 -1
  839. package/docs/resource/formats/schemabound.md +28 -48
  840. package/docs/resource/formats/static.md +70 -97
  841. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  842. package/docs/resource/formats/webgl/decl-io.md +165 -256
  843. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  844. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  845. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  846. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  847. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  848. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
  849. package/docs/resource/reference/classes/core.md +256 -236
  850. package/docs/resource/reference/classes/formats.md +1668 -1672
  851. package/docs/resource/reference/workers.md +4 -2
  852. package/docs/sof/reference/classes/core.md +1 -1
  853. package/docs/sof/reference/classes/faction.md +2 -2
  854. package/docs/sof/reference/classes/generic.md +4 -4
  855. package/docs/sof/reference/classes/pattern.md +1 -1
  856. package/docs/sof/reference/classes/shared.md +10 -10
  857. package/docs/trinity/architecture.md +55 -44
  858. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  859. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  860. package/docs/trinity/reference/classes/dropped.md +0 -189
  861. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  862. package/docs/trinity/reference/classes/generated.md +0 -10
  863. package/docs/trinity/reference/classes/particle.md +2 -2
  864. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  865. package/docs/trinity/reference/implementation-status.md +50 -75
  866. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  867. package/docs/trinityal/reference/classes/README.md +77 -27
  868. package/docs/trinityal/reference/classes/dropped.md +82 -0
  869. package/docs/trinityal/webgpu/README.md +3 -1
  870. package/docs/trinityal/webgpu/architecture.md +121 -228
  871. package/docs/trinityal/webgpu/reference/api.md +5 -5
  872. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  873. package/format-notices/gr2/NOTICE +18 -12
  874. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  875. package/package.json +4 -1
  876. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  877. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  878. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  879. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  880. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  881. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  882. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  883. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  884. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  885. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  886. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  887. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  888. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  889. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  890. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  891. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  892. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  893. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  894. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  895. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  896. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  897. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  898. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  899. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  900. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  901. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  902. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  903. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  904. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  905. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  906. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  907. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  908. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  909. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  910. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  911. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  912. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  913. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  914. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  915. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  916. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  917. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  918. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  919. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  920. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  921. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  922. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  923. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EveSOF.js","sources":["../../../src/sof/EveSOF.js"],"sourcesContent":["import { normalizeResourcePath } from \"#utils/path\";\n\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.h\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.cpp\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp\nimport { CjsModel } from \"#model\";\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { TriBatchType } from \"#consts/graphics\";\nimport { CjsBlackFormat } from \"#resource/formats/black\";\nimport { EveSOFDataHullDecalSetItem } from \"./hull/EveSOFDataHullDecalSetItem.js\";\nimport { EveSOFDataHullBanner } from \"./hull/EveSOFDataHullBanner.js\";\nimport { EveSOFDataHullBannerSetItem } from \"./hull/EveSOFDataHullBannerSetItem.js\";\nimport { EveSOFDataHullHazeSet } from \"./hull/EveSOFDataHullHazeSet.js\";\nimport { EveSOFDataHullLightSetItem } from \"./hull/EveSOFDataHullLightSetItem.js\";\nimport { EveSOFDataHullPlaneSet } from \"./hull/EveSOFDataHullPlaneSet.js\";\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\nimport { EveSOFDataInstancedMesh } from \"./shared/EveSOFDataInstancedMesh.js\";\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\nimport { CjsCarbonDocument } from \"#model/document\";\nimport { EveSOFDNA } from \"./EveSOFDNA.js\";\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\nimport { CjsSofLibraryBuilder } from \"./CjsSofLibraryBuilder.js\";\nimport { planSofLayouts } from \"./layoutPlanner.js\";\n\n\nconst BUILD_CLASS_TYPES = Object.freeze({\n [EveSOFDataHull.BuildClass.BUILDCLASS_SHIP]: \"EveShip2\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_MOBILE]: \"EveMobile\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_STATIONARY]: \"EveStation2\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_SWARM]: \"EveSwarm\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION]: \"EveMobile\"\n});\n\nconst SPACE_OBJECT_ROOT_KINDS = new Set([\n \"EveSpaceObject2\",\n \"EveShip2\",\n \"EveMobile\",\n \"EveStation2\",\n \"EveSwarm\"\n]);\n\nconst DECAL_EFFECT_NAMES = Object.freeze([\n \"decalv5.fx\",\n \"decalcounterv5.fx\",\n \"decalholev5.fx\",\n \"decalcylindricv5.fx\",\n \"decalglowcylindricv5.fx\",\n \"decalglowv5.fx\",\n \"decalv5.fx\"\n]);\n\nconst BANNER_EXTERNAL_PARAMETER_NAMES = Object.freeze([\n \"AllianceLogoResPath\",\n \"CorpLogoResPath\",\n \"CeoPortraitResPath\",\n \"VerticalBannerResPath\",\n \"HorizontalBannerResPath\",\n \"TargetSystemAllianceLogoResPath\",\n \"TargetSystemVerticalBannerResPath\",\n \"TargetSystemHorizontalBannerResPath\",\n \"TargetSystemInfo0ResPath\",\n \"TargetSystemInfo1ResPath\",\n \"TargetSystemInfo2ResPath\",\n \"TargetSystemInfo3ResPath\",\n \"TargetSystemInfo4ResPath\",\n \"TargetSystemStatusResPath\",\n \"CurrentSystemAllianceLogoResPath\",\n \"CurrentSystemVerticalBannerResPath\",\n \"CurrentSystemHorizontalBannerResPath\",\n \"PublicityPosterResPath\",\n \"PublicityPortraitResPath\",\n \"RecruitmentInformation0ResPath\",\n \"RecruitmentInformation1ResPath\",\n \"RecruitmentInformation2ResPath\",\n \"RecruitmentInformation3ResPath\",\n \"RecruitmentInformation4ResPath\"\n]);\n\nconst MIN_MESH_SCREEN_SIZE = 2.5;\n\n// Tr2Lod value stamped on distortion areas after fill (EveSOF.cpp:2149-2153);\n// The SOF layer stays free of a Trinity-layer import, so the enum value from\n// Tr2LodResource.h is mirrored here.\nconst TR2_LOD_HIGH = 2;\n\n// Carbon validates every resolved resource root against the interface its\n// role requires before attaching it: children must cast to EveTransform or\n// IEveSpaceObjectChild (EveSOF.cpp:1786-1844,1949-2004), controllers load as\n// ITr2Controller (2014-2033), and model curves load as ITriQuaternionFunction\n// / ITriVectorFunction (1668-1691). The GPU-free builder has no class\n// registry, so conformance comes from the descriptor's explicit `implements`\n// claim or from these Carbon-source kind inventories.\nconst CHILD_TRANSFORM_KINDS = new Set([\n \"EveTransform\",\n \"EveRootTransform\",\n \"EveMissileWarhead\"\n]);\n\nconst SPACE_OBJECT_CHILD_KINDS = new Set([\n \"EveChildAudio\",\n \"EveChildBehaviorSystem\",\n \"EveChildBulletStorm\",\n \"EveChildCloud\",\n \"EveChildCloud2\",\n \"EveChildContainer\",\n \"EveChildEffectPropagator\",\n \"EveChildExplosion\",\n \"EveChildFogVolume\",\n \"EveChildInstanceContainer\",\n \"EveChildInstanceMeshRenderer\",\n \"EveChildInstancedMeshes\",\n \"EveChildLightingOverride\",\n \"EveChildLineSet\",\n \"EveChildLink\",\n \"EveChildMesh\",\n \"EveChildParticleSphere\",\n \"EveChildParticleSystem\",\n \"EveChildPlug\",\n \"EveChildPostProcessVolume\",\n \"EveChildProceduralContainer\",\n \"EveChildQuad\",\n \"EveChildRef\",\n \"EveChildSmartLightSet\",\n \"EveChildSocket\",\n \"EveChildSpherePin\",\n \"EveEllipseSet\"\n]);\n\nconst OBJECT_RESOURCE_ROLE_GATES = Object.freeze({\n controller: {\n interfaceName: \"ITr2Controller\",\n kinds: new Set([\n \"Tr2Controller\",\n \"Tr2ControllerReference\",\n \"Tr2TimelineController\"\n ])\n },\n modelRotationCurve: {\n interfaceName: \"ITriQuaternionFunction\",\n kinds: new Set([\n \"Tr2CurveConstant\",\n \"Tr2CurveEulerRotation\",\n \"Tr2CurveEulerRotationExpression\",\n \"Tr2CurveQuaternion\",\n \"Tr2CurveRandomAxisRotation\",\n \"Tr2QuaternionLerpCurve\",\n \"Tr2RotationAdapter\",\n \"TriRigidOrientation\"\n ])\n },\n modelTranslationCurve: {\n interfaceName: \"ITriVectorFunction\",\n kinds: new Set([\n \"EveLocalPositionCurve\",\n \"EveRemotePositionCurve\",\n \"Tr2CurveCombiner\",\n \"Tr2CurveConstant\",\n \"Tr2CurveVector3\",\n \"Tr2CurveVector3Expression\",\n \"Tr2CurveVector3Lerp\",\n \"Tr2FollowCurve\",\n \"Tr2TranslationAdapter\",\n \"Tr2VectorFunctionModifier\",\n \"TriVectorSequencer\"\n ])\n }\n});\n\n// Sentinel returned when a resolved child root fails Carbon's type gate; the\n// callers mirror Carbon's early return rather than skipping one item.\nconst WRONG_TYPE_CHILD = Symbol(\"wrong-type-child\");\n\n// A model-values record may legitimately own a `$ref` field: only `_ref` is\n// reserved by that format. Mark such records while they cross the deprecated\n// document intermediate so its private reference walker does not reinterpret\n// their data. Symbols survive the in-process shallow normalization but never\n// appear in either JSON output shape.\nconst VALUES_LITERAL_DOLLAR_REF = Symbol(\"values-literal-dollar-ref\");\n\nfunction descriptorClaimsInterface(descriptor, interfaceName)\n{\n return Array.isArray(descriptor.implements) && descriptor.implements.includes(interfaceName);\n}\n// EveChildInheritProperties field order (src/trinity is the authority for\n// these names); dna.GetColorSet() is index-aligned with this Carbon color-slot\n// order, so the authored color set projects onto named, persisted fields.\nconst INHERIT_COLOR_PROPERTIES = Object.freeze([\n \"Primary\",\n \"Secondary\",\n \"Tertiary\",\n \"Black\",\n \"White\",\n \"Yellow\",\n \"Orange\",\n \"Red\",\n \"Blue\",\n \"Green\",\n \"Cyan\",\n \"Fire\",\n \"Hull\",\n \"Glass\",\n \"Reactor\",\n \"Darkhull\",\n \"Booster\",\n \"Killmark\",\n \"PrimaryLight\",\n \"SecondaryLight\",\n \"TertiaryLight\",\n \"WhiteLight\",\n \"PrimaryHologram\",\n \"SecondaryHologram\",\n \"TertiaryHologram\",\n \"State0\",\n \"State1\",\n \"State2\",\n \"State3\",\n \"StateVulnerable\",\n \"StateInvulnerable\",\n \"PrimaryForcefield\",\n \"SecondaryForcefield\",\n \"PrimaryBanner\",\n \"PrimaryFx\",\n \"SecondaryFx\",\n \"PrimarySpotlight\",\n \"SecondarySpotlight\",\n \"TertiarySpotlight\",\n \"PrimaryBillboard\",\n \"PrimaryWarpFx\",\n \"PrimaryAttackFx\",\n \"PrimarySiegeFx\",\n \"PrimaryDockedFx\"\n]);\n\nconst SWARM_BEHAVIOR_FIELD_NAMES = Object.freeze([\n \"mass\",\n \"speedMultiplier\",\n \"speedMinimum\",\n \"maxDistance0\",\n \"maxDistance1\",\n \"maxTime\",\n \"timeMultiplier\",\n \"agility\",\n \"speed0\",\n \"speed1\",\n \"weightFormation\",\n \"weightCohesion\",\n \"weightSeparation\",\n \"weightAlign\",\n \"weightWander\",\n \"weightAnchor\",\n \"anchorRadius0\",\n \"anchorRadius1\",\n \"maxDeceleration\",\n \"separationDistance\",\n \"formationDistance\",\n \"wanderFluctuation\",\n \"wanderDistance\",\n \"wanderRadius\"\n]);\n\nconst SOF_INSTANCE_LAYOUT = Object.freeze([\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 0, type: \"FLOAT32_4\", name: \"transform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 1, type: \"FLOAT32_4\", name: \"transform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 2, type: \"FLOAT32_4\", name: \"transform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 3, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 4, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 5, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 6, type: \"BYTE_4\", name: \"boneIndex\" })\n]);\n\n/** Carbon-first SOF builder whose sole supported public output is a GPU-free model-values graph. */\n@type.define({ className: \"EveSOF\", family: \"eve\" })\nexport class EveSOF extends CjsModel\n{\n\n @io.readwrite\n @type.boolean\n allowFileCaching = true;\n\n // Carbon registers this as the global TRI setting \"alphaCutoutShadowsEnabled\"\n // (EveSOF.cpp:61-62, default false); decal (alpha-cutout) areas take their\n // castsShadows state from it. Injected here per builder instead of a global.\n @io.readwrite\n @type.boolean\n alphaCutoutShadowsEnabled = false;\n\n // Carbon registers this as the global TRI setting \"volumetricTrailPath\"\n // (EveSOF.cpp:64-65, default empty); the booster trail set takes its mesh\n // resource path from it. Injected here per builder instead of a global.\n @io.readwrite\n @type.string\n volumetricTrailPath = \"\";\n\n // Carbon initializes each light's startTime from the current frame time,\n // phase-offsetting noise flicker by when the object was built. Injected\n // here per builder (default 0 keeps builds deterministic); the engine\n // passes its clock when it wants Carbon's de-synced flicker.\n @io.readwrite\n @type.float64\n buildTime = 0;\n\n @io.read\n @type.objectRef(\"EveSOFDataMgr\")\n dataMgr = new EveSOFDataMgr();\n\n @io.readwrite\n @type.boolean\n editorMode = false;\n\n #resourceExists = null;\n\n #childResourceResolver = null;\n\n #objectResourceResolver = null;\n\n #existingFilesCache = new Map();\n\n #asyncResources = Object.freeze({ getObject: null, exists: null });\n\n #dataPath = \"\";\n\n #dataLoadOperations = new Map();\n\n #sofLibraryBuilder = null;\n\n // Build-scope counterpart of Carbon's CCP_LOGERR sites: records in\n // layoutPlanner diagnostic shape ({ code, ...context }), reset by each\n // every values or deprecated document build and readable through\n // GetBuildDiagnostics().\n #buildDiagnostics = [];\n\n /** Add standalone SOF configuration or accept CjsLibrary topic forwarding. */\n Register(options = {})\n {\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"EveSOF.Register options must be an object\");\n }\n\n if (Object.prototype.hasOwnProperty.call(options, \"dataPath\"))\n {\n this.#dataPath = normalizeResourcePath(options.dataPath);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"resources\"))\n {\n const resources = options.resources ?? {};\n if (typeof resources !== \"object\" || Array.isArray(resources))\n {\n throw new TypeError(\"EveSOF resources must be an object or null\");\n }\n if (resources.getObject !== undefined && resources.getObject !== null && typeof resources.getObject !== \"function\")\n {\n throw new TypeError(\"EveSOF resources.getObject must be a function or null\");\n }\n if (resources.exists !== undefined && resources.exists !== null && typeof resources.exists !== \"function\")\n {\n throw new TypeError(\"EveSOF resources.exists must be a function or null\");\n }\n const getObject = Object.hasOwn(resources, \"getObject\")\n ? resources.getObject ?? null\n : this.#asyncResources.getObject;\n const exists = Object.hasOwn(resources, \"exists\")\n ? resources.exists ?? null\n : this.#asyncResources.exists;\n if (exists !== this.#asyncResources.exists) this.#existingFilesCache.clear();\n this.#asyncResources = {\n getObject,\n exists\n };\n }\n if (Object.prototype.hasOwnProperty.call(options, \"lazyData\"))\n {\n const lazyData = options.lazyData;\n if (lazyData === false || lazyData === null)\n {\n this.#sofLibraryBuilder = null;\n }\n else if (lazyData instanceof CjsSofLibraryBuilder)\n {\n this.SetSofLibraryBuilder(lazyData);\n }\n else\n {\n if (lazyData !== true && (!lazyData || typeof lazyData !== \"object\" || Array.isArray(lazyData)))\n {\n throw new TypeError(\"EveSOF lazyData must be true, false, null, a CjsSofLibraryBuilder, or builder options.\");\n }\n const builderOptions = lazyData === true ? {} : lazyData;\n const source = builderOptions.source ?? ((path, context) =>\n {\n const getObject = this.#asyncResources.getObject;\n if (!getObject)\n {\n throw new Error(\"EveSOF lazyData requires resources.getObject or a source function.\");\n }\n return getObject(path, { ...context, output: \"runtime\" });\n });\n this.SetSofLibraryBuilder(new CjsSofLibraryBuilder({\n ...builderOptions,\n dataMgr: this.dataMgr,\n source\n }));\n }\n }\n if (Object.prototype.hasOwnProperty.call(options, \"allowFileCaching\"))\n {\n this.allowFileCaching = Boolean(options.allowFileCaching);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"alphaCutoutShadowsEnabled\"))\n {\n this.alphaCutoutShadowsEnabled = Boolean(options.alphaCutoutShadowsEnabled);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"volumetricTrailPath\"))\n {\n this.volumetricTrailPath = String(options.volumetricTrailPath ?? \"\");\n }\n if (Object.prototype.hasOwnProperty.call(options, \"buildTime\"))\n {\n this.buildTime = Number(options.buildTime ?? 0);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"resFileIndex\"))\n {\n // The resfileindex is the synchronous existence oracle Carbon gets from\n // its file system: authored res paths either appear in the index or do\n // not. Texture resPathInsert selection needs only this membership test,\n // so providing the index keeps the sync build pure while matching\n // Carbon's existence-driven path rewriting. Rich tool-owned indexes are\n // adapted to this list/predicate boundary by their composition layer.\n const index = options.resFileIndex;\n if (index === null) this.SetResourceExistsResolver(null);\n else if (Array.isArray(index))\n {\n // The canonical shape: a plain list of res file names, from wherever\n // the caller got them. Existence is case-insensitive membership,\n // matching Carbon's file-system semantics.\n const names = new Set(index.map(name => String(name ?? \"\").toLowerCase()));\n this.SetResourceExistsResolver(path => names.has(String(path ?? \"\").toLowerCase()));\n }\n else if (typeof index === \"function\") this.SetResourceExistsResolver(path => Boolean(index(path)));\n else if (index instanceof Set || index instanceof Map) this.SetResourceExistsResolver(path => index.has(path));\n else throw new TypeError(\"EveSOF resFileIndex must be an array of file names, a predicate, a Set, a Map, or null\");\n }\n if (Object.prototype.hasOwnProperty.call(options, \"editorMode\"))\n {\n this.editorMode = Boolean(options.editorMode);\n }\n return this;\n }\n\n /** Supplies the synchronous resource-existence probe used by texture inserts. */\n SetResourceExistsResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF resource existence resolver must be a function or null\");\n }\n this.#resourceExists = resolver === null ? null : path =>\n {\n const result = resolver(path);\n if (result && typeof result.then === \"function\")\n {\n throw new TypeError(\"EveSOF resource existence resolver must be synchronous\");\n }\n return result === true;\n };\n this.#existingFilesCache.clear();\n return this;\n }\n\n /**\n * Supplies Carbon's synchronous `.red` child-object compatibility boundary.\n *\n * The resolver receives `(redFilePath, context)` and returns either null, a\n * self-describing model-values root, `{ values, target?, implements?, raw? }`,\n * a local `{ kind, target, fields, raw }` descriptor, or\n * `{ document, root?, target?, implements?, raw? }` for a legacy complete\n * compatibility fragment consumed by the internal builder.\n *\n * Values fragments require `_type` on every model because the SOF layer does\n * not import the class library needed to infer an untagged nested model's\n * schema.\n * Target is `children` for an EveTransform root or `effectChildren` for an\n * IEveSpaceObjectChild root.\n */\n SetChildResourceResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF child resource resolver must be a function or null\");\n }\n this.#childResourceResolver = resolver;\n return this;\n }\n\n /** Supplies synchronous controller and model-curve values or legacy compatibility fragments. */\n SetObjectResourceResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF object resource resolver must be a function or null\");\n }\n this.#objectResourceResolver = resolver;\n return this;\n }\n\n /** Installs the nominal partial-catalog builder used by asynchronous DNA builds. */\n SetSofLibraryBuilder(builder)\n {\n if (builder !== null && !(builder instanceof CjsSofLibraryBuilder))\n {\n throw new TypeError(\"EveSOF library builder must be a CjsSofLibraryBuilder or null.\");\n }\n if (builder && builder.GetDataManager() !== this.dataMgr)\n {\n throw new TypeError(\"EveSOF library builder must update this factory's data manager.\");\n }\n this.#sofLibraryBuilder = builder;\n return this;\n }\n\n /** Returns the installed partial-catalog builder, or null. */\n GetSofLibraryBuilder()\n {\n return this.#sofLibraryBuilder;\n }\n\n /** Boots configured lazy generic data or the configured monolithic catalog. */\n async InitializeAsync(options = {})\n {\n if (this.#dataPath)\n {\n await this.LoadDataAsync(this.#dataPath);\n }\n else if (this.#sofLibraryBuilder)\n {\n await this.#sofLibraryBuilder.InitializeAsync(options.catalog ?? {});\n }\n return this;\n }\n\n /** Routes Carbon's resource load call through the SOF data manager. */\n @carbon.method\n @impl.implemented\n LoadData(filePath)\n {\n return this.dataMgr.LoadData(filePath);\n }\n\n /** Load SOF data through the configured promise-capable object resolver. */\n async LoadDataAsync(filePath = this.#dataPath)\n {\n const path = normalizeResourcePath(filePath);\n if (!path) throw new TypeError(\"EveSOF.LoadDataAsync requires a data path\");\n const getObject = this.#asyncResources.getObject;\n if (!getObject)\n {\n return this.dataMgr.LoadDataAsync(path);\n }\n\n const existing = this.#dataLoadOperations.get(path);\n if (existing) return existing;\n const operation = ResolveSofDependency(\n () => getObject(path, { role: \"sofData\", output: \"runtime\" }),\n path,\n \"sofData\",\n new Map()\n )\n .then(data => this.#sofLibraryBuilder\n ? (this.#sofLibraryBuilder.SetData(data), true)\n : this.dataMgr.SetData(data));\n this.#dataLoadOperations.set(path, operation);\n const clear = () =>\n {\n if (this.#dataLoadOperations.get(path) === operation) this.#dataLoadOperations.delete(path);\n };\n operation.then(clear, clear);\n return operation;\n }\n\n /** Creates and resolves one DNA instance against the loaded SOF library. */\n @carbon.method\n @impl.implemented\n CreateDna(dnaString)\n {\n const dna = new EveSOFDNA();\n dna.Setup(dnaString, this.dataMgr);\n return dna.IsValid() ? dna : null;\n }\n\n /**\n * Reports the visibility groups one DNA resolves, without building a graph.\n *\n * Visibility groups are how a faction turns hull attachment sets on and off,\n * so this answers which groups the selected hulls author, which the faction\n * declares, and therefore which sets a build emits. Carbon keeps only the\n * FNV1 hashes at runtime (EveSOFDataMgr.cpp:1301-1310) and has no equivalent\n * query; the names come from the catalog projection.\n */\n @carbon.method\n @impl.adapted\n GetDnaVisibilityGroups(dnaString)\n {\n const dna = this.CreateDna(dnaString);\n if (dna === null) return null;\n\n const declared = [...new Set(dna.factionData?.visibilityGroups ?? [])];\n const declaredSet = new Set(declared);\n const sets = [];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.hullDatas?.[hullIndex];\n if (!hull) continue;\n // A gated set is any hull collection whose records carry a visibility\n // group, so this follows the catalog rather than a second list of the\n // set kinds Carbon happens to gate today.\n for (const [field, values] of Object.entries(hull))\n {\n if (!Array.isArray(values)) continue;\n for (const value of values)\n {\n if (!value || value.visibilityGroupName === undefined) continue;\n const group = String(value.visibilityGroupName);\n sets.push({\n kind: field,\n // Carbon's projected sets keep the visibility hash, not the\n // authored set name, so name is present only where a projection\n // already carries one.\n name: String(value.name ?? \"\"),\n hullIndex,\n visibilityGroup: group,\n visible: declaredSet.has(group)\n });\n }\n }\n }\n\n const authored = [...new Set(sets.map(item => item.visibilityGroup))].sort();\n return {\n dna: String(dnaString),\n hulls: [...(dna.hullNames ?? [])],\n faction: String(dna.factionName ?? \"\"),\n race: String(dna.raceName ?? \"\"),\n declared: declared,\n authored: authored,\n visible: authored.filter(name => declaredSet.has(name)),\n hidden: authored.filter(name => !declaredSet.has(name)),\n sets: sets.map(item => item)\n };\n }\n\n /** Inspects one DNA selection without creating a graph or runtime values. */\n InspectDna(dnaString)\n {\n const dna = new EveSOFDNA();\n dna.Setup(dnaString, this.dataMgr);\n const buildable = dna.IsValid();\n const valid = buildable && dna.ValidateContent();\n return {\n buildable,\n valid,\n error: dna.GetParseError() ?? (valid ? null : \"invalid-content\")\n };\n }\n\n /** Performs Carbon's separate slow/offline DNA validation path. */\n @carbon.method\n @impl.implemented\n ValidateDNA(dnaString)\n {\n const dna = this.CreateDna(dnaString);\n return dna !== null && dna.ValidateContent();\n }\n\n /**\n * Builds the legacy `carbon.document` compatibility form.\n * @deprecated Use BuildValues(...).\n */\n @carbon.method\n @impl.implemented\n Build(hullName, factionName, raceName)\n {\n return this.BuildFromDNA(`${hullName}:${factionName}:${raceName}`);\n }\n\n /**\n * Promise-facing legacy `carbon.document` compatibility form.\n * @deprecated Use BuildValuesAsync(...).\n */\n BuildAsync(hullName, factionName, raceName, options = {})\n {\n return this.BuildFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /** Returns diagnostics from the most recent values build or deprecated document build. */\n GetBuildDiagnostics()\n {\n return this.#buildDiagnostics.map(entry => ({ ...entry }));\n }\n\n /** Builds the supported public model-values graph from three selections. */\n BuildValues(hullName, factionName, raceName, options = {})\n {\n return this.BuildValuesFromDNA(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /** Builds the supported public model-values graph asynchronously. */\n BuildValuesAsync(hullName, factionName, raceName, options = {})\n {\n return this.BuildValuesFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /**\n * Builds the supported public model-values graph for a DNA string.\n *\n * The result is one nested, JSON-serializable root value carrying `_type` on\n * polymorphic nodes and `_id`/`_ref` only where topology demands shared\n * identity. There is no node table, `kind`/`fields` record, or `raw` payload.\n *\n * **No class registry is required, and none should be passed.** The SOF layer\n * must remain independent of Trinity classes, and JSON does not need the\n * classes it names. Building this used to hydrate\n * a document into live runtime objects and re-export them, which made a\n * registry mandatory and relocated a Trinity-layer dependency onto every\n * caller rather than removing it. Anything that takes a registry here is the\n * round trip growing back.\n *\n * Constructing objects is the caller's option, performed on the result:\n * `RootClass.from(values)` against whatever classes that caller has. The\n * direction matters — objects are built *from* the values, never in order to\n * produce them.\n *\n * The output is sparse by default: it carries what SOF set, and class\n * defaults belong to whoever constructs. Pass `populateDefaults: true` to\n * overlay defaults from the class families the caller has registered with\n * `CjsSchema`; SOF still does not import those families. The audio emitter is\n * ordinary declared data, an `AudEmitter` node in\n * `TriObserverLocal.observer`, so either form is a complete rebuild source.\n */\n BuildValuesFromDNA(dnaString, options = {})\n {\n const document = this.BuildFromDNA(dnaString, options);\n return document ? EveSOF.projectDocumentValues(document, options) : null;\n }\n\n /**\n * Builds one modular hull into an existing space-object values graph.\n *\n * Carbon mutates a live EveSpaceObject2. The device-free runtime keeps the\n * same owner-first and boolean contract while composing through its canonical\n * model-values boundary; a live CjsModel owner is exported, composed, then\n * populated through SetValues without importing Trinity into SOF.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Runtime SOF remains Trinity-free, so Carbon's live EveSpaceObject2 mutation is performed through the caller-supplied model-values contract.\")\n BuildChild(owner, dnaString, partTag, transform = identityMatrix(), options = {})\n {\n const isModel = owner instanceof CjsModel;\n const source = isModel\n ? owner.GetValues({ refs: true, forceTypeTags: true })\n : owner;\n const values = this.BuildChildValues(source, dnaString, partTag, transform, options);\n if (!values) return false;\n\n if (isModel)\n {\n const hydrationOptions = options?.hydration ?? {};\n owner.SetValues(values, Object.hasOwn(options ?? {}, \"registry\")\n ? { ...hydrationOptions, registry: options.registry }\n : hydrationOptions);\n }\n else\n {\n replacePlainValues(owner, values);\n }\n return true;\n }\n\n /**\n * Returns a new space-object values graph with one Carbon modular hull\n * contribution. Invalid DNA returns null without changing the input graph.\n */\n @impl.custom\n @impl.reason(\"Provides the immutable values form needed to compose a modular graph before optional Trinity hydration.\")\n BuildChildValues(ownerValues, dnaString, partTag, transform = identityMatrix(), options = {})\n {\n if (!ownerValues || typeof ownerValues !== \"object\" || Array.isArray(ownerValues))\n {\n throw new TypeError(\"EveSOF.BuildChildValues requires a self-describing space-object values root\");\n }\n const dna = this.CreateDna(dnaString);\n if (!dna) return null;\n\n const tag = normalizePartTag(partTag);\n const placementTransform = normalizePlacementTransform(transform);\n dna.SetParentBoundingSphere(null);\n dna.SetParentShapeEllipsoidInfo(null);\n\n const document = new SofDocumentBuilder();\n const rootRef = document.ImportValuesRoot(ownerValues);\n const root = document.GetNode(rootRef.$ref);\n if (!SPACE_OBJECT_ROOT_KINDS.has(root?.kind))\n {\n throw new TypeError(`EveSOF.BuildChildValues requires an EveSpaceObject2 values root, received ${root?.kind ?? \"unknown\"}`);\n }\n document.AddRoot(\"default\", rootRef);\n ensureSpaceObjectBuildFields(root.fields);\n this.#BuildChildIntoDocument(\n document,\n root.fields,\n dna,\n tag,\n placementTransform,\n options?.layout ?? options ?? {}\n );\n return EveSOF.projectDocumentValues(document.ToJSON(), options);\n }\n\n /** Supported async values build; dependency collection currently reuses the deprecated internal document builder. */\n async BuildValuesFromDNAAsync(dnaString, options = {})\n {\n const document = await this.BuildFromDNAAsync(dnaString, options);\n return document ? EveSOF.projectDocumentValues(document, options) : null;\n }\n\n /**\n * Canonical pure-data instantiation: the decoded (or raw black) sof catalog\n * plus a plain list of res file names.\n *\n * The catalog is mandatory - a factory without its data is useless. The\n * file list is the sole build-time resource dependency (resPathInsert\n * existence); without it every insert lookup reports missing and texture\n * paths fall back to their base values, with a one-time console warning.\n * The factory never fetches, never parses index formats, and never touches\n * the network: callers hand it bytes or data they acquired however they\n * chose.\n *\n * (`Create`, not `from` - CjsModel.from is the schema hydration contract\n * and keeps its signature.)\n */\n static Create({ black, resFileIndex } = {})\n {\n if (black === undefined || black === null)\n {\n throw new TypeError(\"EveSOF.Create requires the sof catalog: data.black bytes or its decoded data\");\n }\n const sof = new EveSOF();\n const data = (black instanceof ArrayBuffer || ArrayBuffer.isView(black))\n ? CjsBlackFormat.readPayload(\n ArrayBuffer.isView(black)\n ? black.buffer.slice(black.byteOffset, black.byteOffset + black.byteLength)\n : black,\n {}\n ).object\n : black;\n if (!sof.dataMgr.SetData(data))\n {\n throw new TypeError(\"EveSOF.Create could not ingest the sof catalog\");\n }\n if (resFileIndex === undefined || resFileIndex === null)\n {\n console.warn(\"EveSOF.Create: no resFileIndex file list provided; resPathInsert existence checks will report missing and texture paths fall back to their base values.\");\n }\n else\n {\n sof.Register({ resFileIndex });\n }\n return sof;\n }\n\n /**\n * Internal structural projection from the builder's `carbon.document`\n * intermediate to supported plain model values.\n *\n * Both forms are JSON describing one graph, so this is a structural rewrite\n * and nothing more: a node table becomes a tree, `kind` becomes `_type`, and\n * `{ $ref }` becomes a `{ _ref }` back-reference paired with an `_id` on the\n * first occurrence. `fields` and `raw` are envelopes, so their contents move\n * onto the node itself.\n *\n * **No class library is imported, by requirement.** The SOF layer must remain\n * independent of Trinity classes, and sparse JSON never needs the classes it\n * names. The previous implementation\n * hydrated the document into live runtime objects and called `GetValues` on\n * the root, which made a class registry mandatory and pushed a Trinity-layer\n * dependency onto every caller. Constructing objects to serialize a graph we\n * already hold is a round trip; building objects from these values is a thing\n * a caller may choose to do afterwards, with `RootClass.from(values)`.\n *\n * The output is therefore sparse unless `options.populateDefaults` is true.\n * That opt-in runs `CjsSchema.applyDefaults` after the structural projection,\n * using only class families the caller has already imported and registered.\n * It does not construct or initialize the authored graph and does not add a\n * SOF-to-Trinity dependency.\n *\n * @internal The document form is not a supported consumer boundary.\n */\n static projectDocumentValues(document, options = {})\n {\n const normalized = CjsCarbonDocument.normalize(document);\n const nodeById = new Map(normalized.nodes.map(node => [Number(node.id), node]));\n const rootRef = normalized.roots?.[0]?.ref;\n\n if (!CjsCarbonDocument.isRef(rootRef))\n {\n throw new TypeError(\"EveSOF values projection requires a document with one root reference.\");\n }\n\n // A node reachable more than once is shared topology and needs an identity;\n // one reachable once is ordinary nesting and needs none. Counting first\n // keeps `_id` off the great majority of nodes.\n const visits = new Map();\n CountDocumentVisits(rootRef, nodeById, visits);\n\n const values = ProjectDocumentNode(rootRef, nodeById, visits, new Map(), { nextId: 1 });\n const populateDefaults = options?.populateDefaults ?? false;\n if (typeof populateDefaults !== \"boolean\")\n {\n throw new TypeError(\"EveSOF populateDefaults option must be a boolean.\");\n }\n return populateDefaults ? CjsSchema.applyDefaults(values) : values;\n }\n\n /**\n * Deprecated async `carbon.document` assembly used internally by\n * `BuildValuesFromDNAAsync`.\n *\n * Resolve selected child/object dependencies without converting the\n * deterministic synchronous builder into an async state machine.\n *\n * A collection build records only dependencies selected by the normal SOF\n * filters. They are fetched concurrently, then the unchanged builder runs a\n * second time against synchronous per-call caches.\n *\n * @deprecated Use BuildValuesFromDNAAsync(...).\n */\n async BuildFromDNAAsync(dnaString, options = {})\n {\n if (this.#sofLibraryBuilder)\n {\n await this.#sofLibraryBuilder.EnsureFromDNA(dnaString, options.catalog ?? {});\n }\n const getObject = this.#asyncResources.getObject;\n const exists = this.#asyncResources.exists;\n if (!getObject && !exists) return this.BuildFromDNA(dnaString, options);\n\n const documentRequests = new Map();\n const existenceRequests = new Map();\n const collectionPrevious = {\n child: this.#childResourceResolver,\n object: this.#objectResourceResolver,\n exists: this.#resourceExists,\n allowFileCaching: this.allowFileCaching\n };\n\n try\n {\n if (getObject)\n {\n this.#childResourceResolver = (path, context) =>\n {\n CollectSofRequest(documentRequests, path, \"carbon.document\", \"child\", context);\n return null;\n };\n this.#objectResourceResolver = (path, context) =>\n {\n CollectSofRequest(documentRequests, path, \"carbon.document\", context?.role || \"object\", context);\n return null;\n };\n }\n if (exists)\n {\n this.allowFileCaching = false;\n this.#resourceExists = path =>\n {\n CollectSofRequest(existenceRequests, path, \"boolean\", \"exists\");\n return false;\n };\n }\n this.BuildFromDNA(dnaString, options);\n }\n finally\n {\n this.#childResourceResolver = collectionPrevious.child;\n this.#objectResourceResolver = collectionPrevious.object;\n this.#resourceExists = collectionPrevious.exists;\n this.allowFileCaching = collectionPrevious.allowFileCaching;\n }\n\n const documentResults = new Map();\n const existenceResults = new Map();\n await Promise.all([\n ...[ ...documentRequests.values() ].map(request => ResolveSofDependency(\n () => getObject(request.path, { ...request.context, role: request.role, output: request.output }),\n request.path,\n request.role,\n documentResults,\n request.key\n )),\n ...[ ...existenceRequests.values() ].map(request => ResolveSofDependency(\n () => exists(request.path, { role: request.role, output: request.output }),\n request.path,\n request.role,\n existenceResults,\n request.key\n ))\n ]);\n\n const projectionPrevious = {\n child: this.#childResourceResolver,\n object: this.#objectResourceResolver,\n exists: this.#resourceExists,\n allowFileCaching: this.allowFileCaching\n };\n try\n {\n if (getObject)\n {\n this.#childResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\n this.#objectResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\n }\n if (exists)\n {\n this.allowFileCaching = false;\n this.#resourceExists = path => existenceResults.get(SofRequestKey(path, \"boolean\")) === true;\n }\n return this.BuildFromDNA(dnaString, options);\n }\n finally\n {\n this.#childResourceResolver = projectionPrevious.child;\n this.#objectResourceResolver = projectionPrevious.object;\n this.#resourceExists = projectionPrevious.exists;\n this.allowFileCaching = projectionPrevious.allowFileCaching;\n }\n }\n\n /** Returns Carbon's layout selection and transform work as a detached CPU plan. */\n @carbon.method\n @impl.adapted\n PlanLayoutFromDNA(dnaString, options = {})\n {\n const dna = this.CreateDna(dnaString);\n return dna ? planSofLayouts(dna, options ?? {}) : null;\n }\n\n /**\n * Emits the deprecated internal `carbon.document` assembly form, including\n * deterministic layouts. `BuildValuesFromDNA` currently projects this\n * intermediate to the supported output. Layout options may be passed\n * directly or under an `options.layout` object.\n *\n * @deprecated Use BuildValuesFromDNA(...).\n */\n @carbon.method\n @impl.implemented\n BuildFromDNA(dnaString, options = {})\n {\n this.#buildDiagnostics = [];\n const dna = this.CreateDna(dnaString);\n if (!dna) return null;\n\n const buildClass = dna.GetBuildClass();\n const typeName = BUILD_CLASS_TYPES[buildClass];\n if (!typeName) return null;\n const hull = dna.hullDatas[0];\n const sphere = dna.GetHullBoundingSphere() ?? [0, 0, 0, -1];\n const document = new SofDocumentBuilder();\n const isExtension = buildClass === EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION;\n const hasShipInterface = typeName === \"EveShip2\" || typeName === \"EveSwarm\";\n const swarmBehavior = typeName === \"EveSwarm\"\n ? createSwarmBehaviorFields(dna.GetGenericSwarmProperties())\n : null;\n const mesh = isExtension ? document.AddNode(\"Tr2Mesh\", {}) : this.CreateMesh(dna, document);\n if (!mesh) return null;\n const rootFields = {\n dna: dna.GetDnaString(),\n boundingSphereCenter: Array.from(sphere).slice(0, 3),\n boundingSphereRadius: Number(sphere[3] ?? -1),\n shapeEllipsoidCenter: isExtension ? [0, 0, 0] : arrayValue(hull.shapeEllipsoidCenter, [0, 0, 0]),\n shapeEllipsoidRadius: isExtension ? [-1, -1, -1] : arrayValue(hull.shapeEllipsoidRadius, [-1, -1, -1]),\n dynamicBoundingSphereEnabled: isExtension ? false : dna.DynamicBoundingSphereEnabled(),\n castShadow: isExtension ? false : dna.CastShadow(),\n isAnimated: isExtension ? false : dna.IsHullAnimated(),\n reflectionMode: isExtension ? 3 : dna.GetReflectionMode(),\n mesh,\n effectChildren: [],\n children: [],\n curveSets: [],\n modelRotationCurve: null,\n modelTranslationCurve: null,\n attachments: [],\n decals: [],\n impactOverlay: null,\n customMasks: [],\n lights: [],\n externalParameters: [],\n controllers: [],\n observers: [],\n locators: [],\n locatorSets: []\n };\n if (hasShipInterface) rootFields.boosters = null;\n if (swarmBehavior) Object.assign(rootFields, swarmBehavior);\n if (isExtension)\n {\n if (!this.SetupExtensionBuild(document, rootFields, dna, options?.layout ?? options ?? {})) return null;\n rootFields.inheritProperties = createInheritProperties(document, dna);\n const root = document.AddNode(typeName, rootFields);\n document.AddRoot(\"default\", root);\n return document.ToJSON();\n }\n this.SetupCustomMask(document, rootFields, dna);\n this.SetupDecalSets(document, rootFields, dna);\n this.SetupLocators(document, rootFields, dna);\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\n this.SetupAttachments(document, rootFields, dna);\n this.SetupImpactEffects(document, rootFields, dna);\n this.SetupEffects(document, rootFields, rootFields, dna, [identityMatrix()], EveSOFDataHull.BuildFilter.STANDALONE);\n this.SetupAudio(document, rootFields, dna, identityMatrix());\n this.SetupControllers(document, rootFields, dna, EveSOFDataHull.BuildFilter.STANDALONE);\n this.SetupModelCurves(document, rootFields, dna);\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\n this.SetupLayout(document, rootFields, dna, options?.layout ?? options ?? {});\n if (hasShipInterface) this.SetupBoosters(document, rootFields, dna);\n rootFields.inheritProperties = createInheritProperties(document, dna);\n const root = document.AddNode(typeName, rootFields);\n document.AddRoot(\"default\", root);\n return document.ToJSON();\n }\n\n /** Ports Carbon's modular child construction into an existing document root. */\n #BuildChildIntoDocument(document, rootFields, dna, partTag, transform, layoutOptions)\n {\n const hasChildEffects = dna.UsingSof6()\n ? dna.GetHullChildSets().length !== 0\n : dna.GetHullChildren().length !== 0;\n const hasControllers = dna.GetHullControllers().length !== 0;\n const hasAnimation = dna.IsHullAnimated();\n const hasEmitters = dna.GetHullSoundEmitters().length !== 0;\n const hasLayouts = dna.GetLayoutCount() > 0;\n let hasAttachments = false;\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n if (dna.GetHullSpriteSets(hullIndex).length !== 0 ||\n dna.GetHullSpotlightSets(hullIndex).length !== 0 ||\n dna.GetHullPlaneSets(hullIndex).length !== 0 ||\n dna.GetHullSpriteLineSets(hullIndex).length !== 0 ||\n dna.GetHullHazeSets(hullIndex).length !== 0 ||\n dna.GetHullBanners(hullIndex).length !== 0 ||\n dna.GetHullBannerSets(hullIndex).length !== 0 ||\n dna.GetHullLightSets(hullIndex).length !== 0)\n {\n hasAttachments = true;\n break;\n }\n }\n\n // hasBoosters forces the placement container, as in Carbon (EveSOF.cpp:360).\n const hasBoosters = dna.GetHullBoosterCount() > 0;\n const needsPlacementContainer = hasControllers || hasAnimation || hasEmitters ||\n hasChildEffects || hasLayouts || hasAttachments || hasBoosters;\n const buildFlags = hasAnimation\n ? EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n : EveSOFDataHull.BuildFilter.INSTANCED_PLACEMENT;\n const rotation = quat.create();\n const translation = vec3.create();\n const scaling = vec3.create();\n decomposeCarbonMatrix(transform, rotation, translation, scaling);\n\n let placementRef = null;\n let placementFields = null;\n if (needsPlacementContainer)\n {\n placementFields = {\n ...createLayoutContainerFields(dna.GetHullNames()[0]),\n partTag,\n staticTransform: true,\n scaling: Array.from(scaling),\n rotation: Array.from(rotation),\n translation: Array.from(translation)\n };\n placementRef = document.AddNode(\"EveChildContainer\", placementFields);\n rootFields.effectChildren.push(placementRef);\n }\n\n if (hasAnimation)\n {\n const childFields = {\n name: dna.GetHullNames()[0],\n partTag,\n mesh: this.CreateMesh(dna, document),\n reflectionMode: dna.GetReflectionMode(),\n castShadow: dna.CastShadow(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: document.AddNode(\"Tr2GrannyAnimation\", {})\n };\n this.SetupDecalSets(document, childFields, dna);\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\n const childRef = document.AddNode(\"EveChildMesh\", childFields);\n placementFields.objects.push(childRef);\n placementFields.animationOwner = childRef;\n }\n else\n {\n const shared = ensureSharedInstancedMeshes(document, rootFields);\n const areas = this.CreateSharedLayoutAreas(document, dna);\n if (areas.length !== 0)\n {\n const instance = document.AddNode(\"EveChildInstancedMeshInstance\", {\n transform: transform.slice(),\n sphereIndex: 0\n });\n shared.meshes.push(document.AddNode(\"EveChildInstancedMesh\", {\n geometryPath: dna.GetHullGeometryResPath(),\n castsShadow: dna.CastShadow(),\n reflectionMode: dna.GetReflectionMode(),\n meshIndex: 0,\n areas,\n instances: [instance],\n partTags: [partTag],\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\n sofLocatorSetName: \"\",\n display: true\n }));\n }\n if (placementFields)\n {\n this.SetupAttachments(document, placementFields, dna, [transform], true);\n }\n }\n\n const instanceSphere = transformLayoutSphere(dna.GetHullBoundingSphere(), transform);\n if (instanceSphere)\n {\n rootFields.boundingSphereCenter = instanceSphere.slice(0, 3);\n rootFields.boundingSphereRadius = instanceSphere[3];\n }\n const ellipsoidBounds = transformLayoutEllipsoid(\n dna.GetHullShapeEllipsoid(),\n instanceSphere,\n transform\n );\n if (ellipsoidBounds)\n {\n const center = ellipsoidBounds.min.map((value, index) => (\n (value + ellipsoidBounds.max[index]) * 0.5\n ));\n const radius = ellipsoidBounds.min.map((value, index) => (\n (ellipsoidBounds.max[index] - value) * 0.5\n ));\n rootFields.shapeEllipsoidCenter = center;\n rootFields.shapeEllipsoidRadius = radius;\n dna.SetParentShapeEllipsoidInfo({ center, radius });\n }\n\n if (hasControllers)\n {\n this.SetupControllers(document, placementFields, dna, buildFlags);\n }\n if (placementFields)\n {\n this.SetupAudio(document, placementFields, dna, transform);\n }\n if (hasBoosters && placementFields)\n {\n this.SetupChildBoosters(document, placementFields, dna);\n }\n if (hasChildEffects)\n {\n this.SetupEffects(document, rootFields, placementFields, dna, [transform], buildFlags);\n }\n if (!rootFields.impactOverlay)\n {\n this.SetupImpactEffects(document, rootFields, dna);\n }\n this.SetupLocatorSets(document, rootFields, dna, [transform], partTag);\n this.SetupLayout(document, rootFields, dna, {\n ...(layoutOptions ?? {}),\n offsets: [transform]\n }, placementFields, {\n partTag\n });\n if (placementRef)\n {\n stampDocumentChildPartTag(document, placementRef, partTag);\n }\n }\n\n /** Emits Carbon's special extension-root path through a fake solo placement. */\n @carbon.method\n @impl.adapted\n SetupExtensionBuild(document, rootFields, dna, layoutOptions = {})\n {\n const extensionFields = {\n ...createLayoutContainerFields(\"Extension Container\"),\n alwaysOn: true,\n origin: 1\n };\n const needsPlacementContainer = dna.IsHullAnimated() || dna.GetHullControllers().length !== 0;\n const placementFields = needsPlacementContainer\n ? createLayoutContainerFields(\"Solo Placement\")\n : extensionFields;\n const childFields = {\n name: \"Hull\",\n mesh: this.CreateMesh(dna, document),\n castShadow: dna.CastShadow(),\n reflectionMode: dna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: dna.IsHullAnimated()\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\n : null\n };\n if (!childFields.mesh) return null;\n this.SetupDecalSets(document, childFields, dna);\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\n const child = document.AddNode(\"EveChildMesh\", childFields);\n placementFields.objects.push(child);\n\n if (needsPlacementContainer)\n {\n this.SetupControllers(\n document,\n placementFields,\n dna,\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n );\n }\n this.SetupAudio(document, placementFields, dna, identityMatrix());\n const hasChildEffects = dna.UsingSof6()\n ? dna.GetHullChildSets().length !== 0\n : dna.GetHullChildren().length !== 0;\n if (hasChildEffects)\n {\n const fakeFields = {\n effectChildren: [],\n };\n this.SetupEffects(\n document,\n rootFields,\n fakeFields,\n dna,\n [identityMatrix()],\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n );\n if (needsPlacementContainer) placementFields.objects.push(...fakeFields.effectChildren);\n }\n if (needsPlacementContainer)\n {\n placementFields.animationOwner = dna.IsHullAnimated() ? child : null;\n extensionFields.objects.push(document.AddNode(\"EveChildContainer\", placementFields));\n }\n\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\n this.SetupLayout(document, rootFields, dna, layoutOptions, extensionFields);\n extensionFields.isPlacementRoot = true;\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", extensionFields));\n return child;\n }\n\n /** Creates the base Tr2Mesh graph and populates its SOF shader areas. */\n @carbon.method\n @impl.implemented\n CreateMesh(dna, document)\n {\n const fields = {\n geometryResPath: dna.GetHullGeometryResPath(),\n opaqueAreas: [],\n transparentAreas: [],\n additiveAreas: [],\n distortionAreas: [],\n depthAreas: []\n };\n const transparent = [];\n // Carbon's CreateMesh never fails: missing shader records degrade to\n // partially filled area vectors with a build diagnostic (EveSOF.cpp:500-515).\n this.SetupShaders(dna, document, fields, transparent);\n this.GenerateDepthFromAreaVector(document, fields.depthAreas, transparent, dna);\n return document.AddNode(\"Tr2Mesh\", fields);\n }\n\n /** Populates all five Carbon hull-area categories in source order. */\n @carbon.method\n @impl.implemented\n SetupShaders(dna, document, meshFields, transparent)\n {\n let meshIndexOffset = 0;\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n let count = 0;\n const fills = [\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE],\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_DECAL],\n [meshFields.transparentAreas, TriBatchType.TRIBATCHTYPE_TRANSPARENT],\n [meshFields.additiveAreas, TriBatchType.TRIBATCHTYPE_ADDITIVE],\n [meshFields.distortionAreas, TriBatchType.TRIBATCHTYPE_DISTORTION]\n ];\n for (const [target, batchType] of fills)\n {\n const result = this.FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document);\n count += result.count;\n if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT) transparent.push(...result.areas);\n }\n meshIndexOffset += count;\n }\n return true;\n }\n\n /** Converts one Carbon HullAreas vector into Tr2MeshArea/effect graph nodes. */\n @carbon.method\n @impl.implemented\n FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document)\n {\n // A missing source vector cannot occur in Carbon (hull area vectors always\n // exist for a valid hull index); treat it as empty rather than diagnosing.\n const source = dna.GetHullMeshAreas(batchType, hullIndex);\n if (!source) return { count: 0, areas: [] };\n const pending = [];\n for (const area of source)\n {\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\n if (!shaderData)\n {\n // Carbon logs and returns zero for this source, keeping the areas it\n // already appended and continuing with the remaining batches and\n // hulls (EveSOF.cpp:564-569); the build itself never aborts.\n this.#buildDiagnostics.push({\n code: \"missing-generic-shader\",\n batchType,\n hullIndex,\n shader: String(area.shader ?? \"\"),\n area: String(area.name ?? \"\")\n });\n target.push(...pending.map(item => item.ref));\n return { count: 0, areas: pending };\n }\n const built = buildMeshArea(\n document,\n dna,\n area,\n shaderData,\n batchType,\n meshIndexOffset,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n this.alphaCutoutShadowsEnabled,\n );\n pending.push(built);\n }\n target.push(...pending.map(item => item.ref));\n return { count: source.length, areas: pending };\n }\n\n /** Emits depth clones for transparent areas requesting Carbon depth generation. */\n @carbon.method\n @impl.implemented\n GenerateDepthFromAreaVector(document, depthAreas, transparentAreas, dna)\n {\n const depthShader = dna.GetGenericAreaShaderData(\"depthonlyv5.fx\");\n for (const source of transparentAreas)\n {\n if (!source.generateDepthArea) continue;\n const sourceEffect = document.GetNode(source.effect.$ref);\n let effectFields = cloneFields(sourceEffect.fields);\n if (depthShader)\n {\n const resource = source.resourceRefs.get(depthShader.transparencyTextureName);\n effectFields = {\n ...effectFields,\n effectFilePath: dna.GetCompleteShaderPath(\"depthonlyv5.fx\"),\n constParameters: [],\n parameters: [],\n resources: resource ? [resource] : []\n };\n }\n const effect = document.AddNode(\"Tr2Effect\", effectFields);\n const areaFields = { ...source.fields, effect };\n depthAreas.push(document.AddNode(\"Tr2MeshArea\", areaFields));\n }\n }\n\n /** Emits enabled pattern projections as EveCustomMask graph nodes. */\n @carbon.method\n @impl.adapted\n SetupCustomMask(document, rootFields, dna)\n {\n const application = dna.GetPatternApplicationData();\n if (!application) return;\n const layerCount = dna.GetPatternLayerCount();\n for (let layerIndex = 0; layerIndex < layerCount; layerIndex++)\n {\n const projection = dna.GetPatternProjectionData(application, layerIndex);\n if (!projection?.enabled) continue;\n const layer = dna.GetPatternLayerData(application, layerIndex);\n const targetMaterials = dna.GetMaterialTargets(layer);\n if (!layer || !targetMaterials) continue;\n rootFields.customMasks.push(document.AddNode(\"EveCustomMask\", {\n position: arrayValue(projection.position, [0, 0, 0]),\n scaling: arrayValue(projection.scaling, [1, 1, 1]),\n rotation: arrayValue(projection.rotation, [0, 0, 0, 1]),\n isMirrored: projection.isMirrored === true,\n clampU: layer.projectionAddressModeU === 3,\n clampV: layer.projectionAddressModeV === 3,\n materialIndex: Number(layer.materialSourceID ?? 0),\n targetMaterials: arrayValue(targetMaterials, [0, 0, 0, 0])\n }));\n }\n }\n\n /** Emits Carbon decal sets and records private static indices for SOF hydration. */\n @carbon.method\n @impl.adapted\n SetupDecalSets(document, rootFields, dna)\n {\n const hullOffset = [0, 0, 0];\n const combinedGeometryPath = dna.GetHullGeometryResPath().toLowerCase();\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const decalSet of dna.GetHullDecalSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(decalSet.visibilityGroup)) continue;\n for (const item of decalSet.items)\n {\n const usage = Number(item.usage);\n const effectName = DECAL_EFFECT_NAMES[usage];\n if (!effectName) continue;\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO && !dna.HasLogoSet(item.logoType)) continue;\n\n const constParameters = [];\n const parameterNames = new Set();\n const selectorFields = {};\n if (usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_STANDARD && usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\n {\n const color = dna.GetColorSet()[item.glowColorType];\n if (color)\n {\n selectorFields._glowColorType = Number(item.glowColorType ?? 0);\n parameterNames.add(\"DecalGlowColor\");\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"DecalGlowColor\",\n value: Array.from(color)\n }));\n }\n }\n for (const name of sortedKeys(item.parameters))\n {\n if (parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(item.parameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceNames = new Set();\n const addResource = (name, resourcePath) => {\n if (resourceNames.has(name)) return;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", { name, resourcePath }));\n };\n for (const name of sortedKeys(item.textures)) addResource(name, item.textures.get(name).resFilePath);\n\n const shaderData = dna.GetGenericDecalShaderData(effectName);\n if (shaderData)\n {\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n addResource(name, shaderData.defaultTextures.get(name).resFilePath);\n }\n if (item.meshIndex !== -1)\n {\n for (const name of shaderData.parentTextures)\n {\n const resourcePath = dna.GetHullTextureWithMeshIndex(\n name,\n item.meshIndex,\n hullIndex,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null\n );\n if (resourcePath !== null) addResource(name, resourcePath);\n }\n }\n }\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\n {\n const logo = dna.GetLogo(item.logoType);\n selectorFields._logoType = Number(item.logoType ?? 0);\n for (const name of sortedKeys(logo.textures)) addResource(name, logo.textures.get(name).resFilePath);\n }\n\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: `${dna.GetDecalShaderLocationResPath()}/${dna.GetShaderPrefix(false)}${effectName}`,\n constParameters,\n parameters: [],\n resources\n });\n const position = arrayValue(item.position, [0, 0, 0]);\n addOffset(position, hullOffset);\n const indexBuffers = selectDecalIndexBuffers(item, dna.GetMultiHullCount(), combinedGeometryPath);\n rootFields.decals.push(document.AddNode(\"EveSpaceObjectDecal\", {\n // These underscored fields retain the original SOF selectors in\n // JSON only; target Trinity classes intentionally ignore them.\n ...selectorFields,\n position,\n rotation: arrayValue(item.rotation, [0, 0, 0, 1]),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n parentBoneIndex: item.boneIndex,\n minScreenSize: 10,\n decalEffect: effect,\n staticIndexBuffers: indexBuffers\n }));\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's CPU-side armor, hull, flicker, and shield impact graph. */\n @carbon.method\n @impl.adapted\n SetupImpactEffects(document, rootFields, dna)\n {\n const impactType = dna.GetImpactEffectType();\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE) return;\n const damage = dna.GetGenericDamageData();\n const hullDamage = dna.GetGenericHullDamageData();\n const raceDamage = dna.GetRaceDamageData();\n if (!damage || !raceDamage) return;\n\n let shieldMesh = null;\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID)\n {\n const shieldEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: `${dna.GetAreaShaderLocationResPath()}/${dna.GetImpactShieldShader()}`,\n constParameters: effectParameters(document, raceDamage.shieldDamageParameters),\n parameters: [],\n resources: effectResources(document, raceDamage.shieldDamageTextures)\n });\n const shieldArea = document.AddNode(\"Tr2MeshArea\", { effect: shieldEffect });\n shieldMesh = document.AddNode(\"Tr2Mesh\", {\n geometryResPath: damage.shieldGeometryResFilePath,\n additiveAreas: [shieldArea]\n });\n }\n\n const armorDamageShader = this.CreateArmorDamageEffect(document, dna);\n const armorImpactEmitter = createImpactEmitter(document, {\n rate: damage.armorParticleRate,\n angle: damage.armorParticleAngle,\n innerAngle: 0,\n minMaxSpeed: damage.armorParticleMinMaxSpeed,\n minMaxLifeTime: damage.armorParticleMinMaxLifeTime,\n sizes: damage.armorParticleSizes,\n colors: damage.armorParticleColors,\n textureIndex: damage.armorParticleTextureIndex,\n velocityStretchRotation: damage.armorParticleVelocityStretchRotation,\n drag: damage.armorParticleDrag,\n turbulenceAmplitude: damage.armorParticleTurbulenceAmplitude,\n turbulenceFrequency: damage.armorParticleTurbulenceFrequency,\n colorMidpoint: damage.armorParticleColorMidPoint\n });\n const hullImpactEmitter = hullDamage ? createImpactEmitter(document, {\n rate: hullDamage.hullParticleRate,\n angle: hullDamage.hullParticleAngle,\n innerAngle: hullDamage.hullParticleInnerAngle,\n minMaxSpeed: hullDamage.hullParticleMinMaxSpeed,\n minMaxLifeTime: hullDamage.hullParticleMinMaxLifeTime,\n sizes: hullDamage.hullParticleSizes,\n colors: hullDamage.hullParticleColors,\n textureIndex: hullDamage.hullParticleTextureIndex,\n velocityStretchRotation: hullDamage.hullParticleVelocityStretchRotation,\n drag: hullDamage.hullParticleDrag,\n turbulenceAmplitude: hullDamage.hullParticleTurbulenceAmplitude,\n turbulenceFrequency: hullDamage.hullParticleTurbulenceFrequency,\n colorMidpoint: hullDamage.hullParticleColorMidpoint\n }) : null;\n const flickerCurve = document.AddNode(\"TriPerlinCurve\", {\n alpha: damage.flickerPerlinAlpha,\n beta: damage.flickerPerlinBeta,\n N: damage.flickerPerlinN,\n speed: damage.flickerPerlinSpeed,\n offset: 1,\n scale: 0\n });\n const shieldIsEllipsoid = impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID;\n rootFields.impactOverlay = document.AddNode(\"EveImpactOverlay\", {\n mesh: shieldMesh,\n shieldIsEllipsoid,\n armorDamageShader,\n armorImpactEmitter,\n hullDamageFlickerCurve: flickerCurve,\n hullImpactEmitter\n });\n }\n\n /** Selects Carbon's legacy or SOF6 effect-child path. */\n @carbon.method\n @impl.adapted\n SetupEffects(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n if (dna.UsingSof6())\n {\n this.SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\n }\n else\n {\n this.SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\n }\n }\n\n /** Emits legacy path-resolved children and Carbon's authored animation graph. */\n @carbon.method\n @impl.adapted\n SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n const emitterTargetsById = new Map();\n for (const child of dna.GetHullChildren())\n {\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const factionChild = dna.GetFactionChildData(child.groupIndex);\n if (factionChild && !factionChild.isVisible) continue;\n const descriptor = this.#resolveChildResource(child.redFilePath, child, false);\n // Carbon returns from SetupChildrenAndAnimations on a wrong-type child,\n // skipping the remaining children AND the animation pass (EveSOF.cpp:\n // 1840-1844); an unresolvable resource only skips the one child (1779-1783).\n if (descriptor === WRONG_TYPE_CHILD) return;\n if (!descriptor) continue;\n // Emitter rate bindings reach INTO the loaded child's graph; a deferred\n // EveChildRef has no graph to bind yet, so the binding is recorded as a\n // diagnostic instead of silently dropped. Embedding resolvers keep the\n // full Carbon binding behavior.\n if (descriptor.reference && Number(child.id ?? -1) !== -1)\n {\n this.#buildDiagnostics.push({\n code: \"deferred-child-animation-binding\",\n path: String(child.redFilePath ?? \"\"),\n id: Number(child.id)\n });\n }\n for (const offset of offsets)\n {\n const animationId = Number(child.id ?? -1);\n const ref = this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\n if (animationId !== -1)\n {\n if (!emitterTargetsById.has(animationId)) emitterTargetsById.set(animationId, []);\n emitterTargetsById.get(animationId).push(...collectDynamicEmitterRefs(document, ref, descriptor.target));\n }\n }\n }\n\n for (const animation of dna.GetHullAnimations())\n {\n const curves = [];\n const bindings = [];\n if (Number(animation.id) !== -1 && Number(animation.startRate) !== -1)\n {\n const scalar = document.AddNode(\"Tr2CurveScalar\", {\n keys: [\n scalarKey(0, animation.startRate),\n scalarKey(1, animation.endRate)\n ]\n });\n for (const emitter of emitterTargetsById.get(Number(animation.id)) ?? [])\n {\n bindings.push(document.AddNode(\"TriValueBinding\", {\n sourceAttribute: \"currentValue\",\n sourceObject: scalar,\n destinationAttribute: \"rate\",\n destinationObject: emitter\n }));\n }\n curves.push(scalar);\n }\n if (Number(animation.startRotationTime) !== -1)\n {\n const curve = document.AddNode(\"Tr2CurveQuaternion\", {\n keys: [\n quaternionKey(animation.startRotationTime, animation.startRotationValue),\n quaternionKey(animation.endRotationTime, animation.endRotationValue)\n ]\n });\n curves.push(curve);\n if (!objectFields.modelRotationCurve)\n {\n objectFields.modelRotationCurve = document.AddNode(\"Tr2RotationAdapter\", {});\n }\n bindings.push(document.AddNode(\"TriValueBinding\", {\n sourceAttribute: \"currentValue\",\n sourceObject: curve,\n destinationAttribute: \"value\",\n destinationObject: objectFields.modelRotationCurve\n }));\n }\n objectFields.curveSets.push(document.AddNode(\"TriCurveSet\", {\n name: String(animation.name ?? \"\"),\n curves,\n bindings\n }));\n // Carbon also leaves authored translation animation as a TODO.\n }\n }\n\n /** Emits SOF6 child sets after visibility and build-filter selection. */\n @carbon.method\n @impl.adapted\n SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n for (const childSet of dna.GetHullChildSets())\n {\n if (!dna.IsInVisibilityData(childSet.visibilityGroup)) continue;\n for (const child of childSet.items)\n {\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const descriptor = this.#resolveChildResource(child.redFilePath, child, true);\n // Carbon returns from SetupEffectChildren entirely on a wrong-type\n // child, skipping the remaining child sets (EveSOF.cpp:2000-2004).\n if (descriptor === WRONG_TYPE_CHILD) return;\n if (!descriptor) continue;\n for (const offset of offsets)\n {\n this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\n }\n }\n }\n }\n\n /**\n * Normalizes a child resource into an embeddable descriptor, preserving\n * resolver-free builds as EveChildRef nodes and rejecting roots outside\n * Carbon's child interfaces.\n */\n #resolveChildResource(redFilePath, child, sof6)\n {\n // Without a resolver the build stays complete AS DATA through Carbon's\n // own deferred-loading node: EveChildRef persists resPath, placement, and\n // loadChildAutomatically, and the runtime loads and attaches the child\n // when it pleases (EveChildRef_Blue.cpp:22-34). The type-based\n // children/effectChildren routing then happens at load time, where the\n // real root type is known. A configured resolver instead embeds the\n // child inline (the resolver supplies the type Carbon's cast would see).\n if (!this.#childResourceResolver)\n {\n return {\n kind: \"EveChildRef\",\n target: \"effectChildren\",\n reference: true,\n fields: {\n resPath: String(redFilePath ?? \"\"),\n loadChildAutomatically: true\n },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n let descriptor = this.#childResourceResolver(String(redFilePath ?? \"\"), { child, sof6 });\n if (descriptor && typeof descriptor.then === \"function\")\n {\n throw new TypeError(\"EveSOF child resource resolver must be synchronous\");\n }\n if (descriptor === null || descriptor === undefined)\n {\n // Carbon: CCP_LOGERR(\"resource file %s is invalid!\") and the child is\n // skipped (EveSOF.cpp:1779-1783,1942-1946).\n this.#buildDiagnostics.push({\n code: \"unresolved-child-resource\",\n reason: \"not-resolved\",\n path: String(redFilePath ?? \"\")\n });\n return null;\n }\n if (!descriptor || typeof descriptor !== \"object\")\n {\n throw new TypeError(\"EveSOF child resource resolver must return a child descriptor or null\");\n }\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\n let kind = descriptor.kind;\n let fragment = null;\n let values = null;\n let rootRef = null;\n if (descriptor.document && descriptor.values)\n {\n throw new TypeError(\"EveSOF child resource descriptor cannot contain both document and values\");\n }\n if (descriptor.document)\n {\n fragment = descriptor.document;\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\n {\n throw new TypeError(\"EveSOF child document descriptor requires a valid root ref\");\n }\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\n }\n else if (descriptor.values !== undefined)\n {\n if (!IsModelValuesRoot(descriptor.values))\n {\n throw new TypeError(\"EveSOF child values descriptor requires a self-describing root with _type\");\n }\n values = descriptor.values;\n kind = values._type;\n }\n if (typeof kind !== \"string\" || kind.length === 0)\n {\n throw new TypeError(\"EveSOF child resource descriptor requires a root kind\");\n }\n const isTransform = CHILD_TRANSFORM_KINDS.has(kind)\n || descriptorClaimsInterface(descriptor, \"EveTransform\");\n const isSpaceObjectChild = SPACE_OBJECT_CHILD_KINDS.has(kind)\n || descriptorClaimsInterface(descriptor, \"IEveSpaceObjectChild\");\n const target = descriptor.target ?? (isTransform ? \"children\" : \"effectChildren\");\n if (target !== \"children\" && target !== \"effectChildren\")\n {\n throw new TypeError(\"EveSOF child resource target must be children or effectChildren\");\n }\n // Carbon casts the loaded root: EveTransform joins the children list,\n // IEveSpaceObjectChild joins the effect children, and anything else logs\n // \"not of correct type\" and aborts the surrounding setup pass\n // (EveSOF.cpp:1786-1844,1949-2004).\n if (target === \"children\" ? !isTransform : !isSpaceObjectChild)\n {\n this.#buildDiagnostics.push({\n code: \"child-resource-wrong-type\",\n path: String(redFilePath ?? \"\"),\n kind,\n target\n });\n return WRONG_TYPE_CHILD;\n }\n return {\n kind,\n target,\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\n fragment,\n values,\n rootRef\n };\n }\n\n /**\n * Composes child placement, imports or allocates the resolved node, and\n * appends its reference to the selected owner list.\n */\n #addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset)\n {\n const placement = composeChildPlacement(child, offset);\n // \"children\"-target hosts accept only the SRT placement; effect children\n // additionally receive Carbon's LOD gate and placement origin.\n const placementFields = descriptor.target === \"children\"\n ? {\n scaling: placement.scaling,\n rotation: placement.rotation,\n translation: placement.translation\n }\n : placement;\n let ref;\n if (descriptor.fragment || descriptor.values)\n {\n ref = descriptor.values\n ? document.ImportValuesRoot(descriptor.values)\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\n const node = document.GetNode(ref.$ref);\n if (descriptor.raw && Object.keys(descriptor.raw).length)\n {\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\n }\n Object.assign(node.fields, cloneValue(placementFields));\n }\n else\n {\n ref = document.AddNode(\n descriptor.kind,\n { ...cloneFields(descriptor.fields), ...cloneValue(placementFields) },\n descriptor.raw ? cloneValue(descriptor.raw) : null\n );\n }\n const ownerFields = descriptor.target === \"children\" ? objectFields : childOwnerFields;\n ownerFields[descriptor.target].push(ref);\n return ref;\n }\n\n /** Emits local observers while retaining audio-backend construction intent. */\n @carbon.method\n @impl.adapted\n SetupAudio(document, rootFields, dna, parentOffset = identityMatrix())\n {\n const ignoredScale = vec3.create();\n const parentRotation = quat.create();\n const ignoredTranslation = vec3.create();\n decomposeCarbonMatrix(\n arrayValue(parentOffset, identityMatrix()),\n parentRotation,\n ignoredTranslation,\n ignoredScale\n );\n for (const emitter of dna.GetHullSoundEmitters())\n {\n const position = vec3.transformMat4(\n vec3.create(),\n arrayValue(emitter.position, [0, 0, 0]),\n arrayValue(parentOffset, identityMatrix())\n );\n const rotation = quat.multiply(\n quat.create(),\n parentRotation,\n arrayValue(emitter.rotation, [0, 0, 0, 1])\n );\n const front = vec3.transformQuat(vec3.create(), [0, 0, 1], rotation);\n // The emitter is a declared node in the observer's own `observer` slot,\n // not a descriptor hidden beside it. TriObserverLocal exists to hold \"an\n // audio or placement observer\" and forwards placement to it through\n // `observer.UpdatePlacement`, so this is the field the class was written\n // for; leaving it null and stashing a class name in `raw` described the\n // graph instead of being it.\n //\n // This emits a declarative identity and constructs nothing. Building the\n // live emitter remains src/audio's alone, which is what the runtime\n // architecture permits a producer to carry. The node also keeps the SOF\n // layer independent: no audio import is needed\n // to name a node any more than to name a Trinity one.\n rootFields.observers.push(document.AddNode(\"TriObserverLocal\", {\n name: String(emitter.name ?? \"\"),\n position: Array.from(position),\n front: Array.from(front),\n observer: document.AddNode(\"AudEmitter\", {\n name: String(emitter.name ?? \"\"),\n eventPrefix: String(emitter.prefix ?? \"\"),\n position: Array.from(position),\n scalingFactor: Number(emitter.attenuationScalingFactor ?? 1)\n })\n }));\n }\n }\n\n /** Loads filtered controller graph resources through the CPU document seam. */\n @carbon.method\n @impl.adapted\n SetupControllers(document, rootFields, dna, buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n for (const controller of dna.GetHullControllers())\n {\n if (((Number(controller.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const descriptor = this.#resolveObjectResource(controller.path, \"controller\");\n if (descriptor) rootFields.controllers.push(this.#addObjectResource(document, descriptor));\n }\n }\n\n /** Loads authored model curve resources after legacy animation bindings. */\n @carbon.method\n @impl.adapted\n SetupModelCurves(document, rootFields, dna)\n {\n const rotationPath = dna.GetModelRotationCurvePath();\n if (rotationPath)\n {\n const descriptor = this.#resolveObjectResource(rotationPath, \"modelRotationCurve\");\n if (descriptor) rootFields.modelRotationCurve = this.#addObjectResource(document, descriptor);\n }\n const translationPath = dna.GetModelTranslationCurvePath();\n if (translationPath)\n {\n const descriptor = this.#resolveObjectResource(translationPath, \"modelTranslationCurve\");\n if (descriptor) rootFields.modelTranslationCurve = this.#addObjectResource(document, descriptor);\n }\n }\n\n /** Emits Carbon's first-hull instanced attachment container and child meshes. */\n @carbon.method\n @impl.adapted\n SetupInstancedMeshes(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullInstanced = dna.GetHullInstancedMeshes();\n if (hullInstanced.length === 0) return null;\n\n let meshContainer = null;\n for (const ref of rootFields.effectChildren)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveChildContainer\" && node.fields?.name === \"Instanced Meshes\")\n {\n meshContainer = ref;\n break;\n }\n }\n if (!meshContainer)\n {\n meshContainer = document.AddNode(\"EveChildContainer\", {\n name: \"Instanced Meshes\",\n objects: []\n });\n rootFields.effectChildren.push(meshContainer);\n }\n const containerFields = document.GetNode(meshContainer.$ref).fields;\n if (!Array.isArray(containerFields.objects)) containerFields.objects = [];\n\n for (const source of hullInstanced)\n {\n if (!Array.isArray(source.instances) || source.instances.length === 0) continue;\n const propagated = propagateInstancedMeshInstances(source.instances, offsets);\n const built = this.CreateInstancedMesh(document, propagated.instances, source.geometryResPath);\n if (!built) continue;\n\n const shaderData = dna.GetGenericAreaShaderData(source.shader);\n if (shaderData)\n {\n built.opaqueAreas.push(createInstancedMeshArea(\n document,\n dna,\n source,\n shaderData,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n ));\n }\n\n const child = document.AddNode(\"EveChildMesh\", {\n name: \"\",\n mesh: built.ref,\n castShadow: dna.CastShadow(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\n instanceTransforms: propagated.instanceTransforms\n });\n\n if (Number(source.displayModifier) !== EveSOFDataInstancedMesh.DisplayQualityModifier.SHADER_ALL)\n {\n containerFields.objects.push(document.AddNode(\"EveChildContainer\", {\n name: \"Shader Quality Controlled Instanced Mesh\",\n displayFilter: Number(source.displayModifier ?? 0),\n objects: [child]\n }));\n }\n else\n {\n containerFields.objects.push(child);\n }\n }\n return meshContainer;\n }\n\n /** Creates the CPU-document half of Carbon's Tr2InstancedMesh pair. */\n @carbon.method\n @impl.adapted\n CreateInstancedMesh(document, instances, resourcePath)\n {\n if (!Array.isArray(instances) || instances.length === 0) return null;\n const bounds = translationBounds(instances);\n const maxScale = maximumInstanceScale(instances);\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\n name: \"\",\n particleSystem: null,\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\n rows: cloneValue(instances),\n explicitBoundingBox: true,\n aabbMin: bounds.min,\n aabbMax: bounds.max\n });\n const opaqueAreas = [];\n const ref = document.AddNode(\"Tr2InstancedMesh\", {\n geometryResPath: String(resourcePath ?? \"\"),\n opaqueAreas,\n boundsMethod: 2,\n instanceGeometryResPath: String(resourcePath ?? \"\"),\n instanceGeometryResource: instanceData,\n instanceMeshIndex: 0,\n minBounds: [0, 0, 0],\n maxBounds: [0, 0, 0],\n maxInstanceSize: maxScale\n });\n return { ref, instanceData, opaqueAreas, bounds, maxScale };\n }\n\n /** Emits Carbon layout placement batches from the deterministic CPU plan. */\n @carbon.method\n @impl.adapted\n SetupLayout(document, rootFields, dna, options = {}, targetFields = null, buildContext = {})\n {\n const plan = planSofLayouts(dna, options ?? {});\n if (plan.placements.length === 0) return plan;\n\n const layoutFields = targetFields ?? {\n name: \"layouts\",\n objects: [],\n curveSets: [],\n attachments: [],\n observers: [],\n lights: [],\n controllers: [],\n alwaysOn: true,\n origin: 1\n };\n const batches = groupLayoutPlacements(plan.placements);\n const shared = findSharedInstancedMeshes(document, rootFields);\n let sharedRef = shared?.ref ?? null;\n let sharedMeshes = shared?.meshes ?? null;\n const hasPartTag = Object.hasOwn(buildContext, \"partTag\");\n const fixedPartTag = hasPartTag ? normalizePartTag(buildContext.partTag) : 0;\n\n for (const occurrences of batches)\n {\n const first = occurrences[0];\n const extensionDna = this.CreateDna(first.dna);\n if (!extensionDna) continue;\n if (first.isInstanced) extensionDna.DisableAnimation();\n const transforms = occurrences.map(value => arrayValue(value.transform, identityMatrix()));\n updateLayoutBounds(rootFields, extensionDna, occurrences);\n const needsPlacementContainer = extensionDna.IsHullAnimated()\n || extensionDna.GetHullControllers().length !== 0;\n const placementFields = needsPlacementContainer\n ? occurrences.map(() => createLayoutContainerFields(first.name))\n : [];\n const placementAnimationOwners = needsPlacementContainer\n ? occurrences.map(() => null)\n : [];\n\n if (first.isInstanced && first.isShared)\n {\n const areas = this.CreateSharedLayoutAreas(document, extensionDna);\n if (areas.length !== 0)\n {\n if (!sharedRef)\n {\n sharedMeshes = [];\n sharedRef = document.AddNode(\"EveChildInstancedMeshes\", {\n name: \"SharedInstancedMeshes\",\n meshes: sharedMeshes\n });\n rootFields.effectChildren.push(sharedRef);\n }\n const instances = transforms.map((transform, sphereIndex) => document.AddNode(\n \"EveChildInstancedMeshInstance\",\n { transform, sphereIndex }\n ));\n sharedMeshes.push(document.AddNode(\"EveChildInstancedMesh\", {\n geometryPath: extensionDna.GetHullGeometryResPath(),\n castsShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n meshIndex: 0,\n areas,\n instances,\n ...(hasPartTag ? { partTags: transforms.map(() => fixedPartTag) } : {}),\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\n sofLocatorSetName: this.editorMode ? first.locatorSetName : \"\",\n display: true\n }));\n }\n }\n else if (first.isInstanced)\n {\n const instances = occurrences.map(value => packInstanceMatrix(value.transform, value.locator?.boneIndex));\n const built = this.CreateLayoutInstancedMesh(document, extensionDna, instances);\n if (built)\n {\n const childFields = {\n name: \"Instanced Hull\",\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\n mesh: built.ref,\n castShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n decals: [],\n attachments: [],\n lights: []\n };\n this.SetupDecalSets(document, childFields, extensionDna);\n addChildMeshShaderOption(\n document,\n childFields,\n \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\n \"SOIA_ENABLED\"\n );\n childFields.instanceTransforms = transforms;\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\n layoutFields.objects.push(document.AddNode(\"EveChildMesh\", childFields));\n }\n }\n else\n {\n // Non-instanced placements own their locator sets and, when they own\n // damage locators, their own armour-damage shader; the parent merges\n // and poses them at runtime (Carbon EveSOF.cpp:3899-3908,3971-3972).\n const ownedLocatorSets = this.BuildHullLocalLocatorSets(document, extensionDna);\n const partArmorDamageShader = extensionDna.GetLocatorCount(\"damage\") > 0\n ? this.CreateArmorDamageEffect(document, extensionDna)\n : null;\n for (let occurrenceIndex = 0; occurrenceIndex < occurrences.length; occurrenceIndex++)\n {\n const occurrence = occurrences[occurrenceIndex];\n const rotation = quat.create();\n const translation = vec3.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(occurrence.transform, rotation, translation, ignoredScale);\n const childFields = {\n name: \"Hull\",\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\n ownedLocatorSets,\n armorDamageShader: partArmorDamageShader,\n mesh: this.CreateMesh(extensionDna, document),\n castShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: extensionDna.IsHullAnimated()\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\n : null\n };\n if (!childFields.mesh) continue;\n this.SetupDecalSets(document, childFields, extensionDna);\n this.SetupAttachments(document, childFields, extensionDna, [identityMatrix()], false);\n childFields.scaling = arrayValue(occurrence.randomizedScaling, [1, 1, 1]);\n childFields.rotation = Array.from(rotation);\n childFields.translation = Array.from(translation);\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\n childFields.sofLocatorIndex = this.editorMode ? String(occurrence.locatorIndex) : \"\";\n const child = document.AddNode(\"EveChildMesh\", childFields);\n if (needsPlacementContainer)\n {\n placementFields[occurrenceIndex].objects.push(child);\n if (extensionDna.IsHullAnimated()) placementAnimationOwners[occurrenceIndex] = child;\n }\n else\n {\n layoutFields.objects.push(child);\n }\n }\n }\n\n if (first.isInstanced)\n {\n this.SetupAttachments(document, layoutFields, extensionDna, transforms, true);\n }\n for (let index = 0; index < occurrences.length; index++)\n {\n const target = needsPlacementContainer ? placementFields[index] : layoutFields;\n if (needsPlacementContainer)\n {\n this.SetupControllers(document, target, extensionDna, first.buildFlags);\n }\n this.SetupAudio(document, target, extensionDna, transforms[index]);\n }\n const hasChildEffects = extensionDna.UsingSof6()\n ? extensionDna.GetHullChildSets().length !== 0\n : extensionDna.GetHullChildren().length !== 0;\n if (hasChildEffects)\n {\n const fakeFields = {\n effectChildren: [],\n };\n this.SetupEffects(document, rootFields, fakeFields, extensionDna, transforms, first.buildFlags);\n if (needsPlacementContainer)\n {\n fakeFields.effectChildren.forEach((ref, index) => {\n placementFields[index % placementFields.length].objects.push(ref);\n });\n }\n }\n if (needsPlacementContainer)\n {\n for (let index = 0; index < placementFields.length; index++)\n {\n const fields = placementFields[index];\n if (!layoutContainerIsEmpty(fields))\n {\n const owner = placementAnimationOwners[index];\n if (owner) fields.animationOwner = owner;\n layoutFields.objects.push(document.AddNode(\"EveChildContainer\", fields));\n }\n }\n }\n this.SetupInstancedMeshes(document, rootFields, extensionDna, transforms);\n // Only instanced placements bake their locators into the root sets;\n // non-instanced children own theirs and the object merges them at\n // runtime (Carbon EveSOF.cpp:4171-4174).\n if (first.isInstanced)\n {\n this.SetupLocatorSets(\n document,\n rootFields,\n extensionDna,\n transforms,\n hasPartTag ? fixedPartTag : null\n );\n }\n }\n\n if (!targetFields && layoutFields.objects.length !== 0)\n {\n layoutFields.origin = 1;\n layoutFields.isPlacementRoot = true;\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", layoutFields));\n }\n return plan;\n }\n\n /** Creates typed effect-area records for EveChildInstancedMeshes.meshes. */\n @carbon.method\n @impl.adapted\n CreateSharedLayoutAreas(document, dna)\n {\n const result = [];\n const types = [\n TriBatchType.TRIBATCHTYPE_OPAQUE,\n TriBatchType.TRIBATCHTYPE_DECAL,\n TriBatchType.TRIBATCHTYPE_TRANSPARENT,\n TriBatchType.TRIBATCHTYPE_ADDITIVE,\n TriBatchType.TRIBATCHTYPE_DISTORTION\n ];\n for (const batchType of types)\n {\n const source = dna.GetHullMeshAreas(batchType, 0);\n if (!source) continue;\n for (const area of source)\n {\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\n if (!shaderData) continue;\n const built = buildMeshArea(\n document,\n dna,\n area,\n shaderData,\n batchType,\n 0,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n this.alphaCutoutShadowsEnabled,\n false\n );\n addEffectShaderOption(document, built.effect, \"SPACE_OBJECT_INSTANCED_ATTACHMENT\", \"SOIA_SHARED\");\n result.push(document.AddNode(\"EveChildInstancedMeshArea\", {\n effect: built.effect,\n batchType: batchType === TriBatchType.TRIBATCHTYPE_DECAL\n ? TriBatchType.TRIBATCHTYPE_OPAQUE\n : batchType,\n areaIndex: Number(built.fields.index) >>> 0,\n areaCount: Number(built.fields.count) >>> 0,\n // Carbon EveSOF.cpp:434-440/4069-4075 copies the built area's\n // cutout/winding flags so instanced occluder raycasts classify\n // backfaces correctly.\n alphaCutout: !!built.fields.alphaCutout,\n reversed: !!built.fields.reversed\n }));\n }\n }\n return result;\n }\n\n /** Converts a placement transform batch into Carbon's non-shared instanced mesh graph. */\n @carbon.method\n @impl.adapted\n CreateLayoutInstancedMesh(document, dna, instances)\n {\n if (!instances.length) return null;\n const ref = this.CreateMesh(dna, document);\n if (!ref) return null;\n const node = document.GetNode(ref.$ref);\n const bounds = translationBounds(instances);\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\n name: \"\",\n particleSystem: null,\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\n rows: cloneValue(instances),\n explicitBoundingBox: true,\n aabbMin: bounds.min,\n aabbMax: bounds.max\n });\n node.kind = \"Tr2InstancedMesh\";\n Object.assign(node.fields, {\n boundsMethod: 2,\n instanceGeometryResPath: String(node.fields.geometryResPath ?? \"\"),\n instanceGeometryResource: instanceData,\n instanceMeshIndex: 0,\n minBounds: [0, 0, 0],\n maxBounds: [0, 0, 0],\n maxInstanceSize: maximumInstanceScale(instances)\n });\n return { ref, instanceData, bounds };\n }\n\n /** Emits Carbon's ship-only booster graph and booster locator records. */\n @carbon.method\n @impl.adapted\n SetupBoosters(document, rootFields, dna)\n {\n if (dna.GetHullBoosterCount() === 0) return null;\n const race = dna.GetRaceBoosterData();\n if (!race) return null;\n\n let alwaysOn = false;\n let hasTrails = false;\n let locatorIndex = 0;\n const items = [];\n const boosterLocatorRefs = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.GetHullBoosterData(hullIndex) ?? { alwaysOn: false, hasTrails: true, items: [] };\n alwaysOn = hull.alwaysOn === true;\n hasTrails ||= hull.hasTrails === true;\n for (const item of hull.items ?? [])\n {\n const transform = arrayValue(item.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: `locator_booster_${++locatorIndex}`,\n transform\n }));\n\n const ignoredScale = vec3.create();\n const rotation = quat.create();\n const position = vec3.create();\n decomposeCarbonMatrix(\n arrayValue(item.transform, identityMatrix()),\n rotation,\n position,\n ignoredScale\n );\n position[0] += hullOffset[0];\n position[1] += hullOffset[1];\n position[2] += hullOffset[2];\n boosterLocatorRefs.push(document.AddNode(\"Locator\", {\n position: Array.from(position),\n direction: Array.from(rotation),\n scale: [0, 0, 0],\n boneIndex: -1\n }));\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\n transform,\n functionality: arrayValue(item.functionality, [0, 1, 1, 1]),\n hasTrail: item.hasTrail !== false,\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\n lightScale: Number(item.lightScale ?? 1)\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n mergeDocumentLocatorSet(document, rootFields, \"boosters\", boosterLocatorRefs);\n\n const effect = createBoosterEffect(document, race, \"BOOSTER_LOD_HIGH\");\n const effectFar = createBoosterEffect(document, race, \"BOOSTER_LOD_LOW\");\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\n options: [],\n constParameters: [],\n parameters: [],\n resources: [\n document.AddNode(\"TriTextureParameter\", {\n name: \"NoiseMap\",\n resourcePath: \"res:/Texture/global/noise.dds\"\n }),\n document.AddNode(\"TriTextureParameter\", {\n name: \"DiffuseMap\",\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\n })\n ],\n samplerOverrides: []\n });\n const glows = document.AddNode(\"EveSpriteSet\", {\n sprites: [],\n effect: glowEffect\n });\n\n let trails = null;\n if (hasTrails)\n {\n const trailEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/VolumetricTrails.fx\",\n options: [],\n constParameters: [\n document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"TrailSize\",\n value: arrayValue(race.trailSize, [0, 0, 0, 0])\n }),\n document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"TrailColor\",\n value: arrayValue(race.trailColor, [0, 0, 0, 0])\n })\n ],\n parameters: [],\n resources: [],\n samplerOverrides: []\n });\n trails = document.AddNode(\"EveTrailsSet\", {\n // Carbon: trail->SetMeshResPath(g_volumetricTrailPath) (EveSOF.cpp:2720).\n geometryResPath: this.volumetricTrailPath,\n effect: trailEffect\n });\n }\n\n rootFields.boosters = document.AddNode(\"EveBoosterSet2\", {\n glowScale: Number(race.glowScale ?? 1),\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\n symHaloScale: Number(race.symHaloScale ?? 1),\n haloScaleX: Number(race.haloScaleX ?? 1),\n haloScaleY: Number(race.haloScaleY ?? 1),\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\n alwaysOn,\n lightOffset: Number(race.lightOffset ?? 0),\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\n lightRadius: Number(race.lightRadius ?? 0),\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\n effect,\n effectFar,\n glows,\n trails,\n items\n });\n return rootFields.boosters;\n }\n\n /**\n * Emits the child-graph booster set into a placement container (Carbon\n * EveSOF::SetupChildBoosters, EveSOF.cpp:3049-3132): per-hull\n * driveName/effectPath/parameter/texture overrides with the\n * EveChildBoosterSet defaults as fallback, the LOD effect pair, one glow\n * sprite set, and every hull's items with the cumulative multi-hull\n * offset. Quad-renderer registration and PrepareResources are engine\n * realizations; the booster set node carries everything else.\n */\n @carbon.method\n @impl.adapted\n SetupChildBoosters(document, placementFields, dna)\n {\n if (dna.GetHullBoosterCount() === 0) return null;\n const race = dna.GetRaceBoosterData();\n if (!race) return null;\n const hull0 = dna.GetHullBoosterData(0) ?? {};\n\n // EveChildBoosterSet.DEFAULT_DRIVE_NAME / DEFAULT_EFFECT_PATH\n // (EveChildBoosterSet.h:94-96); SOF stays import-free of trinity.\n const driveName = hull0.driveName || \"ThrustMain\";\n const effectPath = hull0.effectPath ||\n \"res:/Graphics/Effect/Managed/Space/Booster/ChildBoosterVolumetric.fx\";\n const effect = createBoosterEffect(\n document, race, \"BOOSTER_LOD_HIGH\", effectPath, hull0.parameters, hull0.textures);\n const effectFar = createBoosterEffect(\n document, race, \"BOOSTER_LOD_LOW\", effectPath, hull0.parameters, hull0.textures);\n\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\n options: [],\n constParameters: [],\n parameters: [],\n resources: [\n document.AddNode(\"TriTextureParameter\", {\n name: \"NoiseMap\",\n resourcePath: \"res:/Texture/global/noise.dds\"\n }),\n document.AddNode(\"TriTextureParameter\", {\n name: \"DiffuseMap\",\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\n })\n ],\n samplerOverrides: []\n });\n const glows = document.AddNode(\"EveSpriteSet\", { sprites: [], effect: glowEffect });\n\n const items = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.GetHullBoosterData(hullIndex) ?? { items: [] };\n for (const item of hull.items ?? [])\n {\n const transform = arrayValue(item.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\n transform,\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\n lightScale: Number(item.lightScale ?? 1)\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n\n const ref = document.AddNode(\"EveChildBoosterSet\", {\n name: \"Boosters\",\n driveName,\n glowScale: Number(race.glowScale ?? 1),\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\n symHaloScale: Number(race.symHaloScale ?? 1),\n haloScaleX: Number(race.haloScaleX ?? 1),\n haloScaleY: Number(race.haloScaleY ?? 1),\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\n lightOffset: Number(race.lightOffset ?? 0),\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\n lightRadius: Number(race.lightRadius ?? 0),\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\n effect,\n effectFar,\n glows,\n items\n });\n placementFields.objects.push(ref);\n return ref;\n }\n\n /**\n * Normalizes a controller or model-curve resource, retaining resolver-free\n * references and enforcing the Carbon interface required by its role.\n */\n #resolveObjectResource(path, role)\n {\n if (!this.#objectResourceResolver)\n {\n // Controllers have Carbon's own deferred node: Tr2ControllerReference\n // persists the path and loads the controller at runtime\n // (Tr2ControllerReference_Blue.cpp:16-23).\n if (role === \"controller\")\n {\n return {\n kind: \"Tr2ControllerReference\",\n reference: true,\n fields: { path: String(path ?? \"\") },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n // Model curves have no Carbon reference node - Carbon inline-loads\n // them only because its blocking BeResMan made that free; nothing\n // about the loaded curve feeds back into composition. They defer\n // through the CarbonEngineJS-original CjsExternalRef, carrying the\n // interface gate for the loader to enforce at splice time.\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\n return {\n kind: \"CjsExternalRef\",\n reference: true,\n fields: {\n resPath: String(path ?? \"\"),\n expects: gate ? gate.interfaceName : \"\"\n },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n let descriptor = this.#objectResourceResolver(String(path ?? \"\"), { role });\n if (descriptor && typeof descriptor.then === \"function\")\n {\n throw new TypeError(\"EveSOF object resource resolver must be synchronous\");\n }\n if (descriptor === null || descriptor === undefined)\n {\n // Carbon: controllers log \"controller resource file %s is invalid!\"\n // (EveSOF.cpp:2028-2031); model curves skip silently (1672-1690).\n this.#buildDiagnostics.push({\n code: \"unresolved-object-resource\",\n reason: \"not-resolved\",\n role,\n path: String(path ?? \"\")\n });\n return null;\n }\n if (!descriptor || typeof descriptor !== \"object\")\n {\n throw new TypeError(\"EveSOF object resource resolver must return an object descriptor or null\");\n }\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\n let kind = descriptor.kind;\n let fragment = null;\n let values = null;\n let rootRef = null;\n if (descriptor.document && descriptor.values)\n {\n throw new TypeError(\"EveSOF object resource descriptor cannot contain both document and values\");\n }\n if (descriptor.document)\n {\n fragment = descriptor.document;\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\n {\n throw new TypeError(\"EveSOF object document descriptor requires a valid root ref\");\n }\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\n }\n else if (descriptor.values !== undefined)\n {\n if (!IsModelValuesRoot(descriptor.values))\n {\n throw new TypeError(\"EveSOF object values descriptor requires a self-describing root with _type\");\n }\n values = descriptor.values;\n kind = values._type;\n }\n if (typeof kind !== \"string\" || kind.length === 0)\n {\n throw new TypeError(\"EveSOF object resource descriptor requires a root kind\");\n }\n // Carbon loads these roles through typed LoadObject calls, so a root that\n // does not implement the role's interface never attaches: controllers log\n // and skip (EveSOF.cpp:2024-2031); model curves skip (1672-1690).\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\n if (gate && !gate.kinds.has(kind) && !descriptorClaimsInterface(descriptor, gate.interfaceName))\n {\n this.#buildDiagnostics.push({\n code: \"object-resource-wrong-type\",\n role,\n path: String(path ?? \"\"),\n kind,\n expected: gate.interfaceName\n });\n return null;\n }\n return {\n kind,\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\n fragment,\n values,\n rootRef\n };\n }\n\n /**\n * Imports a resolved values or document root into the builder, or allocates a\n * standalone node, then overlays any raw fields.\n */\n #addObjectResource(document, descriptor)\n {\n if (!descriptor.fragment && !descriptor.values)\n {\n return document.AddNode(descriptor.kind, cloneFields(descriptor.fields), cloneValue(descriptor.raw));\n }\n const ref = descriptor.values\n ? document.ImportValuesRoot(descriptor.values)\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\n if (descriptor.raw && Object.keys(descriptor.raw).length)\n {\n const node = document.GetNode(ref.$ref);\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\n }\n return ref;\n }\n\n /** Emits the currently maintained Carbon attachment stages in source order. */\n @carbon.method\n @impl.adapted\n SetupAttachments(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n // Carbon caches this effect on the EveSOF instance. Document-local sharing\n // avoids cross-build graph identity; do not widen it without an operational\n // consumer that requires mutable identity across builds.\n const sharedSpriteEffect = { ref: null };\n this.SetupSpriteSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\n this.SetupSpotlightSets(document, rootFields, dna, offsets, isInstancedPlacement);\n this.SetupPlaneSets(document, rootFields, dna, offsets, isInstancedPlacement);\n this.SetupSpriteLineSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\n this.SetupHazeSets(document, rootFields, dna, offsets, isInstancedPlacement);\n // Carbon gates banners on the owner's root object casting to EveSpaceObject2;\n // only space-object roots carry the externalParameters banner surface.\n if (Array.isArray(rootFields.externalParameters))\n {\n if (dna.UsingSof6()) this.SetupBannerSets(document, rootFields, dna, offsets);\n else this.SetupBanners(document, rootFields, dna, offsets);\n }\n this.SetupLights(document, rootFields, dna, offsets);\n }\n\n /** Emits visible EveSpriteSet attachments and their SOF6 lights. */\n @carbon.method\n @impl.adapted\n SetupSpriteSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpriteSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n if (!sharedEffect.ref)\n {\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\n constParameters: [],\n parameters: [],\n resources: []\n });\n }\n\n const sprites = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = Array.from(sourceColor, value => Number(value) * Number(item.intensity ?? 1));\n const position = vec3.transformMat4(\n vec3.create(),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n arrayValue(offset, identityMatrix())\n );\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n sprites.push(document.AddNode(\"EveSpriteSetItem\", {\n _colorType: Number(item.colorType ?? 0),\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n boneIndex: Number(item.boneIndex ?? 0),\n falloff: Number(item.falloff ?? 0),\n maxScale: Number(item.maxScale ?? 10),\n minScale: Number(item.minScale ?? 1),\n position: Array.from(position),\n color\n }));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const lightColor = saturateColor(color, item.light.saturation);\n lights.push(document.AddNode(\"EveSpriteLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: [\n Number(item.light.translation?.[0] ?? 0) + position[0],\n Number(item.light.translation?.[1] ?? 0) + position[1],\n Number(item.light.translation?.[2] ?? 0) + position[2]\n ],\n rotation: arrayValue(item.light.rotation, [0, 0, 0, 1]),\n color: lightColor,\n radius: Number(item.light.outerScaleMultiplier ?? 2),\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\n brightness: Number(item.light.intensity ?? 1),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n minScale: Number(item.minScale ?? 1),\n maxScale: Number(item.maxScale ?? 10),\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\n }));\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EveSpriteSet\", {\n effect: sharedEffect.ref,\n skinned: set.skinned === true && !isInstancedPlacement,\n sprites,\n lights\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon spotlight geometry, effects, and authored SOF6 light descriptors. */\n @carbon.method\n @impl.adapted\n SetupSpotlightSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpotlightSets(hullIndex))\n {\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\n\n const coneEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightconepool.fx\",\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"zOffset\",\n value: Array(4).fill(Number(set.zOffset ?? 0))\n })],\n parameters: [],\n resources: [document.AddNode(\"TriTextureParameter\", {\n name: \"TextureMap\",\n resourcePath: String(set.coneTextureResPath ?? \"\")\n })]\n });\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightglowpool.fx\",\n constParameters: [],\n parameters: [],\n resources: [document.AddNode(\"TriTextureParameter\", {\n name: \"TextureMap\",\n resourcePath: String(set.glowTextureResPath ?? \"\")\n })]\n });\n const spotlightItems = [];\n const lights = [];\n let index = 0;\n\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n let coneColor;\n let flareColor;\n let spriteColor;\n let lightColor;\n if (dna.UsingSof6())\n {\n lightColor = dna.GetColorSet()[item.colorType];\n if (!lightColor) continue;\n coneColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.75, 0.5), item.coneIntensity);\n flareColor = multiplyColor(modifyColor(lightColor, item.saturation, 1), item.flareIntensity);\n spriteColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.9, 0.75), item.spriteIntensity);\n }\n else\n {\n const faction = dna.GetFactionSpotlightSetData(item.groupIndex);\n if (!faction) continue;\n coneColor = multiplyColor(faction.coneColor, item.coneIntensity);\n flareColor = multiplyColor(faction.flareColor, item.flareIntensity);\n spriteColor = multiplyColor(faction.spriteColor, item.spriteIntensity);\n lightColor = faction.coneColor;\n }\n const selectorFields = dna.UsingSof6()\n ? { _colorType: Number(item.colorType ?? 0) }\n : {};\n\n const transform = arrayValue(item.transform, identityMatrix());\n mat4.multiply(\n transform,\n mat4.fromTranslation(mat4.create(), hullOffset),\n transform\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n\n spotlightItems.push(document.AddNode(\"EveSpotlightSetItem\", {\n ...selectorFields,\n boneIndex: Number(item.boneIndex ?? 0),\n boosterGainInfluence: item.boosterGainInfluence === true,\n coneColor,\n flareColor,\n spriteColor,\n spriteScale: arrayValue(item.spriteScale, [1, 1, 1]),\n transform\n }));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const position = vec3.create();\n const rotation = quat.create();\n const scaling = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, scaling);\n const scale = Array.from(scaling, Math.abs);\n const angle = scale[2] > 0\n ? Math.atan(Math.max(scale[0], scale[1]) / (2 * scale[2])) * 180 / Math.PI\n : 0;\n const localPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(item.light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(localPosition, localPosition, position);\n lights.push(document.AddNode(\"EveSpotlightLight\", {\n ...selectorFields,\n lightData: {\n position: Array.from(localPosition),\n rotation: Array.from(rotation),\n color: saturateColor(lightColor, item.saturation * item.light.saturation),\n innerAngle: Number(item.light.innerAngleMultiplier ?? 0.5) * angle,\n outerAngle: Number(item.light.outerAngleMultiplier ?? 1) * angle,\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1) * scale[2],\n radius: Number(item.light.outerScaleMultiplier ?? 1) * scale[2],\n brightness: Number(item.light.intensity ?? 1) * Number(item.coneIntensity ?? 0),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n texturePath: String(item.light.lightProfilePath ?? \"\"),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\"),\n boosterGainInfluence: item.boosterGainInfluence === true\n }));\n }\n index++;\n }\n }\n }\n\n rootFields.attachments.push(document.AddNode(\"EveSpotlightSet\", {\n coneEffect,\n glowEffect,\n lights,\n skinned: set.skinned === true && !isInstancedPlacement,\n spotlightItems\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon plane-set effects, items, and authored SOF6 lights. */\n @carbon.method\n @impl.adapted\n SetupPlaneSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullPlaneSets(hullIndex))\n {\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\n const skinned = set.skinned === true && !isInstancedPlacement;\n const resources = [];\n let imageMap = null;\n let pickBufferID = 0;\n if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO)\n {\n imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"dynamic:/inspacevideos\"\n });\n resources.push(imageMap);\n }\n else if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO)\n {\n imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"dynamic:/hangarvideos\"\n });\n resources.push(imageMap);\n pickBufferID = 100;\n }\n const layerMap1 = document.AddNode(\"TriTextureParameter\", {\n name: \"Layer1Map\",\n resourcePath: String(set.layer1MapResPath ?? \"\")\n });\n const layerMap2 = document.AddNode(\"TriTextureParameter\", {\n name: \"Layer2Map\",\n resourcePath: String(set.layer2MapResPath ?? \"\")\n });\n const maskMap = document.AddNode(\"TriTextureParameter\", {\n name: \"MaskMap\",\n resourcePath: String(set.maskMapResPath ?? \"\")\n });\n resources.push(layerMap1, layerMap2, maskMap);\n const planeData = [\n set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HAZE ? 1 : 0,\n Number(set.atlasSize ?? 1),\n Math.floor(Number(set.atlasAspectRatio?.[0] ?? 1)),\n Math.floor(Number(set.atlasAspectRatio?.[1] ?? 1))\n ];\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: getPlaneSetEffectPath(set.usage, skinned),\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"PlaneData\",\n value: planeData\n })],\n parameters: [],\n resources\n });\n\n const planes = [];\n const lights = [];\n let usesLightParameters = false;\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n\n let color;\n let selectorFields = {};\n if (dna.UsingSof6())\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n color = saturateColor(multiplyColor(sourceColor, item.intensity), item.saturation);\n selectorFields = { _colorType: Number(item.colorType ?? 0) };\n }\n else\n {\n color = arrayValue(item.color, [1, 1, 1, 1]);\n const faction = dna.GetFactionPlaneSetData(item.groupIndex);\n if (faction) color = arrayValue(faction.color, [0, 0, 0, 0]);\n }\n\n const blinkData = [\n Number(item.rate ?? 1),\n Number(item.phase ?? 0),\n Number(item.dutyCycle ?? 1),\n Number(item.blinkMode ?? 0)\n ];\n planes.push(document.AddNode(\"EvePlaneSetItem\", {\n ...selectorFields,\n boneIndex: Number(item.boneIndex ?? -1),\n color,\n layer1Scroll: arrayValue(item.layer1Scroll, [0, 0, 0, 0]),\n layer1Transform: arrayValue(item.layer1Transform, [0, 0, 0, 0]),\n layer2Scroll: arrayValue(item.layer2Scroll, [0, 0, 0, 0]),\n layer2Transform: arrayValue(item.layer2Transform, [0, 0, 0, 0]),\n maskAtlasID: Number(item.maskMapAtlasIndex ?? 0) >>> 0,\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n blinkData\n }));\n\n if (dna.UsingSof6())\n {\n if (item.lights.length) usesLightParameters = true;\n for (const light of item.lights)\n {\n const maxScale = Math.max(...arrayValue(item.scaling, [1, 1, 1]));\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(lightPosition, lightPosition, position);\n lights.push(document.AddNode(\"EvePlaneLight\", {\n ...selectorFields,\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: saturateColor(color, light.saturation),\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? -1),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index,\n lightProfilePath: String(light.lightProfilePath ?? \"\"),\n fadeType: Number(item.blinkMode ?? 0),\n blinkPhase: Number(item.phase ?? 0),\n blinkRate: Number(item.rate ?? 1)\n }));\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EvePlaneSet\", {\n effect,\n lights,\n pickBufferID,\n planes,\n skinned,\n imageMapParameter: usesLightParameters ? imageMap : null,\n layerMap1Parameter: usesLightParameters ? layerMap1 : null,\n layerMap2Parameter: usesLightParameters ? layerMap2 : null,\n maskMapParameter: usesLightParameters ? maskMap : null\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon sprite-line geometry and authored SOF6 per-sprite lights. */\n @carbon.method\n @impl.adapted\n SetupSpriteLineSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpriteLineSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n if (!sharedEffect.ref)\n {\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\n constParameters: [],\n parameters: [],\n resources: []\n });\n }\n\n const spriteLines = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = multiplyColor(sourceColor, item.intensity);\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n const line = {\n _colorType: Number(item.colorType ?? 0),\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkPhaseShift: Number(item.blinkPhaseShift ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n boneIndex: Number(item.boneIndex ?? 0),\n color,\n falloff: Number(item.falloff ?? 0),\n isCircle: item.isCircle === true,\n maxScale: Number(item.maxScale ?? 10),\n minScale: Number(item.minScale ?? 1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n spacing: Number(item.spacing ?? 1)\n };\n spriteLines.push(document.AddNode(\"EveSpriteLineSetItem\", line));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const lightColor = saturateColor(color, item.light.saturation);\n let lightRotation = arrayValue(item.light.rotation, [0, 0, 0, 1]);\n const positions = getSpriteLinePositions(line);\n for (let spriteIndex = 0; spriteIndex < positions.length; spriteIndex++)\n {\n lightRotation = Array.from(quat.normalize(\n quat.create(),\n quat.multiply(quat.create(), line.rotation, lightRotation)\n ));\n lights.push(document.AddNode(\"EveSpriteLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: [\n Number(item.light.translation?.[0] ?? 0) + positions[spriteIndex][0] + line.position[0],\n Number(item.light.translation?.[1] ?? 0) + positions[spriteIndex][1] + line.position[1],\n Number(item.light.translation?.[2] ?? 0) + positions[spriteIndex][2] + line.position[2]\n ],\n rotation: lightRotation,\n color: lightColor,\n radius: Number(item.light.outerScaleMultiplier ?? 2),\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\n brightness: Number(item.light.intensity ?? 1),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n blinkPhase: Number(item.blinkPhase ?? 0) + Number(item.blinkPhaseShift ?? 0) * spriteIndex,\n blinkRate: Number(item.blinkRate ?? 0.1),\n minScale: Number(item.minScale ?? 1),\n maxScale: Number(item.maxScale ?? 10),\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EveSpriteLineSet\", {\n effect: sharedEffect.ref,\n lights,\n skinned: set.skinned === true && !isInstancedPlacement,\n spriteLines\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon haze geometry and authored SOF6 point-light descriptors. */\n @carbon.method\n @impl.adapted\n SetupHazeSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n // Carbon keeps three haze effects on the EveSOF instance. The document\n // contract shares by path only inside this build, matching its identity\n // boundary while the effects remain immutable.\n const effects = new Map();\n const getEffect = (path) =>\n {\n if (!path) return null;\n if (!effects.has(path))\n {\n effects.set(path, document.AddNode(\"Tr2Effect\", {\n effectFilePath: path,\n constParameters: [],\n parameters: [],\n resources: []\n }));\n }\n return effects.get(path);\n };\n\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullHazeSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n let effectPath = \"\";\n if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_SPHERICAL)\n {\n effectPath = set.skinned === true && !isInstancedPlacement\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_hazespherical.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/hazespherical.fx\";\n }\n else if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_HALFSPHERICAL)\n {\n effectPath = \"res:/graphics/effect/managed/space/spaceobject/fx/hazehalfspherical.fx\";\n }\n\n const hazes = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = multiplyColor(sourceColor, item.hazeBrightness);\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n hazes.push(document.AddNode(\"EveHazeSetItem\", {\n _colorType: Number(item.colorType ?? 0),\n color,\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n boneIndex: Number(item.boneIndex ?? -1),\n position: Array.from(position),\n hazeData: [\n Number(item.hazeFalloff ?? 6),\n Number(item.sourceSize ?? 0.2),\n Number(item.sourceBrightness ?? 2),\n item.boosterGainInfluence === true ? 1 : 0\n ]\n }));\n\n if (dna.UsingSof6())\n {\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\n for (const light of item.lights)\n {\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(lightPosition, lightPosition, position);\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n lights.push(document.AddNode(\"EveHazeSetLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: saturateColor(sourceColor, light.saturation),\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? -1),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n index,\n boosterGainInfluence: item.boosterGainInfluence === true,\n boneMatrix: identityMatrix(),\n lightProfilePath: String(light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n }\n\n rootFields.attachments.push(document.AddNode(\"EveHazeSet\", {\n effect: getEffect(effectPath),\n display: true,\n hazes,\n lights\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's legacy per-item-visible banner groups. */\n @carbon.method\n @impl.adapted\n SetupBanners(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullBanners(hullIndex))\n {\n const banners = [];\n const lights = [];\n let index = 0;\n for (const value of set.items)\n {\n if (!dna.IsInVisibilityData(value.visibilityGroup)) continue;\n for (const offset of offsets)\n {\n const item = addBannerItem(document, value.item, hullOffset, offset);\n banners.push(item.ref);\n const light = value.bannerLight;\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\n const radius = Number(light.radiusMultiplier ?? 1) * Math.max(scaling[0], scaling[1], scaling[2]);\n lights.push(document.AddNode(\"EveBannerLight\", {\n lightData: {\n position: item.position,\n rotation: [0, 0, 0, 1],\n color: [0, 0, 0, 0],\n radius,\n innerRadius: radius * Number(light.innerRadiusMultiplier ?? 0.3),\n brightness: Number(light.brightness ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: -1,\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index: index++,\n boneMatrix: identityMatrix(),\n lightProfilePath: \"\"\n }));\n }\n }\n if (banners.length)\n {\n addBannerSet(document, rootFields, dna, Number(set.usage), banners, lights, EveSOFDataHullBanner.Usage._USAGE_COUNT);\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's SOF6 visibility-grouped banner sets. */\n @carbon.method\n @impl.adapted\n SetupBannerSets(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullBannerSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup) || set.bannerTypes.size === 0) continue;\n for (const [usage, values] of set.bannerTypes)\n {\n const banners = [];\n const lights = [];\n let index = 0;\n for (const value of values)\n {\n for (const offset of offsets)\n {\n const item = addBannerItem(document, value.item, hullOffset, offset);\n banners.push(item.ref);\n const light = value.light;\n if (light)\n {\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n item.rotation\n );\n vec3.add(lightPosition, lightPosition, item.position);\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n item.rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n lights.push(document.AddNode(\"EveBannerLight\", {\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: [0, 0, 0, 0],\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: -1,\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index,\n boneMatrix: identityMatrix(),\n lightProfilePath: String(light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n if (banners.length)\n {\n addBannerSet(document, rootFields, dna, Number(usage), banners, lights, EveSOFDataHullBannerSetItem.Usage._USAGE_COUNT);\n }\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon hull lights with faction visibility, color, and multi-hull transforms. */\n @carbon.method\n @impl.adapted\n SetupLights(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const lightSet of dna.GetHullLightSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(lightSet.visibilityGroup)) continue;\n for (const item of lightSet.items)\n {\n const lightKind = getLightKind(item.type);\n const color = dna.GetColorSet()[item.lightColor];\n if (!lightKind || !color) continue;\n\n for (const offset of offsets)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n\n // Flattened emission (2026-07-23 LightData flatten decision): the\n // Tr2 light classes persist the Blue-mapped LightData members as\n // flat fields, so hull lights emit Carbon's flat Blue shape. The\n // packed-set light items above still emit nested lightData bags\n // until their classes migrate. startTime carries the injected\n // buildTime, matching Carbon's GetCurrentTime() stamp at build.\n const lightFields = {\n ...(lightKind.className !== \"Tr2TexturedPointLight\"\n ? { _lightColor: Number(item.lightColor ?? 0) }\n : {}),\n startTime: this.buildTime,\n flags: Number(item.flags ?? 1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n boneIndex: Number(item.boneIndex ?? -1),\n radius: Number(item.radius ?? 0),\n innerRadius: Number(item.innerRadius ?? 0),\n color: Array.from(color),\n brightness: Number(item.brightness ?? 0),\n noiseAmplitude: Number(item.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.noiseFrequency ?? 1),\n noiseOctaves: Number(item.noiseOctaves ?? 1),\n castsShadows: 0,\n isVolumetric: false\n };\n if (lightKind.className === \"Tr2SpotLight\")\n {\n lightFields.innerAngle = Number(item.innerAngle ?? 0);\n lightFields.outerAngle = Number(item.outerAngle ?? 0);\n }\n if (lightKind.className === \"Tr2TexturedPointLight\")\n {\n lightFields.texturePath = String(item.texturePath ?? \"\");\n }\n rootFields.lights.push(document.AddNode(lightKind.className, {\n ...lightFields,\n type: lightKind.type,\n ...(lightKind.isDynamic ? { isDynamic: true } : {})\n }));\n }\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Adds turret and last-hull audio locators with Carbon multi-hull offsets. */\n @carbon.method\n @impl.implemented\n SetupLocators(document, rootFields, dna)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const locator of dna.GetHullTurretLocators(hullIndex))\n {\n const transform = arrayValue(locator.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: locator.name,\n transform\n }));\n }\n const audioPosition = dna.GetHullAudioPosition(hullIndex);\n if (audioPosition)\n {\n const transform = identityMatrix();\n transform[12] = Number(audioPosition[0] ?? 0) + hullOffset[0];\n transform[13] = Number(audioPosition[1] ?? 0) + hullOffset[1];\n transform[14] = Number(audioPosition[2] ?? 0) + hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: \"locator_audio_booster\",\n transform\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /**\n * Builds the armour-damage shader effect node, or null when the DNA lacks\n * damage data (Carbon EveSOF.cpp:2579-2603 CreateArmorDamageEffect; the\n * ArmorDamageEffectCache keyed on race+animated is a performance follow-up).\n */\n @carbon.method\n @impl.adapted\n CreateArmorDamageEffect(document, dna)\n {\n const damage = dna.GetGenericDamageData();\n const raceDamage = dna.GetRaceDamageData();\n if (!damage || !raceDamage) return null;\n return document.AddNode(\"Tr2Effect\", {\n effectFilePath: dna.GetCompleteShaderPath(damage.armorShader),\n constParameters: effectParameters(document, raceDamage.armorDamageParameters),\n parameters: [],\n resources: effectResources(document, raceDamage.armorDamageTextures)\n });\n }\n\n /**\n * Emits the hull's locator sets UNTRANSFORMED - only the multi-hull offset\n * applied - for a placement child to own, so the object merges them at\n * runtime through the child's live transform and skeleton (Carbon\n * EveSOF.cpp:3384-3432 BuildHullLocalLocatorSets). Same-name sets across\n * hulls merge into one node; bone indices stay authored because they\n * address the CHILD's skeleton.\n */\n @carbon.method\n @impl.adapted\n BuildHullLocalLocatorSets(document, dna)\n {\n const bySetName = new Map();\n const result = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\n {\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\n if (!locators.length) continue;\n let target = bySetName.get(name);\n if (!target)\n {\n target = [];\n bySetName.set(name, target);\n result.push(document.AddNode(\"EveLocatorSets\", { name, locators: target }));\n }\n for (const locator of locators)\n {\n target.push(document.AddNode(\"Locator\", {\n position: [\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\n ],\n direction: arrayValue(locator.rotation, [0, 0, 0, 1]),\n scale: arrayValue(locator.scaling, [1, 1, 1]),\n boneIndex: Number(locator.boneIndex ?? -1)\n }));\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n return result;\n }\n\n /** Merges same-name locator sets across all hulls in Carbon map order. */\n @carbon.method\n @impl.implemented\n SetupLocatorSets(document, rootFields, dna, offsets = [identityMatrix()], partTag = null)\n {\n const transforms = Array.isArray(offsets) && offsets.length !== 0\n ? offsets\n : [identityMatrix()];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\n {\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\n const locatorRefs = [];\n for (const offset of transforms)\n {\n for (const locator of locators)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(locator.rotation, [0, 0, 0, 1]),\n [\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n const composed = mat4.multiply(\n mat4.create(),\n arrayValue(offset, identityMatrix()),\n transform\n );\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(composed, rotation, position, ignoredScale);\n locatorRefs.push(document.AddNode(\"Locator\", {\n position: Array.from(position),\n direction: Array.from(rotation),\n scale: arrayValue(locator.scaling, [1, 1, 1]),\n boneIndex: Number(locator.boneIndex ?? -1),\n ...(partTag === null ? {} : { partTag: normalizePartTag(partTag) })\n }));\n }\n }\n mergeDocumentLocatorSet(document, rootFields, name, locatorRefs);\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /**\n * Overwrites turret shader constants or vector parameters with the\n * primary-area material selected by a faction catalog entry.\n */\n @carbon.method\n @impl.implemented\n SetupTurretMaterialFromFaction(turretSet, factionName)\n {\n const factionData = this.dataMgr.GetFactionData(factionName);\n if (!factionData) return;\n const genericData = this.dataMgr.GetGenericData();\n turretSet.ApplySofTurretMaterial(parameterName => findTurretFactionParameter(\n this.dataMgr,\n genericData,\n factionData,\n parameterName\n ));\n }\n\n /**\n * Parses the parent DNA and applies its faction turret values to matching\n * shader constants or vector parameters.\n */\n @carbon.method\n @impl.implemented\n SetupTurretMaterialFromDNA(turretSet, dnaString)\n {\n const dna = this.CreateDna(dnaString);\n if (!dna) return;\n turretSet.ApplySofTurretMaterial(parameterName => dna.GetFactionTurretParameters(parameterName));\n }\n\n}\n\nfunction findTurretFactionParameter(dataMgr, genericData, factionData, parameterName)\n{\n const prefixes = genericData?.materialPrefixes ?? [];\n const info = new EveSOFUtilsParameterName(prefixes, parameterName);\n if (info.IsMaterialIdxValid())\n {\n const materialIndex = info.GetMaterialIdx();\n const usageIndex = Number(\n factionData.materialUsageList?.[materialIndex] ?? materialIndex\n );\n info.ChangeMaterialIdx(genericData, usageIndex);\n }\n return findTurretAreaParameter(\n dataMgr,\n factionData.colorData?.colors ?? [],\n factionData.areaMaterials,\n EveSOFDataArea.AreaType.TYPE_PRIMARY,\n info\n );\n}\n\nfunction findTurretAreaParameter(dataMgr, colors, areaMaterials, areaType, info)\n{\n if (!areaMaterials) return null;\n if (info.IsMaterialIdxValid())\n {\n const materialName = areaMaterials.materialNames?.get(\n `${areaType}:${info.GetMaterialIdx()}`\n );\n const value = dataMgr.GetMaterialData(materialName)?.parameters?.get(info.GetShortName());\n if (value) return value;\n }\n else\n {\n const colorType = areaMaterials.glowColor?.get(`${areaType}:${info.GetFullName()}`);\n if (colorType !== undefined) return colors[colorType] ?? null;\n }\n return null;\n}\n\nfunction arrayValue(value, fallback)\n{\n return value ? Array.from(value) : fallback.slice();\n}\n\nfunction composeChildPlacement(source, offset)\n{\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(source.rotation, [0, 0, 0, 1]),\n arrayValue(source.translation, [0, 0, 0]),\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n return {\n translation: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(source.scaling, [1, 1, 1]),\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\n origin: 1\n };\n}\n\nfunction createInheritProperties(document, dna)\n{\n const colorSet = dna.GetColorSet();\n const fields = {};\n for (let index = 0; index < INHERIT_COLOR_PROPERTIES.length; index++)\n {\n fields[INHERIT_COLOR_PROPERTIES[index]] = arrayValue(colorSet?.[index], [0, 0, 0, 0]);\n }\n return document.AddNode(\"EveChildInheritProperties\", fields);\n}\n\nfunction collectDynamicEmitterRefs(document, rootRef, target)\n{\n const result = [];\n const seen = new Set();\n const addEmitters = node =>\n {\n for (const ref of Array.isArray(node?.fields?.particleEmitters) ? node.fields.particleEmitters : [])\n {\n const emitter = document.GetNode(Number(ref?.$ref));\n if (emitter?.kind === \"Tr2DynamicEmitter\" && !seen.has(emitter.id))\n {\n seen.add(emitter.id);\n result.push({ $ref: emitter.id });\n }\n }\n };\n const visitTransform = ref =>\n {\n const node = document.GetNode(Number(ref?.$ref));\n if (!node || seen.has(`transform:${node.id}`)) return;\n seen.add(`transform:${node.id}`);\n addEmitters(node);\n for (const childRef of Array.isArray(node.fields?.children) ? node.fields.children : [])\n {\n const child = document.GetNode(Number(childRef?.$ref));\n if (child?.kind === \"EveTransform\") visitTransform(childRef);\n }\n };\n const visitEffectChild = ref =>\n {\n const node = document.GetNode(Number(ref?.$ref));\n if (!node || seen.has(`effect:${node.id}`)) return;\n seen.add(`effect:${node.id}`);\n if (node.kind === \"EveChildParticleSystem\")\n {\n addEmitters(node);\n }\n else if (node.kind === \"EveChildContainer\")\n {\n for (const childRef of Array.isArray(node.fields?.objects) ? node.fields.objects : [])\n {\n visitEffectChild(childRef);\n }\n }\n };\n if (target === \"children\") visitTransform(rootRef);\n else visitEffectChild(rootRef);\n return result;\n}\n\nfunction scalarKey(time, value)\n{\n return {\n time: Number(time),\n value: Number(value),\n leftTangent: 0,\n rightTangent: 0,\n id: 0,\n interpolation: 1,\n tangentType: 1\n };\n}\n\nfunction quaternionKey(time, value)\n{\n return {\n time: Number(time),\n value: arrayValue(value, [0, 0, 0, 1]),\n id: 0,\n interpolation: 1\n };\n}\n\nfunction identityMatrix()\n{\n return [\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction decomposeCarbonMatrix(matrix, rotation, translation, scaling)\n{\n const scaleX = Math.hypot(matrix[0], matrix[1], matrix[2]);\n const scaleY = Math.hypot(matrix[4], matrix[5], matrix[6]);\n const scaleZ = Math.hypot(matrix[8], matrix[9], matrix[10]);\n scaling[0] = scaleX;\n scaling[1] = scaleY;\n scaling[2] = scaleZ;\n translation[0] = matrix[12];\n translation[1] = matrix[13];\n translation[2] = matrix[14];\n\n if (scaleX === 0 || scaleY === 0 || scaleZ === 0)\n {\n rotation[0] = 0;\n rotation[1] = 0;\n rotation[2] = 0;\n rotation[3] = 1;\n return matrix;\n }\n\n const normalized = mat4.create();\n normalized[0] = matrix[0] / scaleX;\n normalized[1] = matrix[1] / scaleX;\n normalized[2] = matrix[2] / scaleX;\n normalized[4] = matrix[4] / scaleY;\n normalized[5] = matrix[5] / scaleY;\n normalized[6] = matrix[6] / scaleY;\n normalized[8] = matrix[8] / scaleZ;\n normalized[9] = matrix[9] / scaleZ;\n normalized[10] = matrix[10] / scaleZ;\n mat4.getRotation(rotation, normalized);\n return matrix;\n}\n\nfunction addOffset(target, value)\n{\n if (!value) return;\n target[0] += Number(value[0] ?? 0);\n target[1] += Number(value[1] ?? 0);\n target[2] += Number(value[2] ?? 0);\n}\n\nfunction getLightKind(value)\n{\n switch (Number(value))\n {\n case EveSOFDataHullLightSetItem.LightType.POINT_LIGHT:\n return { className: \"Tr2PointLight\", type: 1, isDynamic: false };\n case EveSOFDataHullLightSetItem.LightType.TEXTURED_POINT_LIGHT:\n return { className: \"Tr2TexturedPointLight\", type: 1, isDynamic: true };\n case EveSOFDataHullLightSetItem.LightType.SPOT_LIGHT:\n return { className: \"Tr2SpotLight\", type: 2, isDynamic: false };\n default:\n return null;\n }\n}\n\nfunction saturateColor(value, saturation)\n{\n const source = arrayValue(value, [0, 0, 0, 0]);\n if (Number(saturation) === 1) return source;\n const intensity = source[0] * 0.299 + source[1] * 0.587 + source[2] * 0.114;\n const factor = Math.max(0, Number(saturation));\n return [\n intensity + (source[0] - intensity) * factor,\n intensity + (source[1] - intensity) * factor,\n intensity + (source[2] - intensity) * factor,\n source[3]\n ];\n}\n\nfunction multiplyColor(value, multiplier)\n{\n return arrayValue(value, [0, 0, 0, 0]).map(component => component * Number(multiplier ?? 0));\n}\n\nfunction modifyColor(value, saturation, brightness)\n{\n const source = arrayValue(value, [0, 0, 0, 0]);\n const divisor = Math.max(source[0], source[1], source[2], 1);\n const red = source[0] / divisor;\n const green = source[1] / divisor;\n const blue = source[2] / divisor;\n const maximum = Math.max(red, green, blue);\n const minimum = Math.min(red, green, blue);\n const delta = maximum - minimum;\n let hue = 0;\n let hsvSaturation = 0;\n if (delta !== 0)\n {\n hsvSaturation = maximum !== 0 ? delta / maximum : 0;\n if (red === maximum) hue = (green - blue) / delta;\n else if (green === maximum) hue = 2 + (blue - red) / delta;\n else hue = 4 + (red - green) / delta;\n hue *= 60;\n if (hue < 0) hue += 360;\n }\n hsvSaturation *= Number(saturation);\n const hsvValue = maximum * Number(brightness);\n return [...hsvToRgb(hue, hsvSaturation, hsvValue), source[3]];\n}\n\nfunction hsvToRgb(hue, saturation, value)\n{\n const nextSaturation = saturation === 0 ? 1e-9 : saturation;\n const sector = hue / 60;\n const index = Math.floor(sector);\n const fraction = sector - index;\n const p = value * (1 - nextSaturation);\n const q = value * (1 - nextSaturation * fraction);\n const t = value * (1 - nextSaturation * (1 - fraction));\n switch (index)\n {\n case 0: return [value, t, p];\n case 1: return [q, value, p];\n case 2: return [p, value, t];\n case 3: return [p, q, value];\n case 4: return [t, p, value];\n default: return [value, p, q];\n }\n}\n\nfunction getPlaneSetEffectPath(usage, skinned)\n{\n switch (Number(usage))\n {\n case EveSOFDataHullPlaneSet.Usage.USAGE_STANDARD:\n case EveSOFDataHullPlaneSet.Usage.USAGE_HAZE:\n return skinned\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planeglow.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planeglow.fx\";\n case EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO:\n case EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO:\n return skinned\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planehologram.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planehologram.fx\";\n default:\n return \"\";\n }\n}\n\nfunction getSpriteLinePositions(item)\n{\n const result = [];\n const position = arrayValue(item.position, [0, 0, 0]);\n const rotation = arrayValue(item.rotation, [0, 0, 0, 1]);\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\n if (item.isCircle)\n {\n const count = Math.max(0, Math.trunc(Number(item.spacing ?? 1)));\n for (let index = 0; index < count; index++)\n {\n const angle = index * Math.PI * 2 / Number(item.spacing);\n const point = vec3.transformQuat(\n vec3.create(),\n [scaling[0] * Math.sin(angle), 0, scaling[1] * Math.cos(angle)],\n rotation\n );\n vec3.add(point, point, position);\n result.push(Array.from(point));\n }\n }\n else\n {\n const count = Math.max(0, Math.trunc(Number(scaling[0] ?? 0)));\n const direction = vec3.transformQuat(vec3.create(), [1, 0, 0], rotation);\n const point = position.slice();\n for (let index = 0; index < count; index++)\n {\n result.push(point.slice());\n point[0] += Number(item.spacing ?? 1) * direction[0];\n point[1] += Number(item.spacing ?? 1) * direction[1];\n point[2] += Number(item.spacing ?? 1) * direction[2];\n }\n }\n return result;\n}\n\nfunction addBannerItem(document, source, hullOffset, offset)\n{\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(source.rotation, [0, 0, 0, 1]),\n [\n Number(source.position?.[0] ?? 0) + hullOffset[0],\n Number(source.position?.[1] ?? 0) + hullOffset[1],\n Number(source.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n return {\n ref: document.AddNode(\"EveBannerItem\", {\n bone: Number(source.bone ?? -1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(source.scaling, [1, 1, 1]),\n angleX: Number(source.angleX ?? 0),\n angleY: Number(source.angleY ?? 0),\n reference: Number(source.reference ?? 0) | 0\n }),\n position: Array.from(position),\n rotation: Array.from(rotation)\n };\n}\n\nfunction addBannerSet(document, rootFields, dna, usage, banners, lights, usageCount)\n{\n const shader = dna.GetGenericBannerShaderData() ?? {\n shader: \"\",\n defaultParameters: new Map(),\n defaultTextures: new Map()\n };\n const constParameters = sortedKeys(shader.defaultParameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: arrayValue(shader.defaultParameters.get(name), [0, 0, 0, 0])\n }));\n const resources = sortedKeys(shader.defaultTextures).map(name => document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: String(shader.defaultTextures.get(name)?.resFilePath ?? \"\")\n }));\n const imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"\"\n });\n resources.push(imageMap);\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: String(shader.shader ?? \"\"),\n constParameters,\n parameters: [],\n resources\n });\n rootFields.attachments.push(document.AddNode(\"EveBannerSet\", {\n banners,\n effect,\n isPickable: false,\n display: true,\n key: usage,\n lights,\n primaryTextureParameter: imageMap\n }));\n rootFields.externalParameters.push(document.AddNode(\"Tr2ExternalParameter\", {\n name: usage >= 0 && usage < usageCount ? BANNER_EXTERNAL_PARAMETER_NAMES[usage] : \"\",\n destinationObject: imageMap,\n destinationAttribute: \"resourcePath\"\n }));\n}\n\nfunction buildMeshArea(document, dna, area, shaderData, batchType, meshIndexOffset, resolveTexturePath, alphaCutoutShadowsEnabled = false, emitArea = true)\n{\n // FillMeshAreaVector's runtime state (EveSOF.cpp:576-592,668-672): opaque\n // areas cast shadows, decal areas follow the alpha-cutout setting, all other\n // batch types do not; depth generation comes from the generic shader data.\n let castsShadows = false;\n if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE) castsShadows = true;\n else if (batchType === TriBatchType.TRIBATCHTYPE_DECAL) castsShadows = alphaCutoutShadowsEnabled;\n const options = [];\n if (batchType === TriBatchType.TRIBATCHTYPE_DECAL)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_CLIP\"\n }));\n }\n else if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_TRANSPARENT\"\n }));\n }\n else if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_OPAQUE\"\n }));\n }\n\n const patternLayerCount = dna.GetPatternLayerCount();\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_PPT_ENABLED\",\n value: patternLayerCount > 0 ? \"SOPPT_ENABLED\" : \"SOPPT_DISABLED\"\n }));\n\n const constParameters = [];\n const parameterNames = new Set();\n for (const name of shaderData.parameters)\n {\n const value = dna.GetMeshAreaParameter(area.areaType, name, area.parameters, area.blockedMaterials);\n if (value)\n {\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(value)\n }));\n parameterNames.add(name);\n }\n }\n for (const name of sortedKeys(shaderData.defaultParameters))\n {\n if (parameterNames.has(name)) continue;\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(shaderData.defaultParameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceRefs = new Map();\n for (const name of sortedKeys(area.textures))\n {\n const ref = document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: resolveTexturePath(area.textures.get(name).resFilePath)\n });\n resourceRefs.set(name, ref);\n resources.push(ref);\n }\n const samplerOverrides = [];\n const samplerNames = new Set();\n const pattern = patternLayerCount > 0 ? dna.GetPatternApplicationData() : null;\n for (let layerIndex = 0; layerIndex < patternLayerCount; layerIndex++)\n {\n const layer = dna.GetPatternLayerData(pattern, layerIndex);\n if (!dna.IsPatternLayerApplicableToArea(layer, area.areaType)) continue;\n if (!resourceRefs.has(layer.textureName))\n {\n const ref = document.AddNode(\"TriTextureParameter\", {\n name: layer.textureName,\n resourcePath: layer.textureResFilePath\n });\n resourceRefs.set(layer.textureName, ref);\n resources.push(ref);\n }\n const samplerName = `${layer.textureName}Sampler`;\n if (!samplerNames.has(samplerName))\n {\n samplerNames.add(samplerName);\n samplerOverrides.push(document.AddNode(\"Tr2SamplerOverride\", {\n name: samplerName,\n addressU: layer.projectionAddressModeU,\n addressV: layer.projectionAddressModeV,\n addressW: 1,\n filter: 3,\n mipFilter: 2,\n lodBias: 0,\n maxMipLevel: 0,\n maxAnisotropy: 4\n }));\n }\n }\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n if (resourceRefs.has(name)) continue;\n const ref = document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\n });\n resourceRefs.set(name, ref);\n resources.push(ref);\n }\n\n const effect = document.AddNode(\"Tr2Effect\", {\n name: area.name,\n effectFilePath: dna.GetCompleteShaderPath(area.shader),\n options,\n constParameters,\n parameters: [],\n resources,\n samplerOverrides\n });\n const fields = {\n _areaType: Number(area.areaType ?? 0),\n name: area.name,\n index: area.index + meshIndexOffset,\n count: area.count,\n reversed: false,\n // Decal areas fold into opaque as one-sided alpha cutouts\n // (Carbon EveSOF.cpp:883); occluder backface tests skip them.\n alphaCutout: batchType === TriBatchType.TRIBATCHTYPE_DECAL,\n useSHLighting: false,\n castsShadows,\n generateDepthArea: Boolean(shaderData.doGenerateDepthArea),\n // Carbon limits distortion areas to high LOD after fill (EveSOF.cpp:2149-2153).\n minLod: batchType === TriBatchType.TRIBATCHTYPE_DISTORTION ? TR2_LOD_HIGH : -1,\n effect\n };\n return {\n ref: emitArea ? document.AddNode(\"Tr2MeshArea\", fields) : null,\n fields,\n effect,\n generateDepthArea: shaderData.doGenerateDepthArea,\n resourceRefs\n };\n}\n\nfunction createLayoutContainerFields(name)\n{\n return {\n name: String(name ?? \"\"),\n objects: [],\n curveSets: [],\n attachments: [],\n observers: [],\n lights: [],\n controllers: []\n };\n}\n\nfunction ensureSpaceObjectBuildFields(fields)\n{\n for (const name of [\n \"effectChildren\",\n \"children\",\n \"curveSets\",\n \"attachments\",\n \"decals\",\n \"customMasks\",\n \"lights\",\n \"externalParameters\",\n \"controllers\",\n \"observers\",\n \"locators\",\n \"locatorSets\"\n ])\n {\n if (!Array.isArray(fields[name])) fields[name] = [];\n }\n if (!Object.hasOwn(fields, \"impactOverlay\")) fields.impactOverlay = null;\n}\n\nfunction normalizePartTag(value)\n{\n const number = Number(value);\n if (!Number.isInteger(number) || number < 0 || number > 0xffffffff)\n {\n throw new RangeError(\"EveSOF partTag must be an unsigned 32-bit integer\");\n }\n return number >>> 0;\n}\n\nfunction normalizePlacementTransform(value)\n{\n if (!value || value.length !== 16)\n {\n throw new TypeError(\"EveSOF BuildChild transform must contain 16 values\");\n }\n const result = Array.from(value, Number);\n if (result.some(item => !Number.isFinite(item)))\n {\n throw new TypeError(\"EveSOF BuildChild transform values must be finite numbers\");\n }\n return result;\n}\n\nfunction replacePlainValues(target, values)\n{\n if (!target || typeof target !== \"object\" || Array.isArray(target))\n {\n throw new TypeError(\"EveSOF.BuildChild requires a CjsModel or plain model-values root\");\n }\n for (const key of Object.keys(target)) delete target[key];\n Object.assign(target, values);\n}\n\nfunction findSharedInstancedMeshes(document, rootFields)\n{\n for (const ref of rootFields.effectChildren)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveChildInstancedMeshes\")\n {\n if (!Array.isArray(node.fields.meshes)) node.fields.meshes = [];\n return { ref, meshes: node.fields.meshes };\n }\n }\n return null;\n}\n\nfunction ensureSharedInstancedMeshes(document, rootFields)\n{\n const existing = findSharedInstancedMeshes(document, rootFields);\n if (existing) return existing;\n const meshes = [];\n const ref = document.AddNode(\"EveChildInstancedMeshes\", {\n name: \"SharedInstancedMeshes\",\n meshes\n });\n rootFields.effectChildren.push(ref);\n return { ref, meshes };\n}\n\nfunction stampDocumentChildPartTag(document, ref, partTag, visited = new Set())\n{\n const id = Number(ref?.$ref);\n if (!Number.isInteger(id) || visited.has(id)) return;\n visited.add(id);\n const node = document.GetNode(id);\n if (!node) return;\n node.fields.partTag = partTag;\n if (node.kind === \"EveChildContainer\")\n {\n for (const child of node.fields.objects ?? [])\n {\n stampDocumentChildPartTag(document, child, partTag, visited);\n }\n }\n}\n\nfunction layoutContainerIsEmpty(fields)\n{\n return [\"objects\", \"curveSets\", \"attachments\", \"observers\", \"lights\", \"controllers\"]\n .every(name => !Array.isArray(fields[name]) || fields[name].length === 0);\n}\n\nfunction updateLayoutBounds(rootFields, dna, occurrences)\n{\n let sphere = [\n ...arrayValue(rootFields.boundingSphereCenter, [0, 0, 0]),\n Number(rootFields.boundingSphereRadius ?? -1)\n ];\n let ellipsoidBounds = ellipsoidToBounds(\n rootFields.shapeEllipsoidCenter,\n rootFields.shapeEllipsoidRadius\n );\n const sourceSphere = dna.GetHullBoundingSphere();\n const sourceEllipsoid = dna.GetHullShapeEllipsoid();\n for (const occurrence of occurrences)\n {\n const transform = arrayValue(occurrence.transform, identityMatrix());\n const transformedSphere = transformLayoutSphere(sourceSphere, transform);\n if (occurrence.extendsBoundingSphere)\n {\n sphere = includeLayoutSphere(sphere, transformedSphere);\n }\n if (occurrence.extendsShieldEllipsoid)\n {\n const bounds = transformLayoutEllipsoid(sourceEllipsoid, transformedSphere, transform);\n ellipsoidBounds = includeBounds(ellipsoidBounds, bounds);\n }\n }\n rootFields.boundingSphereCenter = sphere.slice(0, 3);\n rootFields.boundingSphereRadius = sphere[3];\n if (ellipsoidBounds)\n {\n rootFields.shapeEllipsoidCenter = ellipsoidBounds.min.map((value, index) => (\n (value + ellipsoidBounds.max[index]) * 0.5\n ));\n rootFields.shapeEllipsoidRadius = ellipsoidBounds.min.map((value, index) => (\n (ellipsoidBounds.max[index] - value) * 0.5\n ));\n }\n}\n\nfunction transformLayoutSphere(source, transform)\n{\n if (!source || Number(source[3]) < 0) return null;\n const center = vec3.transformMat4(vec3.create(), source, transform);\n const scale = mat4.getScaling(vec3.create(), transform);\n const maxScale = Math.max(Math.abs(scale[0]), Math.abs(scale[1]), Math.abs(scale[2]));\n return [center[0], center[1], center[2], Number(source[3]) * maxScale];\n}\n\nfunction includeLayoutSphere(current, next)\n{\n if (!next || next[3] < 0) return current;\n if (!current || current[3] < 0) return next.slice();\n const dx = next[0] - current[0];\n const dy = next[1] - current[1];\n const dz = next[2] - current[2];\n const distance = Math.hypot(dx, dy, dz);\n if (current[3] >= distance + next[3]) return current;\n if (next[3] >= distance + current[3]) return next.slice();\n const radius = (distance + current[3] + next[3]) * 0.5;\n if (distance === 0) return [current[0], current[1], current[2], radius];\n const factor = (radius - current[3]) / distance;\n return [\n current[0] + dx * factor,\n current[1] + dy * factor,\n current[2] + dz * factor,\n radius\n ];\n}\n\nfunction ellipsoidToBounds(centerValue, radiusValue)\n{\n const center = arrayValue(centerValue, [0, 0, 0]);\n const radius = arrayValue(radiusValue, [-1, -1, -1]);\n if (radius.some(value => value < 0)) return null;\n return {\n min: center.map((value, index) => value - radius[index]),\n max: center.map((value, index) => value + radius[index])\n };\n}\n\nfunction transformLayoutEllipsoid(source, fallbackSphere, transform)\n{\n const sourceBounds = ellipsoidToBounds(source?.center, source?.radius);\n if (!sourceBounds)\n {\n if (!fallbackSphere) return null;\n return {\n min: fallbackSphere.slice(0, 3).map(value => value - fallbackSphere[3]),\n max: fallbackSphere.slice(0, 3).map(value => value + fallbackSphere[3])\n };\n }\n let result = null;\n for (const x of [sourceBounds.min[0], sourceBounds.max[0]])\n {\n for (const y of [sourceBounds.min[1], sourceBounds.max[1]])\n {\n for (const z of [sourceBounds.min[2], sourceBounds.max[2]])\n {\n const point = vec3.transformMat4(vec3.create(), [x, y, z], transform);\n result = includeBounds(result, { min: Array.from(point), max: Array.from(point) });\n }\n }\n }\n return result;\n}\n\nfunction includeBounds(current, next)\n{\n if (!next) return current;\n if (!current) return { min: next.min.slice(), max: next.max.slice() };\n for (let axis = 0; axis < 3; axis++)\n {\n current.min[axis] = Math.min(current.min[axis], next.min[axis]);\n current.max[axis] = Math.max(current.max[axis], next.max[axis]);\n }\n return current;\n}\n\nfunction groupLayoutPlacements(placements)\n{\n const groups = new Map();\n for (const placement of placements)\n {\n if (!groups.has(placement.batchKey)) groups.set(placement.batchKey, []);\n groups.get(placement.batchKey).push(placement);\n }\n return groups.values();\n}\n\nfunction addEffectShaderOption(document, effectRef, name, value)\n{\n const effect = document.GetNode(effectRef?.$ref);\n if (!effect) return;\n if (!Array.isArray(effect.fields.options)) effect.fields.options = [];\n const duplicate = effect.fields.options.some(ref => {\n const option = document.GetNode(ref?.$ref);\n return option?.fields?.name === name;\n });\n if (!duplicate)\n {\n effect.fields.options.push(document.AddNode(\"Tr2ShaderOption\", { name, value }));\n }\n}\n\nfunction addMeshShaderOption(document, meshFields, name, value)\n{\n for (const field of [\"opaqueAreas\", \"transparentAreas\", \"additiveAreas\", \"distortionAreas\", \"depthAreas\"])\n {\n for (const areaRef of meshFields[field] ?? [])\n {\n const area = document.GetNode(areaRef?.$ref);\n addEffectShaderOption(document, area?.fields?.effect, name, value);\n }\n }\n}\n\nfunction addChildMeshShaderOption(document, childFields, name, value)\n{\n const mesh = document.GetNode(childFields.mesh?.$ref);\n if (mesh) addMeshShaderOption(document, mesh.fields, name, value);\n for (const decalRef of childFields.decals ?? [])\n {\n const decal = document.GetNode(decalRef?.$ref);\n addEffectShaderOption(document, decal?.fields?.decalEffect, name, value);\n }\n}\n\nfunction propagateInstancedMeshInstances(sourceInstances, requestedOffsets)\n{\n const offsets = Array.isArray(requestedOffsets) && requestedOffsets.length\n ? requestedOffsets.map(value => arrayValue(value, identityMatrix()))\n : [identityMatrix()];\n const identityFastPath = offsets.length === 1 && isIdentityMatrix(offsets[0]);\n const instances = [];\n const instanceTransforms = [];\n if (identityFastPath)\n {\n for (const source of sourceInstances)\n {\n instances.push(clonePackedInstance(source));\n instanceTransforms.push(Array.from(unpackInstanceMatrix(source)));\n }\n return { instances, instanceTransforms };\n }\n\n for (const offset of offsets)\n {\n for (const source of sourceInstances)\n {\n const combined = mat4.multiply(\n mat4.create(),\n offset,\n unpackInstanceMatrix(source)\n );\n instances.push(packInstanceMatrix(combined, source.boneIndex));\n // Carbon retains the transposed product in this auxiliary list on the\n // general path, unlike its ordinary-matrix identity fast path.\n instanceTransforms.push(Array.from(mat4.transpose(mat4.create(), combined)));\n }\n }\n return { instances, instanceTransforms };\n}\n\nfunction clonePackedInstance(source)\n{\n return {\n transform0: arrayValue(source.transform0, [1, 0, 0, 0]),\n transform1: arrayValue(source.transform1, [0, 1, 0, 0]),\n transform2: arrayValue(source.transform2, [0, 0, 1, 0]),\n lastTransform0: arrayValue(source.lastTransform0, source.transform0 ?? [1, 0, 0, 0]),\n lastTransform1: arrayValue(source.lastTransform1, source.transform1 ?? [0, 1, 0, 0]),\n lastTransform2: arrayValue(source.lastTransform2, source.transform2 ?? [0, 0, 1, 0]),\n boneIndex: Number(source.boneIndex ?? 0) | 0\n };\n}\n\nfunction unpackInstanceMatrix(source)\n{\n const t0 = arrayValue(source.transform0, [1, 0, 0, 0]);\n const t1 = arrayValue(source.transform1, [0, 1, 0, 0]);\n const t2 = arrayValue(source.transform2, [0, 0, 1, 0]);\n return new Float32Array([\n t0[0], t1[0], t2[0], 0,\n t0[1], t1[1], t2[1], 0,\n t0[2], t1[2], t2[2], 0,\n t0[3], t1[3], t2[3], 1\n ]);\n}\n\nfunction packInstanceMatrix(matrix, boneIndex)\n{\n const transform0 = [matrix[0], matrix[4], matrix[8], matrix[12]];\n const transform1 = [matrix[1], matrix[5], matrix[9], matrix[13]];\n const transform2 = [matrix[2], matrix[6], matrix[10], matrix[14]];\n return {\n transform0,\n transform1,\n transform2,\n lastTransform0: transform0.slice(),\n lastTransform1: transform1.slice(),\n lastTransform2: transform2.slice(),\n boneIndex: Number(boneIndex ?? 0) | 0\n };\n}\n\nfunction isIdentityMatrix(value)\n{\n const identity = identityMatrix();\n return identity.every((item, index) => Number(value[index]) === item);\n}\n\nfunction translationBounds(instances)\n{\n const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];\n const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];\n for (const instance of instances)\n {\n const point = [\n Number(instance.transform0?.[3] ?? 0),\n Number(instance.transform1?.[3] ?? 0),\n Number(instance.transform2?.[3] ?? 0)\n ];\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], point[axis]);\n max[axis] = Math.max(max[axis], point[axis]);\n }\n }\n return { min, max };\n}\n\nfunction maximumInstanceScale(instances)\n{\n let maxLengthSquared = 0;\n for (const instance of instances)\n {\n for (const row of [instance.transform0, instance.transform1, instance.transform2])\n {\n const value = arrayValue(row, [0, 0, 0, 0]);\n maxLengthSquared = Math.max(\n maxLengthSquared,\n value[0] * value[0] + value[1] * value[1] + value[2] * value[2]\n );\n }\n }\n return Math.sqrt(maxLengthSquared);\n}\n\nfunction createInstancedMeshArea(document, dna, source, shaderData, resolveTexturePath)\n{\n const constParameters = [];\n const parameterNames = new Set();\n for (const name of shaderData.parameters)\n {\n const value = dna.GetMeshAreaParameter(EveSOFDataArea.AreaType.TYPE_PRIMARY, name);\n if (!value || parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(value)\n }));\n }\n for (const name of sortedKeys(shaderData.defaultParameters))\n {\n if (parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(shaderData.defaultParameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceNames = new Set();\n for (const name of sortedKeys(source.textures))\n {\n if (resourceNames.has(name)) continue;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: resolveTexturePath(source.textures.get(name).resFilePath)\n }));\n }\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n if (resourceNames.has(name)) continue;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\n }));\n }\n\n const option = document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\n value: \"SOIA_ENABLED\"\n });\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: dna.GetCompleteShaderPath(source.shader),\n options: [option],\n constParameters,\n parameters: [],\n resources,\n samplerOverrides: []\n });\n return document.AddNode(\"Tr2MeshArea\", {\n name: \"hull\",\n index: 0,\n count: 1,\n reversed: false,\n useSHLighting: false,\n effect\n });\n}\n\n// Carbon EveSOF::CreateBoosterEffect (EveSOF.cpp:2853-2899, EveSOF.h:145):\n// the path defaults to the ship booster shader, and per-hull DNA parameters\n// are added BEFORE the race-shape parameters, matching Carbon's insertion\n// order. Only SetupChildBoosters passes overrides (with\n// EveChildBoosterSet.DEFAULT_EFFECT_PATH as its own fallback); ship boosters\n// always use the defaults.\nfunction createBoosterEffect(document, race, lodOption,\n effectPath = \"res:/Graphics/Effect/Managed/Space/Booster/BoosterVolumetric.fx\",\n parameters = null, textureOverrides = null)\n{\n const constParameters = [];\n const add = (name, value) => {\n const vector = Array.isArray(value) || ArrayBuffer.isView(value)\n ? arrayValue(value, [0, 0, 0, 0])\n : [Number(value ?? 0), Number(value ?? 0), Number(value ?? 0), Number(value ?? 0)];\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", { name, value: vector }));\n };\n if (parameters)\n {\n for (const [ name, value ] of parameters) add(name, value);\n }\n add(\"NoiseSpeed0\", race.shape0.noiseSpeed);\n add(\"NoiseAmplitudeStart0\", race.shape0.noiseAmplitureStart);\n add(\"NoiseAmplitudeEnd0\", race.shape0.noiseAmplitureEnd);\n add(\"NoiseFrequency0\", race.shape0.noiseFrequency);\n add(\"Color0\", race.shape0.color);\n add(\"NoiseSpeed1\", race.shape1.noiseSpeed);\n add(\"NoiseAmplitudeStart1\", race.shape1.noiseAmplitureStart);\n add(\"NoiseAmplitudeEnd1\", race.shape1.noiseAmplitureEnd);\n add(\"Color1\", race.shape1.color);\n add(\"WarpNoiseSpeed0\", race.warpShape0.noiseSpeed);\n add(\"WarpNoiseAmplitudeStart0\", race.warpShape0.noiseAmplitureStart);\n add(\"WarpNoiseAmplitudeEnd0\", race.warpShape0.noiseAmplitureEnd);\n add(\"WarpNoiseFrequency0\", race.warpShape0.noiseFrequency);\n add(\"WarpColor0\", race.warpShape0.color);\n add(\"WarpNoiseSpeed1\", race.warpShape1.noiseSpeed);\n add(\"WarpNoiseAmplitudeStart1\", race.warpShape1.noiseAmplitureStart);\n add(\"WarpNoiseAmplitudeEnd1\", race.warpShape1.noiseAmplitureEnd);\n add(\"WarpColor1\", race.warpShape1.color);\n add(\"ShapeAtlasSize\", [race.shapeAtlasHeight, race.shapeAtlasCount, 0, 0]);\n add(\"BoosterScale\", race.scale);\n\n // Per-hull texture overrides replace a default by name or append (Carbon\n // SetResourceTexture2D semantics, EveSOF.cpp:3095-3099).\n const textures = new Map([\n [ \"ShapeMap\", String(race.shapeAtlasResPath ?? \"\") ],\n [ \"GradientMap0\", String(race.gradient0ResPath ?? \"\") ],\n [ \"GradientMap1\", String(race.gradient1ResPath ?? \"\") ],\n [ \"NoiseMap\", \"res:/Texture/Global/noise32cube_volume.dds\" ]\n ]);\n if (textureOverrides)\n {\n for (const [ name, record ] of textureOverrides)\n {\n textures.set(String(name), String(record?.resFilePath ?? record ?? \"\"));\n }\n }\n\n return document.AddNode(\"Tr2Effect\", {\n effectFilePath: effectPath,\n options: [document.AddNode(\"Tr2ShaderOption\", {\n name: \"BOOSTER_LOD\",\n value: lodOption\n })],\n constParameters,\n parameters: [],\n resources: [...textures].map(([ name, resourcePath ]) =>\n document.AddNode(\"TriTextureParameter\", { name, resourcePath })),\n samplerOverrides: []\n });\n}\n\nfunction mergeDocumentLocatorSet(document, rootFields, name, locatorRefs)\n{\n if (locatorRefs.length === 0) return null;\n for (const ref of rootFields.locatorSets)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveLocatorSets\" && node.fields?.name === name)\n {\n node.fields.locators.push(...locatorRefs);\n return ref;\n }\n }\n const ref = document.AddNode(\"EveLocatorSets\", { name, locators: locatorRefs });\n rootFields.locatorSets.push(ref);\n return ref;\n}\n\nfunction sortedKeys(map)\n{\n return [...map.keys()].sort((a, b) => a.localeCompare(b));\n}\n\nfunction selectDecalIndexBuffers(item, hullCount, combinedGeometryPath)\n{\n if (hullCount === 1) return item.indexBuffers.map(indices => indices.slice());\n for (const entry of item.multiHullIndexBuffers)\n {\n if (entry.combinedGeometryResPath === combinedGeometryPath)\n {\n return entry.indexBuffers.map(indices => indices.slice());\n }\n }\n return [];\n}\n\nfunction effectParameters(document, parameters)\n{\n return sortedKeys(parameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(parameters.get(name))\n }));\n}\n\nfunction effectResources(document, textures)\n{\n return sortedKeys(textures).map(name => document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: textures.get(name).resFilePath\n }));\n}\n\nfunction createImpactEmitter(document, values)\n{\n const emitterData = {\n angle: Number(values.angle ?? 0),\n innerAngle: Number(values.innerAngle ?? 0),\n minSpeed: Number(values.minMaxSpeed?.[0] ?? 0),\n maxSpeed: Number(values.minMaxSpeed?.[1] ?? 0)\n };\n const paramsData = {\n minLifeTime: Number(values.minMaxLifeTime?.[0] ?? 0),\n maxLifeTime: Number(values.minMaxLifeTime?.[1] ?? 0),\n sizes: [\n Number(values.sizes?.[0] ?? 0),\n Number(values.sizes?.[1] ?? 0),\n Number(values.sizes?.[2] ?? 0)\n ],\n sizeVariance: Number(values.sizes?.[3] ?? 0),\n colors: [0, 1, 2, 3].map(index => arrayValue(values.colors?.[index], [0, 0, 0, 0])),\n textureIndex: Number(values.textureIndex ?? 0) >>> 0,\n velocityStretchRotation: Number(values.velocityStretchRotation ?? 0),\n drag: Number(values.drag ?? 0),\n turbulenceAmplitude: Number(values.turbulenceAmplitude ?? 0),\n turbulenceFrequency: Number(values.turbulenceFrequency ?? 0) >>> 0,\n colorMidpoint: Number(values.colorMidpoint ?? 0)\n };\n return document.AddNode(\"Tr2GpuUniqueEmitter\", {\n rate: Number(values.rate ?? 0),\n angle: emitterData.angle,\n innerAngle: emitterData.innerAngle,\n minSpeed: emitterData.minSpeed,\n maxSpeed: emitterData.maxSpeed,\n minLifeTime: paramsData.minLifeTime,\n maxLifeTime: paramsData.maxLifeTime,\n sizes: paramsData.sizes,\n sizeVariance: paramsData.sizeVariance,\n color0: paramsData.colors[0],\n color1: paramsData.colors[1],\n color2: paramsData.colors[2],\n color3: paramsData.colors[3],\n textureIndex: paramsData.textureIndex,\n colorMidpoint: paramsData.colorMidpoint,\n velocityStretchRotation: paramsData.velocityStretchRotation,\n drag: paramsData.drag,\n turbulenceAmplitude: paramsData.turbulenceAmplitude,\n turbulenceFrequency: paramsData.turbulenceFrequency\n });\n}\n\n/**\n * Counts how many times each node is reached from a starting reference.\n *\n * Recursion stops at a node already seen, so a cycle terminates and every node\n * on it still records more than one visit — which is exactly the condition for\n * giving it an identity.\n */\nfunction CountDocumentVisits(value, nodeById, visits)\n{\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\n {\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\n return;\n }\n\n if (CjsCarbonDocument.isRef(value))\n {\n const id = Number(value.$ref);\n const seen = visits.get(id) ?? 0;\n visits.set(id, seen + 1);\n if (seen) return;\n\n const node = nodeById.get(id);\n if (!node) return;\n\n CountDocumentVisits(node.fields ?? {}, nodeById, visits);\n CountDocumentVisits(node.raw ?? {}, nodeById, visits);\n\n return;\n }\n\n if (Array.isArray(value))\n {\n for (const item of value) CountDocumentVisits(item, nodeById, visits);\n\n return;\n }\n\n if (value && typeof value === \"object\")\n {\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\n }\n}\n\n/**\n * Rewrites one document value into its plain-values form.\n *\n * `emitted` maps a node id to the `_id` it was given on first emission, so a\n * later occurrence becomes `{ _ref }`. Ids are allocated in emission order\n * rather than reusing document ids, so the output does not carry the node\n * table's numbering as a hidden dependency.\n */\nfunction ProjectDocumentNode(value, nodeById, visits, emitted, state)\n{\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\n {\n return Object.fromEntries(Object.entries(value)\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\n }\n\n if (CjsCarbonDocument.isRef(value))\n {\n const id = Number(value.$ref);\n\n if (emitted.has(id)) return { _ref: emitted.get(id) };\n\n const node = nodeById.get(id);\n if (!node) throw new TypeError(`EveSOF values projection found no node for ref ${id}.`);\n\n const projected = { _type: node.kind };\n\n if ((visits.get(id) ?? 0) > 1)\n {\n const valueId = state.nextId++;\n emitted.set(id, valueId);\n projected._id = valueId;\n }\n\n // `fields` and `raw` are transport envelopes rather than data: the reader\n // of a values graph sees one object whose properties are the node's.\n for (const [key, item] of Object.entries({ ...node.fields, ...node.raw }))\n {\n projected[key] = ProjectDocumentNode(item, nodeById, visits, emitted, state);\n }\n\n return projected;\n }\n\n if (Array.isArray(value))\n {\n return value.map(item => ProjectDocumentNode(item, nodeById, visits, emitted, state));\n }\n\n if (value && typeof value === \"object\")\n {\n return Object.fromEntries(Object.entries(value)\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\n }\n\n return value;\n}\n\nfunction cloneFields(fields)\n{\n return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, cloneValue(value)]));\n}\n\nfunction cloneValue(value)\n{\n if (Array.isArray(value)) return value.map(cloneValue);\n if (!value || typeof value !== \"object\") return value;\n return { ...value };\n}\n\n/**\n * Allocates and links the internal compatibility node table, imports\n * self-describing values or legacy document fragments, and retains only nodes\n * reachable from its root.\n */\nclass SofDocumentBuilder\n{\n\n #nodes = [];\n\n #roots = [];\n\n /**\n * Allocates the next numeric node identifier, stores its fields and optional\n * raw data, and returns a document reference.\n */\n AddNode(kind, fields, raw = null)\n {\n const node = { id: this.#nodes.length + 1, kind, fields };\n if (raw && Object.keys(raw).length) node.raw = raw;\n this.#nodes.push(node);\n return { $ref: node.id };\n }\n\n /** Imports and remaps one complete carbon.document graph fragment. */\n ImportRoot(fragment, rootRef = fragment?.roots?.[0]?.ref)\n {\n if (!fragment || fragment.schema !== \"carbon.document\" || !Array.isArray(fragment.nodes))\n {\n throw new TypeError(\"EveSOF child resource document must be a carbon.document\");\n }\n const refs = new Map();\n for (const source of fragment.nodes)\n {\n const id = Number(source?.id);\n if (!Number.isInteger(id) || id <= 0 || refs.has(id) || typeof source.kind !== \"string\")\n {\n throw new TypeError(\"EveSOF child resource document contains an invalid node\");\n }\n refs.set(id, this.AddNode(source.kind, {}));\n }\n for (const source of fragment.nodes)\n {\n const target = this.GetNode(refs.get(Number(source.id)).$ref);\n target.fields = remapImportedValue(source.fields ?? {}, refs);\n if (source.raw && Object.keys(source.raw).length)\n {\n target.raw = remapImportedValue(source.raw, refs);\n }\n }\n const importedRoot = remapImportedValue(rootRef, refs);\n if (!importedRoot || !Number.isInteger(Number(importedRoot.$ref)))\n {\n throw new TypeError(\"EveSOF child resource document root is invalid\");\n }\n return importedRoot;\n }\n\n /**\n * Imports one self-describing CjsModel-shaped values graph.\n *\n * Every model must carry `_type`: this class deliberately has no registry or\n * schema library from which to infer the type of an untagged nested object.\n * IDs are fragment-local labels, so they are remapped to this builder's node\n * IDs just as legacy document fragment IDs are.\n */\n ImportValuesRoot(values)\n {\n if (!IsModelValuesRoot(values))\n {\n throw new TypeError(\"EveSOF values fragment requires a self-describing root with _type\");\n }\n\n const refByValue = new WeakMap();\n const refById = new Map();\n const visited = new WeakSet();\n\n const allocate = value =>\n {\n if (Array.isArray(value))\n {\n for (const item of value) allocate(item);\n return;\n }\n if (!value || typeof value !== \"object\") return;\n if (IsModelValuesReference(value))\n {\n if (Object.keys(value).length !== 1)\n {\n throw new TypeError(\"EveSOF values fragment reference must contain only _ref\");\n }\n return;\n }\n if (visited.has(value)) return;\n visited.add(value);\n\n if (Object.hasOwn(value, \"_type\"))\n {\n if (typeof value._type !== \"string\" || value._type.length === 0)\n {\n throw new TypeError(\"EveSOF values fragment model requires a non-empty string _type\");\n }\n const ref = this.AddNode(value._type, {});\n refByValue.set(value, ref);\n if (value._id !== undefined && value._id !== null)\n {\n if (refById.has(value._id))\n {\n throw new TypeError(`EveSOF values fragment contains duplicate _id ${JSON.stringify(value._id)}`);\n }\n refById.set(value._id, ref);\n }\n }\n else if (value._id !== undefined && value._id !== null)\n {\n throw new TypeError(\"EveSOF values fragment requires _type on every identified model\");\n }\n\n for (const [key, item] of Object.entries(value))\n {\n if (key !== \"_type\" && key !== \"_id\") allocate(item);\n }\n };\n\n allocate(values);\n const populated = new WeakSet();\n const convert = value =>\n {\n if (Array.isArray(value)) return value.map(convert);\n if (!value || typeof value !== \"object\") return value;\n if (IsModelValuesReference(value))\n {\n const ref = refById.get(value._ref);\n if (!ref)\n {\n throw new TypeError(`EveSOF values fragment _ref ${JSON.stringify(value._ref)} does not exist`);\n }\n return { $ref: ref.$ref };\n }\n\n const ref = refByValue.get(value);\n if (ref)\n {\n if (!populated.has(value))\n {\n populated.add(value);\n const node = this.GetNode(ref.$ref);\n const fields = Object.fromEntries(Object.entries(value)\n .filter(([key]) => key !== \"_type\" && key !== \"_id\")\n .map(([key, item]) => [key, convert(item)]));\n if (Object.hasOwn(value, \"$ref\")) fields[VALUES_LITERAL_DOLLAR_REF] = true;\n node.fields = fields;\n }\n return { $ref: ref.$ref };\n }\n\n const record = Object.fromEntries(Object.entries(value).map(([key, item]) => [key, convert(item)]));\n if (Object.hasOwn(value, \"$ref\")) record[VALUES_LITERAL_DOLLAR_REF] = true;\n return record;\n };\n\n return convert(values);\n }\n\n /**\n * Resolves a one-based document node identifier to its mutable record,\n * returning null outside the allocated table.\n */\n GetNode(id)\n {\n return this.#nodes[id - 1] ?? null;\n }\n\n /**\n * Records a named root reference for reachability analysis and final document\n * emission.\n */\n AddRoot(name, ref)\n {\n this.#roots.push({ name, ref });\n }\n\n /**\n * Emits the compatibility carbon.document envelope while pruning every node\n * unreachable from the recorded roots.\n */\n ToJSON()\n {\n const nodesById = new Map(this.#nodes.map(node => [node.id, node]));\n const reachable = new Set();\n const visitValue = value =>\n {\n if (Array.isArray(value))\n {\n value.forEach(visitValue);\n return;\n }\n if (!value || typeof value !== \"object\") return;\n if (value[VALUES_LITERAL_DOLLAR_REF])\n {\n Object.values(value).forEach(visitValue);\n return;\n }\n if (Object.hasOwn(value, \"$ref\"))\n {\n const id = Number(value.$ref);\n if (reachable.has(id)) return;\n const node = nodesById.get(id);\n if (!node) return;\n reachable.add(id);\n visitValue(node.fields);\n visitValue(node.raw);\n return;\n }\n Object.values(value).forEach(visitValue);\n };\n this.#roots.forEach(root => visitValue(root.ref));\n return {\n schema: \"carbon.document\",\n version: 1,\n format: { id: \"runtime-sof\", version: 1 },\n roots: this.#roots,\n nodes: this.#nodes.filter(node => reachable.has(node.id))\n };\n }\n\n}\n\nfunction createSwarmBehaviorFields(source)\n{\n if (!source) return null;\n const result = {};\n for (const name of SWARM_BEHAVIOR_FIELD_NAMES)\n {\n result[name] = Number(source[name]);\n }\n result.weightDeceleration = Number(source.weightDecelerate ?? source.weightDeceleration);\n return result;\n}\n\n\n\nfunction SofRequestKey(path, output)\n{\n return `${normalizeResourcePath(path)}\\0${output}`;\n}\n\nfunction CollectSofRequest(requests, path, output, role, context = null)\n{\n const normalizedPath = normalizeResourcePath(path);\n if (!normalizedPath) return null;\n const key = SofRequestKey(normalizedPath, output);\n if (!requests.has(key))\n {\n requests.set(key, { key, path: normalizedPath, output, role, context });\n }\n return key;\n}\n\nfunction IsCarbonDocument(value)\n{\n return value?.schema === \"carbon.document\"\n && Array.isArray(value.roots)\n && Array.isArray(value.nodes);\n}\n\nfunction IsModelValuesRoot(value)\n{\n return Boolean(value)\n && typeof value === \"object\"\n && !Array.isArray(value)\n && Object.hasOwn(value, \"_type\")\n && typeof value._type === \"string\"\n && value._type.length > 0;\n}\n\nfunction IsModelValuesReference(value)\n{\n return Boolean(value)\n && typeof value === \"object\"\n && !Array.isArray(value)\n && Object.hasOwn(value, \"_ref\");\n}\n\nasync function ResolveSofDependency(load, path, role, results, resultKey = path)\n{\n try\n {\n const value = await load();\n results.set(resultKey, value);\n return value;\n }\n catch (cause)\n {\n const error = new Error(`EveSOF failed to resolve ${role} resource: ${path}`, { cause });\n error.code = \"EVE_SOF_RESOURCE_RESOLUTION_FAILED\";\n error.path = path;\n error.role = role;\n throw error;\n }\n}\n\nfunction remapImportedValue(value, refs)\n{\n if (Array.isArray(value)) return value.map(item => remapImportedValue(item, refs));\n if (!value || typeof value !== \"object\") return value;\n if (Object.hasOwn(value, \"$ref\"))\n {\n const ref = refs.get(Number(value.$ref));\n if (!ref) throw new TypeError(`EveSOF child resource ref ${value.$ref} does not exist`);\n return { $ref: ref.$ref };\n }\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, remapImportedValue(item, refs)]));\n}\n"],"names":["BUILD_CLASS_TYPES","Object","freeze","EveSOFDataHull","BuildClass","BUILDCLASS_SHIP","BUILDCLASS_MOBILE","BUILDCLASS_STATIONARY","BUILDCLASS_SWARM","BUILDCLASS_EXTENSION","SPACE_OBJECT_ROOT_KINDS","Set","DECAL_EFFECT_NAMES","BANNER_EXTERNAL_PARAMETER_NAMES","MIN_MESH_SCREEN_SIZE","TR2_LOD_HIGH","CHILD_TRANSFORM_KINDS","SPACE_OBJECT_CHILD_KINDS","OBJECT_RESOURCE_ROLE_GATES","controller","interfaceName","kinds","modelRotationCurve","modelTranslationCurve","WRONG_TYPE_CHILD","Symbol","VALUES_LITERAL_DOLLAR_REF","descriptorClaimsInterface","descriptor","Array","isArray","implements","includes","INHERIT_COLOR_PROPERTIES","SWARM_BEHAVIOR_FIELD_NAMES","SOF_INSTANCE_LAYOUT","usage","usageIndex","type","name","_EveSOF","EveSOF","CjsModel","e","_init_allowFileCaching","_init_extra_allowFileCaching","_init_alphaCutoutShadowsEnabled","_init_extra_alphaCutoutShadowsEnabled","_init_volumetricTrailPath","_init_extra_volumetricTrailPath","_init_buildTime","_init_extra_buildTime","_init_dataMgr","_init_extra_dataMgr","_init_editorMode","_init_extra_editorMode","_initProto","c","_initClass","_applyDecs","define","className","family","io","readwrite","boolean","string","float64","read","objectRef","carbon","method","impl","implemented","adapted","reason","custom","allowFileCaching","alphaCutoutShadowsEnabled","volumetricTrailPath","buildTime","dataMgr","EveSOFDataMgr","editorMode","Map","getObject","exists","Register","options","TypeError","prototype","hasOwnProperty","call","normalizeResourcePath","dataPath","resources","undefined","hasOwn","clear","lazyData","CjsSofLibraryBuilder","SetSofLibraryBuilder","builderOptions","source","path","context","Error","output","Boolean","String","Number","index","resFileIndex","SetResourceExistsResolver","names","map","toLowerCase","has","resolver","result","then","SetChildResourceResolver","SetObjectResourceResolver","builder","GetDataManager","GetSofLibraryBuilder","InitializeAsync","LoadDataAsync","catalog","LoadData","filePath","existing","get","operation","ResolveSofDependency","role","data","SetData","set","delete","CreateDna","dnaString","dna","EveSOFDNA","Setup","IsValid","GetDnaVisibilityGroups","declared","factionData","visibilityGroups","declaredSet","sets","hullIndex","GetMultiHullCount","hull","hullDatas","field","values","entries","value","visibilityGroupName","group","push","kind","visibilityGroup","visible","authored","item","sort","hulls","hullNames","faction","factionName","race","raceName","filter","hidden","InspectDna","buildable","valid","ValidateContent","error","GetParseError","ValidateDNA","Build","hullName","BuildFromDNA","BuildAsync","BuildFromDNAAsync","GetBuildDiagnostics","entry","BuildValues","BuildValuesFromDNA","BuildValuesAsync","BuildValuesFromDNAAsync","document","projectDocumentValues","BuildChild","owner","partTag","transform","identityMatrix","isModel","GetValues","refs","forceTypeTags","BuildChildValues","hydrationOptions","hydration","SetValues","registry","replacePlainValues","ownerValues","tag","normalizePartTag","placementTransform","normalizePlacementTransform","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","SofDocumentBuilder","rootRef","ImportValuesRoot","root","GetNode","$ref","AddRoot","ensureSpaceObjectBuildFields","fields","layout","ToJSON","Create","black","sof","ArrayBuffer","isView","CjsBlackFormat","readPayload","buffer","slice","byteOffset","byteLength","object","console","warn","normalized","CjsCarbonDocument","normalize","nodeById","nodes","node","id","roots","ref","isRef","visits","CountDocumentVisits","ProjectDocumentNode","nextId","populateDefaults","CjsSchema","applyDefaults","EnsureFromDNA","documentRequests","existenceRequests","collectionPrevious","child","CollectSofRequest","documentResults","existenceResults","Promise","all","request","key","projectionPrevious","SofRequestKey","PlanLayoutFromDNA","planSofLayouts","buildClass","GetBuildClass","typeName","sphere","GetHullBoundingSphere","isExtension","hasShipInterface","swarmBehavior","createSwarmBehaviorFields","GetGenericSwarmProperties","mesh","AddNode","CreateMesh","rootFields","GetDnaString","boundingSphereCenter","from","boundingSphereRadius","shapeEllipsoidCenter","arrayValue","shapeEllipsoidRadius","dynamicBoundingSphereEnabled","DynamicBoundingSphereEnabled","castShadow","CastShadow","isAnimated","IsHullAnimated","reflectionMode","GetReflectionMode","effectChildren","children","curveSets","attachments","decals","impactOverlay","customMasks","lights","externalParameters","controllers","observers","locators","locatorSets","boosters","assign","SetupExtensionBuild","inheritProperties","createInheritProperties","SetupCustomMask","SetupDecalSets","SetupLocators","SetupLocatorSets","SetupAttachments","SetupImpactEffects","SetupEffects","BuildFilter","STANDALONE","SetupAudio","SetupControllers","SetupModelCurves","SetupInstancedMeshes","SetupLayout","SetupBoosters","#BuildChildIntoDocument","layoutOptions","hasChildEffects","UsingSof6","GetHullChildSets","length","GetHullChildren","hasControllers","GetHullControllers","hasAnimation","hasEmitters","GetHullSoundEmitters","hasLayouts","GetLayoutCount","hasAttachments","GetHullSpriteSets","GetHullSpotlightSets","GetHullPlaneSets","GetHullSpriteLineSets","GetHullHazeSets","GetHullBanners","GetHullBannerSets","GetHullLightSets","hasBoosters","GetHullBoosterCount","needsPlacementContainer","buildFlags","NON_INSTANCED_PLACEMENT","INSTANCED_PLACEMENT","rotation","quat","create","translation","vec3","scaling","decomposeCarbonMatrix","placementRef","placementFields","createLayoutContainerFields","GetHullNames","staticTransform","childFields","minScreenSize","lowestLodVisible","animationUpdater","childRef","objects","animationOwner","shared","ensureSharedInstancedMeshes","areas","CreateSharedLayoutAreas","instance","sphereIndex","meshes","geometryPath","GetHullGeometryResPath","castsShadow","meshIndex","instances","partTags","sofHullName","sofLocatorSetName","display","instanceSphere","transformLayoutSphere","ellipsoidBounds","transformLayoutEllipsoid","GetHullShapeEllipsoid","center","min","max","radius","SetupChildBoosters","offsets","stampDocumentChildPartTag","extensionFields","alwaysOn","origin","fakeFields","isPlacementRoot","geometryResPath","opaqueAreas","transparentAreas","additiveAreas","distortionAreas","depthAreas","transparent","SetupShaders","GenerateDepthFromAreaVector","meshFields","meshIndexOffset","count","fills","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","TRIBATCHTYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","TRIBATCHTYPE_DISTORTION","target","batchType","FillMeshAreaVector","GetHullMeshAreas","pending","area","shaderData","GetGenericAreaShaderData","shader","code","built","buildMeshArea","ModifyTextureResPath","depthShader","generateDepthArea","sourceEffect","effect","effectFields","cloneFields","resource","resourceRefs","transparencyTextureName","effectFilePath","GetCompleteShaderPath","constParameters","parameters","areaFields","application","GetPatternApplicationData","layerCount","GetPatternLayerCount","layerIndex","projection","GetPatternProjectionData","enabled","layer","GetPatternLayerData","targetMaterials","GetMaterialTargets","position","isMirrored","clampU","projectionAddressModeU","clampV","projectionAddressModeV","materialIndex","materialSourceID","hullOffset","combinedGeometryPath","decalSet","GetHullDecalSets","IsInVisibilityData","items","effectName","EveSOFDataHullDecalSetItem","Usage","USAGE_LOGO","HasLogoSet","logoType","parameterNames","selectorFields","USAGE_STANDARD","color","GetColorSet","glowColorType","_glowColorType","add","sortedKeys","resourceNames","addResource","resourcePath","textures","resFilePath","GetGenericDecalShaderData","defaultTextures","parentTextures","GetHullTextureWithMeshIndex","logo","GetLogo","_logoType","GetDecalShaderLocationResPath","GetShaderPrefix","addOffset","indexBuffers","selectDecalIndexBuffers","parentBoneIndex","boneIndex","decalEffect","staticIndexBuffers","GetHullNextSubsystemOffset","impactType","GetImpactEffectType","ImpactEffectType","IMPACTEFFECT_NONE","damage","GetGenericDamageData","hullDamage","GetGenericHullDamageData","raceDamage","GetRaceDamageData","shieldMesh","IMPACTEFFECT_ELLIPSOID","shieldEffect","GetAreaShaderLocationResPath","GetImpactShieldShader","effectParameters","shieldDamageParameters","effectResources","shieldDamageTextures","shieldArea","shieldGeometryResFilePath","armorDamageShader","CreateArmorDamageEffect","armorImpactEmitter","createImpactEmitter","rate","armorParticleRate","angle","armorParticleAngle","innerAngle","minMaxSpeed","armorParticleMinMaxSpeed","minMaxLifeTime","armorParticleMinMaxLifeTime","sizes","armorParticleSizes","colors","armorParticleColors","textureIndex","armorParticleTextureIndex","velocityStretchRotation","armorParticleVelocityStretchRotation","drag","armorParticleDrag","turbulenceAmplitude","armorParticleTurbulenceAmplitude","turbulenceFrequency","armorParticleTurbulenceFrequency","colorMidpoint","armorParticleColorMidPoint","hullImpactEmitter","hullParticleRate","hullParticleAngle","hullParticleInnerAngle","hullParticleMinMaxSpeed","hullParticleMinMaxLifeTime","hullParticleSizes","hullParticleColors","hullParticleTextureIndex","hullParticleVelocityStretchRotation","hullParticleDrag","hullParticleTurbulenceAmplitude","hullParticleTurbulenceFrequency","hullParticleColorMidpoint","flickerCurve","alpha","flickerPerlinAlpha","beta","flickerPerlinBeta","N","flickerPerlinN","speed","flickerPerlinSpeed","offset","scale","shieldIsEllipsoid","hullDamageFlickerCurve","objectFields","childOwnerFields","SetupEffectChildren","SetupChildrenAndAnimations","emitterTargetsById","buildFilter","factionChild","GetFactionChildData","groupIndex","isVisible","redFilePath","reference","animationId","collectDynamicEmitterRefs","animation","GetHullAnimations","curves","bindings","startRate","scalar","keys","scalarKey","endRate","emitter","sourceAttribute","sourceObject","destinationAttribute","destinationObject","startRotationTime","curve","quaternionKey","startRotationValue","endRotationTime","endRotationValue","childSet","#resolveChildResource","sof6","resPath","loadChildAutomatically","raw","fragment","IsModelValuesRoot","IsCarbonDocument","isInteger","find","_type","isTransform","isSpaceObjectChild","#addResolvedChild","placement","composeChildPlacement","ImportRoot","cloneValue","ownerFields","parentOffset","ignoredScale","parentRotation","ignoredTranslation","transformMat4","multiply","front","transformQuat","observer","eventPrefix","prefix","scalingFactor","attenuationScalingFactor","rotationPath","GetModelRotationCurvePath","translationPath","GetModelTranslationCurvePath","hullInstanced","GetHullInstancedMeshes","meshContainer","containerFields","propagated","propagateInstancedMeshInstances","CreateInstancedMesh","createInstancedMeshArea","instanceTransforms","displayModifier","EveSOFDataInstancedMesh","DisplayQualityModifier","SHADER_ALL","displayFilter","bounds","translationBounds","maxScale","maximumInstanceScale","instanceData","particleSystem","rows","explicitBoundingBox","aabbMin","aabbMax","boundsMethod","instanceGeometryResPath","instanceGeometryResource","instanceMeshIndex","minBounds","maxBounds","maxInstanceSize","targetFields","buildContext","plan","placements","layoutFields","batches","groupLayoutPlacements","findSharedInstancedMeshes","sharedRef","sharedMeshes","hasPartTag","fixedPartTag","occurrences","first","extensionDna","isInstanced","DisableAnimation","transforms","updateLayoutBounds","placementAnimationOwners","isShared","locatorSetName","packInstanceMatrix","locator","CreateLayoutInstancedMesh","addChildMeshShaderOption","sofDna","sofParentHullName","ownedLocatorSets","BuildHullLocalLocatorSets","partArmorDamageShader","GetLocatorCount","occurrenceIndex","occurrence","randomizedScaling","sofLocatorIndex","locatorIndex","forEach","layoutContainerIsEmpty","types","addEffectShaderOption","areaIndex","areaCount","alphaCutout","reversed","GetRaceBoosterData","hasTrails","boosterLocatorRefs","GetHullBoosterData","direction","functionality","hasTrail","atlasIndex0","atlasIndex1","lightScale","mergeDocumentLocatorSet","createBoosterEffect","effectFar","glowEffect","samplerOverrides","glows","sprites","trails","trailEffect","trailSize","trailColor","glowScale","glowColor","warpGlowColor","symHaloScale","haloScaleX","haloScaleY","haloColor","warpHaloColor","lightOffset","lightFlickerAmplitude","lightFlickerFrequency","lightRadius","lightColor","lightWarpRadius","lightWarpColor","hull0","driveName","effectPath","#resolveObjectResource","gate","expects","expected","#addObjectResource","isInstancedPlacement","sharedSpriteEffect","SetupSpriteSets","SetupSpotlightSets","SetupPlaneSets","SetupSpriteLineSets","SetupHazeSets","SetupBannerSets","SetupBanners","SetupLights","sharedEffect","sourceColor","colorType","intensity","saturateColor","saturation","_colorType","blinkPhase","blinkRate","falloff","minScale","light","lightData","outerScaleMultiplier","innerRadius","innerScaleMultiplier","brightness","noiseAmplitude","noiseFrequency","noiseOctaves","flags","startTime","castsShadows","isVolumetric","lightProfilePath","skinned","coneEffect","fill","zOffset","coneTextureResPath","glowTextureResPath","spotlightItems","coneColor","flareColor","spriteColor","multiplyColor","modifyColor","coneIntensity","flareIntensity","spriteIntensity","GetFactionSpotlightSetData","mat4","fromTranslation","boosterGainInfluence","spriteScale","Math","abs","atan","PI","localPosition","innerAngleMultiplier","outerAngle","outerAngleMultiplier","texturePath","imageMap","pickBufferID","EveSOFDataHullPlaneSet","USAGE_SPACE_VIDEO","USAGE_HANGAR_VIDEO","layerMap1","layer1MapResPath","layerMap2","layer2MapResPath","maskMap","maskMapResPath","planeData","USAGE_HAZE","atlasSize","floor","atlasAspectRatio","getPlaneSetEffectPath","planes","usesLightParameters","fromRotationTranslationScale","GetFactionPlaneSetData","blinkData","phase","dutyCycle","blinkMode","layer1Scroll","layer1Transform","layer2Scroll","layer2Transform","maskAtlasID","maskMapAtlasIndex","lightRotation","lightPosition","fadeType","imageMapParameter","layerMap1Parameter","layerMap2Parameter","maskMapParameter","spriteLines","line","blinkPhaseShift","isCircle","spacing","positions","getSpriteLinePositions","spriteIndex","effects","getEffect","hazeType","EveSOFDataHullHazeSet","HazeType","TYPE_SPHERICAL","TYPE_HALFSPHERICAL","hazes","hazeBrightness","hazeData","hazeFalloff","sourceSize","sourceBrightness","boneMatrix","banners","addBannerItem","bannerLight","radiusMultiplier","innerRadiusMultiplier","addBannerSet","EveSOFDataHullBanner","_USAGE_COUNT","bannerTypes","size","EveSOFDataHullBannerSetItem","lightSet","lightKind","getLightKind","lightFields","_lightColor","isDynamic","GetHullTurretLocators","audioPosition","GetHullAudioPosition","armorShader","armorDamageParameters","armorDamageTextures","bySetName","GetHullLocatorSetNames","GetHullLocators","locatorRefs","composed","SetupTurretMaterialFromFaction","turretSet","GetFactionData","genericData","GetGenericData","ApplySofTurretMaterial","parameterName","findTurretFactionParameter","SetupTurretMaterialFromDNA","GetFactionTurretParameters","prefixes","materialPrefixes","info","EveSOFUtilsParameterName","IsMaterialIdxValid","GetMaterialIdx","materialUsageList","ChangeMaterialIdx","findTurretAreaParameter","colorData","areaMaterials","EveSOFDataArea","AreaType","TYPE_PRIMARY","areaType","materialName","materialNames","GetMaterialData","GetShortName","GetFullName","fallback","colorSet","seen","addEmitters","particleEmitters","visitTransform","visitEffectChild","time","leftTangent","rightTangent","interpolation","tangentType","matrix","scaleX","hypot","scaleY","scaleZ","getRotation","EveSOFDataHullLightSetItem","LightType","POINT_LIGHT","TEXTURED_POINT_LIGHT","SPOT_LIGHT","factor","multiplier","component","divisor","red","green","blue","maximum","minimum","delta","hue","hsvSaturation","hsvValue","hsvToRgb","nextSaturation","sector","fraction","p","q","t","trunc","point","sin","cos","bone","angleX","angleY","usageCount","GetGenericBannerShaderData","defaultParameters","isPickable","primaryTextureParameter","resolveTexturePath","emitArea","patternLayerCount","GetMeshAreaParameter","blockedMaterials","samplerNames","pattern","IsPatternLayerApplicableToArea","textureName","textureResFilePath","samplerName","addressU","addressV","addressW","mipFilter","lodBias","maxMipLevel","maxAnisotropy","_areaType","useSHLighting","doGenerateDepthArea","minLod","number","RangeError","some","isFinite","visited","every","ellipsoidToBounds","sourceSphere","sourceEllipsoid","transformedSphere","extendsBoundingSphere","includeLayoutSphere","extendsShieldEllipsoid","includeBounds","getScaling","current","next","dx","dy","dz","distance","centerValue","radiusValue","fallbackSphere","sourceBounds","x","y","z","axis","groups","batchKey","effectRef","duplicate","option","addMeshShaderOption","areaRef","decalRef","decal","sourceInstances","requestedOffsets","identityFastPath","isIdentityMatrix","clonePackedInstance","unpackInstanceMatrix","combined","transpose","transform0","transform1","transform2","lastTransform0","lastTransform1","lastTransform2","t0","t1","t2","Float32Array","identity","POSITIVE_INFINITY","NEGATIVE_INFINITY","maxLengthSquared","row","sqrt","lodOption","textureOverrides","vector","shape0","noiseSpeed","noiseAmplitureStart","noiseAmplitureEnd","shape1","warpShape0","warpShape1","shapeAtlasHeight","shapeAtlasCount","shapeAtlasResPath","gradient0ResPath","gradient1ResPath","record","a","b","localeCompare","hullCount","indices","multiHullIndexBuffers","combinedGeometryResPath","emitterData","minSpeed","maxSpeed","paramsData","minLifeTime","maxLifeTime","sizeVariance","color0","color1","color2","color3","emitted","state","fromEntries","_ref","projected","valueId","_id","schema","remapImportedValue","importedRoot","refByValue","WeakMap","refById","WeakSet","allocate","IsModelValuesReference","JSON","stringify","populated","convert","nodesById","reachable","visitValue","version","format","weightDeceleration","weightDecelerate","requests","normalizedPath","load","results","resultKey","cause"],"mappings":"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"}
1
+ {"version":3,"file":"EveSOF.js","sources":["../../../src/sof/EveSOF.js"],"sourcesContent":["import { normalizeResourcePath } from \"#utils/path\";\n\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.h\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.cpp\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp\nimport { CjsModel } from \"#model\";\nimport { CjsSchema, carbon, impl, io, type } from \"#schema\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { TriBatchType } from \"#consts/graphics\";\nimport { CjsBlackFormat } from \"#resource/formats/black\";\nimport { EveSOFDataHullDecalSetItem } from \"./hull/EveSOFDataHullDecalSetItem.js\";\nimport { EveSOFDataHullBanner } from \"./hull/EveSOFDataHullBanner.js\";\nimport { EveSOFDataHullBannerSetItem } from \"./hull/EveSOFDataHullBannerSetItem.js\";\nimport { EveSOFDataHullHazeSet } from \"./hull/EveSOFDataHullHazeSet.js\";\nimport { EveSOFDataHullLightSetItem } from \"./hull/EveSOFDataHullLightSetItem.js\";\nimport { EveSOFDataHullPlaneSet } from \"./hull/EveSOFDataHullPlaneSet.js\";\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\nimport { EveSOFDataInstancedMesh } from \"./shared/EveSOFDataInstancedMesh.js\";\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\nimport { CjsCarbonDocument } from \"#model/document\";\nimport { EveSOFDNA } from \"./EveSOFDNA.js\";\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\nimport { CjsSofLibraryBuilder } from \"./CjsSofLibraryBuilder.js\";\nimport { planSofLayouts } from \"./layoutPlanner.js\";\nimport { SofDocumentBuilder } from \"./SofDocumentBuilder.js\";\nimport { IsModelValuesReference, IsModelValuesRoot, VALUES_LITERAL_DOLLAR_REF, remapImportedValue } from \"./sofDocumentValues.js\";\n\n\nconst BUILD_CLASS_TYPES = Object.freeze({\n [EveSOFDataHull.BuildClass.BUILDCLASS_SHIP]: \"EveShip2\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_MOBILE]: \"EveMobile\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_STATIONARY]: \"EveStation2\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_SWARM]: \"EveSwarm\",\n [EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION]: \"EveMobile\"\n});\n\nconst SPACE_OBJECT_ROOT_KINDS = new Set([\n \"EveSpaceObject2\",\n \"EveShip2\",\n \"EveMobile\",\n \"EveStation2\",\n \"EveSwarm\"\n]);\n\nconst DECAL_EFFECT_NAMES = Object.freeze([\n \"decalv5.fx\",\n \"decalcounterv5.fx\",\n \"decalholev5.fx\",\n \"decalcylindricv5.fx\",\n \"decalglowcylindricv5.fx\",\n \"decalglowv5.fx\",\n \"decalv5.fx\"\n]);\n\nconst BANNER_EXTERNAL_PARAMETER_NAMES = Object.freeze([\n \"AllianceLogoResPath\",\n \"CorpLogoResPath\",\n \"CeoPortraitResPath\",\n \"VerticalBannerResPath\",\n \"HorizontalBannerResPath\",\n \"TargetSystemAllianceLogoResPath\",\n \"TargetSystemVerticalBannerResPath\",\n \"TargetSystemHorizontalBannerResPath\",\n \"TargetSystemInfo0ResPath\",\n \"TargetSystemInfo1ResPath\",\n \"TargetSystemInfo2ResPath\",\n \"TargetSystemInfo3ResPath\",\n \"TargetSystemInfo4ResPath\",\n \"TargetSystemStatusResPath\",\n \"CurrentSystemAllianceLogoResPath\",\n \"CurrentSystemVerticalBannerResPath\",\n \"CurrentSystemHorizontalBannerResPath\",\n \"PublicityPosterResPath\",\n \"PublicityPortraitResPath\",\n \"RecruitmentInformation0ResPath\",\n \"RecruitmentInformation1ResPath\",\n \"RecruitmentInformation2ResPath\",\n \"RecruitmentInformation3ResPath\",\n \"RecruitmentInformation4ResPath\"\n]);\n\nconst MIN_MESH_SCREEN_SIZE = 2.5;\n\n// Tr2Lod value stamped on distortion areas after fill (EveSOF.cpp:2149-2153);\n// The SOF layer stays free of a Trinity-layer import, so the enum value from\n// Tr2LodResource.h is mirrored here.\nconst TR2_LOD_HIGH = 2;\n\n// Carbon validates every resolved resource root against the interface its\n// role requires before attaching it: children must cast to EveTransform or\n// IEveSpaceObjectChild (EveSOF.cpp:1786-1844,1949-2004), controllers load as\n// ITr2Controller (2014-2033), and model curves load as ITriQuaternionFunction\n// / ITriVectorFunction (1668-1691). The GPU-free builder has no class\n// registry, so conformance comes from the descriptor's explicit `implements`\n// claim or from these Carbon-source kind inventories.\nconst CHILD_TRANSFORM_KINDS = new Set([\n \"EveTransform\",\n \"EveRootTransform\",\n \"EveMissileWarhead\"\n]);\n\nconst SPACE_OBJECT_CHILD_KINDS = new Set([\n \"EveChildAudio\",\n \"EveChildBehaviorSystem\",\n \"EveChildBulletStorm\",\n \"EveChildCloud\",\n \"EveChildCloud2\",\n \"EveChildContainer\",\n \"EveChildEffectPropagator\",\n \"EveChildExplosion\",\n \"EveChildFogVolume\",\n \"EveChildInstanceContainer\",\n \"EveChildInstanceMeshRenderer\",\n \"EveChildInstancedMeshes\",\n \"EveChildLightingOverride\",\n \"EveChildLineSet\",\n \"EveChildLink\",\n \"EveChildMesh\",\n \"EveChildParticleSphere\",\n \"EveChildParticleSystem\",\n \"EveChildPlug\",\n \"EveChildPostProcessVolume\",\n \"EveChildProceduralContainer\",\n \"EveChildQuad\",\n \"EveChildRef\",\n \"EveChildSmartLightSet\",\n \"EveChildSocket\",\n \"EveChildSpherePin\",\n \"EveEllipseSet\"\n]);\n\nconst OBJECT_RESOURCE_ROLE_GATES = Object.freeze({\n controller: {\n interfaceName: \"ITr2Controller\",\n kinds: new Set([\n \"Tr2Controller\",\n \"Tr2ControllerReference\",\n \"Tr2TimelineController\"\n ])\n },\n modelRotationCurve: {\n interfaceName: \"ITriQuaternionFunction\",\n kinds: new Set([\n \"Tr2CurveConstant\",\n \"Tr2CurveEulerRotation\",\n \"Tr2CurveEulerRotationExpression\",\n \"Tr2CurveQuaternion\",\n \"Tr2CurveRandomAxisRotation\",\n \"Tr2QuaternionLerpCurve\",\n \"Tr2RotationAdapter\",\n \"TriRigidOrientation\"\n ])\n },\n modelTranslationCurve: {\n interfaceName: \"ITriVectorFunction\",\n kinds: new Set([\n \"EveLocalPositionCurve\",\n \"EveRemotePositionCurve\",\n \"Tr2CurveCombiner\",\n \"Tr2CurveConstant\",\n \"Tr2CurveVector3\",\n \"Tr2CurveVector3Expression\",\n \"Tr2CurveVector3Lerp\",\n \"Tr2FollowCurve\",\n \"Tr2TranslationAdapter\",\n \"Tr2VectorFunctionModifier\",\n \"TriVectorSequencer\"\n ])\n }\n});\n\n// Sentinel returned when a resolved child root fails Carbon's type gate; the\n// callers mirror Carbon's early return rather than skipping one item.\nconst WRONG_TYPE_CHILD = Symbol(\"wrong-type-child\");\n\nfunction descriptorClaimsInterface(descriptor, interfaceName)\n{\n return Array.isArray(descriptor.implements) && descriptor.implements.includes(interfaceName);\n}\n// EveChildInheritProperties field order (src/trinity is the authority for\n// these names); dna.GetColorSet() is index-aligned with this Carbon color-slot\n// order, so the authored color set projects onto named, persisted fields.\nconst INHERIT_COLOR_PROPERTIES = Object.freeze([\n \"Primary\",\n \"Secondary\",\n \"Tertiary\",\n \"Black\",\n \"White\",\n \"Yellow\",\n \"Orange\",\n \"Red\",\n \"Blue\",\n \"Green\",\n \"Cyan\",\n \"Fire\",\n \"Hull\",\n \"Glass\",\n \"Reactor\",\n \"Darkhull\",\n \"Booster\",\n \"Killmark\",\n \"PrimaryLight\",\n \"SecondaryLight\",\n \"TertiaryLight\",\n \"WhiteLight\",\n \"PrimaryHologram\",\n \"SecondaryHologram\",\n \"TertiaryHologram\",\n \"State0\",\n \"State1\",\n \"State2\",\n \"State3\",\n \"StateVulnerable\",\n \"StateInvulnerable\",\n \"PrimaryForcefield\",\n \"SecondaryForcefield\",\n \"PrimaryBanner\",\n \"PrimaryFx\",\n \"SecondaryFx\",\n \"PrimarySpotlight\",\n \"SecondarySpotlight\",\n \"TertiarySpotlight\",\n \"PrimaryBillboard\",\n \"PrimaryWarpFx\",\n \"PrimaryAttackFx\",\n \"PrimarySiegeFx\",\n \"PrimaryDockedFx\"\n]);\n\nconst SWARM_BEHAVIOR_FIELD_NAMES = Object.freeze([\n \"mass\",\n \"speedMultiplier\",\n \"speedMinimum\",\n \"maxDistance0\",\n \"maxDistance1\",\n \"maxTime\",\n \"timeMultiplier\",\n \"agility\",\n \"speed0\",\n \"speed1\",\n \"weightFormation\",\n \"weightCohesion\",\n \"weightSeparation\",\n \"weightAlign\",\n \"weightWander\",\n \"weightAnchor\",\n \"anchorRadius0\",\n \"anchorRadius1\",\n \"maxDeceleration\",\n \"separationDistance\",\n \"formationDistance\",\n \"wanderFluctuation\",\n \"wanderDistance\",\n \"wanderRadius\"\n]);\n\nconst SOF_INSTANCE_LAYOUT = Object.freeze([\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 0, type: \"FLOAT32_4\", name: \"transform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 1, type: \"FLOAT32_4\", name: \"transform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 2, type: \"FLOAT32_4\", name: \"transform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 3, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 4, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 5, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 6, type: \"BYTE_4\", name: \"boneIndex\" })\n]);\n\n/** Carbon-first SOF builder whose sole supported public output is a GPU-free model-values graph. */\n@type.define({ className: \"EveSOF\", family: \"eve\" })\nexport class EveSOF extends CjsModel\n{\n\n @io.readwrite\n @type.boolean\n allowFileCaching = true;\n\n // Carbon registers this as the global TRI setting \"alphaCutoutShadowsEnabled\"\n // (EveSOF.cpp:61-62, default false); decal (alpha-cutout) areas take their\n // castsShadows state from it. Injected here per builder instead of a global.\n @io.readwrite\n @type.boolean\n alphaCutoutShadowsEnabled = false;\n\n // Carbon registers this as the global TRI setting \"volumetricTrailPath\"\n // (EveSOF.cpp:64-65, default empty); the booster trail set takes its mesh\n // resource path from it. Injected here per builder instead of a global.\n @io.readwrite\n @type.string\n volumetricTrailPath = \"\";\n\n // Carbon initializes each light's startTime from the current frame time,\n // phase-offsetting noise flicker by when the object was built. Injected\n // here per builder (default 0 keeps builds deterministic); the engine\n // passes its clock when it wants Carbon's de-synced flicker.\n @io.readwrite\n @type.float64\n buildTime = 0;\n\n @io.read\n @type.objectRef(\"EveSOFDataMgr\")\n dataMgr = new EveSOFDataMgr();\n\n @io.readwrite\n @type.boolean\n editorMode = false;\n\n #resourceExists = null;\n\n #childResourceResolver = null;\n\n #objectResourceResolver = null;\n\n #existingFilesCache = new Map();\n\n #asyncResources = Object.freeze({ getObject: null, exists: null });\n\n #dataPath = \"\";\n\n #dataLoadOperations = new Map();\n\n #sofLibraryBuilder = null;\n\n // Build-scope counterpart of Carbon's CCP_LOGERR sites: records in\n // layoutPlanner diagnostic shape ({ code, ...context }), reset by each\n // every values or deprecated document build and readable through\n // GetBuildDiagnostics().\n #buildDiagnostics = [];\n\n /** Add standalone SOF configuration or accept CjsLibrary topic forwarding. */\n Register(options = {})\n {\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"EveSOF.Register options must be an object\");\n }\n\n if (Object.prototype.hasOwnProperty.call(options, \"dataPath\"))\n {\n this.#dataPath = normalizeResourcePath(options.dataPath);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"resources\"))\n {\n const resources = options.resources ?? {};\n if (typeof resources !== \"object\" || Array.isArray(resources))\n {\n throw new TypeError(\"EveSOF resources must be an object or null\");\n }\n if (resources.getObject !== undefined && resources.getObject !== null && typeof resources.getObject !== \"function\")\n {\n throw new TypeError(\"EveSOF resources.getObject must be a function or null\");\n }\n if (resources.exists !== undefined && resources.exists !== null && typeof resources.exists !== \"function\")\n {\n throw new TypeError(\"EveSOF resources.exists must be a function or null\");\n }\n const getObject = Object.hasOwn(resources, \"getObject\")\n ? resources.getObject ?? null\n : this.#asyncResources.getObject;\n const exists = Object.hasOwn(resources, \"exists\")\n ? resources.exists ?? null\n : this.#asyncResources.exists;\n if (exists !== this.#asyncResources.exists) this.#existingFilesCache.clear();\n this.#asyncResources = {\n getObject,\n exists\n };\n }\n if (Object.prototype.hasOwnProperty.call(options, \"lazyData\"))\n {\n const lazyData = options.lazyData;\n if (lazyData === false || lazyData === null)\n {\n this.#sofLibraryBuilder = null;\n }\n else if (lazyData instanceof CjsSofLibraryBuilder)\n {\n this.SetSofLibraryBuilder(lazyData);\n }\n else\n {\n if (lazyData !== true && (!lazyData || typeof lazyData !== \"object\" || Array.isArray(lazyData)))\n {\n throw new TypeError(\"EveSOF lazyData must be true, false, null, a CjsSofLibraryBuilder, or builder options.\");\n }\n const builderOptions = lazyData === true ? {} : lazyData;\n const source = builderOptions.source ?? ((path, context) =>\n {\n const getObject = this.#asyncResources.getObject;\n if (!getObject)\n {\n throw new Error(\"EveSOF lazyData requires resources.getObject or a source function.\");\n }\n return getObject(path, { ...context, output: \"runtime\" });\n });\n this.SetSofLibraryBuilder(new CjsSofLibraryBuilder({\n ...builderOptions,\n dataMgr: this.dataMgr,\n source\n }));\n }\n }\n if (Object.prototype.hasOwnProperty.call(options, \"allowFileCaching\"))\n {\n this.allowFileCaching = Boolean(options.allowFileCaching);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"alphaCutoutShadowsEnabled\"))\n {\n this.alphaCutoutShadowsEnabled = Boolean(options.alphaCutoutShadowsEnabled);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"volumetricTrailPath\"))\n {\n this.volumetricTrailPath = String(options.volumetricTrailPath ?? \"\");\n }\n if (Object.prototype.hasOwnProperty.call(options, \"buildTime\"))\n {\n this.buildTime = Number(options.buildTime ?? 0);\n }\n if (Object.prototype.hasOwnProperty.call(options, \"resFileIndex\"))\n {\n // The resfileindex is the synchronous existence oracle Carbon gets from\n // its file system: authored res paths either appear in the index or do\n // not. Texture resPathInsert selection needs only this membership test,\n // so providing the index keeps the sync build pure while matching\n // Carbon's existence-driven path rewriting. Rich tool-owned indexes are\n // adapted to this list/predicate boundary by their composition layer.\n const index = options.resFileIndex;\n if (index === null) this.SetResourceExistsResolver(null);\n else if (Array.isArray(index))\n {\n // The canonical shape: a plain list of res file names, from wherever\n // the caller got them. Existence is case-insensitive membership,\n // matching Carbon's file-system semantics.\n const names = new Set(index.map(name => String(name ?? \"\").toLowerCase()));\n this.SetResourceExistsResolver(path => names.has(String(path ?? \"\").toLowerCase()));\n }\n else if (typeof index === \"function\") this.SetResourceExistsResolver(path => Boolean(index(path)));\n else if (index instanceof Set || index instanceof Map) this.SetResourceExistsResolver(path => index.has(path));\n else throw new TypeError(\"EveSOF resFileIndex must be an array of file names, a predicate, a Set, a Map, or null\");\n }\n if (Object.prototype.hasOwnProperty.call(options, \"editorMode\"))\n {\n this.editorMode = Boolean(options.editorMode);\n }\n return this;\n }\n\n /** Supplies the synchronous resource-existence probe used by texture inserts. */\n SetResourceExistsResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF resource existence resolver must be a function or null\");\n }\n this.#resourceExists = resolver === null ? null : path =>\n {\n const result = resolver(path);\n if (result && typeof result.then === \"function\")\n {\n throw new TypeError(\"EveSOF resource existence resolver must be synchronous\");\n }\n return result === true;\n };\n this.#existingFilesCache.clear();\n return this;\n }\n\n /**\n * Supplies Carbon's synchronous `.red` child-object compatibility boundary.\n *\n * The resolver receives `(redFilePath, context)` and returns either null, a\n * self-describing model-values root, `{ values, target?, implements?, raw? }`,\n * a local `{ kind, target, fields, raw }` descriptor, or\n * `{ document, root?, target?, implements?, raw? }` for a legacy complete\n * compatibility fragment consumed by the internal builder.\n *\n * Values fragments require `_type` on every model because the SOF layer does\n * not import the class library needed to infer an untagged nested model's\n * schema.\n * Target is `children` for an EveTransform root or `effectChildren` for an\n * IEveSpaceObjectChild root.\n */\n SetChildResourceResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF child resource resolver must be a function or null\");\n }\n this.#childResourceResolver = resolver;\n return this;\n }\n\n /** Supplies synchronous controller and model-curve values or legacy compatibility fragments. */\n SetObjectResourceResolver(resolver)\n {\n if (resolver !== null && typeof resolver !== \"function\")\n {\n throw new TypeError(\"EveSOF object resource resolver must be a function or null\");\n }\n this.#objectResourceResolver = resolver;\n return this;\n }\n\n /** Installs the nominal partial-catalog builder used by asynchronous DNA builds. */\n SetSofLibraryBuilder(builder)\n {\n if (builder !== null && !(builder instanceof CjsSofLibraryBuilder))\n {\n throw new TypeError(\"EveSOF library builder must be a CjsSofLibraryBuilder or null.\");\n }\n if (builder && builder.GetDataManager() !== this.dataMgr)\n {\n throw new TypeError(\"EveSOF library builder must update this factory's data manager.\");\n }\n this.#sofLibraryBuilder = builder;\n return this;\n }\n\n /** Returns the installed partial-catalog builder, or null. */\n GetSofLibraryBuilder()\n {\n return this.#sofLibraryBuilder;\n }\n\n /** Boots configured lazy generic data or the configured monolithic catalog. */\n async InitializeAsync(options = {})\n {\n if (this.#dataPath)\n {\n await this.LoadDataAsync(this.#dataPath);\n }\n else if (this.#sofLibraryBuilder)\n {\n await this.#sofLibraryBuilder.InitializeAsync(options.catalog ?? {});\n }\n return this;\n }\n\n /** Routes Carbon's resource load call through the SOF data manager. */\n @carbon.method\n @impl.implemented\n LoadData(filePath)\n {\n return this.dataMgr.LoadData(filePath);\n }\n\n /** Load SOF data through the configured promise-capable object resolver. */\n async LoadDataAsync(filePath = this.#dataPath)\n {\n const path = normalizeResourcePath(filePath);\n if (!path) throw new TypeError(\"EveSOF.LoadDataAsync requires a data path\");\n const getObject = this.#asyncResources.getObject;\n if (!getObject)\n {\n return this.dataMgr.LoadDataAsync(path);\n }\n\n const existing = this.#dataLoadOperations.get(path);\n if (existing) return existing;\n const operation = ResolveSofDependency(\n () => getObject(path, { role: \"sofData\", output: \"runtime\" }),\n path,\n \"sofData\",\n new Map()\n )\n .then(data => this.#sofLibraryBuilder\n ? (this.#sofLibraryBuilder.SetData(data), true)\n : this.dataMgr.SetData(data));\n this.#dataLoadOperations.set(path, operation);\n const clear = () =>\n {\n if (this.#dataLoadOperations.get(path) === operation) this.#dataLoadOperations.delete(path);\n };\n operation.then(clear, clear);\n return operation;\n }\n\n /** Creates and resolves one DNA instance against the loaded SOF library. */\n @carbon.method\n @impl.implemented\n CreateDna(dnaString)\n {\n const dna = new EveSOFDNA();\n dna.Setup(dnaString, this.dataMgr);\n return dna.IsValid() ? dna : null;\n }\n\n /**\n * Reports the visibility groups one DNA resolves, without building a graph.\n *\n * Visibility groups are how a faction turns hull attachment sets on and off,\n * so this answers which groups the selected hulls author, which the faction\n * declares, and therefore which sets a build emits. Carbon keeps only the\n * FNV1 hashes at runtime (EveSOFDataMgr.cpp:1301-1310) and has no equivalent\n * query; the names come from the catalog projection.\n */\n @carbon.method\n @impl.adapted\n GetDnaVisibilityGroups(dnaString)\n {\n const dna = this.CreateDna(dnaString);\n if (dna === null) return null;\n\n const declared = [...new Set(dna.factionData?.visibilityGroups ?? [])];\n const declaredSet = new Set(declared);\n const sets = [];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.hullDatas?.[hullIndex];\n if (!hull) continue;\n // A gated set is any hull collection whose records carry a visibility\n // group, so this follows the catalog rather than a second list of the\n // set kinds Carbon happens to gate today.\n for (const [field, values] of Object.entries(hull))\n {\n if (!Array.isArray(values)) continue;\n for (const value of values)\n {\n if (!value || value.visibilityGroupName === undefined) continue;\n const group = String(value.visibilityGroupName);\n sets.push({\n kind: field,\n // Carbon's projected sets keep the visibility hash, not the\n // authored set name, so name is present only where a projection\n // already carries one.\n name: String(value.name ?? \"\"),\n hullIndex,\n visibilityGroup: group,\n visible: declaredSet.has(group)\n });\n }\n }\n }\n\n const authored = [...new Set(sets.map(item => item.visibilityGroup))].sort();\n return {\n dna: String(dnaString),\n hulls: [...(dna.hullNames ?? [])],\n faction: String(dna.factionName ?? \"\"),\n race: String(dna.raceName ?? \"\"),\n declared: declared,\n authored: authored,\n visible: authored.filter(name => declaredSet.has(name)),\n hidden: authored.filter(name => !declaredSet.has(name)),\n sets: sets.map(item => item)\n };\n }\n\n /** Inspects one DNA selection without creating a graph or runtime values. */\n InspectDna(dnaString)\n {\n const dna = new EveSOFDNA();\n dna.Setup(dnaString, this.dataMgr);\n const buildable = dna.IsValid();\n const valid = buildable && dna.ValidateContent();\n return {\n buildable,\n valid,\n error: dna.GetParseError() ?? (valid ? null : \"invalid-content\")\n };\n }\n\n /** Performs Carbon's separate slow/offline DNA validation path. */\n @carbon.method\n @impl.implemented\n ValidateDNA(dnaString)\n {\n const dna = this.CreateDna(dnaString);\n return dna !== null && dna.ValidateContent();\n }\n\n /**\n * Builds the legacy `carbon.document` compatibility form.\n * @deprecated Use BuildValues(...).\n */\n @carbon.method\n @impl.implemented\n Build(hullName, factionName, raceName)\n {\n return this.BuildFromDNA(`${hullName}:${factionName}:${raceName}`);\n }\n\n /**\n * Promise-facing legacy `carbon.document` compatibility form.\n * @deprecated Use BuildValuesAsync(...).\n */\n BuildAsync(hullName, factionName, raceName, options = {})\n {\n return this.BuildFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /** Returns diagnostics from the most recent values build or deprecated document build. */\n GetBuildDiagnostics()\n {\n return this.#buildDiagnostics.map(entry => ({ ...entry }));\n }\n\n /** Builds the supported public model-values graph from three selections. */\n BuildValues(hullName, factionName, raceName, options = {})\n {\n return this.BuildValuesFromDNA(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /** Builds the supported public model-values graph asynchronously. */\n BuildValuesAsync(hullName, factionName, raceName, options = {})\n {\n return this.BuildValuesFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\n }\n\n /**\n * Builds the supported public model-values graph for a DNA string.\n *\n * The result is one nested, JSON-serializable root value carrying `_type` on\n * polymorphic nodes and `_id`/`_ref` only where topology demands shared\n * identity. There is no node table, `kind`/`fields` record, or `raw` payload.\n *\n * **No class registry is required, and none should be passed.** The SOF layer\n * must remain independent of Trinity classes, and JSON does not need the\n * classes it names. Building this used to hydrate\n * a document into live runtime objects and re-export them, which made a\n * registry mandatory and relocated a Trinity-layer dependency onto every\n * caller rather than removing it. Anything that takes a registry here is the\n * round trip growing back.\n *\n * Constructing objects is the caller's option, performed on the result:\n * `RootClass.from(values)` against whatever classes that caller has. The\n * direction matters — objects are built *from* the values, never in order to\n * produce them.\n *\n * The output is sparse by default: it carries what SOF set, and class\n * defaults belong to whoever constructs. Pass `populateDefaults: true` to\n * overlay defaults from the class families the caller has registered with\n * `CjsSchema`; SOF still does not import those families. The audio emitter is\n * ordinary declared data, an `AudEmitter` node in\n * `TriObserverLocal.observer`, so either form is a complete rebuild source.\n */\n BuildValuesFromDNA(dnaString, options = {})\n {\n const document = this.BuildFromDNA(dnaString, options);\n return document ? EveSOF.projectDocumentValues(document, options) : null;\n }\n\n /**\n * Builds one modular hull into an existing space-object values graph.\n *\n * Carbon mutates a live EveSpaceObject2. The device-free runtime keeps the\n * same owner-first and boolean contract while composing through its canonical\n * model-values boundary; a live CjsModel owner is exported, composed, then\n * populated through SetValues without importing Trinity into SOF.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Runtime SOF remains Trinity-free, so Carbon's live EveSpaceObject2 mutation is performed through the caller-supplied model-values contract.\")\n BuildChild(owner, dnaString, partTag, transform = identityMatrix(), options = {})\n {\n const isModel = owner instanceof CjsModel;\n const source = isModel\n ? owner.GetValues({ refs: true, forceTypeTags: true })\n : owner;\n const values = this.BuildChildValues(source, dnaString, partTag, transform, options);\n if (!values) return false;\n\n if (isModel)\n {\n const hydrationOptions = options?.hydration ?? {};\n owner.SetValues(values, Object.hasOwn(options ?? {}, \"registry\")\n ? { ...hydrationOptions, registry: options.registry }\n : hydrationOptions);\n }\n else\n {\n replacePlainValues(owner, values);\n }\n return true;\n }\n\n /**\n * Returns a new space-object values graph with one Carbon modular hull\n * contribution. Invalid DNA returns null without changing the input graph.\n */\n @impl.custom\n @impl.reason(\"Provides the immutable values form needed to compose a modular graph before optional Trinity hydration.\")\n BuildChildValues(ownerValues, dnaString, partTag, transform = identityMatrix(), options = {})\n {\n if (!ownerValues || typeof ownerValues !== \"object\" || Array.isArray(ownerValues))\n {\n throw new TypeError(\"EveSOF.BuildChildValues requires a self-describing space-object values root\");\n }\n const dna = this.CreateDna(dnaString);\n if (!dna) return null;\n\n const tag = normalizePartTag(partTag);\n const placementTransform = normalizePlacementTransform(transform);\n dna.SetParentBoundingSphere(null);\n dna.SetParentShapeEllipsoidInfo(null);\n\n const document = new SofDocumentBuilder();\n const rootRef = document.ImportValuesRoot(ownerValues);\n const root = document.GetNode(rootRef.$ref);\n if (!SPACE_OBJECT_ROOT_KINDS.has(root?.kind))\n {\n throw new TypeError(`EveSOF.BuildChildValues requires an EveSpaceObject2 values root, received ${root?.kind ?? \"unknown\"}`);\n }\n document.AddRoot(\"default\", rootRef);\n ensureSpaceObjectBuildFields(root.fields);\n this.#BuildChildIntoDocument(\n document,\n root.fields,\n dna,\n tag,\n placementTransform,\n options?.layout ?? options ?? {}\n );\n return EveSOF.projectDocumentValues(document.ToJSON(), options);\n }\n\n /** Supported async values build; dependency collection currently reuses the deprecated internal document builder. */\n async BuildValuesFromDNAAsync(dnaString, options = {})\n {\n const document = await this.BuildFromDNAAsync(dnaString, options);\n return document ? EveSOF.projectDocumentValues(document, options) : null;\n }\n\n /**\n * Canonical pure-data instantiation: the decoded (or raw black) sof catalog\n * plus a plain list of res file names.\n *\n * The catalog is mandatory - a factory without its data is useless. The\n * file list is the sole build-time resource dependency (resPathInsert\n * existence); without it every insert lookup reports missing and texture\n * paths fall back to their base values, with a one-time console warning.\n * The factory never fetches, never parses index formats, and never touches\n * the network: callers hand it bytes or data they acquired however they\n * chose.\n *\n * (`Create`, not `from` - CjsModel.from is the schema hydration contract\n * and keeps its signature.)\n */\n static Create({ black, resFileIndex } = {})\n {\n if (black === undefined || black === null)\n {\n throw new TypeError(\"EveSOF.Create requires the sof catalog: data.black bytes or its decoded data\");\n }\n const sof = new EveSOF();\n const data = (black instanceof ArrayBuffer || ArrayBuffer.isView(black))\n ? CjsBlackFormat.readPayload(\n ArrayBuffer.isView(black)\n ? black.buffer.slice(black.byteOffset, black.byteOffset + black.byteLength)\n : black,\n {}\n ).object\n : black;\n if (!sof.dataMgr.SetData(data))\n {\n throw new TypeError(\"EveSOF.Create could not ingest the sof catalog\");\n }\n if (resFileIndex === undefined || resFileIndex === null)\n {\n console.warn(\"EveSOF.Create: no resFileIndex file list provided; resPathInsert existence checks will report missing and texture paths fall back to their base values.\");\n }\n else\n {\n sof.Register({ resFileIndex });\n }\n return sof;\n }\n\n /**\n * Internal structural projection from the builder's `carbon.document`\n * intermediate to supported plain model values.\n *\n * Both forms are JSON describing one graph, so this is a structural rewrite\n * and nothing more: a node table becomes a tree, `kind` becomes `_type`, and\n * `{ $ref }` becomes a `{ _ref }` back-reference paired with an `_id` on the\n * first occurrence. `fields` and `raw` are envelopes, so their contents move\n * onto the node itself.\n *\n * **No class library is imported, by requirement.** The SOF layer must remain\n * independent of Trinity classes, and sparse JSON never needs the classes it\n * names. The previous implementation\n * hydrated the document into live runtime objects and called `GetValues` on\n * the root, which made a class registry mandatory and pushed a Trinity-layer\n * dependency onto every caller. Constructing objects to serialize a graph we\n * already hold is a round trip; building objects from these values is a thing\n * a caller may choose to do afterwards, with `RootClass.from(values)`.\n *\n * The output is therefore sparse unless `options.populateDefaults` is true.\n * That opt-in runs `CjsSchema.applyDefaults` after the structural projection,\n * using only class families the caller has already imported and registered.\n * It does not construct or initialize the authored graph and does not add a\n * SOF-to-Trinity dependency.\n *\n * @internal The document form is not a supported consumer boundary.\n */\n static projectDocumentValues(document, options = {})\n {\n const normalized = CjsCarbonDocument.normalize(document);\n const nodeById = new Map(normalized.nodes.map(node => [Number(node.id), node]));\n const rootRef = normalized.roots?.[0]?.ref;\n\n if (!CjsCarbonDocument.isRef(rootRef))\n {\n throw new TypeError(\"EveSOF values projection requires a document with one root reference.\");\n }\n\n // A node reachable more than once is shared topology and needs an identity;\n // one reachable once is ordinary nesting and needs none. Counting first\n // keeps `_id` off the great majority of nodes.\n const visits = new Map();\n CountDocumentVisits(rootRef, nodeById, visits);\n\n const values = ProjectDocumentNode(rootRef, nodeById, visits, new Map(), { nextId: 1 });\n const populateDefaults = options?.populateDefaults ?? false;\n if (typeof populateDefaults !== \"boolean\")\n {\n throw new TypeError(\"EveSOF populateDefaults option must be a boolean.\");\n }\n return populateDefaults ? CjsSchema.applyDefaults(values) : values;\n }\n\n /**\n * Deprecated async `carbon.document` assembly used internally by\n * `BuildValuesFromDNAAsync`.\n *\n * Resolve selected child/object dependencies without converting the\n * deterministic synchronous builder into an async state machine.\n *\n * A collection build records only dependencies selected by the normal SOF\n * filters. They are fetched concurrently, then the unchanged builder runs a\n * second time against synchronous per-call caches.\n *\n * @deprecated Use BuildValuesFromDNAAsync(...).\n */\n async BuildFromDNAAsync(dnaString, options = {})\n {\n if (this.#sofLibraryBuilder)\n {\n await this.#sofLibraryBuilder.EnsureFromDNA(dnaString, options.catalog ?? {});\n }\n const getObject = this.#asyncResources.getObject;\n const exists = this.#asyncResources.exists;\n if (!getObject && !exists) return this.BuildFromDNA(dnaString, options);\n\n const documentRequests = new Map();\n const existenceRequests = new Map();\n const collectionPrevious = {\n child: this.#childResourceResolver,\n object: this.#objectResourceResolver,\n exists: this.#resourceExists,\n allowFileCaching: this.allowFileCaching\n };\n\n try\n {\n if (getObject)\n {\n this.#childResourceResolver = (path, context) =>\n {\n CollectSofRequest(documentRequests, path, \"carbon.document\", \"child\", context);\n return null;\n };\n this.#objectResourceResolver = (path, context) =>\n {\n CollectSofRequest(documentRequests, path, \"carbon.document\", context?.role || \"object\", context);\n return null;\n };\n }\n if (exists)\n {\n this.allowFileCaching = false;\n this.#resourceExists = path =>\n {\n CollectSofRequest(existenceRequests, path, \"boolean\", \"exists\");\n return false;\n };\n }\n this.BuildFromDNA(dnaString, options);\n }\n finally\n {\n this.#childResourceResolver = collectionPrevious.child;\n this.#objectResourceResolver = collectionPrevious.object;\n this.#resourceExists = collectionPrevious.exists;\n this.allowFileCaching = collectionPrevious.allowFileCaching;\n }\n\n const documentResults = new Map();\n const existenceResults = new Map();\n await Promise.all([\n ...[ ...documentRequests.values() ].map(request => ResolveSofDependency(\n () => getObject(request.path, { ...request.context, role: request.role, output: request.output }),\n request.path,\n request.role,\n documentResults,\n request.key\n )),\n ...[ ...existenceRequests.values() ].map(request => ResolveSofDependency(\n () => exists(request.path, { role: request.role, output: request.output }),\n request.path,\n request.role,\n existenceResults,\n request.key\n ))\n ]);\n\n const projectionPrevious = {\n child: this.#childResourceResolver,\n object: this.#objectResourceResolver,\n exists: this.#resourceExists,\n allowFileCaching: this.allowFileCaching\n };\n try\n {\n if (getObject)\n {\n this.#childResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\n this.#objectResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\n }\n if (exists)\n {\n this.allowFileCaching = false;\n this.#resourceExists = path => existenceResults.get(SofRequestKey(path, \"boolean\")) === true;\n }\n return this.BuildFromDNA(dnaString, options);\n }\n finally\n {\n this.#childResourceResolver = projectionPrevious.child;\n this.#objectResourceResolver = projectionPrevious.object;\n this.#resourceExists = projectionPrevious.exists;\n this.allowFileCaching = projectionPrevious.allowFileCaching;\n }\n }\n\n /** Returns Carbon's layout selection and transform work as a detached CPU plan. */\n @carbon.method\n @impl.adapted\n PlanLayoutFromDNA(dnaString, options = {})\n {\n const dna = this.CreateDna(dnaString);\n return dna ? planSofLayouts(dna, options ?? {}) : null;\n }\n\n /**\n * Emits the deprecated internal `carbon.document` assembly form, including\n * deterministic layouts. `BuildValuesFromDNA` currently projects this\n * intermediate to the supported output. Layout options may be passed\n * directly or under an `options.layout` object.\n *\n * @deprecated Use BuildValuesFromDNA(...).\n */\n @carbon.method\n @impl.implemented\n BuildFromDNA(dnaString, options = {})\n {\n this.#buildDiagnostics = [];\n const dna = this.CreateDna(dnaString);\n if (!dna) return null;\n\n const buildClass = dna.GetBuildClass();\n const typeName = BUILD_CLASS_TYPES[buildClass];\n if (!typeName) return null;\n const hull = dna.hullDatas[0];\n const sphere = dna.GetHullBoundingSphere() ?? [0, 0, 0, -1];\n const document = new SofDocumentBuilder();\n const isExtension = buildClass === EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION;\n const hasShipInterface = typeName === \"EveShip2\" || typeName === \"EveSwarm\";\n const swarmBehavior = typeName === \"EveSwarm\"\n ? createSwarmBehaviorFields(dna.GetGenericSwarmProperties())\n : null;\n const mesh = isExtension ? document.AddNode(\"Tr2Mesh\", {}) : this.CreateMesh(dna, document);\n if (!mesh) return null;\n const rootFields = {\n dna: dna.GetDnaString(),\n boundingSphereCenter: Array.from(sphere).slice(0, 3),\n boundingSphereRadius: Number(sphere[3] ?? -1),\n shapeEllipsoidCenter: isExtension ? [0, 0, 0] : arrayValue(hull.shapeEllipsoidCenter, [0, 0, 0]),\n shapeEllipsoidRadius: isExtension ? [-1, -1, -1] : arrayValue(hull.shapeEllipsoidRadius, [-1, -1, -1]),\n dynamicBoundingSphereEnabled: isExtension ? false : dna.DynamicBoundingSphereEnabled(),\n castShadow: isExtension ? false : dna.CastShadow(),\n isAnimated: isExtension ? false : dna.IsHullAnimated(),\n reflectionMode: isExtension ? 3 : dna.GetReflectionMode(),\n mesh,\n effectChildren: [],\n children: [],\n curveSets: [],\n modelRotationCurve: null,\n modelTranslationCurve: null,\n attachments: [],\n decals: [],\n impactOverlay: null,\n customMasks: [],\n lights: [],\n externalParameters: [],\n controllers: [],\n observers: [],\n locators: [],\n locatorSets: []\n };\n if (hasShipInterface) rootFields.boosters = null;\n if (swarmBehavior) Object.assign(rootFields, swarmBehavior);\n if (isExtension)\n {\n if (!this.SetupExtensionBuild(document, rootFields, dna, options?.layout ?? options ?? {})) return null;\n rootFields.inheritProperties = createInheritProperties(document, dna);\n const root = document.AddNode(typeName, rootFields);\n document.AddRoot(\"default\", root);\n return document.ToJSON();\n }\n this.SetupCustomMask(document, rootFields, dna);\n this.SetupDecalSets(document, rootFields, dna);\n this.SetupLocators(document, rootFields, dna);\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\n this.SetupAttachments(document, rootFields, dna);\n this.SetupImpactEffects(document, rootFields, dna);\n this.SetupEffects(document, rootFields, rootFields, dna, [identityMatrix()], EveSOFDataHull.BuildFilter.STANDALONE);\n this.SetupAudio(document, rootFields, dna, identityMatrix());\n this.SetupControllers(document, rootFields, dna, EveSOFDataHull.BuildFilter.STANDALONE);\n this.SetupModelCurves(document, rootFields, dna);\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\n this.SetupLayout(document, rootFields, dna, options?.layout ?? options ?? {});\n if (hasShipInterface) this.SetupBoosters(document, rootFields, dna);\n rootFields.inheritProperties = createInheritProperties(document, dna);\n const root = document.AddNode(typeName, rootFields);\n document.AddRoot(\"default\", root);\n return document.ToJSON();\n }\n\n /** Ports Carbon's modular child construction into an existing document root. */\n #BuildChildIntoDocument(document, rootFields, dna, partTag, transform, layoutOptions)\n {\n const hasChildEffects = dna.UsingSof6()\n ? dna.GetHullChildSets().length !== 0\n : dna.GetHullChildren().length !== 0;\n const hasControllers = dna.GetHullControllers().length !== 0;\n const hasAnimation = dna.IsHullAnimated();\n const hasEmitters = dna.GetHullSoundEmitters().length !== 0;\n const hasLayouts = dna.GetLayoutCount() > 0;\n let hasAttachments = false;\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n if (dna.GetHullSpriteSets(hullIndex).length !== 0 ||\n dna.GetHullSpotlightSets(hullIndex).length !== 0 ||\n dna.GetHullPlaneSets(hullIndex).length !== 0 ||\n dna.GetHullSpriteLineSets(hullIndex).length !== 0 ||\n dna.GetHullHazeSets(hullIndex).length !== 0 ||\n dna.GetHullBanners(hullIndex).length !== 0 ||\n dna.GetHullBannerSets(hullIndex).length !== 0 ||\n dna.GetHullLightSets(hullIndex).length !== 0)\n {\n hasAttachments = true;\n break;\n }\n }\n\n // hasBoosters forces the placement container, as in Carbon (EveSOF.cpp:360).\n const hasBoosters = dna.GetHullBoosterCount() > 0;\n const needsPlacementContainer = hasControllers || hasAnimation || hasEmitters ||\n hasChildEffects || hasLayouts || hasAttachments || hasBoosters;\n const buildFlags = hasAnimation\n ? EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n : EveSOFDataHull.BuildFilter.INSTANCED_PLACEMENT;\n const rotation = quat.create();\n const translation = vec3.create();\n const scaling = vec3.create();\n decomposeCarbonMatrix(transform, rotation, translation, scaling);\n\n let placementRef = null;\n let placementFields = null;\n if (needsPlacementContainer)\n {\n placementFields = {\n ...createLayoutContainerFields(dna.GetHullNames()[0]),\n partTag,\n staticTransform: true,\n scaling: Array.from(scaling),\n rotation: Array.from(rotation),\n translation: Array.from(translation)\n };\n placementRef = document.AddNode(\"EveChildContainer\", placementFields);\n rootFields.effectChildren.push(placementRef);\n }\n\n if (hasAnimation)\n {\n const childFields = {\n name: dna.GetHullNames()[0],\n partTag,\n mesh: this.CreateMesh(dna, document),\n reflectionMode: dna.GetReflectionMode(),\n castShadow: dna.CastShadow(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: document.AddNode(\"Tr2GrannyAnimation\", {})\n };\n this.SetupDecalSets(document, childFields, dna);\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\n const childRef = document.AddNode(\"EveChildMesh\", childFields);\n placementFields.objects.push(childRef);\n placementFields.animationOwner = childRef;\n }\n else\n {\n const shared = ensureSharedInstancedMeshes(document, rootFields);\n const areas = this.CreateSharedLayoutAreas(document, dna);\n if (areas.length !== 0)\n {\n const instance = document.AddNode(\"EveChildInstancedMeshInstance\", {\n transform: transform.slice(),\n sphereIndex: 0\n });\n shared.meshes.push(document.AddNode(\"EveChildInstancedMesh\", {\n geometryPath: dna.GetHullGeometryResPath(),\n castsShadow: dna.CastShadow(),\n reflectionMode: dna.GetReflectionMode(),\n meshIndex: 0,\n areas,\n instances: [instance],\n partTags: [partTag],\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\n sofLocatorSetName: \"\",\n display: true\n }));\n }\n if (placementFields)\n {\n this.SetupAttachments(document, placementFields, dna, [transform], true);\n }\n }\n\n const instanceSphere = transformLayoutSphere(dna.GetHullBoundingSphere(), transform);\n if (instanceSphere)\n {\n rootFields.boundingSphereCenter = instanceSphere.slice(0, 3);\n rootFields.boundingSphereRadius = instanceSphere[3];\n }\n const ellipsoidBounds = transformLayoutEllipsoid(\n dna.GetHullShapeEllipsoid(),\n instanceSphere,\n transform\n );\n if (ellipsoidBounds)\n {\n const center = ellipsoidBounds.min.map((value, index) => (\n (value + ellipsoidBounds.max[index]) * 0.5\n ));\n const radius = ellipsoidBounds.min.map((value, index) => (\n (ellipsoidBounds.max[index] - value) * 0.5\n ));\n rootFields.shapeEllipsoidCenter = center;\n rootFields.shapeEllipsoidRadius = radius;\n dna.SetParentShapeEllipsoidInfo({ center, radius });\n }\n\n if (hasControllers)\n {\n this.SetupControllers(document, placementFields, dna, buildFlags);\n }\n if (placementFields)\n {\n this.SetupAudio(document, placementFields, dna, transform);\n }\n if (hasBoosters && placementFields)\n {\n this.SetupChildBoosters(document, placementFields, dna);\n }\n if (hasChildEffects)\n {\n this.SetupEffects(document, rootFields, placementFields, dna, [transform], buildFlags);\n }\n if (!rootFields.impactOverlay)\n {\n this.SetupImpactEffects(document, rootFields, dna);\n }\n this.SetupLocatorSets(document, rootFields, dna, [transform], partTag);\n this.SetupLayout(document, rootFields, dna, {\n ...(layoutOptions ?? {}),\n offsets: [transform]\n }, placementFields, {\n partTag\n });\n if (placementRef)\n {\n stampDocumentChildPartTag(document, placementRef, partTag);\n }\n }\n\n /** Emits Carbon's special extension-root path through a fake solo placement. */\n @carbon.method\n @impl.adapted\n SetupExtensionBuild(document, rootFields, dna, layoutOptions = {})\n {\n const extensionFields = {\n ...createLayoutContainerFields(\"Extension Container\"),\n alwaysOn: true,\n origin: 1\n };\n const needsPlacementContainer = dna.IsHullAnimated() || dna.GetHullControllers().length !== 0;\n const placementFields = needsPlacementContainer\n ? createLayoutContainerFields(\"Solo Placement\")\n : extensionFields;\n const childFields = {\n name: \"Hull\",\n mesh: this.CreateMesh(dna, document),\n castShadow: dna.CastShadow(),\n reflectionMode: dna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: dna.IsHullAnimated()\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\n : null\n };\n if (!childFields.mesh) return null;\n this.SetupDecalSets(document, childFields, dna);\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\n const child = document.AddNode(\"EveChildMesh\", childFields);\n placementFields.objects.push(child);\n\n if (needsPlacementContainer)\n {\n this.SetupControllers(\n document,\n placementFields,\n dna,\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n );\n }\n this.SetupAudio(document, placementFields, dna, identityMatrix());\n const hasChildEffects = dna.UsingSof6()\n ? dna.GetHullChildSets().length !== 0\n : dna.GetHullChildren().length !== 0;\n if (hasChildEffects)\n {\n const fakeFields = {\n effectChildren: [],\n };\n this.SetupEffects(\n document,\n rootFields,\n fakeFields,\n dna,\n [identityMatrix()],\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\n );\n if (needsPlacementContainer) placementFields.objects.push(...fakeFields.effectChildren);\n }\n if (needsPlacementContainer)\n {\n placementFields.animationOwner = dna.IsHullAnimated() ? child : null;\n extensionFields.objects.push(document.AddNode(\"EveChildContainer\", placementFields));\n }\n\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\n this.SetupLayout(document, rootFields, dna, layoutOptions, extensionFields);\n extensionFields.isPlacementRoot = true;\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", extensionFields));\n return child;\n }\n\n /** Creates the base Tr2Mesh graph and populates its SOF shader areas. */\n @carbon.method\n @impl.implemented\n CreateMesh(dna, document)\n {\n const fields = {\n geometryResPath: dna.GetHullGeometryResPath(),\n opaqueAreas: [],\n transparentAreas: [],\n additiveAreas: [],\n distortionAreas: [],\n depthAreas: []\n };\n const transparent = [];\n // Carbon's CreateMesh never fails: missing shader records degrade to\n // partially filled area vectors with a build diagnostic (EveSOF.cpp:500-515).\n this.SetupShaders(dna, document, fields, transparent);\n this.GenerateDepthFromAreaVector(document, fields.depthAreas, transparent, dna);\n return document.AddNode(\"Tr2Mesh\", fields);\n }\n\n /** Populates all five Carbon hull-area categories in source order. */\n @carbon.method\n @impl.implemented\n SetupShaders(dna, document, meshFields, transparent)\n {\n let meshIndexOffset = 0;\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n let count = 0;\n const fills = [\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE],\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_DECAL],\n [meshFields.transparentAreas, TriBatchType.TRIBATCHTYPE_TRANSPARENT],\n [meshFields.additiveAreas, TriBatchType.TRIBATCHTYPE_ADDITIVE],\n [meshFields.distortionAreas, TriBatchType.TRIBATCHTYPE_DISTORTION]\n ];\n for (const [target, batchType] of fills)\n {\n const result = this.FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document);\n count += result.count;\n if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT) transparent.push(...result.areas);\n }\n meshIndexOffset += count;\n }\n return true;\n }\n\n /** Converts one Carbon HullAreas vector into Tr2MeshArea/effect graph nodes. */\n @carbon.method\n @impl.implemented\n FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document)\n {\n // A missing source vector cannot occur in Carbon (hull area vectors always\n // exist for a valid hull index); treat it as empty rather than diagnosing.\n const source = dna.GetHullMeshAreas(batchType, hullIndex);\n if (!source) return { count: 0, areas: [] };\n const pending = [];\n for (const area of source)\n {\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\n if (!shaderData)\n {\n // Carbon logs and returns zero for this source, keeping the areas it\n // already appended and continuing with the remaining batches and\n // hulls (EveSOF.cpp:564-569); the build itself never aborts.\n this.#buildDiagnostics.push({\n code: \"missing-generic-shader\",\n batchType,\n hullIndex,\n shader: String(area.shader ?? \"\"),\n area: String(area.name ?? \"\")\n });\n target.push(...pending.map(item => item.ref));\n return { count: 0, areas: pending };\n }\n const built = buildMeshArea(\n document,\n dna,\n area,\n shaderData,\n batchType,\n meshIndexOffset,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n this.alphaCutoutShadowsEnabled,\n );\n pending.push(built);\n }\n target.push(...pending.map(item => item.ref));\n return { count: source.length, areas: pending };\n }\n\n /** Emits depth clones for transparent areas requesting Carbon depth generation. */\n @carbon.method\n @impl.implemented\n GenerateDepthFromAreaVector(document, depthAreas, transparentAreas, dna)\n {\n const depthShader = dna.GetGenericAreaShaderData(\"depthonlyv5.fx\");\n for (const source of transparentAreas)\n {\n if (!source.generateDepthArea) continue;\n const sourceEffect = document.GetNode(source.effect.$ref);\n let effectFields = cloneFields(sourceEffect.fields);\n if (depthShader)\n {\n const resource = source.resourceRefs.get(depthShader.transparencyTextureName);\n effectFields = {\n ...effectFields,\n effectFilePath: dna.GetCompleteShaderPath(\"depthonlyv5.fx\"),\n constParameters: [],\n parameters: [],\n resources: resource ? [resource] : []\n };\n }\n const effect = document.AddNode(\"Tr2Effect\", effectFields);\n const areaFields = { ...source.fields, effect };\n depthAreas.push(document.AddNode(\"Tr2MeshArea\", areaFields));\n }\n }\n\n /** Emits enabled pattern projections as EveCustomMask graph nodes. */\n @carbon.method\n @impl.adapted\n SetupCustomMask(document, rootFields, dna)\n {\n const application = dna.GetPatternApplicationData();\n if (!application) return;\n const layerCount = dna.GetPatternLayerCount();\n for (let layerIndex = 0; layerIndex < layerCount; layerIndex++)\n {\n const projection = dna.GetPatternProjectionData(application, layerIndex);\n if (!projection?.enabled) continue;\n const layer = dna.GetPatternLayerData(application, layerIndex);\n const targetMaterials = dna.GetMaterialTargets(layer);\n if (!layer || !targetMaterials) continue;\n rootFields.customMasks.push(document.AddNode(\"EveCustomMask\", {\n position: arrayValue(projection.position, [0, 0, 0]),\n scaling: arrayValue(projection.scaling, [1, 1, 1]),\n rotation: arrayValue(projection.rotation, [0, 0, 0, 1]),\n isMirrored: projection.isMirrored === true,\n clampU: layer.projectionAddressModeU === 3,\n clampV: layer.projectionAddressModeV === 3,\n materialIndex: Number(layer.materialSourceID ?? 0),\n targetMaterials: arrayValue(targetMaterials, [0, 0, 0, 0])\n }));\n }\n }\n\n /** Emits Carbon decal sets and records private static indices for SOF hydration. */\n @carbon.method\n @impl.adapted\n SetupDecalSets(document, rootFields, dna)\n {\n const hullOffset = [0, 0, 0];\n const combinedGeometryPath = dna.GetHullGeometryResPath().toLowerCase();\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const decalSet of dna.GetHullDecalSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(decalSet.visibilityGroup)) continue;\n for (const item of decalSet.items)\n {\n const usage = Number(item.usage);\n const effectName = DECAL_EFFECT_NAMES[usage];\n if (!effectName) continue;\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO && !dna.HasLogoSet(item.logoType)) continue;\n\n const constParameters = [];\n const parameterNames = new Set();\n const selectorFields = {};\n if (usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_STANDARD && usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\n {\n const color = dna.GetColorSet()[item.glowColorType];\n if (color)\n {\n selectorFields._glowColorType = Number(item.glowColorType ?? 0);\n parameterNames.add(\"DecalGlowColor\");\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"DecalGlowColor\",\n value: Array.from(color)\n }));\n }\n }\n for (const name of sortedKeys(item.parameters))\n {\n if (parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(item.parameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceNames = new Set();\n const addResource = (name, resourcePath) => {\n if (resourceNames.has(name)) return;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", { name, resourcePath }));\n };\n for (const name of sortedKeys(item.textures)) addResource(name, item.textures.get(name).resFilePath);\n\n const shaderData = dna.GetGenericDecalShaderData(effectName);\n if (shaderData)\n {\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n addResource(name, shaderData.defaultTextures.get(name).resFilePath);\n }\n if (item.meshIndex !== -1)\n {\n for (const name of shaderData.parentTextures)\n {\n const resourcePath = dna.GetHullTextureWithMeshIndex(\n name,\n item.meshIndex,\n hullIndex,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null\n );\n if (resourcePath !== null) addResource(name, resourcePath);\n }\n }\n }\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\n {\n const logo = dna.GetLogo(item.logoType);\n selectorFields._logoType = Number(item.logoType ?? 0);\n for (const name of sortedKeys(logo.textures)) addResource(name, logo.textures.get(name).resFilePath);\n }\n\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: `${dna.GetDecalShaderLocationResPath()}/${dna.GetShaderPrefix(false)}${effectName}`,\n constParameters,\n parameters: [],\n resources\n });\n const position = arrayValue(item.position, [0, 0, 0]);\n addOffset(position, hullOffset);\n const indexBuffers = selectDecalIndexBuffers(item, dna.GetMultiHullCount(), combinedGeometryPath);\n rootFields.decals.push(document.AddNode(\"EveSpaceObjectDecal\", {\n // These underscored fields retain the original SOF selectors in\n // JSON only; target Trinity classes intentionally ignore them.\n ...selectorFields,\n position,\n rotation: arrayValue(item.rotation, [0, 0, 0, 1]),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n parentBoneIndex: item.boneIndex,\n minScreenSize: 10,\n decalEffect: effect,\n staticIndexBuffers: indexBuffers\n }));\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's CPU-side armor, hull, flicker, and shield impact graph. */\n @carbon.method\n @impl.adapted\n SetupImpactEffects(document, rootFields, dna)\n {\n const impactType = dna.GetImpactEffectType();\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE) return;\n const damage = dna.GetGenericDamageData();\n const hullDamage = dna.GetGenericHullDamageData();\n const raceDamage = dna.GetRaceDamageData();\n if (!damage || !raceDamage) return;\n\n let shieldMesh = null;\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID)\n {\n const shieldEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: `${dna.GetAreaShaderLocationResPath()}/${dna.GetImpactShieldShader()}`,\n constParameters: effectParameters(document, raceDamage.shieldDamageParameters),\n parameters: [],\n resources: effectResources(document, raceDamage.shieldDamageTextures)\n });\n const shieldArea = document.AddNode(\"Tr2MeshArea\", { effect: shieldEffect });\n shieldMesh = document.AddNode(\"Tr2Mesh\", {\n geometryResPath: damage.shieldGeometryResFilePath,\n additiveAreas: [shieldArea]\n });\n }\n\n const armorDamageShader = this.CreateArmorDamageEffect(document, dna);\n const armorImpactEmitter = createImpactEmitter(document, {\n rate: damage.armorParticleRate,\n angle: damage.armorParticleAngle,\n innerAngle: 0,\n minMaxSpeed: damage.armorParticleMinMaxSpeed,\n minMaxLifeTime: damage.armorParticleMinMaxLifeTime,\n sizes: damage.armorParticleSizes,\n colors: damage.armorParticleColors,\n textureIndex: damage.armorParticleTextureIndex,\n velocityStretchRotation: damage.armorParticleVelocityStretchRotation,\n drag: damage.armorParticleDrag,\n turbulenceAmplitude: damage.armorParticleTurbulenceAmplitude,\n turbulenceFrequency: damage.armorParticleTurbulenceFrequency,\n colorMidpoint: damage.armorParticleColorMidPoint\n });\n const hullImpactEmitter = hullDamage ? createImpactEmitter(document, {\n rate: hullDamage.hullParticleRate,\n angle: hullDamage.hullParticleAngle,\n innerAngle: hullDamage.hullParticleInnerAngle,\n minMaxSpeed: hullDamage.hullParticleMinMaxSpeed,\n minMaxLifeTime: hullDamage.hullParticleMinMaxLifeTime,\n sizes: hullDamage.hullParticleSizes,\n colors: hullDamage.hullParticleColors,\n textureIndex: hullDamage.hullParticleTextureIndex,\n velocityStretchRotation: hullDamage.hullParticleVelocityStretchRotation,\n drag: hullDamage.hullParticleDrag,\n turbulenceAmplitude: hullDamage.hullParticleTurbulenceAmplitude,\n turbulenceFrequency: hullDamage.hullParticleTurbulenceFrequency,\n colorMidpoint: hullDamage.hullParticleColorMidpoint\n }) : null;\n const flickerCurve = document.AddNode(\"TriPerlinCurve\", {\n alpha: damage.flickerPerlinAlpha,\n beta: damage.flickerPerlinBeta,\n N: damage.flickerPerlinN,\n speed: damage.flickerPerlinSpeed,\n offset: 1,\n scale: 0\n });\n const shieldIsEllipsoid = impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID;\n rootFields.impactOverlay = document.AddNode(\"EveImpactOverlay\", {\n mesh: shieldMesh,\n shieldIsEllipsoid,\n armorDamageShader,\n armorImpactEmitter,\n hullDamageFlickerCurve: flickerCurve,\n hullImpactEmitter\n });\n }\n\n /** Selects Carbon's legacy or SOF6 effect-child path. */\n @carbon.method\n @impl.adapted\n SetupEffects(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n if (dna.UsingSof6())\n {\n this.SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\n }\n else\n {\n this.SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\n }\n }\n\n /** Emits legacy path-resolved children and Carbon's authored animation graph. */\n @carbon.method\n @impl.adapted\n SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n const emitterTargetsById = new Map();\n for (const child of dna.GetHullChildren())\n {\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const factionChild = dna.GetFactionChildData(child.groupIndex);\n if (factionChild && !factionChild.isVisible) continue;\n const descriptor = this.#resolveChildResource(child.redFilePath, child, false);\n // Carbon returns from SetupChildrenAndAnimations on a wrong-type child,\n // skipping the remaining children AND the animation pass (EveSOF.cpp:\n // 1840-1844); an unresolvable resource only skips the one child (1779-1783).\n if (descriptor === WRONG_TYPE_CHILD) return;\n if (!descriptor) continue;\n // Emitter rate bindings reach INTO the loaded child's graph; a deferred\n // EveChildRef has no graph to bind yet, so the binding is recorded as a\n // diagnostic instead of silently dropped. Embedding resolvers keep the\n // full Carbon binding behavior.\n if (descriptor.reference && Number(child.id ?? -1) !== -1)\n {\n this.#buildDiagnostics.push({\n code: \"deferred-child-animation-binding\",\n path: String(child.redFilePath ?? \"\"),\n id: Number(child.id)\n });\n }\n for (const offset of offsets)\n {\n const animationId = Number(child.id ?? -1);\n const ref = this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\n if (animationId !== -1)\n {\n if (!emitterTargetsById.has(animationId)) emitterTargetsById.set(animationId, []);\n emitterTargetsById.get(animationId).push(...collectDynamicEmitterRefs(document, ref, descriptor.target));\n }\n }\n }\n\n for (const animation of dna.GetHullAnimations())\n {\n const curves = [];\n const bindings = [];\n if (Number(animation.id) !== -1 && Number(animation.startRate) !== -1)\n {\n const scalar = document.AddNode(\"Tr2CurveScalar\", {\n keys: [\n scalarKey(0, animation.startRate),\n scalarKey(1, animation.endRate)\n ]\n });\n for (const emitter of emitterTargetsById.get(Number(animation.id)) ?? [])\n {\n bindings.push(document.AddNode(\"TriValueBinding\", {\n sourceAttribute: \"currentValue\",\n sourceObject: scalar,\n destinationAttribute: \"rate\",\n destinationObject: emitter\n }));\n }\n curves.push(scalar);\n }\n if (Number(animation.startRotationTime) !== -1)\n {\n const curve = document.AddNode(\"Tr2CurveQuaternion\", {\n keys: [\n quaternionKey(animation.startRotationTime, animation.startRotationValue),\n quaternionKey(animation.endRotationTime, animation.endRotationValue)\n ]\n });\n curves.push(curve);\n if (!objectFields.modelRotationCurve)\n {\n objectFields.modelRotationCurve = document.AddNode(\"Tr2RotationAdapter\", {});\n }\n bindings.push(document.AddNode(\"TriValueBinding\", {\n sourceAttribute: \"currentValue\",\n sourceObject: curve,\n destinationAttribute: \"value\",\n destinationObject: objectFields.modelRotationCurve\n }));\n }\n objectFields.curveSets.push(document.AddNode(\"TriCurveSet\", {\n name: String(animation.name ?? \"\"),\n curves,\n bindings\n }));\n // Carbon also leaves authored translation animation as a TODO.\n }\n }\n\n /** Emits SOF6 child sets after visibility and build-filter selection. */\n @carbon.method\n @impl.adapted\n SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n for (const childSet of dna.GetHullChildSets())\n {\n if (!dna.IsInVisibilityData(childSet.visibilityGroup)) continue;\n for (const child of childSet.items)\n {\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const descriptor = this.#resolveChildResource(child.redFilePath, child, true);\n // Carbon returns from SetupEffectChildren entirely on a wrong-type\n // child, skipping the remaining child sets (EveSOF.cpp:2000-2004).\n if (descriptor === WRONG_TYPE_CHILD) return;\n if (!descriptor) continue;\n for (const offset of offsets)\n {\n this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\n }\n }\n }\n }\n\n /**\n * Normalizes a child resource into an embeddable descriptor, preserving\n * resolver-free builds as EveChildRef nodes and rejecting roots outside\n * Carbon's child interfaces.\n */\n #resolveChildResource(redFilePath, child, sof6)\n {\n // Without a resolver the build stays complete AS DATA through Carbon's\n // own deferred-loading node: EveChildRef persists resPath, placement, and\n // loadChildAutomatically, and the runtime loads and attaches the child\n // when it pleases (EveChildRef_Blue.cpp:22-34). The type-based\n // children/effectChildren routing then happens at load time, where the\n // real root type is known. A configured resolver instead embeds the\n // child inline (the resolver supplies the type Carbon's cast would see).\n if (!this.#childResourceResolver)\n {\n return {\n kind: \"EveChildRef\",\n target: \"effectChildren\",\n reference: true,\n fields: {\n resPath: String(redFilePath ?? \"\"),\n loadChildAutomatically: true\n },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n let descriptor = this.#childResourceResolver(String(redFilePath ?? \"\"), { child, sof6 });\n if (descriptor && typeof descriptor.then === \"function\")\n {\n throw new TypeError(\"EveSOF child resource resolver must be synchronous\");\n }\n if (descriptor === null || descriptor === undefined)\n {\n // Carbon: CCP_LOGERR(\"resource file %s is invalid!\") and the child is\n // skipped (EveSOF.cpp:1779-1783,1942-1946).\n this.#buildDiagnostics.push({\n code: \"unresolved-child-resource\",\n reason: \"not-resolved\",\n path: String(redFilePath ?? \"\")\n });\n return null;\n }\n if (!descriptor || typeof descriptor !== \"object\")\n {\n throw new TypeError(\"EveSOF child resource resolver must return a child descriptor or null\");\n }\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\n let kind = descriptor.kind;\n let fragment = null;\n let values = null;\n let rootRef = null;\n if (descriptor.document && descriptor.values)\n {\n throw new TypeError(\"EveSOF child resource descriptor cannot contain both document and values\");\n }\n if (descriptor.document)\n {\n fragment = descriptor.document;\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\n {\n throw new TypeError(\"EveSOF child document descriptor requires a valid root ref\");\n }\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\n }\n else if (descriptor.values !== undefined)\n {\n if (!IsModelValuesRoot(descriptor.values))\n {\n throw new TypeError(\"EveSOF child values descriptor requires a self-describing root with _type\");\n }\n values = descriptor.values;\n kind = values._type;\n }\n if (typeof kind !== \"string\" || kind.length === 0)\n {\n throw new TypeError(\"EveSOF child resource descriptor requires a root kind\");\n }\n const isTransform = CHILD_TRANSFORM_KINDS.has(kind)\n || descriptorClaimsInterface(descriptor, \"EveTransform\");\n const isSpaceObjectChild = SPACE_OBJECT_CHILD_KINDS.has(kind)\n || descriptorClaimsInterface(descriptor, \"IEveSpaceObjectChild\");\n const target = descriptor.target ?? (isTransform ? \"children\" : \"effectChildren\");\n if (target !== \"children\" && target !== \"effectChildren\")\n {\n throw new TypeError(\"EveSOF child resource target must be children or effectChildren\");\n }\n // Carbon casts the loaded root: EveTransform joins the children list,\n // IEveSpaceObjectChild joins the effect children, and anything else logs\n // \"not of correct type\" and aborts the surrounding setup pass\n // (EveSOF.cpp:1786-1844,1949-2004).\n if (target === \"children\" ? !isTransform : !isSpaceObjectChild)\n {\n this.#buildDiagnostics.push({\n code: \"child-resource-wrong-type\",\n path: String(redFilePath ?? \"\"),\n kind,\n target\n });\n return WRONG_TYPE_CHILD;\n }\n return {\n kind,\n target,\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\n fragment,\n values,\n rootRef\n };\n }\n\n /**\n * Composes child placement, imports or allocates the resolved node, and\n * appends its reference to the selected owner list.\n */\n #addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset)\n {\n const placement = composeChildPlacement(child, offset);\n // \"children\"-target hosts accept only the SRT placement; effect children\n // additionally receive Carbon's LOD gate and placement origin.\n const placementFields = descriptor.target === \"children\"\n ? {\n scaling: placement.scaling,\n rotation: placement.rotation,\n translation: placement.translation\n }\n : placement;\n let ref;\n if (descriptor.fragment || descriptor.values)\n {\n ref = descriptor.values\n ? document.ImportValuesRoot(descriptor.values)\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\n const node = document.GetNode(ref.$ref);\n if (descriptor.raw && Object.keys(descriptor.raw).length)\n {\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\n }\n Object.assign(node.fields, cloneValue(placementFields));\n }\n else\n {\n ref = document.AddNode(\n descriptor.kind,\n { ...cloneFields(descriptor.fields), ...cloneValue(placementFields) },\n descriptor.raw ? cloneValue(descriptor.raw) : null\n );\n }\n const ownerFields = descriptor.target === \"children\" ? objectFields : childOwnerFields;\n ownerFields[descriptor.target].push(ref);\n return ref;\n }\n\n /** Emits local observers while retaining audio-backend construction intent. */\n @carbon.method\n @impl.adapted\n SetupAudio(document, rootFields, dna, parentOffset = identityMatrix())\n {\n const ignoredScale = vec3.create();\n const parentRotation = quat.create();\n const ignoredTranslation = vec3.create();\n decomposeCarbonMatrix(\n arrayValue(parentOffset, identityMatrix()),\n parentRotation,\n ignoredTranslation,\n ignoredScale\n );\n for (const emitter of dna.GetHullSoundEmitters())\n {\n const position = vec3.transformMat4(\n vec3.create(),\n arrayValue(emitter.position, [0, 0, 0]),\n arrayValue(parentOffset, identityMatrix())\n );\n const rotation = quat.multiply(\n quat.create(),\n parentRotation,\n arrayValue(emitter.rotation, [0, 0, 0, 1])\n );\n const front = vec3.transformQuat(vec3.create(), [0, 0, 1], rotation);\n // The emitter is a declared node in the observer's own `observer` slot,\n // not a descriptor hidden beside it. TriObserverLocal exists to hold \"an\n // audio or placement observer\" and forwards placement to it through\n // `observer.UpdatePlacement`, so this is the field the class was written\n // for; leaving it null and stashing a class name in `raw` described the\n // graph instead of being it.\n //\n // This emits a declarative identity and constructs nothing. Building the\n // live emitter remains src/audio's alone, which is what the runtime\n // architecture permits a producer to carry. The node also keeps the SOF\n // layer independent: no audio import is needed\n // to name a node any more than to name a Trinity one.\n rootFields.observers.push(document.AddNode(\"TriObserverLocal\", {\n name: String(emitter.name ?? \"\"),\n position: Array.from(position),\n front: Array.from(front),\n observer: document.AddNode(\"AudEmitter\", {\n name: String(emitter.name ?? \"\"),\n eventPrefix: String(emitter.prefix ?? \"\"),\n position: Array.from(position),\n scalingFactor: Number(emitter.attenuationScalingFactor ?? 1)\n })\n }));\n }\n }\n\n /** Loads filtered controller graph resources through the CPU document seam. */\n @carbon.method\n @impl.adapted\n SetupControllers(document, rootFields, dna, buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\n {\n for (const controller of dna.GetHullControllers())\n {\n if (((Number(controller.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\n const descriptor = this.#resolveObjectResource(controller.path, \"controller\");\n if (descriptor) rootFields.controllers.push(this.#addObjectResource(document, descriptor));\n }\n }\n\n /** Loads authored model curve resources after legacy animation bindings. */\n @carbon.method\n @impl.adapted\n SetupModelCurves(document, rootFields, dna)\n {\n const rotationPath = dna.GetModelRotationCurvePath();\n if (rotationPath)\n {\n const descriptor = this.#resolveObjectResource(rotationPath, \"modelRotationCurve\");\n if (descriptor) rootFields.modelRotationCurve = this.#addObjectResource(document, descriptor);\n }\n const translationPath = dna.GetModelTranslationCurvePath();\n if (translationPath)\n {\n const descriptor = this.#resolveObjectResource(translationPath, \"modelTranslationCurve\");\n if (descriptor) rootFields.modelTranslationCurve = this.#addObjectResource(document, descriptor);\n }\n }\n\n /** Emits Carbon's first-hull instanced attachment container and child meshes. */\n @carbon.method\n @impl.adapted\n SetupInstancedMeshes(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullInstanced = dna.GetHullInstancedMeshes();\n if (hullInstanced.length === 0) return null;\n\n let meshContainer = null;\n for (const ref of rootFields.effectChildren)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveChildContainer\" && node.fields?.name === \"Instanced Meshes\")\n {\n meshContainer = ref;\n break;\n }\n }\n if (!meshContainer)\n {\n meshContainer = document.AddNode(\"EveChildContainer\", {\n name: \"Instanced Meshes\",\n objects: []\n });\n rootFields.effectChildren.push(meshContainer);\n }\n const containerFields = document.GetNode(meshContainer.$ref).fields;\n if (!Array.isArray(containerFields.objects)) containerFields.objects = [];\n\n for (const source of hullInstanced)\n {\n if (!Array.isArray(source.instances) || source.instances.length === 0) continue;\n const propagated = propagateInstancedMeshInstances(source.instances, offsets);\n const built = this.CreateInstancedMesh(document, propagated.instances, source.geometryResPath);\n if (!built) continue;\n\n const shaderData = dna.GetGenericAreaShaderData(source.shader);\n if (shaderData)\n {\n built.opaqueAreas.push(createInstancedMeshArea(\n document,\n dna,\n source,\n shaderData,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n ));\n }\n\n const child = document.AddNode(\"EveChildMesh\", {\n name: \"\",\n mesh: built.ref,\n castShadow: dna.CastShadow(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\n instanceTransforms: propagated.instanceTransforms\n });\n\n if (Number(source.displayModifier) !== EveSOFDataInstancedMesh.DisplayQualityModifier.SHADER_ALL)\n {\n containerFields.objects.push(document.AddNode(\"EveChildContainer\", {\n name: \"Shader Quality Controlled Instanced Mesh\",\n displayFilter: Number(source.displayModifier ?? 0),\n objects: [child]\n }));\n }\n else\n {\n containerFields.objects.push(child);\n }\n }\n return meshContainer;\n }\n\n /** Creates the CPU-document half of Carbon's Tr2InstancedMesh pair. */\n @carbon.method\n @impl.adapted\n CreateInstancedMesh(document, instances, resourcePath)\n {\n if (!Array.isArray(instances) || instances.length === 0) return null;\n const bounds = translationBounds(instances);\n const maxScale = maximumInstanceScale(instances);\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\n name: \"\",\n particleSystem: null,\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\n rows: cloneValue(instances),\n explicitBoundingBox: true,\n aabbMin: bounds.min,\n aabbMax: bounds.max\n });\n const opaqueAreas = [];\n const ref = document.AddNode(\"Tr2InstancedMesh\", {\n geometryResPath: String(resourcePath ?? \"\"),\n opaqueAreas,\n boundsMethod: 2,\n instanceGeometryResPath: String(resourcePath ?? \"\"),\n instanceGeometryResource: instanceData,\n instanceMeshIndex: 0,\n minBounds: [0, 0, 0],\n maxBounds: [0, 0, 0],\n maxInstanceSize: maxScale\n });\n return { ref, instanceData, opaqueAreas, bounds, maxScale };\n }\n\n /** Emits Carbon layout placement batches from the deterministic CPU plan. */\n @carbon.method\n @impl.adapted\n SetupLayout(document, rootFields, dna, options = {}, targetFields = null, buildContext = {})\n {\n const plan = planSofLayouts(dna, options ?? {});\n if (plan.placements.length === 0) return plan;\n\n const layoutFields = targetFields ?? {\n name: \"layouts\",\n objects: [],\n curveSets: [],\n attachments: [],\n observers: [],\n lights: [],\n controllers: [],\n alwaysOn: true,\n origin: 1\n };\n const batches = groupLayoutPlacements(plan.placements);\n const shared = findSharedInstancedMeshes(document, rootFields);\n let sharedRef = shared?.ref ?? null;\n let sharedMeshes = shared?.meshes ?? null;\n const hasPartTag = Object.hasOwn(buildContext, \"partTag\");\n const fixedPartTag = hasPartTag ? normalizePartTag(buildContext.partTag) : 0;\n\n for (const occurrences of batches)\n {\n const first = occurrences[0];\n const extensionDna = this.CreateDna(first.dna);\n if (!extensionDna) continue;\n if (first.isInstanced) extensionDna.DisableAnimation();\n const transforms = occurrences.map(value => arrayValue(value.transform, identityMatrix()));\n updateLayoutBounds(rootFields, extensionDna, occurrences);\n const needsPlacementContainer = extensionDna.IsHullAnimated()\n || extensionDna.GetHullControllers().length !== 0;\n const placementFields = needsPlacementContainer\n ? occurrences.map(() => createLayoutContainerFields(first.name))\n : [];\n const placementAnimationOwners = needsPlacementContainer\n ? occurrences.map(() => null)\n : [];\n\n if (first.isInstanced && first.isShared)\n {\n const areas = this.CreateSharedLayoutAreas(document, extensionDna);\n if (areas.length !== 0)\n {\n if (!sharedRef)\n {\n sharedMeshes = [];\n sharedRef = document.AddNode(\"EveChildInstancedMeshes\", {\n name: \"SharedInstancedMeshes\",\n meshes: sharedMeshes\n });\n rootFields.effectChildren.push(sharedRef);\n }\n const instances = transforms.map((transform, sphereIndex) => document.AddNode(\n \"EveChildInstancedMeshInstance\",\n { transform, sphereIndex }\n ));\n sharedMeshes.push(document.AddNode(\"EveChildInstancedMesh\", {\n geometryPath: extensionDna.GetHullGeometryResPath(),\n castsShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n meshIndex: 0,\n areas,\n instances,\n ...(hasPartTag ? { partTags: transforms.map(() => fixedPartTag) } : {}),\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\n sofLocatorSetName: this.editorMode ? first.locatorSetName : \"\",\n display: true\n }));\n }\n }\n else if (first.isInstanced)\n {\n const instances = occurrences.map(value => packInstanceMatrix(value.transform, value.locator?.boneIndex));\n const built = this.CreateLayoutInstancedMesh(document, extensionDna, instances);\n if (built)\n {\n const childFields = {\n name: \"Instanced Hull\",\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\n mesh: built.ref,\n castShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n decals: [],\n attachments: [],\n lights: []\n };\n this.SetupDecalSets(document, childFields, extensionDna);\n addChildMeshShaderOption(\n document,\n childFields,\n \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\n \"SOIA_ENABLED\"\n );\n childFields.instanceTransforms = transforms;\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\n layoutFields.objects.push(document.AddNode(\"EveChildMesh\", childFields));\n }\n }\n else\n {\n // Non-instanced placements own their locator sets and, when they own\n // damage locators, their own armour-damage shader; the parent merges\n // and poses them at runtime (Carbon EveSOF.cpp:3899-3908,3971-3972).\n const ownedLocatorSets = this.BuildHullLocalLocatorSets(document, extensionDna);\n const partArmorDamageShader = extensionDna.GetLocatorCount(\"damage\") > 0\n ? this.CreateArmorDamageEffect(document, extensionDna)\n : null;\n for (let occurrenceIndex = 0; occurrenceIndex < occurrences.length; occurrenceIndex++)\n {\n const occurrence = occurrences[occurrenceIndex];\n const rotation = quat.create();\n const translation = vec3.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(occurrence.transform, rotation, translation, ignoredScale);\n const childFields = {\n name: \"Hull\",\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\n ownedLocatorSets,\n armorDamageShader: partArmorDamageShader,\n mesh: this.CreateMesh(extensionDna, document),\n castShadow: extensionDna.CastShadow(),\n reflectionMode: extensionDna.GetReflectionMode(),\n minScreenSize: MIN_MESH_SCREEN_SIZE,\n lowestLodVisible: 0,\n staticTransform: true,\n decals: [],\n attachments: [],\n lights: [],\n animationUpdater: extensionDna.IsHullAnimated()\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\n : null\n };\n if (!childFields.mesh) continue;\n this.SetupDecalSets(document, childFields, extensionDna);\n this.SetupAttachments(document, childFields, extensionDna, [identityMatrix()], false);\n childFields.scaling = arrayValue(occurrence.randomizedScaling, [1, 1, 1]);\n childFields.rotation = Array.from(rotation);\n childFields.translation = Array.from(translation);\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\n childFields.sofLocatorIndex = this.editorMode ? String(occurrence.locatorIndex) : \"\";\n const child = document.AddNode(\"EveChildMesh\", childFields);\n if (needsPlacementContainer)\n {\n placementFields[occurrenceIndex].objects.push(child);\n if (extensionDna.IsHullAnimated()) placementAnimationOwners[occurrenceIndex] = child;\n }\n else\n {\n layoutFields.objects.push(child);\n }\n }\n }\n\n if (first.isInstanced)\n {\n this.SetupAttachments(document, layoutFields, extensionDna, transforms, true);\n }\n for (let index = 0; index < occurrences.length; index++)\n {\n const target = needsPlacementContainer ? placementFields[index] : layoutFields;\n if (needsPlacementContainer)\n {\n this.SetupControllers(document, target, extensionDna, first.buildFlags);\n }\n this.SetupAudio(document, target, extensionDna, transforms[index]);\n }\n const hasChildEffects = extensionDna.UsingSof6()\n ? extensionDna.GetHullChildSets().length !== 0\n : extensionDna.GetHullChildren().length !== 0;\n if (hasChildEffects)\n {\n const fakeFields = {\n effectChildren: [],\n };\n this.SetupEffects(document, rootFields, fakeFields, extensionDna, transforms, first.buildFlags);\n if (needsPlacementContainer)\n {\n fakeFields.effectChildren.forEach((ref, index) => {\n placementFields[index % placementFields.length].objects.push(ref);\n });\n }\n }\n if (needsPlacementContainer)\n {\n for (let index = 0; index < placementFields.length; index++)\n {\n const fields = placementFields[index];\n if (!layoutContainerIsEmpty(fields))\n {\n const owner = placementAnimationOwners[index];\n if (owner) fields.animationOwner = owner;\n layoutFields.objects.push(document.AddNode(\"EveChildContainer\", fields));\n }\n }\n }\n this.SetupInstancedMeshes(document, rootFields, extensionDna, transforms);\n // Only instanced placements bake their locators into the root sets;\n // non-instanced children own theirs and the object merges them at\n // runtime (Carbon EveSOF.cpp:4171-4174).\n if (first.isInstanced)\n {\n this.SetupLocatorSets(\n document,\n rootFields,\n extensionDna,\n transforms,\n hasPartTag ? fixedPartTag : null\n );\n }\n }\n\n if (!targetFields && layoutFields.objects.length !== 0)\n {\n layoutFields.origin = 1;\n layoutFields.isPlacementRoot = true;\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", layoutFields));\n }\n return plan;\n }\n\n /** Creates typed effect-area records for EveChildInstancedMeshes.meshes. */\n @carbon.method\n @impl.adapted\n CreateSharedLayoutAreas(document, dna)\n {\n const result = [];\n const types = [\n TriBatchType.TRIBATCHTYPE_OPAQUE,\n TriBatchType.TRIBATCHTYPE_DECAL,\n TriBatchType.TRIBATCHTYPE_TRANSPARENT,\n TriBatchType.TRIBATCHTYPE_ADDITIVE,\n TriBatchType.TRIBATCHTYPE_DISTORTION\n ];\n for (const batchType of types)\n {\n const source = dna.GetHullMeshAreas(batchType, 0);\n if (!source) continue;\n for (const area of source)\n {\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\n if (!shaderData) continue;\n const built = buildMeshArea(\n document,\n dna,\n area,\n shaderData,\n batchType,\n 0,\n path => dna.ModifyTextureResPath(\n path,\n this.#resourceExists,\n this.allowFileCaching ? this.#existingFilesCache : null,\n ),\n this.alphaCutoutShadowsEnabled,\n false\n );\n addEffectShaderOption(document, built.effect, \"SPACE_OBJECT_INSTANCED_ATTACHMENT\", \"SOIA_SHARED\");\n result.push(document.AddNode(\"EveChildInstancedMeshArea\", {\n effect: built.effect,\n batchType: batchType === TriBatchType.TRIBATCHTYPE_DECAL\n ? TriBatchType.TRIBATCHTYPE_OPAQUE\n : batchType,\n areaIndex: Number(built.fields.index) >>> 0,\n areaCount: Number(built.fields.count) >>> 0,\n // Carbon EveSOF.cpp:434-440/4069-4075 copies the built area's\n // cutout/winding flags so instanced occluder raycasts classify\n // backfaces correctly.\n alphaCutout: !!built.fields.alphaCutout,\n reversed: !!built.fields.reversed\n }));\n }\n }\n return result;\n }\n\n /** Converts a placement transform batch into Carbon's non-shared instanced mesh graph. */\n @carbon.method\n @impl.adapted\n CreateLayoutInstancedMesh(document, dna, instances)\n {\n if (!instances.length) return null;\n const ref = this.CreateMesh(dna, document);\n if (!ref) return null;\n const node = document.GetNode(ref.$ref);\n const bounds = translationBounds(instances);\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\n name: \"\",\n particleSystem: null,\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\n rows: cloneValue(instances),\n explicitBoundingBox: true,\n aabbMin: bounds.min,\n aabbMax: bounds.max\n });\n node.kind = \"Tr2InstancedMesh\";\n Object.assign(node.fields, {\n boundsMethod: 2,\n instanceGeometryResPath: String(node.fields.geometryResPath ?? \"\"),\n instanceGeometryResource: instanceData,\n instanceMeshIndex: 0,\n minBounds: [0, 0, 0],\n maxBounds: [0, 0, 0],\n maxInstanceSize: maximumInstanceScale(instances)\n });\n return { ref, instanceData, bounds };\n }\n\n /** Emits Carbon's ship-only booster graph and booster locator records. */\n @carbon.method\n @impl.adapted\n SetupBoosters(document, rootFields, dna)\n {\n if (dna.GetHullBoosterCount() === 0) return null;\n const race = dna.GetRaceBoosterData();\n if (!race) return null;\n\n let alwaysOn = false;\n let hasTrails = false;\n let locatorIndex = 0;\n const items = [];\n const boosterLocatorRefs = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.GetHullBoosterData(hullIndex) ?? { alwaysOn: false, hasTrails: true, items: [] };\n alwaysOn = hull.alwaysOn === true;\n hasTrails ||= hull.hasTrails === true;\n for (const item of hull.items ?? [])\n {\n const transform = arrayValue(item.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: `locator_booster_${++locatorIndex}`,\n transform\n }));\n\n const ignoredScale = vec3.create();\n const rotation = quat.create();\n const position = vec3.create();\n decomposeCarbonMatrix(\n arrayValue(item.transform, identityMatrix()),\n rotation,\n position,\n ignoredScale\n );\n position[0] += hullOffset[0];\n position[1] += hullOffset[1];\n position[2] += hullOffset[2];\n boosterLocatorRefs.push(document.AddNode(\"Locator\", {\n position: Array.from(position),\n direction: Array.from(rotation),\n scale: [0, 0, 0],\n boneIndex: -1\n }));\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\n transform,\n functionality: arrayValue(item.functionality, [0, 1, 1, 1]),\n hasTrail: item.hasTrail !== false,\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\n lightScale: Number(item.lightScale ?? 1)\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n mergeDocumentLocatorSet(document, rootFields, \"boosters\", boosterLocatorRefs);\n\n const effect = createBoosterEffect(document, race, \"BOOSTER_LOD_HIGH\");\n const effectFar = createBoosterEffect(document, race, \"BOOSTER_LOD_LOW\");\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\n options: [],\n constParameters: [],\n parameters: [],\n resources: [\n document.AddNode(\"TriTextureParameter\", {\n name: \"NoiseMap\",\n resourcePath: \"res:/Texture/global/noise.dds\"\n }),\n document.AddNode(\"TriTextureParameter\", {\n name: \"DiffuseMap\",\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\n })\n ],\n samplerOverrides: []\n });\n const glows = document.AddNode(\"EveSpriteSet\", {\n sprites: [],\n effect: glowEffect\n });\n\n let trails = null;\n if (hasTrails)\n {\n const trailEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/VolumetricTrails.fx\",\n options: [],\n constParameters: [\n document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"TrailSize\",\n value: arrayValue(race.trailSize, [0, 0, 0, 0])\n }),\n document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"TrailColor\",\n value: arrayValue(race.trailColor, [0, 0, 0, 0])\n })\n ],\n parameters: [],\n resources: [],\n samplerOverrides: []\n });\n trails = document.AddNode(\"EveTrailsSet\", {\n // Carbon: trail->SetMeshResPath(g_volumetricTrailPath) (EveSOF.cpp:2720).\n geometryResPath: this.volumetricTrailPath,\n effect: trailEffect\n });\n }\n\n rootFields.boosters = document.AddNode(\"EveBoosterSet2\", {\n glowScale: Number(race.glowScale ?? 1),\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\n symHaloScale: Number(race.symHaloScale ?? 1),\n haloScaleX: Number(race.haloScaleX ?? 1),\n haloScaleY: Number(race.haloScaleY ?? 1),\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\n alwaysOn,\n lightOffset: Number(race.lightOffset ?? 0),\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\n lightRadius: Number(race.lightRadius ?? 0),\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\n effect,\n effectFar,\n glows,\n trails,\n items\n });\n return rootFields.boosters;\n }\n\n /**\n * Emits the child-graph booster set into a placement container (Carbon\n * EveSOF::SetupChildBoosters, EveSOF.cpp:3049-3132): per-hull\n * driveName/effectPath/parameter/texture overrides with the\n * EveChildBoosterSet defaults as fallback, the LOD effect pair, one glow\n * sprite set, and every hull's items with the cumulative multi-hull\n * offset. Quad-renderer registration and PrepareResources are engine\n * realizations; the booster set node carries everything else.\n */\n @carbon.method\n @impl.adapted\n SetupChildBoosters(document, placementFields, dna)\n {\n if (dna.GetHullBoosterCount() === 0) return null;\n const race = dna.GetRaceBoosterData();\n if (!race) return null;\n const hull0 = dna.GetHullBoosterData(0) ?? {};\n\n // EveChildBoosterSet.DEFAULT_DRIVE_NAME / DEFAULT_EFFECT_PATH\n // (EveChildBoosterSet.h:94-96); SOF stays import-free of trinity.\n const driveName = hull0.driveName || \"ThrustMain\";\n const effectPath = hull0.effectPath ||\n \"res:/Graphics/Effect/Managed/Space/Booster/ChildBoosterVolumetric.fx\";\n const effect = createBoosterEffect(\n document, race, \"BOOSTER_LOD_HIGH\", effectPath, hull0.parameters, hull0.textures);\n const effectFar = createBoosterEffect(\n document, race, \"BOOSTER_LOD_LOW\", effectPath, hull0.parameters, hull0.textures);\n\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\n options: [],\n constParameters: [],\n parameters: [],\n resources: [\n document.AddNode(\"TriTextureParameter\", {\n name: \"NoiseMap\",\n resourcePath: \"res:/Texture/global/noise.dds\"\n }),\n document.AddNode(\"TriTextureParameter\", {\n name: \"DiffuseMap\",\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\n })\n ],\n samplerOverrides: []\n });\n const glows = document.AddNode(\"EveSpriteSet\", { sprites: [], effect: glowEffect });\n\n const items = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n const hull = dna.GetHullBoosterData(hullIndex) ?? { items: [] };\n for (const item of hull.items ?? [])\n {\n const transform = arrayValue(item.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\n transform,\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\n lightScale: Number(item.lightScale ?? 1)\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n\n const ref = document.AddNode(\"EveChildBoosterSet\", {\n name: \"Boosters\",\n driveName,\n glowScale: Number(race.glowScale ?? 1),\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\n symHaloScale: Number(race.symHaloScale ?? 1),\n haloScaleX: Number(race.haloScaleX ?? 1),\n haloScaleY: Number(race.haloScaleY ?? 1),\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\n lightOffset: Number(race.lightOffset ?? 0),\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\n lightRadius: Number(race.lightRadius ?? 0),\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\n effect,\n effectFar,\n glows,\n items\n });\n placementFields.objects.push(ref);\n return ref;\n }\n\n /**\n * Normalizes a controller or model-curve resource, retaining resolver-free\n * references and enforcing the Carbon interface required by its role.\n */\n #resolveObjectResource(path, role)\n {\n if (!this.#objectResourceResolver)\n {\n // Controllers have Carbon's own deferred node: Tr2ControllerReference\n // persists the path and loads the controller at runtime\n // (Tr2ControllerReference_Blue.cpp:16-23).\n if (role === \"controller\")\n {\n return {\n kind: \"Tr2ControllerReference\",\n reference: true,\n fields: { path: String(path ?? \"\") },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n // Model curves have no Carbon reference node - Carbon inline-loads\n // them only because its blocking BeResMan made that free; nothing\n // about the loaded curve feeds back into composition. They defer\n // through the CarbonEngineJS-original CjsExternalRef, carrying the\n // interface gate for the loader to enforce at splice time.\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\n return {\n kind: \"CjsExternalRef\",\n reference: true,\n fields: {\n resPath: String(path ?? \"\"),\n expects: gate ? gate.interfaceName : \"\"\n },\n raw: {},\n fragment: null,\n rootRef: null\n };\n }\n let descriptor = this.#objectResourceResolver(String(path ?? \"\"), { role });\n if (descriptor && typeof descriptor.then === \"function\")\n {\n throw new TypeError(\"EveSOF object resource resolver must be synchronous\");\n }\n if (descriptor === null || descriptor === undefined)\n {\n // Carbon: controllers log \"controller resource file %s is invalid!\"\n // (EveSOF.cpp:2028-2031); model curves skip silently (1672-1690).\n this.#buildDiagnostics.push({\n code: \"unresolved-object-resource\",\n reason: \"not-resolved\",\n role,\n path: String(path ?? \"\")\n });\n return null;\n }\n if (!descriptor || typeof descriptor !== \"object\")\n {\n throw new TypeError(\"EveSOF object resource resolver must return an object descriptor or null\");\n }\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\n let kind = descriptor.kind;\n let fragment = null;\n let values = null;\n let rootRef = null;\n if (descriptor.document && descriptor.values)\n {\n throw new TypeError(\"EveSOF object resource descriptor cannot contain both document and values\");\n }\n if (descriptor.document)\n {\n fragment = descriptor.document;\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\n {\n throw new TypeError(\"EveSOF object document descriptor requires a valid root ref\");\n }\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\n }\n else if (descriptor.values !== undefined)\n {\n if (!IsModelValuesRoot(descriptor.values))\n {\n throw new TypeError(\"EveSOF object values descriptor requires a self-describing root with _type\");\n }\n values = descriptor.values;\n kind = values._type;\n }\n if (typeof kind !== \"string\" || kind.length === 0)\n {\n throw new TypeError(\"EveSOF object resource descriptor requires a root kind\");\n }\n // Carbon loads these roles through typed LoadObject calls, so a root that\n // does not implement the role's interface never attaches: controllers log\n // and skip (EveSOF.cpp:2024-2031); model curves skip (1672-1690).\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\n if (gate && !gate.kinds.has(kind) && !descriptorClaimsInterface(descriptor, gate.interfaceName))\n {\n this.#buildDiagnostics.push({\n code: \"object-resource-wrong-type\",\n role,\n path: String(path ?? \"\"),\n kind,\n expected: gate.interfaceName\n });\n return null;\n }\n return {\n kind,\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\n fragment,\n values,\n rootRef\n };\n }\n\n /**\n * Imports a resolved values or document root into the builder, or allocates a\n * standalone node, then overlays any raw fields.\n */\n #addObjectResource(document, descriptor)\n {\n if (!descriptor.fragment && !descriptor.values)\n {\n return document.AddNode(descriptor.kind, cloneFields(descriptor.fields), cloneValue(descriptor.raw));\n }\n const ref = descriptor.values\n ? document.ImportValuesRoot(descriptor.values)\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\n if (descriptor.raw && Object.keys(descriptor.raw).length)\n {\n const node = document.GetNode(ref.$ref);\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\n }\n return ref;\n }\n\n /** Emits the currently maintained Carbon attachment stages in source order. */\n @carbon.method\n @impl.adapted\n SetupAttachments(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n // Carbon caches this effect on the EveSOF instance. Document-local sharing\n // avoids cross-build graph identity; do not widen it without an operational\n // consumer that requires mutable identity across builds.\n const sharedSpriteEffect = { ref: null };\n this.SetupSpriteSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\n this.SetupSpotlightSets(document, rootFields, dna, offsets, isInstancedPlacement);\n this.SetupPlaneSets(document, rootFields, dna, offsets, isInstancedPlacement);\n this.SetupSpriteLineSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\n this.SetupHazeSets(document, rootFields, dna, offsets, isInstancedPlacement);\n // Carbon gates banners on the owner's root object casting to EveSpaceObject2;\n // only space-object roots carry the externalParameters banner surface.\n if (Array.isArray(rootFields.externalParameters))\n {\n if (dna.UsingSof6()) this.SetupBannerSets(document, rootFields, dna, offsets);\n else this.SetupBanners(document, rootFields, dna, offsets);\n }\n this.SetupLights(document, rootFields, dna, offsets);\n }\n\n /** Emits visible EveSpriteSet attachments and their SOF6 lights. */\n @carbon.method\n @impl.adapted\n SetupSpriteSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpriteSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n if (!sharedEffect.ref)\n {\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\n constParameters: [],\n parameters: [],\n resources: []\n });\n }\n\n const sprites = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = Array.from(sourceColor, value => Number(value) * Number(item.intensity ?? 1));\n const position = vec3.transformMat4(\n vec3.create(),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n arrayValue(offset, identityMatrix())\n );\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n sprites.push(document.AddNode(\"EveSpriteSetItem\", {\n _colorType: Number(item.colorType ?? 0),\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n boneIndex: Number(item.boneIndex ?? 0),\n falloff: Number(item.falloff ?? 0),\n maxScale: Number(item.maxScale ?? 10),\n minScale: Number(item.minScale ?? 1),\n position: Array.from(position),\n color\n }));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const lightColor = saturateColor(color, item.light.saturation);\n lights.push(document.AddNode(\"EveSpriteLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: [\n Number(item.light.translation?.[0] ?? 0) + position[0],\n Number(item.light.translation?.[1] ?? 0) + position[1],\n Number(item.light.translation?.[2] ?? 0) + position[2]\n ],\n rotation: arrayValue(item.light.rotation, [0, 0, 0, 1]),\n color: lightColor,\n radius: Number(item.light.outerScaleMultiplier ?? 2),\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\n brightness: Number(item.light.intensity ?? 1),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n minScale: Number(item.minScale ?? 1),\n maxScale: Number(item.maxScale ?? 10),\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\n }));\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EveSpriteSet\", {\n effect: sharedEffect.ref,\n skinned: set.skinned === true && !isInstancedPlacement,\n sprites,\n lights\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon spotlight geometry, effects, and authored SOF6 light descriptors. */\n @carbon.method\n @impl.adapted\n SetupSpotlightSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpotlightSets(hullIndex))\n {\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\n\n const coneEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightconepool.fx\",\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"zOffset\",\n value: Array(4).fill(Number(set.zOffset ?? 0))\n })],\n parameters: [],\n resources: [document.AddNode(\"TriTextureParameter\", {\n name: \"TextureMap\",\n resourcePath: String(set.coneTextureResPath ?? \"\")\n })]\n });\n const glowEffect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightglowpool.fx\",\n constParameters: [],\n parameters: [],\n resources: [document.AddNode(\"TriTextureParameter\", {\n name: \"TextureMap\",\n resourcePath: String(set.glowTextureResPath ?? \"\")\n })]\n });\n const spotlightItems = [];\n const lights = [];\n let index = 0;\n\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n let coneColor;\n let flareColor;\n let spriteColor;\n let lightColor;\n if (dna.UsingSof6())\n {\n lightColor = dna.GetColorSet()[item.colorType];\n if (!lightColor) continue;\n coneColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.75, 0.5), item.coneIntensity);\n flareColor = multiplyColor(modifyColor(lightColor, item.saturation, 1), item.flareIntensity);\n spriteColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.9, 0.75), item.spriteIntensity);\n }\n else\n {\n const faction = dna.GetFactionSpotlightSetData(item.groupIndex);\n if (!faction) continue;\n coneColor = multiplyColor(faction.coneColor, item.coneIntensity);\n flareColor = multiplyColor(faction.flareColor, item.flareIntensity);\n spriteColor = multiplyColor(faction.spriteColor, item.spriteIntensity);\n lightColor = faction.coneColor;\n }\n const selectorFields = dna.UsingSof6()\n ? { _colorType: Number(item.colorType ?? 0) }\n : {};\n\n const transform = arrayValue(item.transform, identityMatrix());\n mat4.multiply(\n transform,\n mat4.fromTranslation(mat4.create(), hullOffset),\n transform\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n\n spotlightItems.push(document.AddNode(\"EveSpotlightSetItem\", {\n ...selectorFields,\n boneIndex: Number(item.boneIndex ?? 0),\n boosterGainInfluence: item.boosterGainInfluence === true,\n coneColor,\n flareColor,\n spriteColor,\n spriteScale: arrayValue(item.spriteScale, [1, 1, 1]),\n transform\n }));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const position = vec3.create();\n const rotation = quat.create();\n const scaling = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, scaling);\n const scale = Array.from(scaling, Math.abs);\n const angle = scale[2] > 0\n ? Math.atan(Math.max(scale[0], scale[1]) / (2 * scale[2])) * 180 / Math.PI\n : 0;\n const localPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(item.light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(localPosition, localPosition, position);\n lights.push(document.AddNode(\"EveSpotlightLight\", {\n ...selectorFields,\n lightData: {\n position: Array.from(localPosition),\n rotation: Array.from(rotation),\n color: saturateColor(lightColor, item.saturation * item.light.saturation),\n innerAngle: Number(item.light.innerAngleMultiplier ?? 0.5) * angle,\n outerAngle: Number(item.light.outerAngleMultiplier ?? 1) * angle,\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1) * scale[2],\n radius: Number(item.light.outerScaleMultiplier ?? 1) * scale[2],\n brightness: Number(item.light.intensity ?? 1) * Number(item.coneIntensity ?? 0),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n texturePath: String(item.light.lightProfilePath ?? \"\"),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\"),\n boosterGainInfluence: item.boosterGainInfluence === true\n }));\n }\n index++;\n }\n }\n }\n\n rootFields.attachments.push(document.AddNode(\"EveSpotlightSet\", {\n coneEffect,\n glowEffect,\n lights,\n skinned: set.skinned === true && !isInstancedPlacement,\n spotlightItems\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon plane-set effects, items, and authored SOF6 lights. */\n @carbon.method\n @impl.adapted\n SetupPlaneSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullPlaneSets(hullIndex))\n {\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\n const skinned = set.skinned === true && !isInstancedPlacement;\n const resources = [];\n let imageMap = null;\n let pickBufferID = 0;\n if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO)\n {\n imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"dynamic:/inspacevideos\"\n });\n resources.push(imageMap);\n }\n else if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO)\n {\n imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"dynamic:/hangarvideos\"\n });\n resources.push(imageMap);\n pickBufferID = 100;\n }\n const layerMap1 = document.AddNode(\"TriTextureParameter\", {\n name: \"Layer1Map\",\n resourcePath: String(set.layer1MapResPath ?? \"\")\n });\n const layerMap2 = document.AddNode(\"TriTextureParameter\", {\n name: \"Layer2Map\",\n resourcePath: String(set.layer2MapResPath ?? \"\")\n });\n const maskMap = document.AddNode(\"TriTextureParameter\", {\n name: \"MaskMap\",\n resourcePath: String(set.maskMapResPath ?? \"\")\n });\n resources.push(layerMap1, layerMap2, maskMap);\n const planeData = [\n set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HAZE ? 1 : 0,\n Number(set.atlasSize ?? 1),\n Math.floor(Number(set.atlasAspectRatio?.[0] ?? 1)),\n Math.floor(Number(set.atlasAspectRatio?.[1] ?? 1))\n ];\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: getPlaneSetEffectPath(set.usage, skinned),\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\n name: \"PlaneData\",\n value: planeData\n })],\n parameters: [],\n resources\n });\n\n const planes = [];\n const lights = [];\n let usesLightParameters = false;\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n\n let color;\n let selectorFields = {};\n if (dna.UsingSof6())\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n color = saturateColor(multiplyColor(sourceColor, item.intensity), item.saturation);\n selectorFields = { _colorType: Number(item.colorType ?? 0) };\n }\n else\n {\n color = arrayValue(item.color, [1, 1, 1, 1]);\n const faction = dna.GetFactionPlaneSetData(item.groupIndex);\n if (faction) color = arrayValue(faction.color, [0, 0, 0, 0]);\n }\n\n const blinkData = [\n Number(item.rate ?? 1),\n Number(item.phase ?? 0),\n Number(item.dutyCycle ?? 1),\n Number(item.blinkMode ?? 0)\n ];\n planes.push(document.AddNode(\"EvePlaneSetItem\", {\n ...selectorFields,\n boneIndex: Number(item.boneIndex ?? -1),\n color,\n layer1Scroll: arrayValue(item.layer1Scroll, [0, 0, 0, 0]),\n layer1Transform: arrayValue(item.layer1Transform, [0, 0, 0, 0]),\n layer2Scroll: arrayValue(item.layer2Scroll, [0, 0, 0, 0]),\n layer2Transform: arrayValue(item.layer2Transform, [0, 0, 0, 0]),\n maskAtlasID: Number(item.maskMapAtlasIndex ?? 0) >>> 0,\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n blinkData\n }));\n\n if (dna.UsingSof6())\n {\n if (item.lights.length) usesLightParameters = true;\n for (const light of item.lights)\n {\n const maxScale = Math.max(...arrayValue(item.scaling, [1, 1, 1]));\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(lightPosition, lightPosition, position);\n lights.push(document.AddNode(\"EvePlaneLight\", {\n ...selectorFields,\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: saturateColor(color, light.saturation),\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? -1),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index,\n lightProfilePath: String(light.lightProfilePath ?? \"\"),\n fadeType: Number(item.blinkMode ?? 0),\n blinkPhase: Number(item.phase ?? 0),\n blinkRate: Number(item.rate ?? 1)\n }));\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EvePlaneSet\", {\n effect,\n lights,\n pickBufferID,\n planes,\n skinned,\n imageMapParameter: usesLightParameters ? imageMap : null,\n layerMap1Parameter: usesLightParameters ? layerMap1 : null,\n layerMap2Parameter: usesLightParameters ? layerMap2 : null,\n maskMapParameter: usesLightParameters ? maskMap : null\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon sprite-line geometry and authored SOF6 per-sprite lights. */\n @carbon.method\n @impl.adapted\n SetupSpriteLineSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullSpriteLineSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n if (!sharedEffect.ref)\n {\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\n constParameters: [],\n parameters: [],\n resources: []\n });\n }\n\n const spriteLines = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = multiplyColor(sourceColor, item.intensity);\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n const line = {\n _colorType: Number(item.colorType ?? 0),\n blinkPhase: Number(item.blinkPhase ?? 0),\n blinkPhaseShift: Number(item.blinkPhaseShift ?? 0),\n blinkRate: Number(item.blinkRate ?? 0.1),\n boneIndex: Number(item.boneIndex ?? 0),\n color,\n falloff: Number(item.falloff ?? 0),\n isCircle: item.isCircle === true,\n maxScale: Number(item.maxScale ?? 10),\n minScale: Number(item.minScale ?? 1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n spacing: Number(item.spacing ?? 1)\n };\n spriteLines.push(document.AddNode(\"EveSpriteLineSetItem\", line));\n\n if (dna.UsingSof6())\n {\n if (item.light)\n {\n const lightColor = saturateColor(color, item.light.saturation);\n let lightRotation = arrayValue(item.light.rotation, [0, 0, 0, 1]);\n const positions = getSpriteLinePositions(line);\n for (let spriteIndex = 0; spriteIndex < positions.length; spriteIndex++)\n {\n lightRotation = Array.from(quat.normalize(\n quat.create(),\n quat.multiply(quat.create(), line.rotation, lightRotation)\n ));\n lights.push(document.AddNode(\"EveSpriteLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: [\n Number(item.light.translation?.[0] ?? 0) + positions[spriteIndex][0] + line.position[0],\n Number(item.light.translation?.[1] ?? 0) + positions[spriteIndex][1] + line.position[1],\n Number(item.light.translation?.[2] ?? 0) + positions[spriteIndex][2] + line.position[2]\n ],\n rotation: lightRotation,\n color: lightColor,\n radius: Number(item.light.outerScaleMultiplier ?? 2),\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\n brightness: Number(item.light.intensity ?? 1),\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? 0),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n blinkPhase: Number(item.blinkPhase ?? 0) + Number(item.blinkPhaseShift ?? 0) * spriteIndex,\n blinkRate: Number(item.blinkRate ?? 0.1),\n minScale: Number(item.minScale ?? 1),\n maxScale: Number(item.maxScale ?? 10),\n index,\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n }\n }\n rootFields.attachments.push(document.AddNode(\"EveSpriteLineSet\", {\n effect: sharedEffect.ref,\n lights,\n skinned: set.skinned === true && !isInstancedPlacement,\n spriteLines\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon haze geometry and authored SOF6 point-light descriptors. */\n @carbon.method\n @impl.adapted\n SetupHazeSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\n {\n const hullOffset = [0, 0, 0];\n // Carbon keeps three haze effects on the EveSOF instance. The document\n // contract shares by path only inside this build, matching its identity\n // boundary while the effects remain immutable.\n const effects = new Map();\n const getEffect = (path) =>\n {\n if (!path) return null;\n if (!effects.has(path))\n {\n effects.set(path, document.AddNode(\"Tr2Effect\", {\n effectFilePath: path,\n constParameters: [],\n parameters: [],\n resources: []\n }));\n }\n return effects.get(path);\n };\n\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullHazeSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\n let effectPath = \"\";\n if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_SPHERICAL)\n {\n effectPath = set.skinned === true && !isInstancedPlacement\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_hazespherical.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/hazespherical.fx\";\n }\n else if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_HALFSPHERICAL)\n {\n effectPath = \"res:/graphics/effect/managed/space/spaceobject/fx/hazehalfspherical.fx\";\n }\n\n const hazes = [];\n const lights = [];\n let index = 0;\n for (const offset of offsets)\n {\n for (const item of set.items)\n {\n const sourceColor = dna.GetColorSet()[item.colorType];\n if (!sourceColor) continue;\n let color = multiplyColor(sourceColor, item.hazeBrightness);\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\n\n hazes.push(document.AddNode(\"EveHazeSetItem\", {\n _colorType: Number(item.colorType ?? 0),\n color,\n rotation: Array.from(rotation),\n scaling: arrayValue(item.scaling, [1, 1, 1]),\n boneIndex: Number(item.boneIndex ?? -1),\n position: Array.from(position),\n hazeData: [\n Number(item.hazeFalloff ?? 6),\n Number(item.sourceSize ?? 0.2),\n Number(item.sourceBrightness ?? 2),\n item.boosterGainInfluence === true ? 1 : 0\n ]\n }));\n\n if (dna.UsingSof6())\n {\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\n for (const light of item.lights)\n {\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n rotation\n );\n vec3.add(lightPosition, lightPosition, position);\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n lights.push(document.AddNode(\"EveHazeSetLight\", {\n _colorType: Number(item.colorType ?? 0),\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: saturateColor(sourceColor, light.saturation),\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: Number(item.boneIndex ?? -1),\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n index,\n boosterGainInfluence: item.boosterGainInfluence === true,\n boneMatrix: identityMatrix(),\n lightProfilePath: String(light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n }\n\n rootFields.attachments.push(document.AddNode(\"EveHazeSet\", {\n effect: getEffect(effectPath),\n display: true,\n hazes,\n lights\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's legacy per-item-visible banner groups. */\n @carbon.method\n @impl.adapted\n SetupBanners(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullBanners(hullIndex))\n {\n const banners = [];\n const lights = [];\n let index = 0;\n for (const value of set.items)\n {\n if (!dna.IsInVisibilityData(value.visibilityGroup)) continue;\n for (const offset of offsets)\n {\n const item = addBannerItem(document, value.item, hullOffset, offset);\n banners.push(item.ref);\n const light = value.bannerLight;\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\n const radius = Number(light.radiusMultiplier ?? 1) * Math.max(scaling[0], scaling[1], scaling[2]);\n lights.push(document.AddNode(\"EveBannerLight\", {\n lightData: {\n position: item.position,\n rotation: [0, 0, 0, 1],\n color: [0, 0, 0, 0],\n radius,\n innerRadius: radius * Number(light.innerRadiusMultiplier ?? 0.3),\n brightness: Number(light.brightness ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: -1,\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index: index++,\n boneMatrix: identityMatrix(),\n lightProfilePath: \"\"\n }));\n }\n }\n if (banners.length)\n {\n addBannerSet(document, rootFields, dna, Number(set.usage), banners, lights, EveSOFDataHullBanner.Usage._USAGE_COUNT);\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon's SOF6 visibility-grouped banner sets. */\n @carbon.method\n @impl.adapted\n SetupBannerSets(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const set of dna.GetHullBannerSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(set.visibilityGroup) || set.bannerTypes.size === 0) continue;\n for (const [usage, values] of set.bannerTypes)\n {\n const banners = [];\n const lights = [];\n let index = 0;\n for (const value of values)\n {\n for (const offset of offsets)\n {\n const item = addBannerItem(document, value.item, hullOffset, offset);\n banners.push(item.ref);\n const light = value.light;\n if (light)\n {\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\n const lightPosition = vec3.transformQuat(\n vec3.create(),\n arrayValue(light.translation, [0, 0, 0]),\n item.rotation\n );\n vec3.add(lightPosition, lightPosition, item.position);\n const lightRotation = quat.normalize(\n quat.create(),\n quat.multiply(\n quat.create(),\n item.rotation,\n arrayValue(light.rotation, [0, 0, 0, 1])\n )\n );\n lights.push(document.AddNode(\"EveBannerLight\", {\n lightData: {\n position: Array.from(lightPosition),\n rotation: Array.from(lightRotation),\n color: [0, 0, 0, 0],\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\n brightness: Number(light.intensity ?? 1),\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\n noiseFrequency: Number(light.noiseFrequency ?? 1),\n noiseOctaves: Number(light.noiseOctaves ?? 1),\n boneIndex: -1,\n flags: 1,\n startTime: this.buildTime,\n castsShadows: 0,\n isVolumetric: false\n },\n saturation: Number(light.saturation ?? 1),\n index,\n boneMatrix: identityMatrix(),\n lightProfilePath: String(light.lightProfilePath ?? \"\")\n }));\n }\n }\n index++;\n }\n if (banners.length)\n {\n addBannerSet(document, rootFields, dna, Number(usage), banners, lights, EveSOFDataHullBannerSetItem.Usage._USAGE_COUNT);\n }\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Emits Carbon hull lights with faction visibility, color, and multi-hull transforms. */\n @carbon.method\n @impl.adapted\n SetupLights(document, rootFields, dna, offsets = [identityMatrix()])\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const lightSet of dna.GetHullLightSets(hullIndex))\n {\n if (!dna.IsInVisibilityData(lightSet.visibilityGroup)) continue;\n for (const item of lightSet.items)\n {\n const lightKind = getLightKind(item.type);\n const color = dna.GetColorSet()[item.lightColor];\n if (!lightKind || !color) continue;\n\n for (const offset of offsets)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(item.rotation, [0, 0, 0, 1]),\n [\n Number(item.position?.[0] ?? 0) + hullOffset[0],\n Number(item.position?.[1] ?? 0) + hullOffset[1],\n Number(item.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n\n // Flattened emission (2026-07-23 LightData flatten decision): the\n // Tr2 light classes persist the Blue-mapped LightData members as\n // flat fields, so hull lights emit Carbon's flat Blue shape. The\n // packed-set light items above still emit nested lightData bags\n // until their classes migrate. startTime carries the injected\n // buildTime, matching Carbon's GetCurrentTime() stamp at build.\n const lightFields = {\n ...(lightKind.className !== \"Tr2TexturedPointLight\"\n ? { _lightColor: Number(item.lightColor ?? 0) }\n : {}),\n startTime: this.buildTime,\n flags: Number(item.flags ?? 1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n boneIndex: Number(item.boneIndex ?? -1),\n radius: Number(item.radius ?? 0),\n innerRadius: Number(item.innerRadius ?? 0),\n color: Array.from(color),\n brightness: Number(item.brightness ?? 0),\n noiseAmplitude: Number(item.noiseAmplitude ?? 0),\n noiseFrequency: Number(item.noiseFrequency ?? 1),\n noiseOctaves: Number(item.noiseOctaves ?? 1),\n castsShadows: 0,\n isVolumetric: false\n };\n if (lightKind.className === \"Tr2SpotLight\")\n {\n lightFields.innerAngle = Number(item.innerAngle ?? 0);\n lightFields.outerAngle = Number(item.outerAngle ?? 0);\n }\n if (lightKind.className === \"Tr2TexturedPointLight\")\n {\n lightFields.texturePath = String(item.texturePath ?? \"\");\n }\n rootFields.lights.push(document.AddNode(lightKind.className, {\n ...lightFields,\n type: lightKind.type,\n ...(lightKind.isDynamic ? { isDynamic: true } : {})\n }));\n }\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /** Adds turret and last-hull audio locators with Carbon multi-hull offsets. */\n @carbon.method\n @impl.implemented\n SetupLocators(document, rootFields, dna)\n {\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const locator of dna.GetHullTurretLocators(hullIndex))\n {\n const transform = arrayValue(locator.transform, identityMatrix());\n transform[12] += hullOffset[0];\n transform[13] += hullOffset[1];\n transform[14] += hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: locator.name,\n transform\n }));\n }\n const audioPosition = dna.GetHullAudioPosition(hullIndex);\n if (audioPosition)\n {\n const transform = identityMatrix();\n transform[12] = Number(audioPosition[0] ?? 0) + hullOffset[0];\n transform[13] = Number(audioPosition[1] ?? 0) + hullOffset[1];\n transform[14] = Number(audioPosition[2] ?? 0) + hullOffset[2];\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\n name: \"locator_audio_booster\",\n transform\n }));\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /**\n * Builds the armour-damage shader effect node, or null when the DNA lacks\n * damage data (Carbon EveSOF.cpp:2579-2603 CreateArmorDamageEffect; the\n * ArmorDamageEffectCache keyed on race+animated is a performance follow-up).\n */\n @carbon.method\n @impl.adapted\n CreateArmorDamageEffect(document, dna)\n {\n const damage = dna.GetGenericDamageData();\n const raceDamage = dna.GetRaceDamageData();\n if (!damage || !raceDamage) return null;\n return document.AddNode(\"Tr2Effect\", {\n effectFilePath: dna.GetCompleteShaderPath(damage.armorShader),\n constParameters: effectParameters(document, raceDamage.armorDamageParameters),\n parameters: [],\n resources: effectResources(document, raceDamage.armorDamageTextures)\n });\n }\n\n /**\n * Emits the hull's locator sets UNTRANSFORMED - only the multi-hull offset\n * applied - for a placement child to own, so the object merges them at\n * runtime through the child's live transform and skeleton (Carbon\n * EveSOF.cpp:3384-3432 BuildHullLocalLocatorSets). Same-name sets across\n * hulls merge into one node; bone indices stay authored because they\n * address the CHILD's skeleton.\n */\n @carbon.method\n @impl.adapted\n BuildHullLocalLocatorSets(document, dna)\n {\n const bySetName = new Map();\n const result = [];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\n {\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\n if (!locators.length) continue;\n let target = bySetName.get(name);\n if (!target)\n {\n target = [];\n bySetName.set(name, target);\n result.push(document.AddNode(\"EveLocatorSets\", { name, locators: target }));\n }\n for (const locator of locators)\n {\n target.push(document.AddNode(\"Locator\", {\n position: [\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\n ],\n direction: arrayValue(locator.rotation, [0, 0, 0, 1]),\n scale: arrayValue(locator.scaling, [1, 1, 1]),\n boneIndex: Number(locator.boneIndex ?? -1)\n }));\n }\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n return result;\n }\n\n /** Merges same-name locator sets across all hulls in Carbon map order. */\n @carbon.method\n @impl.implemented\n SetupLocatorSets(document, rootFields, dna, offsets = [identityMatrix()], partTag = null)\n {\n const transforms = Array.isArray(offsets) && offsets.length !== 0\n ? offsets\n : [identityMatrix()];\n const hullOffset = [0, 0, 0];\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\n {\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\n {\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\n const locatorRefs = [];\n for (const offset of transforms)\n {\n for (const locator of locators)\n {\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(locator.rotation, [0, 0, 0, 1]),\n [\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n const composed = mat4.multiply(\n mat4.create(),\n arrayValue(offset, identityMatrix()),\n transform\n );\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(composed, rotation, position, ignoredScale);\n locatorRefs.push(document.AddNode(\"Locator\", {\n position: Array.from(position),\n direction: Array.from(rotation),\n scale: arrayValue(locator.scaling, [1, 1, 1]),\n boneIndex: Number(locator.boneIndex ?? -1),\n ...(partTag === null ? {} : { partTag: normalizePartTag(partTag) })\n }));\n }\n }\n mergeDocumentLocatorSet(document, rootFields, name, locatorRefs);\n }\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\n }\n }\n\n /**\n * Overwrites turret shader constants or vector parameters with the\n * primary-area material selected by a faction catalog entry.\n */\n @carbon.method\n @impl.implemented\n SetupTurretMaterialFromFaction(turretSet, factionName)\n {\n const factionData = this.dataMgr.GetFactionData(factionName);\n if (!factionData) return;\n const genericData = this.dataMgr.GetGenericData();\n turretSet.ApplySofTurretMaterial(parameterName => findTurretFactionParameter(\n this.dataMgr,\n genericData,\n factionData,\n parameterName\n ));\n }\n\n /**\n * Parses the parent DNA and applies its faction turret values to matching\n * shader constants or vector parameters.\n */\n @carbon.method\n @impl.implemented\n SetupTurretMaterialFromDNA(turretSet, dnaString)\n {\n const dna = this.CreateDna(dnaString);\n if (!dna) return;\n turretSet.ApplySofTurretMaterial(parameterName => dna.GetFactionTurretParameters(parameterName));\n }\n\n}\n\nfunction findTurretFactionParameter(dataMgr, genericData, factionData, parameterName)\n{\n const prefixes = genericData?.materialPrefixes ?? [];\n const info = new EveSOFUtilsParameterName(prefixes, parameterName);\n if (info.IsMaterialIdxValid())\n {\n const materialIndex = info.GetMaterialIdx();\n const usageIndex = Number(\n factionData.materialUsageList?.[materialIndex] ?? materialIndex\n );\n info.ChangeMaterialIdx(genericData, usageIndex);\n }\n return findTurretAreaParameter(\n dataMgr,\n factionData.colorData?.colors ?? [],\n factionData.areaMaterials,\n EveSOFDataArea.AreaType.TYPE_PRIMARY,\n info\n );\n}\n\nfunction findTurretAreaParameter(dataMgr, colors, areaMaterials, areaType, info)\n{\n if (!areaMaterials) return null;\n if (info.IsMaterialIdxValid())\n {\n const materialName = areaMaterials.materialNames?.get(\n `${areaType}:${info.GetMaterialIdx()}`\n );\n const value = dataMgr.GetMaterialData(materialName)?.parameters?.get(info.GetShortName());\n if (value) return value;\n }\n else\n {\n const colorType = areaMaterials.glowColor?.get(`${areaType}:${info.GetFullName()}`);\n if (colorType !== undefined) return colors[colorType] ?? null;\n }\n return null;\n}\n\nfunction arrayValue(value, fallback)\n{\n return value ? Array.from(value) : fallback.slice();\n}\n\nfunction composeChildPlacement(source, offset)\n{\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(source.rotation, [0, 0, 0, 1]),\n arrayValue(source.translation, [0, 0, 0]),\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n return {\n translation: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(source.scaling, [1, 1, 1]),\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\n origin: 1\n };\n}\n\nfunction createInheritProperties(document, dna)\n{\n const colorSet = dna.GetColorSet();\n const fields = {};\n for (let index = 0; index < INHERIT_COLOR_PROPERTIES.length; index++)\n {\n fields[INHERIT_COLOR_PROPERTIES[index]] = arrayValue(colorSet?.[index], [0, 0, 0, 0]);\n }\n return document.AddNode(\"EveChildInheritProperties\", fields);\n}\n\nfunction collectDynamicEmitterRefs(document, rootRef, target)\n{\n const result = [];\n const seen = new Set();\n const addEmitters = node =>\n {\n for (const ref of Array.isArray(node?.fields?.particleEmitters) ? node.fields.particleEmitters : [])\n {\n const emitter = document.GetNode(Number(ref?.$ref));\n if (emitter?.kind === \"Tr2DynamicEmitter\" && !seen.has(emitter.id))\n {\n seen.add(emitter.id);\n result.push({ $ref: emitter.id });\n }\n }\n };\n const visitTransform = ref =>\n {\n const node = document.GetNode(Number(ref?.$ref));\n if (!node || seen.has(`transform:${node.id}`)) return;\n seen.add(`transform:${node.id}`);\n addEmitters(node);\n for (const childRef of Array.isArray(node.fields?.children) ? node.fields.children : [])\n {\n const child = document.GetNode(Number(childRef?.$ref));\n if (child?.kind === \"EveTransform\") visitTransform(childRef);\n }\n };\n const visitEffectChild = ref =>\n {\n const node = document.GetNode(Number(ref?.$ref));\n if (!node || seen.has(`effect:${node.id}`)) return;\n seen.add(`effect:${node.id}`);\n if (node.kind === \"EveChildParticleSystem\")\n {\n addEmitters(node);\n }\n else if (node.kind === \"EveChildContainer\")\n {\n for (const childRef of Array.isArray(node.fields?.objects) ? node.fields.objects : [])\n {\n visitEffectChild(childRef);\n }\n }\n };\n if (target === \"children\") visitTransform(rootRef);\n else visitEffectChild(rootRef);\n return result;\n}\n\nfunction scalarKey(time, value)\n{\n return {\n time: Number(time),\n value: Number(value),\n leftTangent: 0,\n rightTangent: 0,\n id: 0,\n interpolation: 1,\n tangentType: 1\n };\n}\n\nfunction quaternionKey(time, value)\n{\n return {\n time: Number(time),\n value: arrayValue(value, [0, 0, 0, 1]),\n id: 0,\n interpolation: 1\n };\n}\n\nfunction identityMatrix()\n{\n return [\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction decomposeCarbonMatrix(matrix, rotation, translation, scaling)\n{\n const scaleX = Math.hypot(matrix[0], matrix[1], matrix[2]);\n const scaleY = Math.hypot(matrix[4], matrix[5], matrix[6]);\n const scaleZ = Math.hypot(matrix[8], matrix[9], matrix[10]);\n scaling[0] = scaleX;\n scaling[1] = scaleY;\n scaling[2] = scaleZ;\n translation[0] = matrix[12];\n translation[1] = matrix[13];\n translation[2] = matrix[14];\n\n if (scaleX === 0 || scaleY === 0 || scaleZ === 0)\n {\n rotation[0] = 0;\n rotation[1] = 0;\n rotation[2] = 0;\n rotation[3] = 1;\n return matrix;\n }\n\n const normalized = mat4.create();\n normalized[0] = matrix[0] / scaleX;\n normalized[1] = matrix[1] / scaleX;\n normalized[2] = matrix[2] / scaleX;\n normalized[4] = matrix[4] / scaleY;\n normalized[5] = matrix[5] / scaleY;\n normalized[6] = matrix[6] / scaleY;\n normalized[8] = matrix[8] / scaleZ;\n normalized[9] = matrix[9] / scaleZ;\n normalized[10] = matrix[10] / scaleZ;\n mat4.getRotation(rotation, normalized);\n return matrix;\n}\n\nfunction addOffset(target, value)\n{\n if (!value) return;\n target[0] += Number(value[0] ?? 0);\n target[1] += Number(value[1] ?? 0);\n target[2] += Number(value[2] ?? 0);\n}\n\nfunction getLightKind(value)\n{\n switch (Number(value))\n {\n case EveSOFDataHullLightSetItem.LightType.POINT_LIGHT:\n return { className: \"Tr2PointLight\", type: 1, isDynamic: false };\n case EveSOFDataHullLightSetItem.LightType.TEXTURED_POINT_LIGHT:\n return { className: \"Tr2TexturedPointLight\", type: 1, isDynamic: true };\n case EveSOFDataHullLightSetItem.LightType.SPOT_LIGHT:\n return { className: \"Tr2SpotLight\", type: 2, isDynamic: false };\n default:\n return null;\n }\n}\n\nfunction saturateColor(value, saturation)\n{\n const source = arrayValue(value, [0, 0, 0, 0]);\n if (Number(saturation) === 1) return source;\n const intensity = source[0] * 0.299 + source[1] * 0.587 + source[2] * 0.114;\n const factor = Math.max(0, Number(saturation));\n return [\n intensity + (source[0] - intensity) * factor,\n intensity + (source[1] - intensity) * factor,\n intensity + (source[2] - intensity) * factor,\n source[3]\n ];\n}\n\nfunction multiplyColor(value, multiplier)\n{\n return arrayValue(value, [0, 0, 0, 0]).map(component => component * Number(multiplier ?? 0));\n}\n\nfunction modifyColor(value, saturation, brightness)\n{\n const source = arrayValue(value, [0, 0, 0, 0]);\n const divisor = Math.max(source[0], source[1], source[2], 1);\n const red = source[0] / divisor;\n const green = source[1] / divisor;\n const blue = source[2] / divisor;\n const maximum = Math.max(red, green, blue);\n const minimum = Math.min(red, green, blue);\n const delta = maximum - minimum;\n let hue = 0;\n let hsvSaturation = 0;\n if (delta !== 0)\n {\n hsvSaturation = maximum !== 0 ? delta / maximum : 0;\n if (red === maximum) hue = (green - blue) / delta;\n else if (green === maximum) hue = 2 + (blue - red) / delta;\n else hue = 4 + (red - green) / delta;\n hue *= 60;\n if (hue < 0) hue += 360;\n }\n hsvSaturation *= Number(saturation);\n const hsvValue = maximum * Number(brightness);\n return [...hsvToRgb(hue, hsvSaturation, hsvValue), source[3]];\n}\n\nfunction hsvToRgb(hue, saturation, value)\n{\n const nextSaturation = saturation === 0 ? 1e-9 : saturation;\n const sector = hue / 60;\n const index = Math.floor(sector);\n const fraction = sector - index;\n const p = value * (1 - nextSaturation);\n const q = value * (1 - nextSaturation * fraction);\n const t = value * (1 - nextSaturation * (1 - fraction));\n switch (index)\n {\n case 0: return [value, t, p];\n case 1: return [q, value, p];\n case 2: return [p, value, t];\n case 3: return [p, q, value];\n case 4: return [t, p, value];\n default: return [value, p, q];\n }\n}\n\nfunction getPlaneSetEffectPath(usage, skinned)\n{\n switch (Number(usage))\n {\n case EveSOFDataHullPlaneSet.Usage.USAGE_STANDARD:\n case EveSOFDataHullPlaneSet.Usage.USAGE_HAZE:\n return skinned\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planeglow.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planeglow.fx\";\n case EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO:\n case EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO:\n return skinned\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planehologram.fx\"\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planehologram.fx\";\n default:\n return \"\";\n }\n}\n\nfunction getSpriteLinePositions(item)\n{\n const result = [];\n const position = arrayValue(item.position, [0, 0, 0]);\n const rotation = arrayValue(item.rotation, [0, 0, 0, 1]);\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\n if (item.isCircle)\n {\n const count = Math.max(0, Math.trunc(Number(item.spacing ?? 1)));\n for (let index = 0; index < count; index++)\n {\n const angle = index * Math.PI * 2 / Number(item.spacing);\n const point = vec3.transformQuat(\n vec3.create(),\n [scaling[0] * Math.sin(angle), 0, scaling[1] * Math.cos(angle)],\n rotation\n );\n vec3.add(point, point, position);\n result.push(Array.from(point));\n }\n }\n else\n {\n const count = Math.max(0, Math.trunc(Number(scaling[0] ?? 0)));\n const direction = vec3.transformQuat(vec3.create(), [1, 0, 0], rotation);\n const point = position.slice();\n for (let index = 0; index < count; index++)\n {\n result.push(point.slice());\n point[0] += Number(item.spacing ?? 1) * direction[0];\n point[1] += Number(item.spacing ?? 1) * direction[1];\n point[2] += Number(item.spacing ?? 1) * direction[2];\n }\n }\n return result;\n}\n\nfunction addBannerItem(document, source, hullOffset, offset)\n{\n const transform = mat4.fromRotationTranslationScale(\n mat4.create(),\n arrayValue(source.rotation, [0, 0, 0, 1]),\n [\n Number(source.position?.[0] ?? 0) + hullOffset[0],\n Number(source.position?.[1] ?? 0) + hullOffset[1],\n Number(source.position?.[2] ?? 0) + hullOffset[2]\n ],\n [1, 1, 1]\n );\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\n const position = vec3.create();\n const rotation = quat.create();\n const ignoredScale = vec3.create();\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\n return {\n ref: document.AddNode(\"EveBannerItem\", {\n bone: Number(source.bone ?? -1),\n position: Array.from(position),\n rotation: Array.from(rotation),\n scaling: arrayValue(source.scaling, [1, 1, 1]),\n angleX: Number(source.angleX ?? 0),\n angleY: Number(source.angleY ?? 0),\n reference: Number(source.reference ?? 0) | 0\n }),\n position: Array.from(position),\n rotation: Array.from(rotation)\n };\n}\n\nfunction addBannerSet(document, rootFields, dna, usage, banners, lights, usageCount)\n{\n const shader = dna.GetGenericBannerShaderData() ?? {\n shader: \"\",\n defaultParameters: new Map(),\n defaultTextures: new Map()\n };\n const constParameters = sortedKeys(shader.defaultParameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: arrayValue(shader.defaultParameters.get(name), [0, 0, 0, 0])\n }));\n const resources = sortedKeys(shader.defaultTextures).map(name => document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: String(shader.defaultTextures.get(name)?.resFilePath ?? \"\")\n }));\n const imageMap = document.AddNode(\"TriTextureParameter\", {\n name: \"ImageMap\",\n resourcePath: \"\"\n });\n resources.push(imageMap);\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: String(shader.shader ?? \"\"),\n constParameters,\n parameters: [],\n resources\n });\n rootFields.attachments.push(document.AddNode(\"EveBannerSet\", {\n banners,\n effect,\n isPickable: false,\n display: true,\n key: usage,\n lights,\n primaryTextureParameter: imageMap\n }));\n rootFields.externalParameters.push(document.AddNode(\"Tr2ExternalParameter\", {\n name: usage >= 0 && usage < usageCount ? BANNER_EXTERNAL_PARAMETER_NAMES[usage] : \"\",\n destinationObject: imageMap,\n destinationAttribute: \"resourcePath\"\n }));\n}\n\nfunction buildMeshArea(document, dna, area, shaderData, batchType, meshIndexOffset, resolveTexturePath, alphaCutoutShadowsEnabled = false, emitArea = true)\n{\n // FillMeshAreaVector's runtime state (EveSOF.cpp:576-592,668-672): opaque\n // areas cast shadows, decal areas follow the alpha-cutout setting, all other\n // batch types do not; depth generation comes from the generic shader data.\n let castsShadows = false;\n if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE) castsShadows = true;\n else if (batchType === TriBatchType.TRIBATCHTYPE_DECAL) castsShadows = alphaCutoutShadowsEnabled;\n const options = [];\n if (batchType === TriBatchType.TRIBATCHTYPE_DECAL)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_CLIP\"\n }));\n }\n else if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_TRANSPARENT\"\n }));\n }\n else if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\n {\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_TRANSPARENCY\",\n value: \"SOT_OPAQUE\"\n }));\n }\n\n const patternLayerCount = dna.GetPatternLayerCount();\n options.push(document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_PPT_ENABLED\",\n value: patternLayerCount > 0 ? \"SOPPT_ENABLED\" : \"SOPPT_DISABLED\"\n }));\n\n const constParameters = [];\n const parameterNames = new Set();\n for (const name of shaderData.parameters)\n {\n const value = dna.GetMeshAreaParameter(area.areaType, name, area.parameters, area.blockedMaterials);\n if (value)\n {\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(value)\n }));\n parameterNames.add(name);\n }\n }\n for (const name of sortedKeys(shaderData.defaultParameters))\n {\n if (parameterNames.has(name)) continue;\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(shaderData.defaultParameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceRefs = new Map();\n for (const name of sortedKeys(area.textures))\n {\n const ref = document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: resolveTexturePath(area.textures.get(name).resFilePath)\n });\n resourceRefs.set(name, ref);\n resources.push(ref);\n }\n const samplerOverrides = [];\n const samplerNames = new Set();\n const pattern = patternLayerCount > 0 ? dna.GetPatternApplicationData() : null;\n for (let layerIndex = 0; layerIndex < patternLayerCount; layerIndex++)\n {\n const layer = dna.GetPatternLayerData(pattern, layerIndex);\n if (!dna.IsPatternLayerApplicableToArea(layer, area.areaType)) continue;\n if (!resourceRefs.has(layer.textureName))\n {\n const ref = document.AddNode(\"TriTextureParameter\", {\n name: layer.textureName,\n resourcePath: layer.textureResFilePath\n });\n resourceRefs.set(layer.textureName, ref);\n resources.push(ref);\n }\n const samplerName = `${layer.textureName}Sampler`;\n if (!samplerNames.has(samplerName))\n {\n samplerNames.add(samplerName);\n samplerOverrides.push(document.AddNode(\"Tr2SamplerOverride\", {\n name: samplerName,\n addressU: layer.projectionAddressModeU,\n addressV: layer.projectionAddressModeV,\n addressW: 1,\n filter: 3,\n mipFilter: 2,\n lodBias: 0,\n maxMipLevel: 0,\n maxAnisotropy: 4\n }));\n }\n }\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n if (resourceRefs.has(name)) continue;\n const ref = document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\n });\n resourceRefs.set(name, ref);\n resources.push(ref);\n }\n\n const effect = document.AddNode(\"Tr2Effect\", {\n name: area.name,\n effectFilePath: dna.GetCompleteShaderPath(area.shader),\n options,\n constParameters,\n parameters: [],\n resources,\n samplerOverrides\n });\n const fields = {\n _areaType: Number(area.areaType ?? 0),\n name: area.name,\n index: area.index + meshIndexOffset,\n count: area.count,\n reversed: false,\n // Decal areas fold into opaque as one-sided alpha cutouts\n // (Carbon EveSOF.cpp:883); occluder backface tests skip them.\n alphaCutout: batchType === TriBatchType.TRIBATCHTYPE_DECAL,\n useSHLighting: false,\n castsShadows,\n generateDepthArea: Boolean(shaderData.doGenerateDepthArea),\n // Carbon limits distortion areas to high LOD after fill (EveSOF.cpp:2149-2153).\n minLod: batchType === TriBatchType.TRIBATCHTYPE_DISTORTION ? TR2_LOD_HIGH : -1,\n effect\n };\n return {\n ref: emitArea ? document.AddNode(\"Tr2MeshArea\", fields) : null,\n fields,\n effect,\n generateDepthArea: shaderData.doGenerateDepthArea,\n resourceRefs\n };\n}\n\nfunction createLayoutContainerFields(name)\n{\n return {\n name: String(name ?? \"\"),\n objects: [],\n curveSets: [],\n attachments: [],\n observers: [],\n lights: [],\n controllers: []\n };\n}\n\nfunction ensureSpaceObjectBuildFields(fields)\n{\n for (const name of [\n \"effectChildren\",\n \"children\",\n \"curveSets\",\n \"attachments\",\n \"decals\",\n \"customMasks\",\n \"lights\",\n \"externalParameters\",\n \"controllers\",\n \"observers\",\n \"locators\",\n \"locatorSets\"\n ])\n {\n if (!Array.isArray(fields[name])) fields[name] = [];\n }\n if (!Object.hasOwn(fields, \"impactOverlay\")) fields.impactOverlay = null;\n}\n\nfunction normalizePartTag(value)\n{\n const number = Number(value);\n if (!Number.isInteger(number) || number < 0 || number > 0xffffffff)\n {\n throw new RangeError(\"EveSOF partTag must be an unsigned 32-bit integer\");\n }\n return number >>> 0;\n}\n\nfunction normalizePlacementTransform(value)\n{\n if (!value || value.length !== 16)\n {\n throw new TypeError(\"EveSOF BuildChild transform must contain 16 values\");\n }\n const result = Array.from(value, Number);\n if (result.some(item => !Number.isFinite(item)))\n {\n throw new TypeError(\"EveSOF BuildChild transform values must be finite numbers\");\n }\n return result;\n}\n\nfunction replacePlainValues(target, values)\n{\n if (!target || typeof target !== \"object\" || Array.isArray(target))\n {\n throw new TypeError(\"EveSOF.BuildChild requires a CjsModel or plain model-values root\");\n }\n for (const key of Object.keys(target)) delete target[key];\n Object.assign(target, values);\n}\n\nfunction findSharedInstancedMeshes(document, rootFields)\n{\n for (const ref of rootFields.effectChildren)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveChildInstancedMeshes\")\n {\n if (!Array.isArray(node.fields.meshes)) node.fields.meshes = [];\n return { ref, meshes: node.fields.meshes };\n }\n }\n return null;\n}\n\nfunction ensureSharedInstancedMeshes(document, rootFields)\n{\n const existing = findSharedInstancedMeshes(document, rootFields);\n if (existing) return existing;\n const meshes = [];\n const ref = document.AddNode(\"EveChildInstancedMeshes\", {\n name: \"SharedInstancedMeshes\",\n meshes\n });\n rootFields.effectChildren.push(ref);\n return { ref, meshes };\n}\n\nfunction stampDocumentChildPartTag(document, ref, partTag, visited = new Set())\n{\n const id = Number(ref?.$ref);\n if (!Number.isInteger(id) || visited.has(id)) return;\n visited.add(id);\n const node = document.GetNode(id);\n if (!node) return;\n node.fields.partTag = partTag;\n if (node.kind === \"EveChildContainer\")\n {\n for (const child of node.fields.objects ?? [])\n {\n stampDocumentChildPartTag(document, child, partTag, visited);\n }\n }\n}\n\nfunction layoutContainerIsEmpty(fields)\n{\n return [\"objects\", \"curveSets\", \"attachments\", \"observers\", \"lights\", \"controllers\"]\n .every(name => !Array.isArray(fields[name]) || fields[name].length === 0);\n}\n\nfunction updateLayoutBounds(rootFields, dna, occurrences)\n{\n let sphere = [\n ...arrayValue(rootFields.boundingSphereCenter, [0, 0, 0]),\n Number(rootFields.boundingSphereRadius ?? -1)\n ];\n let ellipsoidBounds = ellipsoidToBounds(\n rootFields.shapeEllipsoidCenter,\n rootFields.shapeEllipsoidRadius\n );\n const sourceSphere = dna.GetHullBoundingSphere();\n const sourceEllipsoid = dna.GetHullShapeEllipsoid();\n for (const occurrence of occurrences)\n {\n const transform = arrayValue(occurrence.transform, identityMatrix());\n const transformedSphere = transformLayoutSphere(sourceSphere, transform);\n if (occurrence.extendsBoundingSphere)\n {\n sphere = includeLayoutSphere(sphere, transformedSphere);\n }\n if (occurrence.extendsShieldEllipsoid)\n {\n const bounds = transformLayoutEllipsoid(sourceEllipsoid, transformedSphere, transform);\n ellipsoidBounds = includeBounds(ellipsoidBounds, bounds);\n }\n }\n rootFields.boundingSphereCenter = sphere.slice(0, 3);\n rootFields.boundingSphereRadius = sphere[3];\n if (ellipsoidBounds)\n {\n rootFields.shapeEllipsoidCenter = ellipsoidBounds.min.map((value, index) => (\n (value + ellipsoidBounds.max[index]) * 0.5\n ));\n rootFields.shapeEllipsoidRadius = ellipsoidBounds.min.map((value, index) => (\n (ellipsoidBounds.max[index] - value) * 0.5\n ));\n }\n}\n\nfunction transformLayoutSphere(source, transform)\n{\n if (!source || Number(source[3]) < 0) return null;\n const center = vec3.transformMat4(vec3.create(), source, transform);\n const scale = mat4.getScaling(vec3.create(), transform);\n const maxScale = Math.max(Math.abs(scale[0]), Math.abs(scale[1]), Math.abs(scale[2]));\n return [center[0], center[1], center[2], Number(source[3]) * maxScale];\n}\n\nfunction includeLayoutSphere(current, next)\n{\n if (!next || next[3] < 0) return current;\n if (!current || current[3] < 0) return next.slice();\n const dx = next[0] - current[0];\n const dy = next[1] - current[1];\n const dz = next[2] - current[2];\n const distance = Math.hypot(dx, dy, dz);\n if (current[3] >= distance + next[3]) return current;\n if (next[3] >= distance + current[3]) return next.slice();\n const radius = (distance + current[3] + next[3]) * 0.5;\n if (distance === 0) return [current[0], current[1], current[2], radius];\n const factor = (radius - current[3]) / distance;\n return [\n current[0] + dx * factor,\n current[1] + dy * factor,\n current[2] + dz * factor,\n radius\n ];\n}\n\nfunction ellipsoidToBounds(centerValue, radiusValue)\n{\n const center = arrayValue(centerValue, [0, 0, 0]);\n const radius = arrayValue(radiusValue, [-1, -1, -1]);\n if (radius.some(value => value < 0)) return null;\n return {\n min: center.map((value, index) => value - radius[index]),\n max: center.map((value, index) => value + radius[index])\n };\n}\n\nfunction transformLayoutEllipsoid(source, fallbackSphere, transform)\n{\n const sourceBounds = ellipsoidToBounds(source?.center, source?.radius);\n if (!sourceBounds)\n {\n if (!fallbackSphere) return null;\n return {\n min: fallbackSphere.slice(0, 3).map(value => value - fallbackSphere[3]),\n max: fallbackSphere.slice(0, 3).map(value => value + fallbackSphere[3])\n };\n }\n let result = null;\n for (const x of [sourceBounds.min[0], sourceBounds.max[0]])\n {\n for (const y of [sourceBounds.min[1], sourceBounds.max[1]])\n {\n for (const z of [sourceBounds.min[2], sourceBounds.max[2]])\n {\n const point = vec3.transformMat4(vec3.create(), [x, y, z], transform);\n result = includeBounds(result, { min: Array.from(point), max: Array.from(point) });\n }\n }\n }\n return result;\n}\n\nfunction includeBounds(current, next)\n{\n if (!next) return current;\n if (!current) return { min: next.min.slice(), max: next.max.slice() };\n for (let axis = 0; axis < 3; axis++)\n {\n current.min[axis] = Math.min(current.min[axis], next.min[axis]);\n current.max[axis] = Math.max(current.max[axis], next.max[axis]);\n }\n return current;\n}\n\nfunction groupLayoutPlacements(placements)\n{\n const groups = new Map();\n for (const placement of placements)\n {\n if (!groups.has(placement.batchKey)) groups.set(placement.batchKey, []);\n groups.get(placement.batchKey).push(placement);\n }\n return groups.values();\n}\n\nfunction addEffectShaderOption(document, effectRef, name, value)\n{\n const effect = document.GetNode(effectRef?.$ref);\n if (!effect) return;\n if (!Array.isArray(effect.fields.options)) effect.fields.options = [];\n const duplicate = effect.fields.options.some(ref => {\n const option = document.GetNode(ref?.$ref);\n return option?.fields?.name === name;\n });\n if (!duplicate)\n {\n effect.fields.options.push(document.AddNode(\"Tr2ShaderOption\", { name, value }));\n }\n}\n\nfunction addMeshShaderOption(document, meshFields, name, value)\n{\n for (const field of [\"opaqueAreas\", \"transparentAreas\", \"additiveAreas\", \"distortionAreas\", \"depthAreas\"])\n {\n for (const areaRef of meshFields[field] ?? [])\n {\n const area = document.GetNode(areaRef?.$ref);\n addEffectShaderOption(document, area?.fields?.effect, name, value);\n }\n }\n}\n\nfunction addChildMeshShaderOption(document, childFields, name, value)\n{\n const mesh = document.GetNode(childFields.mesh?.$ref);\n if (mesh) addMeshShaderOption(document, mesh.fields, name, value);\n for (const decalRef of childFields.decals ?? [])\n {\n const decal = document.GetNode(decalRef?.$ref);\n addEffectShaderOption(document, decal?.fields?.decalEffect, name, value);\n }\n}\n\nfunction propagateInstancedMeshInstances(sourceInstances, requestedOffsets)\n{\n const offsets = Array.isArray(requestedOffsets) && requestedOffsets.length\n ? requestedOffsets.map(value => arrayValue(value, identityMatrix()))\n : [identityMatrix()];\n const identityFastPath = offsets.length === 1 && isIdentityMatrix(offsets[0]);\n const instances = [];\n const instanceTransforms = [];\n if (identityFastPath)\n {\n for (const source of sourceInstances)\n {\n instances.push(clonePackedInstance(source));\n instanceTransforms.push(Array.from(unpackInstanceMatrix(source)));\n }\n return { instances, instanceTransforms };\n }\n\n for (const offset of offsets)\n {\n for (const source of sourceInstances)\n {\n const combined = mat4.multiply(\n mat4.create(),\n offset,\n unpackInstanceMatrix(source)\n );\n instances.push(packInstanceMatrix(combined, source.boneIndex));\n // Carbon retains the transposed product in this auxiliary list on the\n // general path, unlike its ordinary-matrix identity fast path.\n instanceTransforms.push(Array.from(mat4.transpose(mat4.create(), combined)));\n }\n }\n return { instances, instanceTransforms };\n}\n\nfunction clonePackedInstance(source)\n{\n return {\n transform0: arrayValue(source.transform0, [1, 0, 0, 0]),\n transform1: arrayValue(source.transform1, [0, 1, 0, 0]),\n transform2: arrayValue(source.transform2, [0, 0, 1, 0]),\n lastTransform0: arrayValue(source.lastTransform0, source.transform0 ?? [1, 0, 0, 0]),\n lastTransform1: arrayValue(source.lastTransform1, source.transform1 ?? [0, 1, 0, 0]),\n lastTransform2: arrayValue(source.lastTransform2, source.transform2 ?? [0, 0, 1, 0]),\n boneIndex: Number(source.boneIndex ?? 0) | 0\n };\n}\n\nfunction unpackInstanceMatrix(source)\n{\n const t0 = arrayValue(source.transform0, [1, 0, 0, 0]);\n const t1 = arrayValue(source.transform1, [0, 1, 0, 0]);\n const t2 = arrayValue(source.transform2, [0, 0, 1, 0]);\n return new Float32Array([\n t0[0], t1[0], t2[0], 0,\n t0[1], t1[1], t2[1], 0,\n t0[2], t1[2], t2[2], 0,\n t0[3], t1[3], t2[3], 1\n ]);\n}\n\nfunction packInstanceMatrix(matrix, boneIndex)\n{\n const transform0 = [matrix[0], matrix[4], matrix[8], matrix[12]];\n const transform1 = [matrix[1], matrix[5], matrix[9], matrix[13]];\n const transform2 = [matrix[2], matrix[6], matrix[10], matrix[14]];\n return {\n transform0,\n transform1,\n transform2,\n lastTransform0: transform0.slice(),\n lastTransform1: transform1.slice(),\n lastTransform2: transform2.slice(),\n boneIndex: Number(boneIndex ?? 0) | 0\n };\n}\n\nfunction isIdentityMatrix(value)\n{\n const identity = identityMatrix();\n return identity.every((item, index) => Number(value[index]) === item);\n}\n\nfunction translationBounds(instances)\n{\n const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];\n const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];\n for (const instance of instances)\n {\n const point = [\n Number(instance.transform0?.[3] ?? 0),\n Number(instance.transform1?.[3] ?? 0),\n Number(instance.transform2?.[3] ?? 0)\n ];\n for (let axis = 0; axis < 3; axis++)\n {\n min[axis] = Math.min(min[axis], point[axis]);\n max[axis] = Math.max(max[axis], point[axis]);\n }\n }\n return { min, max };\n}\n\nfunction maximumInstanceScale(instances)\n{\n let maxLengthSquared = 0;\n for (const instance of instances)\n {\n for (const row of [instance.transform0, instance.transform1, instance.transform2])\n {\n const value = arrayValue(row, [0, 0, 0, 0]);\n maxLengthSquared = Math.max(\n maxLengthSquared,\n value[0] * value[0] + value[1] * value[1] + value[2] * value[2]\n );\n }\n }\n return Math.sqrt(maxLengthSquared);\n}\n\nfunction createInstancedMeshArea(document, dna, source, shaderData, resolveTexturePath)\n{\n const constParameters = [];\n const parameterNames = new Set();\n for (const name of shaderData.parameters)\n {\n const value = dna.GetMeshAreaParameter(EveSOFDataArea.AreaType.TYPE_PRIMARY, name);\n if (!value || parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(value)\n }));\n }\n for (const name of sortedKeys(shaderData.defaultParameters))\n {\n if (parameterNames.has(name)) continue;\n parameterNames.add(name);\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(shaderData.defaultParameters.get(name))\n }));\n }\n\n const resources = [];\n const resourceNames = new Set();\n for (const name of sortedKeys(source.textures))\n {\n if (resourceNames.has(name)) continue;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: resolveTexturePath(source.textures.get(name).resFilePath)\n }));\n }\n for (const name of sortedKeys(shaderData.defaultTextures))\n {\n if (resourceNames.has(name)) continue;\n resourceNames.add(name);\n resources.push(document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\n }));\n }\n\n const option = document.AddNode(\"Tr2ShaderOption\", {\n name: \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\n value: \"SOIA_ENABLED\"\n });\n const effect = document.AddNode(\"Tr2Effect\", {\n effectFilePath: dna.GetCompleteShaderPath(source.shader),\n options: [option],\n constParameters,\n parameters: [],\n resources,\n samplerOverrides: []\n });\n return document.AddNode(\"Tr2MeshArea\", {\n name: \"hull\",\n index: 0,\n count: 1,\n reversed: false,\n useSHLighting: false,\n effect\n });\n}\n\n// Carbon EveSOF::CreateBoosterEffect (EveSOF.cpp:2853-2899, EveSOF.h:145):\n// the path defaults to the ship booster shader, and per-hull DNA parameters\n// are added BEFORE the race-shape parameters, matching Carbon's insertion\n// order. Only SetupChildBoosters passes overrides (with\n// EveChildBoosterSet.DEFAULT_EFFECT_PATH as its own fallback); ship boosters\n// always use the defaults.\nfunction createBoosterEffect(document, race, lodOption,\n effectPath = \"res:/Graphics/Effect/Managed/Space/Booster/BoosterVolumetric.fx\",\n parameters = null, textureOverrides = null)\n{\n const constParameters = [];\n const add = (name, value) => {\n const vector = Array.isArray(value) || ArrayBuffer.isView(value)\n ? arrayValue(value, [0, 0, 0, 0])\n : [Number(value ?? 0), Number(value ?? 0), Number(value ?? 0), Number(value ?? 0)];\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", { name, value: vector }));\n };\n if (parameters)\n {\n for (const [ name, value ] of parameters) add(name, value);\n }\n add(\"NoiseSpeed0\", race.shape0.noiseSpeed);\n add(\"NoiseAmplitudeStart0\", race.shape0.noiseAmplitureStart);\n add(\"NoiseAmplitudeEnd0\", race.shape0.noiseAmplitureEnd);\n add(\"NoiseFrequency0\", race.shape0.noiseFrequency);\n add(\"Color0\", race.shape0.color);\n add(\"NoiseSpeed1\", race.shape1.noiseSpeed);\n add(\"NoiseAmplitudeStart1\", race.shape1.noiseAmplitureStart);\n add(\"NoiseAmplitudeEnd1\", race.shape1.noiseAmplitureEnd);\n add(\"Color1\", race.shape1.color);\n add(\"WarpNoiseSpeed0\", race.warpShape0.noiseSpeed);\n add(\"WarpNoiseAmplitudeStart0\", race.warpShape0.noiseAmplitureStart);\n add(\"WarpNoiseAmplitudeEnd0\", race.warpShape0.noiseAmplitureEnd);\n add(\"WarpNoiseFrequency0\", race.warpShape0.noiseFrequency);\n add(\"WarpColor0\", race.warpShape0.color);\n add(\"WarpNoiseSpeed1\", race.warpShape1.noiseSpeed);\n add(\"WarpNoiseAmplitudeStart1\", race.warpShape1.noiseAmplitureStart);\n add(\"WarpNoiseAmplitudeEnd1\", race.warpShape1.noiseAmplitureEnd);\n add(\"WarpColor1\", race.warpShape1.color);\n add(\"ShapeAtlasSize\", [race.shapeAtlasHeight, race.shapeAtlasCount, 0, 0]);\n add(\"BoosterScale\", race.scale);\n\n // Per-hull texture overrides replace a default by name or append (Carbon\n // SetResourceTexture2D semantics, EveSOF.cpp:3095-3099).\n const textures = new Map([\n [ \"ShapeMap\", String(race.shapeAtlasResPath ?? \"\") ],\n [ \"GradientMap0\", String(race.gradient0ResPath ?? \"\") ],\n [ \"GradientMap1\", String(race.gradient1ResPath ?? \"\") ],\n [ \"NoiseMap\", \"res:/Texture/Global/noise32cube_volume.dds\" ]\n ]);\n if (textureOverrides)\n {\n for (const [ name, record ] of textureOverrides)\n {\n textures.set(String(name), String(record?.resFilePath ?? record ?? \"\"));\n }\n }\n\n return document.AddNode(\"Tr2Effect\", {\n effectFilePath: effectPath,\n options: [document.AddNode(\"Tr2ShaderOption\", {\n name: \"BOOSTER_LOD\",\n value: lodOption\n })],\n constParameters,\n parameters: [],\n resources: [...textures].map(([ name, resourcePath ]) =>\n document.AddNode(\"TriTextureParameter\", { name, resourcePath })),\n samplerOverrides: []\n });\n}\n\nfunction mergeDocumentLocatorSet(document, rootFields, name, locatorRefs)\n{\n if (locatorRefs.length === 0) return null;\n for (const ref of rootFields.locatorSets)\n {\n const node = document.GetNode(ref?.$ref);\n if (node?.kind === \"EveLocatorSets\" && node.fields?.name === name)\n {\n node.fields.locators.push(...locatorRefs);\n return ref;\n }\n }\n const ref = document.AddNode(\"EveLocatorSets\", { name, locators: locatorRefs });\n rootFields.locatorSets.push(ref);\n return ref;\n}\n\nfunction sortedKeys(map)\n{\n return [...map.keys()].sort((a, b) => a.localeCompare(b));\n}\n\nfunction selectDecalIndexBuffers(item, hullCount, combinedGeometryPath)\n{\n if (hullCount === 1) return item.indexBuffers.map(indices => indices.slice());\n for (const entry of item.multiHullIndexBuffers)\n {\n if (entry.combinedGeometryResPath === combinedGeometryPath)\n {\n return entry.indexBuffers.map(indices => indices.slice());\n }\n }\n return [];\n}\n\nfunction effectParameters(document, parameters)\n{\n return sortedKeys(parameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\n name,\n value: Array.from(parameters.get(name))\n }));\n}\n\nfunction effectResources(document, textures)\n{\n return sortedKeys(textures).map(name => document.AddNode(\"TriTextureParameter\", {\n name,\n resourcePath: textures.get(name).resFilePath\n }));\n}\n\nfunction createImpactEmitter(document, values)\n{\n const emitterData = {\n angle: Number(values.angle ?? 0),\n innerAngle: Number(values.innerAngle ?? 0),\n minSpeed: Number(values.minMaxSpeed?.[0] ?? 0),\n maxSpeed: Number(values.minMaxSpeed?.[1] ?? 0)\n };\n const paramsData = {\n minLifeTime: Number(values.minMaxLifeTime?.[0] ?? 0),\n maxLifeTime: Number(values.minMaxLifeTime?.[1] ?? 0),\n sizes: [\n Number(values.sizes?.[0] ?? 0),\n Number(values.sizes?.[1] ?? 0),\n Number(values.sizes?.[2] ?? 0)\n ],\n sizeVariance: Number(values.sizes?.[3] ?? 0),\n colors: [0, 1, 2, 3].map(index => arrayValue(values.colors?.[index], [0, 0, 0, 0])),\n textureIndex: Number(values.textureIndex ?? 0) >>> 0,\n velocityStretchRotation: Number(values.velocityStretchRotation ?? 0),\n drag: Number(values.drag ?? 0),\n turbulenceAmplitude: Number(values.turbulenceAmplitude ?? 0),\n turbulenceFrequency: Number(values.turbulenceFrequency ?? 0) >>> 0,\n colorMidpoint: Number(values.colorMidpoint ?? 0)\n };\n return document.AddNode(\"Tr2GpuUniqueEmitter\", {\n rate: Number(values.rate ?? 0),\n angle: emitterData.angle,\n innerAngle: emitterData.innerAngle,\n minSpeed: emitterData.minSpeed,\n maxSpeed: emitterData.maxSpeed,\n minLifeTime: paramsData.minLifeTime,\n maxLifeTime: paramsData.maxLifeTime,\n sizes: paramsData.sizes,\n sizeVariance: paramsData.sizeVariance,\n color0: paramsData.colors[0],\n color1: paramsData.colors[1],\n color2: paramsData.colors[2],\n color3: paramsData.colors[3],\n textureIndex: paramsData.textureIndex,\n colorMidpoint: paramsData.colorMidpoint,\n velocityStretchRotation: paramsData.velocityStretchRotation,\n drag: paramsData.drag,\n turbulenceAmplitude: paramsData.turbulenceAmplitude,\n turbulenceFrequency: paramsData.turbulenceFrequency\n });\n}\n\n/**\n * Counts how many times each node is reached from a starting reference.\n *\n * Recursion stops at a node already seen, so a cycle terminates and every node\n * on it still records more than one visit — which is exactly the condition for\n * giving it an identity.\n */\nfunction CountDocumentVisits(value, nodeById, visits)\n{\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\n {\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\n return;\n }\n\n if (CjsCarbonDocument.isRef(value))\n {\n const id = Number(value.$ref);\n const seen = visits.get(id) ?? 0;\n visits.set(id, seen + 1);\n if (seen) return;\n\n const node = nodeById.get(id);\n if (!node) return;\n\n CountDocumentVisits(node.fields ?? {}, nodeById, visits);\n CountDocumentVisits(node.raw ?? {}, nodeById, visits);\n\n return;\n }\n\n if (Array.isArray(value))\n {\n for (const item of value) CountDocumentVisits(item, nodeById, visits);\n\n return;\n }\n\n if (value && typeof value === \"object\")\n {\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\n }\n}\n\n/**\n * Rewrites one document value into its plain-values form.\n *\n * `emitted` maps a node id to the `_id` it was given on first emission, so a\n * later occurrence becomes `{ _ref }`. Ids are allocated in emission order\n * rather than reusing document ids, so the output does not carry the node\n * table's numbering as a hidden dependency.\n */\nfunction ProjectDocumentNode(value, nodeById, visits, emitted, state)\n{\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\n {\n return Object.fromEntries(Object.entries(value)\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\n }\n\n if (CjsCarbonDocument.isRef(value))\n {\n const id = Number(value.$ref);\n\n if (emitted.has(id)) return { _ref: emitted.get(id) };\n\n const node = nodeById.get(id);\n if (!node) throw new TypeError(`EveSOF values projection found no node for ref ${id}.`);\n\n const projected = { _type: node.kind };\n\n if ((visits.get(id) ?? 0) > 1)\n {\n const valueId = state.nextId++;\n emitted.set(id, valueId);\n projected._id = valueId;\n }\n\n // `fields` and `raw` are transport envelopes rather than data: the reader\n // of a values graph sees one object whose properties are the node's.\n for (const [key, item] of Object.entries({ ...node.fields, ...node.raw }))\n {\n projected[key] = ProjectDocumentNode(item, nodeById, visits, emitted, state);\n }\n\n return projected;\n }\n\n if (Array.isArray(value))\n {\n return value.map(item => ProjectDocumentNode(item, nodeById, visits, emitted, state));\n }\n\n if (value && typeof value === \"object\")\n {\n return Object.fromEntries(Object.entries(value)\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\n }\n\n return value;\n}\n\nfunction cloneFields(fields)\n{\n return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, cloneValue(value)]));\n}\n\nfunction cloneValue(value)\n{\n if (Array.isArray(value)) return value.map(cloneValue);\n if (!value || typeof value !== \"object\") return value;\n return { ...value };\n}\n\n\nfunction createSwarmBehaviorFields(source)\n{\n if (!source) return null;\n const result = {};\n for (const name of SWARM_BEHAVIOR_FIELD_NAMES)\n {\n result[name] = Number(source[name]);\n }\n result.weightDeceleration = Number(source.weightDecelerate ?? source.weightDeceleration);\n return result;\n}\n\n\n\nfunction SofRequestKey(path, output)\n{\n return `${normalizeResourcePath(path)}\\0${output}`;\n}\n\nfunction CollectSofRequest(requests, path, output, role, context = null)\n{\n const normalizedPath = normalizeResourcePath(path);\n if (!normalizedPath) return null;\n const key = SofRequestKey(normalizedPath, output);\n if (!requests.has(key))\n {\n requests.set(key, { key, path: normalizedPath, output, role, context });\n }\n return key;\n}\n\nfunction IsCarbonDocument(value)\n{\n return value?.schema === \"carbon.document\"\n && Array.isArray(value.roots)\n && Array.isArray(value.nodes);\n}\n\n\n\nasync function ResolveSofDependency(load, path, role, results, resultKey = path)\n{\n try\n {\n const value = await load();\n results.set(resultKey, value);\n return value;\n }\n catch (cause)\n {\n const error = new Error(`EveSOF failed to resolve ${role} resource: ${path}`, { cause });\n error.code = \"EVE_SOF_RESOURCE_RESOLUTION_FAILED\";\n error.path = path;\n error.role = role;\n throw error;\n }\n}\n\n"],"names":["BUILD_CLASS_TYPES","Object","freeze","EveSOFDataHull","BuildClass","BUILDCLASS_SHIP","BUILDCLASS_MOBILE","BUILDCLASS_STATIONARY","BUILDCLASS_SWARM","BUILDCLASS_EXTENSION","SPACE_OBJECT_ROOT_KINDS","Set","DECAL_EFFECT_NAMES","BANNER_EXTERNAL_PARAMETER_NAMES","MIN_MESH_SCREEN_SIZE","TR2_LOD_HIGH","CHILD_TRANSFORM_KINDS","SPACE_OBJECT_CHILD_KINDS","OBJECT_RESOURCE_ROLE_GATES","controller","interfaceName","kinds","modelRotationCurve","modelTranslationCurve","WRONG_TYPE_CHILD","Symbol","descriptorClaimsInterface","descriptor","Array","isArray","implements","includes","INHERIT_COLOR_PROPERTIES","SWARM_BEHAVIOR_FIELD_NAMES","SOF_INSTANCE_LAYOUT","usage","usageIndex","type","name","_EveSOF","EveSOF","CjsModel","e","_init_allowFileCaching","_init_extra_allowFileCaching","_init_alphaCutoutShadowsEnabled","_init_extra_alphaCutoutShadowsEnabled","_init_volumetricTrailPath","_init_extra_volumetricTrailPath","_init_buildTime","_init_extra_buildTime","_init_dataMgr","_init_extra_dataMgr","_init_editorMode","_init_extra_editorMode","_initProto","c","_initClass","_applyDecs","define","className","family","io","readwrite","boolean","string","float64","read","objectRef","carbon","method","impl","implemented","adapted","reason","custom","allowFileCaching","alphaCutoutShadowsEnabled","volumetricTrailPath","buildTime","dataMgr","EveSOFDataMgr","editorMode","Map","getObject","exists","Register","options","TypeError","prototype","hasOwnProperty","call","normalizeResourcePath","dataPath","resources","undefined","hasOwn","clear","lazyData","CjsSofLibraryBuilder","SetSofLibraryBuilder","builderOptions","source","path","context","Error","output","Boolean","String","Number","index","resFileIndex","SetResourceExistsResolver","names","map","toLowerCase","has","resolver","result","then","SetChildResourceResolver","SetObjectResourceResolver","builder","GetDataManager","GetSofLibraryBuilder","InitializeAsync","LoadDataAsync","catalog","LoadData","filePath","existing","get","operation","ResolveSofDependency","role","data","SetData","set","delete","CreateDna","dnaString","dna","EveSOFDNA","Setup","IsValid","GetDnaVisibilityGroups","declared","factionData","visibilityGroups","declaredSet","sets","hullIndex","GetMultiHullCount","hull","hullDatas","field","values","entries","value","visibilityGroupName","group","push","kind","visibilityGroup","visible","authored","item","sort","hulls","hullNames","faction","factionName","race","raceName","filter","hidden","InspectDna","buildable","valid","ValidateContent","error","GetParseError","ValidateDNA","Build","hullName","BuildFromDNA","BuildAsync","BuildFromDNAAsync","GetBuildDiagnostics","entry","BuildValues","BuildValuesFromDNA","BuildValuesAsync","BuildValuesFromDNAAsync","document","projectDocumentValues","BuildChild","owner","partTag","transform","identityMatrix","isModel","GetValues","refs","forceTypeTags","BuildChildValues","hydrationOptions","hydration","SetValues","registry","replacePlainValues","ownerValues","tag","normalizePartTag","placementTransform","normalizePlacementTransform","SetParentBoundingSphere","SetParentShapeEllipsoidInfo","SofDocumentBuilder","rootRef","ImportValuesRoot","root","GetNode","$ref","AddRoot","ensureSpaceObjectBuildFields","fields","layout","ToJSON","Create","black","sof","ArrayBuffer","isView","CjsBlackFormat","readPayload","buffer","slice","byteOffset","byteLength","object","console","warn","normalized","CjsCarbonDocument","normalize","nodeById","nodes","node","id","roots","ref","isRef","visits","CountDocumentVisits","ProjectDocumentNode","nextId","populateDefaults","CjsSchema","applyDefaults","EnsureFromDNA","documentRequests","existenceRequests","collectionPrevious","child","CollectSofRequest","documentResults","existenceResults","Promise","all","request","key","projectionPrevious","SofRequestKey","PlanLayoutFromDNA","planSofLayouts","buildClass","GetBuildClass","typeName","sphere","GetHullBoundingSphere","isExtension","hasShipInterface","swarmBehavior","createSwarmBehaviorFields","GetGenericSwarmProperties","mesh","AddNode","CreateMesh","rootFields","GetDnaString","boundingSphereCenter","from","boundingSphereRadius","shapeEllipsoidCenter","arrayValue","shapeEllipsoidRadius","dynamicBoundingSphereEnabled","DynamicBoundingSphereEnabled","castShadow","CastShadow","isAnimated","IsHullAnimated","reflectionMode","GetReflectionMode","effectChildren","children","curveSets","attachments","decals","impactOverlay","customMasks","lights","externalParameters","controllers","observers","locators","locatorSets","boosters","assign","SetupExtensionBuild","inheritProperties","createInheritProperties","SetupCustomMask","SetupDecalSets","SetupLocators","SetupLocatorSets","SetupAttachments","SetupImpactEffects","SetupEffects","BuildFilter","STANDALONE","SetupAudio","SetupControllers","SetupModelCurves","SetupInstancedMeshes","SetupLayout","SetupBoosters","#BuildChildIntoDocument","layoutOptions","hasChildEffects","UsingSof6","GetHullChildSets","length","GetHullChildren","hasControllers","GetHullControllers","hasAnimation","hasEmitters","GetHullSoundEmitters","hasLayouts","GetLayoutCount","hasAttachments","GetHullSpriteSets","GetHullSpotlightSets","GetHullPlaneSets","GetHullSpriteLineSets","GetHullHazeSets","GetHullBanners","GetHullBannerSets","GetHullLightSets","hasBoosters","GetHullBoosterCount","needsPlacementContainer","buildFlags","NON_INSTANCED_PLACEMENT","INSTANCED_PLACEMENT","rotation","quat","create","translation","vec3","scaling","decomposeCarbonMatrix","placementRef","placementFields","createLayoutContainerFields","GetHullNames","staticTransform","childFields","minScreenSize","lowestLodVisible","animationUpdater","childRef","objects","animationOwner","shared","ensureSharedInstancedMeshes","areas","CreateSharedLayoutAreas","instance","sphereIndex","meshes","geometryPath","GetHullGeometryResPath","castsShadow","meshIndex","instances","partTags","sofHullName","sofLocatorSetName","display","instanceSphere","transformLayoutSphere","ellipsoidBounds","transformLayoutEllipsoid","GetHullShapeEllipsoid","center","min","max","radius","SetupChildBoosters","offsets","stampDocumentChildPartTag","extensionFields","alwaysOn","origin","fakeFields","isPlacementRoot","geometryResPath","opaqueAreas","transparentAreas","additiveAreas","distortionAreas","depthAreas","transparent","SetupShaders","GenerateDepthFromAreaVector","meshFields","meshIndexOffset","count","fills","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","TRIBATCHTYPE_TRANSPARENT","TRIBATCHTYPE_ADDITIVE","TRIBATCHTYPE_DISTORTION","target","batchType","FillMeshAreaVector","GetHullMeshAreas","pending","area","shaderData","GetGenericAreaShaderData","shader","code","built","buildMeshArea","ModifyTextureResPath","depthShader","generateDepthArea","sourceEffect","effect","effectFields","cloneFields","resource","resourceRefs","transparencyTextureName","effectFilePath","GetCompleteShaderPath","constParameters","parameters","areaFields","application","GetPatternApplicationData","layerCount","GetPatternLayerCount","layerIndex","projection","GetPatternProjectionData","enabled","layer","GetPatternLayerData","targetMaterials","GetMaterialTargets","position","isMirrored","clampU","projectionAddressModeU","clampV","projectionAddressModeV","materialIndex","materialSourceID","hullOffset","combinedGeometryPath","decalSet","GetHullDecalSets","IsInVisibilityData","items","effectName","EveSOFDataHullDecalSetItem","Usage","USAGE_LOGO","HasLogoSet","logoType","parameterNames","selectorFields","USAGE_STANDARD","color","GetColorSet","glowColorType","_glowColorType","add","sortedKeys","resourceNames","addResource","resourcePath","textures","resFilePath","GetGenericDecalShaderData","defaultTextures","parentTextures","GetHullTextureWithMeshIndex","logo","GetLogo","_logoType","GetDecalShaderLocationResPath","GetShaderPrefix","addOffset","indexBuffers","selectDecalIndexBuffers","parentBoneIndex","boneIndex","decalEffect","staticIndexBuffers","GetHullNextSubsystemOffset","impactType","GetImpactEffectType","ImpactEffectType","IMPACTEFFECT_NONE","damage","GetGenericDamageData","hullDamage","GetGenericHullDamageData","raceDamage","GetRaceDamageData","shieldMesh","IMPACTEFFECT_ELLIPSOID","shieldEffect","GetAreaShaderLocationResPath","GetImpactShieldShader","effectParameters","shieldDamageParameters","effectResources","shieldDamageTextures","shieldArea","shieldGeometryResFilePath","armorDamageShader","CreateArmorDamageEffect","armorImpactEmitter","createImpactEmitter","rate","armorParticleRate","angle","armorParticleAngle","innerAngle","minMaxSpeed","armorParticleMinMaxSpeed","minMaxLifeTime","armorParticleMinMaxLifeTime","sizes","armorParticleSizes","colors","armorParticleColors","textureIndex","armorParticleTextureIndex","velocityStretchRotation","armorParticleVelocityStretchRotation","drag","armorParticleDrag","turbulenceAmplitude","armorParticleTurbulenceAmplitude","turbulenceFrequency","armorParticleTurbulenceFrequency","colorMidpoint","armorParticleColorMidPoint","hullImpactEmitter","hullParticleRate","hullParticleAngle","hullParticleInnerAngle","hullParticleMinMaxSpeed","hullParticleMinMaxLifeTime","hullParticleSizes","hullParticleColors","hullParticleTextureIndex","hullParticleVelocityStretchRotation","hullParticleDrag","hullParticleTurbulenceAmplitude","hullParticleTurbulenceFrequency","hullParticleColorMidpoint","flickerCurve","alpha","flickerPerlinAlpha","beta","flickerPerlinBeta","N","flickerPerlinN","speed","flickerPerlinSpeed","offset","scale","shieldIsEllipsoid","hullDamageFlickerCurve","objectFields","childOwnerFields","SetupEffectChildren","SetupChildrenAndAnimations","emitterTargetsById","buildFilter","factionChild","GetFactionChildData","groupIndex","isVisible","redFilePath","reference","animationId","collectDynamicEmitterRefs","animation","GetHullAnimations","curves","bindings","startRate","scalar","keys","scalarKey","endRate","emitter","sourceAttribute","sourceObject","destinationAttribute","destinationObject","startRotationTime","curve","quaternionKey","startRotationValue","endRotationTime","endRotationValue","childSet","#resolveChildResource","sof6","resPath","loadChildAutomatically","raw","fragment","IsModelValuesRoot","IsCarbonDocument","isInteger","find","_type","isTransform","isSpaceObjectChild","#addResolvedChild","placement","composeChildPlacement","ImportRoot","cloneValue","ownerFields","parentOffset","ignoredScale","parentRotation","ignoredTranslation","transformMat4","multiply","front","transformQuat","observer","eventPrefix","prefix","scalingFactor","attenuationScalingFactor","rotationPath","GetModelRotationCurvePath","translationPath","GetModelTranslationCurvePath","hullInstanced","GetHullInstancedMeshes","meshContainer","containerFields","propagated","propagateInstancedMeshInstances","CreateInstancedMesh","createInstancedMeshArea","instanceTransforms","displayModifier","EveSOFDataInstancedMesh","DisplayQualityModifier","SHADER_ALL","displayFilter","bounds","translationBounds","maxScale","maximumInstanceScale","instanceData","particleSystem","rows","explicitBoundingBox","aabbMin","aabbMax","boundsMethod","instanceGeometryResPath","instanceGeometryResource","instanceMeshIndex","minBounds","maxBounds","maxInstanceSize","targetFields","buildContext","plan","placements","layoutFields","batches","groupLayoutPlacements","findSharedInstancedMeshes","sharedRef","sharedMeshes","hasPartTag","fixedPartTag","occurrences","first","extensionDna","isInstanced","DisableAnimation","transforms","updateLayoutBounds","placementAnimationOwners","isShared","locatorSetName","packInstanceMatrix","locator","CreateLayoutInstancedMesh","addChildMeshShaderOption","sofDna","sofParentHullName","ownedLocatorSets","BuildHullLocalLocatorSets","partArmorDamageShader","GetLocatorCount","occurrenceIndex","occurrence","randomizedScaling","sofLocatorIndex","locatorIndex","forEach","layoutContainerIsEmpty","types","addEffectShaderOption","areaIndex","areaCount","alphaCutout","reversed","GetRaceBoosterData","hasTrails","boosterLocatorRefs","GetHullBoosterData","direction","functionality","hasTrail","atlasIndex0","atlasIndex1","lightScale","mergeDocumentLocatorSet","createBoosterEffect","effectFar","glowEffect","samplerOverrides","glows","sprites","trails","trailEffect","trailSize","trailColor","glowScale","glowColor","warpGlowColor","symHaloScale","haloScaleX","haloScaleY","haloColor","warpHaloColor","lightOffset","lightFlickerAmplitude","lightFlickerFrequency","lightRadius","lightColor","lightWarpRadius","lightWarpColor","hull0","driveName","effectPath","#resolveObjectResource","gate","expects","expected","#addObjectResource","isInstancedPlacement","sharedSpriteEffect","SetupSpriteSets","SetupSpotlightSets","SetupPlaneSets","SetupSpriteLineSets","SetupHazeSets","SetupBannerSets","SetupBanners","SetupLights","sharedEffect","sourceColor","colorType","intensity","saturateColor","saturation","_colorType","blinkPhase","blinkRate","falloff","minScale","light","lightData","outerScaleMultiplier","innerRadius","innerScaleMultiplier","brightness","noiseAmplitude","noiseFrequency","noiseOctaves","flags","startTime","castsShadows","isVolumetric","lightProfilePath","skinned","coneEffect","fill","zOffset","coneTextureResPath","glowTextureResPath","spotlightItems","coneColor","flareColor","spriteColor","multiplyColor","modifyColor","coneIntensity","flareIntensity","spriteIntensity","GetFactionSpotlightSetData","mat4","fromTranslation","boosterGainInfluence","spriteScale","Math","abs","atan","PI","localPosition","innerAngleMultiplier","outerAngle","outerAngleMultiplier","texturePath","imageMap","pickBufferID","EveSOFDataHullPlaneSet","USAGE_SPACE_VIDEO","USAGE_HANGAR_VIDEO","layerMap1","layer1MapResPath","layerMap2","layer2MapResPath","maskMap","maskMapResPath","planeData","USAGE_HAZE","atlasSize","floor","atlasAspectRatio","getPlaneSetEffectPath","planes","usesLightParameters","fromRotationTranslationScale","GetFactionPlaneSetData","blinkData","phase","dutyCycle","blinkMode","layer1Scroll","layer1Transform","layer2Scroll","layer2Transform","maskAtlasID","maskMapAtlasIndex","lightRotation","lightPosition","fadeType","imageMapParameter","layerMap1Parameter","layerMap2Parameter","maskMapParameter","spriteLines","line","blinkPhaseShift","isCircle","spacing","positions","getSpriteLinePositions","spriteIndex","effects","getEffect","hazeType","EveSOFDataHullHazeSet","HazeType","TYPE_SPHERICAL","TYPE_HALFSPHERICAL","hazes","hazeBrightness","hazeData","hazeFalloff","sourceSize","sourceBrightness","boneMatrix","banners","addBannerItem","bannerLight","radiusMultiplier","innerRadiusMultiplier","addBannerSet","EveSOFDataHullBanner","_USAGE_COUNT","bannerTypes","size","EveSOFDataHullBannerSetItem","lightSet","lightKind","getLightKind","lightFields","_lightColor","isDynamic","GetHullTurretLocators","audioPosition","GetHullAudioPosition","armorShader","armorDamageParameters","armorDamageTextures","bySetName","GetHullLocatorSetNames","GetHullLocators","locatorRefs","composed","SetupTurretMaterialFromFaction","turretSet","GetFactionData","genericData","GetGenericData","ApplySofTurretMaterial","parameterName","findTurretFactionParameter","SetupTurretMaterialFromDNA","GetFactionTurretParameters","prefixes","materialPrefixes","info","EveSOFUtilsParameterName","IsMaterialIdxValid","GetMaterialIdx","materialUsageList","ChangeMaterialIdx","findTurretAreaParameter","colorData","areaMaterials","EveSOFDataArea","AreaType","TYPE_PRIMARY","areaType","materialName","materialNames","GetMaterialData","GetShortName","GetFullName","fallback","colorSet","seen","addEmitters","particleEmitters","visitTransform","visitEffectChild","time","leftTangent","rightTangent","interpolation","tangentType","matrix","scaleX","hypot","scaleY","scaleZ","getRotation","EveSOFDataHullLightSetItem","LightType","POINT_LIGHT","TEXTURED_POINT_LIGHT","SPOT_LIGHT","factor","multiplier","component","divisor","red","green","blue","maximum","minimum","delta","hue","hsvSaturation","hsvValue","hsvToRgb","nextSaturation","sector","fraction","p","q","t","trunc","point","sin","cos","bone","angleX","angleY","usageCount","GetGenericBannerShaderData","defaultParameters","isPickable","primaryTextureParameter","resolveTexturePath","emitArea","patternLayerCount","GetMeshAreaParameter","blockedMaterials","samplerNames","pattern","IsPatternLayerApplicableToArea","textureName","textureResFilePath","samplerName","addressU","addressV","addressW","mipFilter","lodBias","maxMipLevel","maxAnisotropy","_areaType","useSHLighting","doGenerateDepthArea","minLod","number","RangeError","some","isFinite","visited","every","ellipsoidToBounds","sourceSphere","sourceEllipsoid","transformedSphere","extendsBoundingSphere","includeLayoutSphere","extendsShieldEllipsoid","includeBounds","getScaling","current","next","dx","dy","dz","distance","centerValue","radiusValue","fallbackSphere","sourceBounds","x","y","z","axis","groups","batchKey","effectRef","duplicate","option","addMeshShaderOption","areaRef","decalRef","decal","sourceInstances","requestedOffsets","identityFastPath","isIdentityMatrix","clonePackedInstance","unpackInstanceMatrix","combined","transpose","transform0","transform1","transform2","lastTransform0","lastTransform1","lastTransform2","t0","t1","t2","Float32Array","identity","POSITIVE_INFINITY","NEGATIVE_INFINITY","maxLengthSquared","row","sqrt","lodOption","textureOverrides","vector","shape0","noiseSpeed","noiseAmplitureStart","noiseAmplitureEnd","shape1","warpShape0","warpShape1","shapeAtlasHeight","shapeAtlasCount","shapeAtlasResPath","gradient0ResPath","gradient1ResPath","record","a","b","localeCompare","hullCount","indices","multiHullIndexBuffers","combinedGeometryResPath","emitterData","minSpeed","maxSpeed","paramsData","minLifeTime","maxLifeTime","sizeVariance","color0","color1","color2","color3","VALUES_LITERAL_DOLLAR_REF","emitted","state","fromEntries","_ref","projected","valueId","_id","weightDeceleration","weightDecelerate","requests","normalizedPath","schema","load","results","resultKey","cause"],"mappings":"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"}