@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.
- package/dist/curves/CjsGrannyCurves.js +12 -13
- package/dist/curves/CjsGrannyCurves.js.map +1 -1
- package/dist/eve/EveBannerSet.js +20 -1
- package/dist/eve/EveBannerSet.js.map +1 -1
- package/dist/eve/EveBoosterSet2.js +19 -1
- package/dist/eve/EveBoosterSet2.js.map +1 -1
- package/dist/eve/EveComponentTypes.js +116 -0
- package/dist/eve/EveComponentTypes.js.map +1 -0
- package/dist/eve/EveHazeSet.js +18 -1
- package/dist/eve/EveHazeSet.js.map +1 -1
- package/dist/eve/EvePlaneSet.js +19 -1
- package/dist/eve/EvePlaneSet.js.map +1 -1
- package/dist/eve/EveSpotlightSet.js +18 -1
- package/dist/eve/EveSpotlightSet.js.map +1 -1
- package/dist/eve/EveSpriteLineSet.js +18 -1
- package/dist/eve/EveSpriteLineSet.js.map +1 -1
- package/dist/eve/EveSpriteSet.js +18 -1
- package/dist/eve/EveSpriteSet.js.map +1 -1
- package/dist/eve/EveUpdateContext.js +195 -31
- package/dist/eve/EveUpdateContext.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js +23 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js +43 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/eve/child/EveChildContainer.js +95 -60
- package/dist/eve/child/EveChildContainer.js.map +1 -1
- package/dist/eve/child/EveChildFogVolume.js +14 -1
- package/dist/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/eve/child/EveChildInstancedMeshes.js +43 -1
- package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
- package/dist/eve/child/EveChildLightingOverride.js +14 -1
- package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/eve/child/EveChildMesh.js +121 -80
- package/dist/eve/child/EveChildMesh.js.map +1 -1
- package/dist/eve/child/EveChildTransform.js +27 -17
- package/dist/eve/child/EveChildTransform.js.map +1 -1
- package/dist/eve/index.js +2 -0
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +14 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch.js +11 -1
- package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch2.js +14 -1
- package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch3.js +24 -1
- package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/eve/scene/EveSpaceScene.js +443 -16
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js +28 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/eve/spaceObject/EveMobile.js +25 -1
- package/dist/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js +59 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/generated/eve/child/EveChildCloud2.js +88 -5
- package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/generated/eve/child/EveChildExplosion.js +17 -1
- package/dist/generated/eve/child/EveChildExplosion.js.map +1 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js +29 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js.map +1 -1
- package/dist/generated/eve/child/EveChildParticleSystem.js +32 -24
- package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/generated/eve/child/EveChildPlug.js +23 -1
- package/dist/generated/eve/child/EveChildPlug.js.map +1 -1
- package/dist/generated/eve/child/EveChildPostProcessVolume.js +27 -14
- package/dist/generated/eve/child/EveChildPostProcessVolume.js.map +1 -1
- package/dist/generated/eve/child/EveChildRef.js +17 -1
- package/dist/generated/eve/child/EveChildRef.js.map +1 -1
- package/dist/generated/eve/child/EveChildSocket.js +17 -1
- package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js +43 -40
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js +53 -49
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
- package/dist/generated/eve/scene/EveComponentRegistry.js +11 -0
- package/dist/generated/eve/scene/EveComponentRegistry.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowFrustum.js +74 -22
- package/dist/generated/eve/scene/TriShadowFrustum.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +128 -26
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +1 -1
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js +37 -24
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +29 -28
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/generated/eve/spaceObject/EveShip2.js +39 -19
- package/dist/generated/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/trinityCore/TriFrustum.js +374 -0
- package/dist/trinityCore/TriFrustum.js.map +1 -0
- package/dist/trinityCore/TriFrustumOrtho.js +158 -0
- package/dist/trinityCore/TriFrustumOrtho.js.map +1 -0
- package/dist/trinityCore/index.js +2 -0
- package/dist/trinityCore/index.js.map +1 -1
- 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.
|
|
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
|
-
*
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
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
|
-
*
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
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
|