@carbonenginejs/runtime-trinity 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/curves/CjsGrannyCurves.js +12 -13
  2. package/dist/curves/CjsGrannyCurves.js.map +1 -1
  3. package/dist/eve/EveBannerSet.js +20 -1
  4. package/dist/eve/EveBannerSet.js.map +1 -1
  5. package/dist/eve/EveBoosterSet2.js +19 -1
  6. package/dist/eve/EveBoosterSet2.js.map +1 -1
  7. package/dist/eve/EveComponentTypes.js +116 -0
  8. package/dist/eve/EveComponentTypes.js.map +1 -0
  9. package/dist/eve/EveHazeSet.js +18 -1
  10. package/dist/eve/EveHazeSet.js.map +1 -1
  11. package/dist/eve/EvePlaneSet.js +19 -1
  12. package/dist/eve/EvePlaneSet.js.map +1 -1
  13. package/dist/eve/EveSpotlightSet.js +18 -1
  14. package/dist/eve/EveSpotlightSet.js.map +1 -1
  15. package/dist/eve/EveSpriteLineSet.js +18 -1
  16. package/dist/eve/EveSpriteLineSet.js.map +1 -1
  17. package/dist/eve/EveSpriteSet.js +18 -1
  18. package/dist/eve/EveSpriteSet.js.map +1 -1
  19. package/dist/eve/EveUpdateContext.js +195 -31
  20. package/dist/eve/EveUpdateContext.js.map +1 -1
  21. package/dist/eve/attachment/turrets/EveTurretFiringFX.js +23 -1
  22. package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
  23. package/dist/eve/attachment/turrets/EveTurretSet.js +43 -1
  24. package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  25. package/dist/eve/child/EveChildContainer.js +95 -60
  26. package/dist/eve/child/EveChildContainer.js.map +1 -1
  27. package/dist/eve/child/EveChildFogVolume.js +14 -1
  28. package/dist/eve/child/EveChildFogVolume.js.map +1 -1
  29. package/dist/eve/child/EveChildInstancedMeshes.js +43 -1
  30. package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
  31. package/dist/eve/child/EveChildLightingOverride.js +14 -1
  32. package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
  33. package/dist/eve/child/EveChildMesh.js +121 -80
  34. package/dist/eve/child/EveChildMesh.js.map +1 -1
  35. package/dist/eve/child/EveChildTransform.js +27 -17
  36. package/dist/eve/child/EveChildTransform.js.map +1 -1
  37. package/dist/eve/index.js +2 -0
  38. package/dist/eve/index.js.map +1 -1
  39. package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +14 -1
  40. package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
  41. package/dist/eve/renderable/stretch/EveStretch.js +11 -1
  42. package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
  43. package/dist/eve/renderable/stretch/EveStretch2.js +14 -1
  44. package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
  45. package/dist/eve/renderable/stretch/EveStretch3.js +24 -1
  46. package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
  47. package/dist/eve/scene/EveSpaceScene.js +443 -16
  48. package/dist/eve/scene/EveSpaceScene.js.map +1 -1
  49. package/dist/eve/spaceObject/EveEffectRoot2.js +28 -1
  50. package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
  51. package/dist/eve/spaceObject/EveMobile.js +25 -1
  52. package/dist/eve/spaceObject/EveMobile.js.map +1 -1
  53. package/dist/eve/spaceObject/EveSpaceObject2.js +59 -1
  54. package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  55. package/dist/generated/eve/child/EveChildCloud2.js +88 -5
  56. package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
  57. package/dist/generated/eve/child/EveChildExplosion.js +17 -1
  58. package/dist/generated/eve/child/EveChildExplosion.js.map +1 -1
  59. package/dist/generated/eve/child/EveChildInstanceContainer.js +29 -1
  60. package/dist/generated/eve/child/EveChildInstanceContainer.js.map +1 -1
  61. package/dist/generated/eve/child/EveChildParticleSystem.js +32 -24
  62. package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
  63. package/dist/generated/eve/child/EveChildPlug.js +23 -1
  64. package/dist/generated/eve/child/EveChildPlug.js.map +1 -1
  65. package/dist/generated/eve/child/EveChildPostProcessVolume.js +27 -14
  66. package/dist/generated/eve/child/EveChildPostProcessVolume.js.map +1 -1
  67. package/dist/generated/eve/child/EveChildRef.js +17 -1
  68. package/dist/generated/eve/child/EveChildRef.js.map +1 -1
  69. package/dist/generated/eve/child/EveChildSocket.js +17 -1
  70. package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
  71. package/dist/generated/eve/child/behaviors/BehaviorGroup.js +43 -40
  72. package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
  73. package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js +53 -49
  74. package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
  75. package/dist/generated/eve/scene/EveComponentRegistry.js +11 -0
  76. package/dist/generated/eve/scene/EveComponentRegistry.js.map +1 -1
  77. package/dist/generated/eve/scene/TriShadowFrustum.js +74 -22
  78. package/dist/generated/eve/scene/TriShadowFrustum.js.map +1 -1
  79. package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +128 -26
  80. package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +1 -1
  81. package/dist/generated/eve/smartLights/EveChildSmartLightSet.js +37 -24
  82. package/dist/generated/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
  83. package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +29 -28
  84. package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
  85. package/dist/generated/eve/spaceObject/EveShip2.js +39 -19
  86. package/dist/generated/eve/spaceObject/EveShip2.js.map +1 -1
  87. package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +28 -1
  88. package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
  89. package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js +28 -1
  90. package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
  91. package/dist/index.js +3 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/trinityCore/TriFrustum.js +374 -0
  94. package/dist/trinityCore/TriFrustum.js.map +1 -0
  95. package/dist/trinityCore/TriFrustumOrtho.js +158 -0
  96. package/dist/trinityCore/TriFrustumOrtho.js.map +1 -0
  97. package/dist/trinityCore/index.js +2 -0
  98. package/dist/trinityCore/index.js.map +1 -1
  99. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"EveUpdateContext.js","sources":["../../../src/eve/EveUpdateContext.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/EveUpdateContext.h\n//\n// Hand-maintained (NOT generated). Promoted out of src/generated because this\n// per-frame context carries two runtime-only composition references -\n// renderContext (Tr2RenderContext) and device (TriDevice) - that do not exist\n// in the Carbon schema and would be dropped on every regeneration. The schema\n// scan of EveUpdateContext.h also emitted assignment-statement and local-variable\n// artifacts (time / manager / ps / deltaT / originNow / originDelta - deltaT is\n// computed on demand in Carbon, and the origin temporaries are UpdateOrigin\n// locals) and left every scalar as @type.unknown; both are fixed here.\n// Reviewed tools-core output copies skip this class because a hand-maintained\n// source with the same name already exists.\n//\n// Field types verified against Carbon EveUpdateContext.h. Per the engine field\n// rules: only reference fields (objectRef) default to null; scalars default to\n// 0 / false and fixed vectors to a zero vector.\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\n\n/** EveUpdateContext (eve) - hand-maintained from schema shapeHash 227e2060.... */\n@type.define({ className: \"EveUpdateContext\", family: \"eve\" })\nexport class EveUpdateContext extends CjsModel\n{\n\n /** m_currentTime (Be::Time) */\n @type.float64\n currentTime = 0;\n\n /** m_lastTime (Be::Time) */\n @type.float64\n lastTime = 0;\n\n /** m_visibilityThreshold (float) */\n @type.float32\n visibilityThreshold = 0;\n\n /** m_highDetailThreshold (float) */\n @type.float32\n highDetailThreshold = 0;\n\n /** m_mediumDetailThreshold (float) */\n @type.float32\n mediumDetailThreshold = 0;\n\n /** m_lowDetailThreshold (float) */\n @type.float32\n lowDetailThreshold = 0;\n\n /** m_lodFactor (float) */\n @type.float32\n lodFactor = 0;\n\n /** m_invLodFactor (float) */\n @type.float32\n invLodFactor = 0;\n\n /** m_raytracingEnabled (bool) */\n @type.boolean\n raytracingEnabled = false;\n\n /** m_dataTextureManager (Tr2DataTextureManagerPtr) */\n @type.objectRef(\"Tr2DataTextureManager\")\n dataTextureManager = null;\n\n /** m_gpuParticleSystem (Tr2GpuParticleSystemPtr) */\n @type.objectRef(\"Tr2GpuParticleSystem\")\n gpuParticleSystem = null;\n\n /** m_ballpark (IEveBallparkPtr) */\n @type.objectRef(\"IEveBallpark\")\n ballpark = null;\n\n /** m_taskGroup (Tr2ParallelTaskGroup*) */\n @type.objectRef(\"Tr2ParallelTaskGroup\")\n taskGroup = null;\n\n /** m_frustum (TriFrustum) - swappable per-frame reference, null until stamped. */\n @type.objectRef(\"TriFrustum\")\n frustum = null;\n\n /** m_origin (Vector3d) - double-precision world origin for camera-relative\n * rebasing. Carbon initializes it to UNINITIALIZED_ORIGIN (Infinity sentinel)\n * so the first UpdateOrigin produces no shift. */\n @type.rawStruct(\"Vector3d\")\n origin = new Float64Array(3).fill(Infinity);\n\n /** m_originShift (Vector3) */\n @type.vec3\n originShift = vec3.create();\n\n /** m_originShiftRemainder (Vector3d) */\n @type.rawStruct(\"Vector3d\")\n originShiftRemainder = new Float64Array(3);\n\n // --- Runtime composition (NOT in the Carbon schema) ---------------------\n // Carbon's modifiers read view state from Tr2Renderer statics; we thread it\n // explicitly instead. camera/view -> Tr2RenderContext, device -> TriDevice.\n // Both are swappable per pass; reference fields, default null.\n\n /** renderContext (Tr2RenderContext) - camera/view sub-context, swapped per pass. */\n @type.objectRef(\"Tr2RenderContext\")\n renderContext = null;\n\n /** device (TriDevice) - GPU managers + command surface, duck-typed. */\n @type.objectRef(\"TriDevice\")\n device = null;\n\n /**\n * Current frame time (Carbon EveUpdateContext::GetTime).\n * @returns {Number}\n */\n @carbon.method\n @impl.implemented\n GetTime()\n {\n return this.currentTime;\n }\n\n /**\n * Shifts the current time into lastTime and stores the new frame time\n * (Carbon EveUpdateContext::SetTime).\n * @param {Number} time\n */\n @carbon.method\n @impl.implemented\n SetTime(time)\n {\n this.lastTime = this.currentTime;\n this.currentTime = time;\n }\n\n /**\n * Seconds elapsed since the previous frame, computed on demand as Carbon does\n * (EveUpdateContext::GetDeltaT): 0 until a second SetTime has run.\n * @returns {Number}\n */\n @carbon.method\n @impl.implemented\n GetDeltaT()\n {\n return this.lastTime !== 0 ? this.currentTime - this.lastTime : 0;\n }\n\n /**\n * Tracks the world origin from the ballpark's reference point and computes the\n * per-frame origin shift (Carbon EveUpdateContext::UpdateOrigin): the\n * double-precision delta is split into a float32 shift plus a double residual\n * carried into the next frame; no shift is produced on the first stamped frame\n * (origin still at the Infinity sentinel). The ballpark is duck-typed; per our\n * out-last convention its reference-point read is\n * GetReferencePoint(time, outVector3d) (Carbon passes the out pointer first).\n * @param {Object|null} ballpark\n */\n @carbon.method\n @impl.adapted\n UpdateOrigin(ballpark)\n {\n this.ballpark = ballpark ?? null;\n\n if (!ballpark?.GetReferencePoint)\n {\n return;\n }\n\n const originNow = EveUpdateContext.#originScratch;\n ballpark.GetReferencePoint(this.currentTime, originNow);\n\n if (this.origin[0] !== Infinity)\n {\n // originDelta = originNow - m_origin + m_originShiftRemainder (double),\n // then split into float32 (originShift, negated) + double residual.\n for (let axis = 0; axis < 3; axis++)\n {\n const delta = originNow[axis] - this.origin[axis] + this.originShiftRemainder[axis];\n const deltaF = Math.fround(delta);\n this.originShiftRemainder[axis] = delta - deltaF;\n this.originShift[axis] = -deltaF;\n }\n }\n this.origin.set(originNow);\n }\n\n /**\n * World origin, or (0,0,0) while still uninitialized (Carbon\n * EveUpdateContext::GetOrigin).\n * @returns {Float64Array}\n */\n @carbon.method\n @impl.adapted\n GetOrigin()\n {\n return this.origin[0] !== Infinity ? this.origin : EveUpdateContext.#zeroOrigin;\n }\n\n /**\n * Float32 origin shift for the current frame (Carbon\n * EveUpdateContext::GetOriginShift).\n * @returns {Float32Array}\n */\n @carbon.method\n @impl.implemented\n GetOriginShift()\n {\n return this.originShift;\n }\n\n static #originScratch = new Float64Array(3);\n\n static #zeroOrigin = new Float64Array(3);\n}\n"],"names":["_EveUpdateContext","_identity","EveUpdateContext","CjsModel","e","_init_currentTime","_init_extra_currentTime","_init_lastTime","_init_extra_lastTime","_init_visibilityThreshold","_init_extra_visibilityThreshold","_init_highDetailThreshold","_init_extra_highDetailThreshold","_init_mediumDetailThreshold","_init_extra_mediumDetailThreshold","_init_lowDetailThreshold","_init_extra_lowDetailThreshold","_init_lodFactor","_init_extra_lodFactor","_init_invLodFactor","_init_extra_invLodFactor","_init_raytracingEnabled","_init_extra_raytracingEnabled","_init_dataTextureManager","_init_extra_dataTextureManager","_init_gpuParticleSystem","_init_extra_gpuParticleSystem","_init_ballpark","_init_extra_ballpark","_init_taskGroup","_init_extra_taskGroup","_init_frustum","_init_extra_frustum","_init_origin","_init_extra_origin","_init_originShift","_init_extra_originShift","_init_originShiftRemainder","_init_extra_originShiftRemainder","_init_renderContext","_init_extra_renderContext","_init_device","_init_extra_device","_initProto","c","_initClass","_applyDecs","type","define","className","family","float64","float32","boolean","objectRef","rawStruct","vec3","carbon","method","impl","implemented","adapted","constructor","args","currentTime","lastTime","visibilityThreshold","highDetailThreshold","mediumDetailThreshold","lowDetailThreshold","lodFactor","invLodFactor","raytracingEnabled","dataTextureManager","gpuParticleSystem","ballpark","taskGroup","frustum","origin","Float64Array","fill","Infinity","originShift","create","originShiftRemainder","renderContext","device","GetTime","SetTime","time","GetDeltaT","UpdateOrigin","GetReferencePoint","originNow","axis","delta","deltaF","Math","fround","set","GetOrigin","GetOriginShift"],"mappings":";;;;;;;AAqBA;AAAA,IAAAA;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QACA,MAAAC,gBAAA,SACsCC,QAAQ,CAC9C;AAAA,IAAA;AAAA,MAAA,CAAA;AAAAC,QAAAA,CAAA,GAAAC,iBAAA,EAAAC,uBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,yBAAA,EAAAC,+BAAA,EAAAC,yBAAA,EAAAC,+BAAA,EAAAC,2BAAA,EAAAC,iCAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,wBAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAA5C,iBAAA,EAAA6C,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,kBAAkB;AAAEC,QAAAA,MAAM,EAAE;OAAO,CAAC,MAK3DH,IAAI,EAAJA,IAAI,CAACI,OAAO,yBAIZJ,IAAI,EAAJA,IAAI,CAACI,OAAO,sBAIZJ,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACK,OAAO,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAIZL,IAAI,EAAJA,IAAI,CAACM,OAAO,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAIZN,IAAI,CAACO,SAAS,CAAC,uBAAuB,CAAC,EAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAIvCP,IAAI,CAACO,SAAS,CAAC,sBAAsB,CAAC,EAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAItCP,IAAI,CAACO,SAAS,CAAC,cAAc,CAAC,mBAI9BP,IAAI,CAACO,SAAS,CAAC,sBAAsB,CAAC,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAItCP,IAAI,CAACO,SAAS,CAAC,YAAY,CAAC,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAM5BP,IAAI,CAACQ,SAAS,CAAC,UAAU,CAAC,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAI1BR,IAAI,EAAJA,IAAI,CAACS,IAAI,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAITT,IAAI,CAACQ,SAAS,CAAC,UAAU,CAAC,+BAS1BR,IAAI,CAACO,SAAS,CAAC,kBAAkB,CAAC,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAIlCP,IAAI,CAACO,SAAS,CAAC,WAAW,CAAC,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAO3BG,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,qBAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,uBAgBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAiCZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAWZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAnLmBzD,QAAQ,CAAA;AAAA;AAAA2D,IAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,MAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;MAAArB,kBAAA,CAAA,IAAA,CAAA;AAAA,IAAA;AAG5C;AAEAsB,IAAAA,WAAW,IAAArB,UAAA,CAAA,IAAA,CAAA,EAAAtC,iBAAA,OAAG,CAAC,CAAA;;AAEf;AAEA4D,IAAAA,QAAQ,IAAA3D,uBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,CAAC,CAAA;;AAEZ;AAEA2D,IAAAA,mBAAmB,IAAA1D,oBAAA,CAAA,IAAA,CAAA,EAAAC,yBAAA,OAAG,CAAC,CAAA;;AAEvB;AAEA0D,IAAAA,mBAAmB,IAAAzD,+BAAA,CAAA,IAAA,CAAA,EAAAC,yBAAA,OAAG,CAAC,CAAA;;AAEvB;AAEAyD,IAAAA,qBAAqB,IAAAxD,+BAAA,CAAA,IAAA,CAAA,EAAAC,2BAAA,OAAG,CAAC,CAAA;;AAEzB;AAEAwD,IAAAA,kBAAkB,IAAAvD,iCAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,CAAC,CAAA;;AAEtB;AAEAuD,IAAAA,SAAS,IAAAtD,8BAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;;AAEb;AAEAsD,IAAAA,YAAY,IAAArD,qBAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,OAAG,CAAC,CAAA;;AAEhB;AAEAqD,IAAAA,iBAAiB,IAAApD,wBAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,OAAG,KAAK,CAAA;;AAEzB;AAEAoD,IAAAA,kBAAkB,IAAAnD,6BAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,IAAI,CAAA;;AAEzB;AAEAmD,IAAAA,iBAAiB,IAAAlD,8BAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,OAAG,IAAI,CAAA;;AAExB;AAEAkD,IAAAA,QAAQ,IAAAjD,6BAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAG,IAAI,CAAA;;AAEf;AAEAiD,IAAAA,SAAS,IAAAhD,oBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,IAAI,CAAA;;AAEhB;AAEAgD,IAAAA,OAAO,IAAA/C,qBAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;;AAEd;AACF;AACA;AAEE+C,IAAAA,MAAM,IAAA9C,mBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,IAAI8C,YAAY,CAAC,CAAC,CAAC,CAACC,IAAI,CAACC,QAAQ,CAAC,CAAA;;AAE3C;IAEAC,WAAW,IAAAhD,kBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAGqB,IAAI,CAAC2B,MAAM,EAAE,CAAA;;AAE3B;IAEAC,oBAAoB,IAAAhD,uBAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAG,IAAI0C,YAAY,CAAC,CAAC,CAAC,CAAA;;AAE1C;AACA;AACA;AACA;;AAEA;AAEAM,IAAAA,aAAa,IAAA/C,gCAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;;AAEpB;AAEA+C,IAAAA,MAAM,IAAA9C,yBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,IAAI,CAAA;;AAEb;AACF;AACA;AACA;AAGE8C,IAAAA,OAAOA,GACP;MACE,OAAO,IAAI,CAACvB,WAAW;AACzB,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEwB,OAAOA,CAACC,IAAI,EACZ;AACE,MAAA,IAAI,CAACxB,QAAQ,GAAG,IAAI,CAACD,WAAW;MAChC,IAAI,CAACA,WAAW,GAAGyB,IAAI;AACzB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEC,IAAAA,SAASA,GACT;AACE,MAAA,OAAO,IAAI,CAACzB,QAAQ,KAAK,CAAC,GAAG,IAAI,CAACD,WAAW,GAAG,IAAI,CAACC,QAAQ,GAAG,CAAC;AACnE,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAGE0B,YAAYA,CAAChB,QAAQ,EACrB;AACE,MAAA,IAAI,CAACA,QAAQ,GAAGA,QAAQ,IAAI,IAAI;AAEhC,MAAA,IAAI,CAACA,QAAQ,EAAEiB,iBAAiB,EAChC;AACE,QAAA;AACF,MAAA;AAEA,MAAA,MAAMC,SAAS,GAAG3F,iBAAgB,CAAC,cAAc;MACjDyE,QAAQ,CAACiB,iBAAiB,CAAC,IAAI,CAAC5B,WAAW,EAAE6B,SAAS,CAAC;MAEvD,IAAI,IAAI,CAACf,MAAM,CAAC,CAAC,CAAC,KAAKG,QAAQ,EAC/B;AACE;AACA;QACA,KAAK,IAAIa,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;AACE,UAAA,MAAMC,KAAK,GAAGF,SAAS,CAACC,IAAI,CAAC,GAAG,IAAI,CAAChB,MAAM,CAACgB,IAAI,CAAC,GAAG,IAAI,CAACV,oBAAoB,CAACU,IAAI,CAAC;AACnF,UAAA,MAAME,MAAM,GAAGC,IAAI,CAACC,MAAM,CAACH,KAAK,CAAC;UACjC,IAAI,CAACX,oBAAoB,CAACU,IAAI,CAAC,GAAGC,KAAK,GAAGC,MAAM;AAChD,UAAA,IAAI,CAACd,WAAW,CAACY,IAAI,CAAC,GAAG,CAACE,MAAM;AAClC,QAAA;AACF,MAAA;AACA,MAAA,IAAI,CAAClB,MAAM,CAACqB,GAAG,CAACN,SAAS,CAAC;AAC5B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEO,IAAAA,SAASA,GACT;AACE,MAAA,OAAO,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAC,KAAKG,QAAQ,GAAG,IAAI,CAACH,MAAM,GAAG5E,iBAAgB,CAAC,WAAW;AACjF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEmG,IAAAA,cAAcA,GACd;MACE,OAAO,IAAI,CAACnB,WAAW;AACzB,IAAA;GAKD;AAHQ,EAAA,cAAc,GAAG,IAAIH,YAAY,CAAC,CAAC,CAAC;AAEpC,EAAA,WAAW,GAAG,IAAIA,YAAY,CAAC,CAAC,CAAC;EAACjB,WAAAA,GAAA;IAAA,KAAA,CAAA9D,iBAAA,GAAA6C,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
1
+ {"version":3,"file":"EveUpdateContext.js","sources":["../../../src/eve/EveUpdateContext.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/EveUpdateContext.h\r\n//\r\n// Hand-maintained (NOT generated). Promoted out of src/generated because this\r\n// per-frame context carries two runtime-only composition references -\r\n// renderContext (Tr2RenderContext) and device (TriDevice) - that do not exist\r\n// in the Carbon schema and would be dropped on every regeneration. The schema\r\n// scan of EveUpdateContext.h also emitted assignment-statement and local-variable\r\n// artifacts (time / manager / ps / deltaT / originNow / originDelta - deltaT is\r\n// computed on demand in Carbon, and the origin temporaries are UpdateOrigin\r\n// locals) and left every scalar as @type.unknown; both are fixed here.\r\n// Reviewed tools-core output copies skip this class because a hand-maintained\r\n// source with the same name already exists.\r\n//\r\n// Field types verified against Carbon EveUpdateContext.h. Per the engine field\r\n// rules: only reference fields (objectRef) default to null; scalars default to\r\n// 0 / false and fixed vectors to a zero vector.\r\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\n\r\n/** EveUpdateContext (eve) - hand-maintained from schema shapeHash 227e2060.... */\r\n@type.define({ className: \"EveUpdateContext\", family: \"eve\" })\r\nexport class EveUpdateContext extends CjsModel\r\n{\r\n\r\n /** m_currentTime (Be::Time) */\r\n @type.float64\r\n currentTime = 0;\r\n\r\n /** m_lastTime (Be::Time) */\r\n @type.float64\r\n lastTime = 0;\r\n\r\n /** m_visibilityThreshold (float) */\r\n @type.float32\r\n visibilityThreshold = 0;\r\n\r\n /** m_highDetailThreshold (float) */\r\n @type.float32\r\n highDetailThreshold = 0;\r\n\r\n /** m_mediumDetailThreshold (float) */\r\n @type.float32\r\n mediumDetailThreshold = 0;\r\n\r\n /** m_lowDetailThreshold (float) */\r\n @type.float32\r\n lowDetailThreshold = 0;\r\n\r\n /** m_lodFactor (float) */\r\n @type.float32\r\n lodFactor = 0;\r\n\r\n /** m_invLodFactor (float) */\r\n @type.float32\r\n invLodFactor = 0;\r\n\r\n /** m_raytracingEnabled (bool) */\r\n @type.boolean\r\n raytracingEnabled = false;\r\n\r\n /** m_dataTextureManager (Tr2DataTextureManagerPtr) */\r\n @type.objectRef(\"Tr2DataTextureManager\")\r\n dataTextureManager = null;\r\n\r\n /** m_gpuParticleSystem (Tr2GpuParticleSystemPtr) */\r\n @type.objectRef(\"Tr2GpuParticleSystem\")\r\n gpuParticleSystem = null;\r\n\r\n /** m_ballpark (IEveBallparkPtr) */\r\n @type.objectRef(\"IEveBallpark\")\r\n ballpark = null;\r\n\r\n /** m_taskGroup (Tr2ParallelTaskGroup*) */\r\n @type.objectRef(\"Tr2ParallelTaskGroup\")\r\n taskGroup = null;\r\n\r\n /** m_frustum (TriFrustum) - swappable per-frame reference, null until stamped. */\r\n @type.objectRef(\"TriFrustum\")\r\n frustum = null;\r\n\r\n /** m_origin (Vector3d) - double-precision world origin for camera-relative\r\n * rebasing. Carbon initializes it to UNINITIALIZED_ORIGIN (Infinity sentinel)\r\n * so the first UpdateOrigin produces no shift. */\r\n @type.rawStruct(\"Vector3d\")\r\n origin = new Float64Array(3).fill(Infinity);\r\n\r\n /** m_originShift (Vector3) */\r\n @type.vec3\r\n originShift = vec3.create();\r\n\r\n /** m_originShiftRemainder (Vector3d) */\r\n @type.rawStruct(\"Vector3d\")\r\n originShiftRemainder = new Float64Array(3);\r\n\r\n // --- Runtime composition (NOT in the Carbon schema) ---------------------\r\n // Carbon's modifiers read view state from Tr2Renderer statics; we thread it\r\n // explicitly instead. camera/view -> Tr2RenderContext, device -> TriDevice.\r\n // Both are swappable per pass; reference fields, default null.\r\n\r\n /** renderContext (Tr2RenderContext) - camera/view sub-context, swapped per pass. */\r\n @type.objectRef(\"Tr2RenderContext\")\r\n renderContext = null;\r\n\r\n /** device (TriDevice) - GPU managers + command surface, duck-typed. */\r\n @type.objectRef(\"TriDevice\")\r\n device = null;\r\n\r\n /**\r\n * Current frame time (Carbon EveUpdateContext::GetTime).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTime()\r\n {\r\n return this.currentTime;\r\n }\r\n\r\n /**\r\n * Shifts the current time into lastTime and stores the new frame time\r\n * (Carbon EveUpdateContext::SetTime).\r\n * @param {Number} time\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetTime(time)\r\n {\r\n this.lastTime = this.currentTime;\r\n this.currentTime = time;\r\n }\r\n\r\n /**\r\n * Seconds elapsed since the previous frame, computed on demand as Carbon does\r\n * (EveUpdateContext::GetDeltaT): 0 until a second SetTime has run.\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDeltaT()\r\n {\r\n return this.lastTime !== 0 ? this.currentTime - this.lastTime : 0;\r\n }\r\n\r\n /**\r\n * Tracks the world origin from the ballpark's reference point and computes the\r\n * per-frame origin shift (Carbon EveUpdateContext::UpdateOrigin): the\r\n * double-precision delta is split into a float32 shift plus a double residual\r\n * carried into the next frame; no shift is produced on the first stamped frame\r\n * (origin still at the Infinity sentinel). The ballpark is duck-typed; per our\r\n * out-last convention its reference-point read is\r\n * GetReferencePoint(time, outVector3d) (Carbon passes the out pointer first).\r\n * @param {Object|null} ballpark\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateOrigin(ballpark)\r\n {\r\n this.ballpark = ballpark ?? null;\r\n\r\n if (!ballpark?.GetReferencePoint)\r\n {\r\n return;\r\n }\r\n\r\n const originNow = EveUpdateContext.#originScratch;\r\n ballpark.GetReferencePoint(this.currentTime, originNow);\r\n\r\n if (this.origin[0] !== Infinity)\r\n {\r\n // originDelta = originNow - m_origin + m_originShiftRemainder (double),\r\n // then split into float32 (originShift, negated) + double residual.\r\n for (let axis = 0; axis < 3; axis++)\r\n {\r\n const delta = originNow[axis] - this.origin[axis] + this.originShiftRemainder[axis];\r\n const deltaF = Math.fround(delta);\r\n this.originShiftRemainder[axis] = delta - deltaF;\r\n this.originShift[axis] = -deltaF;\r\n }\r\n }\r\n this.origin.set(originNow);\r\n }\r\n\r\n /**\r\n * World origin, or (0,0,0) while still uninitialized (Carbon\r\n * EveUpdateContext::GetOrigin).\r\n * @returns {Float64Array}\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetOrigin()\r\n {\r\n return this.origin[0] !== Infinity ? this.origin : EveUpdateContext.#zeroOrigin;\r\n }\r\n\r\n /**\r\n * Float32 origin shift for the current frame (Carbon\r\n * EveUpdateContext::GetOriginShift).\r\n * @returns {Float32Array}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetOriginShift()\r\n {\r\n return this.originShift;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetDataTextureManager (h:61-64).\r\n * @returns {Object|null}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDataTextureManager()\r\n {\r\n return this.dataTextureManager;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetDataTextureManager (h:65-68).\r\n * @param {Object|null} manager\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetDataTextureManager(manager)\r\n {\r\n this.dataTextureManager = manager ?? null;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetGpuParticleSystem (h:70-73).\r\n * @returns {Object|null}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetGpuParticleSystem()\r\n {\r\n return this.gpuParticleSystem;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetGpuParticleSystem (h:74-77).\r\n * @param {Object|null} ps\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetGpuParticleSystem(ps)\r\n {\r\n this.gpuParticleSystem = ps ?? null;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetBallpark (h:79-82) - stamped by UpdateOrigin.\r\n * @returns {Object|null}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBallpark()\r\n {\r\n return this.ballpark;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetTaskGroup (h:116-119).\r\n * @param {Object|null} taskGroup\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetTaskGroup(taskGroup)\r\n {\r\n this.taskGroup = taskGroup ?? null;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetTaskGroup (h:121-124).\r\n * @returns {Object|null}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTaskGroup()\r\n {\r\n return this.taskGroup;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetVisibilityThreshold (h:126-129).\r\n * @param {Number} visibilityThreshold\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetVisibilityThreshold(visibilityThreshold)\r\n {\r\n this.visibilityThreshold = visibilityThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetVisibilityThreshold (h:131-134).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetVisibilityThreshold()\r\n {\r\n return this.visibilityThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetHighDetailThreshold (h:136-139).\r\n * @param {Number} highDetailThreshold\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetHighDetailThreshold(highDetailThreshold)\r\n {\r\n this.highDetailThreshold = highDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetHighDetailThreshold (h:141-144).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetHighDetailThreshold()\r\n {\r\n return this.highDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetMediumDetailThreshold (h:146-149).\r\n * @param {Number} mediumDetailThreshold\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetMediumDetailThreshold(mediumDetailThreshold)\r\n {\r\n this.mediumDetailThreshold = mediumDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetMediumDetailThreshold (h:151-154).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetMediumDetailThreshold()\r\n {\r\n return this.mediumDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetLowDetailThreshold (h:156-159).\r\n * @param {Number} lowDetailThreshold\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetLowDetailThreshold(lowDetailThreshold)\r\n {\r\n this.lowDetailThreshold = lowDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetLowDetailThreshold (h:161-164).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLowDetailThreshold()\r\n {\r\n return this.lowDetailThreshold;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetLodFactor (h:166-170) - maintains the\r\n * invariant invLodFactor = 1 / lodFactor (no zero guard, matching Carbon).\r\n * @param {Number} lodFactor\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetLodFactor(lodFactor)\r\n {\r\n this.lodFactor = lodFactor;\r\n this.invLodFactor = 1 / lodFactor;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetLodFactor (h:172-175).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLodFactor()\r\n {\r\n return this.lodFactor;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetInvLodFactor (h:177-180).\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetInvLodFactor()\r\n {\r\n return this.invLodFactor;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::SetFrustum (h:182-185) - the driver stamps a\r\n * ready TriFrustum per frame (spec decision 4); held by reference, not\r\n * copied.\r\n * @param {Object|null} frustum - TriFrustum\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetFrustum(frustum)\r\n {\r\n this.frustum = frustum ?? null;\r\n }\r\n\r\n /**\r\n * Carbon EveUpdateContext::GetFrustum (h:187-190).\r\n * @returns {Object|null}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetFrustum()\r\n {\r\n return this.frustum;\r\n }\r\n\r\n static #originScratch = new Float64Array(3);\r\n\r\n static #zeroOrigin = new Float64Array(3);\r\n}\r\n"],"names":["_EveUpdateContext","_identity","EveUpdateContext","CjsModel","e","_init_currentTime","_init_extra_currentTime","_init_lastTime","_init_extra_lastTime","_init_visibilityThreshold","_init_extra_visibilityThreshold","_init_highDetailThreshold","_init_extra_highDetailThreshold","_init_mediumDetailThreshold","_init_extra_mediumDetailThreshold","_init_lowDetailThreshold","_init_extra_lowDetailThreshold","_init_lodFactor","_init_extra_lodFactor","_init_invLodFactor","_init_extra_invLodFactor","_init_raytracingEnabled","_init_extra_raytracingEnabled","_init_dataTextureManager","_init_extra_dataTextureManager","_init_gpuParticleSystem","_init_extra_gpuParticleSystem","_init_ballpark","_init_extra_ballpark","_init_taskGroup","_init_extra_taskGroup","_init_frustum","_init_extra_frustum","_init_origin","_init_extra_origin","_init_originShift","_init_extra_originShift","_init_originShiftRemainder","_init_extra_originShiftRemainder","_init_renderContext","_init_extra_renderContext","_init_device","_init_extra_device","_initProto","c","_initClass","_applyDecs","type","define","className","family","float64","float32","boolean","objectRef","rawStruct","vec3","carbon","method","impl","implemented","adapted","constructor","args","currentTime","lastTime","visibilityThreshold","highDetailThreshold","mediumDetailThreshold","lowDetailThreshold","lodFactor","invLodFactor","raytracingEnabled","dataTextureManager","gpuParticleSystem","ballpark","taskGroup","frustum","origin","Float64Array","fill","Infinity","originShift","create","originShiftRemainder","renderContext","device","GetTime","SetTime","time","GetDeltaT","UpdateOrigin","GetReferencePoint","originNow","axis","delta","deltaF","Math","fround","set","GetOrigin","GetOriginShift","GetDataTextureManager","SetDataTextureManager","manager","GetGpuParticleSystem","SetGpuParticleSystem","ps","GetBallpark","SetTaskGroup","GetTaskGroup","SetVisibilityThreshold","GetVisibilityThreshold","SetHighDetailThreshold","GetHighDetailThreshold","SetMediumDetailThreshold","GetMediumDetailThreshold","SetLowDetailThreshold","GetLowDetailThreshold","SetLodFactor","GetLodFactor","GetInvLodFactor","SetFrustum","GetFrustum"],"mappings":"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"}
@@ -18,7 +18,7 @@ new class extends _identity {
18
18
  } = _applyDecs2311(this, [type.define({
19
19
  className: "EveTurretFiringFX",
20
20
  family: "eve/attachment/turrets"
21
- })], [[[io, io.persist, void 0, type.model("TriCurveSet")], 16, "startCurveSet"], [[io, io.persist, void 0, type.model("TriCurveSet")], 16, "stopCurveSet"], [[io, io.persist, void 0, type.list("IEveFiringEffectElement")], 16, "stretch"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.float32], 16, "firingPeakTime"], [[io, io.persist, type, type.float32], 16, "firingDelay1"], [[io, io.persist, type, type.float32], 16, "firingDelay10"], [[io, io.persist, type, type.float32], 16, "firingDelay11"], [[io, io.persist, type, type.float32], 16, "firingDelay12"], [[io, io.persist, type, type.float32], 16, "firingDelay2"], [[io, io.persist, type, type.float32], 16, "firingDelay3"], [[io, io.persist, type, type.float32], 16, "firingDelay4"], [[io, io.persist, type, type.float32], 16, "firingDelay5"], [[io, io.persist, type, type.float32], 16, "firingDelay6"], [[io, io.persist, type, type.float32], 16, "firingDelay7"], [[io, io.persist, type, type.float32], 16, "firingDelay8"], [[io, io.persist, type, type.float32], 16, "firingDelay9"], [[io, io.readwrite, type, type.vec3], 16, "endPosition"], [[io, io.read, type, type.float32], 16, "firingDuration"], [[io, io.read, type, type.boolean], 16, "isFiring"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "destinationObserver"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "sourceObserver"], [[io, io.notify, io, io.persist, type, type.float32], 16, "firingDurationOverride"], [[io, io.persist, type, type.boolean], 16, "useMuzzleTransform"], [[io, io.persist, type, type.boolean], 16, "isLoopFiring"], [[io, io.persist, type, type.string], 16, "boneName"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "display"], [[io, io.persist, type, type.boolean], 16, "scaleEffectTarget"], [[io, io.persist, type, type.float32], 16, "minRadius"], [[io, io.persist, type, type.float32], 16, "maxRadius"], [[io, io.persist, type, type.float32], 16, "minScale"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "CleanUp"], [[carbon, carbon.method, impl, impl.implemented], 18, "OnModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetMuzzleBoneID"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetMuzzleTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMuzzleTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetEndPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetScaleByRadius"], [[carbon, carbon.method, impl, impl.implemented], 18, "PrepareFiringEffectMoveObjects"], [[carbon, carbon.method, impl, impl.implemented], 18, "PrepareFiring"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetStartPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringPeakTime"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringBoneName"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartMuzzleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopFiring"], [[carbon, carbon.method, impl, impl.implemented], 18, "ReadyToFire"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's task update is serial in the browser; firing elements retain their explicit async phase.")], 18, "UpdateAsynchronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's task update is serial in the browser; firing elements retain their explicit sync phase.")], 18, "UpdateSynchronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Visibility is forwarded to graph elements; small-angle muzzle merging uses portable frustum fields when present.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderable collection is backend-neutral; draw realization remains runtime-engine work.")], 18, "GetRenderables"], [[io, io.persist, type, type.float32], 16, "maxScale"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPerMuzzleEffectCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPerMuzzleBoneID"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsLooping"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplayDestObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDisplayDestObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplaySourceObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDisplaySourceObject"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Audio emitters are duck-typed; Carbon impact switch values are forwarded without native interfaces.")], 18, "SetImpactConfiguration"]], 0, void 0, _EveEntity));
21
+ })], [[[io, io.persist, void 0, type.model("TriCurveSet")], 16, "startCurveSet"], [[io, io.persist, void 0, type.model("TriCurveSet")], 16, "stopCurveSet"], [[io, io.persist, void 0, type.list("IEveFiringEffectElement")], 16, "stretch"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.float32], 16, "firingPeakTime"], [[io, io.persist, type, type.float32], 16, "firingDelay1"], [[io, io.persist, type, type.float32], 16, "firingDelay10"], [[io, io.persist, type, type.float32], 16, "firingDelay11"], [[io, io.persist, type, type.float32], 16, "firingDelay12"], [[io, io.persist, type, type.float32], 16, "firingDelay2"], [[io, io.persist, type, type.float32], 16, "firingDelay3"], [[io, io.persist, type, type.float32], 16, "firingDelay4"], [[io, io.persist, type, type.float32], 16, "firingDelay5"], [[io, io.persist, type, type.float32], 16, "firingDelay6"], [[io, io.persist, type, type.float32], 16, "firingDelay7"], [[io, io.persist, type, type.float32], 16, "firingDelay8"], [[io, io.persist, type, type.float32], 16, "firingDelay9"], [[io, io.readwrite, type, type.vec3], 16, "endPosition"], [[io, io.read, type, type.float32], 16, "firingDuration"], [[io, io.read, type, type.boolean], 16, "isFiring"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "destinationObserver"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "sourceObserver"], [[io, io.notify, io, io.persist, type, type.float32], 16, "firingDurationOverride"], [[io, io.persist, type, type.boolean], 16, "useMuzzleTransform"], [[io, io.persist, type, type.boolean], 16, "isLoopFiring"], [[io, io.persist, type, type.string], 16, "boneName"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "display"], [[io, io.persist, type, type.boolean], 16, "scaleEffectTarget"], [[io, io.persist, type, type.float32], 16, "minRadius"], [[io, io.persist, type, type.float32], 16, "maxRadius"], [[io, io.persist, type, type.float32], 16, "minScale"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "CleanUp"], [[carbon, carbon.method, impl, impl.implemented], 18, "OnModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetMuzzleBoneID"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetMuzzleTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMuzzleTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetEndPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetScaleByRadius"], [[carbon, carbon.method, impl, impl.implemented], 18, "PrepareFiringEffectMoveObjects"], [[carbon, carbon.method, impl, impl.implemented], 18, "PrepareFiring"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetStartPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringPeakTime"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetFiringBoneName"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartMuzzleEffect"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopFiring"], [[carbon, carbon.method, impl, impl.implemented], 18, "ReadyToFire"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's task update is serial in the browser; firing elements retain their explicit async phase.")], 18, "UpdateAsynchronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's task update is serial in the browser; firing elements retain their explicit sync phase.")], 18, "UpdateSynchronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Visibility is forwarded to graph elements; small-angle muzzle merging uses portable frustum fields when present.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderable collection is backend-neutral; draw realization remains runtime-engine work.")], 18, "GetRenderables"], [[io, io.persist, type, type.float32], 16, "maxScale"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPerMuzzleEffectCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPerMuzzleBoneID"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsLooping"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplayDestObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDisplayDestObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplaySourceObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetDisplaySourceObject"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing-element method forwarding.")], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Audio emitters are duck-typed; Carbon impact switch values are forwarded without native interfaces.")], 18, "SetImpactConfiguration"]], 0, void 0, _EveEntity));
22
22
  }
23
23
  constructor(...args) {
24
24
  super(...args);
@@ -355,6 +355,28 @@ new class extends _identity {
355
355
  StartControllers() {
356
356
  for (const stretch of this.stretch) stretch?.StartControllers?.();
357
357
  }
358
+
359
+ /** Carbon EveTurretFiringFX::RegisterComponents (cpp:739-752): forwards the
360
+ * stretch elements. Gate m_display && m_isFiring. */
361
+ RegisterComponents() {
362
+ const registry = this.GetComponentRegistry();
363
+ if (registry && this.display && this.isFiring) {
364
+ for (const element of this.stretch) {
365
+ element?.Register?.(registry);
366
+ }
367
+ }
368
+ }
369
+
370
+ /** Carbon EveTurretFiringFX::UnRegisterComponents (cpp:755-768): forwards
371
+ * the stretch elements; no display/isFiring re-check. */
372
+ UnRegisterComponents() {
373
+ const registry = this.GetComponentRegistry();
374
+ if (registry) {
375
+ for (const element of this.stretch) {
376
+ element?.UnRegister?.(registry);
377
+ }
378
+ }
379
+ }
358
380
  SetImpactConfiguration(configuration) {
359
381
  if (configuration !== this.#impactConfiguration) {
360
382
  const emitter = this.destinationObserver?.GetObserver?.();
@@ -1 +1 @@
1
- {"version":3,"file":"EveTurretFiringFX.js","sources":["../../../../../src/eve/attachment/turrets/EveTurretFiringFX.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX.cpp\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX_Blue.cpp\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveEntity } from \"../../../generated/eve/EveEntity.js\";\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { getDeltaTime, getTime, translationMatrix } from \"../../renderable/stretch/CjsStretchRuntime.js\";\n\n/** EveTurretFiringFX (eve/attachment/turrets) - generated from schema shapeHash ae5459c6.... */\n@type.define({ className: \"EveTurretFiringFX\", family: \"eve/attachment/turrets\" })\nexport class EveTurretFiringFX extends EveEntity\n{\n\n /** m_startCurveSet (TriCurveSetPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"TriCurveSet\")\n startCurveSet = null;\n\n /** m_stopCurveSet (TriCurveSetPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"TriCurveSet\")\n stopCurveSet = null;\n\n /** m_stretch (PIEveFiringEffectElementVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveFiringEffectElement\")\n stretch = [];\n\n /** m_name (std::string) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_firingPeakTime (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingPeakTime = 0;\n\n /** m_perMuzzleData[0].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay1 = 0;\n\n /** m_perMuzzleData[9].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay10 = 0;\n\n /** m_perMuzzleData[10].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay11 = 0;\n\n /** m_perMuzzleData[11].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay12 = 0;\n\n /** m_perMuzzleData[1].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay2 = 0;\n\n /** m_perMuzzleData[2].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay3 = 0;\n\n /** m_perMuzzleData[3].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay4 = 0;\n\n /** m_perMuzzleData[4].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay5 = 0;\n\n /** m_perMuzzleData[5].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay6 = 0;\n\n /** m_perMuzzleData[6].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay7 = 0;\n\n /** m_perMuzzleData[7].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay8 = 0;\n\n /** m_perMuzzleData[8].constantDelay (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n firingDelay9 = 0;\n\n /** m_endPosition (Vector3) [READWRITE] */\n @io.readwrite\n @type.vec3\n endPosition = vec3.create();\n\n /** m_firingDuration (float) [READ] */\n @io.read\n @type.float32\n firingDuration = 1000;\n\n /** m_isFiring (bool) [READ] */\n @io.read\n @type.boolean\n isFiring = false;\n\n /** m_destinationObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"TriObserverLocal\")\n destinationObserver = null;\n\n /** m_sourceObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"TriObserverLocal\")\n sourceObserver = null;\n\n /** m_firingDurationOverride (float) [READWRITE, NOTIFY, PERSIST] */\n @io.notify\n @io.persist\n @type.float32\n firingDurationOverride = -1;\n\n /** m_useMuzzleTransform (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n useMuzzleTransform = false;\n\n /** m_isLoopFiring (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n isLoopFiring = false;\n\n /** m_boneName (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n boneName = \"Pos_Fire\";\n\n /** m_display (bool) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.boolean\n display = true;\n\n /** m_scaleEffectTarget (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n scaleEffectTarget = false;\n\n /** m_minRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n minRadius = 30;\n\n /** m_maxRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n maxRadius = 3000;\n\n /** m_minScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n minScale = 1;\n\n #perMuzzleData = [];\n\n #displaySourceObject = true;\n\n #displayDestObject = true;\n\n #impactConfiguration = EveTurretFiringFX.ImpactConfiguration.IMPACT_INVALID;\n\n @carbon.method\n @impl.implemented\n Initialize()\n {\n this.#ensureMuzzleData();\n if (this.firingDurationOverride >= 0) this.firingDuration = this.firingDurationOverride;\n else\n {\n const duration = this.GetCurveDuration();\n if (duration > 0) this.firingDuration = duration;\n }\n return true;\n }\n\n @carbon.method\n @impl.implemented\n CleanUp(context = { currentTime: 0, deltaTime: 0 })\n {\n this.StopFiring();\n this.UpdateAsynchronous(context);\n this.UpdateSynchronous(context);\n }\n\n @carbon.method\n @impl.implemented\n OnModified()\n {\n this.firingDuration = this.firingDurationOverride >= 0 ? this.firingDurationOverride : this.GetCurveDuration();\n return true;\n }\n\n @carbon.method\n @impl.implemented\n SetMuzzleBoneID(muzzleID, boneID)\n {\n this.#ensureMuzzleData();\n if (muzzleID >= 0 && muzzleID < EveTurretFiringFX.MUZZLE_COUNT_MAX) this.#perMuzzleData[muzzleID].muzzlePositionBoneID = Number(boneID) >>> 0;\n }\n\n @carbon.method\n @impl.implemented\n SetMuzzleTransform(muzzleID, transform)\n {\n this.#ensureMuzzleData();\n if (muzzleID >= 0 && muzzleID < EveTurretFiringFX.MUZZLE_COUNT_MAX) mat4.copy(this.#perMuzzleData[muzzleID].muzzleTransform, transform);\n }\n\n @carbon.method\n @impl.implemented\n GetMuzzleTransform(muzzleID, out = mat4.create())\n {\n this.#ensureMuzzleData();\n return mat4.copy(out, this.#perMuzzleData[muzzleID]?.muzzleTransform ?? EveTurretFiringFX.#identity);\n }\n\n @carbon.method\n @impl.implemented\n SetEndPosition(value)\n {\n vec3.copy(this.endPosition, value);\n }\n\n @carbon.method\n @impl.implemented\n SetScaleByRadius(radius)\n {\n if (!this.scaleEffectTarget) return;\n const span = this.maxRadius - this.minRadius;\n const amount = span ? (Number(radius) - this.minRadius) / span : 0;\n const scale = Math.max(this.minScale, Math.min(this.maxScale, this.minScale + amount * (this.maxScale - this.minScale)));\n for (const stretch of this.stretch) stretch?.SetDestObjectScale?.(scale);\n this.destinationObserver?.GetObserver?.()?.SetAttenuationScalingFactor?.(Number(radius));\n }\n\n @carbon.method\n @impl.implemented\n PrepareFiringEffectMoveObjects()\n {\n for (const stretch of this.stretch) stretch?.StartMoving?.();\n this.isFiring = true;\n }\n\n @carbon.method\n @impl.implemented\n PrepareFiring(delay, muzzleID = EveTurretFiringFX.INVALID_INDEX, muzzleCount = EveTurretFiringFX.INVALID_INDEX)\n {\n this.#ensureMuzzleData();\n for (let index = 0; index < this.stretch.length; index++)\n {\n const selected = muzzleID === EveTurretFiringFX.INVALID_INDEX || (index >= muzzleID && index < muzzleID + muzzleCount);\n const data = this.#perMuzzleData[index];\n data.currentStartDelay = selected ? Number(delay) + data.constantDelay : Number.MAX_VALUE;\n data.started = false;\n data.readyToStart = false;\n data.elapsedTime = 0;\n }\n this.isFiring = true;\n }\n\n @carbon.method\n @impl.implemented\n GetCurveDuration()\n {\n let duration = 0;\n for (const stretch of this.stretch) duration = Math.max(duration, Number(stretch?.GetCurveDuration?.() ?? 0));\n return duration;\n }\n\n @carbon.method\n @impl.implemented\n GetStartPosition(out = vec3.create())\n {\n if (!this.isFiring) return false;\n this.#ensureMuzzleData();\n vec3.zero(EveTurretFiringFX.#startPosition);\n let count = 0;\n for (const data of this.#perMuzzleData.slice(0, this.stretch.length))\n {\n if (!data.started) continue;\n EveTurretFiringFX.#startPosition[0] += data.muzzleTransform[12];\n EveTurretFiringFX.#startPosition[1] += data.muzzleTransform[13];\n EveTurretFiringFX.#startPosition[2] += data.muzzleTransform[14];\n count++;\n }\n if (!count) return false;\n vec3.scale(out, EveTurretFiringFX.#startPosition, 1 / count);\n return true;\n }\n\n @carbon.method\n @impl.implemented\n GetFiringDuration()\n {\n return this.firingDurationOverride >= 0 ? this.firingDurationOverride : this.firingDuration;\n }\n\n @carbon.method\n @impl.implemented\n GetFiringPeakTime()\n {\n return this.firingPeakTime;\n }\n\n @carbon.method\n @impl.implemented\n GetFiringBoneName()\n {\n return this.boneName;\n }\n\n @carbon.method\n @impl.implemented\n StartMuzzleEffect(muzzleID)\n {\n this.#ensureMuzzleData();\n const data = this.#perMuzzleData[muzzleID];\n if (!data || !this.stretch[muzzleID]) return false;\n this.stretch[muzzleID].StartFiring?.(data.currentStartDelay);\n this.startCurveSet?.PlayFrom?.(-data.currentStartDelay);\n this.stopCurveSet?.Stop?.();\n data.started = true;\n data.readyToStart = false;\n return true;\n }\n\n @carbon.method\n @impl.implemented\n StopFiring()\n {\n if (!this.isFiring) return;\n this.#ensureMuzzleData();\n for (let index = 0; index < this.stretch.length; index++)\n {\n this.stretch[index]?.StopFiring?.();\n Object.assign(this.#perMuzzleData[index], { started: false, readyToStart: false, currentStartDelay: 0, elapsedTime: 0 });\n }\n this.startCurveSet?.Stop?.();\n this.stopCurveSet?.Play?.();\n this.isFiring = false;\n }\n\n @carbon.method\n @impl.implemented\n ReadyToFire()\n {\n this.#ensureMuzzleData();\n return this.#perMuzzleData.slice(0, this.stretch.length).some(data =>\n (data.elapsedTime < this.firingDuration || this.isLoopFiring) && !data.started && data.readyToStart);\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's task update is serial in the browser; firing elements retain their explicit async phase.\")\n UpdateAsynchronous(context)\n {\n this.#ensureMuzzleData();\n const deltaTime = getDeltaTime(context);\n let justFired = false;\n for (let index = 0; index < this.stretch.length; index++)\n {\n const data = this.#perMuzzleData[index];\n const stretch = this.stretch[index];\n if (data.started) data.elapsedTime += deltaTime;\n if (!(data.elapsedTime < this.firingDuration || this.isLoopFiring)) continue;\n if (this.isFiring)\n {\n if (!data.started)\n {\n if (data.readyToStart)\n {\n this.StartMuzzleEffect(index);\n data.currentStartDelay = 0;\n data.elapsedTime = 0;\n justFired = true;\n }\n else data.currentStartDelay -= deltaTime;\n if (data.currentStartDelay <= 0) data.readyToStart = true;\n }\n if (data.started)\n {\n const source = this.useMuzzleTransform && data.muzzlePositionBoneID !== EveTurretFiringFX.INVALID_INDEX\n ? data.muzzleTransform\n : data.muzzleTransform.subarray(12, 15);\n stretch?.SetFiringTransform?.(source, this.endPosition);\n stretch?.DisplayEndPoints?.(this.#displaySourceObject, this.#displayDestObject);\n }\n stretch?.UpdateEffectAsync?.(context);\n }\n }\n const curveSet = this.isFiring ? this.startCurveSet : this.stopCurveSet;\n const time = getTime(context);\n curveSet?.Update?.(time, time);\n this.sourceObserver?.Update?.(this.#perMuzzleData[0]?.muzzleTransform ?? EveTurretFiringFX.#identity);\n this.destinationObserver?.Update?.(translationMatrix(this.endPosition, EveTurretFiringFX.#destinationTransform));\n return justFired;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's task update is serial in the browser; firing elements retain their explicit sync phase.\")\n UpdateSynchronous(context)\n {\n this.#ensureMuzzleData();\n for (let index = 0; index < this.stretch.length; index++)\n {\n const data = this.#perMuzzleData[index];\n if (data.elapsedTime < this.firingDuration || this.isLoopFiring) this.stretch[index]?.UpdateEffectSync?.(context);\n }\n return true;\n }\n\n @carbon.method\n @impl.implemented\n Update(context)\n {\n const fired = this.UpdateAsynchronous(context);\n this.UpdateSynchronous(context);\n return fired;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Visibility is forwarded to graph elements; small-angle muzzle merging uses portable frustum fields when present.\")\n UpdateVisibility(context)\n {\n if (!(this.display && this.isFiring)) return;\n this.#ensureMuzzleData();\n const active = [];\n for (let index = 0; index < this.stretch.length; index++)\n {\n const data = this.#perMuzzleData[index];\n if (data.started && (data.elapsedTime <= this.firingDuration || this.isLoopFiring))\n {\n this.stretch[index]?.UpdateVisibility?.(context, EveTurretFiringFX.#identity);\n active.push(index);\n }\n }\n if (active.length <= 1 || active.some(index => this.#perMuzzleData[index].muzzlePositionBoneID !== EveTurretFiringFX.INVALID_INDEX)) return;\n vec3.zero(EveTurretFiringFX.#center);\n for (const index of active) vec3.add(EveTurretFiringFX.#center, EveTurretFiringFX.#center, this.#perMuzzleData[index].muzzleTransform.subarray(12, 15));\n vec3.scale(EveTurretFiringFX.#center, EveTurretFiringFX.#center, 1 / active.length);\n let radius = 0;\n for (const index of active) radius = Math.max(radius, vec3.distance(EveTurretFiringFX.#center, this.#perMuzzleData[index].muzzleTransform.subarray(12, 15)));\n const frustum = context?.frustum ?? context?.GetFrustum?.();\n const viewPosition = frustum?.viewPosition ?? frustum?.viewPos;\n if (!viewPosition) return;\n const angle = Math.atan(radius * 2 / (vec3.distance(viewPosition, EveTurretFiringFX.#center) + 1));\n const lodAngle = Number(frustum.fov ?? 1) * 0.002;\n const merge = angle <= lodAngle ? 0 : Math.min((angle - lodAngle) / lodAngle, 1);\n active.forEach((index, order) => this.stretch[index]?.SetIntensity?.(order ? merge : active.length + (1 - active.length) * merge));\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Renderable collection is backend-neutral; draw realization remains runtime-engine work.\")\n GetRenderables(out = [])\n {\n if (!(this.display && this.isFiring)) return out;\n this.#ensureMuzzleData();\n for (let index = 0; index < this.stretch.length; index++)\n {\n const data = this.#perMuzzleData[index];\n if (data.started && (data.elapsedTime <= this.firingDuration || this.isLoopFiring)) this.stretch[index]?.GetRenderables?.(out);\n }\n return out;\n }\n\n /** m_maxScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n maxScale = 10;\n\n @carbon.method\n @impl.implemented\n GetPerMuzzleEffectCount()\n {\n return this.stretch.length;\n }\n\n @carbon.method\n @impl.implemented\n GetPerMuzzleBoneID(muzzleID)\n {\n this.#ensureMuzzleData();\n return this.#perMuzzleData[muzzleID]?.muzzlePositionBoneID ?? EveTurretFiringFX.INVALID_INDEX;\n }\n\n @carbon.method\n @impl.implemented\n IsLooping()\n {\n return this.isLoopFiring;\n }\n\n @carbon.method\n @impl.implemented\n SetDisplayDestObject(display)\n {\n this.#displayDestObject = !!display;\n }\n\n @carbon.method\n @impl.implemented\n GetDisplayDestObject()\n {\n return this.#displayDestObject;\n }\n\n @carbon.method\n @impl.implemented\n SetDisplaySourceObject(display)\n {\n this.#displaySourceObject = !!display;\n }\n\n @carbon.method\n @impl.implemented\n GetDisplaySourceObject()\n {\n return this.#displaySourceObject;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\n SetControllerVariable(name, value)\n {\n for (const stretch of this.stretch) stretch?.SetControllerVariable?.(name, value);\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\n HandleControllerEvent(name)\n {\n for (const stretch of this.stretch) stretch?.HandleControllerEvent?.(name);\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\n StartControllers()\n {\n for (const stretch of this.stretch) stretch?.StartControllers?.();\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Audio emitters are duck-typed; Carbon impact switch values are forwarded without native interfaces.\")\n SetImpactConfiguration(configuration)\n {\n if (configuration !== this.#impactConfiguration)\n {\n const emitter = this.destinationObserver?.GetObserver?.();\n const value = configuration === EveTurretFiringFX.ImpactConfiguration.IMPACT_ARMOR\n ? \"Armor\"\n : configuration === EveTurretFiringFX.ImpactConfiguration.IMPACT_HULL ? \"Hull\" : \"Shield\";\n emitter?.SetSwitch?.(\"Impact_On\", value);\n }\n this.#impactConfiguration = configuration;\n }\n\n #ensureMuzzleData()\n {\n while (this.#perMuzzleData.length < EveTurretFiringFX.MUZZLE_COUNT_MAX)\n {\n const index = this.#perMuzzleData.length;\n this.#perMuzzleData.push({\n started: false,\n readyToStart: false,\n muzzlePositionBoneID: EveTurretFiringFX.INVALID_INDEX,\n muzzleTransform: mat4.create(),\n currentStartDelay: 0,\n constantDelay: Number(this[`firingDelay${index + 1}`] ?? 0),\n elapsedTime: 0\n });\n }\n for (let index = 0; index < EveTurretFiringFX.MUZZLE_COUNT_MAX; index++)\n {\n this.#perMuzzleData[index].constantDelay = Number(this[`firingDelay${index + 1}`] ?? 0);\n }\n }\n\n static MUZZLE_COUNT_MAX = 12;\n\n static INVALID_INDEX = 0xffffffff;\n\n static ImpactConfiguration = Object.freeze({ IMPACT_INVALID: 0, IMPACT_SHIELD: 1, IMPACT_ARMOR: 2, IMPACT_HULL: 3 });\n\n static #identity = mat4.create();\n\n static #destinationTransform = mat4.create();\n static #startPosition = vec3.create();\n\n static #center = vec3.create();\n\n}\n"],"names":["_EveTurretFiringFX","_identity","EveTurretFiringFX","EveEntity","e","_init_startCurveSet","_init_extra_startCurveSet","_init_stopCurveSet","_init_extra_stopCurveSet","_init_stretch","_init_extra_stretch","_init_name","_init_extra_name","_init_firingPeakTime","_init_extra_firingPeakTime","_init_firingDelay","_init_extra_firingDelay","_init_firingDelay2","_init_extra_firingDelay2","_init_firingDelay3","_init_extra_firingDelay3","_init_firingDelay4","_init_extra_firingDelay4","_init_firingDelay5","_init_extra_firingDelay5","_init_firingDelay6","_init_extra_firingDelay6","_init_firingDelay7","_init_extra_firingDelay7","_init_firingDelay8","_init_extra_firingDelay8","_init_firingDelay9","_init_extra_firingDelay9","_init_firingDelay0","_init_extra_firingDelay0","_init_firingDelay1","_init_extra_firingDelay1","_init_firingDelay10","_init_extra_firingDelay10","_init_endPosition","_init_extra_endPosition","_init_firingDuration","_init_extra_firingDuration","_init_isFiring","_init_extra_isFiring","_init_destinationObserver","_init_extra_destinationObserver","_init_sourceObserver","_init_extra_sourceObserver","_init_firingDurationOverride","_init_extra_firingDurationOverride","_init_useMuzzleTransform","_init_extra_useMuzzleTransform","_init_isLoopFiring","_init_extra_isLoopFiring","_init_boneName","_init_extra_boneName","_init_display","_init_extra_display","_init_scaleEffectTarget","_init_extra_scaleEffectTarget","_init_minRadius","_init_extra_minRadius","_init_maxRadius","_init_extra_maxRadius","_init_minScale","_init_extra_minScale","_init_maxScale","_init_extra_maxScale","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","model","list","string","float32","readwrite","vec3","read","boolean","notify","carbon","method","impl","implemented","adapted","reason","constructor","args","startCurveSet","stopCurveSet","stretch","name","firingPeakTime","firingDelay1","firingDelay10","firingDelay11","firingDelay12","firingDelay2","firingDelay3","firingDelay4","firingDelay5","firingDelay6","firingDelay7","firingDelay8","firingDelay9","endPosition","create","firingDuration","isFiring","destinationObserver","sourceObserver","firingDurationOverride","useMuzzleTransform","isLoopFiring","boneName","display","scaleEffectTarget","minRadius","maxRadius","minScale","ImpactConfiguration","IMPACT_INVALID","Initialize","duration","GetCurveDuration","CleanUp","context","currentTime","deltaTime","StopFiring","UpdateAsynchronous","UpdateSynchronous","OnModified","SetMuzzleBoneID","muzzleID","boneID","MUZZLE_COUNT_MAX","muzzlePositionBoneID","Number","SetMuzzleTransform","transform","mat4","copy","muzzleTransform","GetMuzzleTransform","out","SetEndPosition","value","SetScaleByRadius","radius","span","amount","scale","Math","max","min","maxScale","SetDestObjectScale","GetObserver","SetAttenuationScalingFactor","PrepareFiringEffectMoveObjects","StartMoving","PrepareFiring","delay","INVALID_INDEX","muzzleCount","index","length","selected","data","currentStartDelay","constantDelay","MAX_VALUE","started","readyToStart","elapsedTime","GetStartPosition","zero","count","slice","GetFiringDuration","GetFiringPeakTime","GetFiringBoneName","StartMuzzleEffect","StartFiring","PlayFrom","Stop","Object","assign","Play","ReadyToFire","some","getDeltaTime","justFired","source","subarray","SetFiringTransform","DisplayEndPoints","UpdateEffectAsync","curveSet","time","getTime","Update","translationMatrix","UpdateEffectSync","fired","UpdateVisibility","active","push","add","distance","frustum","GetFrustum","viewPosition","viewPos","angle","atan","lodAngle","fov","merge","forEach","order","SetIntensity","GetRenderables","GetPerMuzzleEffectCount","GetPerMuzzleBoneID","IsLooping","SetDisplayDestObject","GetDisplayDestObject","SetDisplaySourceObject","GetDisplaySourceObject","SetControllerVariable","HandleControllerEvent","StartControllers","SetImpactConfiguration","configuration","emitter","IMPACT_ARMOR","IMPACT_HULL","SetSwitch","#ensureMuzzleData","freeze","IMPACT_SHIELD"],"mappings":"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"}
1
+ {"version":3,"file":"EveTurretFiringFX.js","sources":["../../../../../src/eve/attachment/turrets/EveTurretFiringFX.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\Turret\\EveTurretFiringFX_Blue.cpp\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveEntity } from \"../../../generated/eve/EveEntity.js\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { getDeltaTime, getTime, translationMatrix } from \"../../renderable/stretch/CjsStretchRuntime.js\";\r\n\r\n/** EveTurretFiringFX (eve/attachment/turrets) - generated from schema shapeHash ae5459c6.... */\r\n@type.define({ className: \"EveTurretFiringFX\", family: \"eve/attachment/turrets\" })\r\nexport class EveTurretFiringFX extends EveEntity\r\n{\r\n\r\n /** m_startCurveSet (TriCurveSetPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"TriCurveSet\")\r\n startCurveSet = null;\r\n\r\n /** m_stopCurveSet (TriCurveSetPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"TriCurveSet\")\r\n stopCurveSet = null;\r\n\r\n /** m_stretch (PIEveFiringEffectElementVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveFiringEffectElement\")\r\n stretch = [];\r\n\r\n /** m_name (std::string) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_firingPeakTime (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingPeakTime = 0;\r\n\r\n /** m_perMuzzleData[0].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay1 = 0;\r\n\r\n /** m_perMuzzleData[9].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay10 = 0;\r\n\r\n /** m_perMuzzleData[10].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay11 = 0;\r\n\r\n /** m_perMuzzleData[11].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay12 = 0;\r\n\r\n /** m_perMuzzleData[1].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay2 = 0;\r\n\r\n /** m_perMuzzleData[2].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay3 = 0;\r\n\r\n /** m_perMuzzleData[3].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay4 = 0;\r\n\r\n /** m_perMuzzleData[4].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay5 = 0;\r\n\r\n /** m_perMuzzleData[5].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay6 = 0;\r\n\r\n /** m_perMuzzleData[6].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay7 = 0;\r\n\r\n /** m_perMuzzleData[7].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay8 = 0;\r\n\r\n /** m_perMuzzleData[8].constantDelay (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n firingDelay9 = 0;\r\n\r\n /** m_endPosition (Vector3) [READWRITE] */\r\n @io.readwrite\r\n @type.vec3\r\n endPosition = vec3.create();\r\n\r\n /** m_firingDuration (float) [READ] */\r\n @io.read\r\n @type.float32\r\n firingDuration = 1000;\r\n\r\n /** m_isFiring (bool) [READ] */\r\n @io.read\r\n @type.boolean\r\n isFiring = false;\r\n\r\n /** m_destinationObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"TriObserverLocal\")\r\n destinationObserver = null;\r\n\r\n /** m_sourceObserver (TriObserverLocalPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"TriObserverLocal\")\r\n sourceObserver = null;\r\n\r\n /** m_firingDurationOverride (float) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.float32\r\n firingDurationOverride = -1;\r\n\r\n /** m_useMuzzleTransform (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n useMuzzleTransform = false;\r\n\r\n /** m_isLoopFiring (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n isLoopFiring = false;\r\n\r\n /** m_boneName (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n boneName = \"Pos_Fire\";\r\n\r\n /** m_display (bool) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_scaleEffectTarget (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n scaleEffectTarget = false;\r\n\r\n /** m_minRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n minRadius = 30;\r\n\r\n /** m_maxRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n maxRadius = 3000;\r\n\r\n /** m_minScale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n minScale = 1;\r\n\r\n #perMuzzleData = [];\r\n\r\n #displaySourceObject = true;\r\n\r\n #displayDestObject = true;\r\n\r\n #impactConfiguration = EveTurretFiringFX.ImpactConfiguration.IMPACT_INVALID;\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Initialize()\r\n {\r\n this.#ensureMuzzleData();\r\n if (this.firingDurationOverride >= 0) this.firingDuration = this.firingDurationOverride;\r\n else\r\n {\r\n const duration = this.GetCurveDuration();\r\n if (duration > 0) this.firingDuration = duration;\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n CleanUp(context = { currentTime: 0, deltaTime: 0 })\r\n {\r\n this.StopFiring();\r\n this.UpdateAsynchronous(context);\r\n this.UpdateSynchronous(context);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n OnModified()\r\n {\r\n this.firingDuration = this.firingDurationOverride >= 0 ? this.firingDurationOverride : this.GetCurveDuration();\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetMuzzleBoneID(muzzleID, boneID)\r\n {\r\n this.#ensureMuzzleData();\r\n if (muzzleID >= 0 && muzzleID < EveTurretFiringFX.MUZZLE_COUNT_MAX) this.#perMuzzleData[muzzleID].muzzlePositionBoneID = Number(boneID) >>> 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetMuzzleTransform(muzzleID, transform)\r\n {\r\n this.#ensureMuzzleData();\r\n if (muzzleID >= 0 && muzzleID < EveTurretFiringFX.MUZZLE_COUNT_MAX) mat4.copy(this.#perMuzzleData[muzzleID].muzzleTransform, transform);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetMuzzleTransform(muzzleID, out = mat4.create())\r\n {\r\n this.#ensureMuzzleData();\r\n return mat4.copy(out, this.#perMuzzleData[muzzleID]?.muzzleTransform ?? EveTurretFiringFX.#identity);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetEndPosition(value)\r\n {\r\n vec3.copy(this.endPosition, value);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetScaleByRadius(radius)\r\n {\r\n if (!this.scaleEffectTarget) return;\r\n const span = this.maxRadius - this.minRadius;\r\n const amount = span ? (Number(radius) - this.minRadius) / span : 0;\r\n const scale = Math.max(this.minScale, Math.min(this.maxScale, this.minScale + amount * (this.maxScale - this.minScale)));\r\n for (const stretch of this.stretch) stretch?.SetDestObjectScale?.(scale);\r\n this.destinationObserver?.GetObserver?.()?.SetAttenuationScalingFactor?.(Number(radius));\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n PrepareFiringEffectMoveObjects()\r\n {\r\n for (const stretch of this.stretch) stretch?.StartMoving?.();\r\n this.isFiring = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n PrepareFiring(delay, muzzleID = EveTurretFiringFX.INVALID_INDEX, muzzleCount = EveTurretFiringFX.INVALID_INDEX)\r\n {\r\n this.#ensureMuzzleData();\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n const selected = muzzleID === EveTurretFiringFX.INVALID_INDEX || (index >= muzzleID && index < muzzleID + muzzleCount);\r\n const data = this.#perMuzzleData[index];\r\n data.currentStartDelay = selected ? Number(delay) + data.constantDelay : Number.MAX_VALUE;\r\n data.started = false;\r\n data.readyToStart = false;\r\n data.elapsedTime = 0;\r\n }\r\n this.isFiring = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetCurveDuration()\r\n {\r\n let duration = 0;\r\n for (const stretch of this.stretch) duration = Math.max(duration, Number(stretch?.GetCurveDuration?.() ?? 0));\r\n return duration;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetStartPosition(out = vec3.create())\r\n {\r\n if (!this.isFiring) return false;\r\n this.#ensureMuzzleData();\r\n vec3.zero(EveTurretFiringFX.#startPosition);\r\n let count = 0;\r\n for (const data of this.#perMuzzleData.slice(0, this.stretch.length))\r\n {\r\n if (!data.started) continue;\r\n EveTurretFiringFX.#startPosition[0] += data.muzzleTransform[12];\r\n EveTurretFiringFX.#startPosition[1] += data.muzzleTransform[13];\r\n EveTurretFiringFX.#startPosition[2] += data.muzzleTransform[14];\r\n count++;\r\n }\r\n if (!count) return false;\r\n vec3.scale(out, EveTurretFiringFX.#startPosition, 1 / count);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetFiringDuration()\r\n {\r\n return this.firingDurationOverride >= 0 ? this.firingDurationOverride : this.firingDuration;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetFiringPeakTime()\r\n {\r\n return this.firingPeakTime;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetFiringBoneName()\r\n {\r\n return this.boneName;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartMuzzleEffect(muzzleID)\r\n {\r\n this.#ensureMuzzleData();\r\n const data = this.#perMuzzleData[muzzleID];\r\n if (!data || !this.stretch[muzzleID]) return false;\r\n this.stretch[muzzleID].StartFiring?.(data.currentStartDelay);\r\n this.startCurveSet?.PlayFrom?.(-data.currentStartDelay);\r\n this.stopCurveSet?.Stop?.();\r\n data.started = true;\r\n data.readyToStart = false;\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StopFiring()\r\n {\r\n if (!this.isFiring) return;\r\n this.#ensureMuzzleData();\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n this.stretch[index]?.StopFiring?.();\r\n Object.assign(this.#perMuzzleData[index], { started: false, readyToStart: false, currentStartDelay: 0, elapsedTime: 0 });\r\n }\r\n this.startCurveSet?.Stop?.();\r\n this.stopCurveSet?.Play?.();\r\n this.isFiring = false;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ReadyToFire()\r\n {\r\n this.#ensureMuzzleData();\r\n return this.#perMuzzleData.slice(0, this.stretch.length).some(data =>\r\n (data.elapsedTime < this.firingDuration || this.isLoopFiring) && !data.started && data.readyToStart);\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's task update is serial in the browser; firing elements retain their explicit async phase.\")\r\n UpdateAsynchronous(context)\r\n {\r\n this.#ensureMuzzleData();\r\n const deltaTime = getDeltaTime(context);\r\n let justFired = false;\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n const data = this.#perMuzzleData[index];\r\n const stretch = this.stretch[index];\r\n if (data.started) data.elapsedTime += deltaTime;\r\n if (!(data.elapsedTime < this.firingDuration || this.isLoopFiring)) continue;\r\n if (this.isFiring)\r\n {\r\n if (!data.started)\r\n {\r\n if (data.readyToStart)\r\n {\r\n this.StartMuzzleEffect(index);\r\n data.currentStartDelay = 0;\r\n data.elapsedTime = 0;\r\n justFired = true;\r\n }\r\n else data.currentStartDelay -= deltaTime;\r\n if (data.currentStartDelay <= 0) data.readyToStart = true;\r\n }\r\n if (data.started)\r\n {\r\n const source = this.useMuzzleTransform && data.muzzlePositionBoneID !== EveTurretFiringFX.INVALID_INDEX\r\n ? data.muzzleTransform\r\n : data.muzzleTransform.subarray(12, 15);\r\n stretch?.SetFiringTransform?.(source, this.endPosition);\r\n stretch?.DisplayEndPoints?.(this.#displaySourceObject, this.#displayDestObject);\r\n }\r\n stretch?.UpdateEffectAsync?.(context);\r\n }\r\n }\r\n const curveSet = this.isFiring ? this.startCurveSet : this.stopCurveSet;\r\n const time = getTime(context);\r\n curveSet?.Update?.(time, time);\r\n this.sourceObserver?.Update?.(this.#perMuzzleData[0]?.muzzleTransform ?? EveTurretFiringFX.#identity);\r\n this.destinationObserver?.Update?.(translationMatrix(this.endPosition, EveTurretFiringFX.#destinationTransform));\r\n return justFired;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's task update is serial in the browser; firing elements retain their explicit sync phase.\")\r\n UpdateSynchronous(context)\r\n {\r\n this.#ensureMuzzleData();\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n const data = this.#perMuzzleData[index];\r\n if (data.elapsedTime < this.firingDuration || this.isLoopFiring) this.stretch[index]?.UpdateEffectSync?.(context);\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Update(context)\r\n {\r\n const fired = this.UpdateAsynchronous(context);\r\n this.UpdateSynchronous(context);\r\n return fired;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Visibility is forwarded to graph elements; small-angle muzzle merging uses portable frustum fields when present.\")\r\n UpdateVisibility(context)\r\n {\r\n if (!(this.display && this.isFiring)) return;\r\n this.#ensureMuzzleData();\r\n const active = [];\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n const data = this.#perMuzzleData[index];\r\n if (data.started && (data.elapsedTime <= this.firingDuration || this.isLoopFiring))\r\n {\r\n this.stretch[index]?.UpdateVisibility?.(context, EveTurretFiringFX.#identity);\r\n active.push(index);\r\n }\r\n }\r\n if (active.length <= 1 || active.some(index => this.#perMuzzleData[index].muzzlePositionBoneID !== EveTurretFiringFX.INVALID_INDEX)) return;\r\n vec3.zero(EveTurretFiringFX.#center);\r\n for (const index of active) vec3.add(EveTurretFiringFX.#center, EveTurretFiringFX.#center, this.#perMuzzleData[index].muzzleTransform.subarray(12, 15));\r\n vec3.scale(EveTurretFiringFX.#center, EveTurretFiringFX.#center, 1 / active.length);\r\n let radius = 0;\r\n for (const index of active) radius = Math.max(radius, vec3.distance(EveTurretFiringFX.#center, this.#perMuzzleData[index].muzzleTransform.subarray(12, 15)));\r\n const frustum = context?.frustum ?? context?.GetFrustum?.();\r\n const viewPosition = frustum?.viewPosition ?? frustum?.viewPos;\r\n if (!viewPosition) return;\r\n const angle = Math.atan(radius * 2 / (vec3.distance(viewPosition, EveTurretFiringFX.#center) + 1));\r\n const lodAngle = Number(frustum.fov ?? 1) * 0.002;\r\n const merge = angle <= lodAngle ? 0 : Math.min((angle - lodAngle) / lodAngle, 1);\r\n active.forEach((index, order) => this.stretch[index]?.SetIntensity?.(order ? merge : active.length + (1 - active.length) * merge));\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Renderable collection is backend-neutral; draw realization remains runtime-engine work.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!(this.display && this.isFiring)) return out;\r\n this.#ensureMuzzleData();\r\n for (let index = 0; index < this.stretch.length; index++)\r\n {\r\n const data = this.#perMuzzleData[index];\r\n if (data.started && (data.elapsedTime <= this.firingDuration || this.isLoopFiring)) this.stretch[index]?.GetRenderables?.(out);\r\n }\r\n return out;\r\n }\r\n\r\n /** m_maxScale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n maxScale = 10;\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetPerMuzzleEffectCount()\r\n {\r\n return this.stretch.length;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetPerMuzzleBoneID(muzzleID)\r\n {\r\n this.#ensureMuzzleData();\r\n return this.#perMuzzleData[muzzleID]?.muzzlePositionBoneID ?? EveTurretFiringFX.INVALID_INDEX;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n IsLooping()\r\n {\r\n return this.isLoopFiring;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetDisplayDestObject(display)\r\n {\r\n this.#displayDestObject = !!display;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetDisplayDestObject()\r\n {\r\n return this.#displayDestObject;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetDisplaySourceObject(display)\r\n {\r\n this.#displaySourceObject = !!display;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetDisplaySourceObject()\r\n {\r\n return this.#displaySourceObject;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\r\n SetControllerVariable(name, value)\r\n {\r\n for (const stretch of this.stretch) stretch?.SetControllerVariable?.(name, value);\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\r\n HandleControllerEvent(name)\r\n {\r\n for (const stretch of this.stretch) stretch?.HandleControllerEvent?.(name);\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller ownership is represented by direct firing-element method forwarding.\")\r\n StartControllers()\r\n {\r\n for (const stretch of this.stretch) stretch?.StartControllers?.();\r\n }\r\n\r\n /** Carbon EveTurretFiringFX::RegisterComponents (cpp:739-752): forwards the\r\n * stretch elements. Gate m_display && m_isFiring. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display && this.isFiring)\r\n {\r\n for (const element of this.stretch)\r\n {\r\n element?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveTurretFiringFX::UnRegisterComponents (cpp:755-768): forwards\r\n * the stretch elements; no display/isFiring re-check. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const element of this.stretch)\r\n {\r\n element?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Audio emitters are duck-typed; Carbon impact switch values are forwarded without native interfaces.\")\r\n SetImpactConfiguration(configuration)\r\n {\r\n if (configuration !== this.#impactConfiguration)\r\n {\r\n const emitter = this.destinationObserver?.GetObserver?.();\r\n const value = configuration === EveTurretFiringFX.ImpactConfiguration.IMPACT_ARMOR\r\n ? \"Armor\"\r\n : configuration === EveTurretFiringFX.ImpactConfiguration.IMPACT_HULL ? \"Hull\" : \"Shield\";\r\n emitter?.SetSwitch?.(\"Impact_On\", value);\r\n }\r\n this.#impactConfiguration = configuration;\r\n }\r\n\r\n #ensureMuzzleData()\r\n {\r\n while (this.#perMuzzleData.length < EveTurretFiringFX.MUZZLE_COUNT_MAX)\r\n {\r\n const index = this.#perMuzzleData.length;\r\n this.#perMuzzleData.push({\r\n started: false,\r\n readyToStart: false,\r\n muzzlePositionBoneID: EveTurretFiringFX.INVALID_INDEX,\r\n muzzleTransform: mat4.create(),\r\n currentStartDelay: 0,\r\n constantDelay: Number(this[`firingDelay${index + 1}`] ?? 0),\r\n elapsedTime: 0\r\n });\r\n }\r\n for (let index = 0; index < EveTurretFiringFX.MUZZLE_COUNT_MAX; index++)\r\n {\r\n this.#perMuzzleData[index].constantDelay = Number(this[`firingDelay${index + 1}`] ?? 0);\r\n }\r\n }\r\n\r\n static MUZZLE_COUNT_MAX = 12;\r\n\r\n static INVALID_INDEX = 0xffffffff;\r\n\r\n static ImpactConfiguration = Object.freeze({ IMPACT_INVALID: 0, IMPACT_SHIELD: 1, IMPACT_ARMOR: 2, IMPACT_HULL: 3 });\r\n\r\n static #identity = mat4.create();\r\n\r\n static #destinationTransform = mat4.create();\r\n static #startPosition = vec3.create();\r\n\r\n static #center = vec3.create();\r\n\r\n}\r\n"],"names":["_EveTurretFiringFX","_identity","EveTurretFiringFX","EveEntity","e","_init_startCurveSet","_init_extra_startCurveSet","_init_stopCurveSet","_init_extra_stopCurveSet","_init_stretch","_init_extra_stretch","_init_name","_init_extra_name","_init_firingPeakTime","_init_extra_firingPeakTime","_init_firingDelay","_init_extra_firingDelay","_init_firingDelay2","_init_extra_firingDelay2","_init_firingDelay3","_init_extra_firingDelay3","_init_firingDelay4","_init_extra_firingDelay4","_init_firingDelay5","_init_extra_firingDelay5","_init_firingDelay6","_init_extra_firingDelay6","_init_firingDelay7","_init_extra_firingDelay7","_init_firingDelay8","_init_extra_firingDelay8","_init_firingDelay9","_init_extra_firingDelay9","_init_firingDelay0","_init_extra_firingDelay0","_init_firingDelay1","_init_extra_firingDelay1","_init_firingDelay10","_init_extra_firingDelay10","_init_endPosition","_init_extra_endPosition","_init_firingDuration","_init_extra_firingDuration","_init_isFiring","_init_extra_isFiring","_init_destinationObserver","_init_extra_destinationObserver","_init_sourceObserver","_init_extra_sourceObserver","_init_firingDurationOverride","_init_extra_firingDurationOverride","_init_useMuzzleTransform","_init_extra_useMuzzleTransform","_init_isLoopFiring","_init_extra_isLoopFiring","_init_boneName","_init_extra_boneName","_init_display","_init_extra_display","_init_scaleEffectTarget","_init_extra_scaleEffectTarget","_init_minRadius","_init_extra_minRadius","_init_maxRadius","_init_extra_maxRadius","_init_minScale","_init_extra_minScale","_init_maxScale","_init_extra_maxScale","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","model","list","string","float32","readwrite","vec3","read","boolean","notify","carbon","method","impl","implemented","adapted","reason","constructor","args","startCurveSet","stopCurveSet","stretch","name","firingPeakTime","firingDelay1","firingDelay10","firingDelay11","firingDelay12","firingDelay2","firingDelay3","firingDelay4","firingDelay5","firingDelay6","firingDelay7","firingDelay8","firingDelay9","endPosition","create","firingDuration","isFiring","destinationObserver","sourceObserver","firingDurationOverride","useMuzzleTransform","isLoopFiring","boneName","display","scaleEffectTarget","minRadius","maxRadius","minScale","ImpactConfiguration","IMPACT_INVALID","Initialize","duration","GetCurveDuration","CleanUp","context","currentTime","deltaTime","StopFiring","UpdateAsynchronous","UpdateSynchronous","OnModified","SetMuzzleBoneID","muzzleID","boneID","MUZZLE_COUNT_MAX","muzzlePositionBoneID","Number","SetMuzzleTransform","transform","mat4","copy","muzzleTransform","GetMuzzleTransform","out","SetEndPosition","value","SetScaleByRadius","radius","span","amount","scale","Math","max","min","maxScale","SetDestObjectScale","GetObserver","SetAttenuationScalingFactor","PrepareFiringEffectMoveObjects","StartMoving","PrepareFiring","delay","INVALID_INDEX","muzzleCount","index","length","selected","data","currentStartDelay","constantDelay","MAX_VALUE","started","readyToStart","elapsedTime","GetStartPosition","zero","count","slice","GetFiringDuration","GetFiringPeakTime","GetFiringBoneName","StartMuzzleEffect","StartFiring","PlayFrom","Stop","Object","assign","Play","ReadyToFire","some","getDeltaTime","justFired","source","subarray","SetFiringTransform","DisplayEndPoints","UpdateEffectAsync","curveSet","time","getTime","Update","translationMatrix","UpdateEffectSync","fired","UpdateVisibility","active","push","add","distance","frustum","GetFrustum","viewPosition","viewPos","angle","atan","lodAngle","fov","merge","forEach","order","SetIntensity","GetRenderables","GetPerMuzzleEffectCount","GetPerMuzzleBoneID","IsLooping","SetDisplayDestObject","GetDisplayDestObject","SetDisplaySourceObject","GetDisplaySourceObject","SetControllerVariable","HandleControllerEvent","StartControllers","RegisterComponents","registry","GetComponentRegistry","element","Register","UnRegisterComponents","UnRegister","SetImpactConfiguration","configuration","emitter","IMPACT_ARMOR","IMPACT_HULL","SetSwitch","#ensureMuzzleData","freeze","IMPACT_SHIELD"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { io, type, carbon, impl, schema } from '@carbonenginejs/core-types/schema';
3
3
  import { EveEntity as _EveEntity } from '../../../generated/eve/EveEntity.js';
4
+ import { EveComponentType } from '../../EveComponentTypes.js';
4
5
  import { EveTurretTarget as _EveTurretTarget } from './EveTurretTarget.js';
5
6
  import { mat4 } from '@carbonenginejs/core-math/mat4';
6
7
  import { quat } from '@carbonenginejs/core-math/quat';
@@ -20,7 +21,7 @@ new class extends _identity {
20
21
  } = _applyDecs2311(this, [type.define({
21
22
  className: "EveTurretSet",
22
23
  family: "eve/attachment/turrets"
23
- })], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ImpactBehaviour")], 16, "impactBehaviour"], [type.objectRef("EveTurretFiringFX"), 0, "firingEffect"], [[io, io.persistOnly, void 0, type.model("IEveSpaceObjectChild")], 16, "ambientEffect"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.string], 16, "firingEffectResPath"], [[io, io.persist, type, type.boolean], 16, "chooseRandomLocator"], [[io, io.persist, type, type.vec4], 16, "boundingSphere"], [[io, io.persist, type, type.boolean], 16, "randomizeExplosionRotation"], [[io, io.read, type, type.int32, void 0, schema.enum("LOD")], 16, "lodLevel"], [[io, io.read, type, type.uint32], 16, "currentCyclingFiresPos"], [[io, io.persist, type, type.boolean], 16, "useRandomFiringDelay"], [[io, io.persist, type, type.float32], 16, "bottomClipHeight"], [[io, io.read, void 0, type.objectRef("TriGeometryRes")], 16, "geometryResource"], [[io, io.persist, type, type.float32], 16, "maxTrackingTime"], [[io, io.read, type, type.uint32], 16, "visibleCount"], [[io, io.read, type, type.float32], 16, "trackingInfluence"], [[io, io.readwrite, type, type.uint32], 16, "swarmID"], [[io, io.persist, type, type.uint32], 16, "maxCyclingFirePos"], [[io, io.persist, type, type.boolean], 16, "playMovementSound"], [[io, io.readwrite, type, type.boolean], 16, "isOnline"], [[io, io.read, void 0, type.objectRef("EveTurretTarget")], 16, "target"], [[io, io.persist, type, type.string], 16, "locatorName"], [[io, io.persist, type, type.float32], 16, "sysBonePitchFactor"], [[io, io.persist, type, type.float32], 16, "sysBonePitchMax"], [[io, io.persist, type, type.float32], 16, "sysBonePitchMin"], [[io, io.persist, type, type.float32], 16, "sysBonePitchOffset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch01Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch01Offset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch02Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch02Offset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch03Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch03Offset"], [[io, io.persist, type, type.boolean], 16, "updatePitchPose"], [[io, io.notify, io, io.persist, type, type.string], 16, "geometryResPath"], [[io, io.persist, type, type.float32], 16, "impactSize"], [[io, io.persist, type, type.int32, void 0, schema.enum("State")], 16, "state"], [[io, io.persist, type, type.float32], 16, "sysBoneHeight"], [[io, io.read, type, type.float32], 16, "randomFiringDelay"], [[io, io.persist, void 0, type.model("Tr2Effect")], 16, "turretEffect"], [[io, io.persist, type, type.string], 16, "idleToTargetingMovementAudioEvent"], [[io, io.persist, type, type.string], 16, "targetingToIdleMovementAudioEvent"], [[io, io.read, void 0, type.objectRef("EveChildInstanceContainer")], 16, "generatedDistributedAmbientEffect"], [[io, io.persist, type, type.uint32], 16, "cyclingFireGroupCount"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "turretMovementObserver"], [[io, io.readwrite, type, type.int32], 16, "slotNumber"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "ambientEffectEditingMode"], [[io, io.readwrite, type, type.boolean], 16, "displayEffects"], [[io, io.readwrite, type, type.boolean], 16, "display"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "useDynamicBounds"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameter"], [[io, io.persist, type, type.vec3], 16, "lowLodFiringEffectScale"], [[io, io.persist, type, type.vec3], 16, "lowLodFiringEffectTranslation"], [[io, io.persist, type, type.quat], 16, "lowLodFiringEffectRotation"], [[io, io.persist, type, type.boolean], 16, "useLowLodFiringTransform"], [[io, io.persist, type, type.boolean], 16, "laserMissBehaviour"], [[io, io.persist, type, type.boolean], 16, "projectileMissBehaviour"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Geometry resources are duck-typed; runtime-trinity stores their computed sphere without realizing render buffers.")], 18, "RebuildBoundingSphere"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "ForceStateDeactive"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "ForceStateTargeting"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The graph freezes its LOD state; geometry realization remains a runtime-engine responsibility.")], 18, "FreezeHighDetailLOD"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShotTimeVariance"], [[carbon, carbon.method, impl, impl.implemented], 18, "MissQueueSize"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLastShotTime"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateDeactive"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's geometry/animation selection is represented by portable turret records and controller forwarding.")], 18, "EnterStateFiring"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateIdle"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateReloading"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateTargeting"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Portable turret records and duck-typed geometry bone transforms replace Carbon's CMF/Granny split.")], 18, "GetFiringBoneWorldTransform"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetShotMissed"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Resource loading and GPU preparation are engine responsibilities; Trinity initializes the target and owned behavior graph.")], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetFiringEffect"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon QueryInterface target attachment is delegated to EveTurretTarget's browser-compatible target validation.")], 18, "SetTargetObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTargetObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetTargetScale"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.")], 18, "SetTurrets"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.")], 18, "AddTurret"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurrets"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Portable records replace Carbon's CMF/Granny SingleTurretData allocation while retaining its fixed 24-turret limit and scale removal.")], 18, "SetLocalTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetParentTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateTurretTransforms"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The closest portable turret is selected from its world up-axis and the target tracking position.")], 18, "GetClosestTurret"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("This combined browser convenience update runs Carbon's explicit synchronous and asynchronous phases in order.")], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation cleanup and task dispatch are forwarded through portable records; target and firing timing remain source-faithful.")], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Skeleton realization is engine-owned; portable turret records may consume the same local-target tracking hook.")], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderable collection is backend-neutral; geometry and batch realization remain runtime-engine work.")], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Visibility is forwarded through backend-neutral firing and ambient graph contracts.")], 18, "UpdateVisibility"]], 0, void 0, _EveEntity));
24
+ })], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ImpactBehaviour")], 16, "impactBehaviour"], [type.objectRef("EveTurretFiringFX"), 0, "firingEffect"], [[io, io.persistOnly, void 0, type.model("IEveSpaceObjectChild")], 16, "ambientEffect"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.string], 16, "firingEffectResPath"], [[io, io.persist, type, type.boolean], 16, "chooseRandomLocator"], [[io, io.persist, type, type.vec4], 16, "boundingSphere"], [[io, io.persist, type, type.boolean], 16, "randomizeExplosionRotation"], [[io, io.read, type, type.int32, void 0, schema.enum("LOD")], 16, "lodLevel"], [[io, io.read, type, type.uint32], 16, "currentCyclingFiresPos"], [[io, io.persist, type, type.boolean], 16, "useRandomFiringDelay"], [[io, io.persist, type, type.float32], 16, "bottomClipHeight"], [[io, io.read, void 0, type.objectRef("TriGeometryRes")], 16, "geometryResource"], [[io, io.persist, type, type.float32], 16, "maxTrackingTime"], [[io, io.read, type, type.uint32], 16, "visibleCount"], [[io, io.read, type, type.float32], 16, "trackingInfluence"], [[io, io.readwrite, type, type.uint32], 16, "swarmID"], [[io, io.persist, type, type.uint32], 16, "maxCyclingFirePos"], [[io, io.persist, type, type.boolean], 16, "playMovementSound"], [[io, io.readwrite, type, type.boolean], 16, "isOnline"], [[io, io.read, void 0, type.objectRef("EveTurretTarget")], 16, "target"], [[io, io.persist, type, type.string], 16, "locatorName"], [[io, io.persist, type, type.float32], 16, "sysBonePitchFactor"], [[io, io.persist, type, type.float32], 16, "sysBonePitchMax"], [[io, io.persist, type, type.float32], 16, "sysBonePitchMin"], [[io, io.persist, type, type.float32], 16, "sysBonePitchOffset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch01Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch01Offset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch02Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch02Offset"], [[io, io.persist, type, type.float32], 16, "sysBonePitch03Factor"], [[io, io.persist, type, type.float32], 16, "sysBonePitch03Offset"], [[io, io.persist, type, type.boolean], 16, "updatePitchPose"], [[io, io.notify, io, io.persist, type, type.string], 16, "geometryResPath"], [[io, io.persist, type, type.float32], 16, "impactSize"], [[io, io.persist, type, type.int32, void 0, schema.enum("State")], 16, "state"], [[io, io.persist, type, type.float32], 16, "sysBoneHeight"], [[io, io.read, type, type.float32], 16, "randomFiringDelay"], [[io, io.persist, void 0, type.model("Tr2Effect")], 16, "turretEffect"], [[io, io.persist, type, type.string], 16, "idleToTargetingMovementAudioEvent"], [[io, io.persist, type, type.string], 16, "targetingToIdleMovementAudioEvent"], [[io, io.read, void 0, type.objectRef("EveChildInstanceContainer")], 16, "generatedDistributedAmbientEffect"], [[io, io.persist, type, type.uint32], 16, "cyclingFireGroupCount"], [[io, io.persist, void 0, type.model("TriObserverLocal")], 16, "turretMovementObserver"], [[io, io.readwrite, type, type.int32], 16, "slotNumber"], [[io, io.notify, io, io.readwrite, type, type.boolean], 16, "ambientEffectEditingMode"], [[io, io.readwrite, type, type.boolean], 16, "displayEffects"], [[io, io.readwrite, type, type.boolean], 16, "display"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "useDynamicBounds"], [[io, io.read, type, type.float32], 16, "estimatedPixelDiameter"], [[io, io.persist, type, type.vec3], 16, "lowLodFiringEffectScale"], [[io, io.persist, type, type.vec3], 16, "lowLodFiringEffectTranslation"], [[io, io.persist, type, type.quat], 16, "lowLodFiringEffectRotation"], [[io, io.persist, type, type.boolean], 16, "useLowLodFiringTransform"], [[io, io.persist, type, type.boolean], 16, "laserMissBehaviour"], [[io, io.persist, type, type.boolean], 16, "projectileMissBehaviour"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Geometry resources are duck-typed; runtime-trinity stores their computed sphere without realizing render buffers.")], 18, "RebuildBoundingSphere"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "ForceStateDeactive"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "ForceStateTargeting"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The graph freezes its LOD state; geometry realization remains a runtime-engine responsibility.")], 18, "FreezeHighDetailLOD"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShotTimeVariance"], [[carbon, carbon.method, impl, impl.implemented], 18, "MissQueueSize"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLastShotTime"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateDeactive"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's geometry/animation selection is represented by portable turret records and controller forwarding.")], 18, "EnterStateFiring"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateIdle"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateReloading"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation calls are forwarded to hydrated turret/controller objects without Carbon's Granny controller.")], 18, "EnterStateTargeting"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Portable turret records and duck-typed geometry bone transforms replace Carbon's CMF/Granny split.")], 18, "GetFiringBoneWorldTransform"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetShotMissed"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Controller ownership is represented by direct firing/ambient child forwarding.")], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Resource loading and GPU preparation are engine responsibilities; Trinity initializes the target and owned behavior graph.")], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetFiringEffect"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon QueryInterface target attachment is delegated to EveTurretTarget's browser-compatible target validation.")], 18, "SetTargetObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTargetObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetTargetScale"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.")], 18, "SetTurrets"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon builds hidden SingleTurret records from geometry locators; browser hosts may provide equivalent portable records directly.")], 18, "AddTurret"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurrets"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Portable records replace Carbon's CMF/Granny SingleTurretData allocation while retaining its fixed 24-turret limit and scale removal.")], 18, "SetLocalTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetParentTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateTurretTransforms"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The closest portable turret is selected from its world up-axis and the target tracking position.")], 18, "GetClosestTurret"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("This combined browser convenience update runs Carbon's explicit synchronous and asynchronous phases in order.")], 18, "Update"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animation cleanup and task dispatch are forwarded through portable records; target and firing timing remain source-faithful.")], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Skeleton realization is engine-owned; portable turret records may consume the same local-target tracking hook.")], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderable collection is backend-neutral; geometry and batch realization remain runtime-engine work.")], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Visibility is forwarded through backend-neutral firing and ambient graph contracts.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "IsCastingShadow"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "GetShadowBatches"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "GetShadowPerObjectData"]], 0, void 0, _EveEntity));
24
25
  }
25
26
  /** m_impactBehaviour (ImpactBehaviour::Type - enum ImpactBehaviour) [READWRITE, NOTIFY, PERSIST, ENUM] */
26
27
  impactBehaviour = (_initProto(this), _init_impactBehaviour(this, 0));
@@ -578,6 +579,47 @@ new class extends _identity {
578
579
  if (this.displayEffects) this.#ambientEffect()?.UpdateVisibility?.(context, this.#parentTransform);
579
580
  return true;
580
581
  }
582
+
583
+ /** Carbon EveTurretSet::RegisterComponents (cpp:238-256): ShadowCaster leaf
584
+ * self-registration, then forwards the firing effect and the ambient effect
585
+ * (GetAmbientEffectOrGeneratedEffect, mirrored by #ambientEffect). Gate
586
+ * m_display. */
587
+ RegisterComponents() {
588
+ const registry = this.GetComponentRegistry();
589
+ if (registry && this.display) {
590
+ registry.RegisterComponent(EveComponentType.ShadowCaster, this);
591
+ this.firingEffect?.Register?.(registry);
592
+ this.#ambientEffect()?.Register?.(registry);
593
+ }
594
+ }
595
+
596
+ /** Carbon EveTurretSet::UnRegisterComponents (cpp:258-274): forwards the
597
+ * firing and ambient effects only (own components were already removed by
598
+ * EveEntity::UnRegister, EveEntity.cpp:90); no display re-check. */
599
+ UnRegisterComponents() {
600
+ const registry = this.GetComponentRegistry();
601
+ if (registry) {
602
+ this.firingEffect?.UnRegister?.(registry);
603
+ this.#ambientEffect()?.UnRegister?.(registry);
604
+ }
605
+ }
606
+
607
+ /** Carbon EveTurretSet::IsCastingShadow (cpp:2022-2060) culls the turret
608
+ * bounding sphere; awaits the TriFrustum port (visibility pass). Presence
609
+ * satisfies the "ShadowCaster" duck contract. */
610
+ IsCastingShadow(..._args) {
611
+ throw new Error("EveTurretSet.IsCastingShadow is not implemented in CarbonEngineJS.");
612
+ }
613
+
614
+ /** Carbon EveTurretSet::GetShadowBatches (cpp:2221-2258). */
615
+ GetShadowBatches(..._args) {
616
+ throw new Error("EveTurretSet.GetShadowBatches is not implemented in CarbonEngineJS.");
617
+ }
618
+
619
+ /** Carbon EveTurretSet::GetShadowPerObjectData (cpp:2520-2523). */
620
+ GetShadowPerObjectData(..._args) {
621
+ throw new Error("EveTurretSet.GetShadowPerObjectData is not implemented in CarbonEngineJS.");
622
+ }
581
623
  #setupFiringState() {
582
624
  if (this.state === _EveTurretSet.State.STATE_DEACTIVE || !this.target) return false;
583
625
  const pair = this.#getClosestTurretAndLocator();