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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1638) hide show
  1. package/NOTICE +5 -4
  2. package/dist/audio/generated/audio/AudEventKey.js +2 -2
  3. package/dist/audio/generated/audio/AudEventKey.js.map +1 -1
  4. package/dist/audio/generated/audio/AudSettings.js +2 -2
  5. package/dist/audio/generated/audio/AudSettings.js.map +1 -1
  6. package/dist/audio/index.js +1 -1
  7. package/dist/audio/trinity/audio/AudEmitter.js +4 -5
  8. package/dist/audio/trinity/audio/AudEmitter.js.map +1 -1
  9. package/dist/audio/trinity/audio/AudEventCurve.js +14 -14
  10. package/dist/audio/trinity/audio/AudEventCurve.js.map +1 -1
  11. package/dist/audio/trinity/audio/AudGameObjResource.js +13 -25
  12. package/dist/audio/trinity/audio/AudGameObjResource.js.map +1 -1
  13. package/dist/audio/trinity/audio/AudManager.js +2 -2
  14. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  15. package/dist/audio/trinity/audio/AudParameter.js +7 -11
  16. package/dist/audio/trinity/audio/AudParameter.js.map +1 -1
  17. package/dist/audio/trinity/audio/AudUIPlayer.js +2 -2
  18. package/dist/audio/trinity/audio/AudUIPlayer.js.map +1 -1
  19. package/dist/audio/trinity/audio/AudioCurveSetDriver.js +2 -2
  20. package/dist/audio/trinity/audio/AudioCurveSetDriver.js.map +1 -1
  21. package/dist/audio/trinity/audio/StretchAudio.js +2 -2
  22. package/dist/audio/trinity/audio/StretchAudio.js.map +1 -1
  23. package/dist/audio/trinity/index.js +1 -1
  24. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js +2 -2
  25. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js.map +1 -1
  26. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js +2 -2
  27. package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js.map +1 -1
  28. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js +1 -37
  29. package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js.map +1 -1
  30. package/dist/character/incarna/curves/Tr2ColorCurve.js +2 -2
  31. package/dist/character/incarna/curves/Tr2ColorCurve.js.map +1 -1
  32. package/dist/character/incarna/curves/Tr2ColorKey.js +2 -2
  33. package/dist/character/incarna/curves/Tr2ColorKey.js.map +1 -1
  34. package/dist/character/incarna/curves/Tr2ScalarCurve.js +2 -2
  35. package/dist/character/incarna/curves/Tr2ScalarCurve.js.map +1 -1
  36. package/dist/character/incarna/curves/Tr2ScalarKey.js +2 -2
  37. package/dist/character/incarna/curves/Tr2ScalarKey.js.map +1 -1
  38. package/dist/character/incarna/interior/Tr2InteriorCell.js +2 -2
  39. package/dist/character/incarna/interior/Tr2InteriorCell.js.map +1 -1
  40. package/dist/character/library/CjsCharacterLibrary.js +9 -16
  41. package/dist/character/library/CjsCharacterLibrary.js.map +1 -1
  42. package/dist/character/library/CjsCharacterLibraryDocuments.js +20 -4
  43. package/dist/character/library/CjsCharacterLibraryDocuments.js.map +1 -1
  44. package/dist/character/model/CjsCharacterRecord.js +2 -2
  45. package/dist/character/model/CjsCharacterRecord.js.map +1 -1
  46. package/dist/character/model/activity/CjsCharacterArchetype.js +2 -2
  47. package/dist/character/model/activity/CjsCharacterArchetype.js.map +1 -1
  48. package/dist/character/model/appearance/CjsCharacterColorLocation.js +2 -2
  49. package/dist/character/model/appearance/CjsCharacterColorLocation.js.map +1 -1
  50. package/dist/character/model/appearance/CjsCharacterColorName.js +2 -2
  51. package/dist/character/model/appearance/CjsCharacterColorName.js.map +1 -1
  52. package/dist/character/model/appearance/CjsCharacterColorSelection.js +2 -2
  53. package/dist/character/model/appearance/CjsCharacterColorSelection.js.map +1 -1
  54. package/dist/character/model/appearance/CjsCharacterSculptSelection.js +2 -2
  55. package/dist/character/model/appearance/CjsCharacterSculptSelection.js.map +1 -1
  56. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js +2 -2
  57. package/dist/character/model/appearance/CjsCharacterSculptingLocation.js.map +1 -1
  58. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js +2 -2
  59. package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js.map +1 -1
  60. package/dist/character/model/catalog/CjsCharacterColorValue.js +2 -2
  61. package/dist/character/model/catalog/CjsCharacterColorValue.js.map +1 -1
  62. package/dist/character/model/catalog/CjsCharacterDefinition.js +2 -2
  63. package/dist/character/model/catalog/CjsCharacterDefinition.js.map +1 -1
  64. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js +2 -2
  65. package/dist/character/model/catalog/CjsCharacterMaterialProfile.js.map +1 -1
  66. package/dist/character/model/catalog/CjsCharacterModifierReference.js +2 -2
  67. package/dist/character/model/catalog/CjsCharacterModifierReference.js.map +1 -1
  68. package/dist/character/model/catalog/CjsCharacterPartMetadata.js +2 -2
  69. package/dist/character/model/catalog/CjsCharacterPartMetadata.js.map +1 -1
  70. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js +2 -2
  71. package/dist/character/model/catalog/CjsCharacterPartModelBundle.js.map +1 -1
  72. package/dist/character/model/catalog/CjsCharacterPartSource.js +2 -2
  73. package/dist/character/model/catalog/CjsCharacterPartSource.js.map +1 -1
  74. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js +2 -2
  75. package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js.map +1 -1
  76. package/dist/character/model/catalog/CjsCharacterPartType.js +2 -2
  77. package/dist/character/model/catalog/CjsCharacterPartType.js.map +1 -1
  78. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js +2 -2
  79. package/dist/character/model/catalog/CjsCharacterProjectionProfile.js.map +1 -1
  80. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js +2 -2
  81. package/dist/character/model/catalog/CjsCharacterRecipeEntry.js.map +1 -1
  82. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js +2 -2
  83. package/dist/character/model/catalog/CjsCharacterRecipeProfile.js.map +1 -1
  84. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js +2 -2
  85. package/dist/character/model/catalog/CjsCharacterTextureMetadata.js.map +1 -1
  86. package/dist/character/model/composition/CjsCharacterModifierLocation.js +2 -2
  87. package/dist/character/model/composition/CjsCharacterModifierLocation.js.map +1 -1
  88. package/dist/character/model/composition/CjsCharacterModifierSelection.js +2 -2
  89. package/dist/character/model/composition/CjsCharacterModifierSelection.js.map +1 -1
  90. package/dist/character/model/creation/CjsCharacterPaperdoll.js +2 -2
  91. package/dist/character/model/creation/CjsCharacterPaperdoll.js.map +1 -1
  92. package/dist/character/model/demographics/CjsCharacterAncestry.js +2 -2
  93. package/dist/character/model/demographics/CjsCharacterAncestry.js.map +1 -1
  94. package/dist/character/model/demographics/CjsCharacterBloodline.js +2 -2
  95. package/dist/character/model/demographics/CjsCharacterBloodline.js.map +1 -1
  96. package/dist/character/model/demographics/CjsCharacterRace.js +2 -2
  97. package/dist/character/model/demographics/CjsCharacterRace.js.map +1 -1
  98. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js +2 -2
  99. package/dist/character/model/planning/CjsCharacterAppearanceBinding.js.map +1 -1
  100. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js +2 -2
  101. package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js.map +1 -1
  102. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js +2 -2
  103. package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js.map +1 -1
  104. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js +2 -2
  105. package/dist/character/model/planning/CjsCharacterAppearanceLayer.js.map +1 -1
  106. package/dist/character/model/planning/CjsCharacterAppearancePlan.js +2 -2
  107. package/dist/character/model/planning/CjsCharacterAppearancePlan.js.map +1 -1
  108. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js +2 -2
  109. package/dist/character/model/planning/CjsCharacterAppearanceSelection.js.map +1 -1
  110. package/dist/character/model/planning/CjsCharacterBindingAlpha.js +2 -2
  111. package/dist/character/model/planning/CjsCharacterBindingAlpha.js.map +1 -1
  112. package/dist/character/model/planning/CjsCharacterCompositionInput.js +2 -2
  113. package/dist/character/model/planning/CjsCharacterCompositionInput.js.map +1 -1
  114. package/dist/character/model/planning/CjsCharacterCompositionPass.js +2 -2
  115. package/dist/character/model/planning/CjsCharacterCompositionPass.js.map +1 -1
  116. package/dist/character/model/planning/CjsCharacterCompositionTarget.js +2 -2
  117. package/dist/character/model/planning/CjsCharacterCompositionTarget.js.map +1 -1
  118. package/dist/character/model/planning/CjsCharacterCoverage.js +2 -2
  119. package/dist/character/model/planning/CjsCharacterCoverage.js.map +1 -1
  120. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js +2 -2
  121. package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js.map +1 -1
  122. package/dist/character/model/planning/CjsCharacterOrigin.js +2 -2
  123. package/dist/character/model/planning/CjsCharacterOrigin.js.map +1 -1
  124. package/dist/character/model/planning/CjsCharacterResolvedPart.js +2 -2
  125. package/dist/character/model/planning/CjsCharacterResolvedPart.js.map +1 -1
  126. package/dist/character/model/planning/CjsCharacterTextureAsset.js +2 -2
  127. package/dist/character/model/planning/CjsCharacterTextureAsset.js.map +1 -1
  128. package/dist/character/model/planning/CjsCharacterTextureChannel.js +2 -2
  129. package/dist/character/model/planning/CjsCharacterTextureChannel.js.map +1 -1
  130. package/dist/character/model/resources/CjsCharacterPortraitResource.js +2 -2
  131. package/dist/character/model/resources/CjsCharacterPortraitResource.js.map +1 -1
  132. package/dist/character/model/resources/CjsCharacterResource.js +2 -2
  133. package/dist/character/model/resources/CjsCharacterResource.js.map +1 -1
  134. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js +6 -5
  135. package/dist/character/trinity/interior/Tr2IntSkinnedObject.js.map +1 -1
  136. package/dist/character/trinity/interior/Tr2InteriorLightSource.js +2 -2
  137. package/dist/character/trinity/interior/Tr2InteriorLightSource.js.map +1 -1
  138. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js +4 -5
  139. package/dist/character/trinity/interior/Tr2InteriorPlaceable.js.map +1 -1
  140. package/dist/character/trinity/interior/Tr2InteriorScene.js +2 -2
  141. package/dist/character/trinity/interior/Tr2InteriorScene.js.map +1 -1
  142. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js +2 -2
  143. package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js.map +1 -1
  144. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js +2 -2
  145. package/dist/character/trinity/trinityCore/Tr2GStateParameter.js.map +1 -1
  146. package/dist/character/trinity/trinityCore/Tr2Model.js +2 -2
  147. package/dist/character/trinity/trinityCore/Tr2Model.js.map +1 -1
  148. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js +21 -10
  149. package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js.map +1 -1
  150. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js +64 -57
  151. package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js.map +1 -1
  152. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js +1 -1
  153. package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js.map +1 -1
  154. package/dist/character/trinity/wod/WodBakingScene.js +2 -2
  155. package/dist/character/trinity/wod/WodBakingScene.js.map +1 -1
  156. package/dist/core/CjsLibrary.js +32 -685
  157. package/dist/core/CjsLibrary.js.map +1 -1
  158. package/dist/core/index.js +1 -2
  159. package/dist/core/index.js.map +1 -1
  160. package/dist/global/blue/BeInfo.js +95 -0
  161. package/dist/global/blue/BeInfo.js.map +1 -0
  162. package/dist/global/blue/CcpDateTime.js +53 -0
  163. package/dist/global/blue/CcpDateTime.js.map +1 -0
  164. package/dist/global/blue/CcpTime.js +148 -0
  165. package/dist/global/blue/CcpTime.js.map +1 -0
  166. package/dist/global/blue/CjsBlueOS.js +301 -0
  167. package/dist/global/blue/CjsBlueOS.js.map +1 -0
  168. package/dist/global/blue/CjsBluePaths.js +97 -0
  169. package/dist/global/blue/CjsBluePaths.js.map +1 -0
  170. package/dist/global/blue/IBlueDynamicResourceConstructor.js +29 -0
  171. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -0
  172. package/dist/global/blue/IBlueEvents.js +34 -0
  173. package/dist/global/blue/IBlueEvents.js.map +1 -0
  174. package/dist/global/blue/IBlueOS.js +132 -0
  175. package/dist/global/blue/IBlueOS.js.map +1 -0
  176. package/dist/global/blue/IBluePaths.js +72 -0
  177. package/dist/global/blue/IBluePaths.js.map +1 -0
  178. package/dist/global/blue/IBlueResMan.js +93 -0
  179. package/dist/global/blue/IBlueResMan.js.map +1 -0
  180. package/dist/global/blue/IBlueResManNotifications.js +51 -0
  181. package/dist/global/blue/IBlueResManNotifications.js.map +1 -0
  182. package/dist/global/blue/ICatchupTicks.js +25 -0
  183. package/dist/global/blue/ICatchupTicks.js.map +1 -0
  184. package/dist/global/blue/IInitialize.js +47 -0
  185. package/dist/global/blue/IInitialize.js.map +1 -0
  186. package/dist/global/blue/IListNotify.js +44 -0
  187. package/dist/global/blue/IListNotify.js.map +1 -0
  188. package/dist/global/blue/INotify.js +65 -0
  189. package/dist/global/blue/INotify.js.map +1 -0
  190. package/dist/global/blue/ISimTimeRebaseNotify.js +28 -0
  191. package/dist/global/blue/ISimTimeRebaseNotify.js.map +1 -0
  192. package/dist/global/blue/IVariableTicker.js +24 -0
  193. package/dist/global/blue/IVariableTicker.js.map +1 -0
  194. package/dist/global/blue/blue.js +61 -0
  195. package/dist/global/blue/blue.js.map +1 -0
  196. package/dist/global/blue/enums/CjsBlueEnumRegistry.js +173 -0
  197. package/dist/global/blue/enums/CjsBlueEnumRegistry.js.map +1 -0
  198. package/dist/global/blue/index.js +19 -0
  199. package/dist/global/blue/index.js.map +1 -1
  200. package/dist/global/blue/registerTrinityEnums.js +43 -0
  201. package/dist/global/blue/registerTrinityEnums.js.map +1 -0
  202. package/dist/global/compose/abstract.js +81 -0
  203. package/dist/global/compose/abstract.js.map +1 -0
  204. package/dist/global/compose/interface.js +131 -26
  205. package/dist/global/compose/interface.js.map +1 -1
  206. package/dist/global/compose/notify.js +10 -1
  207. package/dist/global/compose/notify.js.map +1 -1
  208. package/dist/global/compose/values.js +116 -53
  209. package/dist/global/compose/values.js.map +1 -1
  210. package/dist/global/consts/blue.js +73 -0
  211. package/dist/global/consts/blue.js.map +1 -0
  212. package/dist/global/consts/graphics/index.js +1 -1
  213. package/dist/global/consts/graphics/trinityEnums.js +19 -7
  214. package/dist/global/consts/graphics/trinityEnums.js.map +1 -1
  215. package/dist/global/consts/index.js +2 -1
  216. package/dist/global/consts/index.js.map +1 -1
  217. package/dist/global/consts/trinity.js.map +1 -1
  218. package/dist/global/contracts/ITr2BoundingBox.js +1 -34
  219. package/dist/global/contracts/ITr2BoundingBox.js.map +1 -1
  220. package/dist/global/contracts/ITr2RenderNode.js +1 -27
  221. package/dist/global/contracts/ITr2RenderNode.js.map +1 -1
  222. package/dist/global/contracts/index.js +2 -4
  223. package/dist/global/contracts/index.js.map +1 -1
  224. package/dist/global/index.js +23 -5
  225. package/dist/global/index.js.map +1 -1
  226. package/dist/global/model/CjsModel.js +82 -99
  227. package/dist/global/model/CjsModel.js.map +1 -1
  228. package/dist/global/model/CjsModelState.js +0 -15
  229. package/dist/global/model/CjsModelState.js.map +1 -1
  230. package/dist/global/model/document/CjsDocumentHydrator.js +5 -1
  231. package/dist/global/model/document/CjsDocumentHydrator.js.map +1 -1
  232. package/dist/global/model/index.js +1 -1
  233. package/dist/global/schema/CjsSchema.js +275 -69
  234. package/dist/global/schema/CjsSchema.js.map +1 -1
  235. package/dist/global/schema/hydration.js +10 -8
  236. package/dist/global/schema/hydration.js.map +1 -1
  237. package/dist/global/schema/index.js +4 -3
  238. package/dist/global/schema/index.js.map +1 -1
  239. package/dist/global/schema/types/carbonTypes.js +1 -1
  240. package/dist/global/schema/types/carbonTypes.js.map +1 -1
  241. package/dist/global/utils/bytes.js +2 -0
  242. package/dist/global/utils/bytes.js.map +1 -1
  243. package/dist/global/utils/path.js +30 -1
  244. package/dist/global/utils/path.js.map +1 -1
  245. package/dist/index.js +59 -24
  246. package/dist/index.js.map +1 -1
  247. package/dist/resource/CjsResMan.js +206 -43
  248. package/dist/resource/CjsResMan.js.map +1 -1
  249. package/dist/resource/CjsResource.js +4 -1
  250. package/dist/resource/CjsResource.js.map +1 -1
  251. package/dist/resource/format/CjsBlueReader.js +8 -2
  252. package/dist/resource/format/CjsBlueReader.js.map +1 -1
  253. package/dist/resource/format/CjsResourceProbe.js +15 -16
  254. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  255. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js +132 -75
  256. package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -1
  257. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js +26 -0
  258. package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  259. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js +2 -1
  260. package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  261. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js +4 -0
  262. package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js.map +1 -0
  263. package/dist/resource/formats/black/core/blackDefinitions.js +1 -1
  264. package/dist/resource/formats/black/core/blackDefinitions.js.map +1 -1
  265. package/dist/resource/formats/black/core/blackSchema.js +1 -1
  266. package/dist/resource/formats/dds/CjsDdsFormat.js +50 -1
  267. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  268. package/dist/resource/formats/dds/core/helpers.js +51 -5
  269. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  270. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js +94 -0
  271. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js.map +1 -0
  272. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js +189 -0
  273. package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js.map +1 -0
  274. package/dist/resource/formats/fsd/64/readers/index.js +2 -0
  275. package/dist/resource/formats/fsd/64/readers/index.js.map +1 -1
  276. package/dist/resource/formats/hlsl/core/detailMapFamily.js +18 -92
  277. package/dist/resource/formats/hlsl/core/detailMapFamily.js.map +1 -1
  278. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js +285 -0
  279. package/dist/resource/formats/hlsl/core/textureArrayFamilies.js.map +1 -0
  280. package/dist/resource/formats/pickle/CjsPickleFormat.js +34 -14
  281. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  282. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +60 -451
  283. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  284. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +407 -0
  285. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -0
  286. package/dist/resource/formats/pickle/core/pickleCommon.js +671 -0
  287. package/dist/resource/formats/pickle/core/pickleCommon.js.map +1 -0
  288. package/dist/resource/formats/red/core/blackDefinitions.js +1 -1
  289. package/dist/resource/formats/webgl/core/effectPackage.js +85 -7
  290. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  291. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +666 -565
  292. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  293. package/dist/resource/formats/webgl/core/glslBackendBodySet.js +4 -4
  294. package/dist/resource/formats/webgl/core/glslBackendBodySet.js.map +1 -1
  295. package/dist/resource/formats/webgl/core/helpers.js +2 -2
  296. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  297. package/dist/resource/geometry/TriGeometryRes.js +61 -7
  298. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  299. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +11 -11
  300. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  301. package/dist/resource/index.js +11 -0
  302. package/dist/resource/index.js.map +1 -1
  303. package/dist/resource/shader/Tr2EffectRes.js +2 -3
  304. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  305. package/dist/resource/shader/Tr2MaterialArea.js +3 -3
  306. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
  307. package/dist/resource/shader/Tr2MaterialMesh.js +2 -2
  308. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
  309. package/dist/resource/shader/Tr2MaterialRes.js +3 -3
  310. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
  311. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +2 -2
  312. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  313. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +2 -2
  314. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  315. package/dist/resource/shader/reflection/Tr2Pass.js +4 -4
  316. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  317. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  318. package/dist/resource/texture/SolidColorTextureConstructor.js +46 -0
  319. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -0
  320. package/dist/resource/texture/Tr2ImageRes.js +3 -4
  321. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  322. package/dist/resource/texture/Tr2TextureLodManager.js +0 -1
  323. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePackChannel.js +4 -4
  325. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipeline.js +3 -4
  327. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +5 -5
  329. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +3 -3
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +2 -2
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +6 -6
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/texture/TriTextureRes.js +65 -21
  337. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  338. package/dist/resource/texture/index.js +2 -0
  339. package/dist/resource/texture/index.js.map +1 -1
  340. package/dist/resource/texture/solidColorTexture.js +111 -0
  341. package/dist/resource/texture/solidColorTexture.js.map +1 -0
  342. package/dist/resource/video/AudioMetadata.js +41 -0
  343. package/dist/resource/video/AudioMetadata.js.map +1 -0
  344. package/dist/resource/video/IAudioSink.js +51 -0
  345. package/dist/resource/video/IAudioSink.js.map +1 -0
  346. package/dist/resource/video/IEncodedFrame.js +52 -0
  347. package/dist/resource/video/IEncodedFrame.js.map +1 -0
  348. package/dist/resource/video/IVideoContainerParser.js +70 -0
  349. package/dist/resource/video/IVideoContainerParser.js.map +1 -0
  350. package/dist/resource/video/IVideoDecoder.js +36 -0
  351. package/dist/resource/video/IVideoDecoder.js.map +1 -0
  352. package/dist/resource/video/PcmFrame.js +33 -0
  353. package/dist/resource/video/PcmFrame.js.map +1 -0
  354. package/dist/resource/video/VideoFrame.js +45 -0
  355. package/dist/resource/video/VideoFrame.js.map +1 -0
  356. package/dist/resource/video/VideoMetadata.js +34 -0
  357. package/dist/resource/video/VideoMetadata.js.map +1 -0
  358. package/dist/resource/video/enums.js +30 -0
  359. package/dist/resource/video/enums.js.map +1 -0
  360. package/dist/sof/EveSOF.js +176 -176
  361. package/dist/sof/EveSOF.js.map +1 -1
  362. package/dist/sof/EveSOFDNA.js +5 -1
  363. package/dist/sof/EveSOFDNA.js.map +1 -1
  364. package/dist/sof/EveSOFData.js +2 -2
  365. package/dist/sof/EveSOFData.js.map +1 -1
  366. package/dist/sof/faction/EveSOFDataFaction.js +2 -2
  367. package/dist/sof/faction/EveSOFDataFaction.js.map +1 -1
  368. package/dist/sof/faction/EveSOFDataFactionChild.js +2 -2
  369. package/dist/sof/faction/EveSOFDataFactionChild.js.map +1 -1
  370. package/dist/sof/faction/EveSOFDataFactionColorSet.js +189 -3
  371. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  372. package/dist/sof/faction/EveSOFDataFactionHullArea.js +2 -2
  373. package/dist/sof/faction/EveSOFDataFactionHullArea.js.map +1 -1
  374. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js +2 -2
  375. package/dist/sof/faction/EveSOFDataFactionPlaneSet.js.map +1 -1
  376. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js +2 -2
  377. package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js.map +1 -1
  378. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js +2 -2
  379. package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js.map +1 -1
  380. package/dist/sof/generic/EveSOFDataGeneric.js +234 -230
  381. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  382. package/dist/sof/generic/EveSOFDataGenericDamage.js +2 -2
  383. package/dist/sof/generic/EveSOFDataGenericDamage.js.map +1 -1
  384. package/dist/sof/generic/EveSOFDataGenericDecalShader.js +2 -2
  385. package/dist/sof/generic/EveSOFDataGenericDecalShader.js.map +1 -1
  386. package/dist/sof/generic/EveSOFDataGenericHullCategory.js +27 -23
  387. package/dist/sof/generic/EveSOFDataGenericHullCategory.js.map +1 -1
  388. package/dist/sof/generic/EveSOFDataGenericHullDamage.js +2 -2
  389. package/dist/sof/generic/EveSOFDataGenericHullDamage.js.map +1 -1
  390. package/dist/sof/generic/EveSOFDataGenericShader.js +2 -2
  391. package/dist/sof/generic/EveSOFDataGenericShader.js.map +1 -1
  392. package/dist/sof/generic/EveSOFDataGenericString.js +2 -2
  393. package/dist/sof/generic/EveSOFDataGenericString.js.map +1 -1
  394. package/dist/sof/generic/EveSOFDataGenericSwarm.js +2 -2
  395. package/dist/sof/generic/EveSOFDataGenericSwarm.js.map +1 -1
  396. package/dist/sof/generic/EveSOFDataGenericVariant.js +2 -2
  397. package/dist/sof/generic/EveSOFDataGenericVariant.js.map +1 -1
  398. package/dist/sof/generic/EveSOFDataVisibilityGroup.js +2 -2
  399. package/dist/sof/generic/EveSOFDataVisibilityGroup.js.map +1 -1
  400. package/dist/sof/hull/EveSOFDataHull.js +56 -3
  401. package/dist/sof/hull/EveSOFDataHull.js.map +1 -1
  402. package/dist/sof/hull/EveSOFDataHullAnimation.js +2 -2
  403. package/dist/sof/hull/EveSOFDataHullAnimation.js.map +1 -1
  404. package/dist/sof/hull/EveSOFDataHullArea.js +58 -54
  405. package/dist/sof/hull/EveSOFDataHullArea.js.map +1 -1
  406. package/dist/sof/hull/EveSOFDataHullBanner.js +109 -3
  407. package/dist/sof/hull/EveSOFDataHullBanner.js.map +1 -1
  408. package/dist/sof/hull/EveSOFDataHullBannerLight.js +2 -2
  409. package/dist/sof/hull/EveSOFDataHullBannerLight.js.map +1 -1
  410. package/dist/sof/hull/EveSOFDataHullBannerSet.js +2 -2
  411. package/dist/sof/hull/EveSOFDataHullBannerSet.js.map +1 -1
  412. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js +109 -3
  413. package/dist/sof/hull/EveSOFDataHullBannerSetItem.js.map +1 -1
  414. package/dist/sof/hull/EveSOFDataHullBooster.js +2 -2
  415. package/dist/sof/hull/EveSOFDataHullBooster.js.map +1 -1
  416. package/dist/sof/hull/EveSOFDataHullBoosterItem.js +2 -2
  417. package/dist/sof/hull/EveSOFDataHullBoosterItem.js.map +1 -1
  418. package/dist/sof/hull/EveSOFDataHullChild.js +55 -50
  419. package/dist/sof/hull/EveSOFDataHullChild.js.map +1 -1
  420. package/dist/sof/hull/EveSOFDataHullChildSet.js +2 -2
  421. package/dist/sof/hull/EveSOFDataHullChildSet.js.map +1 -1
  422. package/dist/sof/hull/EveSOFDataHullChildSetItem.js +51 -46
  423. package/dist/sof/hull/EveSOFDataHullChildSetItem.js.map +1 -1
  424. package/dist/sof/hull/EveSOFDataHullController.js +2 -2
  425. package/dist/sof/hull/EveSOFDataHullController.js.map +1 -1
  426. package/dist/sof/hull/EveSOFDataHullDecalSet.js +2 -2
  427. package/dist/sof/hull/EveSOFDataHullDecalSet.js.map +1 -1
  428. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js +45 -3
  429. package/dist/sof/hull/EveSOFDataHullDecalSetItem.js.map +1 -1
  430. package/dist/sof/hull/EveSOFDataHullHazeSet.js +21 -3
  431. package/dist/sof/hull/EveSOFDataHullHazeSet.js.map +1 -1
  432. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js +47 -43
  433. package/dist/sof/hull/EveSOFDataHullHazeSetItem.js.map +1 -1
  434. package/dist/sof/hull/EveSOFDataHullLightSet.js +2 -2
  435. package/dist/sof/hull/EveSOFDataHullLightSet.js.map +1 -1
  436. package/dist/sof/hull/EveSOFDataHullLightSetItem.js +4 -2
  437. package/dist/sof/hull/EveSOFDataHullLightSetItem.js.map +1 -1
  438. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js +2 -2
  439. package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js.map +1 -1
  440. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js +2 -2
  441. package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js.map +1 -1
  442. package/dist/sof/hull/EveSOFDataHullLocator.js +2 -2
  443. package/dist/sof/hull/EveSOFDataHullLocator.js.map +1 -1
  444. package/dist/sof/hull/EveSOFDataHullLocatorSet.js +2 -2
  445. package/dist/sof/hull/EveSOFDataHullLocatorSet.js.map +1 -1
  446. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js +2 -2
  447. package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js.map +1 -1
  448. package/dist/sof/hull/EveSOFDataHullPlaneSet.js +29 -3
  449. package/dist/sof/hull/EveSOFDataHullPlaneSet.js.map +1 -1
  450. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js +81 -75
  451. package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js.map +1 -1
  452. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js +2 -2
  453. package/dist/sof/hull/EveSOFDataHullSoundEmitter.js.map +1 -1
  454. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js +2 -2
  455. package/dist/sof/hull/EveSOFDataHullSpotlightSet.js.map +1 -1
  456. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js +45 -41
  457. package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js.map +1 -1
  458. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js +2 -2
  459. package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js.map +1 -1
  460. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js +70 -66
  461. package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js.map +1 -1
  462. package/dist/sof/hull/EveSOFDataHullSpriteSet.js +2 -2
  463. package/dist/sof/hull/EveSOFDataHullSpriteSet.js.map +1 -1
  464. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js +45 -41
  465. package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js.map +1 -1
  466. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js +2 -2
  467. package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js.map +1 -1
  468. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js +2 -2
  469. package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js.map +1 -1
  470. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js +2 -2
  471. package/dist/sof/layout/EveSOFDataHullExtensionBucket.js.map +1 -1
  472. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js +2 -2
  473. package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js.map +1 -1
  474. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js +2 -2
  475. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js.map +1 -1
  476. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js +35 -3
  477. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js.map +1 -1
  478. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js +2 -2
  479. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js.map +1 -1
  480. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js +2 -2
  481. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js.map +1 -1
  482. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js +2 -2
  483. package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js.map +1 -1
  484. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js +2 -2
  485. package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js.map +1 -1
  486. package/dist/sof/layout/EveSOFDataLayout.js +2 -2
  487. package/dist/sof/layout/EveSOFDataLayout.js.map +1 -1
  488. package/dist/sof/pattern/EveSOFDataPattern.js +2 -2
  489. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  490. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js +2 -2
  491. package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js.map +1 -1
  492. package/dist/sof/pattern/EveSOFDataPatternLayer.js +60 -3
  493. package/dist/sof/pattern/EveSOFDataPatternLayer.js.map +1 -1
  494. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js +23 -3
  495. package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js.map +1 -1
  496. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js +2 -2
  497. package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js.map +1 -1
  498. package/dist/sof/pattern/EveSOFDataPatternPerHull.js +2 -2
  499. package/dist/sof/pattern/EveSOFDataPatternPerHull.js.map +1 -1
  500. package/dist/sof/pattern/EveSOFDataPatternTransform.js +2 -2
  501. package/dist/sof/pattern/EveSOFDataPatternTransform.js.map +1 -1
  502. package/dist/sof/race/EveSOFDataRace.js +46 -42
  503. package/dist/sof/race/EveSOFDataRace.js.map +1 -1
  504. package/dist/sof/race/EveSOFDataRaceDamage.js +2 -2
  505. package/dist/sof/race/EveSOFDataRaceDamage.js.map +1 -1
  506. package/dist/sof/shared/CjsExternalRef.js +2 -2
  507. package/dist/sof/shared/CjsExternalRef.js.map +1 -1
  508. package/dist/sof/shared/EveSOFDNADescriptor.js +2 -2
  509. package/dist/sof/shared/EveSOFDNADescriptor.js.map +1 -1
  510. package/dist/sof/shared/EveSOFDataArea.js +61 -3
  511. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  512. package/dist/sof/shared/EveSOFDataAreaMaterial.js +4 -2
  513. package/dist/sof/shared/EveSOFDataAreaMaterial.js.map +1 -1
  514. package/dist/sof/shared/EveSOFDataBlinkType.js +48 -8
  515. package/dist/sof/shared/EveSOFDataBlinkType.js.map +1 -1
  516. package/dist/sof/shared/EveSOFDataBooster.js +2 -2
  517. package/dist/sof/shared/EveSOFDataBooster.js.map +1 -1
  518. package/dist/sof/shared/EveSOFDataBoosterShape.js +2 -2
  519. package/dist/sof/shared/EveSOFDataBoosterShape.js.map +1 -1
  520. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js +2 -2
  521. package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js.map +1 -1
  522. package/dist/sof/shared/EveSOFDataInstancedMesh.js +40 -3
  523. package/dist/sof/shared/EveSOFDataInstancedMesh.js.map +1 -1
  524. package/dist/sof/shared/EveSOFDataLogo.js +2 -2
  525. package/dist/sof/shared/EveSOFDataLogo.js.map +1 -1
  526. package/dist/sof/shared/EveSOFDataLogoSet.js +33 -3
  527. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  528. package/dist/sof/shared/EveSOFDataMaterial.js +2 -2
  529. package/dist/sof/shared/EveSOFDataMaterial.js.map +1 -1
  530. package/dist/sof/shared/EveSOFDataParameter.js +2 -2
  531. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  532. package/dist/sof/shared/EveSOFDataParameterBool.js +2 -2
  533. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -1
  534. package/dist/sof/shared/EveSOFDataParameterColor.js +2 -2
  535. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -1
  536. package/dist/sof/shared/EveSOFDataParameterFloat.js +2 -2
  537. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -1
  538. package/dist/sof/shared/EveSOFDataParameterInt.js +2 -2
  539. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -1
  540. package/dist/sof/shared/EveSOFDataParameterVector2.js +2 -2
  541. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -1
  542. package/dist/sof/shared/EveSOFDataParameterVector3.js +2 -2
  543. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -1
  544. package/dist/sof/shared/EveSOFDataPointLightAttachment.js +2 -2
  545. package/dist/sof/shared/EveSOFDataPointLightAttachment.js.map +1 -1
  546. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js +2 -2
  547. package/dist/sof/shared/EveSOFDataSpotLightAttachment.js.map +1 -1
  548. package/dist/sof/shared/EveSOFDataTexture.js +2 -2
  549. package/dist/sof/shared/EveSOFDataTexture.js.map +1 -1
  550. package/dist/sof/shared/EveSOFDataTransform.js +2 -2
  551. package/dist/sof/shared/EveSOFDataTransform.js.map +1 -1
  552. package/dist/sof/shared/EveSofDataMeshInstance.js +2 -2
  553. package/dist/sof/shared/EveSofDataMeshInstance.js.map +1 -1
  554. package/dist/sof/sofDocumentValues.js +9 -0
  555. package/dist/sof/sofDocumentValues.js.map +1 -1
  556. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +2 -25
  557. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -1
  558. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js +2 -72
  559. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -1
  560. package/dist/trinity/controllers/ITr2ControllerOwner.js +1 -36
  561. package/dist/trinity/controllers/ITr2ControllerOwner.js.map +1 -1
  562. package/dist/trinity/controllers/Tr2Controller.js +4 -5
  563. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  564. package/dist/trinity/controllers/Tr2ControllerEventHandler.js +2 -2
  565. package/dist/trinity/controllers/Tr2ControllerEventHandler.js.map +1 -1
  566. package/dist/trinity/controllers/Tr2ControllerReference.js +9 -17
  567. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  568. package/dist/trinity/controllers/Tr2SyncToAnimation.js +4 -5
  569. package/dist/trinity/controllers/Tr2SyncToAnimation.js.map +1 -1
  570. package/dist/trinity/controllers/action/ITr2ControllerAction.js +1 -28
  571. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  572. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js +9 -7
  573. package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js.map +1 -1
  574. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js +11 -9
  575. package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js.map +1 -1
  576. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js +9 -7
  577. package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js.map +1 -1
  578. package/dist/trinity/controllers/action/Tr2ActionCallback.js +4 -5
  579. package/dist/trinity/controllers/action/Tr2ActionCallback.js.map +1 -1
  580. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js +4 -5
  581. package/dist/trinity/controllers/action/Tr2ActionChildEffect.js.map +1 -1
  582. package/dist/trinity/controllers/action/Tr2ActionOverlay.js +4 -5
  583. package/dist/trinity/controllers/action/Tr2ActionOverlay.js.map +1 -1
  584. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js +4 -5
  585. package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js.map +1 -1
  586. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js +13 -9
  587. package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js.map +1 -1
  588. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js +4 -5
  589. package/dist/trinity/controllers/action/Tr2ActionPlaySound.js.map +1 -1
  590. package/dist/trinity/controllers/action/Tr2ActionPython.js +6 -6
  591. package/dist/trinity/controllers/action/Tr2ActionPython.js.map +1 -1
  592. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js +4 -5
  593. package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js.map +1 -1
  594. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js +4 -5
  595. package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js.map +1 -1
  596. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js +4 -5
  597. package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
  598. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js +4 -5
  599. package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js.map +1 -1
  600. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js +8 -17
  601. package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js.map +1 -1
  602. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js +4 -5
  603. package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js.map +1 -1
  604. package/dist/trinity/controllers/action/Tr2ActionSetValue.js +11 -9
  605. package/dist/trinity/controllers/action/Tr2ActionSetValue.js.map +1 -1
  606. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +4 -5
  607. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  608. package/dist/trinity/controllers/contracts.js +27 -19
  609. package/dist/trinity/controllers/contracts.js.map +1 -1
  610. package/dist/trinity/controllers/expression/Tr2BindingPoint.js +6 -15
  611. package/dist/trinity/controllers/expression/Tr2BindingPoint.js.map +1 -1
  612. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js +2 -2
  613. package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js.map +1 -1
  614. package/dist/trinity/controllers/expression/expressionRuntime.js +136 -0
  615. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -1
  616. package/dist/trinity/controllers/index.js +6 -6
  617. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +1 -24
  618. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  619. package/dist/trinity/controllers/state/Tr2StateMachine.js +4 -6
  620. package/dist/trinity/controllers/state/Tr2StateMachine.js.map +1 -1
  621. package/dist/trinity/controllers/state/Tr2StateMachineState.js +6 -6
  622. package/dist/trinity/controllers/state/Tr2StateMachineState.js.map +1 -1
  623. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js +12 -9
  624. package/dist/trinity/controllers/state/Tr2StateMachineTransition.js.map +1 -1
  625. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +5 -6
  626. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  627. package/dist/trinity/core/ITr2Renderable.js +1 -49
  628. package/dist/trinity/core/ITr2Renderable.js.map +1 -1
  629. package/dist/trinity/core/ITr2Updateable.js +1 -22
  630. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  631. package/dist/trinity/core/ITriReroutable.js +56 -0
  632. package/dist/trinity/core/ITriReroutable.js.map +1 -0
  633. package/dist/trinity/core/Tr2Denoiser.js +2 -2
  634. package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
  635. package/dist/trinity/core/Tr2MaterialParameterStore.js +2 -2
  636. package/dist/trinity/core/Tr2MaterialParameterStore.js.map +1 -1
  637. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js +2 -2
  638. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -1
  639. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +1 -1
  640. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -1
  641. package/dist/trinity/core/Tr2Renderer.js +161 -4
  642. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  643. package/dist/trinity/core/Tr2ShadowMap.js +3 -3
  644. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  645. package/dist/trinity/core/Tr2StreamingBitmapSaver.js +2 -2
  646. package/dist/trinity/core/Tr2StreamingBitmapSaver.js.map +1 -1
  647. package/dist/trinity/core/Tr2Transform.js +4 -5
  648. package/dist/trinity/core/Tr2Transform.js.map +1 -1
  649. package/dist/trinity/core/animation/Tr2GrannyAnimation.js +2 -2
  650. package/dist/trinity/core/animation/Tr2GrannyAnimation.js.map +1 -1
  651. package/dist/trinity/core/animation/Tr2TextureAnimation.js +2 -2
  652. package/dist/trinity/core/animation/Tr2TextureAnimation.js.map +1 -1
  653. package/dist/trinity/core/animation/TriRigidOrientation.js +2 -2
  654. package/dist/trinity/core/animation/TriRigidOrientation.js.map +1 -1
  655. package/dist/trinity/core/animation/TriTorque.js +2 -2
  656. package/dist/trinity/core/animation/TriTorque.js.map +1 -1
  657. package/dist/trinity/core/batch/CjsBatchManager.js +15 -50
  658. package/dist/trinity/core/batch/CjsBatchManager.js.map +1 -1
  659. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -1
  660. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js +12 -14
  661. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -1
  662. package/dist/trinity/core/binding/Tr2BindingVector3.js +2 -2
  663. package/dist/trinity/core/binding/Tr2BindingVector3.js.map +1 -1
  664. package/dist/trinity/core/binding/Tr2DynamicBinding.js +6 -20
  665. package/dist/trinity/core/binding/Tr2DynamicBinding.js.map +1 -1
  666. package/dist/trinity/core/binding/Tr2ExternalParameter.js +3 -6
  667. package/dist/trinity/core/binding/Tr2ExternalParameter.js.map +1 -1
  668. package/dist/trinity/core/binding/Tr2PyValueBinding.js +2 -2
  669. package/dist/trinity/core/binding/Tr2PyValueBinding.js.map +1 -1
  670. package/dist/trinity/core/binding/TriValueBinding.js +50 -24
  671. package/dist/trinity/core/binding/TriValueBinding.js.map +1 -1
  672. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js +0 -6
  673. package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js.map +1 -1
  674. package/dist/trinity/core/context/CjsTrinityStepExecutor.js +7 -10
  675. package/dist/trinity/core/context/CjsTrinityStepExecutor.js.map +1 -1
  676. package/dist/trinity/core/context/Tr2RenderContext.js +74 -116
  677. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  678. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  679. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  680. package/dist/trinity/core/device/Tr2GpuBuffer.js +2 -2
  681. package/dist/trinity/core/device/Tr2GpuBuffer.js.map +1 -1
  682. package/dist/trinity/core/device/Tr2RenderTarget.js +2 -2
  683. package/dist/trinity/core/device/Tr2RenderTarget.js.map +1 -1
  684. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +2 -2
  685. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -1
  686. package/dist/trinity/core/device/Tr2SwapChain.js +2 -2
  687. package/dist/trinity/core/device/Tr2SwapChain.js.map +1 -1
  688. package/dist/trinity/core/device/TriDevice.js +576 -37
  689. package/dist/trinity/core/device/TriDevice.js.map +1 -1
  690. package/dist/trinity/core/device/gTriDev.js +49 -0
  691. package/dist/trinity/core/device/gTriDev.js.map +1 -0
  692. package/dist/trinity/core/index.js +9 -5
  693. package/dist/trinity/core/index.js.map +1 -1
  694. package/dist/trinity/core/lighting/Tr2KelvinColor.js +2 -2
  695. package/dist/trinity/core/lighting/Tr2KelvinColor.js.map +1 -1
  696. package/dist/trinity/core/lighting/Tr2LightManager.js +7 -17
  697. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  698. package/dist/trinity/core/lighting/Tr2ShLightingManager.js +2 -2
  699. package/dist/trinity/core/lighting/Tr2ShLightingManager.js.map +1 -1
  700. package/dist/trinity/core/line/Tr2BoundingLineSet.js +2 -2
  701. package/dist/trinity/core/line/Tr2BoundingLineSet.js.map +1 -1
  702. package/dist/trinity/core/line/Tr2CurveLineSet.js +10 -7
  703. package/dist/trinity/core/line/Tr2CurveLineSet.js.map +1 -1
  704. package/dist/trinity/core/line/Tr2LineGraph.js +2 -2
  705. package/dist/trinity/core/line/Tr2LineGraph.js.map +1 -1
  706. package/dist/trinity/core/line/Tr2PrimitiveSet.js +4 -5
  707. package/dist/trinity/core/line/Tr2PrimitiveSet.js.map +1 -1
  708. package/dist/trinity/core/line/TriLineSet.js +2 -2
  709. package/dist/trinity/core/line/TriLineSet.js.map +1 -1
  710. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js +1 -37
  711. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -1
  712. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js +1 -34
  713. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -1
  714. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +5 -6
  715. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  716. package/dist/trinity/core/mesh/Tr2InstancedMesh.js +2 -2
  717. package/dist/trinity/core/mesh/Tr2InstancedMesh.js.map +1 -1
  718. package/dist/trinity/core/mesh/Tr2Mesh.js +288 -183
  719. package/dist/trinity/core/mesh/Tr2Mesh.js.map +1 -1
  720. package/dist/trinity/core/mesh/Tr2MeshArea.js +32 -3
  721. package/dist/trinity/core/mesh/Tr2MeshArea.js.map +1 -1
  722. package/dist/trinity/core/mesh/Tr2MeshBase.js +58 -8
  723. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  724. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +141 -142
  725. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  726. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js +2 -2
  727. package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js.map +1 -1
  728. package/dist/trinity/core/procedural/GradientTextureConstructor.js +62 -0
  729. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -0
  730. package/dist/trinity/core/procedural/gradientTexture.js +196 -0
  731. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -0
  732. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -1
  733. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +5 -0
  734. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -1
  735. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +2 -0
  736. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -1
  737. package/dist/trinity/core/tool/Tr2ManipulationTool.js +2 -2
  738. package/dist/trinity/core/tool/Tr2ManipulationTool.js.map +1 -1
  739. package/dist/trinity/core/tool/Tr2RotationTool.js +2 -2
  740. package/dist/trinity/core/tool/Tr2RotationTool.js.map +1 -1
  741. package/dist/trinity/core/tool/Tr2ScalingTool.js +2 -2
  742. package/dist/trinity/core/tool/Tr2ScalingTool.js.map +1 -1
  743. package/dist/trinity/core/tool/Tr2TranslationTool.js +2 -2
  744. package/dist/trinity/core/tool/Tr2TranslationTool.js.map +1 -1
  745. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js +2 -2
  746. package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js.map +1 -1
  747. package/dist/trinity/core/variable/TriFloat.js +2 -2
  748. package/dist/trinity/core/variable/TriFloat.js.map +1 -1
  749. package/dist/trinity/core/variable/TriObserverLocal.js +2 -2
  750. package/dist/trinity/core/variable/TriObserverLocal.js.map +1 -1
  751. package/dist/trinity/core/variable/TriVariable.js +2 -2
  752. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  753. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js +2 -0
  754. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -1
  755. package/dist/trinity/core/view/TriProjection.js +2 -2
  756. package/dist/trinity/core/view/TriProjection.js.map +1 -1
  757. package/dist/trinity/core/view/TriRect.js +2 -2
  758. package/dist/trinity/core/view/TriRect.js.map +1 -1
  759. package/dist/trinity/core/view/TriView.js +2 -2
  760. package/dist/trinity/core/view/TriView.js.map +1 -1
  761. package/dist/trinity/core/view/TriViewport.js +2 -2
  762. package/dist/trinity/core/view/TriViewport.js.map +1 -1
  763. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +3 -3
  764. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  765. package/dist/trinity/curves/Tr2CurveSetRange.js +2 -2
  766. package/dist/trinity/curves/Tr2CurveSetRange.js.map +1 -1
  767. package/dist/trinity/curves/TriCurveSet.js +2 -2
  768. package/dist/trinity/curves/TriCurveSet.js.map +1 -1
  769. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js +2 -2
  770. package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js.map +1 -1
  771. package/dist/trinity/curves/curve/Tr2CurveColor.js +2 -2
  772. package/dist/trinity/curves/curve/Tr2CurveColor.js.map +1 -1
  773. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js +2 -2
  774. package/dist/trinity/curves/curve/Tr2CurveColorMixer.js.map +1 -1
  775. package/dist/trinity/curves/curve/Tr2CurveCombiner.js +3 -3
  776. package/dist/trinity/curves/curve/Tr2CurveCombiner.js.map +1 -1
  777. package/dist/trinity/curves/curve/Tr2CurveConstant.js +2 -2
  778. package/dist/trinity/curves/curve/Tr2CurveConstant.js.map +1 -1
  779. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js +2 -2
  780. package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js.map +1 -1
  781. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js +2 -2
  782. package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js.map +1 -1
  783. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js +3 -3
  784. package/dist/trinity/curves/curve/Tr2CurveQuaternion.js.map +1 -1
  785. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +2 -2
  786. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  787. package/dist/trinity/curves/curve/Tr2CurveScalar.js +3 -3
  788. package/dist/trinity/curves/curve/Tr2CurveScalar.js.map +1 -1
  789. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js +2 -2
  790. package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js.map +1 -1
  791. package/dist/trinity/curves/curve/Tr2CurveVector2.js +2 -2
  792. package/dist/trinity/curves/curve/Tr2CurveVector2.js.map +1 -1
  793. package/dist/trinity/curves/curve/Tr2CurveVector3.js +2 -2
  794. package/dist/trinity/curves/curve/Tr2CurveVector3.js.map +1 -1
  795. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js +2 -2
  796. package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js.map +1 -1
  797. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js +2 -2
  798. package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js.map +1 -1
  799. package/dist/trinity/curves/curve/Tr2DistanceTracker.js +5 -5
  800. package/dist/trinity/curves/curve/Tr2DistanceTracker.js.map +1 -1
  801. package/dist/trinity/curves/curve/Tr2FollowCurve.js +2 -2
  802. package/dist/trinity/curves/curve/Tr2FollowCurve.js.map +1 -1
  803. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js +2 -2
  804. package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js.map +1 -1
  805. package/dist/trinity/curves/curve/Tr2RotationAdapter.js +2 -2
  806. package/dist/trinity/curves/curve/Tr2RotationAdapter.js.map +1 -1
  807. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js +2 -2
  808. package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js.map +1 -1
  809. package/dist/trinity/curves/curve/Tr2ScalarFader.js +2 -2
  810. package/dist/trinity/curves/curve/Tr2ScalarFader.js.map +1 -1
  811. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js +2 -2
  812. package/dist/trinity/curves/curve/Tr2TranslationAdapter.js.map +1 -1
  813. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js +2 -2
  814. package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js.map +1 -1
  815. package/dist/trinity/curves/curve/TriColorSequencer.js +18 -18
  816. package/dist/trinity/curves/curve/TriColorSequencer.js.map +1 -1
  817. package/dist/trinity/curves/curve/TriEventCurve.js +51 -51
  818. package/dist/trinity/curves/curve/TriEventCurve.js.map +1 -1
  819. package/dist/trinity/curves/curve/TriPerlinCurve.js +2 -2
  820. package/dist/trinity/curves/curve/TriPerlinCurve.js.map +1 -1
  821. package/dist/trinity/curves/curve/TriVectorSequencer.js +36 -36
  822. package/dist/trinity/curves/curve/TriVectorSequencer.js.map +1 -1
  823. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js +2 -2
  824. package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js.map +1 -1
  825. package/dist/trinity/curves/key/Tr2MatrixKey.js +2 -2
  826. package/dist/trinity/curves/key/Tr2MatrixKey.js.map +1 -1
  827. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js +2 -2
  828. package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js.map +1 -1
  829. package/dist/trinity/curves/key/Tr2ScalarExprKey.js +28 -24
  830. package/dist/trinity/curves/key/Tr2ScalarExprKey.js.map +1 -1
  831. package/dist/trinity/curves/key/TriEventKey.js +2 -2
  832. package/dist/trinity/curves/key/TriEventKey.js.map +1 -1
  833. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js +2 -2
  834. package/dist/trinity/curves/track/Tr2GrannyEventTrack.js.map +1 -1
  835. package/dist/trinity/curves/track/Tr2GrannyTrack.js +9 -4
  836. package/dist/trinity/curves/track/Tr2GrannyTrack.js.map +1 -1
  837. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js +2 -2
  838. package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js.map +1 -1
  839. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js +2 -2
  840. package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js.map +1 -1
  841. package/dist/trinity/eve/AudioGameObject.js +6 -8
  842. package/dist/trinity/eve/AudioGameObject.js.map +1 -1
  843. package/dist/trinity/eve/EveCustomMask.js +2 -2
  844. package/dist/trinity/eve/EveCustomMask.js.map +1 -1
  845. package/dist/trinity/eve/EveDistanceField.js +6 -4
  846. package/dist/trinity/eve/EveDistanceField.js.map +1 -1
  847. package/dist/trinity/eve/EveImpactOverlay.js +2 -2
  848. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  849. package/dist/trinity/eve/EveThrottleable.js +2 -2
  850. package/dist/trinity/eve/EveThrottleable.js.map +1 -1
  851. package/dist/trinity/eve/EveTriggerVolume.js +4 -5
  852. package/dist/trinity/eve/EveTriggerVolume.js.map +1 -1
  853. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +1 -23
  854. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  855. package/dist/trinity/eve/IEveSpaceObject2.js +1 -24
  856. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  857. package/dist/trinity/eve/IEveTransform.js +1 -22
  858. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  859. package/dist/trinity/eve/attachment/banner/EveBannerItem.js +2 -2
  860. package/dist/trinity/eve/attachment/banner/EveBannerItem.js.map +1 -1
  861. package/dist/trinity/eve/attachment/banner/EveBannerLight.js +2 -2
  862. package/dist/trinity/eve/attachment/banner/EveBannerLight.js.map +1 -1
  863. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +20 -3
  864. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  865. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +127 -122
  866. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  867. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +5 -5
  868. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -1
  869. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +4 -5
  870. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  871. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js +4 -2
  872. package/dist/trinity/eve/attachment/booster/EveTrailsSet.js.map +1 -1
  873. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +169 -155
  874. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  875. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +3 -3
  876. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  877. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js +2 -2
  878. package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js.map +1 -1
  879. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js +2 -2
  880. package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js.map +1 -1
  881. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js +2 -2
  882. package/dist/trinity/eve/attachment/plane/EvePlaneLight.js.map +1 -1
  883. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +10 -4
  884. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  885. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js +3 -2
  886. package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js.map +1 -1
  887. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js +2 -2
  888. package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -1
  889. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +3 -3
  890. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  891. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js +2 -2
  892. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -1
  893. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js +2 -2
  894. package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js.map +1 -1
  895. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +4 -4
  896. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  897. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js +2 -2
  898. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -1
  899. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +5 -5
  900. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  901. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js +2 -2
  902. package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -1
  903. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js +7 -4
  904. package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
  905. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +177 -144
  906. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  907. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +2 -2
  908. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  909. package/dist/trinity/eve/camera/EveCamera.js +5 -11
  910. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  911. package/dist/trinity/eve/child/EveChildAudio.js +4 -5
  912. package/dist/trinity/eve/child/EveChildAudio.js.map +1 -1
  913. package/dist/trinity/eve/child/EveChildBehaviorSystem.js +5 -6
  914. package/dist/trinity/eve/child/EveChildBehaviorSystem.js.map +1 -1
  915. package/dist/trinity/eve/child/EveChildBoosterSet.js +6 -6
  916. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  917. package/dist/trinity/eve/child/EveChildBulletStorm.js +4 -5
  918. package/dist/trinity/eve/child/EveChildBulletStorm.js.map +1 -1
  919. package/dist/trinity/eve/child/EveChildCloud.js +5 -6
  920. package/dist/trinity/eve/child/EveChildCloud.js.map +1 -1
  921. package/dist/trinity/eve/child/EveChildCloud2.js +166 -166
  922. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  923. package/dist/trinity/eve/child/EveChildContainer.js +235 -169
  924. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  925. package/dist/trinity/eve/child/EveChildEffectPropagator.js +9 -9
  926. package/dist/trinity/eve/child/EveChildEffectPropagator.js.map +1 -1
  927. package/dist/trinity/eve/child/EveChildExplosion.js +11 -7
  928. package/dist/trinity/eve/child/EveChildExplosion.js.map +1 -1
  929. package/dist/trinity/eve/child/EveChildFogVolume.js +2 -2
  930. package/dist/trinity/eve/child/EveChildFogVolume.js.map +1 -1
  931. package/dist/trinity/eve/child/EveChildInheritProperties.js +2 -2
  932. package/dist/trinity/eve/child/EveChildInheritProperties.js.map +1 -1
  933. package/dist/trinity/eve/child/EveChildInstanceContainer.js +2 -2
  934. package/dist/trinity/eve/child/EveChildInstanceContainer.js.map +1 -1
  935. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js +11 -7
  936. package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js.map +1 -1
  937. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +2 -2
  938. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  939. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +2 -2
  940. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -1
  941. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +2 -2
  942. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -1
  943. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +4 -5
  944. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  945. package/dist/trinity/eve/child/EveChildLightingOverride.js +4 -5
  946. package/dist/trinity/eve/child/EveChildLightingOverride.js.map +1 -1
  947. package/dist/trinity/eve/child/EveChildLineSet.js +4 -5
  948. package/dist/trinity/eve/child/EveChildLineSet.js.map +1 -1
  949. package/dist/trinity/eve/child/EveChildLink.js +2 -2
  950. package/dist/trinity/eve/child/EveChildLink.js.map +1 -1
  951. package/dist/trinity/eve/child/EveChildMesh.js +315 -229
  952. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  953. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +2 -2
  954. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -1
  955. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js +2 -2
  956. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -1
  957. package/dist/trinity/eve/child/EveChildParticleSphere.js +4 -5
  958. package/dist/trinity/eve/child/EveChildParticleSphere.js.map +1 -1
  959. package/dist/trinity/eve/child/EveChildParticleSystem.js +36 -36
  960. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  961. package/dist/trinity/eve/child/EveChildPlug.js +60 -14
  962. package/dist/trinity/eve/child/EveChildPlug.js.map +1 -1
  963. package/dist/trinity/eve/child/EveChildPostProcessVolume.js +2 -2
  964. package/dist/trinity/eve/child/EveChildPostProcessVolume.js.map +1 -1
  965. package/dist/trinity/eve/child/EveChildQuad.js +4 -5
  966. package/dist/trinity/eve/child/EveChildQuad.js.map +1 -1
  967. package/dist/trinity/eve/child/EveChildRef.js +2 -2
  968. package/dist/trinity/eve/child/EveChildRef.js.map +1 -1
  969. package/dist/trinity/eve/child/EveChildSocket.js +2 -2
  970. package/dist/trinity/eve/child/EveChildSocket.js.map +1 -1
  971. package/dist/trinity/eve/child/EveChildSpherePin.js +4 -4
  972. package/dist/trinity/eve/child/EveChildSpherePin.js.map +1 -1
  973. package/dist/trinity/eve/child/EveChildTurret.js +4 -4
  974. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  975. package/dist/trinity/eve/child/EveCloudVolumeBall.js +2 -2
  976. package/dist/trinity/eve/child/EveCloudVolumeBall.js.map +1 -1
  977. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js +6 -6
  978. package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js.map +1 -1
  979. package/dist/trinity/eve/child/EveSpaceObjectChild.js +2 -2
  980. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  981. package/dist/trinity/eve/child/IEveLightingOverride.js +1 -23
  982. package/dist/trinity/eve/child/IEveLightingOverride.js.map +1 -1
  983. package/dist/trinity/eve/child/behaviors/Allign.js +2 -2
  984. package/dist/trinity/eve/child/behaviors/Allign.js.map +1 -1
  985. package/dist/trinity/eve/child/behaviors/ApproachGroup.js +2 -2
  986. package/dist/trinity/eve/child/behaviors/ApproachGroup.js.map +1 -1
  987. package/dist/trinity/eve/child/behaviors/BackAndForth.js +2 -2
  988. package/dist/trinity/eve/child/behaviors/BackAndForth.js.map +1 -1
  989. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js +4 -4
  990. package/dist/trinity/eve/child/behaviors/BehaviorGroup.js.map +1 -1
  991. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js +2 -2
  992. package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js.map +1 -1
  993. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js +2 -2
  994. package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js.map +1 -1
  995. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js +2 -2
  996. package/dist/trinity/eve/child/behaviors/DroneAvoidance.js.map +1 -1
  997. package/dist/trinity/eve/child/behaviors/FollowASpline.js +2 -2
  998. package/dist/trinity/eve/child/behaviors/FollowASpline.js.map +1 -1
  999. package/dist/trinity/eve/child/behaviors/Formation.js +2 -2
  1000. package/dist/trinity/eve/child/behaviors/Formation.js.map +1 -1
  1001. package/dist/trinity/eve/child/behaviors/InclusionVolume.js +2 -2
  1002. package/dist/trinity/eve/child/behaviors/InclusionVolume.js.map +1 -1
  1003. package/dist/trinity/eve/child/behaviors/Inertia.js +2 -2
  1004. package/dist/trinity/eve/child/behaviors/Inertia.js.map +1 -1
  1005. package/dist/trinity/eve/child/behaviors/PlayFX.js +2 -2
  1006. package/dist/trinity/eve/child/behaviors/PlayFX.js.map +1 -1
  1007. package/dist/trinity/eve/child/behaviors/SeekTarget.js +2 -2
  1008. package/dist/trinity/eve/child/behaviors/SeekTarget.js.map +1 -1
  1009. package/dist/trinity/eve/child/behaviors/SpawnDrones.js +2 -2
  1010. package/dist/trinity/eve/child/behaviors/SpawnDrones.js.map +1 -1
  1011. package/dist/trinity/eve/child/behaviors/Wander.js +2 -2
  1012. package/dist/trinity/eve/child/behaviors/Wander.js.map +1 -1
  1013. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js +2 -2
  1014. package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -1
  1015. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js +2 -2
  1016. package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -1
  1017. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js +8 -8
  1018. package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
  1019. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js +8 -8
  1020. package/dist/trinity/eve/child/lineSetPaths/EveCircle.js.map +1 -1
  1021. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js +2 -2
  1022. package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js.map +1 -1
  1023. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js +2 -2
  1024. package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -1
  1025. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js +2 -2
  1026. package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -1
  1027. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js +2 -2
  1028. package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
  1029. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js +2 -2
  1030. package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js.map +1 -1
  1031. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js +2 -2
  1032. package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -1
  1033. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js +5 -6
  1034. package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
  1035. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js +3 -3
  1036. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -1
  1037. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +3 -3
  1038. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -1
  1039. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js +2 -2
  1040. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -1
  1041. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js +3 -3
  1042. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -1
  1043. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js +4 -4
  1044. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -1
  1045. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js +4 -4
  1046. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -1
  1047. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js +4 -4
  1048. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -1
  1049. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js +4 -4
  1050. package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -1
  1051. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js +2 -2
  1052. package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js.map +1 -1
  1053. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +2 -2
  1054. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -1
  1055. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +2 -2
  1056. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -1
  1057. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +2 -2
  1058. package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -1
  1059. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js +2 -2
  1060. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -1
  1061. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +4 -4
  1062. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -1
  1063. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js +2 -2
  1064. package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -1
  1065. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +2 -2
  1066. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -1
  1067. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +2 -2
  1068. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -1
  1069. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +2 -2
  1070. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -1
  1071. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +2 -2
  1072. package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -1
  1073. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js +2 -2
  1074. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -1
  1075. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +2 -2
  1076. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -1
  1077. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js +2 -2
  1078. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -1
  1079. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +2 -2
  1080. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -1
  1081. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +2 -2
  1082. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -1
  1083. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +2 -2
  1084. package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -1
  1085. package/dist/trinity/eve/effect/lensflare/EveLensflare.js +4 -5
  1086. package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
  1087. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js +4 -5
  1088. package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js.map +1 -1
  1089. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js +4 -4
  1090. package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -1
  1091. package/dist/trinity/eve/index.js +4 -4
  1092. package/dist/trinity/eve/lights/Tr2FactionLight.js +5 -6
  1093. package/dist/trinity/eve/lights/Tr2FactionLight.js.map +1 -1
  1094. package/dist/trinity/eve/lights/Tr2Light.js +37 -9
  1095. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  1096. package/dist/trinity/eve/lights/Tr2PointLight.js +2 -2
  1097. package/dist/trinity/eve/lights/Tr2PointLight.js.map +1 -1
  1098. package/dist/trinity/eve/lights/Tr2SpotLight.js +2 -2
  1099. package/dist/trinity/eve/lights/Tr2SpotLight.js.map +1 -1
  1100. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js +29 -31
  1101. package/dist/trinity/eve/lights/Tr2TexturedPointLight.js.map +1 -1
  1102. package/dist/trinity/eve/locator/EveLocator2.js +2 -2
  1103. package/dist/trinity/eve/locator/EveLocator2.js.map +1 -1
  1104. package/dist/trinity/eve/locator/EveLocatorSets.js +13 -4
  1105. package/dist/trinity/eve/locator/EveLocatorSets.js.map +1 -1
  1106. package/dist/trinity/eve/locator/Locator.js +2 -2
  1107. package/dist/trinity/eve/locator/Locator.js.map +1 -1
  1108. package/dist/trinity/eve/overlays/EveDamageOverlay.js +2 -2
  1109. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  1110. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js +2 -2
  1111. package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js.map +1 -1
  1112. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +5 -6
  1113. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  1114. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js +4 -5
  1115. package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
  1116. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js +2 -2
  1117. package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
  1118. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js +2 -2
  1119. package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
  1120. package/dist/trinity/eve/renderable/stretch/EveStretch.js +6 -6
  1121. package/dist/trinity/eve/renderable/stretch/EveStretch.js.map +1 -1
  1122. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +10 -8
  1123. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  1124. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +4 -5
  1125. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  1126. package/dist/trinity/eve/scene/EveSpaceScene.js +2 -2
  1127. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  1128. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -2
  1129. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  1130. package/dist/trinity/eve/scene/components/EveComponentRegistry.js +3 -3
  1131. package/dist/trinity/eve/scene/components/EveComponentRegistry.js.map +1 -1
  1132. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js +6 -7
  1133. package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
  1134. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js +2 -2
  1135. package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js.map +1 -1
  1136. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js +4 -8
  1137. package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
  1138. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js +7 -4
  1139. package/dist/trinity/eve/smartLights/EveSmartLightMesh.js.map +1 -1
  1140. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js +25 -15
  1141. package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
  1142. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js +4 -9
  1143. package/dist/trinity/eve/smartLights/EveSmartLightQuad.js.map +1 -1
  1144. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js +2 -2
  1145. package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js.map +1 -1
  1146. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +2 -3
  1147. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -1
  1148. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +2 -2
  1149. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -1
  1150. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +2 -2
  1151. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -1
  1152. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +10 -18
  1153. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -1
  1154. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +2 -2
  1155. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -1
  1156. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +2 -2
  1157. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -1
  1158. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +4 -9
  1159. package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -1
  1160. package/dist/trinity/eve/socket/EveSocketParameterBool.js +2 -2
  1161. package/dist/trinity/eve/socket/EveSocketParameterBool.js.map +1 -1
  1162. package/dist/trinity/eve/socket/EveSocketParameterColor.js +2 -2
  1163. package/dist/trinity/eve/socket/EveSocketParameterColor.js.map +1 -1
  1164. package/dist/trinity/eve/socket/EveSocketParameterFloat.js +2 -2
  1165. package/dist/trinity/eve/socket/EveSocketParameterFloat.js.map +1 -1
  1166. package/dist/trinity/eve/socket/EveSocketParameterInt.js +2 -2
  1167. package/dist/trinity/eve/socket/EveSocketParameterInt.js.map +1 -1
  1168. package/dist/trinity/eve/socket/EveSocketParameterString.js +2 -2
  1169. package/dist/trinity/eve/socket/EveSocketParameterString.js.map +1 -1
  1170. package/dist/trinity/eve/socket/EveSocketParameterVector2.js +2 -2
  1171. package/dist/trinity/eve/socket/EveSocketParameterVector2.js.map +1 -1
  1172. package/dist/trinity/eve/socket/EveSocketParameterVector3.js +2 -2
  1173. package/dist/trinity/eve/socket/EveSocketParameterVector3.js.map +1 -1
  1174. package/dist/trinity/eve/socket/EveSocketParameterVector4.js +2 -2
  1175. package/dist/trinity/eve/socket/EveSocketParameterVector4.js.map +1 -1
  1176. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js +20 -17
  1177. package/dist/trinity/eve/spaceObject/EveEffectRoot2.js.map +1 -1
  1178. package/dist/trinity/eve/spaceObject/EveMissile.js +2 -2
  1179. package/dist/trinity/eve/spaceObject/EveMissile.js.map +1 -1
  1180. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js +2 -2
  1181. package/dist/trinity/eve/spaceObject/EveMissileWarhead.js.map +1 -1
  1182. package/dist/trinity/eve/spaceObject/EveMobile.js +2 -2
  1183. package/dist/trinity/eve/spaceObject/EveMobile.js.map +1 -1
  1184. package/dist/trinity/eve/spaceObject/EveRootTransform.js +2 -2
  1185. package/dist/trinity/eve/spaceObject/EveRootTransform.js.map +1 -1
  1186. package/dist/trinity/eve/spaceObject/EveShip2.js +2 -2
  1187. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  1188. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +539 -432
  1189. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  1190. package/dist/trinity/eve/spaceObject/EveTransform.js +7 -7
  1191. package/dist/trinity/eve/spaceObject/EveTransform.js.map +1 -1
  1192. package/dist/trinity/eve/spaceObject/IEveSpaceObject2ParentData.js +44 -52
  1193. package/dist/trinity/eve/spaceObject/IEveSpaceObject2ParentData.js.map +1 -1
  1194. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +2 -2
  1195. package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -1
  1196. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +2 -2
  1197. package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -1
  1198. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js +2 -2
  1199. package/dist/trinity/eve/spaceObject/planet/EvePlanet.js.map +1 -1
  1200. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js +2 -2
  1201. package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
  1202. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js +7 -8
  1203. package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
  1204. package/dist/trinity/eve/ui/EveConnector.js +2 -2
  1205. package/dist/trinity/eve/ui/EveConnector.js.map +1 -1
  1206. package/dist/trinity/eve/ui/EveEllipseDefinition.js +2 -2
  1207. package/dist/trinity/eve/ui/EveEllipseDefinition.js.map +1 -1
  1208. package/dist/trinity/eve/ui/EveEllipseSet.js +36 -6
  1209. package/dist/trinity/eve/ui/EveEllipseSet.js.map +1 -1
  1210. package/dist/trinity/eve/ui/EveLineContainer.js +4 -5
  1211. package/dist/trinity/eve/ui/EveLineContainer.js.map +1 -1
  1212. package/dist/trinity/eve/ui/EveProjectBracket.js +11 -3
  1213. package/dist/trinity/eve/ui/EveProjectBracket.js.map +1 -1
  1214. package/dist/trinity/eve/ui/EveSpherePin.js +6 -7
  1215. package/dist/trinity/eve/ui/EveSpherePin.js.map +1 -1
  1216. package/dist/trinity/eve/ui/EveSprite2dBracket.js +2 -2
  1217. package/dist/trinity/eve/ui/EveSprite2dBracket.js.map +1 -1
  1218. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js +2 -2
  1219. package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js.map +1 -1
  1220. package/dist/trinity/eve/ui/EveTacticalOverlay.js +6 -24
  1221. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  1222. package/dist/trinity/eve/ui/EveUiObject.js +2 -2
  1223. package/dist/trinity/eve/ui/EveUiObject.js.map +1 -1
  1224. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +4 -5
  1225. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  1226. package/dist/trinity/eve/ui/lines/EveLineSet.js +6 -7
  1227. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  1228. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +2 -2
  1229. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -1
  1230. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +8 -9
  1231. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  1232. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js +2 -2
  1233. package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
  1234. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js +2 -2
  1235. package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
  1236. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +2 -2
  1237. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
  1238. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +4 -4
  1239. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
  1240. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +2 -2
  1241. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
  1242. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +2 -2
  1243. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
  1244. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +2 -2
  1245. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
  1246. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +4 -4
  1247. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
  1248. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +2 -2
  1249. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
  1250. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +2 -2
  1251. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
  1252. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +2 -2
  1253. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
  1254. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +2 -2
  1255. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
  1256. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +2 -2
  1257. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
  1258. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +2 -2
  1259. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
  1260. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +2 -2
  1261. package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
  1262. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +2 -2
  1263. package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
  1264. package/dist/trinity/eve/volume/EveBoxVolume.js +44 -44
  1265. package/dist/trinity/eve/volume/EveBoxVolume.js.map +1 -1
  1266. package/dist/trinity/eve/volume/EveEllipsoidVolume.js +2 -2
  1267. package/dist/trinity/eve/volume/EveEllipsoidVolume.js.map +1 -1
  1268. package/dist/trinity/eve/volume/EveSphereVolume.js +5 -6
  1269. package/dist/trinity/eve/volume/EveSphereVolume.js.map +1 -1
  1270. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js +2 -2
  1271. package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js.map +1 -1
  1272. package/dist/trinity/generated/eve/effect/EveOccluder.js +2 -2
  1273. package/dist/trinity/generated/eve/effect/EveOccluder.js.map +1 -1
  1274. package/dist/trinity/generated/eve/effect/EveStarfield.js +2 -2
  1275. package/dist/trinity/generated/eve/effect/EveStarfield.js.map +1 -1
  1276. package/dist/trinity/generated/font/Tr2FontManager.js +2 -2
  1277. package/dist/trinity/generated/font/Tr2FontManager.js.map +1 -1
  1278. package/dist/trinity/generated/font/Tr2FontMeasurer.js +2 -2
  1279. package/dist/trinity/generated/font/Tr2FontMeasurer.js.map +1 -1
  1280. package/dist/trinity/generated/font/Tr2SBitWrapper.js +2 -2
  1281. package/dist/trinity/generated/font/Tr2SBitWrapper.js.map +1 -1
  1282. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js +2 -2
  1283. package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js.map +1 -1
  1284. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js +2 -2
  1285. package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js.map +1 -1
  1286. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js +2 -2
  1287. package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js.map +1 -1
  1288. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js +2 -2
  1289. package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js.map +1 -1
  1290. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js +2 -2
  1291. package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js.map +1 -1
  1292. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js +2 -2
  1293. package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js.map +1 -1
  1294. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js +2 -2
  1295. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js.map +1 -1
  1296. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js +2 -2
  1297. package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js.map +1 -1
  1298. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js +2 -2
  1299. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js.map +1 -1
  1300. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js +2 -2
  1301. package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js.map +1 -1
  1302. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js +2 -2
  1303. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js.map +1 -1
  1304. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js +2 -2
  1305. package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js.map +1 -1
  1306. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js +2 -2
  1307. package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js.map +1 -1
  1308. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js +2 -2
  1309. package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js.map +1 -1
  1310. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +2 -2
  1311. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +1 -1
  1312. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js +2 -2
  1313. package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js.map +1 -1
  1314. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js +2 -2
  1315. package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js.map +1 -1
  1316. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js +2 -2
  1317. package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js.map +1 -1
  1318. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js +2 -2
  1319. package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js.map +1 -1
  1320. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js +2 -2
  1321. package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js.map +1 -1
  1322. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js +2 -2
  1323. package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js.map +1 -1
  1324. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js +2 -2
  1325. package/dist/trinity/generated/trinityCore/Tr2SSSSS.js.map +1 -1
  1326. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js +2 -2
  1327. package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js.map +1 -1
  1328. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js +2 -2
  1329. package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js.map +1 -1
  1330. package/dist/trinity/index.js +23 -16
  1331. package/dist/trinity/index.js.map +1 -1
  1332. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js +1 -31
  1333. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -1
  1334. package/dist/trinity/particle/Tr2ParticleSystem.js +51 -52
  1335. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  1336. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js +2 -2
  1337. package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js.map +1 -1
  1338. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js +2 -2
  1339. package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js.map +1 -1
  1340. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js +2 -2
  1341. package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js.map +1 -1
  1342. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js +2 -2
  1343. package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js.map +1 -1
  1344. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js +2 -2
  1345. package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js.map +1 -1
  1346. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js +2 -2
  1347. package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js.map +1 -1
  1348. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js +2 -2
  1349. package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js.map +1 -1
  1350. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js +13 -3
  1351. package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js.map +1 -1
  1352. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js +2 -2
  1353. package/dist/trinity/particle/constraint/Tr2SphereConstraint.js.map +1 -1
  1354. package/dist/trinity/particle/element/Tr2ParticleElementData.js +22 -8
  1355. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  1356. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js +13 -25
  1357. package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js.map +1 -1
  1358. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js +38 -3
  1359. package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js.map +1 -1
  1360. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +26 -27
  1361. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  1362. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +4 -5
  1363. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  1364. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js +2 -2
  1365. package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js.map +1 -1
  1366. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +17 -18
  1367. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  1368. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js +2 -2
  1369. package/dist/trinity/particle/force/Tr2ForceSphereVolume.js.map +1 -1
  1370. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js +2 -2
  1371. package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js.map +1 -1
  1372. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js +2 -2
  1373. package/dist/trinity/particle/force/Tr2ParticleDirectForce.js.map +1 -1
  1374. package/dist/trinity/particle/force/Tr2ParticleDragForce.js +2 -2
  1375. package/dist/trinity/particle/force/Tr2ParticleDragForce.js.map +1 -1
  1376. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js +2 -2
  1377. package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js.map +1 -1
  1378. package/dist/trinity/particle/force/Tr2ParticleSpring.js +2 -2
  1379. package/dist/trinity/particle/force/Tr2ParticleSpring.js.map +1 -1
  1380. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js +2 -2
  1381. package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js.map +1 -1
  1382. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js +2 -2
  1383. package/dist/trinity/particle/force/Tr2ParticleVortexForce.js.map +1 -1
  1384. package/dist/trinity/particle/index.js +1 -1
  1385. package/dist/trinity/postProcess/Tr2PostProcess.js +2 -2
  1386. package/dist/trinity/postProcess/Tr2PostProcess.js.map +1 -1
  1387. package/dist/trinity/postProcess/Tr2PostProcess2.js +2 -2
  1388. package/dist/trinity/postProcess/Tr2PostProcess2.js.map +1 -1
  1389. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js +2 -2
  1390. package/dist/trinity/postProcess/Tr2PostProcessAttributes.js.map +1 -1
  1391. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -4
  1392. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
  1393. package/dist/trinity/postProcess/Tr2SSAO.js +4 -4
  1394. package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
  1395. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js +2 -2
  1396. package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js.map +1 -1
  1397. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js +2 -2
  1398. package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js.map +1 -1
  1399. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js +2 -2
  1400. package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js.map +1 -1
  1401. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js +2 -2
  1402. package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js.map +1 -1
  1403. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js +2 -2
  1404. package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js.map +1 -1
  1405. package/dist/trinity/postProcess/effect/Tr2PPEffect.js +2 -2
  1406. package/dist/trinity/postProcess/effect/Tr2PPEffect.js.map +1 -1
  1407. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js +2 -2
  1408. package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js.map +1 -1
  1409. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js +2 -2
  1410. package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js.map +1 -1
  1411. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js +2 -2
  1412. package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js.map +1 -1
  1413. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js +2 -2
  1414. package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js.map +1 -1
  1415. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js +2 -2
  1416. package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js.map +1 -1
  1417. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js +2 -2
  1418. package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js.map +1 -1
  1419. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js +2 -2
  1420. package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js.map +1 -1
  1421. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js +2 -2
  1422. package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js.map +1 -1
  1423. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js +2 -2
  1424. package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js.map +1 -1
  1425. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js +2 -2
  1426. package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js.map +1 -1
  1427. package/dist/trinity/renderJob/Tr2RenderJobs.js +5 -5
  1428. package/dist/trinity/renderJob/Tr2RenderJobs.js.map +1 -1
  1429. package/dist/trinity/renderJob/TriRenderJob.js +4 -4
  1430. package/dist/trinity/renderJob/TriRenderJob.js.map +1 -1
  1431. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js +4 -5
  1432. package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js.map +1 -1
  1433. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js +4 -5
  1434. package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js.map +1 -1
  1435. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js +2 -2
  1436. package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js.map +1 -1
  1437. package/dist/trinity/renderJob/step/TriRenderStep.js +2 -2
  1438. package/dist/trinity/renderJob/step/TriRenderStep.js.map +1 -1
  1439. package/dist/trinity/renderJob/step/TriStepClear.js +2 -2
  1440. package/dist/trinity/renderJob/step/TriStepClear.js.map +1 -1
  1441. package/dist/trinity/renderJob/step/TriStepClearUav.js +2 -2
  1442. package/dist/trinity/renderJob/step/TriStepClearUav.js.map +1 -1
  1443. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js +2 -2
  1444. package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js.map +1 -1
  1445. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js +2 -2
  1446. package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js.map +1 -1
  1447. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js +2 -2
  1448. package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js.map +1 -1
  1449. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js +2 -2
  1450. package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js.map +1 -1
  1451. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js +2 -2
  1452. package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js.map +1 -1
  1453. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js +2 -2
  1454. package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js.map +1 -1
  1455. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js +2 -2
  1456. package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js.map +1 -1
  1457. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +2 -2
  1458. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  1459. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js +2 -2
  1460. package/dist/trinity/renderJob/step/TriStepRenderAtlas.js.map +1 -1
  1461. package/dist/trinity/renderJob/step/TriStepRenderDebug.js +2 -2
  1462. package/dist/trinity/renderJob/step/TriStepRenderDebug.js.map +1 -1
  1463. package/dist/trinity/renderJob/step/TriStepRenderEffect.js +2 -2
  1464. package/dist/trinity/renderJob/step/TriStepRenderEffect.js.map +1 -1
  1465. package/dist/trinity/renderJob/step/TriStepRenderFps.js +2 -2
  1466. package/dist/trinity/renderJob/step/TriStepRenderFps.js.map +1 -1
  1467. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js +2 -2
  1468. package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js.map +1 -1
  1469. package/dist/trinity/renderJob/step/TriStepRenderObject.js +2 -2
  1470. package/dist/trinity/renderJob/step/TriStepRenderObject.js.map +1 -1
  1471. package/dist/trinity/renderJob/step/TriStepRenderPass.js +2 -2
  1472. package/dist/trinity/renderJob/step/TriStepRenderPass.js.map +1 -1
  1473. package/dist/trinity/renderJob/step/TriStepRenderScene.js +2 -2
  1474. package/dist/trinity/renderJob/step/TriStepRenderScene.js.map +1 -1
  1475. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js +2 -2
  1476. package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js.map +1 -1
  1477. package/dist/trinity/renderJob/step/TriStepRenderTexture.js +2 -2
  1478. package/dist/trinity/renderJob/step/TriStepRenderTexture.js.map +1 -1
  1479. package/dist/trinity/renderJob/step/TriStepResolve.js +2 -2
  1480. package/dist/trinity/renderJob/step/TriStepResolve.js.map +1 -1
  1481. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js +2 -2
  1482. package/dist/trinity/renderJob/step/TriStepRunComputeShader.js.map +1 -1
  1483. package/dist/trinity/renderJob/step/TriStepRunJob.js +2 -2
  1484. package/dist/trinity/renderJob/step/TriStepRunJob.js.map +1 -1
  1485. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js +2 -2
  1486. package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js.map +1 -1
  1487. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js +2 -2
  1488. package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js.map +1 -1
  1489. package/dist/trinity/renderJob/step/TriStepSetProjection.js +2 -2
  1490. package/dist/trinity/renderJob/step/TriStepSetProjection.js.map +1 -1
  1491. package/dist/trinity/renderJob/step/TriStepSetRenderState.js +2 -2
  1492. package/dist/trinity/renderJob/step/TriStepSetRenderState.js.map +1 -1
  1493. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js +2 -2
  1494. package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js.map +1 -1
  1495. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js +2 -2
  1496. package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js.map +1 -1
  1497. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js +2 -2
  1498. package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js.map +1 -1
  1499. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js +2 -2
  1500. package/dist/trinity/renderJob/step/TriStepSetVariableStore.js.map +1 -1
  1501. package/dist/trinity/renderJob/step/TriStepSetView.js +2 -2
  1502. package/dist/trinity/renderJob/step/TriStepSetView.js.map +1 -1
  1503. package/dist/trinity/renderJob/step/TriStepSetViewport.js +2 -2
  1504. package/dist/trinity/renderJob/step/TriStepSetViewport.js.map +1 -1
  1505. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js +2 -2
  1506. package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js.map +1 -1
  1507. package/dist/trinity/renderJob/step/TriStepTestBlocking.js +2 -2
  1508. package/dist/trinity/renderJob/step/TriStepTestBlocking.js.map +1 -1
  1509. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js +2 -2
  1510. package/dist/trinity/renderJob/step/TriStepToggleCubemap.js.map +1 -1
  1511. package/dist/trinity/renderJob/step/TriStepUpdate.js +2 -2
  1512. package/dist/trinity/renderJob/step/TriStepUpdate.js.map +1 -1
  1513. package/dist/trinity/shader/Tr2DataTextureManager.js +9 -9
  1514. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  1515. package/dist/trinity/shader/Tr2Effect.js +370 -347
  1516. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  1517. package/dist/trinity/shader/Tr2Material.js +5 -5
  1518. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  1519. package/dist/trinity/shader/Tr2ShaderBuffer.js +3 -4
  1520. package/dist/trinity/shader/Tr2ShaderBuffer.js.map +1 -1
  1521. package/dist/trinity/shader/index.js +3 -0
  1522. package/dist/trinity/shader/index.js.map +1 -1
  1523. package/dist/trinity/shader/parameter/CjsParameter.js +202 -185
  1524. package/dist/trinity/shader/parameter/CjsParameter.js.map +1 -1
  1525. package/dist/trinity/shader/parameter/CjsVectorParameter.js +2 -2
  1526. package/dist/trinity/shader/parameter/CjsVectorParameter.js.map +1 -1
  1527. package/dist/trinity/shader/parameter/ITriEffectParameter.js +56 -0
  1528. package/dist/trinity/shader/parameter/ITriEffectParameter.js.map +1 -0
  1529. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js +31 -0
  1530. package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js.map +1 -0
  1531. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js +43 -0
  1532. package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js.map +1 -0
  1533. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js +17 -5
  1534. package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js.map +1 -1
  1535. package/dist/trinity/shader/parameter/Tr2FloatParameter.js +46 -45
  1536. package/dist/trinity/shader/parameter/Tr2FloatParameter.js.map +1 -1
  1537. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +14 -12
  1538. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  1539. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js +33 -32
  1540. package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
  1541. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +11 -10
  1542. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
  1543. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js +55 -53
  1544. package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
  1545. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js +49 -48
  1546. package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
  1547. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js +52 -51
  1548. package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
  1549. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js +56 -55
  1550. package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
  1551. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js +8 -8
  1552. package/dist/trinity/shader/parameter/TriFloatArrayParameter.js.map +1 -1
  1553. package/dist/trinity/shader/parameter/TriTextureParameter.js +27 -22
  1554. package/dist/trinity/shader/parameter/TriTextureParameter.js.map +1 -1
  1555. package/dist/trinity/shader/parameter/TriTransformParameter.js +27 -27
  1556. package/dist/trinity/shader/parameter/TriTransformParameter.js.map +1 -1
  1557. package/dist/trinity/shader/parameter/TriVariableParameter.js +53 -54
  1558. package/dist/trinity/shader/parameter/TriVariableParameter.js.map +1 -1
  1559. package/dist/trinity/shader/parameter/TriVector4.js +2 -2
  1560. package/dist/trinity/shader/parameter/TriVector4.js.map +1 -1
  1561. package/dist/trinity/shader/reflection/Tr2ShaderOption.js +4 -2
  1562. package/dist/trinity/shader/reflection/Tr2ShaderOption.js.map +1 -1
  1563. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js +11 -2
  1564. package/dist/trinity/shader/sampler/Tr2SamplerOverride.js.map +1 -1
  1565. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js +2 -2
  1566. package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js.map +1 -1
  1567. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js +2 -2
  1568. package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js.map +1 -1
  1569. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js +2 -2
  1570. package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js.map +1 -1
  1571. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js +8 -9
  1572. package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js.map +1 -1
  1573. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js +2 -2
  1574. package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js.map +1 -1
  1575. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js +2 -2
  1576. package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js.map +1 -1
  1577. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js +4 -4
  1578. package/dist/trinity/sprite2d/Tr2Sprite2dScene.js.map +1 -1
  1579. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js +2 -2
  1580. package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js.map +1 -1
  1581. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js +2 -2
  1582. package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js.map +1 -1
  1583. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js +2 -2
  1584. package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js.map +1 -1
  1585. package/dist/trinity/ui/Tr2PresentParameters.js +2 -2
  1586. package/dist/trinity/ui/Tr2PresentParameters.js.map +1 -1
  1587. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js +3 -3
  1588. package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js.map +1 -1
  1589. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -1
  1590. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  1591. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  1592. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  1593. package/docs/core/README.md +38 -38
  1594. package/docs/core/architecture.md +6 -5
  1595. package/docs/core/reference/api.md +0 -10
  1596. package/docs/core/reference/classes/README.md +57 -67
  1597. package/docs/global/architecture.md +1 -3
  1598. package/docs/global/blue-enums.md +115 -0
  1599. package/docs/global/concepts/model-lifecycle.md +177 -182
  1600. package/docs/global/core-types/README.md +394 -317
  1601. package/docs/global/reference/api.md +2 -2
  1602. package/docs/global/reference/classes/README.md +355 -205
  1603. package/docs/global/reference/classes/dropped.md +40 -0
  1604. package/docs/resource/architecture.md +152 -112
  1605. package/docs/resource/concepts/resource-lifecycle.md +21 -15
  1606. package/docs/resource/formats/geometry-interchange.md +50 -0
  1607. package/docs/resource/formats/pickle.md +126 -100
  1608. package/docs/resource/formats/provenance.md +15 -9
  1609. package/docs/resource/formats/webgl/carbon-constant-layouts.md +98 -232
  1610. package/docs/resource/formats/webgl/decl-io.md +241 -397
  1611. package/docs/resource/formats/webgl/memory-structured.md +91 -128
  1612. package/docs/resource/formats/webgl/texture-sample.md +306 -469
  1613. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +278 -530
  1614. package/docs/resource/reference/classes/README.md +3 -1
  1615. package/docs/resource/reference/classes/dropped.md +21 -1
  1616. package/docs/resource/reference/classes/formats.md +33 -0
  1617. package/docs/resource/reference/classes/texture.md +11 -1
  1618. package/docs/resource/reference/classes/video.md +92 -0
  1619. package/docs/resource/reference/events.md +10 -9
  1620. package/docs/resource/reference/motherlode-cache.md +24 -11
  1621. package/docs/resource/reference/queues.md +30 -1
  1622. package/docs/trinity/README.md +5 -5
  1623. package/docs/trinity/architecture.md +355 -344
  1624. package/docs/trinity/concepts/eve-runtime-behavior.md +1 -1
  1625. package/docs/trinity/reference/api.md +19 -7
  1626. package/docs/trinity/reference/classes/dropped.md +2 -11
  1627. package/docs/trinity/reference/classes/eve-runtime.md +1 -1
  1628. package/docs/trinity/reference/classes/trinity-core.md +1672 -1622
  1629. package/docs/trinity/reference/implementation-status.md +92 -92
  1630. package/package.json +2 -1
  1631. package/dist/core/CjsFrameDriver.js +0 -109
  1632. package/dist/core/CjsFrameDriver.js.map +0 -1
  1633. package/dist/global/contracts/CjsFrameLifecycle.js +0 -49
  1634. package/dist/global/contracts/CjsFrameLifecycle.js.map +0 -1
  1635. package/dist/global/contracts/CjsInstancedMeshManager.js +0 -58
  1636. package/dist/global/contracts/CjsInstancedMeshManager.js.map +0 -1
  1637. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js +0 -4
  1638. package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.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\";\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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"}
1
+ {"version":3,"file":"EveSOF.js","sources":["../../../src/sof/EveSOF.js"],"sourcesContent":["import { normalizeResourcePath } from \"#utils/path\";\r\n\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.h\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF.cpp\r\n// Source: trinity/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp\r\nimport { CjsModel } from \"#model\";\r\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\r\nimport { mat4 } from \"#math/mat4\";\r\nimport { quat } from \"#math/quat\";\r\nimport { vec3 } from \"#math/vec3\";\r\nimport { TriBatchType } from \"#consts/graphics\";\r\nimport { CjsBlackFormat } from \"#resource/formats/black\";\r\nimport { EveSOFDataHullDecalSetItem } from \"./hull/EveSOFDataHullDecalSetItem.js\";\r\nimport { EveSOFDataHullBanner } from \"./hull/EveSOFDataHullBanner.js\";\r\nimport { EveSOFDataHullBannerSetItem } from \"./hull/EveSOFDataHullBannerSetItem.js\";\r\nimport { EveSOFDataHullHazeSet } from \"./hull/EveSOFDataHullHazeSet.js\";\r\nimport { EveSOFDataHullLightSetItem } from \"./hull/EveSOFDataHullLightSetItem.js\";\r\nimport { EveSOFDataHullPlaneSet } from \"./hull/EveSOFDataHullPlaneSet.js\";\r\nimport { EveSOFDataHull } from \"./hull/EveSOFDataHull.js\";\r\nimport { EveSOFDataArea } from \"./shared/EveSOFDataArea.js\";\r\nimport { EveSOFDataInstancedMesh } from \"./shared/EveSOFDataInstancedMesh.js\";\r\nimport { EveSOFUtilsParameterName } from \"./shared/EveSOFUtilsParameterName.js\";\r\nimport { CjsCarbonDocument } from \"#model/document\";\r\nimport { EveSOFDNA } from \"./EveSOFDNA.js\";\r\nimport { EveSOFDataMgr } from \"./EveSOFDataMgr.js\";\r\nimport { CjsSofLibraryBuilder } from \"./CjsSofLibraryBuilder.js\";\r\nimport { planSofLayouts } from \"./layoutPlanner.js\";\r\nimport { SofDocumentBuilder } from \"./SofDocumentBuilder.js\";\r\nimport { IsModelValuesReference, IsModelValuesRoot, VALUES_LITERAL_DOLLAR_REF, remapImportedValue } from \"./sofDocumentValues.js\";\r\n\r\n\r\nconst BUILD_CLASS_TYPES = Object.freeze({\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SHIP]: \"EveShip2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_MOBILE]: \"EveMobile\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_STATIONARY]: \"EveStation2\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_SWARM]: \"EveSwarm\",\r\n [EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION]: \"EveMobile\"\r\n});\r\n\r\nconst SPACE_OBJECT_ROOT_KINDS = new Set([\r\n \"EveSpaceObject2\",\r\n \"EveShip2\",\r\n \"EveMobile\",\r\n \"EveStation2\",\r\n \"EveSwarm\"\r\n]);\r\n\r\nconst DECAL_EFFECT_NAMES = Object.freeze([\r\n \"decalv5.fx\",\r\n \"decalcounterv5.fx\",\r\n \"decalholev5.fx\",\r\n \"decalcylindricv5.fx\",\r\n \"decalglowcylindricv5.fx\",\r\n \"decalglowv5.fx\",\r\n \"decalv5.fx\"\r\n]);\r\n\r\nconst BANNER_EXTERNAL_PARAMETER_NAMES = Object.freeze([\r\n \"AllianceLogoResPath\",\r\n \"CorpLogoResPath\",\r\n \"CeoPortraitResPath\",\r\n \"VerticalBannerResPath\",\r\n \"HorizontalBannerResPath\",\r\n \"TargetSystemAllianceLogoResPath\",\r\n \"TargetSystemVerticalBannerResPath\",\r\n \"TargetSystemHorizontalBannerResPath\",\r\n \"TargetSystemInfo0ResPath\",\r\n \"TargetSystemInfo1ResPath\",\r\n \"TargetSystemInfo2ResPath\",\r\n \"TargetSystemInfo3ResPath\",\r\n \"TargetSystemInfo4ResPath\",\r\n \"TargetSystemStatusResPath\",\r\n \"CurrentSystemAllianceLogoResPath\",\r\n \"CurrentSystemVerticalBannerResPath\",\r\n \"CurrentSystemHorizontalBannerResPath\",\r\n \"PublicityPosterResPath\",\r\n \"PublicityPortraitResPath\",\r\n \"RecruitmentInformation0ResPath\",\r\n \"RecruitmentInformation1ResPath\",\r\n \"RecruitmentInformation2ResPath\",\r\n \"RecruitmentInformation3ResPath\",\r\n \"RecruitmentInformation4ResPath\"\r\n]);\r\n\r\nconst MIN_MESH_SCREEN_SIZE = 2.5;\r\n\r\n// Tr2Lod value stamped on distortion areas after fill (EveSOF.cpp:2149-2153);\r\n// The SOF layer stays free of a Trinity-layer import, so the enum value from\r\n// Tr2LodResource.h is mirrored here.\r\nconst TR2_LOD_HIGH = 2;\r\n\r\n// Carbon validates every resolved resource root against the interface its\r\n// role requires before attaching it: children must cast to EveTransform or\r\n// IEveSpaceObjectChild (EveSOF.cpp:1786-1844,1949-2004), controllers load as\r\n// ITr2Controller (2014-2033), and model curves load as ITriQuaternionFunction\r\n// / ITriVectorFunction (1668-1691). The GPU-free builder has no class\r\n// registry, so conformance comes from the descriptor's explicit `implements`\r\n// claim or from these Carbon-source kind inventories.\r\nconst CHILD_TRANSFORM_KINDS = new Set([\r\n \"EveTransform\",\r\n \"EveRootTransform\",\r\n \"EveMissileWarhead\"\r\n]);\r\n\r\nconst SPACE_OBJECT_CHILD_KINDS = new Set([\r\n \"EveChildAudio\",\r\n \"EveChildBehaviorSystem\",\r\n \"EveChildBulletStorm\",\r\n \"EveChildCloud\",\r\n \"EveChildCloud2\",\r\n \"EveChildContainer\",\r\n \"EveChildEffectPropagator\",\r\n \"EveChildExplosion\",\r\n \"EveChildFogVolume\",\r\n \"EveChildInstanceContainer\",\r\n \"EveChildInstanceMeshRenderer\",\r\n \"EveChildInstancedMeshes\",\r\n \"EveChildLightingOverride\",\r\n \"EveChildLineSet\",\r\n \"EveChildLink\",\r\n \"EveChildMesh\",\r\n \"EveChildParticleSphere\",\r\n \"EveChildParticleSystem\",\r\n \"EveChildPlug\",\r\n \"EveChildPostProcessVolume\",\r\n \"EveChildProceduralContainer\",\r\n \"EveChildQuad\",\r\n \"EveChildRef\",\r\n \"EveChildSmartLightSet\",\r\n \"EveChildSocket\",\r\n \"EveChildSpherePin\",\r\n \"EveEllipseSet\"\r\n]);\r\n\r\nconst OBJECT_RESOURCE_ROLE_GATES = Object.freeze({\r\n controller: {\r\n interfaceName: \"ITr2Controller\",\r\n kinds: new Set([\r\n \"Tr2Controller\",\r\n \"Tr2ControllerReference\",\r\n \"Tr2TimelineController\"\r\n ])\r\n },\r\n modelRotationCurve: {\r\n interfaceName: \"ITriQuaternionFunction\",\r\n kinds: new Set([\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveEulerRotation\",\r\n \"Tr2CurveEulerRotationExpression\",\r\n \"Tr2CurveQuaternion\",\r\n \"Tr2CurveRandomAxisRotation\",\r\n \"Tr2QuaternionLerpCurve\",\r\n \"Tr2RotationAdapter\",\r\n \"TriRigidOrientation\"\r\n ])\r\n },\r\n modelTranslationCurve: {\r\n interfaceName: \"ITriVectorFunction\",\r\n kinds: new Set([\r\n \"EveLocalPositionCurve\",\r\n \"EveRemotePositionCurve\",\r\n \"Tr2CurveCombiner\",\r\n \"Tr2CurveConstant\",\r\n \"Tr2CurveVector3\",\r\n \"Tr2CurveVector3Expression\",\r\n \"Tr2CurveVector3Lerp\",\r\n \"Tr2FollowCurve\",\r\n \"Tr2TranslationAdapter\",\r\n \"Tr2VectorFunctionModifier\",\r\n \"TriVectorSequencer\"\r\n ])\r\n }\r\n});\r\n\r\n// Sentinel returned when a resolved child root fails Carbon's type gate; the\r\n// callers mirror Carbon's early return rather than skipping one item.\r\nconst WRONG_TYPE_CHILD = Symbol(\"wrong-type-child\");\r\n\r\nfunction descriptorClaimsInterface(descriptor, interfaceName)\r\n{\r\n return Array.isArray(descriptor.implements) && descriptor.implements.includes(interfaceName);\r\n}\r\n// EveChildInheritProperties field order (src/trinity is the authority for\r\n// these names); dna.GetColorSet() is index-aligned with this Carbon color-slot\r\n// order, so the authored color set projects onto named, persisted fields.\r\nconst INHERIT_COLOR_PROPERTIES = Object.freeze([\r\n \"Primary\",\r\n \"Secondary\",\r\n \"Tertiary\",\r\n \"Black\",\r\n \"White\",\r\n \"Yellow\",\r\n \"Orange\",\r\n \"Red\",\r\n \"Blue\",\r\n \"Green\",\r\n \"Cyan\",\r\n \"Fire\",\r\n \"Hull\",\r\n \"Glass\",\r\n \"Reactor\",\r\n \"Darkhull\",\r\n \"Booster\",\r\n \"Killmark\",\r\n \"PrimaryLight\",\r\n \"SecondaryLight\",\r\n \"TertiaryLight\",\r\n \"WhiteLight\",\r\n \"PrimaryHologram\",\r\n \"SecondaryHologram\",\r\n \"TertiaryHologram\",\r\n \"State0\",\r\n \"State1\",\r\n \"State2\",\r\n \"State3\",\r\n \"StateVulnerable\",\r\n \"StateInvulnerable\",\r\n \"PrimaryForcefield\",\r\n \"SecondaryForcefield\",\r\n \"PrimaryBanner\",\r\n \"PrimaryFx\",\r\n \"SecondaryFx\",\r\n \"PrimarySpotlight\",\r\n \"SecondarySpotlight\",\r\n \"TertiarySpotlight\",\r\n \"PrimaryBillboard\",\r\n \"PrimaryWarpFx\",\r\n \"PrimaryAttackFx\",\r\n \"PrimarySiegeFx\",\r\n \"PrimaryDockedFx\"\r\n]);\r\n\r\nconst SWARM_BEHAVIOR_FIELD_NAMES = Object.freeze([\r\n \"mass\",\r\n \"speedMultiplier\",\r\n \"speedMinimum\",\r\n \"maxDistance0\",\r\n \"maxDistance1\",\r\n \"maxTime\",\r\n \"timeMultiplier\",\r\n \"agility\",\r\n \"speed0\",\r\n \"speed1\",\r\n \"weightFormation\",\r\n \"weightCohesion\",\r\n \"weightSeparation\",\r\n \"weightAlign\",\r\n \"weightWander\",\r\n \"weightAnchor\",\r\n \"anchorRadius0\",\r\n \"anchorRadius1\",\r\n \"maxDeceleration\",\r\n \"separationDistance\",\r\n \"formationDistance\",\r\n \"wanderFluctuation\",\r\n \"wanderDistance\",\r\n \"wanderRadius\"\r\n]);\r\n\r\nconst SOF_INSTANCE_LAYOUT = Object.freeze([\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 0, type: \"FLOAT32_4\", name: \"transform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 1, type: \"FLOAT32_4\", name: \"transform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 2, type: \"FLOAT32_4\", name: \"transform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 3, type: \"FLOAT32_4\", name: \"lastTransform0\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 4, type: \"FLOAT32_4\", name: \"lastTransform1\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 5, type: \"FLOAT32_4\", name: \"lastTransform2\" }),\r\n Object.freeze({ usage: \"TEXCOORD\", usageIndex: 6, type: \"BYTE_4\", name: \"boneIndex\" })\r\n]);\r\n\r\n/** Carbon-first SOF builder whose sole supported public output is a GPU-free model-values graph. */\r\n@type.define({ className: \"EveSOF\", family: \"eve\" })\r\nexport class EveSOF extends CjsModel\r\n{\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n allowFileCaching = true;\r\n\r\n // Carbon registers this as the global TRI setting \"alphaCutoutShadowsEnabled\"\r\n // (EveSOF.cpp:61-62, default false); decal (alpha-cutout) areas take their\r\n // castsShadows state from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.boolean\r\n alphaCutoutShadowsEnabled = false;\r\n\r\n // Carbon registers this as the global TRI setting \"volumetricTrailPath\"\r\n // (EveSOF.cpp:64-65, default empty); the booster trail set takes its mesh\r\n // resource path from it. Injected here per builder instead of a global.\r\n @edit.readwrite\r\n @type.string\r\n volumetricTrailPath = \"\";\r\n\r\n // Carbon initializes each light's startTime from the current frame time,\r\n // phase-offsetting noise flicker by when the object was built. Injected\r\n // here per builder (default 0 keeps builds deterministic); the engine\r\n // passes its clock when it wants Carbon's de-synced flicker.\r\n @edit.readwrite\r\n @type.float64\r\n buildTime = 0;\r\n\r\n @edit.read\r\n @type.objectRef(\"EveSOFDataMgr\")\r\n dataMgr = new EveSOFDataMgr();\r\n\r\n @edit.readwrite\r\n @type.boolean\r\n editorMode = false;\r\n\r\n #resourceExists = null;\r\n\r\n #childResourceResolver = null;\r\n\r\n #objectResourceResolver = null;\r\n\r\n #existingFilesCache = new Map();\r\n\r\n #asyncResources = Object.freeze({ getObject: null, exists: null });\r\n\r\n #dataPath = \"\";\r\n\r\n #dataLoadOperations = new Map();\r\n\r\n #sofLibraryBuilder = null;\r\n\r\n // Build-scope counterpart of Carbon's CCP_LOGERR sites: records in\r\n // layoutPlanner diagnostic shape ({ code, ...context }), reset by each\r\n // every values or deprecated document build and readable through\r\n // GetBuildDiagnostics().\r\n #buildDiagnostics = [];\r\n\r\n /** Add standalone SOF configuration or accept CjsLibrary topic forwarding. */\r\n Register(options = {})\r\n {\r\n if (!options || typeof options !== \"object\" || Array.isArray(options))\r\n {\r\n throw new TypeError(\"EveSOF.Register options must be an object\");\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(options, \"dataPath\"))\r\n {\r\n this.#dataPath = normalizeResourcePath(options.dataPath);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resources\"))\r\n {\r\n const resources = options.resources ?? {};\r\n if (typeof resources !== \"object\" || Array.isArray(resources))\r\n {\r\n throw new TypeError(\"EveSOF resources must be an object or null\");\r\n }\r\n if (resources.getObject !== undefined && resources.getObject !== null && typeof resources.getObject !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.getObject must be a function or null\");\r\n }\r\n if (resources.exists !== undefined && resources.exists !== null && typeof resources.exists !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resources.exists must be a function or null\");\r\n }\r\n const getObject = Object.hasOwn(resources, \"getObject\")\r\n ? resources.getObject ?? null\r\n : this.#asyncResources.getObject;\r\n const exists = Object.hasOwn(resources, \"exists\")\r\n ? resources.exists ?? null\r\n : this.#asyncResources.exists;\r\n if (exists !== this.#asyncResources.exists) this.#existingFilesCache.clear();\r\n this.#asyncResources = {\r\n getObject,\r\n exists\r\n };\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"lazyData\"))\r\n {\r\n const lazyData = options.lazyData;\r\n if (lazyData === false || lazyData === null)\r\n {\r\n this.#sofLibraryBuilder = null;\r\n }\r\n else if (lazyData instanceof CjsSofLibraryBuilder)\r\n {\r\n this.SetSofLibraryBuilder(lazyData);\r\n }\r\n else\r\n {\r\n if (lazyData !== true && (!lazyData || typeof lazyData !== \"object\" || Array.isArray(lazyData)))\r\n {\r\n throw new TypeError(\"EveSOF lazyData must be true, false, null, a CjsSofLibraryBuilder, or builder options.\");\r\n }\r\n const builderOptions = lazyData === true ? {} : lazyData;\r\n const source = builderOptions.source ?? ((path, context) =>\r\n {\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n throw new Error(\"EveSOF lazyData requires resources.getObject or a source function.\");\r\n }\r\n return getObject(path, { ...context, output: \"runtime\" });\r\n });\r\n this.SetSofLibraryBuilder(new CjsSofLibraryBuilder({\r\n ...builderOptions,\r\n dataMgr: this.dataMgr,\r\n source\r\n }));\r\n }\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"allowFileCaching\"))\r\n {\r\n this.allowFileCaching = Boolean(options.allowFileCaching);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"alphaCutoutShadowsEnabled\"))\r\n {\r\n this.alphaCutoutShadowsEnabled = Boolean(options.alphaCutoutShadowsEnabled);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"volumetricTrailPath\"))\r\n {\r\n this.volumetricTrailPath = String(options.volumetricTrailPath ?? \"\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"buildTime\"))\r\n {\r\n this.buildTime = Number(options.buildTime ?? 0);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"resFileIndex\"))\r\n {\r\n // The resfileindex is the synchronous existence oracle Carbon gets from\r\n // its file system: authored res paths either appear in the index or do\r\n // not. Texture resPathInsert selection needs only this membership test,\r\n // so providing the index keeps the sync build pure while matching\r\n // Carbon's existence-driven path rewriting. Rich tool-owned indexes are\r\n // adapted to this list/predicate boundary by their composition layer.\r\n const index = options.resFileIndex;\r\n if (index === null) this.SetResourceExistsResolver(null);\r\n else if (Array.isArray(index))\r\n {\r\n // The canonical shape: a plain list of res file names, from wherever\r\n // the caller got them. Existence is case-insensitive membership,\r\n // matching Carbon's file-system semantics.\r\n const names = new Set(index.map(name => String(name ?? \"\").toLowerCase()));\r\n this.SetResourceExistsResolver(path => names.has(String(path ?? \"\").toLowerCase()));\r\n }\r\n else if (typeof index === \"function\") this.SetResourceExistsResolver(path => Boolean(index(path)));\r\n else if (index instanceof Set || index instanceof Map) this.SetResourceExistsResolver(path => index.has(path));\r\n else throw new TypeError(\"EveSOF resFileIndex must be an array of file names, a predicate, a Set, a Map, or null\");\r\n }\r\n if (Object.prototype.hasOwnProperty.call(options, \"editorMode\"))\r\n {\r\n this.editorMode = Boolean(options.editorMode);\r\n }\r\n return this;\r\n }\r\n\r\n /** Supplies the synchronous resource-existence probe used by texture inserts. */\r\n SetResourceExistsResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be a function or null\");\r\n }\r\n this.#resourceExists = resolver === null ? null : path =>\r\n {\r\n const result = resolver(path);\r\n if (result && typeof result.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF resource existence resolver must be synchronous\");\r\n }\r\n return result === true;\r\n };\r\n this.#existingFilesCache.clear();\r\n return this;\r\n }\r\n\r\n /**\r\n * Supplies Carbon's synchronous `.red` child-object compatibility boundary.\r\n *\r\n * The resolver receives `(redFilePath, context)` and returns either null, a\r\n * self-describing model-values root, `{ values, target?, implements?, raw? }`,\r\n * a local `{ kind, target, fields, raw }` descriptor, or\r\n * `{ document, root?, target?, implements?, raw? }` for a legacy complete\r\n * compatibility fragment consumed by the internal builder.\r\n *\r\n * Values fragments require `_type` on every model because the SOF layer does\r\n * not import the class library needed to infer an untagged nested model's\r\n * schema.\r\n * Target is `children` for an EveTransform root or `effectChildren` for an\r\n * IEveSpaceObjectChild root.\r\n */\r\n SetChildResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be a function or null\");\r\n }\r\n this.#childResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Supplies synchronous controller and model-curve values or legacy compatibility fragments. */\r\n SetObjectResourceResolver(resolver)\r\n {\r\n if (resolver !== null && typeof resolver !== \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be a function or null\");\r\n }\r\n this.#objectResourceResolver = resolver;\r\n return this;\r\n }\r\n\r\n /** Installs the nominal partial-catalog builder used by asynchronous DNA builds. */\r\n SetSofLibraryBuilder(builder)\r\n {\r\n if (builder !== null && !(builder instanceof CjsSofLibraryBuilder))\r\n {\r\n throw new TypeError(\"EveSOF library builder must be a CjsSofLibraryBuilder or null.\");\r\n }\r\n if (builder && builder.GetDataManager() !== this.dataMgr)\r\n {\r\n throw new TypeError(\"EveSOF library builder must update this factory's data manager.\");\r\n }\r\n this.#sofLibraryBuilder = builder;\r\n return this;\r\n }\r\n\r\n /** Returns the installed partial-catalog builder, or null. */\r\n GetSofLibraryBuilder()\r\n {\r\n return this.#sofLibraryBuilder;\r\n }\r\n\r\n /** Boots configured lazy generic data or the configured monolithic catalog. */\r\n async InitializeAsync(options = {})\r\n {\r\n if (this.#dataPath)\r\n {\r\n await this.LoadDataAsync(this.#dataPath);\r\n }\r\n else if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.InitializeAsync(options.catalog ?? {});\r\n }\r\n return this;\r\n }\r\n\r\n /** Routes Carbon's resource load call through the SOF data manager. */\r\n @carbon.method\r\n @impl.implemented\r\n LoadData(filePath)\r\n {\r\n return this.dataMgr.LoadData(filePath);\r\n }\r\n\r\n /** Load SOF data through the configured promise-capable object resolver. */\r\n async LoadDataAsync(filePath = this.#dataPath)\r\n {\r\n const path = normalizeResourcePath(filePath);\r\n if (!path) throw new TypeError(\"EveSOF.LoadDataAsync requires a data path\");\r\n const getObject = this.#asyncResources.getObject;\r\n if (!getObject)\r\n {\r\n return this.dataMgr.LoadDataAsync(path);\r\n }\r\n\r\n const existing = this.#dataLoadOperations.get(path);\r\n if (existing) return existing;\r\n const operation = ResolveSofDependency(\r\n () => getObject(path, { role: \"sofData\", output: \"runtime\" }),\r\n path,\r\n \"sofData\",\r\n new Map()\r\n )\r\n .then(data => this.#sofLibraryBuilder\r\n ? (this.#sofLibraryBuilder.SetData(data), true)\r\n : this.dataMgr.SetData(data));\r\n this.#dataLoadOperations.set(path, operation);\r\n const clear = () =>\r\n {\r\n if (this.#dataLoadOperations.get(path) === operation) this.#dataLoadOperations.delete(path);\r\n };\r\n operation.then(clear, clear);\r\n return operation;\r\n }\r\n\r\n /** Creates and resolves one DNA instance against the loaded SOF library. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n return dna.IsValid() ? dna : null;\r\n }\r\n\r\n /**\r\n * Reports the visibility groups one DNA resolves, without building a graph.\r\n *\r\n * Visibility groups are how a faction turns hull attachment sets on and off,\r\n * so this answers which groups the selected hulls author, which the faction\r\n * declares, and therefore which sets a build emits. Carbon keeps only the\r\n * FNV1 hashes at runtime (EveSOFDataMgr.cpp:1301-1310) and has no equivalent\r\n * query; the names come from the catalog projection.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDnaVisibilityGroups(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (dna === null) return null;\r\n\r\n const declared = [...new Set(dna.factionData?.visibilityGroups ?? [])];\r\n const declaredSet = new Set(declared);\r\n const sets = [];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.hullDatas?.[hullIndex];\r\n if (!hull) continue;\r\n // A gated set is any hull collection whose records carry a visibility\r\n // group, so this follows the catalog rather than a second list of the\r\n // set kinds Carbon happens to gate today.\r\n for (const [field, values] of Object.entries(hull))\r\n {\r\n if (!Array.isArray(values)) continue;\r\n for (const value of values)\r\n {\r\n if (!value || value.visibilityGroupName === undefined) continue;\r\n const group = String(value.visibilityGroupName);\r\n sets.push({\r\n kind: field,\r\n // Carbon's projected sets keep the visibility hash, not the\r\n // authored set name, so name is present only where a projection\r\n // already carries one.\r\n name: String(value.name ?? \"\"),\r\n hullIndex,\r\n visibilityGroup: group,\r\n visible: declaredSet.has(group)\r\n });\r\n }\r\n }\r\n }\r\n\r\n const authored = [...new Set(sets.map(item => item.visibilityGroup))].sort();\r\n return {\r\n dna: String(dnaString),\r\n hulls: [...(dna.hullNames ?? [])],\r\n faction: String(dna.factionName ?? \"\"),\r\n race: String(dna.raceName ?? \"\"),\r\n declared: declared,\r\n authored: authored,\r\n visible: authored.filter(name => declaredSet.has(name)),\r\n hidden: authored.filter(name => !declaredSet.has(name)),\r\n sets: sets.map(item => item)\r\n };\r\n }\r\n\r\n /** Inspects one DNA selection without creating a graph or runtime values. */\r\n InspectDna(dnaString)\r\n {\r\n const dna = new EveSOFDNA();\r\n dna.Setup(dnaString, this.dataMgr);\r\n const buildable = dna.IsValid();\r\n const valid = buildable && dna.ValidateContent();\r\n return {\r\n buildable,\r\n valid,\r\n error: dna.GetParseError() ?? (valid ? null : \"invalid-content\")\r\n };\r\n }\r\n\r\n /** Performs Carbon's separate slow/offline DNA validation path. */\r\n @carbon.method\r\n @impl.implemented\r\n ValidateDNA(dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna !== null && dna.ValidateContent();\r\n }\r\n\r\n /**\r\n * Builds the legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValues(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Build(hullName, factionName, raceName)\r\n {\r\n return this.BuildFromDNA(`${hullName}:${factionName}:${raceName}`);\r\n }\r\n\r\n /**\r\n * Promise-facing legacy `carbon.document` compatibility form.\r\n * @deprecated Use BuildValuesAsync(...).\r\n */\r\n BuildAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Returns diagnostics from the most recent values build or deprecated document build. */\r\n GetBuildDiagnostics()\r\n {\r\n return this.#buildDiagnostics.map(entry => ({ ...entry }));\r\n }\r\n\r\n /** Builds the supported public model-values graph from three selections. */\r\n BuildValues(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNA(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /** Builds the supported public model-values graph asynchronously. */\r\n BuildValuesAsync(hullName, factionName, raceName, options = {})\r\n {\r\n return this.BuildValuesFromDNAAsync(`${hullName}:${factionName}:${raceName}`, options);\r\n }\r\n\r\n /**\r\n * Builds the supported public model-values graph for a DNA string.\r\n *\r\n * The result is one nested, JSON-serializable root value carrying `_type` on\r\n * polymorphic nodes and `_id`/`_ref` only where topology demands shared\r\n * identity. There is no node table, `kind`/`fields` record, or `raw` payload.\r\n *\r\n * **No class registry is required, and none should be passed.** The SOF layer\r\n * must remain independent of Trinity classes, and JSON does not need the\r\n * classes it names. Building this used to hydrate\r\n * a document into live runtime objects and re-export them, which made a\r\n * registry mandatory and relocated a Trinity-layer dependency onto every\r\n * caller rather than removing it. Anything that takes a registry here is the\r\n * round trip growing back.\r\n *\r\n * Constructing objects is the caller's option, performed on the result:\r\n * `RootClass.from(values)` against whatever classes that caller has. The\r\n * direction matters — objects are built *from* the values, never in order to\r\n * produce them.\r\n *\r\n * The output is sparse by default: it carries what SOF set, and class\r\n * defaults belong to whoever constructs. Pass `populateDefaults: true` to\r\n * overlay defaults from the class families the caller has registered with\r\n * `CjsSchema`; SOF still does not import those families. The audio emitter is\r\n * ordinary declared data, an `AudEmitter` node in\r\n * `TriObserverLocal.observer`, so either form is a complete rebuild source.\r\n */\r\n BuildValuesFromDNA(dnaString, options = {})\r\n {\r\n const document = this.BuildFromDNA(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Builds one modular hull into an existing space-object values graph.\r\n *\r\n * Carbon mutates a live EveSpaceObject2. The device-free runtime keeps the\r\n * same owner-first and boolean contract while composing through its canonical\r\n * model-values boundary; a live CjsModel owner is exported, composed, then\r\n * populated through SetValues without importing Trinity into SOF.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Runtime SOF remains Trinity-free, so Carbon's live EveSpaceObject2 mutation is performed through the caller-supplied model-values contract.\")\r\n BuildChild(owner, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n const isModel = owner instanceof CjsModel;\r\n const source = isModel\r\n ? owner.GetValues({ refs: true, forceTypeTags: true })\r\n : owner;\r\n const values = this.BuildChildValues(source, dnaString, partTag, transform, options);\r\n if (!values) return false;\r\n\r\n if (isModel)\r\n {\r\n const hydrationOptions = options?.hydration ?? {};\r\n owner.SetValues(values, Object.hasOwn(options ?? {}, \"registry\")\r\n ? { ...hydrationOptions, registry: options.registry }\r\n : hydrationOptions);\r\n }\r\n else\r\n {\r\n replacePlainValues(owner, values);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns a new space-object values graph with one Carbon modular hull\r\n * contribution. Invalid DNA returns null without changing the input graph.\r\n */\r\n @impl.custom\r\n @impl.reason(\"Provides the immutable values form needed to compose a modular graph before optional Trinity hydration.\")\r\n BuildChildValues(ownerValues, dnaString, partTag, transform = identityMatrix(), options = {})\r\n {\r\n if (!ownerValues || typeof ownerValues !== \"object\" || Array.isArray(ownerValues))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChildValues requires a self-describing space-object values root\");\r\n }\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const tag = normalizePartTag(partTag);\r\n const placementTransform = normalizePlacementTransform(transform);\r\n dna.SetParentBoundingSphere(null);\r\n dna.SetParentShapeEllipsoidInfo(null);\r\n\r\n const document = new SofDocumentBuilder();\r\n const rootRef = document.ImportValuesRoot(ownerValues);\r\n const root = document.GetNode(rootRef.$ref);\r\n if (!SPACE_OBJECT_ROOT_KINDS.has(root?.kind))\r\n {\r\n throw new TypeError(`EveSOF.BuildChildValues requires an EveSpaceObject2 values root, received ${root?.kind ?? \"unknown\"}`);\r\n }\r\n document.AddRoot(\"default\", rootRef);\r\n ensureSpaceObjectBuildFields(root.fields);\r\n this.#BuildChildIntoDocument(\r\n document,\r\n root.fields,\r\n dna,\r\n tag,\r\n placementTransform,\r\n options?.layout ?? options ?? {}\r\n );\r\n return EveSOF.projectDocumentValues(document.ToJSON(), options);\r\n }\r\n\r\n /** Supported async values build; dependency collection currently reuses the deprecated internal document builder. */\r\n async BuildValuesFromDNAAsync(dnaString, options = {})\r\n {\r\n const document = await this.BuildFromDNAAsync(dnaString, options);\r\n return document ? EveSOF.projectDocumentValues(document, options) : null;\r\n }\r\n\r\n /**\r\n * Canonical pure-data instantiation: the decoded (or raw black) sof catalog\r\n * plus a plain list of res file names.\r\n *\r\n * The catalog is mandatory - a factory without its data is useless. The\r\n * file list is the sole build-time resource dependency (resPathInsert\r\n * existence); without it every insert lookup reports missing and texture\r\n * paths fall back to their base values, with a one-time console warning.\r\n * The factory never fetches, never parses index formats, and never touches\r\n * the network: callers hand it bytes or data they acquired however they\r\n * chose.\r\n *\r\n * (`Create`, not `from` - CjsModel.from is the schema hydration contract\r\n * and keeps its signature.)\r\n */\r\n static Create({ black, resFileIndex } = {})\r\n {\r\n if (black === undefined || black === null)\r\n {\r\n throw new TypeError(\"EveSOF.Create requires the sof catalog: data.black bytes or its decoded data\");\r\n }\r\n const sof = new EveSOF();\r\n const data = (black instanceof ArrayBuffer || ArrayBuffer.isView(black))\r\n ? CjsBlackFormat.readPayload(\r\n ArrayBuffer.isView(black)\r\n ? black.buffer.slice(black.byteOffset, black.byteOffset + black.byteLength)\r\n : black,\r\n {}\r\n ).object\r\n : black;\r\n if (!sof.dataMgr.SetData(data))\r\n {\r\n throw new TypeError(\"EveSOF.Create could not ingest the sof catalog\");\r\n }\r\n if (resFileIndex === undefined || resFileIndex === null)\r\n {\r\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.\");\r\n }\r\n else\r\n {\r\n sof.Register({ resFileIndex });\r\n }\r\n return sof;\r\n }\r\n\r\n /**\r\n * Internal structural projection from the builder's `carbon.document`\r\n * intermediate to supported plain model values.\r\n *\r\n * Both forms are JSON describing one graph, so this is a structural rewrite\r\n * and nothing more: a node table becomes a tree, `kind` becomes `_type`, and\r\n * `{ $ref }` becomes a `{ _ref }` back-reference paired with an `_id` on the\r\n * first occurrence. `fields` and `raw` are envelopes, so their contents move\r\n * onto the node itself.\r\n *\r\n * **No class library is imported, by requirement.** The SOF layer must remain\r\n * independent of Trinity classes, and sparse JSON never needs the classes it\r\n * names. The previous implementation\r\n * hydrated the document into live runtime objects and called `GetValues` on\r\n * the root, which made a class registry mandatory and pushed a Trinity-layer\r\n * dependency onto every caller. Constructing objects to serialize a graph we\r\n * already hold is a round trip; building objects from these values is a thing\r\n * a caller may choose to do afterwards, with `RootClass.from(values)`.\r\n *\r\n * The output is therefore sparse unless `options.populateDefaults` is true.\r\n * That opt-in runs `CjsSchema.applyDefaults` after the structural projection,\r\n * using only class families the caller has already imported and registered.\r\n * It does not construct or initialize the authored graph and does not add a\r\n * SOF-to-Trinity dependency.\r\n *\r\n * @internal The document form is not a supported consumer boundary.\r\n */\r\n static projectDocumentValues(document, options = {})\r\n {\r\n const normalized = CjsCarbonDocument.normalize(document);\r\n const nodeById = new Map(normalized.nodes.map(node => [Number(node.id), node]));\r\n const rootRef = normalized.roots?.[0]?.ref;\r\n\r\n if (!CjsCarbonDocument.isRef(rootRef))\r\n {\r\n throw new TypeError(\"EveSOF values projection requires a document with one root reference.\");\r\n }\r\n\r\n // A node reachable more than once is shared topology and needs an identity;\r\n // one reachable once is ordinary nesting and needs none. Counting first\r\n // keeps `_id` off the great majority of nodes.\r\n const visits = new Map();\r\n CountDocumentVisits(rootRef, nodeById, visits);\r\n\r\n const values = ProjectDocumentNode(rootRef, nodeById, visits, new Map(), { nextId: 1 });\r\n const populateDefaults = options?.populateDefaults ?? false;\r\n if (typeof populateDefaults !== \"boolean\")\r\n {\r\n throw new TypeError(\"EveSOF populateDefaults option must be a boolean.\");\r\n }\r\n return populateDefaults ? CjsSchema.applyDefaults(values) : values;\r\n }\r\n\r\n /**\r\n * Deprecated async `carbon.document` assembly used internally by\r\n * `BuildValuesFromDNAAsync`.\r\n *\r\n * Resolve selected child/object dependencies without converting the\r\n * deterministic synchronous builder into an async state machine.\r\n *\r\n * A collection build records only dependencies selected by the normal SOF\r\n * filters. They are fetched concurrently, then the unchanged builder runs a\r\n * second time against synchronous per-call caches.\r\n *\r\n * @deprecated Use BuildValuesFromDNAAsync(...).\r\n */\r\n async BuildFromDNAAsync(dnaString, options = {})\r\n {\r\n if (this.#sofLibraryBuilder)\r\n {\r\n await this.#sofLibraryBuilder.EnsureFromDNA(dnaString, options.catalog ?? {});\r\n }\r\n const getObject = this.#asyncResources.getObject;\r\n const exists = this.#asyncResources.exists;\r\n if (!getObject && !exists) return this.BuildFromDNA(dnaString, options);\r\n\r\n const documentRequests = new Map();\r\n const existenceRequests = new Map();\r\n const collectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", \"child\", context);\r\n return null;\r\n };\r\n this.#objectResourceResolver = (path, context) =>\r\n {\r\n CollectSofRequest(documentRequests, path, \"carbon.document\", context?.role || \"object\", context);\r\n return null;\r\n };\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path =>\r\n {\r\n CollectSofRequest(existenceRequests, path, \"boolean\", \"exists\");\r\n return false;\r\n };\r\n }\r\n this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = collectionPrevious.child;\r\n this.#objectResourceResolver = collectionPrevious.object;\r\n this.#resourceExists = collectionPrevious.exists;\r\n this.allowFileCaching = collectionPrevious.allowFileCaching;\r\n }\r\n\r\n const documentResults = new Map();\r\n const existenceResults = new Map();\r\n await Promise.all([\r\n ...[ ...documentRequests.values() ].map(request => ResolveSofDependency(\r\n () => getObject(request.path, { ...request.context, role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n documentResults,\r\n request.key\r\n )),\r\n ...[ ...existenceRequests.values() ].map(request => ResolveSofDependency(\r\n () => exists(request.path, { role: request.role, output: request.output }),\r\n request.path,\r\n request.role,\r\n existenceResults,\r\n request.key\r\n ))\r\n ]);\r\n\r\n const projectionPrevious = {\r\n child: this.#childResourceResolver,\r\n object: this.#objectResourceResolver,\r\n exists: this.#resourceExists,\r\n allowFileCaching: this.allowFileCaching\r\n };\r\n try\r\n {\r\n if (getObject)\r\n {\r\n this.#childResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n this.#objectResourceResolver = path => documentResults.get(SofRequestKey(path, \"carbon.document\")) ?? null;\r\n }\r\n if (exists)\r\n {\r\n this.allowFileCaching = false;\r\n this.#resourceExists = path => existenceResults.get(SofRequestKey(path, \"boolean\")) === true;\r\n }\r\n return this.BuildFromDNA(dnaString, options);\r\n }\r\n finally\r\n {\r\n this.#childResourceResolver = projectionPrevious.child;\r\n this.#objectResourceResolver = projectionPrevious.object;\r\n this.#resourceExists = projectionPrevious.exists;\r\n this.allowFileCaching = projectionPrevious.allowFileCaching;\r\n }\r\n }\r\n\r\n /** Returns Carbon's layout selection and transform work as a detached CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n PlanLayoutFromDNA(dnaString, options = {})\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n return dna ? planSofLayouts(dna, options ?? {}) : null;\r\n }\r\n\r\n /**\r\n * Emits the deprecated internal `carbon.document` assembly form, including\r\n * deterministic layouts. `BuildValuesFromDNA` currently projects this\r\n * intermediate to the supported output. Layout options may be passed\r\n * directly or under an `options.layout` object.\r\n *\r\n * @deprecated Use BuildValuesFromDNA(...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n BuildFromDNA(dnaString, options = {})\r\n {\r\n this.#buildDiagnostics = [];\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return null;\r\n\r\n const buildClass = dna.GetBuildClass();\r\n const typeName = BUILD_CLASS_TYPES[buildClass];\r\n if (!typeName) return null;\r\n const hull = dna.hullDatas[0];\r\n const sphere = dna.GetHullBoundingSphere() ?? [0, 0, 0, -1];\r\n const document = new SofDocumentBuilder();\r\n const isExtension = buildClass === EveSOFDataHull.BuildClass.BUILDCLASS_EXTENSION;\r\n const hasShipInterface = typeName === \"EveShip2\" || typeName === \"EveSwarm\";\r\n const swarmBehavior = typeName === \"EveSwarm\"\r\n ? createSwarmBehaviorFields(dna.GetGenericSwarmProperties())\r\n : null;\r\n const mesh = isExtension ? document.AddNode(\"Tr2Mesh\", {}) : this.CreateMesh(dna, document);\r\n if (!mesh) return null;\r\n const rootFields = {\r\n dna: dna.GetDnaString(),\r\n boundingSphereCenter: Array.from(sphere).slice(0, 3),\r\n boundingSphereRadius: Number(sphere[3] ?? -1),\r\n shapeEllipsoidCenter: isExtension ? [0, 0, 0] : arrayValue(hull.shapeEllipsoidCenter, [0, 0, 0]),\r\n shapeEllipsoidRadius: isExtension ? [-1, -1, -1] : arrayValue(hull.shapeEllipsoidRadius, [-1, -1, -1]),\r\n dynamicBoundingSphereEnabled: isExtension ? false : dna.DynamicBoundingSphereEnabled(),\r\n castShadow: isExtension ? false : dna.CastShadow(),\r\n isAnimated: isExtension ? false : dna.IsHullAnimated(),\r\n reflectionMode: isExtension ? 3 : dna.GetReflectionMode(),\r\n mesh,\r\n effectChildren: [],\r\n children: [],\r\n curveSets: [],\r\n modelRotationCurve: null,\r\n modelTranslationCurve: null,\r\n attachments: [],\r\n decals: [],\r\n impactOverlay: null,\r\n customMasks: [],\r\n lights: [],\r\n externalParameters: [],\r\n controllers: [],\r\n observers: [],\r\n locators: [],\r\n locatorSets: []\r\n };\r\n if (hasShipInterface) rootFields.boosters = null;\r\n if (swarmBehavior) Object.assign(rootFields, swarmBehavior);\r\n if (isExtension)\r\n {\r\n if (!this.SetupExtensionBuild(document, rootFields, dna, options?.layout ?? options ?? {})) return null;\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n this.SetupCustomMask(document, rootFields, dna);\r\n this.SetupDecalSets(document, rootFields, dna);\r\n this.SetupLocators(document, rootFields, dna);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupAttachments(document, rootFields, dna);\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n this.SetupEffects(document, rootFields, rootFields, dna, [identityMatrix()], EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupAudio(document, rootFields, dna, identityMatrix());\r\n this.SetupControllers(document, rootFields, dna, EveSOFDataHull.BuildFilter.STANDALONE);\r\n this.SetupModelCurves(document, rootFields, dna);\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, options?.layout ?? options ?? {});\r\n if (hasShipInterface) this.SetupBoosters(document, rootFields, dna);\r\n rootFields.inheritProperties = createInheritProperties(document, dna);\r\n const root = document.AddNode(typeName, rootFields);\r\n document.AddRoot(\"default\", root);\r\n return document.ToJSON();\r\n }\r\n\r\n /** Ports Carbon's modular child construction into an existing document root. */\r\n #BuildChildIntoDocument(document, rootFields, dna, partTag, transform, layoutOptions)\r\n {\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n const hasControllers = dna.GetHullControllers().length !== 0;\r\n const hasAnimation = dna.IsHullAnimated();\r\n const hasEmitters = dna.GetHullSoundEmitters().length !== 0;\r\n const hasLayouts = dna.GetLayoutCount() > 0;\r\n let hasAttachments = false;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n if (dna.GetHullSpriteSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpotlightSets(hullIndex).length !== 0 ||\r\n dna.GetHullPlaneSets(hullIndex).length !== 0 ||\r\n dna.GetHullSpriteLineSets(hullIndex).length !== 0 ||\r\n dna.GetHullHazeSets(hullIndex).length !== 0 ||\r\n dna.GetHullBanners(hullIndex).length !== 0 ||\r\n dna.GetHullBannerSets(hullIndex).length !== 0 ||\r\n dna.GetHullLightSets(hullIndex).length !== 0)\r\n {\r\n hasAttachments = true;\r\n break;\r\n }\r\n }\r\n\r\n // hasBoosters forces the placement container, as in Carbon (EveSOF.cpp:360).\r\n const hasBoosters = dna.GetHullBoosterCount() > 0;\r\n const needsPlacementContainer = hasControllers || hasAnimation || hasEmitters ||\r\n hasChildEffects || hasLayouts || hasAttachments || hasBoosters;\r\n const buildFlags = hasAnimation\r\n ? EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n : EveSOFDataHull.BuildFilter.INSTANCED_PLACEMENT;\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, translation, scaling);\r\n\r\n let placementRef = null;\r\n let placementFields = null;\r\n if (needsPlacementContainer)\r\n {\r\n placementFields = {\r\n ...createLayoutContainerFields(dna.GetHullNames()[0]),\r\n partTag,\r\n staticTransform: true,\r\n scaling: Array.from(scaling),\r\n rotation: Array.from(rotation),\r\n translation: Array.from(translation)\r\n };\r\n placementRef = document.AddNode(\"EveChildContainer\", placementFields);\r\n rootFields.effectChildren.push(placementRef);\r\n }\r\n\r\n if (hasAnimation)\r\n {\r\n const childFields = {\r\n name: dna.GetHullNames()[0],\r\n partTag,\r\n mesh: this.CreateMesh(dna, document),\r\n reflectionMode: dna.GetReflectionMode(),\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: document.AddNode(\"Tr2GrannyAnimation\", {})\r\n };\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const childRef = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(childRef);\r\n placementFields.animationOwner = childRef;\r\n }\r\n else\r\n {\r\n const shared = ensureSharedInstancedMeshes(document, rootFields);\r\n const areas = this.CreateSharedLayoutAreas(document, dna);\r\n if (areas.length !== 0)\r\n {\r\n const instance = document.AddNode(\"EveChildInstancedMeshInstance\", {\r\n transform: transform.slice(),\r\n sphereIndex: 0\r\n });\r\n shared.meshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: dna.GetHullGeometryResPath(),\r\n castsShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances: [instance],\r\n partTags: [partTag],\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: \"\",\r\n display: true\r\n }));\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAttachments(document, placementFields, dna, [transform], true);\r\n }\r\n }\r\n\r\n const instanceSphere = transformLayoutSphere(dna.GetHullBoundingSphere(), transform);\r\n if (instanceSphere)\r\n {\r\n rootFields.boundingSphereCenter = instanceSphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = instanceSphere[3];\r\n }\r\n const ellipsoidBounds = transformLayoutEllipsoid(\r\n dna.GetHullShapeEllipsoid(),\r\n instanceSphere,\r\n transform\r\n );\r\n if (ellipsoidBounds)\r\n {\r\n const center = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n const radius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidCenter = center;\r\n rootFields.shapeEllipsoidRadius = radius;\r\n dna.SetParentShapeEllipsoidInfo({ center, radius });\r\n }\r\n\r\n if (hasControllers)\r\n {\r\n this.SetupControllers(document, placementFields, dna, buildFlags);\r\n }\r\n if (placementFields)\r\n {\r\n this.SetupAudio(document, placementFields, dna, transform);\r\n }\r\n if (hasBoosters && placementFields)\r\n {\r\n this.SetupChildBoosters(document, placementFields, dna);\r\n }\r\n if (hasChildEffects)\r\n {\r\n this.SetupEffects(document, rootFields, placementFields, dna, [transform], buildFlags);\r\n }\r\n if (!rootFields.impactOverlay)\r\n {\r\n this.SetupImpactEffects(document, rootFields, dna);\r\n }\r\n this.SetupLocatorSets(document, rootFields, dna, [transform], partTag);\r\n this.SetupLayout(document, rootFields, dna, {\r\n ...(layoutOptions ?? {}),\r\n offsets: [transform]\r\n }, placementFields, {\r\n partTag\r\n });\r\n if (placementRef)\r\n {\r\n stampDocumentChildPartTag(document, placementRef, partTag);\r\n }\r\n }\r\n\r\n /** Emits Carbon's special extension-root path through a fake solo placement. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupExtensionBuild(document, rootFields, dna, layoutOptions = {})\r\n {\r\n const extensionFields = {\r\n ...createLayoutContainerFields(\"Extension Container\"),\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const needsPlacementContainer = dna.IsHullAnimated() || dna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? createLayoutContainerFields(\"Solo Placement\")\r\n : extensionFields;\r\n const childFields = {\r\n name: \"Hull\",\r\n mesh: this.CreateMesh(dna, document),\r\n castShadow: dna.CastShadow(),\r\n reflectionMode: dna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: dna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) return null;\r\n this.SetupDecalSets(document, childFields, dna);\r\n this.SetupAttachments(document, childFields, dna, [identityMatrix()], false);\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n placementFields.objects.push(child);\r\n\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(\r\n document,\r\n placementFields,\r\n dna,\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n }\r\n this.SetupAudio(document, placementFields, dna, identityMatrix());\r\n const hasChildEffects = dna.UsingSof6()\r\n ? dna.GetHullChildSets().length !== 0\r\n : dna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(\r\n document,\r\n rootFields,\r\n fakeFields,\r\n dna,\r\n [identityMatrix()],\r\n EveSOFDataHull.BuildFilter.NON_INSTANCED_PLACEMENT\r\n );\r\n if (needsPlacementContainer) placementFields.objects.push(...fakeFields.effectChildren);\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n placementFields.animationOwner = dna.IsHullAnimated() ? child : null;\r\n extensionFields.objects.push(document.AddNode(\"EveChildContainer\", placementFields));\r\n }\r\n\r\n this.SetupInstancedMeshes(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLocatorSets(document, rootFields, dna, [identityMatrix()]);\r\n this.SetupLayout(document, rootFields, dna, layoutOptions, extensionFields);\r\n extensionFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", extensionFields));\r\n return child;\r\n }\r\n\r\n /** Creates the base Tr2Mesh graph and populates its SOF shader areas. */\r\n @carbon.method\r\n @impl.implemented\r\n CreateMesh(dna, document)\r\n {\r\n const fields = {\r\n geometryResPath: dna.GetHullGeometryResPath(),\r\n opaqueAreas: [],\r\n transparentAreas: [],\r\n additiveAreas: [],\r\n distortionAreas: [],\r\n depthAreas: []\r\n };\r\n const transparent = [];\r\n // Carbon's CreateMesh never fails: missing shader records degrade to\r\n // partially filled area vectors with a build diagnostic (EveSOF.cpp:500-515).\r\n this.SetupShaders(dna, document, fields, transparent);\r\n this.GenerateDepthFromAreaVector(document, fields.depthAreas, transparent, dna);\r\n return document.AddNode(\"Tr2Mesh\", fields);\r\n }\r\n\r\n /** Populates all five Carbon hull-area categories in source order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupShaders(dna, document, meshFields, transparent)\r\n {\r\n let meshIndexOffset = 0;\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n let count = 0;\r\n const fills = [\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE],\r\n [meshFields.opaqueAreas, TriBatchType.TRIBATCHTYPE_DECAL],\r\n [meshFields.transparentAreas, TriBatchType.TRIBATCHTYPE_TRANSPARENT],\r\n [meshFields.additiveAreas, TriBatchType.TRIBATCHTYPE_ADDITIVE],\r\n [meshFields.distortionAreas, TriBatchType.TRIBATCHTYPE_DISTORTION]\r\n ];\r\n for (const [target, batchType] of fills)\r\n {\r\n const result = this.FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document);\r\n count += result.count;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT) transparent.push(...result.areas);\r\n }\r\n meshIndexOffset += count;\r\n }\r\n return true;\r\n }\r\n\r\n /** Converts one Carbon HullAreas vector into Tr2MeshArea/effect graph nodes. */\r\n @carbon.method\r\n @impl.implemented\r\n FillMeshAreaVector(target, batchType, dna, hullIndex, meshIndexOffset, document)\r\n {\r\n // A missing source vector cannot occur in Carbon (hull area vectors always\r\n // exist for a valid hull index); treat it as empty rather than diagnosing.\r\n const source = dna.GetHullMeshAreas(batchType, hullIndex);\r\n if (!source) return { count: 0, areas: [] };\r\n const pending = [];\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData)\r\n {\r\n // Carbon logs and returns zero for this source, keeping the areas it\r\n // already appended and continuing with the remaining batches and\r\n // hulls (EveSOF.cpp:564-569); the build itself never aborts.\r\n this.#buildDiagnostics.push({\r\n code: \"missing-generic-shader\",\r\n batchType,\r\n hullIndex,\r\n shader: String(area.shader ?? \"\"),\r\n area: String(area.name ?? \"\")\r\n });\r\n target.push(...pending.map(item => item.ref));\r\n return { count: 0, areas: pending };\r\n }\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n meshIndexOffset,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n );\r\n pending.push(built);\r\n }\r\n target.push(...pending.map(item => item.ref));\r\n return { count: source.length, areas: pending };\r\n }\r\n\r\n /** Emits depth clones for transparent areas requesting Carbon depth generation. */\r\n @carbon.method\r\n @impl.implemented\r\n GenerateDepthFromAreaVector(document, depthAreas, transparentAreas, dna)\r\n {\r\n const depthShader = dna.GetGenericAreaShaderData(\"depthonlyv5.fx\");\r\n for (const source of transparentAreas)\r\n {\r\n if (!source.generateDepthArea) continue;\r\n const sourceEffect = document.GetNode(source.effect.$ref);\r\n let effectFields = cloneFields(sourceEffect.fields);\r\n if (depthShader)\r\n {\r\n const resource = source.resourceRefs.get(depthShader.transparencyTextureName);\r\n effectFields = {\r\n ...effectFields,\r\n effectFilePath: dna.GetCompleteShaderPath(\"depthonlyv5.fx\"),\r\n constParameters: [],\r\n parameters: [],\r\n resources: resource ? [resource] : []\r\n };\r\n }\r\n const effect = document.AddNode(\"Tr2Effect\", effectFields);\r\n const areaFields = { ...source.fields, effect };\r\n depthAreas.push(document.AddNode(\"Tr2MeshArea\", areaFields));\r\n }\r\n }\r\n\r\n /** Emits enabled pattern projections as EveCustomMask graph nodes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupCustomMask(document, rootFields, dna)\r\n {\r\n const application = dna.GetPatternApplicationData();\r\n if (!application) return;\r\n const layerCount = dna.GetPatternLayerCount();\r\n for (let layerIndex = 0; layerIndex < layerCount; layerIndex++)\r\n {\r\n const projection = dna.GetPatternProjectionData(application, layerIndex);\r\n if (!projection?.enabled) continue;\r\n const layer = dna.GetPatternLayerData(application, layerIndex);\r\n const targetMaterials = dna.GetMaterialTargets(layer);\r\n if (!layer || !targetMaterials) continue;\r\n rootFields.customMasks.push(document.AddNode(\"EveCustomMask\", {\r\n position: arrayValue(projection.position, [0, 0, 0]),\r\n scaling: arrayValue(projection.scaling, [1, 1, 1]),\r\n rotation: arrayValue(projection.rotation, [0, 0, 0, 1]),\r\n isMirrored: projection.isMirrored === true,\r\n clampU: layer.projectionAddressModeU === 3,\r\n clampV: layer.projectionAddressModeV === 3,\r\n materialIndex: Number(layer.materialSourceID ?? 0),\r\n targetMaterials: arrayValue(targetMaterials, [0, 0, 0, 0])\r\n }));\r\n }\r\n }\r\n\r\n /** Emits Carbon decal sets and records private static indices for SOF hydration. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupDecalSets(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n const combinedGeometryPath = dna.GetHullGeometryResPath().toLowerCase();\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const decalSet of dna.GetHullDecalSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(decalSet.visibilityGroup)) continue;\r\n for (const item of decalSet.items)\r\n {\r\n const usage = Number(item.usage);\r\n const effectName = DECAL_EFFECT_NAMES[usage];\r\n if (!effectName) continue;\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO && !dna.HasLogoSet(item.logoType)) continue;\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n const selectorFields = {};\r\n if (usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_STANDARD && usage !== EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const color = dna.GetColorSet()[item.glowColorType];\r\n if (color)\r\n {\r\n selectorFields._glowColorType = Number(item.glowColorType ?? 0);\r\n parameterNames.add(\"DecalGlowColor\");\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"DecalGlowColor\",\r\n value: Array.from(color)\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(item.parameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(item.parameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n const addResource = (name, resourcePath) => {\r\n if (resourceNames.has(name)) return;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", { name, resourcePath }));\r\n };\r\n for (const name of sortedKeys(item.textures)) addResource(name, item.textures.get(name).resFilePath);\r\n\r\n const shaderData = dna.GetGenericDecalShaderData(effectName);\r\n if (shaderData)\r\n {\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n addResource(name, shaderData.defaultTextures.get(name).resFilePath);\r\n }\r\n if (item.meshIndex !== -1)\r\n {\r\n for (const name of shaderData.parentTextures)\r\n {\r\n const resourcePath = dna.GetHullTextureWithMeshIndex(\r\n name,\r\n item.meshIndex,\r\n hullIndex,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null\r\n );\r\n if (resourcePath !== null) addResource(name, resourcePath);\r\n }\r\n }\r\n }\r\n if (usage === EveSOFDataHullDecalSetItem.Usage.USAGE_LOGO)\r\n {\r\n const logo = dna.GetLogo(item.logoType);\r\n selectorFields._logoType = Number(item.logoType ?? 0);\r\n for (const name of sortedKeys(logo.textures)) addResource(name, logo.textures.get(name).resFilePath);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetDecalShaderLocationResPath()}/${dna.GetShaderPrefix(false)}${effectName}`,\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n addOffset(position, hullOffset);\r\n const indexBuffers = selectDecalIndexBuffers(item, dna.GetMultiHullCount(), combinedGeometryPath);\r\n rootFields.decals.push(document.AddNode(\"EveSpaceObjectDecal\", {\r\n // These underscored fields retain the original SOF selectors in\r\n // JSON only; target Trinity classes intentionally ignore them.\r\n ...selectorFields,\r\n position,\r\n rotation: arrayValue(item.rotation, [0, 0, 0, 1]),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n parentBoneIndex: item.boneIndex,\r\n minScreenSize: 10,\r\n decalEffect: effect,\r\n staticIndexBuffers: indexBuffers\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's CPU-side armor, hull, flicker, and shield impact graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupImpactEffects(document, rootFields, dna)\r\n {\r\n const impactType = dna.GetImpactEffectType();\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_NONE) return;\r\n const damage = dna.GetGenericDamageData();\r\n const hullDamage = dna.GetGenericHullDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return;\r\n\r\n let shieldMesh = null;\r\n if (impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID)\r\n {\r\n const shieldEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: `${dna.GetAreaShaderLocationResPath()}/${dna.GetImpactShieldShader()}`,\r\n constParameters: effectParameters(document, raceDamage.shieldDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.shieldDamageTextures)\r\n });\r\n const shieldArea = document.AddNode(\"Tr2MeshArea\", { effect: shieldEffect });\r\n shieldMesh = document.AddNode(\"Tr2Mesh\", {\r\n geometryResPath: damage.shieldGeometryResFilePath,\r\n additiveAreas: [shieldArea]\r\n });\r\n }\r\n\r\n const armorDamageShader = this.CreateArmorDamageEffect(document, dna);\r\n const armorImpactEmitter = createImpactEmitter(document, {\r\n rate: damage.armorParticleRate,\r\n angle: damage.armorParticleAngle,\r\n innerAngle: 0,\r\n minMaxSpeed: damage.armorParticleMinMaxSpeed,\r\n minMaxLifeTime: damage.armorParticleMinMaxLifeTime,\r\n sizes: damage.armorParticleSizes,\r\n colors: damage.armorParticleColors,\r\n textureIndex: damage.armorParticleTextureIndex,\r\n velocityStretchRotation: damage.armorParticleVelocityStretchRotation,\r\n drag: damage.armorParticleDrag,\r\n turbulenceAmplitude: damage.armorParticleTurbulenceAmplitude,\r\n turbulenceFrequency: damage.armorParticleTurbulenceFrequency,\r\n colorMidpoint: damage.armorParticleColorMidPoint\r\n });\r\n const hullImpactEmitter = hullDamage ? createImpactEmitter(document, {\r\n rate: hullDamage.hullParticleRate,\r\n angle: hullDamage.hullParticleAngle,\r\n innerAngle: hullDamage.hullParticleInnerAngle,\r\n minMaxSpeed: hullDamage.hullParticleMinMaxSpeed,\r\n minMaxLifeTime: hullDamage.hullParticleMinMaxLifeTime,\r\n sizes: hullDamage.hullParticleSizes,\r\n colors: hullDamage.hullParticleColors,\r\n textureIndex: hullDamage.hullParticleTextureIndex,\r\n velocityStretchRotation: hullDamage.hullParticleVelocityStretchRotation,\r\n drag: hullDamage.hullParticleDrag,\r\n turbulenceAmplitude: hullDamage.hullParticleTurbulenceAmplitude,\r\n turbulenceFrequency: hullDamage.hullParticleTurbulenceFrequency,\r\n colorMidpoint: hullDamage.hullParticleColorMidpoint\r\n }) : null;\r\n const flickerCurve = document.AddNode(\"TriPerlinCurve\", {\r\n alpha: damage.flickerPerlinAlpha,\r\n beta: damage.flickerPerlinBeta,\r\n N: damage.flickerPerlinN,\r\n speed: damage.flickerPerlinSpeed,\r\n offset: 1,\r\n scale: 0\r\n });\r\n const shieldIsEllipsoid = impactType === EveSOFDataHull.ImpactEffectType.IMPACTEFFECT_ELLIPSOID;\r\n rootFields.impactOverlay = document.AddNode(\"EveImpactOverlay\", {\r\n mesh: shieldMesh,\r\n shieldIsEllipsoid,\r\n armorDamageShader,\r\n armorImpactEmitter,\r\n hullDamageFlickerCurve: flickerCurve,\r\n hullImpactEmitter\r\n });\r\n }\r\n\r\n /** Selects Carbon's legacy or SOF6 effect-child path. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffects(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n if (dna.UsingSof6())\r\n {\r\n this.SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n else\r\n {\r\n this.SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets, buildFlags);\r\n }\r\n }\r\n\r\n /** Emits legacy path-resolved children and Carbon's authored animation graph. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildrenAndAnimations(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n const emitterTargetsById = new Map();\r\n for (const child of dna.GetHullChildren())\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const factionChild = dna.GetFactionChildData(child.groupIndex);\r\n if (factionChild && !factionChild.isVisible) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, false);\r\n // Carbon returns from SetupChildrenAndAnimations on a wrong-type child,\r\n // skipping the remaining children AND the animation pass (EveSOF.cpp:\r\n // 1840-1844); an unresolvable resource only skips the one child (1779-1783).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n // Emitter rate bindings reach INTO the loaded child's graph; a deferred\r\n // EveChildRef has no graph to bind yet, so the binding is recorded as a\r\n // diagnostic instead of silently dropped. Embedding resolvers keep the\r\n // full Carbon binding behavior.\r\n if (descriptor.reference && Number(child.id ?? -1) !== -1)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"deferred-child-animation-binding\",\r\n path: String(child.redFilePath ?? \"\"),\r\n id: Number(child.id)\r\n });\r\n }\r\n for (const offset of offsets)\r\n {\r\n const animationId = Number(child.id ?? -1);\r\n const ref = this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n if (animationId !== -1)\r\n {\r\n if (!emitterTargetsById.has(animationId)) emitterTargetsById.set(animationId, []);\r\n emitterTargetsById.get(animationId).push(...collectDynamicEmitterRefs(document, ref, descriptor.target));\r\n }\r\n }\r\n }\r\n\r\n for (const animation of dna.GetHullAnimations())\r\n {\r\n const curves = [];\r\n const bindings = [];\r\n if (Number(animation.id) !== -1 && Number(animation.startRate) !== -1)\r\n {\r\n const scalar = document.AddNode(\"Tr2CurveScalar\", {\r\n keys: [\r\n scalarKey(0, animation.startRate),\r\n scalarKey(1, animation.endRate)\r\n ]\r\n });\r\n for (const emitter of emitterTargetsById.get(Number(animation.id)) ?? [])\r\n {\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: scalar,\r\n destinationAttribute: \"rate\",\r\n destinationObject: emitter\r\n }));\r\n }\r\n curves.push(scalar);\r\n }\r\n if (Number(animation.startRotationTime) !== -1)\r\n {\r\n const curve = document.AddNode(\"Tr2CurveQuaternion\", {\r\n keys: [\r\n quaternionKey(animation.startRotationTime, animation.startRotationValue),\r\n quaternionKey(animation.endRotationTime, animation.endRotationValue)\r\n ]\r\n });\r\n curves.push(curve);\r\n if (!objectFields.modelRotationCurve)\r\n {\r\n objectFields.modelRotationCurve = document.AddNode(\"Tr2RotationAdapter\", {});\r\n }\r\n bindings.push(document.AddNode(\"TriValueBinding\", {\r\n sourceAttribute: \"currentValue\",\r\n sourceObject: curve,\r\n destinationAttribute: \"value\",\r\n destinationObject: objectFields.modelRotationCurve\r\n }));\r\n }\r\n objectFields.curveSets.push(document.AddNode(\"TriCurveSet\", {\r\n name: String(animation.name ?? \"\"),\r\n curves,\r\n bindings\r\n }));\r\n // Carbon also leaves authored translation animation as a TODO.\r\n }\r\n }\r\n\r\n /** Emits SOF6 child sets after visibility and build-filter selection. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupEffectChildren(document, objectFields, childOwnerFields, dna, offsets = [identityMatrix()], buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const childSet of dna.GetHullChildSets())\r\n {\r\n if (!dna.IsInVisibilityData(childSet.visibilityGroup)) continue;\r\n for (const child of childSet.items)\r\n {\r\n if (((Number(child.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveChildResource(child.redFilePath, child, true);\r\n // Carbon returns from SetupEffectChildren entirely on a wrong-type\r\n // child, skipping the remaining child sets (EveSOF.cpp:2000-2004).\r\n if (descriptor === WRONG_TYPE_CHILD) return;\r\n if (!descriptor) continue;\r\n for (const offset of offsets)\r\n {\r\n this.#addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Normalizes a child resource into an embeddable descriptor, preserving\r\n * resolver-free builds as EveChildRef nodes and rejecting roots outside\r\n * Carbon's child interfaces.\r\n */\r\n #resolveChildResource(redFilePath, child, sof6)\r\n {\r\n // Without a resolver the build stays complete AS DATA through Carbon's\r\n // own deferred-loading node: EveChildRef persists resPath, placement, and\r\n // loadChildAutomatically, and the runtime loads and attaches the child\r\n // when it pleases (EveChildRef_Blue.cpp:22-34). The type-based\r\n // children/effectChildren routing then happens at load time, where the\r\n // real root type is known. A configured resolver instead embeds the\r\n // child inline (the resolver supplies the type Carbon's cast would see).\r\n if (!this.#childResourceResolver)\r\n {\r\n return {\r\n kind: \"EveChildRef\",\r\n target: \"effectChildren\",\r\n reference: true,\r\n fields: {\r\n resPath: String(redFilePath ?? \"\"),\r\n loadChildAutomatically: true\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#childResourceResolver(String(redFilePath ?? \"\"), { child, sof6 });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: CCP_LOGERR(\"resource file %s is invalid!\") and the child is\r\n // skipped (EveSOF.cpp:1779-1783,1942-1946).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-child-resource\",\r\n reason: \"not-resolved\",\r\n path: String(redFilePath ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF child resource resolver must return a child descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF child document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF child values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF child resource descriptor requires a root kind\");\r\n }\r\n const isTransform = CHILD_TRANSFORM_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"EveTransform\");\r\n const isSpaceObjectChild = SPACE_OBJECT_CHILD_KINDS.has(kind)\r\n || descriptorClaimsInterface(descriptor, \"IEveSpaceObjectChild\");\r\n const target = descriptor.target ?? (isTransform ? \"children\" : \"effectChildren\");\r\n if (target !== \"children\" && target !== \"effectChildren\")\r\n {\r\n throw new TypeError(\"EveSOF child resource target must be children or effectChildren\");\r\n }\r\n // Carbon casts the loaded root: EveTransform joins the children list,\r\n // IEveSpaceObjectChild joins the effect children, and anything else logs\r\n // \"not of correct type\" and aborts the surrounding setup pass\r\n // (EveSOF.cpp:1786-1844,1949-2004).\r\n if (target === \"children\" ? !isTransform : !isSpaceObjectChild)\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"child-resource-wrong-type\",\r\n path: String(redFilePath ?? \"\"),\r\n kind,\r\n target\r\n });\r\n return WRONG_TYPE_CHILD;\r\n }\r\n return {\r\n kind,\r\n target,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Composes child placement, imports or allocates the resolved node, and\r\n * appends its reference to the selected owner list.\r\n */\r\n #addResolvedChild(document, objectFields, childOwnerFields, descriptor, child, offset)\r\n {\r\n const placement = composeChildPlacement(child, offset);\r\n // \"children\"-target hosts accept only the SRT placement; effect children\r\n // additionally receive Carbon's LOD gate and placement origin.\r\n const placementFields = descriptor.target === \"children\"\r\n ? {\r\n scaling: placement.scaling,\r\n rotation: placement.rotation,\r\n translation: placement.translation\r\n }\r\n : placement;\r\n let ref;\r\n if (descriptor.fragment || descriptor.values)\r\n {\r\n ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n const node = document.GetNode(ref.$ref);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n Object.assign(node.fields, cloneValue(placementFields));\r\n }\r\n else\r\n {\r\n ref = document.AddNode(\r\n descriptor.kind,\r\n { ...cloneFields(descriptor.fields), ...cloneValue(placementFields) },\r\n descriptor.raw ? cloneValue(descriptor.raw) : null\r\n );\r\n }\r\n const ownerFields = descriptor.target === \"children\" ? objectFields : childOwnerFields;\r\n ownerFields[descriptor.target].push(ref);\r\n return ref;\r\n }\r\n\r\n /** Emits local observers while retaining audio-backend construction intent. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAudio(document, rootFields, dna, parentOffset = identityMatrix())\r\n {\r\n const ignoredScale = vec3.create();\r\n const parentRotation = quat.create();\r\n const ignoredTranslation = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(parentOffset, identityMatrix()),\r\n parentRotation,\r\n ignoredTranslation,\r\n ignoredScale\r\n );\r\n for (const emitter of dna.GetHullSoundEmitters())\r\n {\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n arrayValue(emitter.position, [0, 0, 0]),\r\n arrayValue(parentOffset, identityMatrix())\r\n );\r\n const rotation = quat.multiply(\r\n quat.create(),\r\n parentRotation,\r\n arrayValue(emitter.rotation, [0, 0, 0, 1])\r\n );\r\n const front = vec3.transformQuat(vec3.create(), [0, 0, 1], rotation);\r\n // The emitter is a declared node in the observer's own `observer` slot,\r\n // not a descriptor hidden beside it. TriObserverLocal exists to hold \"an\r\n // audio or placement observer\" and forwards placement to it through\r\n // `observer.UpdatePlacement`, so this is the field the class was written\r\n // for; leaving it null and stashing a class name in `raw` described the\r\n // graph instead of being it.\r\n //\r\n // This emits a declarative identity and constructs nothing. Building the\r\n // live emitter remains src/audio's alone, which is what the runtime\r\n // architecture permits a producer to carry. The node also keeps the SOF\r\n // layer independent: no audio import is needed\r\n // to name a node any more than to name a Trinity one.\r\n rootFields.observers.push(document.AddNode(\"TriObserverLocal\", {\r\n name: String(emitter.name ?? \"\"),\r\n position: Array.from(position),\r\n front: Array.from(front),\r\n observer: document.AddNode(\"AudEmitter\", {\r\n name: String(emitter.name ?? \"\"),\r\n eventPrefix: String(emitter.prefix ?? \"\"),\r\n position: Array.from(position),\r\n scalingFactor: Number(emitter.attenuationScalingFactor ?? 1)\r\n })\r\n }));\r\n }\r\n }\r\n\r\n /** Loads filtered controller graph resources through the CPU document seam. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupControllers(document, rootFields, dna, buildFlags = EveSOFDataHull.BuildFilter.STANDALONE)\r\n {\r\n for (const controller of dna.GetHullControllers())\r\n {\r\n if (((Number(controller.buildFilter) >>> 0) & (Number(buildFlags) >>> 0)) === 0) continue;\r\n const descriptor = this.#resolveObjectResource(controller.path, \"controller\");\r\n if (descriptor) rootFields.controllers.push(this.#addObjectResource(document, descriptor));\r\n }\r\n }\r\n\r\n /** Loads authored model curve resources after legacy animation bindings. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupModelCurves(document, rootFields, dna)\r\n {\r\n const rotationPath = dna.GetModelRotationCurvePath();\r\n if (rotationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(rotationPath, \"modelRotationCurve\");\r\n if (descriptor) rootFields.modelRotationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n const translationPath = dna.GetModelTranslationCurvePath();\r\n if (translationPath)\r\n {\r\n const descriptor = this.#resolveObjectResource(translationPath, \"modelTranslationCurve\");\r\n if (descriptor) rootFields.modelTranslationCurve = this.#addObjectResource(document, descriptor);\r\n }\r\n }\r\n\r\n /** Emits Carbon's first-hull instanced attachment container and child meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupInstancedMeshes(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullInstanced = dna.GetHullInstancedMeshes();\r\n if (hullInstanced.length === 0) return null;\r\n\r\n let meshContainer = null;\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildContainer\" && node.fields?.name === \"Instanced Meshes\")\r\n {\r\n meshContainer = ref;\r\n break;\r\n }\r\n }\r\n if (!meshContainer)\r\n {\r\n meshContainer = document.AddNode(\"EveChildContainer\", {\r\n name: \"Instanced Meshes\",\r\n objects: []\r\n });\r\n rootFields.effectChildren.push(meshContainer);\r\n }\r\n const containerFields = document.GetNode(meshContainer.$ref).fields;\r\n if (!Array.isArray(containerFields.objects)) containerFields.objects = [];\r\n\r\n for (const source of hullInstanced)\r\n {\r\n if (!Array.isArray(source.instances) || source.instances.length === 0) continue;\r\n const propagated = propagateInstancedMeshInstances(source.instances, offsets);\r\n const built = this.CreateInstancedMesh(document, propagated.instances, source.geometryResPath);\r\n if (!built) continue;\r\n\r\n const shaderData = dna.GetGenericAreaShaderData(source.shader);\r\n if (shaderData)\r\n {\r\n built.opaqueAreas.push(createInstancedMeshArea(\r\n document,\r\n dna,\r\n source,\r\n shaderData,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n ));\r\n }\r\n\r\n const child = document.AddNode(\"EveChildMesh\", {\r\n name: \"\",\r\n mesh: built.ref,\r\n castShadow: dna.CastShadow(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n instanceTransforms: propagated.instanceTransforms\r\n });\r\n\r\n if (Number(source.displayModifier) !== EveSOFDataInstancedMesh.DisplayQualityModifier.SHADER_ALL)\r\n {\r\n containerFields.objects.push(document.AddNode(\"EveChildContainer\", {\r\n name: \"Shader Quality Controlled Instanced Mesh\",\r\n displayFilter: Number(source.displayModifier ?? 0),\r\n objects: [child]\r\n }));\r\n }\r\n else\r\n {\r\n containerFields.objects.push(child);\r\n }\r\n }\r\n return meshContainer;\r\n }\r\n\r\n /** Creates the CPU-document half of Carbon's Tr2InstancedMesh pair. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateInstancedMesh(document, instances, resourcePath)\r\n {\r\n if (!Array.isArray(instances) || instances.length === 0) return null;\r\n const bounds = translationBounds(instances);\r\n const maxScale = maximumInstanceScale(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n const opaqueAreas = [];\r\n const ref = document.AddNode(\"Tr2InstancedMesh\", {\r\n geometryResPath: String(resourcePath ?? \"\"),\r\n opaqueAreas,\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(resourcePath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maxScale\r\n });\r\n return { ref, instanceData, opaqueAreas, bounds, maxScale };\r\n }\r\n\r\n /** Emits Carbon layout placement batches from the deterministic CPU plan. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLayout(document, rootFields, dna, options = {}, targetFields = null, buildContext = {})\r\n {\r\n const plan = planSofLayouts(dna, options ?? {});\r\n if (plan.placements.length === 0) return plan;\r\n\r\n const layoutFields = targetFields ?? {\r\n name: \"layouts\",\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: [],\r\n alwaysOn: true,\r\n origin: 1\r\n };\r\n const batches = groupLayoutPlacements(plan.placements);\r\n const shared = findSharedInstancedMeshes(document, rootFields);\r\n let sharedRef = shared?.ref ?? null;\r\n let sharedMeshes = shared?.meshes ?? null;\r\n const hasPartTag = Object.hasOwn(buildContext, \"partTag\");\r\n const fixedPartTag = hasPartTag ? normalizePartTag(buildContext.partTag) : 0;\r\n\r\n for (const occurrences of batches)\r\n {\r\n const first = occurrences[0];\r\n const extensionDna = this.CreateDna(first.dna);\r\n if (!extensionDna) continue;\r\n if (first.isInstanced) extensionDna.DisableAnimation();\r\n const transforms = occurrences.map(value => arrayValue(value.transform, identityMatrix()));\r\n updateLayoutBounds(rootFields, extensionDna, occurrences);\r\n const needsPlacementContainer = extensionDna.IsHullAnimated()\r\n || extensionDna.GetHullControllers().length !== 0;\r\n const placementFields = needsPlacementContainer\r\n ? occurrences.map(() => createLayoutContainerFields(first.name))\r\n : [];\r\n const placementAnimationOwners = needsPlacementContainer\r\n ? occurrences.map(() => null)\r\n : [];\r\n\r\n if (first.isInstanced && first.isShared)\r\n {\r\n const areas = this.CreateSharedLayoutAreas(document, extensionDna);\r\n if (areas.length !== 0)\r\n {\r\n if (!sharedRef)\r\n {\r\n sharedMeshes = [];\r\n sharedRef = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes: sharedMeshes\r\n });\r\n rootFields.effectChildren.push(sharedRef);\r\n }\r\n const instances = transforms.map((transform, sphereIndex) => document.AddNode(\r\n \"EveChildInstancedMeshInstance\",\r\n { transform, sphereIndex }\r\n ));\r\n sharedMeshes.push(document.AddNode(\"EveChildInstancedMesh\", {\r\n geometryPath: extensionDna.GetHullGeometryResPath(),\r\n castsShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n meshIndex: 0,\r\n areas,\r\n instances,\r\n ...(hasPartTag ? { partTags: transforms.map(() => fixedPartTag) } : {}),\r\n sofHullName: this.editorMode ? dna.GetHullNames()[0] : \"\",\r\n sofLocatorSetName: this.editorMode ? first.locatorSetName : \"\",\r\n display: true\r\n }));\r\n }\r\n }\r\n else if (first.isInstanced)\r\n {\r\n const instances = occurrences.map(value => packInstanceMatrix(value.transform, value.locator?.boneIndex));\r\n const built = this.CreateLayoutInstancedMesh(document, extensionDna, instances);\r\n if (built)\r\n {\r\n const childFields = {\r\n name: \"Instanced Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n mesh: built.ref,\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n decals: [],\r\n attachments: [],\r\n lights: []\r\n };\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n addChildMeshShaderOption(\r\n document,\r\n childFields,\r\n \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n \"SOIA_ENABLED\"\r\n );\r\n childFields.instanceTransforms = transforms;\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n layoutFields.objects.push(document.AddNode(\"EveChildMesh\", childFields));\r\n }\r\n }\r\n else\r\n {\r\n // Non-instanced placements own their locator sets and, when they own\r\n // damage locators, their own armour-damage shader; the parent merges\r\n // and poses them at runtime (Carbon EveSOF.cpp:3899-3908,3971-3972).\r\n const ownedLocatorSets = this.BuildHullLocalLocatorSets(document, extensionDna);\r\n const partArmorDamageShader = extensionDna.GetLocatorCount(\"damage\") > 0\r\n ? this.CreateArmorDamageEffect(document, extensionDna)\r\n : null;\r\n for (let occurrenceIndex = 0; occurrenceIndex < occurrences.length; occurrenceIndex++)\r\n {\r\n const occurrence = occurrences[occurrenceIndex];\r\n const rotation = quat.create();\r\n const translation = vec3.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(occurrence.transform, rotation, translation, ignoredScale);\r\n const childFields = {\r\n name: \"Hull\",\r\n ...(hasPartTag ? { partTag: fixedPartTag } : {}),\r\n ownedLocatorSets,\r\n armorDamageShader: partArmorDamageShader,\r\n mesh: this.CreateMesh(extensionDna, document),\r\n castShadow: extensionDna.CastShadow(),\r\n reflectionMode: extensionDna.GetReflectionMode(),\r\n minScreenSize: MIN_MESH_SCREEN_SIZE,\r\n lowestLodVisible: 0,\r\n staticTransform: true,\r\n decals: [],\r\n attachments: [],\r\n lights: [],\r\n animationUpdater: extensionDna.IsHullAnimated()\r\n ? document.AddNode(\"Tr2GrannyAnimation\", {})\r\n : null\r\n };\r\n if (!childFields.mesh) continue;\r\n this.SetupDecalSets(document, childFields, extensionDna);\r\n this.SetupAttachments(document, childFields, extensionDna, [identityMatrix()], false);\r\n childFields.scaling = arrayValue(occurrence.randomizedScaling, [1, 1, 1]);\r\n childFields.rotation = Array.from(rotation);\r\n childFields.translation = Array.from(translation);\r\n childFields.sofDna = this.editorMode ? extensionDna.GetDnaString() : \"\";\r\n childFields.sofParentHullName = this.editorMode ? dna.GetHullNames()[0] : \"\";\r\n childFields.sofLocatorSetName = this.editorMode ? first.locatorSetName : \"\";\r\n childFields.sofLocatorIndex = this.editorMode ? String(occurrence.locatorIndex) : \"\";\r\n const child = document.AddNode(\"EveChildMesh\", childFields);\r\n if (needsPlacementContainer)\r\n {\r\n placementFields[occurrenceIndex].objects.push(child);\r\n if (extensionDna.IsHullAnimated()) placementAnimationOwners[occurrenceIndex] = child;\r\n }\r\n else\r\n {\r\n layoutFields.objects.push(child);\r\n }\r\n }\r\n }\r\n\r\n if (first.isInstanced)\r\n {\r\n this.SetupAttachments(document, layoutFields, extensionDna, transforms, true);\r\n }\r\n for (let index = 0; index < occurrences.length; index++)\r\n {\r\n const target = needsPlacementContainer ? placementFields[index] : layoutFields;\r\n if (needsPlacementContainer)\r\n {\r\n this.SetupControllers(document, target, extensionDna, first.buildFlags);\r\n }\r\n this.SetupAudio(document, target, extensionDna, transforms[index]);\r\n }\r\n const hasChildEffects = extensionDna.UsingSof6()\r\n ? extensionDna.GetHullChildSets().length !== 0\r\n : extensionDna.GetHullChildren().length !== 0;\r\n if (hasChildEffects)\r\n {\r\n const fakeFields = {\r\n effectChildren: [],\r\n };\r\n this.SetupEffects(document, rootFields, fakeFields, extensionDna, transforms, first.buildFlags);\r\n if (needsPlacementContainer)\r\n {\r\n fakeFields.effectChildren.forEach((ref, index) => {\r\n placementFields[index % placementFields.length].objects.push(ref);\r\n });\r\n }\r\n }\r\n if (needsPlacementContainer)\r\n {\r\n for (let index = 0; index < placementFields.length; index++)\r\n {\r\n const fields = placementFields[index];\r\n if (!layoutContainerIsEmpty(fields))\r\n {\r\n const owner = placementAnimationOwners[index];\r\n if (owner) fields.animationOwner = owner;\r\n layoutFields.objects.push(document.AddNode(\"EveChildContainer\", fields));\r\n }\r\n }\r\n }\r\n this.SetupInstancedMeshes(document, rootFields, extensionDna, transforms);\r\n // Only instanced placements bake their locators into the root sets;\r\n // non-instanced children own theirs and the object merges them at\r\n // runtime (Carbon EveSOF.cpp:4171-4174).\r\n if (first.isInstanced)\r\n {\r\n this.SetupLocatorSets(\r\n document,\r\n rootFields,\r\n extensionDna,\r\n transforms,\r\n hasPartTag ? fixedPartTag : null\r\n );\r\n }\r\n }\r\n\r\n if (!targetFields && layoutFields.objects.length !== 0)\r\n {\r\n layoutFields.origin = 1;\r\n layoutFields.isPlacementRoot = true;\r\n rootFields.effectChildren.push(document.AddNode(\"EveChildContainer\", layoutFields));\r\n }\r\n return plan;\r\n }\r\n\r\n /** Creates typed effect-area records for EveChildInstancedMeshes.meshes. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateSharedLayoutAreas(document, dna)\r\n {\r\n const result = [];\r\n const types = [\r\n TriBatchType.TRIBATCHTYPE_OPAQUE,\r\n TriBatchType.TRIBATCHTYPE_DECAL,\r\n TriBatchType.TRIBATCHTYPE_TRANSPARENT,\r\n TriBatchType.TRIBATCHTYPE_ADDITIVE,\r\n TriBatchType.TRIBATCHTYPE_DISTORTION\r\n ];\r\n for (const batchType of types)\r\n {\r\n const source = dna.GetHullMeshAreas(batchType, 0);\r\n if (!source) continue;\r\n for (const area of source)\r\n {\r\n const shaderData = dna.GetGenericAreaShaderData(area.shader);\r\n if (!shaderData) continue;\r\n const built = buildMeshArea(\r\n document,\r\n dna,\r\n area,\r\n shaderData,\r\n batchType,\r\n 0,\r\n path => dna.ModifyTextureResPath(\r\n path,\r\n this.#resourceExists,\r\n this.allowFileCaching ? this.#existingFilesCache : null,\r\n ),\r\n this.alphaCutoutShadowsEnabled,\r\n false\r\n );\r\n addEffectShaderOption(document, built.effect, \"SPACE_OBJECT_INSTANCED_ATTACHMENT\", \"SOIA_SHARED\");\r\n result.push(document.AddNode(\"EveChildInstancedMeshArea\", {\r\n effect: built.effect,\r\n batchType: batchType === TriBatchType.TRIBATCHTYPE_DECAL\r\n ? TriBatchType.TRIBATCHTYPE_OPAQUE\r\n : batchType,\r\n areaIndex: Number(built.fields.index) >>> 0,\r\n areaCount: Number(built.fields.count) >>> 0,\r\n // Carbon EveSOF.cpp:434-440/4069-4075 copies the built area's\r\n // cutout/winding flags so instanced occluder raycasts classify\r\n // backfaces correctly.\r\n alphaCutout: !!built.fields.alphaCutout,\r\n reversed: !!built.fields.reversed\r\n }));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /** Converts a placement transform batch into Carbon's non-shared instanced mesh graph. */\r\n @carbon.method\r\n @impl.adapted\r\n CreateLayoutInstancedMesh(document, dna, instances)\r\n {\r\n if (!instances.length) return null;\r\n const ref = this.CreateMesh(dna, document);\r\n if (!ref) return null;\r\n const node = document.GetNode(ref.$ref);\r\n const bounds = translationBounds(instances);\r\n const instanceData = document.AddNode(\"Tr2RuntimeInstanceData\", {\r\n name: \"\",\r\n particleSystem: null,\r\n layout: SOF_INSTANCE_LAYOUT.map(value => ({ ...value })),\r\n rows: cloneValue(instances),\r\n explicitBoundingBox: true,\r\n aabbMin: bounds.min,\r\n aabbMax: bounds.max\r\n });\r\n node.kind = \"Tr2InstancedMesh\";\r\n Object.assign(node.fields, {\r\n boundsMethod: 2,\r\n instanceGeometryResPath: String(node.fields.geometryResPath ?? \"\"),\r\n instanceGeometryResource: instanceData,\r\n instanceMeshIndex: 0,\r\n minBounds: [0, 0, 0],\r\n maxBounds: [0, 0, 0],\r\n maxInstanceSize: maximumInstanceScale(instances)\r\n });\r\n return { ref, instanceData, bounds };\r\n }\r\n\r\n /** Emits Carbon's ship-only booster graph and booster locator records. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBoosters(document, rootFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n\r\n let alwaysOn = false;\r\n let hasTrails = false;\r\n let locatorIndex = 0;\r\n const items = [];\r\n const boosterLocatorRefs = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { alwaysOn: false, hasTrails: true, items: [] };\r\n alwaysOn = hull.alwaysOn === true;\r\n hasTrails ||= hull.hasTrails === true;\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: `locator_booster_${++locatorIndex}`,\r\n transform\r\n }));\r\n\r\n const ignoredScale = vec3.create();\r\n const rotation = quat.create();\r\n const position = vec3.create();\r\n decomposeCarbonMatrix(\r\n arrayValue(item.transform, identityMatrix()),\r\n rotation,\r\n position,\r\n ignoredScale\r\n );\r\n position[0] += hullOffset[0];\r\n position[1] += hullOffset[1];\r\n position[2] += hullOffset[2];\r\n boosterLocatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: [0, 0, 0],\r\n boneIndex: -1\r\n }));\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n functionality: arrayValue(item.functionality, [0, 1, 1, 1]),\r\n hasTrail: item.hasTrail !== false,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, \"boosters\", boosterLocatorRefs);\r\n\r\n const effect = createBoosterEffect(document, race, \"BOOSTER_LOD_HIGH\");\r\n const effectFar = createBoosterEffect(document, race, \"BOOSTER_LOD_LOW\");\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", {\r\n sprites: [],\r\n effect: glowEffect\r\n });\r\n\r\n let trails = null;\r\n if (hasTrails)\r\n {\r\n const trailEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/VolumetricTrails.fx\",\r\n options: [],\r\n constParameters: [\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailSize\",\r\n value: arrayValue(race.trailSize, [0, 0, 0, 0])\r\n }),\r\n document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"TrailColor\",\r\n value: arrayValue(race.trailColor, [0, 0, 0, 0])\r\n })\r\n ],\r\n parameters: [],\r\n resources: [],\r\n samplerOverrides: []\r\n });\r\n trails = document.AddNode(\"EveTrailsSet\", {\r\n // Carbon: trail->SetMeshResPath(g_volumetricTrailPath) (EveSOF.cpp:2720).\r\n geometryResPath: this.volumetricTrailPath,\r\n effect: trailEffect\r\n });\r\n }\r\n\r\n rootFields.boosters = document.AddNode(\"EveBoosterSet2\", {\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n alwaysOn,\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n trails,\r\n items\r\n });\r\n return rootFields.boosters;\r\n }\r\n\r\n /**\r\n * Emits the child-graph booster set into a placement container (Carbon\r\n * EveSOF::SetupChildBoosters, EveSOF.cpp:3049-3132): per-hull\r\n * driveName/effectPath/parameter/texture overrides with the\r\n * EveChildBoosterSet defaults as fallback, the LOD effect pair, one glow\r\n * sprite set, and every hull's items with the cumulative multi-hull\r\n * offset. Quad-renderer registration and PrepareResources are engine\r\n * realizations; the booster set node carries everything else.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetupChildBoosters(document, placementFields, dna)\r\n {\r\n if (dna.GetHullBoosterCount() === 0) return null;\r\n const race = dna.GetRaceBoosterData();\r\n if (!race) return null;\r\n const hull0 = dna.GetHullBoosterData(0) ?? {};\r\n\r\n // EveChildBoosterSet.DEFAULT_DRIVE_NAME / DEFAULT_EFFECT_PATH\r\n // (EveChildBoosterSet.h:94-96); SOF stays import-free of trinity.\r\n const driveName = hull0.driveName || \"ThrustMain\";\r\n const effectPath = hull0.effectPath ||\r\n \"res:/Graphics/Effect/Managed/Space/Booster/ChildBoosterVolumetric.fx\";\r\n const effect = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_HIGH\", effectPath, hull0.parameters, hull0.textures);\r\n const effectFar = createBoosterEffect(\r\n document, race, \"BOOSTER_LOD_LOW\", effectPath, hull0.parameters, hull0.textures);\r\n\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/Graphics/Effect/Managed/Space/Booster/BoosterGlowAnimated.fx\",\r\n options: [],\r\n constParameters: [],\r\n parameters: [],\r\n resources: [\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"NoiseMap\",\r\n resourcePath: \"res:/Texture/global/noise.dds\"\r\n }),\r\n document.AddNode(\"TriTextureParameter\", {\r\n name: \"DiffuseMap\",\r\n resourcePath: \"res:/Texture/Particle/whitesharp.dds\"\r\n })\r\n ],\r\n samplerOverrides: []\r\n });\r\n const glows = document.AddNode(\"EveSpriteSet\", { sprites: [], effect: glowEffect });\r\n\r\n const items = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n const hull = dna.GetHullBoosterData(hullIndex) ?? { items: [] };\r\n for (const item of hull.items ?? [])\r\n {\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n items.push(document.AddNode(\"EveBoosterSet2Item\", {\r\n transform,\r\n atlasIndex0: Number(item.atlasIndex0 ?? 0) >>> 0,\r\n atlasIndex1: Number(item.atlasIndex1 ?? 0) >>> 0,\r\n lightScale: Number(item.lightScale ?? 1)\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n\r\n const ref = document.AddNode(\"EveChildBoosterSet\", {\r\n name: \"Boosters\",\r\n driveName,\r\n glowScale: Number(race.glowScale ?? 1),\r\n glowColor: arrayValue(race.glowColor, [0, 0, 0, 0]),\r\n warpGlowColor: arrayValue(race.warpGlowColor, [0, 0, 0, 0]),\r\n symHaloScale: Number(race.symHaloScale ?? 1),\r\n haloScaleX: Number(race.haloScaleX ?? 1),\r\n haloScaleY: Number(race.haloScaleY ?? 1),\r\n haloColor: arrayValue(race.haloColor, [0, 0, 0, 0]),\r\n warpHaloColor: arrayValue(race.warpHaloColor, [0, 0, 0, 0]),\r\n lightOffset: Number(race.lightOffset ?? 0),\r\n lightFlickerAmplitude: Number(race.lightFlickerAmplitude ?? 0),\r\n lightFlickerFrequency: Number(race.lightFlickerFrequency ?? 0),\r\n lightRadius: Number(race.lightRadius ?? 0),\r\n lightColor: arrayValue(race.lightColor, [0, 0, 0, 0]),\r\n lightWarpRadius: Number(race.lightWarpRadius ?? 0),\r\n lightWarpColor: arrayValue(race.lightWarpColor, [0, 0, 0, 0]),\r\n effect,\r\n effectFar,\r\n glows,\r\n items\r\n });\r\n placementFields.objects.push(ref);\r\n return ref;\r\n }\r\n\r\n /**\r\n * Normalizes a controller or model-curve resource, retaining resolver-free\r\n * references and enforcing the Carbon interface required by its role.\r\n */\r\n #resolveObjectResource(path, role)\r\n {\r\n if (!this.#objectResourceResolver)\r\n {\r\n // Controllers have Carbon's own deferred node: Tr2ControllerReference\r\n // persists the path and loads the controller at runtime\r\n // (Tr2ControllerReference_Blue.cpp:16-23).\r\n if (role === \"controller\")\r\n {\r\n return {\r\n kind: \"Tr2ControllerReference\",\r\n reference: true,\r\n fields: { path: String(path ?? \"\") },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n // Model curves have no Carbon reference node - Carbon inline-loads\r\n // them only because its blocking BeResMan made that free; nothing\r\n // about the loaded curve feeds back into composition. They defer\r\n // through the CarbonEngineJS-original CjsExternalRef, carrying the\r\n // interface gate for the loader to enforce at splice time.\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n return {\r\n kind: \"CjsExternalRef\",\r\n reference: true,\r\n fields: {\r\n resPath: String(path ?? \"\"),\r\n expects: gate ? gate.interfaceName : \"\"\r\n },\r\n raw: {},\r\n fragment: null,\r\n rootRef: null\r\n };\r\n }\r\n let descriptor = this.#objectResourceResolver(String(path ?? \"\"), { role });\r\n if (descriptor && typeof descriptor.then === \"function\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must be synchronous\");\r\n }\r\n if (descriptor === null || descriptor === undefined)\r\n {\r\n // Carbon: controllers log \"controller resource file %s is invalid!\"\r\n // (EveSOF.cpp:2028-2031); model curves skip silently (1672-1690).\r\n this.#buildDiagnostics.push({\r\n code: \"unresolved-object-resource\",\r\n reason: \"not-resolved\",\r\n role,\r\n path: String(path ?? \"\")\r\n });\r\n return null;\r\n }\r\n if (!descriptor || typeof descriptor !== \"object\")\r\n {\r\n throw new TypeError(\"EveSOF object resource resolver must return an object descriptor or null\");\r\n }\r\n if (IsModelValuesRoot(descriptor)) descriptor = { values: descriptor };\r\n else if (IsCarbonDocument(descriptor)) descriptor = { document: descriptor };\r\n let kind = descriptor.kind;\r\n let fragment = null;\r\n let values = null;\r\n let rootRef = null;\r\n if (descriptor.document && descriptor.values)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor cannot contain both document and values\");\r\n }\r\n if (descriptor.document)\r\n {\r\n fragment = descriptor.document;\r\n rootRef = descriptor.root ?? fragment.roots?.[0]?.ref ?? null;\r\n if (!rootRef || !Number.isInteger(Number(rootRef.$ref)))\r\n {\r\n throw new TypeError(\"EveSOF object document descriptor requires a valid root ref\");\r\n }\r\n kind = fragment.nodes?.find(node => Number(node.id) === Number(rootRef.$ref))?.kind;\r\n }\r\n else if (descriptor.values !== undefined)\r\n {\r\n if (!IsModelValuesRoot(descriptor.values))\r\n {\r\n throw new TypeError(\"EveSOF object values descriptor requires a self-describing root with _type\");\r\n }\r\n values = descriptor.values;\r\n kind = values._type;\r\n }\r\n if (typeof kind !== \"string\" || kind.length === 0)\r\n {\r\n throw new TypeError(\"EveSOF object resource descriptor requires a root kind\");\r\n }\r\n // Carbon loads these roles through typed LoadObject calls, so a root that\r\n // does not implement the role's interface never attaches: controllers log\r\n // and skip (EveSOF.cpp:2024-2031); model curves skip (1672-1690).\r\n const gate = OBJECT_RESOURCE_ROLE_GATES[role];\r\n if (gate && !gate.kinds.has(kind) && !descriptorClaimsInterface(descriptor, gate.interfaceName))\r\n {\r\n this.#buildDiagnostics.push({\r\n code: \"object-resource-wrong-type\",\r\n role,\r\n path: String(path ?? \"\"),\r\n kind,\r\n expected: gate.interfaceName\r\n });\r\n return null;\r\n }\r\n return {\r\n kind,\r\n fields: descriptor.fields && typeof descriptor.fields === \"object\" ? descriptor.fields : {},\r\n raw: descriptor.raw && typeof descriptor.raw === \"object\" ? descriptor.raw : {},\r\n fragment,\r\n values,\r\n rootRef\r\n };\r\n }\r\n\r\n /**\r\n * Imports a resolved values or document root into the builder, or allocates a\r\n * standalone node, then overlays any raw fields.\r\n */\r\n #addObjectResource(document, descriptor)\r\n {\r\n if (!descriptor.fragment && !descriptor.values)\r\n {\r\n return document.AddNode(descriptor.kind, cloneFields(descriptor.fields), cloneValue(descriptor.raw));\r\n }\r\n const ref = descriptor.values\r\n ? document.ImportValuesRoot(descriptor.values)\r\n : document.ImportRoot(descriptor.fragment, descriptor.rootRef);\r\n if (descriptor.raw && Object.keys(descriptor.raw).length)\r\n {\r\n const node = document.GetNode(ref.$ref);\r\n node.raw = { ...(node.raw ?? {}), ...cloneValue(descriptor.raw) };\r\n }\r\n return ref;\r\n }\r\n\r\n /** Emits the currently maintained Carbon attachment stages in source order. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupAttachments(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n // Carbon caches this effect on the EveSOF instance. Document-local sharing\r\n // avoids cross-build graph identity; do not widen it without an operational\r\n // consumer that requires mutable identity across builds.\r\n const sharedSpriteEffect = { ref: null };\r\n this.SetupSpriteSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupSpotlightSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupPlaneSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n this.SetupSpriteLineSets(document, rootFields, dna, offsets, isInstancedPlacement, sharedSpriteEffect);\r\n this.SetupHazeSets(document, rootFields, dna, offsets, isInstancedPlacement);\r\n // Carbon gates banners on the owner's root object casting to EveSpaceObject2;\r\n // only space-object roots carry the externalParameters banner surface.\r\n if (Array.isArray(rootFields.externalParameters))\r\n {\r\n if (dna.UsingSof6()) this.SetupBannerSets(document, rootFields, dna, offsets);\r\n else this.SetupBanners(document, rootFields, dna, offsets);\r\n }\r\n this.SetupLights(document, rootFields, dna, offsets);\r\n }\r\n\r\n /** Emits visible EveSpriteSet attachments and their SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const sprites = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = Array.from(sourceColor, value => Number(value) * Number(item.intensity ?? 1));\r\n const position = vec3.transformMat4(\r\n vec3.create(),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n arrayValue(offset, identityMatrix())\r\n );\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n sprites.push(document.AddNode(\"EveSpriteSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n falloff: Number(item.falloff ?? 0),\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n color\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + position[0],\r\n Number(item.light.translation?.[1] ?? 0) + position[1],\r\n Number(item.light.translation?.[2] ?? 0) + position[2]\r\n ],\r\n rotation: arrayValue(item.light.rotation, [0, 0, 0, 1]),\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteSet\", {\r\n effect: sharedEffect.ref,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n sprites,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon spotlight geometry, effects, and authored SOF6 light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpotlightSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpotlightSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n\r\n const coneEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightconepool.fx\",\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"zOffset\",\r\n value: Array(4).fill(Number(set.zOffset ?? 0))\r\n })],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.coneTextureResPath ?? \"\")\r\n })]\r\n });\r\n const glowEffect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/spotlightglowpool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: [document.AddNode(\"TriTextureParameter\", {\r\n name: \"TextureMap\",\r\n resourcePath: String(set.glowTextureResPath ?? \"\")\r\n })]\r\n });\r\n const spotlightItems = [];\r\n const lights = [];\r\n let index = 0;\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n let coneColor;\r\n let flareColor;\r\n let spriteColor;\r\n let lightColor;\r\n if (dna.UsingSof6())\r\n {\r\n lightColor = dna.GetColorSet()[item.colorType];\r\n if (!lightColor) continue;\r\n coneColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.75, 0.5), item.coneIntensity);\r\n flareColor = multiplyColor(modifyColor(lightColor, item.saturation, 1), item.flareIntensity);\r\n spriteColor = multiplyColor(modifyColor(lightColor, item.saturation * 0.9, 0.75), item.spriteIntensity);\r\n }\r\n else\r\n {\r\n const faction = dna.GetFactionSpotlightSetData(item.groupIndex);\r\n if (!faction) continue;\r\n coneColor = multiplyColor(faction.coneColor, item.coneIntensity);\r\n flareColor = multiplyColor(faction.flareColor, item.flareIntensity);\r\n spriteColor = multiplyColor(faction.spriteColor, item.spriteIntensity);\r\n lightColor = faction.coneColor;\r\n }\r\n const selectorFields = dna.UsingSof6()\r\n ? { _colorType: Number(item.colorType ?? 0) }\r\n : {};\r\n\r\n const transform = arrayValue(item.transform, identityMatrix());\r\n mat4.multiply(\r\n transform,\r\n mat4.fromTranslation(mat4.create(), hullOffset),\r\n transform\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n\r\n spotlightItems.push(document.AddNode(\"EveSpotlightSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n coneColor,\r\n flareColor,\r\n spriteColor,\r\n spriteScale: arrayValue(item.spriteScale, [1, 1, 1]),\r\n transform\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const scaling = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, scaling);\r\n const scale = Array.from(scaling, Math.abs);\r\n const angle = scale[2] > 0\r\n ? Math.atan(Math.max(scale[0], scale[1]) / (2 * scale[2])) * 180 / Math.PI\r\n : 0;\r\n const localPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(item.light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(localPosition, localPosition, position);\r\n lights.push(document.AddNode(\"EveSpotlightLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(localPosition),\r\n rotation: Array.from(rotation),\r\n color: saturateColor(lightColor, item.saturation * item.light.saturation),\r\n innerAngle: Number(item.light.innerAngleMultiplier ?? 0.5) * angle,\r\n outerAngle: Number(item.light.outerAngleMultiplier ?? 1) * angle,\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1) * scale[2],\r\n radius: Number(item.light.outerScaleMultiplier ?? 1) * scale[2],\r\n brightness: Number(item.light.intensity ?? 1) * Number(item.coneIntensity ?? 0),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n texturePath: String(item.light.lightProfilePath ?? \"\"),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\"),\r\n boosterGainInfluence: item.boosterGainInfluence === true\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveSpotlightSet\", {\r\n coneEffect,\r\n glowEffect,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spotlightItems\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon plane-set effects, items, and authored SOF6 lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupPlaneSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullPlaneSets(hullIndex))\r\n {\r\n if (dna.UsingSof6() && !dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n const skinned = set.skinned === true && !isInstancedPlacement;\r\n const resources = [];\r\n let imageMap = null;\r\n let pickBufferID = 0;\r\n if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/inspacevideos\"\r\n });\r\n resources.push(imageMap);\r\n }\r\n else if (set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO)\r\n {\r\n imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"dynamic:/hangarvideos\"\r\n });\r\n resources.push(imageMap);\r\n pickBufferID = 100;\r\n }\r\n const layerMap1 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer1Map\",\r\n resourcePath: String(set.layer1MapResPath ?? \"\")\r\n });\r\n const layerMap2 = document.AddNode(\"TriTextureParameter\", {\r\n name: \"Layer2Map\",\r\n resourcePath: String(set.layer2MapResPath ?? \"\")\r\n });\r\n const maskMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"MaskMap\",\r\n resourcePath: String(set.maskMapResPath ?? \"\")\r\n });\r\n resources.push(layerMap1, layerMap2, maskMap);\r\n const planeData = [\r\n set.usage === EveSOFDataHullPlaneSet.Usage.USAGE_HAZE ? 1 : 0,\r\n Number(set.atlasSize ?? 1),\r\n Math.floor(Number(set.atlasAspectRatio?.[0] ?? 1)),\r\n Math.floor(Number(set.atlasAspectRatio?.[1] ?? 1))\r\n ];\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: getPlaneSetEffectPath(set.usage, skinned),\r\n constParameters: [document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name: \"PlaneData\",\r\n value: planeData\r\n })],\r\n parameters: [],\r\n resources\r\n });\r\n\r\n const planes = [];\r\n const lights = [];\r\n let usesLightParameters = false;\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n let color;\r\n let selectorFields = {};\r\n if (dna.UsingSof6())\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n color = saturateColor(multiplyColor(sourceColor, item.intensity), item.saturation);\r\n selectorFields = { _colorType: Number(item.colorType ?? 0) };\r\n }\r\n else\r\n {\r\n color = arrayValue(item.color, [1, 1, 1, 1]);\r\n const faction = dna.GetFactionPlaneSetData(item.groupIndex);\r\n if (faction) color = arrayValue(faction.color, [0, 0, 0, 0]);\r\n }\r\n\r\n const blinkData = [\r\n Number(item.rate ?? 1),\r\n Number(item.phase ?? 0),\r\n Number(item.dutyCycle ?? 1),\r\n Number(item.blinkMode ?? 0)\r\n ];\r\n planes.push(document.AddNode(\"EvePlaneSetItem\", {\r\n ...selectorFields,\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n color,\r\n layer1Scroll: arrayValue(item.layer1Scroll, [0, 0, 0, 0]),\r\n layer1Transform: arrayValue(item.layer1Transform, [0, 0, 0, 0]),\r\n layer2Scroll: arrayValue(item.layer2Scroll, [0, 0, 0, 0]),\r\n layer2Transform: arrayValue(item.layer2Transform, [0, 0, 0, 0]),\r\n maskAtlasID: Number(item.maskMapAtlasIndex ?? 0) >>> 0,\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n blinkData\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.lights.length) usesLightParameters = true;\r\n for (const light of item.lights)\r\n {\r\n const maxScale = Math.max(...arrayValue(item.scaling, [1, 1, 1]));\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n lights.push(document.AddNode(\"EvePlaneLight\", {\r\n ...selectorFields,\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(color, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n lightProfilePath: String(light.lightProfilePath ?? \"\"),\r\n fadeType: Number(item.blinkMode ?? 0),\r\n blinkPhase: Number(item.phase ?? 0),\r\n blinkRate: Number(item.rate ?? 1)\r\n }));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EvePlaneSet\", {\r\n effect,\r\n lights,\r\n pickBufferID,\r\n planes,\r\n skinned,\r\n imageMapParameter: usesLightParameters ? imageMap : null,\r\n layerMap1Parameter: usesLightParameters ? layerMap1 : null,\r\n layerMap2Parameter: usesLightParameters ? layerMap2 : null,\r\n maskMapParameter: usesLightParameters ? maskMap : null\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon sprite-line geometry and authored SOF6 per-sprite lights. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupSpriteLineSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false, sharedEffect = { ref: null })\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullSpriteLineSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n if (!sharedEffect.ref)\r\n {\r\n sharedEffect.ref = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: \"res:/graphics/effect/managed/space/spaceobject/fx/blinkinglightspool.fx\",\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n });\r\n }\r\n\r\n const spriteLines = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.intensity);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n const line = {\r\n _colorType: Number(item.colorType ?? 0),\r\n blinkPhase: Number(item.blinkPhase ?? 0),\r\n blinkPhaseShift: Number(item.blinkPhaseShift ?? 0),\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n color,\r\n falloff: Number(item.falloff ?? 0),\r\n isCircle: item.isCircle === true,\r\n maxScale: Number(item.maxScale ?? 10),\r\n minScale: Number(item.minScale ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n spacing: Number(item.spacing ?? 1)\r\n };\r\n spriteLines.push(document.AddNode(\"EveSpriteLineSetItem\", line));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n if (item.light)\r\n {\r\n const lightColor = saturateColor(color, item.light.saturation);\r\n let lightRotation = arrayValue(item.light.rotation, [0, 0, 0, 1]);\r\n const positions = getSpriteLinePositions(line);\r\n for (let spriteIndex = 0; spriteIndex < positions.length; spriteIndex++)\r\n {\r\n lightRotation = Array.from(quat.normalize(\r\n quat.create(),\r\n quat.multiply(quat.create(), line.rotation, lightRotation)\r\n ));\r\n lights.push(document.AddNode(\"EveSpriteLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: [\r\n Number(item.light.translation?.[0] ?? 0) + positions[spriteIndex][0] + line.position[0],\r\n Number(item.light.translation?.[1] ?? 0) + positions[spriteIndex][1] + line.position[1],\r\n Number(item.light.translation?.[2] ?? 0) + positions[spriteIndex][2] + line.position[2]\r\n ],\r\n rotation: lightRotation,\r\n color: lightColor,\r\n radius: Number(item.light.outerScaleMultiplier ?? 2),\r\n innerRadius: Number(item.light.innerScaleMultiplier ?? 1),\r\n brightness: Number(item.light.intensity ?? 1),\r\n noiseAmplitude: Number(item.light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? 0),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n blinkPhase: Number(item.blinkPhase ?? 0) + Number(item.blinkPhaseShift ?? 0) * spriteIndex,\r\n blinkRate: Number(item.blinkRate ?? 0.1),\r\n minScale: Number(item.minScale ?? 1),\r\n maxScale: Number(item.maxScale ?? 10),\r\n index,\r\n lightProfilePath: String(item.light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n rootFields.attachments.push(document.AddNode(\"EveSpriteLineSet\", {\r\n effect: sharedEffect.ref,\r\n lights,\r\n skinned: set.skinned === true && !isInstancedPlacement,\r\n spriteLines\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon haze geometry and authored SOF6 point-light descriptors. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupHazeSets(document, rootFields, dna, offsets = [identityMatrix()], isInstancedPlacement = false)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n // Carbon keeps three haze effects on the EveSOF instance. The document\r\n // contract shares by path only inside this build, matching its identity\r\n // boundary while the effects remain immutable.\r\n const effects = new Map();\r\n const getEffect = (path) =>\r\n {\r\n if (!path) return null;\r\n if (!effects.has(path))\r\n {\r\n effects.set(path, document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: path,\r\n constParameters: [],\r\n parameters: [],\r\n resources: []\r\n }));\r\n }\r\n return effects.get(path);\r\n };\r\n\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullHazeSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup)) continue;\r\n let effectPath = \"\";\r\n if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_SPHERICAL)\r\n {\r\n effectPath = set.skinned === true && !isInstancedPlacement\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_hazespherical.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/hazespherical.fx\";\r\n }\r\n else if (set.hazeType === EveSOFDataHullHazeSet.HazeType.TYPE_HALFSPHERICAL)\r\n {\r\n effectPath = \"res:/graphics/effect/managed/space/spaceobject/fx/hazehalfspherical.fx\";\r\n }\r\n\r\n const hazes = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const offset of offsets)\r\n {\r\n for (const item of set.items)\r\n {\r\n const sourceColor = dna.GetColorSet()[item.colorType];\r\n if (!sourceColor) continue;\r\n let color = multiplyColor(sourceColor, item.hazeBrightness);\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n if (dna.UsingSof6()) color = saturateColor(color, item.saturation);\r\n\r\n hazes.push(document.AddNode(\"EveHazeSetItem\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n color,\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(item.scaling, [1, 1, 1]),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n position: Array.from(position),\r\n hazeData: [\r\n Number(item.hazeFalloff ?? 6),\r\n Number(item.sourceSize ?? 0.2),\r\n Number(item.sourceBrightness ?? 2),\r\n item.boosterGainInfluence === true ? 1 : 0\r\n ]\r\n }));\r\n\r\n if (dna.UsingSof6())\r\n {\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n for (const light of item.lights)\r\n {\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveHazeSetLight\", {\r\n _colorType: Number(item.colorType ?? 0),\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: saturateColor(sourceColor, light.saturation),\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n index,\r\n boosterGainInfluence: item.boosterGainInfluence === true,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n\r\n rootFields.attachments.push(document.AddNode(\"EveHazeSet\", {\r\n effect: getEffect(effectPath),\r\n display: true,\r\n hazes,\r\n lights\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's legacy per-item-visible banner groups. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBanners(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBanners(hullIndex))\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of set.items)\r\n {\r\n if (!dna.IsInVisibilityData(value.visibilityGroup)) continue;\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.bannerLight;\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const radius = Number(light.radiusMultiplier ?? 1) * Math.max(scaling[0], scaling[1], scaling[2]);\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: item.position,\r\n rotation: [0, 0, 0, 1],\r\n color: [0, 0, 0, 0],\r\n radius,\r\n innerRadius: radius * Number(light.innerRadiusMultiplier ?? 0.3),\r\n brightness: Number(light.brightness ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index: index++,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: \"\"\r\n }));\r\n }\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(set.usage), banners, lights, EveSOFDataHullBanner.Usage._USAGE_COUNT);\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon's SOF6 visibility-grouped banner sets. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupBannerSets(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const set of dna.GetHullBannerSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(set.visibilityGroup) || set.bannerTypes.size === 0) continue;\r\n for (const [usage, values] of set.bannerTypes)\r\n {\r\n const banners = [];\r\n const lights = [];\r\n let index = 0;\r\n for (const value of values)\r\n {\r\n for (const offset of offsets)\r\n {\r\n const item = addBannerItem(document, value.item, hullOffset, offset);\r\n banners.push(item.ref);\r\n const light = value.light;\r\n if (light)\r\n {\r\n const scaling = arrayValue(value.item.scaling, [1, 1, 1]);\r\n const maxScale = Math.max(scaling[0], scaling[1], scaling[2]);\r\n const lightPosition = vec3.transformQuat(\r\n vec3.create(),\r\n arrayValue(light.translation, [0, 0, 0]),\r\n item.rotation\r\n );\r\n vec3.add(lightPosition, lightPosition, item.position);\r\n const lightRotation = quat.normalize(\r\n quat.create(),\r\n quat.multiply(\r\n quat.create(),\r\n item.rotation,\r\n arrayValue(light.rotation, [0, 0, 0, 1])\r\n )\r\n );\r\n lights.push(document.AddNode(\"EveBannerLight\", {\r\n lightData: {\r\n position: Array.from(lightPosition),\r\n rotation: Array.from(lightRotation),\r\n color: [0, 0, 0, 0],\r\n radius: Number(light.outerScaleMultiplier ?? 2) * maxScale,\r\n innerRadius: Number(light.innerScaleMultiplier ?? 1) * maxScale,\r\n brightness: Number(light.intensity ?? 1),\r\n noiseAmplitude: Number(light.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(light.noiseFrequency ?? 1),\r\n noiseOctaves: Number(light.noiseOctaves ?? 1),\r\n boneIndex: -1,\r\n flags: 1,\r\n startTime: this.buildTime,\r\n castsShadows: 0,\r\n isVolumetric: false\r\n },\r\n saturation: Number(light.saturation ?? 1),\r\n index,\r\n boneMatrix: identityMatrix(),\r\n lightProfilePath: String(light.lightProfilePath ?? \"\")\r\n }));\r\n }\r\n }\r\n index++;\r\n }\r\n if (banners.length)\r\n {\r\n addBannerSet(document, rootFields, dna, Number(usage), banners, lights, EveSOFDataHullBannerSetItem.Usage._USAGE_COUNT);\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Emits Carbon hull lights with faction visibility, color, and multi-hull transforms. */\r\n @carbon.method\r\n @impl.adapted\r\n SetupLights(document, rootFields, dna, offsets = [identityMatrix()])\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const lightSet of dna.GetHullLightSets(hullIndex))\r\n {\r\n if (!dna.IsInVisibilityData(lightSet.visibilityGroup)) continue;\r\n for (const item of lightSet.items)\r\n {\r\n const lightKind = getLightKind(item.type);\r\n const color = dna.GetColorSet()[item.lightColor];\r\n if (!lightKind || !color) continue;\r\n\r\n for (const offset of offsets)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(item.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(item.position?.[0] ?? 0) + hullOffset[0],\r\n Number(item.position?.[1] ?? 0) + hullOffset[1],\r\n Number(item.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n\r\n // Flattened emission (2026-07-23 LightData flatten decision): the\r\n // Tr2 light classes persist the Blue-mapped LightData members as\r\n // flat fields, so hull lights emit Carbon's flat Blue shape. The\r\n // packed-set light items above still emit nested lightData bags\r\n // until their classes migrate. startTime carries the injected\r\n // buildTime, matching Carbon's GetCurrentTime() stamp at build.\r\n const lightFields = {\r\n ...(lightKind.className !== \"Tr2TexturedPointLight\"\r\n ? { _lightColor: Number(item.lightColor ?? 0) }\r\n : {}),\r\n startTime: this.buildTime,\r\n flags: Number(item.flags ?? 1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n boneIndex: Number(item.boneIndex ?? -1),\r\n radius: Number(item.radius ?? 0),\r\n innerRadius: Number(item.innerRadius ?? 0),\r\n color: Array.from(color),\r\n brightness: Number(item.brightness ?? 0),\r\n noiseAmplitude: Number(item.noiseAmplitude ?? 0),\r\n noiseFrequency: Number(item.noiseFrequency ?? 1),\r\n noiseOctaves: Number(item.noiseOctaves ?? 1),\r\n castsShadows: 0,\r\n isVolumetric: false\r\n };\r\n if (lightKind.className === \"Tr2SpotLight\")\r\n {\r\n lightFields.innerAngle = Number(item.innerAngle ?? 0);\r\n lightFields.outerAngle = Number(item.outerAngle ?? 0);\r\n }\r\n if (lightKind.className === \"Tr2TexturedPointLight\")\r\n {\r\n lightFields.texturePath = String(item.texturePath ?? \"\");\r\n }\r\n rootFields.lights.push(document.AddNode(lightKind.className, {\r\n ...lightFields,\r\n type: lightKind.type,\r\n ...(lightKind.isDynamic ? { isDynamic: true } : {})\r\n }));\r\n }\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /** Adds turret and last-hull audio locators with Carbon multi-hull offsets. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocators(document, rootFields, dna)\r\n {\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const locator of dna.GetHullTurretLocators(hullIndex))\r\n {\r\n const transform = arrayValue(locator.transform, identityMatrix());\r\n transform[12] += hullOffset[0];\r\n transform[13] += hullOffset[1];\r\n transform[14] += hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: locator.name,\r\n transform\r\n }));\r\n }\r\n const audioPosition = dna.GetHullAudioPosition(hullIndex);\r\n if (audioPosition)\r\n {\r\n const transform = identityMatrix();\r\n transform[12] = Number(audioPosition[0] ?? 0) + hullOffset[0];\r\n transform[13] = Number(audioPosition[1] ?? 0) + hullOffset[1];\r\n transform[14] = Number(audioPosition[2] ?? 0) + hullOffset[2];\r\n rootFields.locators.push(document.AddNode(\"EveLocator2\", {\r\n name: \"locator_audio_booster\",\r\n transform\r\n }));\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Builds the armour-damage shader effect node, or null when the DNA lacks\r\n * damage data (Carbon EveSOF.cpp:2579-2603 CreateArmorDamageEffect; the\r\n * ArmorDamageEffectCache keyed on race+animated is a performance follow-up).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateArmorDamageEffect(document, dna)\r\n {\r\n const damage = dna.GetGenericDamageData();\r\n const raceDamage = dna.GetRaceDamageData();\r\n if (!damage || !raceDamage) return null;\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(damage.armorShader),\r\n constParameters: effectParameters(document, raceDamage.armorDamageParameters),\r\n parameters: [],\r\n resources: effectResources(document, raceDamage.armorDamageTextures)\r\n });\r\n }\r\n\r\n /**\r\n * Emits the hull's locator sets UNTRANSFORMED - only the multi-hull offset\r\n * applied - for a placement child to own, so the object merges them at\r\n * runtime through the child's live transform and skeleton (Carbon\r\n * EveSOF.cpp:3384-3432 BuildHullLocalLocatorSets). Same-name sets across\r\n * hulls merge into one node; bone indices stay authored because they\r\n * address the CHILD's skeleton.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n BuildHullLocalLocatorSets(document, dna)\r\n {\r\n const bySetName = new Map();\r\n const result = [];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n if (!locators.length) continue;\r\n let target = bySetName.get(name);\r\n if (!target)\r\n {\r\n target = [];\r\n bySetName.set(name, target);\r\n result.push(document.AddNode(\"EveLocatorSets\", { name, locators: target }));\r\n }\r\n for (const locator of locators)\r\n {\r\n target.push(document.AddNode(\"Locator\", {\r\n position: [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n direction: arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1)\r\n }));\r\n }\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n return result;\r\n }\r\n\r\n /** Merges same-name locator sets across all hulls in Carbon map order. */\r\n @carbon.method\r\n @impl.implemented\r\n SetupLocatorSets(document, rootFields, dna, offsets = [identityMatrix()], partTag = null)\r\n {\r\n const transforms = Array.isArray(offsets) && offsets.length !== 0\r\n ? offsets\r\n : [identityMatrix()];\r\n const hullOffset = [0, 0, 0];\r\n for (let hullIndex = 0; hullIndex < dna.GetMultiHullCount(); hullIndex++)\r\n {\r\n for (const name of dna.GetHullLocatorSetNames(hullIndex))\r\n {\r\n const locators = dna.GetHullLocators(name, hullIndex) ?? [];\r\n const locatorRefs = [];\r\n for (const offset of transforms)\r\n {\r\n for (const locator of locators)\r\n {\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(locator.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(locator.position?.[0] ?? 0) + hullOffset[0],\r\n Number(locator.position?.[1] ?? 0) + hullOffset[1],\r\n Number(locator.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n const composed = mat4.multiply(\r\n mat4.create(),\r\n arrayValue(offset, identityMatrix()),\r\n transform\r\n );\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(composed, rotation, position, ignoredScale);\r\n locatorRefs.push(document.AddNode(\"Locator\", {\r\n position: Array.from(position),\r\n direction: Array.from(rotation),\r\n scale: arrayValue(locator.scaling, [1, 1, 1]),\r\n boneIndex: Number(locator.boneIndex ?? -1),\r\n ...(partTag === null ? {} : { partTag: normalizePartTag(partTag) })\r\n }));\r\n }\r\n }\r\n mergeDocumentLocatorSet(document, rootFields, name, locatorRefs);\r\n }\r\n addOffset(hullOffset, dna.GetHullNextSubsystemOffset(hullIndex));\r\n }\r\n }\r\n\r\n /**\r\n * Overwrites turret shader constants or vector parameters with the\r\n * primary-area material selected by a faction catalog entry.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromFaction(turretSet, factionName)\r\n {\r\n const factionData = this.dataMgr.GetFactionData(factionName);\r\n if (!factionData) return;\r\n const genericData = this.dataMgr.GetGenericData();\r\n turretSet.ApplySofTurretMaterial(parameterName => findTurretFactionParameter(\r\n this.dataMgr,\r\n genericData,\r\n factionData,\r\n parameterName\r\n ));\r\n }\r\n\r\n /**\r\n * Parses the parent DNA and applies its faction turret values to matching\r\n * shader constants or vector parameters.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetupTurretMaterialFromDNA(turretSet, dnaString)\r\n {\r\n const dna = this.CreateDna(dnaString);\r\n if (!dna) return;\r\n turretSet.ApplySofTurretMaterial(parameterName => dna.GetFactionTurretParameters(parameterName));\r\n }\r\n\r\n}\r\n\r\nfunction findTurretFactionParameter(dataMgr, genericData, factionData, parameterName)\r\n{\r\n const prefixes = genericData?.materialPrefixes ?? [];\r\n const info = new EveSOFUtilsParameterName(prefixes, parameterName);\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialIndex = info.GetMaterialIdx();\r\n const usageIndex = Number(\r\n factionData.materialUsageList?.[materialIndex] ?? materialIndex\r\n );\r\n info.ChangeMaterialIdx(genericData, usageIndex);\r\n }\r\n return findTurretAreaParameter(\r\n dataMgr,\r\n factionData.colorData?.colors ?? [],\r\n factionData.areaMaterials,\r\n EveSOFDataArea.AreaType.TYPE_PRIMARY,\r\n info\r\n );\r\n}\r\n\r\nfunction findTurretAreaParameter(dataMgr, colors, areaMaterials, areaType, info)\r\n{\r\n if (!areaMaterials) return null;\r\n if (info.IsMaterialIdxValid())\r\n {\r\n const materialName = areaMaterials.materialNames?.get(\r\n `${areaType}:${info.GetMaterialIdx()}`\r\n );\r\n const value = dataMgr.GetMaterialData(materialName)?.parameters?.get(info.GetShortName());\r\n if (value) return value;\r\n }\r\n else\r\n {\r\n const colorType = areaMaterials.glowColor?.get(`${areaType}:${info.GetFullName()}`);\r\n if (colorType !== undefined) return colors[colorType] ?? null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction arrayValue(value, fallback)\r\n{\r\n return value ? Array.from(value) : fallback.slice();\r\n}\r\n\r\nfunction composeChildPlacement(source, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n arrayValue(source.translation, [0, 0, 0]),\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n translation: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n lowestLodVisible: Number(source.lowestLodVisible ?? 0),\r\n origin: 1\r\n };\r\n}\r\n\r\nfunction createInheritProperties(document, dna)\r\n{\r\n const colorSet = dna.GetColorSet();\r\n const fields = {};\r\n for (let index = 0; index < INHERIT_COLOR_PROPERTIES.length; index++)\r\n {\r\n fields[INHERIT_COLOR_PROPERTIES[index]] = arrayValue(colorSet?.[index], [0, 0, 0, 0]);\r\n }\r\n return document.AddNode(\"EveChildInheritProperties\", fields);\r\n}\r\n\r\nfunction collectDynamicEmitterRefs(document, rootRef, target)\r\n{\r\n const result = [];\r\n const seen = new Set();\r\n const addEmitters = node =>\r\n {\r\n for (const ref of Array.isArray(node?.fields?.particleEmitters) ? node.fields.particleEmitters : [])\r\n {\r\n const emitter = document.GetNode(Number(ref?.$ref));\r\n if (emitter?.kind === \"Tr2DynamicEmitter\" && !seen.has(emitter.id))\r\n {\r\n seen.add(emitter.id);\r\n result.push({ $ref: emitter.id });\r\n }\r\n }\r\n };\r\n const visitTransform = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`transform:${node.id}`)) return;\r\n seen.add(`transform:${node.id}`);\r\n addEmitters(node);\r\n for (const childRef of Array.isArray(node.fields?.children) ? node.fields.children : [])\r\n {\r\n const child = document.GetNode(Number(childRef?.$ref));\r\n if (child?.kind === \"EveTransform\") visitTransform(childRef);\r\n }\r\n };\r\n const visitEffectChild = ref =>\r\n {\r\n const node = document.GetNode(Number(ref?.$ref));\r\n if (!node || seen.has(`effect:${node.id}`)) return;\r\n seen.add(`effect:${node.id}`);\r\n if (node.kind === \"EveChildParticleSystem\")\r\n {\r\n addEmitters(node);\r\n }\r\n else if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const childRef of Array.isArray(node.fields?.objects) ? node.fields.objects : [])\r\n {\r\n visitEffectChild(childRef);\r\n }\r\n }\r\n };\r\n if (target === \"children\") visitTransform(rootRef);\r\n else visitEffectChild(rootRef);\r\n return result;\r\n}\r\n\r\nfunction scalarKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: Number(value),\r\n leftTangent: 0,\r\n rightTangent: 0,\r\n id: 0,\r\n interpolation: 1,\r\n tangentType: 1\r\n };\r\n}\r\n\r\nfunction quaternionKey(time, value)\r\n{\r\n return {\r\n time: Number(time),\r\n value: arrayValue(value, [0, 0, 0, 1]),\r\n id: 0,\r\n interpolation: 1\r\n };\r\n}\r\n\r\nfunction identityMatrix()\r\n{\r\n return [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ];\r\n}\r\n\r\nfunction decomposeCarbonMatrix(matrix, rotation, translation, scaling)\r\n{\r\n const scaleX = Math.hypot(matrix[0], matrix[1], matrix[2]);\r\n const scaleY = Math.hypot(matrix[4], matrix[5], matrix[6]);\r\n const scaleZ = Math.hypot(matrix[8], matrix[9], matrix[10]);\r\n scaling[0] = scaleX;\r\n scaling[1] = scaleY;\r\n scaling[2] = scaleZ;\r\n translation[0] = matrix[12];\r\n translation[1] = matrix[13];\r\n translation[2] = matrix[14];\r\n\r\n if (scaleX === 0 || scaleY === 0 || scaleZ === 0)\r\n {\r\n rotation[0] = 0;\r\n rotation[1] = 0;\r\n rotation[2] = 0;\r\n rotation[3] = 1;\r\n return matrix;\r\n }\r\n\r\n const normalized = mat4.create();\r\n normalized[0] = matrix[0] / scaleX;\r\n normalized[1] = matrix[1] / scaleX;\r\n normalized[2] = matrix[2] / scaleX;\r\n normalized[4] = matrix[4] / scaleY;\r\n normalized[5] = matrix[5] / scaleY;\r\n normalized[6] = matrix[6] / scaleY;\r\n normalized[8] = matrix[8] / scaleZ;\r\n normalized[9] = matrix[9] / scaleZ;\r\n normalized[10] = matrix[10] / scaleZ;\r\n mat4.getRotation(rotation, normalized);\r\n return matrix;\r\n}\r\n\r\nfunction addOffset(target, value)\r\n{\r\n if (!value) return;\r\n target[0] += Number(value[0] ?? 0);\r\n target[1] += Number(value[1] ?? 0);\r\n target[2] += Number(value[2] ?? 0);\r\n}\r\n\r\nfunction getLightKind(value)\r\n{\r\n switch (Number(value))\r\n {\r\n case EveSOFDataHullLightSetItem.LightType.POINT_LIGHT:\r\n return { className: \"Tr2PointLight\", type: 1, isDynamic: false };\r\n case EveSOFDataHullLightSetItem.LightType.TEXTURED_POINT_LIGHT:\r\n return { className: \"Tr2TexturedPointLight\", type: 1, isDynamic: true };\r\n case EveSOFDataHullLightSetItem.LightType.SPOT_LIGHT:\r\n return { className: \"Tr2SpotLight\", type: 2, isDynamic: false };\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction saturateColor(value, saturation)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n if (Number(saturation) === 1) return source;\r\n const intensity = source[0] * 0.299 + source[1] * 0.587 + source[2] * 0.114;\r\n const factor = Math.max(0, Number(saturation));\r\n return [\r\n intensity + (source[0] - intensity) * factor,\r\n intensity + (source[1] - intensity) * factor,\r\n intensity + (source[2] - intensity) * factor,\r\n source[3]\r\n ];\r\n}\r\n\r\nfunction multiplyColor(value, multiplier)\r\n{\r\n return arrayValue(value, [0, 0, 0, 0]).map(component => component * Number(multiplier ?? 0));\r\n}\r\n\r\nfunction modifyColor(value, saturation, brightness)\r\n{\r\n const source = arrayValue(value, [0, 0, 0, 0]);\r\n const divisor = Math.max(source[0], source[1], source[2], 1);\r\n const red = source[0] / divisor;\r\n const green = source[1] / divisor;\r\n const blue = source[2] / divisor;\r\n const maximum = Math.max(red, green, blue);\r\n const minimum = Math.min(red, green, blue);\r\n const delta = maximum - minimum;\r\n let hue = 0;\r\n let hsvSaturation = 0;\r\n if (delta !== 0)\r\n {\r\n hsvSaturation = maximum !== 0 ? delta / maximum : 0;\r\n if (red === maximum) hue = (green - blue) / delta;\r\n else if (green === maximum) hue = 2 + (blue - red) / delta;\r\n else hue = 4 + (red - green) / delta;\r\n hue *= 60;\r\n if (hue < 0) hue += 360;\r\n }\r\n hsvSaturation *= Number(saturation);\r\n const hsvValue = maximum * Number(brightness);\r\n return [...hsvToRgb(hue, hsvSaturation, hsvValue), source[3]];\r\n}\r\n\r\nfunction hsvToRgb(hue, saturation, value)\r\n{\r\n const nextSaturation = saturation === 0 ? 1e-9 : saturation;\r\n const sector = hue / 60;\r\n const index = Math.floor(sector);\r\n const fraction = sector - index;\r\n const p = value * (1 - nextSaturation);\r\n const q = value * (1 - nextSaturation * fraction);\r\n const t = value * (1 - nextSaturation * (1 - fraction));\r\n switch (index)\r\n {\r\n case 0: return [value, t, p];\r\n case 1: return [q, value, p];\r\n case 2: return [p, value, t];\r\n case 3: return [p, q, value];\r\n case 4: return [t, p, value];\r\n default: return [value, p, q];\r\n }\r\n}\r\n\r\nfunction getPlaneSetEffectPath(usage, skinned)\r\n{\r\n switch (Number(usage))\r\n {\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_STANDARD:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HAZE:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planeglow.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planeglow.fx\";\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_SPACE_VIDEO:\r\n case EveSOFDataHullPlaneSet.Usage.USAGE_HANGAR_VIDEO:\r\n return skinned\r\n ? \"res:/graphics/effect/managed/space/spaceobject/fx/skinned_planehologram.fx\"\r\n : \"res:/graphics/effect/managed/space/spaceobject/fx/planehologram.fx\";\r\n default:\r\n return \"\";\r\n }\r\n}\r\n\r\nfunction getSpriteLinePositions(item)\r\n{\r\n const result = [];\r\n const position = arrayValue(item.position, [0, 0, 0]);\r\n const rotation = arrayValue(item.rotation, [0, 0, 0, 1]);\r\n const scaling = arrayValue(item.scaling, [1, 1, 1]);\r\n if (item.isCircle)\r\n {\r\n const count = Math.max(0, Math.trunc(Number(item.spacing ?? 1)));\r\n for (let index = 0; index < count; index++)\r\n {\r\n const angle = index * Math.PI * 2 / Number(item.spacing);\r\n const point = vec3.transformQuat(\r\n vec3.create(),\r\n [scaling[0] * Math.sin(angle), 0, scaling[1] * Math.cos(angle)],\r\n rotation\r\n );\r\n vec3.add(point, point, position);\r\n result.push(Array.from(point));\r\n }\r\n }\r\n else\r\n {\r\n const count = Math.max(0, Math.trunc(Number(scaling[0] ?? 0)));\r\n const direction = vec3.transformQuat(vec3.create(), [1, 0, 0], rotation);\r\n const point = position.slice();\r\n for (let index = 0; index < count; index++)\r\n {\r\n result.push(point.slice());\r\n point[0] += Number(item.spacing ?? 1) * direction[0];\r\n point[1] += Number(item.spacing ?? 1) * direction[1];\r\n point[2] += Number(item.spacing ?? 1) * direction[2];\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction addBannerItem(document, source, hullOffset, offset)\r\n{\r\n const transform = mat4.fromRotationTranslationScale(\r\n mat4.create(),\r\n arrayValue(source.rotation, [0, 0, 0, 1]),\r\n [\r\n Number(source.position?.[0] ?? 0) + hullOffset[0],\r\n Number(source.position?.[1] ?? 0) + hullOffset[1],\r\n Number(source.position?.[2] ?? 0) + hullOffset[2]\r\n ],\r\n [1, 1, 1]\r\n );\r\n mat4.multiply(transform, arrayValue(offset, identityMatrix()), transform);\r\n const position = vec3.create();\r\n const rotation = quat.create();\r\n const ignoredScale = vec3.create();\r\n decomposeCarbonMatrix(transform, rotation, position, ignoredScale);\r\n return {\r\n ref: document.AddNode(\"EveBannerItem\", {\r\n bone: Number(source.bone ?? -1),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation),\r\n scaling: arrayValue(source.scaling, [1, 1, 1]),\r\n angleX: Number(source.angleX ?? 0),\r\n angleY: Number(source.angleY ?? 0),\r\n reference: Number(source.reference ?? 0) | 0\r\n }),\r\n position: Array.from(position),\r\n rotation: Array.from(rotation)\r\n };\r\n}\r\n\r\nfunction addBannerSet(document, rootFields, dna, usage, banners, lights, usageCount)\r\n{\r\n const shader = dna.GetGenericBannerShaderData() ?? {\r\n shader: \"\",\r\n defaultParameters: new Map(),\r\n defaultTextures: new Map()\r\n };\r\n const constParameters = sortedKeys(shader.defaultParameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: arrayValue(shader.defaultParameters.get(name), [0, 0, 0, 0])\r\n }));\r\n const resources = sortedKeys(shader.defaultTextures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: String(shader.defaultTextures.get(name)?.resFilePath ?? \"\")\r\n }));\r\n const imageMap = document.AddNode(\"TriTextureParameter\", {\r\n name: \"ImageMap\",\r\n resourcePath: \"\"\r\n });\r\n resources.push(imageMap);\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: String(shader.shader ?? \"\"),\r\n constParameters,\r\n parameters: [],\r\n resources\r\n });\r\n rootFields.attachments.push(document.AddNode(\"EveBannerSet\", {\r\n banners,\r\n effect,\r\n isPickable: false,\r\n display: true,\r\n key: usage,\r\n lights,\r\n primaryTextureParameter: imageMap\r\n }));\r\n rootFields.externalParameters.push(document.AddNode(\"Tr2ExternalParameter\", {\r\n name: usage >= 0 && usage < usageCount ? BANNER_EXTERNAL_PARAMETER_NAMES[usage] : \"\",\r\n destinationObject: imageMap,\r\n destinationAttribute: \"resourcePath\"\r\n }));\r\n}\r\n\r\nfunction buildMeshArea(document, dna, area, shaderData, batchType, meshIndexOffset, resolveTexturePath, alphaCutoutShadowsEnabled = false, emitArea = true)\r\n{\r\n // FillMeshAreaVector's runtime state (EveSOF.cpp:576-592,668-672): opaque\r\n // areas cast shadows, decal areas follow the alpha-cutout setting, all other\r\n // batch types do not; depth generation comes from the generic shader data.\r\n let castsShadows = false;\r\n if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE) castsShadows = true;\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_DECAL) castsShadows = alphaCutoutShadowsEnabled;\r\n const options = [];\r\n if (batchType === TriBatchType.TRIBATCHTYPE_DECAL)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_CLIP\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_TRANSPARENT\"\r\n }));\r\n }\r\n else if (batchType === TriBatchType.TRIBATCHTYPE_OPAQUE)\r\n {\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_TRANSPARENCY\",\r\n value: \"SOT_OPAQUE\"\r\n }));\r\n }\r\n\r\n const patternLayerCount = dna.GetPatternLayerCount();\r\n options.push(document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_PPT_ENABLED\",\r\n value: patternLayerCount > 0 ? \"SOPPT_ENABLED\" : \"SOPPT_DISABLED\"\r\n }));\r\n\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(area.areaType, name, area.parameters, area.blockedMaterials);\r\n if (value)\r\n {\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n parameterNames.add(name);\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceRefs = new Map();\r\n for (const name of sortedKeys(area.textures))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(area.textures.get(name).resFilePath)\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n const samplerOverrides = [];\r\n const samplerNames = new Set();\r\n const pattern = patternLayerCount > 0 ? dna.GetPatternApplicationData() : null;\r\n for (let layerIndex = 0; layerIndex < patternLayerCount; layerIndex++)\r\n {\r\n const layer = dna.GetPatternLayerData(pattern, layerIndex);\r\n if (!dna.IsPatternLayerApplicableToArea(layer, area.areaType)) continue;\r\n if (!resourceRefs.has(layer.textureName))\r\n {\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name: layer.textureName,\r\n resourcePath: layer.textureResFilePath\r\n });\r\n resourceRefs.set(layer.textureName, ref);\r\n resources.push(ref);\r\n }\r\n const samplerName = `${layer.textureName}Sampler`;\r\n if (!samplerNames.has(samplerName))\r\n {\r\n samplerNames.add(samplerName);\r\n samplerOverrides.push(document.AddNode(\"Tr2SamplerOverride\", {\r\n name: samplerName,\r\n addressU: layer.projectionAddressModeU,\r\n addressV: layer.projectionAddressModeV,\r\n addressW: 1,\r\n filter: 3,\r\n mipFilter: 2,\r\n lodBias: 0,\r\n maxMipLevel: 0,\r\n maxAnisotropy: 4\r\n }));\r\n }\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceRefs.has(name)) continue;\r\n const ref = document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n });\r\n resourceRefs.set(name, ref);\r\n resources.push(ref);\r\n }\r\n\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n name: area.name,\r\n effectFilePath: dna.GetCompleteShaderPath(area.shader),\r\n options,\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides\r\n });\r\n const fields = {\r\n _areaType: Number(area.areaType ?? 0),\r\n name: area.name,\r\n index: area.index + meshIndexOffset,\r\n count: area.count,\r\n reversed: false,\r\n // Decal areas fold into opaque as one-sided alpha cutouts\r\n // (Carbon EveSOF.cpp:883); occluder backface tests skip them.\r\n alphaCutout: batchType === TriBatchType.TRIBATCHTYPE_DECAL,\r\n useSHLighting: false,\r\n castsShadows,\r\n generateDepthArea: Boolean(shaderData.doGenerateDepthArea),\r\n // Carbon limits distortion areas to high LOD after fill (EveSOF.cpp:2149-2153).\r\n minLod: batchType === TriBatchType.TRIBATCHTYPE_DISTORTION ? TR2_LOD_HIGH : -1,\r\n effect\r\n };\r\n return {\r\n ref: emitArea ? document.AddNode(\"Tr2MeshArea\", fields) : null,\r\n fields,\r\n effect,\r\n generateDepthArea: shaderData.doGenerateDepthArea,\r\n resourceRefs\r\n };\r\n}\r\n\r\nfunction createLayoutContainerFields(name)\r\n{\r\n return {\r\n name: String(name ?? \"\"),\r\n objects: [],\r\n curveSets: [],\r\n attachments: [],\r\n observers: [],\r\n lights: [],\r\n controllers: []\r\n };\r\n}\r\n\r\nfunction ensureSpaceObjectBuildFields(fields)\r\n{\r\n for (const name of [\r\n \"effectChildren\",\r\n \"children\",\r\n \"curveSets\",\r\n \"attachments\",\r\n \"decals\",\r\n \"customMasks\",\r\n \"lights\",\r\n \"externalParameters\",\r\n \"controllers\",\r\n \"observers\",\r\n \"locators\",\r\n \"locatorSets\"\r\n ])\r\n {\r\n if (!Array.isArray(fields[name])) fields[name] = [];\r\n }\r\n if (!Object.hasOwn(fields, \"impactOverlay\")) fields.impactOverlay = null;\r\n}\r\n\r\nfunction normalizePartTag(value)\r\n{\r\n const number = Number(value);\r\n if (!Number.isInteger(number) || number < 0 || number > 0xffffffff)\r\n {\r\n throw new RangeError(\"EveSOF partTag must be an unsigned 32-bit integer\");\r\n }\r\n return number >>> 0;\r\n}\r\n\r\nfunction normalizePlacementTransform(value)\r\n{\r\n if (!value || value.length !== 16)\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform must contain 16 values\");\r\n }\r\n const result = Array.from(value, Number);\r\n if (result.some(item => !Number.isFinite(item)))\r\n {\r\n throw new TypeError(\"EveSOF BuildChild transform values must be finite numbers\");\r\n }\r\n return result;\r\n}\r\n\r\nfunction replacePlainValues(target, values)\r\n{\r\n if (!target || typeof target !== \"object\" || Array.isArray(target))\r\n {\r\n throw new TypeError(\"EveSOF.BuildChild requires a CjsModel or plain model-values root\");\r\n }\r\n for (const key of Object.keys(target)) delete target[key];\r\n Object.assign(target, values);\r\n}\r\n\r\nfunction findSharedInstancedMeshes(document, rootFields)\r\n{\r\n for (const ref of rootFields.effectChildren)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveChildInstancedMeshes\")\r\n {\r\n if (!Array.isArray(node.fields.meshes)) node.fields.meshes = [];\r\n return { ref, meshes: node.fields.meshes };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction ensureSharedInstancedMeshes(document, rootFields)\r\n{\r\n const existing = findSharedInstancedMeshes(document, rootFields);\r\n if (existing) return existing;\r\n const meshes = [];\r\n const ref = document.AddNode(\"EveChildInstancedMeshes\", {\r\n name: \"SharedInstancedMeshes\",\r\n meshes\r\n });\r\n rootFields.effectChildren.push(ref);\r\n return { ref, meshes };\r\n}\r\n\r\nfunction stampDocumentChildPartTag(document, ref, partTag, visited = new Set())\r\n{\r\n const id = Number(ref?.$ref);\r\n if (!Number.isInteger(id) || visited.has(id)) return;\r\n visited.add(id);\r\n const node = document.GetNode(id);\r\n if (!node) return;\r\n node.fields.partTag = partTag;\r\n if (node.kind === \"EveChildContainer\")\r\n {\r\n for (const child of node.fields.objects ?? [])\r\n {\r\n stampDocumentChildPartTag(document, child, partTag, visited);\r\n }\r\n }\r\n}\r\n\r\nfunction layoutContainerIsEmpty(fields)\r\n{\r\n return [\"objects\", \"curveSets\", \"attachments\", \"observers\", \"lights\", \"controllers\"]\r\n .every(name => !Array.isArray(fields[name]) || fields[name].length === 0);\r\n}\r\n\r\nfunction updateLayoutBounds(rootFields, dna, occurrences)\r\n{\r\n let sphere = [\r\n ...arrayValue(rootFields.boundingSphereCenter, [0, 0, 0]),\r\n Number(rootFields.boundingSphereRadius ?? -1)\r\n ];\r\n let ellipsoidBounds = ellipsoidToBounds(\r\n rootFields.shapeEllipsoidCenter,\r\n rootFields.shapeEllipsoidRadius\r\n );\r\n const sourceSphere = dna.GetHullBoundingSphere();\r\n const sourceEllipsoid = dna.GetHullShapeEllipsoid();\r\n for (const occurrence of occurrences)\r\n {\r\n const transform = arrayValue(occurrence.transform, identityMatrix());\r\n const transformedSphere = transformLayoutSphere(sourceSphere, transform);\r\n if (occurrence.extendsBoundingSphere)\r\n {\r\n sphere = includeLayoutSphere(sphere, transformedSphere);\r\n }\r\n if (occurrence.extendsShieldEllipsoid)\r\n {\r\n const bounds = transformLayoutEllipsoid(sourceEllipsoid, transformedSphere, transform);\r\n ellipsoidBounds = includeBounds(ellipsoidBounds, bounds);\r\n }\r\n }\r\n rootFields.boundingSphereCenter = sphere.slice(0, 3);\r\n rootFields.boundingSphereRadius = sphere[3];\r\n if (ellipsoidBounds)\r\n {\r\n rootFields.shapeEllipsoidCenter = ellipsoidBounds.min.map((value, index) => (\r\n (value + ellipsoidBounds.max[index]) * 0.5\r\n ));\r\n rootFields.shapeEllipsoidRadius = ellipsoidBounds.min.map((value, index) => (\r\n (ellipsoidBounds.max[index] - value) * 0.5\r\n ));\r\n }\r\n}\r\n\r\nfunction transformLayoutSphere(source, transform)\r\n{\r\n if (!source || Number(source[3]) < 0) return null;\r\n const center = vec3.transformMat4(vec3.create(), source, transform);\r\n const scale = mat4.getScaling(vec3.create(), transform);\r\n const maxScale = Math.max(Math.abs(scale[0]), Math.abs(scale[1]), Math.abs(scale[2]));\r\n return [center[0], center[1], center[2], Number(source[3]) * maxScale];\r\n}\r\n\r\nfunction includeLayoutSphere(current, next)\r\n{\r\n if (!next || next[3] < 0) return current;\r\n if (!current || current[3] < 0) return next.slice();\r\n const dx = next[0] - current[0];\r\n const dy = next[1] - current[1];\r\n const dz = next[2] - current[2];\r\n const distance = Math.hypot(dx, dy, dz);\r\n if (current[3] >= distance + next[3]) return current;\r\n if (next[3] >= distance + current[3]) return next.slice();\r\n const radius = (distance + current[3] + next[3]) * 0.5;\r\n if (distance === 0) return [current[0], current[1], current[2], radius];\r\n const factor = (radius - current[3]) / distance;\r\n return [\r\n current[0] + dx * factor,\r\n current[1] + dy * factor,\r\n current[2] + dz * factor,\r\n radius\r\n ];\r\n}\r\n\r\nfunction ellipsoidToBounds(centerValue, radiusValue)\r\n{\r\n const center = arrayValue(centerValue, [0, 0, 0]);\r\n const radius = arrayValue(radiusValue, [-1, -1, -1]);\r\n if (radius.some(value => value < 0)) return null;\r\n return {\r\n min: center.map((value, index) => value - radius[index]),\r\n max: center.map((value, index) => value + radius[index])\r\n };\r\n}\r\n\r\nfunction transformLayoutEllipsoid(source, fallbackSphere, transform)\r\n{\r\n const sourceBounds = ellipsoidToBounds(source?.center, source?.radius);\r\n if (!sourceBounds)\r\n {\r\n if (!fallbackSphere) return null;\r\n return {\r\n min: fallbackSphere.slice(0, 3).map(value => value - fallbackSphere[3]),\r\n max: fallbackSphere.slice(0, 3).map(value => value + fallbackSphere[3])\r\n };\r\n }\r\n let result = null;\r\n for (const x of [sourceBounds.min[0], sourceBounds.max[0]])\r\n {\r\n for (const y of [sourceBounds.min[1], sourceBounds.max[1]])\r\n {\r\n for (const z of [sourceBounds.min[2], sourceBounds.max[2]])\r\n {\r\n const point = vec3.transformMat4(vec3.create(), [x, y, z], transform);\r\n result = includeBounds(result, { min: Array.from(point), max: Array.from(point) });\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction includeBounds(current, next)\r\n{\r\n if (!next) return current;\r\n if (!current) return { min: next.min.slice(), max: next.max.slice() };\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n current.min[axis] = Math.min(current.min[axis], next.min[axis]);\r\n current.max[axis] = Math.max(current.max[axis], next.max[axis]);\r\n }\r\n return current;\r\n}\r\n\r\nfunction groupLayoutPlacements(placements)\r\n{\r\n const groups = new Map();\r\n for (const placement of placements)\r\n {\r\n if (!groups.has(placement.batchKey)) groups.set(placement.batchKey, []);\r\n groups.get(placement.batchKey).push(placement);\r\n }\r\n return groups.values();\r\n}\r\n\r\nfunction addEffectShaderOption(document, effectRef, name, value)\r\n{\r\n const effect = document.GetNode(effectRef?.$ref);\r\n if (!effect) return;\r\n if (!Array.isArray(effect.fields.options)) effect.fields.options = [];\r\n const duplicate = effect.fields.options.some(ref => {\r\n const option = document.GetNode(ref?.$ref);\r\n return option?.fields?.name === name;\r\n });\r\n if (!duplicate)\r\n {\r\n effect.fields.options.push(document.AddNode(\"Tr2ShaderOption\", { name, value }));\r\n }\r\n}\r\n\r\nfunction addMeshShaderOption(document, meshFields, name, value)\r\n{\r\n for (const field of [\"opaqueAreas\", \"transparentAreas\", \"additiveAreas\", \"distortionAreas\", \"depthAreas\"])\r\n {\r\n for (const areaRef of meshFields[field] ?? [])\r\n {\r\n const area = document.GetNode(areaRef?.$ref);\r\n addEffectShaderOption(document, area?.fields?.effect, name, value);\r\n }\r\n }\r\n}\r\n\r\nfunction addChildMeshShaderOption(document, childFields, name, value)\r\n{\r\n const mesh = document.GetNode(childFields.mesh?.$ref);\r\n if (mesh) addMeshShaderOption(document, mesh.fields, name, value);\r\n for (const decalRef of childFields.decals ?? [])\r\n {\r\n const decal = document.GetNode(decalRef?.$ref);\r\n addEffectShaderOption(document, decal?.fields?.decalEffect, name, value);\r\n }\r\n}\r\n\r\nfunction propagateInstancedMeshInstances(sourceInstances, requestedOffsets)\r\n{\r\n const offsets = Array.isArray(requestedOffsets) && requestedOffsets.length\r\n ? requestedOffsets.map(value => arrayValue(value, identityMatrix()))\r\n : [identityMatrix()];\r\n const identityFastPath = offsets.length === 1 && isIdentityMatrix(offsets[0]);\r\n const instances = [];\r\n const instanceTransforms = [];\r\n if (identityFastPath)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n instances.push(clonePackedInstance(source));\r\n instanceTransforms.push(Array.from(unpackInstanceMatrix(source)));\r\n }\r\n return { instances, instanceTransforms };\r\n }\r\n\r\n for (const offset of offsets)\r\n {\r\n for (const source of sourceInstances)\r\n {\r\n const combined = mat4.multiply(\r\n mat4.create(),\r\n offset,\r\n unpackInstanceMatrix(source)\r\n );\r\n instances.push(packInstanceMatrix(combined, source.boneIndex));\r\n // Carbon retains the transposed product in this auxiliary list on the\r\n // general path, unlike its ordinary-matrix identity fast path.\r\n instanceTransforms.push(Array.from(mat4.transpose(mat4.create(), combined)));\r\n }\r\n }\r\n return { instances, instanceTransforms };\r\n}\r\n\r\nfunction clonePackedInstance(source)\r\n{\r\n return {\r\n transform0: arrayValue(source.transform0, [1, 0, 0, 0]),\r\n transform1: arrayValue(source.transform1, [0, 1, 0, 0]),\r\n transform2: arrayValue(source.transform2, [0, 0, 1, 0]),\r\n lastTransform0: arrayValue(source.lastTransform0, source.transform0 ?? [1, 0, 0, 0]),\r\n lastTransform1: arrayValue(source.lastTransform1, source.transform1 ?? [0, 1, 0, 0]),\r\n lastTransform2: arrayValue(source.lastTransform2, source.transform2 ?? [0, 0, 1, 0]),\r\n boneIndex: Number(source.boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction unpackInstanceMatrix(source)\r\n{\r\n const t0 = arrayValue(source.transform0, [1, 0, 0, 0]);\r\n const t1 = arrayValue(source.transform1, [0, 1, 0, 0]);\r\n const t2 = arrayValue(source.transform2, [0, 0, 1, 0]);\r\n return new Float32Array([\r\n t0[0], t1[0], t2[0], 0,\r\n t0[1], t1[1], t2[1], 0,\r\n t0[2], t1[2], t2[2], 0,\r\n t0[3], t1[3], t2[3], 1\r\n ]);\r\n}\r\n\r\nfunction packInstanceMatrix(matrix, boneIndex)\r\n{\r\n const transform0 = [matrix[0], matrix[4], matrix[8], matrix[12]];\r\n const transform1 = [matrix[1], matrix[5], matrix[9], matrix[13]];\r\n const transform2 = [matrix[2], matrix[6], matrix[10], matrix[14]];\r\n return {\r\n transform0,\r\n transform1,\r\n transform2,\r\n lastTransform0: transform0.slice(),\r\n lastTransform1: transform1.slice(),\r\n lastTransform2: transform2.slice(),\r\n boneIndex: Number(boneIndex ?? 0) | 0\r\n };\r\n}\r\n\r\nfunction isIdentityMatrix(value)\r\n{\r\n const identity = identityMatrix();\r\n return identity.every((item, index) => Number(value[index]) === item);\r\n}\r\n\r\nfunction translationBounds(instances)\r\n{\r\n const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];\r\n const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];\r\n for (const instance of instances)\r\n {\r\n const point = [\r\n Number(instance.transform0?.[3] ?? 0),\r\n Number(instance.transform1?.[3] ?? 0),\r\n Number(instance.transform2?.[3] ?? 0)\r\n ];\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n min[axis] = Math.min(min[axis], point[axis]);\r\n max[axis] = Math.max(max[axis], point[axis]);\r\n }\r\n }\r\n return { min, max };\r\n}\r\n\r\nfunction maximumInstanceScale(instances)\r\n{\r\n let maxLengthSquared = 0;\r\n for (const instance of instances)\r\n {\r\n for (const row of [instance.transform0, instance.transform1, instance.transform2])\r\n {\r\n const value = arrayValue(row, [0, 0, 0, 0]);\r\n maxLengthSquared = Math.max(\r\n maxLengthSquared,\r\n value[0] * value[0] + value[1] * value[1] + value[2] * value[2]\r\n );\r\n }\r\n }\r\n return Math.sqrt(maxLengthSquared);\r\n}\r\n\r\nfunction createInstancedMeshArea(document, dna, source, shaderData, resolveTexturePath)\r\n{\r\n const constParameters = [];\r\n const parameterNames = new Set();\r\n for (const name of shaderData.parameters)\r\n {\r\n const value = dna.GetMeshAreaParameter(EveSOFDataArea.AreaType.TYPE_PRIMARY, name);\r\n if (!value || parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(value)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultParameters))\r\n {\r\n if (parameterNames.has(name)) continue;\r\n parameterNames.add(name);\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(shaderData.defaultParameters.get(name))\r\n }));\r\n }\r\n\r\n const resources = [];\r\n const resourceNames = new Set();\r\n for (const name of sortedKeys(source.textures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: resolveTexturePath(source.textures.get(name).resFilePath)\r\n }));\r\n }\r\n for (const name of sortedKeys(shaderData.defaultTextures))\r\n {\r\n if (resourceNames.has(name)) continue;\r\n resourceNames.add(name);\r\n resources.push(document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: shaderData.defaultTextures.get(name).resFilePath\r\n }));\r\n }\r\n\r\n const option = document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"SPACE_OBJECT_INSTANCED_ATTACHMENT\",\r\n value: \"SOIA_ENABLED\"\r\n });\r\n const effect = document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: dna.GetCompleteShaderPath(source.shader),\r\n options: [option],\r\n constParameters,\r\n parameters: [],\r\n resources,\r\n samplerOverrides: []\r\n });\r\n return document.AddNode(\"Tr2MeshArea\", {\r\n name: \"hull\",\r\n index: 0,\r\n count: 1,\r\n reversed: false,\r\n useSHLighting: false,\r\n effect\r\n });\r\n}\r\n\r\n// Carbon EveSOF::CreateBoosterEffect (EveSOF.cpp:2853-2899, EveSOF.h:145):\r\n// the path defaults to the ship booster shader, and per-hull DNA parameters\r\n// are added BEFORE the race-shape parameters, matching Carbon's insertion\r\n// order. Only SetupChildBoosters passes overrides (with\r\n// EveChildBoosterSet.DEFAULT_EFFECT_PATH as its own fallback); ship boosters\r\n// always use the defaults.\r\nfunction createBoosterEffect(document, race, lodOption,\r\n effectPath = \"res:/Graphics/Effect/Managed/Space/Booster/BoosterVolumetric.fx\",\r\n parameters = null, textureOverrides = null)\r\n{\r\n const constParameters = [];\r\n const add = (name, value) => {\r\n const vector = Array.isArray(value) || ArrayBuffer.isView(value)\r\n ? arrayValue(value, [0, 0, 0, 0])\r\n : [Number(value ?? 0), Number(value ?? 0), Number(value ?? 0), Number(value ?? 0)];\r\n constParameters.push(document.AddNode(\"Tr2ConstantEffectParameter\", { name, value: vector }));\r\n };\r\n if (parameters)\r\n {\r\n for (const [ name, value ] of parameters) add(name, value);\r\n }\r\n add(\"NoiseSpeed0\", race.shape0.noiseSpeed);\r\n add(\"NoiseAmplitudeStart0\", race.shape0.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd0\", race.shape0.noiseAmplitureEnd);\r\n add(\"NoiseFrequency0\", race.shape0.noiseFrequency);\r\n add(\"Color0\", race.shape0.color);\r\n add(\"NoiseSpeed1\", race.shape1.noiseSpeed);\r\n add(\"NoiseAmplitudeStart1\", race.shape1.noiseAmplitureStart);\r\n add(\"NoiseAmplitudeEnd1\", race.shape1.noiseAmplitureEnd);\r\n add(\"Color1\", race.shape1.color);\r\n add(\"WarpNoiseSpeed0\", race.warpShape0.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart0\", race.warpShape0.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd0\", race.warpShape0.noiseAmplitureEnd);\r\n add(\"WarpNoiseFrequency0\", race.warpShape0.noiseFrequency);\r\n add(\"WarpColor0\", race.warpShape0.color);\r\n add(\"WarpNoiseSpeed1\", race.warpShape1.noiseSpeed);\r\n add(\"WarpNoiseAmplitudeStart1\", race.warpShape1.noiseAmplitureStart);\r\n add(\"WarpNoiseAmplitudeEnd1\", race.warpShape1.noiseAmplitureEnd);\r\n add(\"WarpColor1\", race.warpShape1.color);\r\n add(\"ShapeAtlasSize\", [race.shapeAtlasHeight, race.shapeAtlasCount, 0, 0]);\r\n add(\"BoosterScale\", race.scale);\r\n\r\n // Per-hull texture overrides replace a default by name or append (Carbon\r\n // SetResourceTexture2D semantics, EveSOF.cpp:3095-3099).\r\n const textures = new Map([\r\n [ \"ShapeMap\", String(race.shapeAtlasResPath ?? \"\") ],\r\n [ \"GradientMap0\", String(race.gradient0ResPath ?? \"\") ],\r\n [ \"GradientMap1\", String(race.gradient1ResPath ?? \"\") ],\r\n [ \"NoiseMap\", \"res:/Texture/Global/noise32cube_volume.dds\" ]\r\n ]);\r\n if (textureOverrides)\r\n {\r\n for (const [ name, record ] of textureOverrides)\r\n {\r\n textures.set(String(name), String(record?.resFilePath ?? record ?? \"\"));\r\n }\r\n }\r\n\r\n return document.AddNode(\"Tr2Effect\", {\r\n effectFilePath: effectPath,\r\n options: [document.AddNode(\"Tr2ShaderOption\", {\r\n name: \"BOOSTER_LOD\",\r\n value: lodOption\r\n })],\r\n constParameters,\r\n parameters: [],\r\n resources: [...textures].map(([ name, resourcePath ]) =>\r\n document.AddNode(\"TriTextureParameter\", { name, resourcePath })),\r\n samplerOverrides: []\r\n });\r\n}\r\n\r\nfunction mergeDocumentLocatorSet(document, rootFields, name, locatorRefs)\r\n{\r\n if (locatorRefs.length === 0) return null;\r\n for (const ref of rootFields.locatorSets)\r\n {\r\n const node = document.GetNode(ref?.$ref);\r\n if (node?.kind === \"EveLocatorSets\" && node.fields?.name === name)\r\n {\r\n node.fields.locators.push(...locatorRefs);\r\n return ref;\r\n }\r\n }\r\n const ref = document.AddNode(\"EveLocatorSets\", { name, locators: locatorRefs });\r\n rootFields.locatorSets.push(ref);\r\n return ref;\r\n}\r\n\r\nfunction sortedKeys(map)\r\n{\r\n return [...map.keys()].sort((a, b) => a.localeCompare(b));\r\n}\r\n\r\nfunction selectDecalIndexBuffers(item, hullCount, combinedGeometryPath)\r\n{\r\n if (hullCount === 1) return item.indexBuffers.map(indices => indices.slice());\r\n for (const entry of item.multiHullIndexBuffers)\r\n {\r\n if (entry.combinedGeometryResPath === combinedGeometryPath)\r\n {\r\n return entry.indexBuffers.map(indices => indices.slice());\r\n }\r\n }\r\n return [];\r\n}\r\n\r\nfunction effectParameters(document, parameters)\r\n{\r\n return sortedKeys(parameters).map(name => document.AddNode(\"Tr2ConstantEffectParameter\", {\r\n name,\r\n value: Array.from(parameters.get(name))\r\n }));\r\n}\r\n\r\nfunction effectResources(document, textures)\r\n{\r\n return sortedKeys(textures).map(name => document.AddNode(\"TriTextureParameter\", {\r\n name,\r\n resourcePath: textures.get(name).resFilePath\r\n }));\r\n}\r\n\r\nfunction createImpactEmitter(document, values)\r\n{\r\n const emitterData = {\r\n angle: Number(values.angle ?? 0),\r\n innerAngle: Number(values.innerAngle ?? 0),\r\n minSpeed: Number(values.minMaxSpeed?.[0] ?? 0),\r\n maxSpeed: Number(values.minMaxSpeed?.[1] ?? 0)\r\n };\r\n const paramsData = {\r\n minLifeTime: Number(values.minMaxLifeTime?.[0] ?? 0),\r\n maxLifeTime: Number(values.minMaxLifeTime?.[1] ?? 0),\r\n sizes: [\r\n Number(values.sizes?.[0] ?? 0),\r\n Number(values.sizes?.[1] ?? 0),\r\n Number(values.sizes?.[2] ?? 0)\r\n ],\r\n sizeVariance: Number(values.sizes?.[3] ?? 0),\r\n colors: [0, 1, 2, 3].map(index => arrayValue(values.colors?.[index], [0, 0, 0, 0])),\r\n textureIndex: Number(values.textureIndex ?? 0) >>> 0,\r\n velocityStretchRotation: Number(values.velocityStretchRotation ?? 0),\r\n drag: Number(values.drag ?? 0),\r\n turbulenceAmplitude: Number(values.turbulenceAmplitude ?? 0),\r\n turbulenceFrequency: Number(values.turbulenceFrequency ?? 0) >>> 0,\r\n colorMidpoint: Number(values.colorMidpoint ?? 0)\r\n };\r\n return document.AddNode(\"Tr2GpuUniqueEmitter\", {\r\n rate: Number(values.rate ?? 0),\r\n angle: emitterData.angle,\r\n innerAngle: emitterData.innerAngle,\r\n minSpeed: emitterData.minSpeed,\r\n maxSpeed: emitterData.maxSpeed,\r\n minLifeTime: paramsData.minLifeTime,\r\n maxLifeTime: paramsData.maxLifeTime,\r\n sizes: paramsData.sizes,\r\n sizeVariance: paramsData.sizeVariance,\r\n color0: paramsData.colors[0],\r\n color1: paramsData.colors[1],\r\n color2: paramsData.colors[2],\r\n color3: paramsData.colors[3],\r\n textureIndex: paramsData.textureIndex,\r\n colorMidpoint: paramsData.colorMidpoint,\r\n velocityStretchRotation: paramsData.velocityStretchRotation,\r\n drag: paramsData.drag,\r\n turbulenceAmplitude: paramsData.turbulenceAmplitude,\r\n turbulenceFrequency: paramsData.turbulenceFrequency\r\n });\r\n}\r\n\r\n/**\r\n * Counts how many times each node is reached from a starting reference.\r\n *\r\n * Recursion stops at a node already seen, so a cycle terminates and every node\r\n * on it still records more than one visit — which is exactly the condition for\r\n * giving it an identity.\r\n */\r\nfunction CountDocumentVisits(value, nodeById, visits)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n return;\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n const seen = visits.get(id) ?? 0;\r\n visits.set(id, seen + 1);\r\n if (seen) return;\r\n\r\n const node = nodeById.get(id);\r\n if (!node) return;\r\n\r\n CountDocumentVisits(node.fields ?? {}, nodeById, visits);\r\n CountDocumentVisits(node.raw ?? {}, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n for (const item of value) CountDocumentVisits(item, nodeById, visits);\r\n\r\n return;\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n for (const item of Object.values(value)) CountDocumentVisits(item, nodeById, visits);\r\n }\r\n}\r\n\r\n/**\r\n * Rewrites one document value into its plain-values form.\r\n *\r\n * `emitted` maps a node id to the `_id` it was given on first emission, so a\r\n * later occurrence becomes `{ _ref }`. Ids are allocated in emission order\r\n * rather than reusing document ids, so the output does not carry the node\r\n * table's numbering as a hidden dependency.\r\n */\r\nfunction ProjectDocumentNode(value, nodeById, visits, emitted, state)\r\n{\r\n if (value?.[VALUES_LITERAL_DOLLAR_REF])\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n if (CjsCarbonDocument.isRef(value))\r\n {\r\n const id = Number(value.$ref);\r\n\r\n if (emitted.has(id)) return { _ref: emitted.get(id) };\r\n\r\n const node = nodeById.get(id);\r\n if (!node) throw new TypeError(`EveSOF values projection found no node for ref ${id}.`);\r\n\r\n const projected = { _type: node.kind };\r\n\r\n if ((visits.get(id) ?? 0) > 1)\r\n {\r\n const valueId = state.nextId++;\r\n emitted.set(id, valueId);\r\n projected._id = valueId;\r\n }\r\n\r\n // `fields` and `raw` are transport envelopes rather than data: the reader\r\n // of a values graph sees one object whose properties are the node's.\r\n for (const [key, item] of Object.entries({ ...node.fields, ...node.raw }))\r\n {\r\n projected[key] = ProjectDocumentNode(item, nodeById, visits, emitted, state);\r\n }\r\n\r\n return projected;\r\n }\r\n\r\n if (Array.isArray(value))\r\n {\r\n return value.map(item => ProjectDocumentNode(item, nodeById, visits, emitted, state));\r\n }\r\n\r\n if (value && typeof value === \"object\")\r\n {\r\n return Object.fromEntries(Object.entries(value)\r\n .map(([key, item]) => [key, ProjectDocumentNode(item, nodeById, visits, emitted, state)]));\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction cloneFields(fields)\r\n{\r\n return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, cloneValue(value)]));\r\n}\r\n\r\nfunction cloneValue(value)\r\n{\r\n if (Array.isArray(value)) return value.map(cloneValue);\r\n if (!value || typeof value !== \"object\") return value;\r\n return { ...value };\r\n}\r\n\r\n\r\nfunction createSwarmBehaviorFields(source)\r\n{\r\n if (!source) return null;\r\n const result = {};\r\n for (const name of SWARM_BEHAVIOR_FIELD_NAMES)\r\n {\r\n result[name] = Number(source[name]);\r\n }\r\n result.weightDeceleration = Number(source.weightDecelerate ?? source.weightDeceleration);\r\n return result;\r\n}\r\n\r\n\r\n\r\nfunction SofRequestKey(path, output)\r\n{\r\n return `${normalizeResourcePath(path)}\\0${output}`;\r\n}\r\n\r\nfunction CollectSofRequest(requests, path, output, role, context = null)\r\n{\r\n const normalizedPath = normalizeResourcePath(path);\r\n if (!normalizedPath) return null;\r\n const key = SofRequestKey(normalizedPath, output);\r\n if (!requests.has(key))\r\n {\r\n requests.set(key, { key, path: normalizedPath, output, role, context });\r\n }\r\n return key;\r\n}\r\n\r\nfunction IsCarbonDocument(value)\r\n{\r\n return value?.schema === \"carbon.document\"\r\n && Array.isArray(value.roots)\r\n && Array.isArray(value.nodes);\r\n}\r\n\r\n\r\n\r\nasync function ResolveSofDependency(load, path, role, results, resultKey = path)\r\n{\r\n try\r\n {\r\n const value = await load();\r\n results.set(resultKey, value);\r\n return value;\r\n }\r\n catch (cause)\r\n {\r\n const error = new Error(`EveSOF failed to resolve ${role} resource: ${path}`, { cause });\r\n error.code = \"EVE_SOF_RESOURCE_RESOLUTION_FAILED\";\r\n error.path = path;\r\n error.role = role;\r\n throw error;\r\n }\r\n}\r\n\r\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","edit","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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"}