@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":"BehaviorGroup.js","sources":["../../../../../../src/generated/eve/child/behaviors/BehaviorGroup.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/Behaviors/BehaviorGroup.h\n// trinity/trinity/Eve/SpaceObject/Children/Behaviors/BehaviorGroup.cpp\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/behaviors/BehaviorGroup.json.\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveEntity } from \"../../EveEntity.js\";\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { quat } from \"@carbonenginejs/core-math/quat\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { ProcessPriority } from \"./enums.js\";\nimport { EveKDdroneManagementTree } from \"./EveKDdroneManagementTree.js\";\n\n// Module scratch for the per-agent integration and visibility loops (child\n// updates run sequentially; non-reentrant by design).\nconst Z_AXIS = vec3.fromValues(0, 0, 1);\nconst INTEREST_POINT = vec3.create();\nconst ACTUAL_FACING = vec3.create();\nconst FACING_NORMALIZED = vec3.create();\nconst AGENT_SPHERE = vec4.create();\nconst EMPTY_SEARCH_TREE = [];\n\n// Carbon ClampLength: in-place clamp of a vec3 to a maximum length.\nfunction ClampLength(value, maxLength)\n{\n const lengthSq = vec3.squaredLength(value);\n if (lengthSq > maxLength * maxLength && lengthSq > 0)\n {\n vec3.scale(value, value, maxLength / Math.sqrt(lengthSq));\n }\n return value;\n}\n\n/** BehaviorGroup (eve/child/behaviors) - generated from schema shapeHash d09b2740.... */\n@type.define({ className: \"BehaviorGroup\", family: \"eve/child/behaviors\" })\nexport class BehaviorGroup extends EveEntity\n{\n\n #agents = [];\n\n // Per-behavior scratch: #scratchData[behaviorIndex] is an array of plain\n // per-agent records (behavior.InitializeScratch()) or null when the\n // behavior reports no scratch (Carbon m_scratchData raw buffers).\n #scratchData = [];\n\n // Behavior indexes ordered by ProcessPriority (Carbon m_sortedBehaviorIndexes).\n #sortedBehaviorIndexes = [];\n\n // Spatial partitioning tree (Carbon m_tree).\n #tree = null;\n\n // Carbon m_updatedOnce/m_createAgentTree runtime frame state.\n #updatedOnce = false;\n\n #createAgentTree = false;\n\n // Cached PlayFX behavior (Carbon m_playFXBehavior).\n #playFXBehavior = null;\n\n // Owner-provided buffer resize callback (Carbon m_changeBufferVertexCount).\n #changeBufferVertexCount = null;\n\n // Debug force collection (Carbon m_forces; pairs of position/force vec3s).\n #forces = [];\n\n // Reused per-frame search radii (Carbon local `ranges`).\n #ranges = [];\n\n // agentIndex -> vec4(position.xyz, lightScale) (Carbon m_lightInfo);\n // filled by the GPU booster-buffer path, consumed by GetLights.\n #lightInfo = new Map();\n\n // World transform captured by UpdateVisibility (Carbon m_parentTransform).\n #parentTransform = mat4.create();\n\n // Owning space object (Carbon m_parent), captured in UpdateSyncronous.\n #parent = null;\n\n // Base-instance indicator assigned by the behavior system (Carbon m_groupIndex).\n #groupIndex = 0;\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n display = true;\n\n /** m_maxVelocity (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n maxVelocity = 100;\n\n /** m_scale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n scale = 1;\n\n /** m_blendScreenSizeMax (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n blendScreenSizeMax = 15;\n\n /** m_blendScreenSizeMin (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n blendScreenSizeMin = 5;\n\n /** m_currentScreenSize (float) [READ] */\n @io.read\n @type.float32\n currentScreenSize = 0;\n\n /** m_renderThreshold (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n renderThreshold = 1;\n\n /** m_debugIntensity (float) [READWRITE] */\n @io.readwrite\n @type.float32\n debugIntensity = 0;\n\n /** m_debugLodLevel (float) [READWRITE] */\n @io.readwrite\n @type.float32\n debugLodLevel = 0;\n\n /** m_actualCount (int32_t) [READ] */\n @io.read\n @type.int32\n actualCount = 0;\n\n /** m_count (int32_t) [READWRITE, PERSIST] */\n @io.persist\n @type.int32\n count = 0;\n\n /** m_booster (BehaviorGroupBoosterPtr) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.model(\"BehaviorGroupBooster\")\n boosters = null;\n\n /** m_mesh (Tr2MeshPtr) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.model(\"Tr2Mesh\")\n mesh = null;\n\n /** m_behaviorGroupName (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n boundingSphereRadius = 5;\n\n /** m_debugMode (bool) [READWRITE] */\n @io.readwrite\n @type.boolean\n debugMode = false;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n update = true;\n\n /** m_behaviors (PIBehaviorVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IBehavior\")\n behaviors = [];\n\n /** m_spawnPosition (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n spawnPosition = vec3.create();\n\n /** m_collectForces (bool) - debug toggle read by the behaviors. */\n @type.boolean\n collectForces = false;\n\n /** Carbon BehaviorGroup::Initialize (cpp:45-57). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Vertex-declaration creation is a GPU seam; scratch sizing, booster flare-count sync, and the PlayFX cache are ported.\")\n Initialize()\n {\n this.#EnsureScratchArrays();\n this.CreateVertexDeclaration();\n\n if (this.boosters)\n {\n this.boosters.RebuildFlareBuffer?.(this.count);\n }\n\n this.SetPlayFXBehavior();\n return true;\n }\n\n /** Carbon BehaviorGroup::OnModified (cpp:59-71); the value argument follows\n * the repo's OnModified duck (field name or field value). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Blue Var matching maps to the repo's OnModified duck; a mesh change refreshes the (stubbed) vertex declaration and a booster change re-syncs the flare count.\")\n OnModified(value = null)\n {\n if (value === \"mesh\" || (value !== null && value === this.mesh))\n {\n this.CreateVertexDeclaration();\n }\n if ((value === \"boosters\" || (value !== null && value === this.boosters)) && this.boosters !== null)\n {\n this.boosters.RebuildFlareBuffer?.(this.actualCount);\n }\n return true;\n }\n\n /**\n * Regenerates the agents from scratch: clears them, re-sorts the behavior\n * indexes, and re-adds m_count agents (Carbon InitializeGeometryResource,\n * cpp:126-140). Behaviors like SpawnDrones use this as a full reset.\n */\n @carbon.method\n @impl.implemented\n InitializeGeometryResource()\n {\n this.#agents.length = 0;\n for (let i = 0; i < this.#scratchData.length; i++)\n {\n if (this.#scratchData[i])\n {\n this.#scratchData[i].length = 0;\n }\n }\n\n this.SortBehaviorIndexes();\n\n const t = this.count;\n this.actualCount = 0;\n this.SetCount(t);\n }\n\n /** Carbon BehaviorGroup::SetVertexFunctionReferance (cpp:142-145). */\n @carbon.method\n @impl.implemented\n SetVertexFunctionReferance(callback)\n {\n this.#changeBufferVertexCount = typeof callback === \"function\" ? callback : null;\n }\n\n /** Carbon BehaviorGroup::GetSize (cpp:151-154). */\n @carbon.method\n @impl.implemented\n GetSize()\n {\n return this.#agents.length;\n }\n\n /** Carbon BehaviorGroup::GetCount (cpp:160-163). */\n @carbon.method\n @impl.implemented\n GetCount()\n {\n return this.actualCount;\n }\n\n /** Carbon method CreateAgentTree (cpp:169-177). */\n @carbon.method\n @impl.implemented\n CreateAgentTree()\n {\n this.#tree = new EveKDdroneManagementTree();\n this.#tree.CreateTree(this.#agents, this.behaviors.length);\n return this.#tree;\n }\n\n /** Carbon BehaviorGroup::GetBehaviorByName (cpp:187-197). */\n @carbon.method\n @impl.implemented\n GetBehaviorByName(name)\n {\n const target = String(name ?? \"\");\n for (const behavior of this.behaviors)\n {\n if (target === (behavior?.GetBehaviorName?.() ?? \"unnamed\"))\n {\n return behavior;\n }\n }\n return null;\n }\n\n /** Carbon BehaviorGroup::SortBehaviorIndexes (cpp:206-221). */\n @carbon.method\n @impl.implemented\n SortBehaviorIndexes()\n {\n this.#sortedBehaviorIndexes.length = 0;\n for (let priority = 0; priority < ProcessPriority.COUNT; priority++)\n {\n for (let index = 0; index < this.behaviors.length; index++)\n {\n if ((this.behaviors[index]?.GetProcessPriority?.() ?? ProcessPriority.LEAST_PRIORITY) === priority)\n {\n this.#sortedBehaviorIndexes.push(index);\n }\n }\n }\n }\n\n /** Carbon BehaviorGroup::GetMesh (cpp:227-230). */\n @carbon.method\n @impl.implemented\n GetMesh()\n {\n return this.mesh;\n }\n\n /** Carbon BehaviorGroup::GetMaxVelocity (cpp:236-239). */\n @carbon.method\n @impl.implemented\n GetMaxVelocity()\n {\n return this.maxVelocity;\n }\n\n /** Carbon BehaviorGroup::SetGroupIndexIndicator (cpp:254-257). */\n @carbon.method\n @impl.implemented\n SetGroupIndexIndicator(index)\n {\n this.#groupIndex = Number(index) | 0;\n }\n\n /** Carbon BehaviorGroup::GetGroupIndexIndicator (cpp:263-266). */\n @carbon.method\n @impl.implemented\n GetGroupIndexIndicator()\n {\n return this.#groupIndex;\n }\n\n /** Carbon method AddAgent (cpp:272-278). */\n @carbon.method\n @impl.implemented\n AddAgent()\n {\n this.#AddAgentPrivate();\n this.#OnAgentCountChanged();\n }\n\n /**\n * Adds one agent per position and initializes the newcomers' scratch\n * records (Carbon AddAgents, cpp:280-310).\n * @param {Array<Float32Array>} positions\n */\n @carbon.method\n @impl.implemented\n AddAgents(positions)\n {\n if (!Array.isArray(positions))\n {\n return;\n }\n\n const firstNewIndex = this.#agents.length;\n for (const position of positions)\n {\n const agent = this.#createAgent();\n vec3.copy(agent.position, position);\n this.#agents.push(agent);\n }\n\n this.#EnsureScratchArrays();\n for (let agentIndex = firstNewIndex; agentIndex < this.#agents.length; agentIndex++)\n {\n this.#InitializeScratchForAgent(agentIndex);\n }\n\n this.actualCount += positions.length;\n this.#OnAgentCountChanged();\n }\n\n /** Carbon method RemoveAgent (cpp:415-426). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Math.random replaces Carbon's TriRandInt when selecting the removed agent.\")\n RemoveAgent()\n {\n if (this.#agents.length === 0)\n {\n return;\n }\n const index = Math.floor(Math.random() * this.#agents.length);\n this.RemoveSpecificAgent(index);\n this.#OnAgentCountChanged();\n }\n\n /**\n * Swap-with-last removal that keeps every behavior's per-agent scratch\n * record aligned (Carbon RemoveSpecificAgent, cpp:432-452).\n * @param {Number} index\n */\n @carbon.method\n @impl.implemented\n RemoveSpecificAgent(index)\n {\n const lastIndex = this.#agents.length - 1;\n if (index < 0 || index > lastIndex)\n {\n return;\n }\n\n this.#agents[index] = this.#agents[lastIndex];\n this.#agents.pop();\n\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const records = this.#scratchData[i];\n if (!records)\n {\n continue;\n }\n records[index] = records[lastIndex];\n records.length = this.#agents.length;\n }\n\n this.actualCount--;\n this.#OnAgentCountChanged();\n }\n\n /** Carbon method SetCount (cpp:350-368). */\n @carbon.method\n @impl.implemented\n SetCount(count)\n {\n const value = Number(count);\n const desired = Number.isFinite(value) ? Math.trunc(value) : -1;\n if (desired === this.actualCount || desired < 0)\n {\n return;\n }\n\n if (this.actualCount < desired)\n {\n this.#AddAgentsByCount(desired);\n }\n else\n {\n this.#RemoveAgentsByCount(desired);\n }\n\n // Carbon updates only m_actualCount here; m_count stays the authored\n // spawn count that InitializeGeometryResource restores.\n this.actualCount = desired;\n this.#OnAgentCountChanged();\n }\n\n /**\n * Runs the priority-sorted behaviors against the shared range query, then\n * integrates every agent's acceleration, velocity, facing, and position\n * (Carbon UpdateAgents, cpp:521-626).\n * @param {Number} dt - delta time in seconds\n * @param {Object} system - owning EveChildBehaviorSystem\n */\n @carbon.method\n @impl.implemented\n UpdateAgents(dt, system)\n {\n // make sure the update isn't too big when e.g. a player resizes his window\n const deltaTime = Math.min(Math.max(Number(dt) || 0, 0), 0.1);\n\n // JS has no Blue list notify: keep the priority order and scratch shells\n // in sync with the behavior list before the frame body runs (Carbon's\n // OnListModified seam).\n if (this.#sortedBehaviorIndexes.length !== this.behaviors.length)\n {\n this.SortBehaviorIndexes();\n }\n this.#EnsureScratchArrays();\n this.#SyncScratchRecords();\n\n if (this.#updatedOnce)\n {\n if (!this.display || !this.update)\n {\n this.#tree = null;\n return;\n }\n if (this.#agents.length === 0)\n {\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const index = this.#sortedBehaviorIndexes[i];\n this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, EMPTY_SEARCH_TREE);\n }\n return;\n }\n }\n if (this.#tree === null)\n {\n this.CreateAgentTree();\n }\n\n const ranges = this.#ranges;\n ranges.length = 0;\n const boundingRadius = this.boundingSphereRadius * this.scale;\n for (const behavior of this.behaviors)\n {\n const searchRadius = behavior?.GetBehaviorSearchRadius?.() ?? -1;\n ranges.push(searchRadius === -1 ? -1 : searchRadius + boundingRadius);\n }\n\n const dronesInRange = this.#tree.FindDronesInRange(this.#agents, ranges, boundingRadius);\n\n // Calculate the behaviors\n if (this.collectForces)\n {\n this.#forces.length = 0;\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const index = this.#sortedBehaviorIndexes[i];\n const forces = this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, dronesInRange[index] ?? EMPTY_SEARCH_TREE);\n if (Array.isArray(forces))\n {\n for (const force of forces)\n {\n this.#forces.push(force);\n }\n }\n }\n }\n else\n {\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const index = this.#sortedBehaviorIndexes[i];\n this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, dronesInRange[index] ?? EMPTY_SEARCH_TREE);\n }\n }\n\n // Move the agents based on the behaviors\n const maxVelocitySq = Math.max(1, this.maxVelocity * this.maxVelocity);\n for (const agent of this.#agents)\n {\n agent.lifetime += deltaTime;\n\n vec3.scaleAndAdd(agent.velocity, agent.velocity, agent.acceleration, deltaTime);\n\n vec3.transformQuat(INTEREST_POINT, Z_AXIS, agent.rotation);\n vec3.lerp(ACTUAL_FACING, INTEREST_POINT, agent.velocity, vec3.squaredLength(agent.velocity) / maxVelocitySq);\n\n // Carbon TriQuaternionRotationArc(zAxis -> actualFacingDir); rotationTo\n // needs unit vectors, and a zero facing keeps the previous rotation.\n vec3.normalize(FACING_NORMALIZED, ACTUAL_FACING);\n if (vec3.squaredLength(FACING_NORMALIZED) > 0)\n {\n quat.rotationTo(agent.rotation, Z_AXIS, FACING_NORMALIZED);\n }\n vec3.copy(agent.targetDirection, ACTUAL_FACING);\n\n ClampLength(agent.velocity, this.maxVelocity);\n vec3.scaleAndAdd(agent.position, agent.position, agent.velocity, deltaTime);\n vec3.set(agent.acceleration, 0, 0, 0);\n }\n\n this.#tree.UpdateTree(deltaTime);\n\n // we always want to update the behaviors at least once, otherwise\n // behaviors like SpawnDrones won't get to spawn the drones\n this.#updatedOnce = true;\n }\n\n /**\n * Per-agent frustum visibility and mesh/sprite crossfade (Carbon\n * UpdateVisibility, cpp:637-677).\n * @param {Object} updateContext - frame context (frustum ducks)\n * @param {Float32Array} worldTransform - owning system's world transform\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Frustum ducks take a packed vec4 sphere per repo convention; a missing frustum treats agents as visible at infinite pixel size.\")\n UpdateVisibility(updateContext, worldTransform)\n {\n this.currentScreenSize = 0;\n let worldRadius = 1;\n\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const boundingRadius = this.boundingSphereRadius * this.scale;\n const blendModifier = this.#GetBlendModifier();\n\n for (const agent of this.#agents)\n {\n vec3.transformMat4(AGENT_SPHERE, agent.position, worldTransform);\n AGENT_SPHERE[3] = boundingRadius;\n if (frustum?.IsSphereVisible?.(AGENT_SPHERE) !== false)\n {\n const pixelSize = Number(frustum?.GetPixelSizeAccross?.(AGENT_SPHERE) ?? Infinity);\n agent.screenSize = pixelSize;\n this.currentScreenSize = Math.max(this.currentScreenSize, pixelSize);\n worldRadius = Math.max(worldRadius, boundingRadius);\n if (pixelSize >= this.blendScreenSizeMax)\n {\n agent.xfade = 0; // Render as mesh\n }\n else if (pixelSize <= this.blendScreenSizeMin)\n {\n agent.xfade = 1; // Render as sprite\n }\n else\n {\n agent.xfade = 1 - (pixelSize - this.blendScreenSizeMin) * blendModifier;\n }\n agent.isVisible = agent.screenSize >= this.renderThreshold;\n }\n else\n {\n agent.isVisible = false;\n }\n }\n this.mesh?.UseWithScreenSize?.(this.currentScreenSize, worldRadius);\n\n mat4.copy(this.#parentTransform, worldTransform);\n }\n\n /** Carbon BehaviorGroup::IsGroupVisible (cpp:683-686). */\n @carbon.method\n @impl.implemented\n IsGroupVisible()\n {\n return this.currentScreenSize >= this.renderThreshold;\n }\n\n /**\n * 1 if every agent lodded out to a sprite, 0 if every agent is a mesh,\n * -1 when mixed or empty (Carbon AllTheSame, cpp:397-409).\n */\n @carbon.method\n @impl.implemented\n AllTheSame()\n {\n let same = -1;\n for (const agent of this.#agents)\n {\n if (same === -1)\n {\n same = agent.xfade;\n }\n if (same !== agent.xfade)\n {\n return -1;\n }\n }\n return same;\n }\n\n /** Carbon method GetShipInfoForBuffer (cpp:692-742) - GPU instance-buffer fill. */\n @carbon.method\n @impl.notImplemented\n GetShipInfoForBuffer(..._args)\n {\n throw new Error(\"BehaviorGroup.GetShipInfoForBuffer is not implemented in CarbonEngineJS (GPU instance-buffer fill).\");\n }\n\n /** Carbon method GetBoosterInfoForBuffer (cpp:748-821) - GPU instance-buffer fill. */\n @carbon.method\n @impl.notImplemented\n GetBoosterInfoForBuffer(..._args)\n {\n throw new Error(\"BehaviorGroup.GetBoosterInfoForBuffer is not implemented in CarbonEngineJS (GPU instance-buffer fill).\");\n }\n\n /** Carbon method CreateVertexDeclaration (cpp:828-865) - renderer vertex\n * declaration bookkeeping; safe frame-loop no-op in JS. */\n @carbon.method\n @impl.noop\n CreateVertexDeclaration()\n {\n }\n\n /** Carbon BehaviorGroup::GetRenderables (cpp:871-877): PlayFX effects only. */\n @carbon.method\n @impl.implemented\n GetRenderables(renderables = [])\n {\n if (this.#playFXBehavior !== null)\n {\n this.#playFXBehavior.GetRenderables?.(renderables);\n }\n return renderables;\n }\n\n /** Carbon BehaviorGroup::UpdateAsyncronous (cpp:883-894): PlayFX fan-out. */\n @carbon.method\n @impl.implemented\n UpdateAsyncronous(updateContext)\n {\n if (!this.update)\n {\n return;\n }\n\n if (this.#playFXBehavior !== null)\n {\n this.#playFXBehavior.UpdateAsyncronous?.(updateContext, this.#parentTransform);\n }\n }\n\n /** Carbon BehaviorGroup::UpdateSyncronous (cpp:901-925): deferred tree\n * rebuild, PlayFX sync update, and parent capture. */\n @carbon.method\n @impl.implemented\n UpdateSyncronous(updateContext, params)\n {\n if (!this.update)\n {\n return;\n }\n if (this.#createAgentTree === true)\n {\n this.CreateAgentTree();\n this.#createAgentTree = false;\n }\n\n if (this.#playFXBehavior !== null)\n {\n this.#playFXBehavior.UpdateSyncronous?.(updateContext);\n }\n\n if (this.#parent === null && params?.spaceObjectParent)\n {\n this.#parent = params.spaceObjectParent;\n }\n }\n\n /** Carbon BehaviorGroup::GetParent (cpp:927-930). */\n @carbon.method\n @impl.implemented\n GetParent()\n {\n return this.#parent;\n }\n\n /** Carbon BehaviorGroup::GetBoundingSphereRadius (cpp:953-956). */\n @carbon.method\n @impl.implemented\n GetBoundingSphereRadius()\n {\n return this.boundingSphereRadius * this.scale;\n }\n\n /** Carbon BehaviorGroup::GetKDTree (cpp:958-961). */\n @carbon.method\n @impl.implemented\n GetKDTree()\n {\n return this.#tree;\n }\n\n /** Carbon BehaviorGroup::GetBooster (cpp:963-966). */\n @carbon.method\n @impl.implemented\n GetBooster()\n {\n return this.boosters;\n }\n\n /** Carbon BehaviorGroup::SetPlayFXBehavior (cpp:968-988): caches the PlayFX\n * behavior and swaps its component registration. */\n @carbon.method\n @impl.implemented\n SetPlayFXBehavior()\n {\n const behavior = this.GetBehaviorByName(\"PlayFX\");\n if (behavior !== null)\n {\n const registry = this.GetComponentRegistry();\n if (registry && this.#playFXBehavior)\n {\n this.#playFXBehavior.UnRegister?.(registry);\n }\n this.#playFXBehavior = behavior;\n if (registry)\n {\n behavior.Register?.(registry);\n }\n }\n }\n\n /**\n * Registers the booster light records with the duck-typed light manager\n * (Carbon GetLights, cpp:990-1001). The #lightInfo map is populated by the\n * booster instance-buffer fill, which is a GPU seam - until that path runs\n * the map stays empty and no lights register.\n * @param {Object} lightManager\n */\n @carbon.method\n @impl.implemented\n GetLights(lightManager)\n {\n if (this.boosters && this.boosters.GetDisplay?.())\n {\n for (const [agentIndex, info] of this.#lightInfo)\n {\n this.boosters.AddLight?.(lightManager, info, info[3], agentIndex, this.#parentTransform);\n }\n }\n }\n\n /** ITr2LightOwner::AddLight - intentionally empty in Carbon (h:116). */\n @carbon.method\n @impl.noop\n AddLight(_light)\n {\n }\n\n /** ITr2LightOwner::ClearLights - intentionally empty in Carbon (h:117). */\n @carbon.method\n @impl.noop\n ClearLights()\n {\n }\n\n /** Carbon BehaviorGroup::RegisterComponents (cpp:1003-1015). */\n @carbon.method\n @impl.implemented\n RegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n registry.RegisterComponent?.(\"ITr2LightOwner\", this);\n this.#playFXBehavior?.Register?.(registry);\n }\n }\n\n /** Carbon BehaviorGroup::UnRegisterComponents (cpp:1017-1027). */\n @carbon.method\n @impl.implemented\n UnRegisterComponents()\n {\n const registry = this.GetComponentRegistry();\n if (registry)\n {\n this.#playFXBehavior?.UnRegister?.(registry);\n }\n }\n\n /** Carbon BehaviorGroup::RegisterWithQuadRenderer (cpp:1029-1040): CPU\n * fan-out to the booster and PlayFX quad owners. */\n @carbon.method\n @impl.implemented\n RegisterWithQuadRenderer(quadRenderer)\n {\n if (this.boosters)\n {\n this.boosters.RegisterWithQuadRenderer?.(quadRenderer);\n }\n\n if (this.#playFXBehavior !== null)\n {\n this.#playFXBehavior.RegisterWithQuadRenderer?.(quadRenderer);\n }\n }\n\n /** Carbon BehaviorGroup::AddQuadsToQuadRenderer (cpp:1043-1059): CPU\n * fan-out, gated on display and group visibility. */\n @carbon.method\n @impl.implemented\n AddQuadsToQuadRenderer(frustum, quadRenderer)\n {\n if (this.display && this.IsGroupVisible())\n {\n if (this.boosters && this.boosters.GetDisplay?.())\n {\n this.boosters.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\n }\n\n if (this.#playFXBehavior !== null)\n {\n this.#playFXBehavior.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\n }\n }\n }\n\n /** Returns the portable DroneAgent records in stable instance order. */\n @impl.adapted\n GetAgents()\n {\n return this.#agents;\n }\n\n /** Returns the collected debug force pairs (Carbon m_forces). */\n @impl.adapted\n GetForces()\n {\n return this.#forces;\n }\n\n // Carbon GetBlendModifier (cpp:628-631).\n #GetBlendModifier()\n {\n return 1 / Math.max(0.0001, this.blendScreenSizeMax - this.blendScreenSizeMin);\n }\n\n // Grows the per-behavior scratch shells to the behavior count (Carbon\n // resizes m_scratchData wherever agents are added).\n #EnsureScratchArrays()\n {\n while (this.#scratchData.length < this.behaviors.length)\n {\n this.#scratchData.push(null);\n }\n }\n\n // Fills any missing per-agent scratch records and trims removed ones -\n // the JS stand-in for Carbon's behavior-list OnListModified handler\n // (cpp:77-118), which resizes scratch when behaviors join or leave.\n #SyncScratchRecords()\n {\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const behavior = this.behaviors[i];\n if ((behavior?.GetScratchMemorySize?.() ?? 0) > 0)\n {\n let records = this.#scratchData[i];\n if (!records)\n {\n records = [];\n this.#scratchData[i] = records;\n }\n for (let j = records.length; j < this.#agents.length; j++)\n {\n records[j] = behavior.InitializeScratch();\n }\n records.length = this.#agents.length;\n }\n }\n }\n\n // Initializes every scratch-owning behavior's record for one agent index\n // (Carbon InitializeScratch over the raw buffer at size * agentIndex).\n #InitializeScratchForAgent(agentIndex)\n {\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const behavior = this.behaviors[i];\n if ((behavior?.GetScratchMemorySize?.() ?? 0) > 0)\n {\n let records = this.#scratchData[i];\n if (!records)\n {\n records = [];\n this.#scratchData[i] = records;\n }\n records[agentIndex] = behavior.InitializeScratch();\n }\n }\n }\n\n // Carbon AddAgentPrivate (cpp:316-343).\n #AddAgentPrivate()\n {\n const agent = this.#createAgent();\n this.#agents.push(agent);\n this.#EnsureScratchArrays();\n this.#InitializeScratchForAgent(this.#agents.length - 1);\n this.actualCount++;\n }\n\n // Carbon AddAgentsByCount (cpp:460-491).\n #AddAgentsByCount(count)\n {\n const sizeBeforeResize = this.#agents.length;\n while (this.#agents.length < count)\n {\n this.#agents.push(this.#createAgent());\n }\n\n this.#EnsureScratchArrays();\n for (let agentIndex = sizeBeforeResize; agentIndex < this.#agents.length; agentIndex++)\n {\n this.#InitializeScratchForAgent(agentIndex);\n }\n }\n\n // Carbon RemoveAgentsByCount (cpp:499-513).\n #RemoveAgentsByCount(count)\n {\n this.#agents.length = count;\n for (let i = 0; i < this.behaviors.length; i++)\n {\n const records = this.#scratchData[i];\n if (records)\n {\n records.length = count;\n }\n }\n }\n\n #createAgent()\n {\n return {\n closestAgentInGroup: null,\n rotation: quat.create(),\n // This is because the process priority behavior can also affect where\n // drones spawn (Carbon AddAgentPrivate, cpp:318-323).\n position: vec3.clone(this.spawnPosition),\n acceleration: vec3.create(),\n velocity: vec3.create(),\n accelerationLength: 0,\n velocityLength: 0,\n target: vec3.create(),\n targetDirection: vec3.create(),\n id: Math.floor(Math.random() * 500),\n lifetime: 0,\n playFX: false,\n fxStartTime: -1,\n xfade: 0,\n isVisible: false,\n screenSize: 0\n };\n }\n\n // Carbon OnAgentCountChanged (cpp:376-388).\n #OnAgentCountChanged()\n {\n this.#createAgentTree = true;\n if (this.#changeBufferVertexCount)\n {\n this.#changeBufferVertexCount();\n }\n\n if (this.boosters)\n {\n this.boosters.RebuildFlareBuffer?.(this.actualCount);\n }\n }\n\n}\n"],"names":["Z_AXIS","vec3","fromValues","INTEREST_POINT","create","ACTUAL_FACING","FACING_NORMALIZED","AGENT_SPHERE","vec4","EMPTY_SEARCH_TREE","ClampLength","value","maxLength","lengthSq","squaredLength","scale","Math","sqrt","_BehaviorGroup","BehaviorGroup","EveEntity","e","_init_display","_init_extra_display","_init_maxVelocity","_init_extra_maxVelocity","_init_scale","_init_extra_scale","_init_blendScreenSizeMax","_init_extra_blendScreenSizeMax","_init_blendScreenSizeMin","_init_extra_blendScreenSizeMin","_init_currentScreenSize","_init_extra_currentScreenSize","_init_renderThreshold","_init_extra_renderThreshold","_init_debugIntensity","_init_extra_debugIntensity","_init_debugLodLevel","_init_extra_debugLodLevel","_init_actualCount","_init_extra_actualCount","_init_count","_init_extra_count","_init_boosters","_init_extra_boosters","_init_mesh","_init_extra_mesh","_init_name","_init_extra_name","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_debugMode","_init_extra_debugMode","_init_update","_init_extra_update","_init_behaviors","_init_extra_behaviors","_init_spawnPosition","_init_extra_spawnPosition","_init_collectForces","_init_extra_collectForces","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","boolean","float32","read","readwrite","int32","notify","model","string","list","carbon","method","impl","adapted","reason","implemented","notImplemented","noop","constructor","args","Map","mat4","display","maxVelocity","blendScreenSizeMax","blendScreenSizeMin","currentScreenSize","renderThreshold","debugIntensity","debugLodLevel","actualCount","count","boosters","mesh","name","boundingSphereRadius","debugMode","update","behaviors","spawnPosition","collectForces","Initialize","CreateVertexDeclaration","RebuildFlareBuffer","SetPlayFXBehavior","OnModified","InitializeGeometryResource","length","i","SortBehaviorIndexes","t","SetCount","SetVertexFunctionReferance","callback","GetSize","GetCount","CreateAgentTree","EveKDdroneManagementTree","CreateTree","GetBehaviorByName","target","String","behavior","GetBehaviorName","priority","ProcessPriority","COUNT","index","GetProcessPriority","LEAST_PRIORITY","push","GetMesh","GetMaxVelocity","SetGroupIndexIndicator","Number","GetGroupIndexIndicator","AddAgent","AddAgents","positions","Array","isArray","firstNewIndex","position","agent","copy","agentIndex","RemoveAgent","floor","random","RemoveSpecificAgent","lastIndex","pop","records","desired","isFinite","trunc","UpdateAgents","dt","system","deltaTime","min","max","CalculateBehavior","ranges","boundingRadius","searchRadius","GetBehaviorSearchRadius","dronesInRange","FindDronesInRange","forces","force","maxVelocitySq","lifetime","scaleAndAdd","velocity","acceleration","transformQuat","rotation","lerp","normalize","quat","rotationTo","targetDirection","set","UpdateTree","UpdateVisibility","updateContext","worldTransform","worldRadius","frustum","GetFrustum","blendModifier","transformMat4","IsSphereVisible","pixelSize","GetPixelSizeAccross","Infinity","screenSize","xfade","isVisible","UseWithScreenSize","IsGroupVisible","AllTheSame","same","GetShipInfoForBuffer","_args","Error","GetBoosterInfoForBuffer","GetRenderables","renderables","UpdateAsyncronous","UpdateSyncronous","params","spaceObjectParent","GetParent","GetBoundingSphereRadius","GetKDTree","GetBooster","registry","GetComponentRegistry","UnRegister","Register","GetLights","lightManager","GetDisplay","info","AddLight","_light","ClearLights","RegisterComponents","RegisterComponent","UnRegisterComponents","RegisterWithQuadRenderer","quadRenderer","AddQuadsToQuadRenderer","GetAgents","GetForces","#GetBlendModifier","#EnsureScratchArrays","#SyncScratchRecords","GetScratchMemorySize","j","InitializeScratch","#InitializeScratchForAgent","#AddAgentPrivate","#AddAgentsByCount","sizeBeforeResize","#RemoveAgentsByCount","#createAgent","closestAgentInGroup","clone","accelerationLength","velocityLength","id","playFX","fxStartTime","#OnAgentCountChanged"],"mappings":"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"}
1
+ {"version":3,"file":"BehaviorGroup.js","sources":["../../../../../../src/generated/eve/child/behaviors/BehaviorGroup.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/Behaviors/BehaviorGroup.h\r\n// trinity/trinity/Eve/SpaceObject/Children/Behaviors/BehaviorGroup.cpp\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/behaviors/BehaviorGroup.json.\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveEntity } from \"../../EveEntity.js\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { quat } from \"@carbonenginejs/core-math/quat\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { ProcessPriority } from \"./enums.js\";\r\nimport { EveKDdroneManagementTree } from \"./EveKDdroneManagementTree.js\";\r\nimport { EveComponentType } from \"../../../../eve/EveComponentTypes.js\";\r\n\r\n// Module scratch for the per-agent integration and visibility loops (child\r\n// updates run sequentially; non-reentrant by design).\r\nconst Z_AXIS = vec3.fromValues(0, 0, 1);\r\nconst INTEREST_POINT = vec3.create();\r\nconst ACTUAL_FACING = vec3.create();\r\nconst FACING_NORMALIZED = vec3.create();\r\nconst AGENT_SPHERE = vec4.create();\r\nconst EMPTY_SEARCH_TREE = [];\r\n\r\n// Carbon ClampLength: in-place clamp of a vec3 to a maximum length.\r\nfunction ClampLength(value, maxLength)\r\n{\r\n const lengthSq = vec3.squaredLength(value);\r\n if (lengthSq > maxLength * maxLength && lengthSq > 0)\r\n {\r\n vec3.scale(value, value, maxLength / Math.sqrt(lengthSq));\r\n }\r\n return value;\r\n}\r\n\r\n/** BehaviorGroup (eve/child/behaviors) - generated from schema shapeHash d09b2740.... */\r\n@type.define({ className: \"BehaviorGroup\", family: \"eve/child/behaviors\" })\r\nexport class BehaviorGroup extends EveEntity\r\n{\r\n\r\n #agents = [];\r\n\r\n // Per-behavior scratch: #scratchData[behaviorIndex] is an array of plain\r\n // per-agent records (behavior.InitializeScratch()) or null when the\r\n // behavior reports no scratch (Carbon m_scratchData raw buffers).\r\n #scratchData = [];\r\n\r\n // Behavior indexes ordered by ProcessPriority (Carbon m_sortedBehaviorIndexes).\r\n #sortedBehaviorIndexes = [];\r\n\r\n // Spatial partitioning tree (Carbon m_tree).\r\n #tree = null;\r\n\r\n // Carbon m_updatedOnce/m_createAgentTree runtime frame state.\r\n #updatedOnce = false;\r\n\r\n #createAgentTree = false;\r\n\r\n // Cached PlayFX behavior (Carbon m_playFXBehavior).\r\n #playFXBehavior = null;\r\n\r\n // Owner-provided buffer resize callback (Carbon m_changeBufferVertexCount).\r\n #changeBufferVertexCount = null;\r\n\r\n // Debug force collection (Carbon m_forces; pairs of position/force vec3s).\r\n #forces = [];\r\n\r\n // Reused per-frame search radii (Carbon local `ranges`).\r\n #ranges = [];\r\n\r\n // agentIndex -> vec4(position.xyz, lightScale) (Carbon m_lightInfo);\r\n // filled by the GPU booster-buffer path, consumed by GetLights.\r\n #lightInfo = new Map();\r\n\r\n // World transform captured by UpdateVisibility (Carbon m_parentTransform).\r\n #parentTransform = mat4.create();\r\n\r\n // Owning space object (Carbon m_parent), captured in UpdateSyncronous.\r\n #parent = null;\r\n\r\n // Base-instance indicator assigned by the behavior system (Carbon m_groupIndex).\r\n #groupIndex = 0;\r\n\r\n /** m_display (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_maxVelocity (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n maxVelocity = 100;\r\n\r\n /** m_scale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n scale = 1;\r\n\r\n /** m_blendScreenSizeMax (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n blendScreenSizeMax = 15;\r\n\r\n /** m_blendScreenSizeMin (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n blendScreenSizeMin = 5;\r\n\r\n /** m_currentScreenSize (float) [READ] */\r\n @io.read\r\n @type.float32\r\n currentScreenSize = 0;\r\n\r\n /** m_renderThreshold (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n renderThreshold = 1;\r\n\r\n /** m_debugIntensity (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n debugIntensity = 0;\r\n\r\n /** m_debugLodLevel (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n debugLodLevel = 0;\r\n\r\n /** m_actualCount (int32_t) [READ] */\r\n @io.read\r\n @type.int32\r\n actualCount = 0;\r\n\r\n /** m_count (int32_t) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.int32\r\n count = 0;\r\n\r\n /** m_booster (BehaviorGroupBoosterPtr) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.model(\"BehaviorGroupBooster\")\r\n boosters = null;\r\n\r\n /** m_mesh (Tr2MeshPtr) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.model(\"Tr2Mesh\")\r\n mesh = null;\r\n\r\n /** m_behaviorGroupName (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n boundingSphereRadius = 5;\r\n\r\n /** m_debugMode (bool) [READWRITE] */\r\n @io.readwrite\r\n @type.boolean\r\n debugMode = false;\r\n\r\n /** m_update (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n update = true;\r\n\r\n /** m_behaviors (PIBehaviorVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IBehavior\")\r\n behaviors = [];\r\n\r\n /** m_spawnPosition (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n spawnPosition = vec3.create();\r\n\r\n /** m_collectForces (bool) - debug toggle read by the behaviors. */\r\n @type.boolean\r\n collectForces = false;\r\n\r\n /** Carbon BehaviorGroup::Initialize (cpp:45-57). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Vertex-declaration creation is a GPU seam; scratch sizing, booster flare-count sync, and the PlayFX cache are ported.\")\r\n Initialize()\r\n {\r\n this.#EnsureScratchArrays();\r\n this.CreateVertexDeclaration();\r\n\r\n if (this.boosters)\r\n {\r\n this.boosters.RebuildFlareBuffer?.(this.count);\r\n }\r\n\r\n this.SetPlayFXBehavior();\r\n return true;\r\n }\r\n\r\n /** Carbon BehaviorGroup::OnModified (cpp:59-71); the value argument follows\r\n * the repo's OnModified duck (field name or field value). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Blue Var matching maps to the repo's OnModified duck; a mesh change refreshes the (stubbed) vertex declaration and a booster change re-syncs the flare count.\")\r\n OnModified(value = null)\r\n {\r\n if (value === \"mesh\" || (value !== null && value === this.mesh))\r\n {\r\n this.CreateVertexDeclaration();\r\n }\r\n if ((value === \"boosters\" || (value !== null && value === this.boosters)) && this.boosters !== null)\r\n {\r\n this.boosters.RebuildFlareBuffer?.(this.actualCount);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Regenerates the agents from scratch: clears them, re-sorts the behavior\r\n * indexes, and re-adds m_count agents (Carbon InitializeGeometryResource,\r\n * cpp:126-140). Behaviors like SpawnDrones use this as a full reset.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n InitializeGeometryResource()\r\n {\r\n this.#agents.length = 0;\r\n for (let i = 0; i < this.#scratchData.length; i++)\r\n {\r\n if (this.#scratchData[i])\r\n {\r\n this.#scratchData[i].length = 0;\r\n }\r\n }\r\n\r\n this.SortBehaviorIndexes();\r\n\r\n const t = this.count;\r\n this.actualCount = 0;\r\n this.SetCount(t);\r\n }\r\n\r\n /** Carbon BehaviorGroup::SetVertexFunctionReferance (cpp:142-145). */\r\n @carbon.method\r\n @impl.implemented\r\n SetVertexFunctionReferance(callback)\r\n {\r\n this.#changeBufferVertexCount = typeof callback === \"function\" ? callback : null;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetSize (cpp:151-154). */\r\n @carbon.method\r\n @impl.implemented\r\n GetSize()\r\n {\r\n return this.#agents.length;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetCount (cpp:160-163). */\r\n @carbon.method\r\n @impl.implemented\r\n GetCount()\r\n {\r\n return this.actualCount;\r\n }\r\n\r\n /** Carbon method CreateAgentTree (cpp:169-177). */\r\n @carbon.method\r\n @impl.implemented\r\n CreateAgentTree()\r\n {\r\n this.#tree = new EveKDdroneManagementTree();\r\n this.#tree.CreateTree(this.#agents, this.behaviors.length);\r\n return this.#tree;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetBehaviorByName (cpp:187-197). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBehaviorByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const behavior of this.behaviors)\r\n {\r\n if (target === (behavior?.GetBehaviorName?.() ?? \"unnamed\"))\r\n {\r\n return behavior;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /** Carbon BehaviorGroup::SortBehaviorIndexes (cpp:206-221). */\r\n @carbon.method\r\n @impl.implemented\r\n SortBehaviorIndexes()\r\n {\r\n this.#sortedBehaviorIndexes.length = 0;\r\n for (let priority = 0; priority < ProcessPriority.COUNT; priority++)\r\n {\r\n for (let index = 0; index < this.behaviors.length; index++)\r\n {\r\n if ((this.behaviors[index]?.GetProcessPriority?.() ?? ProcessPriority.LEAST_PRIORITY) === priority)\r\n {\r\n this.#sortedBehaviorIndexes.push(index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetMesh (cpp:227-230). */\r\n @carbon.method\r\n @impl.implemented\r\n GetMesh()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetMaxVelocity (cpp:236-239). */\r\n @carbon.method\r\n @impl.implemented\r\n GetMaxVelocity()\r\n {\r\n return this.maxVelocity;\r\n }\r\n\r\n /** Carbon BehaviorGroup::SetGroupIndexIndicator (cpp:254-257). */\r\n @carbon.method\r\n @impl.implemented\r\n SetGroupIndexIndicator(index)\r\n {\r\n this.#groupIndex = Number(index) | 0;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetGroupIndexIndicator (cpp:263-266). */\r\n @carbon.method\r\n @impl.implemented\r\n GetGroupIndexIndicator()\r\n {\r\n return this.#groupIndex;\r\n }\r\n\r\n /** Carbon method AddAgent (cpp:272-278). */\r\n @carbon.method\r\n @impl.implemented\r\n AddAgent()\r\n {\r\n this.#AddAgentPrivate();\r\n this.#OnAgentCountChanged();\r\n }\r\n\r\n /**\r\n * Adds one agent per position and initializes the newcomers' scratch\r\n * records (Carbon AddAgents, cpp:280-310).\r\n * @param {Array<Float32Array>} positions\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AddAgents(positions)\r\n {\r\n if (!Array.isArray(positions))\r\n {\r\n return;\r\n }\r\n\r\n const firstNewIndex = this.#agents.length;\r\n for (const position of positions)\r\n {\r\n const agent = this.#createAgent();\r\n vec3.copy(agent.position, position);\r\n this.#agents.push(agent);\r\n }\r\n\r\n this.#EnsureScratchArrays();\r\n for (let agentIndex = firstNewIndex; agentIndex < this.#agents.length; agentIndex++)\r\n {\r\n this.#InitializeScratchForAgent(agentIndex);\r\n }\r\n\r\n this.actualCount += positions.length;\r\n this.#OnAgentCountChanged();\r\n }\r\n\r\n /** Carbon method RemoveAgent (cpp:415-426). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Math.random replaces Carbon's TriRandInt when selecting the removed agent.\")\r\n RemoveAgent()\r\n {\r\n if (this.#agents.length === 0)\r\n {\r\n return;\r\n }\r\n const index = Math.floor(Math.random() * this.#agents.length);\r\n this.RemoveSpecificAgent(index);\r\n this.#OnAgentCountChanged();\r\n }\r\n\r\n /**\r\n * Swap-with-last removal that keeps every behavior's per-agent scratch\r\n * record aligned (Carbon RemoveSpecificAgent, cpp:432-452).\r\n * @param {Number} index\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RemoveSpecificAgent(index)\r\n {\r\n const lastIndex = this.#agents.length - 1;\r\n if (index < 0 || index > lastIndex)\r\n {\r\n return;\r\n }\r\n\r\n this.#agents[index] = this.#agents[lastIndex];\r\n this.#agents.pop();\r\n\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const records = this.#scratchData[i];\r\n if (!records)\r\n {\r\n continue;\r\n }\r\n records[index] = records[lastIndex];\r\n records.length = this.#agents.length;\r\n }\r\n\r\n this.actualCount--;\r\n this.#OnAgentCountChanged();\r\n }\r\n\r\n /** Carbon method SetCount (cpp:350-368). */\r\n @carbon.method\r\n @impl.implemented\r\n SetCount(count)\r\n {\r\n const value = Number(count);\r\n const desired = Number.isFinite(value) ? Math.trunc(value) : -1;\r\n if (desired === this.actualCount || desired < 0)\r\n {\r\n return;\r\n }\r\n\r\n if (this.actualCount < desired)\r\n {\r\n this.#AddAgentsByCount(desired);\r\n }\r\n else\r\n {\r\n this.#RemoveAgentsByCount(desired);\r\n }\r\n\r\n // Carbon updates only m_actualCount here; m_count stays the authored\r\n // spawn count that InitializeGeometryResource restores.\r\n this.actualCount = desired;\r\n this.#OnAgentCountChanged();\r\n }\r\n\r\n /**\r\n * Runs the priority-sorted behaviors against the shared range query, then\r\n * integrates every agent's acceleration, velocity, facing, and position\r\n * (Carbon UpdateAgents, cpp:521-626).\r\n * @param {Number} dt - delta time in seconds\r\n * @param {Object} system - owning EveChildBehaviorSystem\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateAgents(dt, system)\r\n {\r\n // make sure the update isn't too big when e.g. a player resizes his window\r\n const deltaTime = Math.min(Math.max(Number(dt) || 0, 0), 0.1);\r\n\r\n // JS has no Blue list notify: keep the priority order and scratch shells\r\n // in sync with the behavior list before the frame body runs (Carbon's\r\n // OnListModified seam).\r\n if (this.#sortedBehaviorIndexes.length !== this.behaviors.length)\r\n {\r\n this.SortBehaviorIndexes();\r\n }\r\n this.#EnsureScratchArrays();\r\n this.#SyncScratchRecords();\r\n\r\n if (this.#updatedOnce)\r\n {\r\n if (!this.display || !this.update)\r\n {\r\n this.#tree = null;\r\n return;\r\n }\r\n if (this.#agents.length === 0)\r\n {\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const index = this.#sortedBehaviorIndexes[i];\r\n this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, EMPTY_SEARCH_TREE);\r\n }\r\n return;\r\n }\r\n }\r\n if (this.#tree === null)\r\n {\r\n this.CreateAgentTree();\r\n }\r\n\r\n const ranges = this.#ranges;\r\n ranges.length = 0;\r\n const boundingRadius = this.boundingSphereRadius * this.scale;\r\n for (const behavior of this.behaviors)\r\n {\r\n const searchRadius = behavior?.GetBehaviorSearchRadius?.() ?? -1;\r\n ranges.push(searchRadius === -1 ? -1 : searchRadius + boundingRadius);\r\n }\r\n\r\n const dronesInRange = this.#tree.FindDronesInRange(this.#agents, ranges, boundingRadius);\r\n\r\n // Calculate the behaviors\r\n if (this.collectForces)\r\n {\r\n this.#forces.length = 0;\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const index = this.#sortedBehaviorIndexes[i];\r\n const forces = this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, dronesInRange[index] ?? EMPTY_SEARCH_TREE);\r\n if (Array.isArray(forces))\r\n {\r\n for (const force of forces)\r\n {\r\n this.#forces.push(force);\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const index = this.#sortedBehaviorIndexes[i];\r\n this.behaviors[index]?.CalculateBehavior?.(this.#agents, this.#scratchData[index], deltaTime, this, system, dronesInRange[index] ?? EMPTY_SEARCH_TREE);\r\n }\r\n }\r\n\r\n // Move the agents based on the behaviors\r\n const maxVelocitySq = Math.max(1, this.maxVelocity * this.maxVelocity);\r\n for (const agent of this.#agents)\r\n {\r\n agent.lifetime += deltaTime;\r\n\r\n vec3.scaleAndAdd(agent.velocity, agent.velocity, agent.acceleration, deltaTime);\r\n\r\n vec3.transformQuat(INTEREST_POINT, Z_AXIS, agent.rotation);\r\n vec3.lerp(ACTUAL_FACING, INTEREST_POINT, agent.velocity, vec3.squaredLength(agent.velocity) / maxVelocitySq);\r\n\r\n // Carbon TriQuaternionRotationArc(zAxis -> actualFacingDir); rotationTo\r\n // needs unit vectors, and a zero facing keeps the previous rotation.\r\n vec3.normalize(FACING_NORMALIZED, ACTUAL_FACING);\r\n if (vec3.squaredLength(FACING_NORMALIZED) > 0)\r\n {\r\n quat.rotationTo(agent.rotation, Z_AXIS, FACING_NORMALIZED);\r\n }\r\n vec3.copy(agent.targetDirection, ACTUAL_FACING);\r\n\r\n ClampLength(agent.velocity, this.maxVelocity);\r\n vec3.scaleAndAdd(agent.position, agent.position, agent.velocity, deltaTime);\r\n vec3.set(agent.acceleration, 0, 0, 0);\r\n }\r\n\r\n this.#tree.UpdateTree(deltaTime);\r\n\r\n // we always want to update the behaviors at least once, otherwise\r\n // behaviors like SpawnDrones won't get to spawn the drones\r\n this.#updatedOnce = true;\r\n }\r\n\r\n /**\r\n * Per-agent frustum visibility and mesh/sprite crossfade (Carbon\r\n * UpdateVisibility, cpp:637-677).\r\n * @param {Object} updateContext - frame context (frustum ducks)\r\n * @param {Float32Array} worldTransform - owning system's world transform\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Frustum ducks take a packed vec4 sphere per repo convention; a missing frustum treats agents as visible at infinite pixel size.\")\r\n UpdateVisibility(updateContext, worldTransform)\r\n {\r\n this.currentScreenSize = 0;\r\n let worldRadius = 1;\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const boundingRadius = this.boundingSphereRadius * this.scale;\r\n const blendModifier = this.#GetBlendModifier();\r\n\r\n for (const agent of this.#agents)\r\n {\r\n vec3.transformMat4(AGENT_SPHERE, agent.position, worldTransform);\r\n AGENT_SPHERE[3] = boundingRadius;\r\n if (frustum?.IsSphereVisible?.(AGENT_SPHERE) !== false)\r\n {\r\n const pixelSize = Number(frustum?.GetPixelSizeAccross?.(AGENT_SPHERE) ?? Infinity);\r\n agent.screenSize = pixelSize;\r\n this.currentScreenSize = Math.max(this.currentScreenSize, pixelSize);\r\n worldRadius = Math.max(worldRadius, boundingRadius);\r\n if (pixelSize >= this.blendScreenSizeMax)\r\n {\r\n agent.xfade = 0; // Render as mesh\r\n }\r\n else if (pixelSize <= this.blendScreenSizeMin)\r\n {\r\n agent.xfade = 1; // Render as sprite\r\n }\r\n else\r\n {\r\n agent.xfade = 1 - (pixelSize - this.blendScreenSizeMin) * blendModifier;\r\n }\r\n agent.isVisible = agent.screenSize >= this.renderThreshold;\r\n }\r\n else\r\n {\r\n agent.isVisible = false;\r\n }\r\n }\r\n this.mesh?.UseWithScreenSize?.(this.currentScreenSize, worldRadius);\r\n\r\n mat4.copy(this.#parentTransform, worldTransform);\r\n }\r\n\r\n /** Carbon BehaviorGroup::IsGroupVisible (cpp:683-686). */\r\n @carbon.method\r\n @impl.implemented\r\n IsGroupVisible()\r\n {\r\n return this.currentScreenSize >= this.renderThreshold;\r\n }\r\n\r\n /**\r\n * 1 if every agent lodded out to a sprite, 0 if every agent is a mesh,\r\n * -1 when mixed or empty (Carbon AllTheSame, cpp:397-409).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n AllTheSame()\r\n {\r\n let same = -1;\r\n for (const agent of this.#agents)\r\n {\r\n if (same === -1)\r\n {\r\n same = agent.xfade;\r\n }\r\n if (same !== agent.xfade)\r\n {\r\n return -1;\r\n }\r\n }\r\n return same;\r\n }\r\n\r\n /** Carbon method GetShipInfoForBuffer (cpp:692-742) - GPU instance-buffer fill. */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetShipInfoForBuffer(..._args)\r\n {\r\n throw new Error(\"BehaviorGroup.GetShipInfoForBuffer is not implemented in CarbonEngineJS (GPU instance-buffer fill).\");\r\n }\r\n\r\n /** Carbon method GetBoosterInfoForBuffer (cpp:748-821) - GPU instance-buffer fill. */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetBoosterInfoForBuffer(..._args)\r\n {\r\n throw new Error(\"BehaviorGroup.GetBoosterInfoForBuffer is not implemented in CarbonEngineJS (GPU instance-buffer fill).\");\r\n }\r\n\r\n /** Carbon method CreateVertexDeclaration (cpp:828-865) - renderer vertex\r\n * declaration bookkeeping; safe frame-loop no-op in JS. */\r\n @carbon.method\r\n @impl.noop\r\n CreateVertexDeclaration()\r\n {\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetRenderables (cpp:871-877): PlayFX effects only. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(renderables = [])\r\n {\r\n if (this.#playFXBehavior !== null)\r\n {\r\n this.#playFXBehavior.GetRenderables?.(renderables);\r\n }\r\n return renderables;\r\n }\r\n\r\n /** Carbon BehaviorGroup::UpdateAsyncronous (cpp:883-894): PlayFX fan-out. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateAsyncronous(updateContext)\r\n {\r\n if (!this.update)\r\n {\r\n return;\r\n }\r\n\r\n if (this.#playFXBehavior !== null)\r\n {\r\n this.#playFXBehavior.UpdateAsyncronous?.(updateContext, this.#parentTransform);\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::UpdateSyncronous (cpp:901-925): deferred tree\r\n * rebuild, PlayFX sync update, and parent capture. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSyncronous(updateContext, params)\r\n {\r\n if (!this.update)\r\n {\r\n return;\r\n }\r\n if (this.#createAgentTree === true)\r\n {\r\n this.CreateAgentTree();\r\n this.#createAgentTree = false;\r\n }\r\n\r\n if (this.#playFXBehavior !== null)\r\n {\r\n this.#playFXBehavior.UpdateSyncronous?.(updateContext);\r\n }\r\n\r\n if (this.#parent === null && params?.spaceObjectParent)\r\n {\r\n this.#parent = params.spaceObjectParent;\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetParent (cpp:927-930). */\r\n @carbon.method\r\n @impl.implemented\r\n GetParent()\r\n {\r\n return this.#parent;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetBoundingSphereRadius (cpp:953-956). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n return this.boundingSphereRadius * this.scale;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetKDTree (cpp:958-961). */\r\n @carbon.method\r\n @impl.implemented\r\n GetKDTree()\r\n {\r\n return this.#tree;\r\n }\r\n\r\n /** Carbon BehaviorGroup::GetBooster (cpp:963-966). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBooster()\r\n {\r\n return this.boosters;\r\n }\r\n\r\n /** Carbon BehaviorGroup::SetPlayFXBehavior (cpp:968-988): caches the PlayFX\r\n * behavior and swaps its component registration. */\r\n @carbon.method\r\n @impl.implemented\r\n SetPlayFXBehavior()\r\n {\r\n const behavior = this.GetBehaviorByName(\"PlayFX\");\r\n if (behavior !== null)\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.#playFXBehavior)\r\n {\r\n this.#playFXBehavior.UnRegister?.(registry);\r\n }\r\n this.#playFXBehavior = behavior;\r\n if (registry)\r\n {\r\n behavior.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Registers the booster light records with the duck-typed light manager\r\n * (Carbon GetLights, cpp:990-1001). The #lightInfo map is populated by the\r\n * booster instance-buffer fill, which is a GPU seam - until that path runs\r\n * the map stays empty and no lights register.\r\n * @param {Object} lightManager\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLights(lightManager)\r\n {\r\n if (this.boosters && this.boosters.GetDisplay?.())\r\n {\r\n for (const [agentIndex, info] of this.#lightInfo)\r\n {\r\n this.boosters.AddLight?.(lightManager, info, info[3], agentIndex, this.#parentTransform);\r\n }\r\n }\r\n }\r\n\r\n /** ITr2LightOwner::AddLight - intentionally empty in Carbon (h:116). */\r\n @carbon.method\r\n @impl.noop\r\n AddLight(_light)\r\n {\r\n }\r\n\r\n /** ITr2LightOwner::ClearLights - intentionally empty in Carbon (h:117). */\r\n @carbon.method\r\n @impl.noop\r\n ClearLights()\r\n {\r\n }\r\n\r\n /** Carbon BehaviorGroup::RegisterComponents (cpp:1003-1015): unconditional\r\n * LightOwner (Carbon's verbatim \"LightOwner\" component name,\r\n * Lights/ITr2LightOwner.h:18), then forwards the PlayFX behavior. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n this.#playFXBehavior?.Register?.(registry);\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::UnRegisterComponents (cpp:1017-1027). */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n this.#playFXBehavior?.UnRegister?.(registry);\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::RegisterWithQuadRenderer (cpp:1029-1040): CPU\r\n * fan-out to the booster and PlayFX quad owners. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterWithQuadRenderer(quadRenderer)\r\n {\r\n if (this.boosters)\r\n {\r\n this.boosters.RegisterWithQuadRenderer?.(quadRenderer);\r\n }\r\n\r\n if (this.#playFXBehavior !== null)\r\n {\r\n this.#playFXBehavior.RegisterWithQuadRenderer?.(quadRenderer);\r\n }\r\n }\r\n\r\n /** Carbon BehaviorGroup::AddQuadsToQuadRenderer (cpp:1043-1059): CPU\r\n * fan-out, gated on display and group visibility. */\r\n @carbon.method\r\n @impl.implemented\r\n AddQuadsToQuadRenderer(frustum, quadRenderer)\r\n {\r\n if (this.display && this.IsGroupVisible())\r\n {\r\n if (this.boosters && this.boosters.GetDisplay?.())\r\n {\r\n this.boosters.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\r\n }\r\n\r\n if (this.#playFXBehavior !== null)\r\n {\r\n this.#playFXBehavior.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\r\n }\r\n }\r\n }\r\n\r\n /** Returns the portable DroneAgent records in stable instance order. */\r\n @impl.adapted\r\n GetAgents()\r\n {\r\n return this.#agents;\r\n }\r\n\r\n /** Returns the collected debug force pairs (Carbon m_forces). */\r\n @impl.adapted\r\n GetForces()\r\n {\r\n return this.#forces;\r\n }\r\n\r\n // Carbon GetBlendModifier (cpp:628-631).\r\n #GetBlendModifier()\r\n {\r\n return 1 / Math.max(0.0001, this.blendScreenSizeMax - this.blendScreenSizeMin);\r\n }\r\n\r\n // Grows the per-behavior scratch shells to the behavior count (Carbon\r\n // resizes m_scratchData wherever agents are added).\r\n #EnsureScratchArrays()\r\n {\r\n while (this.#scratchData.length < this.behaviors.length)\r\n {\r\n this.#scratchData.push(null);\r\n }\r\n }\r\n\r\n // Fills any missing per-agent scratch records and trims removed ones -\r\n // the JS stand-in for Carbon's behavior-list OnListModified handler\r\n // (cpp:77-118), which resizes scratch when behaviors join or leave.\r\n #SyncScratchRecords()\r\n {\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const behavior = this.behaviors[i];\r\n if ((behavior?.GetScratchMemorySize?.() ?? 0) > 0)\r\n {\r\n let records = this.#scratchData[i];\r\n if (!records)\r\n {\r\n records = [];\r\n this.#scratchData[i] = records;\r\n }\r\n for (let j = records.length; j < this.#agents.length; j++)\r\n {\r\n records[j] = behavior.InitializeScratch();\r\n }\r\n records.length = this.#agents.length;\r\n }\r\n }\r\n }\r\n\r\n // Initializes every scratch-owning behavior's record for one agent index\r\n // (Carbon InitializeScratch over the raw buffer at size * agentIndex).\r\n #InitializeScratchForAgent(agentIndex)\r\n {\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const behavior = this.behaviors[i];\r\n if ((behavior?.GetScratchMemorySize?.() ?? 0) > 0)\r\n {\r\n let records = this.#scratchData[i];\r\n if (!records)\r\n {\r\n records = [];\r\n this.#scratchData[i] = records;\r\n }\r\n records[agentIndex] = behavior.InitializeScratch();\r\n }\r\n }\r\n }\r\n\r\n // Carbon AddAgentPrivate (cpp:316-343).\r\n #AddAgentPrivate()\r\n {\r\n const agent = this.#createAgent();\r\n this.#agents.push(agent);\r\n this.#EnsureScratchArrays();\r\n this.#InitializeScratchForAgent(this.#agents.length - 1);\r\n this.actualCount++;\r\n }\r\n\r\n // Carbon AddAgentsByCount (cpp:460-491).\r\n #AddAgentsByCount(count)\r\n {\r\n const sizeBeforeResize = this.#agents.length;\r\n while (this.#agents.length < count)\r\n {\r\n this.#agents.push(this.#createAgent());\r\n }\r\n\r\n this.#EnsureScratchArrays();\r\n for (let agentIndex = sizeBeforeResize; agentIndex < this.#agents.length; agentIndex++)\r\n {\r\n this.#InitializeScratchForAgent(agentIndex);\r\n }\r\n }\r\n\r\n // Carbon RemoveAgentsByCount (cpp:499-513).\r\n #RemoveAgentsByCount(count)\r\n {\r\n this.#agents.length = count;\r\n for (let i = 0; i < this.behaviors.length; i++)\r\n {\r\n const records = this.#scratchData[i];\r\n if (records)\r\n {\r\n records.length = count;\r\n }\r\n }\r\n }\r\n\r\n #createAgent()\r\n {\r\n return {\r\n closestAgentInGroup: null,\r\n rotation: quat.create(),\r\n // This is because the process priority behavior can also affect where\r\n // drones spawn (Carbon AddAgentPrivate, cpp:318-323).\r\n position: vec3.clone(this.spawnPosition),\r\n acceleration: vec3.create(),\r\n velocity: vec3.create(),\r\n accelerationLength: 0,\r\n velocityLength: 0,\r\n target: vec3.create(),\r\n targetDirection: vec3.create(),\r\n id: Math.floor(Math.random() * 500),\r\n lifetime: 0,\r\n playFX: false,\r\n fxStartTime: -1,\r\n xfade: 0,\r\n isVisible: false,\r\n screenSize: 0\r\n };\r\n }\r\n\r\n // Carbon OnAgentCountChanged (cpp:376-388).\r\n #OnAgentCountChanged()\r\n {\r\n this.#createAgentTree = true;\r\n if (this.#changeBufferVertexCount)\r\n {\r\n this.#changeBufferVertexCount();\r\n }\r\n\r\n if (this.boosters)\r\n {\r\n this.boosters.RebuildFlareBuffer?.(this.actualCount);\r\n }\r\n }\r\n\r\n}\r\n"],"names":["Z_AXIS","vec3","fromValues","INTEREST_POINT","create","ACTUAL_FACING","FACING_NORMALIZED","AGENT_SPHERE","vec4","EMPTY_SEARCH_TREE","ClampLength","value","maxLength","lengthSq","squaredLength","scale","Math","sqrt","_BehaviorGroup","BehaviorGroup","EveEntity","e","_init_display","_init_extra_display","_init_maxVelocity","_init_extra_maxVelocity","_init_scale","_init_extra_scale","_init_blendScreenSizeMax","_init_extra_blendScreenSizeMax","_init_blendScreenSizeMin","_init_extra_blendScreenSizeMin","_init_currentScreenSize","_init_extra_currentScreenSize","_init_renderThreshold","_init_extra_renderThreshold","_init_debugIntensity","_init_extra_debugIntensity","_init_debugLodLevel","_init_extra_debugLodLevel","_init_actualCount","_init_extra_actualCount","_init_count","_init_extra_count","_init_boosters","_init_extra_boosters","_init_mesh","_init_extra_mesh","_init_name","_init_extra_name","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_debugMode","_init_extra_debugMode","_init_update","_init_extra_update","_init_behaviors","_init_extra_behaviors","_init_spawnPosition","_init_extra_spawnPosition","_init_collectForces","_init_extra_collectForces","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","boolean","float32","read","readwrite","int32","notify","model","string","list","carbon","method","impl","adapted","reason","implemented","notImplemented","noop","constructor","args","Map","mat4","display","maxVelocity","blendScreenSizeMax","blendScreenSizeMin","currentScreenSize","renderThreshold","debugIntensity","debugLodLevel","actualCount","count","boosters","mesh","name","boundingSphereRadius","debugMode","update","behaviors","spawnPosition","collectForces","Initialize","CreateVertexDeclaration","RebuildFlareBuffer","SetPlayFXBehavior","OnModified","InitializeGeometryResource","length","i","SortBehaviorIndexes","t","SetCount","SetVertexFunctionReferance","callback","GetSize","GetCount","CreateAgentTree","EveKDdroneManagementTree","CreateTree","GetBehaviorByName","target","String","behavior","GetBehaviorName","priority","ProcessPriority","COUNT","index","GetProcessPriority","LEAST_PRIORITY","push","GetMesh","GetMaxVelocity","SetGroupIndexIndicator","Number","GetGroupIndexIndicator","AddAgent","AddAgents","positions","Array","isArray","firstNewIndex","position","agent","copy","agentIndex","RemoveAgent","floor","random","RemoveSpecificAgent","lastIndex","pop","records","desired","isFinite","trunc","UpdateAgents","dt","system","deltaTime","min","max","CalculateBehavior","ranges","boundingRadius","searchRadius","GetBehaviorSearchRadius","dronesInRange","FindDronesInRange","forces","force","maxVelocitySq","lifetime","scaleAndAdd","velocity","acceleration","transformQuat","rotation","lerp","normalize","quat","rotationTo","targetDirection","set","UpdateTree","UpdateVisibility","updateContext","worldTransform","worldRadius","frustum","GetFrustum","blendModifier","transformMat4","IsSphereVisible","pixelSize","GetPixelSizeAccross","Infinity","screenSize","xfade","isVisible","UseWithScreenSize","IsGroupVisible","AllTheSame","same","GetShipInfoForBuffer","_args","Error","GetBoosterInfoForBuffer","GetRenderables","renderables","UpdateAsyncronous","UpdateSyncronous","params","spaceObjectParent","GetParent","GetBoundingSphereRadius","GetKDTree","GetBooster","registry","GetComponentRegistry","UnRegister","Register","GetLights","lightManager","GetDisplay","info","AddLight","_light","ClearLights","RegisterComponents","RegisterComponent","EveComponentType","LightOwner","UnRegisterComponents","RegisterWithQuadRenderer","quadRenderer","AddQuadsToQuadRenderer","GetAgents","GetForces","#GetBlendModifier","#EnsureScratchArrays","#SyncScratchRecords","GetScratchMemorySize","j","InitializeScratch","#InitializeScratchForAgent","#AddAgentPrivate","#AddAgentsByCount","sizeBeforeResize","#RemoveAgentsByCount","#createAgent","closestAgentInGroup","clone","accelerationLength","velocityLength","id","playFX","fxStartTime","#OnAgentCountChanged"],"mappings":"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"}
@@ -20,7 +20,7 @@ new class extends _identity {
20
20
  } = _applyDecs2311(this, [type.define({
21
21
  className: "EveChildProceduralContainer",
22
22
  family: "eve/child/procedural"
23
- })], [[[io, io.persist, void 0, type.list("IEveChildTransformModifier")], 16, "transformModifiers"], [[io, io.read, void 0, type.objectRef("IEveSpaceObjectChild")], 16, "selectedObject"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, void 0, type.model("IEveProceduralSelectionMethod")], 16, "selectionMethod"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("ReRegister on display changes is engine-owned (component registry unported); the notify contract is preserved.")], 18, "OnModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "OnListModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Entity Register/UnRegister against the component registry is engine-owned; the variable replay and swap are ported.")], 18, "ConfigureSelectedObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMethodVariableName"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetProceduralContainerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateSyncronous"], [[carbon, carbon.method, void 0, carbon.contextual(["camera"]), impl, impl.implemented], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChangeLOD"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveSetDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRangeDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayAllCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopAllCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "FindSoundEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddTransformModifier"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetShaderOption"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetInheritProperties"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "UnRegisterComponents"]], 0, void 0, _EveChildTransform));
23
+ })], [[[io, io.persist, void 0, type.list("IEveChildTransformModifier")], 16, "transformModifiers"], [[io, io.read, void 0, type.objectRef("IEveSpaceObjectChild")], 16, "selectedObject"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, void 0, type.model("IEveProceduralSelectionMethod")], 16, "selectionMethod"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("ReRegister on display changes is engine-owned (component registry unported); the notify contract is preserved.")], 18, "OnModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "OnListModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Entity Register/UnRegister against the component registry is engine-owned; the variable replay and swap are ported.")], 18, "ConfigureSelectedObject"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMethodVariableName"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetProceduralContainerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateSyncronous"], [[carbon, carbon.method, void 0, carbon.contextual(["camera"]), impl, impl.implemented], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChangeLOD"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveSetDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRangeDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayAllCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopAllCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "FindSoundEmitter"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddTransformModifier"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetShaderOption"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetInheritProperties"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"]], 0, void 0, _EveChildTransform));
24
24
  }
25
25
  constructor(...args) {
26
26
  super(...args);
@@ -48,14 +48,14 @@ new class extends _identity {
48
48
  return true;
49
49
  }
50
50
 
51
- /** Carbon EveChildProceduralContainer::OnModified (cpp:313-320): a display
52
- * change re-registers with the scene component registry (engine-owned,
51
+ /** Carbon EveChildProceduralContainer::OnModified (cpp:313-320): a display
52
+ * change re-registers with the scene component registry (engine-owned,
53
53
  * omitted). */
54
54
  OnModified(_value = null) {
55
55
  return true;
56
56
  }
57
57
 
58
- /** Carbon EveChildProceduralContainer::OnListModified (cpp:34-36) is an
58
+ /** Carbon EveChildProceduralContainer::OnListModified (cpp:34-36) is an
59
59
  * intentional no-op. */
60
60
  OnListModified(_event = 0, _key = 0, _key2 = 0, _value = null, _list = null) {}
61
61
 
@@ -69,10 +69,10 @@ new class extends _identity {
69
69
  this.name = String(name ?? "");
70
70
  }
71
71
 
72
- /** Carbon EveChildProceduralContainer::ConfigureSelectedObject
73
- * (cpp:136-156): pull the newly selected child from the selection method,
74
- * replay the stored procedural variables into it, then swap it in. Carbon
75
- * also re-registers the entity with the scene component registry
72
+ /** Carbon EveChildProceduralContainer::ConfigureSelectedObject
73
+ * (cpp:136-156): pull the newly selected child from the selection method,
74
+ * replay the stored procedural variables into it, then swap it in. Carbon
75
+ * also re-registers the entity with the scene component registry
76
76
  * (engine-owned, omitted). */
77
77
  ConfigureSelectedObject() {
78
78
  const child = this.selectionMethod?.GetSelectedChild?.() ?? null;
@@ -112,13 +112,13 @@ new class extends _identity {
112
112
  this.selectedObject?.StartControllers?.();
113
113
  }
114
114
 
115
- /**
116
- * Sync-side frame update (Carbon EveChildProceduralContainer::
117
- * UpdateSyncronous, cpp:91-107): rebase the params onto this container's
118
- * world transform, tick the selected child, then reconfigure when the
119
- * selection method reports a change.
120
- * @param {Object} updateContext - frame context (EveUpdateContext)
121
- * @param {EveChildUpdateParams} params
115
+ /**
116
+ * Sync-side frame update (Carbon EveChildProceduralContainer::
117
+ * UpdateSyncronous, cpp:91-107): rebase the params onto this container's
118
+ * world transform, tick the selected child, then reconfigure when the
119
+ * selection method reports a change.
120
+ * @param {Object} updateContext - frame context (EveUpdateContext)
121
+ * @param {EveChildUpdateParams} params
122
122
  */
123
123
  UpdateSyncronous(updateContext, params) {
124
124
  const newParams = _EveChildProceduralCo.#DeriveChildParams(params);
@@ -131,16 +131,16 @@ new class extends _identity {
131
131
  }
132
132
  }
133
133
 
134
- /**
135
- * Per-frame async update (Carbon EveChildProceduralContainer::
136
- * UpdateAsyncronous, cpp:109-134): rebuild the world transform from the
137
- * parent (the Carbon row-vector m_localTransform * parentTransform
138
- * composition lives in EveChildTransform.UpdateTransform as
139
- * mat4.multiply(world, parent, local)), fold the transform modifiers, then
140
- * fan out to the selected child and the selection method.
141
- * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers
142
- * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones
143
- * @returns {Float32Array} worldTransform
134
+ /**
135
+ * Per-frame async update (Carbon EveChildProceduralContainer::
136
+ * UpdateAsyncronous, cpp:109-134): rebuild the world transform from the
137
+ * parent (the Carbon row-vector m_localTransform * parentTransform
138
+ * composition lives in EveChildTransform.UpdateTransform as
139
+ * mat4.multiply(world, parent, local)), fold the transform modifiers, then
140
+ * fan out to the selected child and the selection method.
141
+ * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers
142
+ * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones
143
+ * @returns {Float32Array} worldTransform
144
144
  */
145
145
  UpdateAsyncronous(updateContext, params) {
146
146
  const parentTransform = params?.localToWorldTransform;
@@ -157,8 +157,8 @@ new class extends _identity {
157
157
  return this.worldTransform;
158
158
  }
159
159
 
160
- /** Carbon EveChildProceduralContainer::UpdateVisibility (cpp:38-49): gate on
161
- * display, then forward the unchanged parent transform/LOD to the selected
160
+ /** Carbon EveChildProceduralContainer::UpdateVisibility (cpp:38-49): gate on
161
+ * display, then forward the unchanged parent transform/LOD to the selected
162
162
  * child. */
163
163
  UpdateVisibility(updateContext, parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH) {
164
164
  if (!this.display) {
@@ -175,10 +175,10 @@ new class extends _identity {
175
175
  return out;
176
176
  }
177
177
 
178
- /** Carbon EveChildProceduralContainer::GetBoundingSphere (cpp:59-69): the
179
- * selected child's sphere or nothing. The child sphere is a per-call local
180
- * rather than module scratch because procedural containers nest through
181
- * their selected children; this is a bounds query, not the per-frame hot
178
+ /** Carbon EveChildProceduralContainer::GetBoundingSphere (cpp:59-69): the
179
+ * selected child's sphere or nothing. The child sphere is a per-call local
180
+ * rather than module scratch because procedural containers nest through
181
+ * their selected children; this is a bounds query, not the per-frame hot
182
182
  * path. */
183
183
  GetBoundingSphere(out = vec4.create(), _query = 0) {
184
184
  const childSphere = vec4.create();
@@ -189,8 +189,8 @@ new class extends _identity {
189
189
  return false;
190
190
  }
191
191
 
192
- /** Carbon EveChildProceduralContainer::GetLocalToWorldTransform
193
- * (cpp:181-184); the optional out follows the EveChildContainer copy-out
192
+ /** Carbon EveChildProceduralContainer::GetLocalToWorldTransform
193
+ * (cpp:181-184); the optional out follows the EveChildContainer copy-out
194
194
  * shape. */
195
195
  GetLocalToWorldTransform(out = null) {
196
196
  if (out) {
@@ -204,8 +204,8 @@ new class extends _identity {
204
204
  this.selectedObject?.ChangeLOD?.(lod);
205
205
  }
206
206
 
207
- /** Carbon EveChildProceduralContainer::PlayCurveSet (cpp:194-200): the
208
- * ITr2CurveSetOwner dynamic_cast becomes a duck call on the selected
207
+ /** Carbon EveChildProceduralContainer::PlayCurveSet (cpp:194-200): the
208
+ * ITr2CurveSetOwner dynamic_cast becomes a duck call on the selected
209
209
  * child. */
210
210
  PlayCurveSet(name, rangeName = "") {
211
211
  this.selectedObject?.PlayCurveSet?.(name, rangeName);
@@ -246,14 +246,14 @@ new class extends _identity {
246
246
  return super.Setup(scale, rotation, translation, lowestLodVisible);
247
247
  }
248
248
 
249
- /** Carbon EveChildProceduralContainer::FindSoundEmitter (cpp:287-298): the
250
- * ITr2SoundEmitterOwner dynamic_cast becomes a duck call on the selected
249
+ /** Carbon EveChildProceduralContainer::FindSoundEmitter (cpp:287-298): the
250
+ * ITr2SoundEmitterOwner dynamic_cast becomes a duck call on the selected
251
251
  * child. */
252
252
  FindSoundEmitter(name) {
253
253
  return this.selectedObject?.FindSoundEmitter?.(name) ?? null;
254
254
  }
255
255
 
256
- /** Carbon EveChildProceduralContainer::AddTransformModifier
256
+ /** Carbon EveChildProceduralContainer::AddTransformModifier
257
257
  * (cpp:300-303). */
258
258
  AddTransformModifier(modifier) {
259
259
  this.transformModifiers.push(modifier);
@@ -264,24 +264,28 @@ new class extends _identity {
264
264
  this.selectedObject?.SetShaderOption?.(name, value);
265
265
  }
266
266
 
267
- /** Carbon EveChildProceduralContainer::SetInheritProperties (cpp:346-356):
267
+ /** Carbon EveChildProceduralContainer::SetInheritProperties (cpp:346-356):
268
268
  * the IEveInheritPropertiesOwner BlueCast becomes a duck call. */
269
269
  SetInheritProperties(colorSet) {
270
270
  this.selectedObject?.SetInheritProperties?.(colorSet);
271
271
  }
272
272
 
273
- /** Carbon EveChildProceduralContainer::RegisterComponents (cpp:322-333)
274
- * registers the selected entity with the scene component registry -
275
- * unported system. */
276
- RegisterComponents(..._args) {
277
- throw new Error("EveChildProceduralContainer.RegisterComponents is not implemented in CarbonEngineJS (component registry unported).");
273
+ /** Carbon EveChildProceduralContainer::RegisterComponents (cpp:322-333):
274
+ * forward-only to the selected object. Gate m_display. */
275
+ RegisterComponents() {
276
+ const registry = this.GetComponentRegistry();
277
+ if (registry && this.display) {
278
+ this.selectedObject?.Register?.(registry);
279
+ }
278
280
  }
279
281
 
280
- /** Carbon EveChildProceduralContainer::UnRegisterComponents (cpp:334-344)
281
- * unregisters the selected entity from the scene component registry -
282
- * unported system. */
283
- UnRegisterComponents(..._args) {
284
- throw new Error("EveChildProceduralContainer.UnRegisterComponents is not implemented in CarbonEngineJS (component registry unported).");
282
+ /** Carbon EveChildProceduralContainer::UnRegisterComponents (cpp:334-344):
283
+ * forwards to the selected object; no display re-check. */
284
+ UnRegisterComponents() {
285
+ const registry = this.GetComponentRegistry();
286
+ if (registry) {
287
+ this.selectedObject?.UnRegister?.(registry);
288
+ }
285
289
  }
286
290
 
287
291
  // Copies the caller's params into a fresh child-facing record (Carbon copies