@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":"EveChildContainer.js","sources":["../../../../src/eve/child/EveChildContainer.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer.cpp\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer_Blue.cpp\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { quat } from \"@carbonenginejs/core-math/quat\";\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveChildTransform, applyTransformModifiers } from \"./EveChildTransform.js\";\nimport { EveChildInheritProperties } from \"./EveChildInheritProperties.js\";\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\nimport { Origin } from \"../../generated/eve/child/enums.js\";\nimport { Tr2RenderReason, TR2SHADERMODEL } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2Lod } from \"../EveLODHelper.js\";\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\n\n// Module scratch (read-only zero vector; container recursion forbids mutable\n// module scratch here - see GetBoundingSphere).\nconst ZERO_VEC3 = vec3.create();\n\n\n@type.define({ className: \"EveChildContainer\", family: \"eve/child\" })\nexport class EveChildContainer extends EveChildTransform\n{\n @io.notify\n @io.persist\n @type.int32\n @schema.enum(\"DisplayQualityModifier\")\n displayFilter = 5;\n\n @io.persist\n @type.list(\"IEveSpaceObjectChild\")\n objects = [];\n\n @io.persist\n @type.list(\"IEveChildTransformModifier\")\n transformModifiers = [];\n\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n @io.read\n @type.mat4\n worldTransform = mat4.create();\n\n @io.notify\n @io.readwrite\n @type.boolean\n mute = false;\n\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n @io.persist\n @type.string\n name = \"\";\n\n @io.persist\n @type.vec3\n translation = vec3.create();\n\n @io.persist\n @type.quat\n rotation = quat.create();\n\n @io.persist\n @type.vec3\n scaling = vec3.fromValues(1, 1, 1);\n\n @io.persist\n @type.mat4\n localTransform = mat4.create();\n\n @io.persist\n @type.boolean\n staticTransform = false;\n\n @io.persist\n @type.boolean\n alwaysOn = false;\n\n @io.persist\n @type.boolean\n updateOnDisplay = true;\n\n @io.persist\n @type.list(\"IEveSpaceObjectAttachment\")\n attachments = [];\n\n @io.persist\n @type.list(\"TriObserverLocal\")\n observers = [];\n\n @io.persist\n @type.list(\"IEveFxAttribute\")\n fxAttributes = [];\n\n @io.persist\n @type.list(\"Tr2Light\")\n lights = [];\n\n @io.persist\n @type.list(\"ITr2Controller\")\n controllers = [];\n\n @io.persist\n @type.objectRef(\"EveChildInheritProperties\")\n inheritProperties = null;\n\n @io.persist\n @type.boolean\n useSRT = true;\n\n @io.persist\n @type.boolean\n useStaticRotation = false;\n\n @io.persist\n @type.boolean\n useStaticScale = false;\n\n // SOF-authored placement values; persisted so the values interchange\n // reproduces Carbon's hidden container placement state.\n @io.persist\n @type.objectRef(\"ITr2GrannyAnimationOwner\")\n animationOwner = null;\n\n @io.persist\n @type.int32\n @schema.enum(\"Origin\")\n origin = 0;\n\n @io.persist\n @type.boolean\n isPlacementRoot = false;\n\n #controllerVariables = new Map();\n\n // Carbon m_worldVelocity/m_ownerMaxSpeed/m_activationStrength/m_hasUpdated:\n // runtime-only frame state (never persisted; Carbon keeps them out of the\n // Blue surface too).\n #worldVelocity = vec3.create();\n\n #ownerMaxSpeed = 0;\n\n #activationStrength = 1;\n\n #hasUpdated = false;\n\n @carbon.method\n @impl.adapted\n Initialize()\n {\n for (const controller of this.controllers)\n {\n if (!controller?.IsLinked?.())\n {\n controller?.Link?.(this);\n }\n }\n return true;\n }\n\n /** Carbon EveChildContainer::OnModified (cpp:76-88): display/displayFilter\n * changes re-register with the scene component registry (engine-owned,\n * omitted); a mute change fans out to children and observers. The value\n * argument follows the repo's OnModified duck (field name or field value). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Registry re-registration on display/displayFilter changes is engine-owned; the mute fan-out side effect is ported.\")\n OnModified(value = null)\n {\n if (value === \"mute\" || value === this.mute)\n {\n this.MuteChildren();\n }\n return true;\n }\n\n @carbon.method\n @impl.implemented\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\n {\n return super.Setup(scale, rotation, translation, lowestLodVisible);\n }\n\n @carbon.method\n @impl.implemented\n GetName()\n {\n return this.name;\n }\n\n @carbon.method\n @impl.implemented\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n @carbon.method\n @impl.implemented\n SetOrigin(origin)\n {\n this.origin = Number(origin) | 0;\n }\n\n @carbon.method\n @impl.implemented\n SetAlwaysOn(alwaysOn)\n {\n this.alwaysOn = !!alwaysOn;\n }\n\n @carbon.method\n @impl.implemented\n IsAlwaysOn()\n {\n return this.alwaysOn;\n }\n\n @carbon.method\n @impl.implemented\n SetDisplayQualityModifier(filter)\n {\n this.displayFilter = Number(filter) | 0;\n }\n\n @carbon.method\n @impl.implemented\n SetMute(mute)\n {\n const next = !!mute;\n if (next !== this.mute)\n {\n this.mute = next;\n this.MuteChildren();\n }\n }\n\n @carbon.method\n @impl.implemented\n MuteChildren()\n {\n for (const child of this.objects)\n {\n child?.SetMute?.(this.mute);\n }\n for (const observer of this.observers)\n {\n observer?.SetMute?.(this.mute);\n }\n }\n\n @carbon.method\n @impl.implemented\n AddTransformModifier(modifier)\n {\n this.transformModifiers.push(modifier);\n }\n\n @carbon.method\n @impl.implemented\n AddObserver(observer)\n {\n this.observers.push(observer);\n }\n\n @carbon.method\n @impl.adapted\n AddController(controller)\n {\n this.controllers.push(controller);\n controller?.Link?.(this);\n for (const [name, value] of this.#controllerVariables)\n {\n controller?.SetVariable?.(name, value);\n }\n }\n\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n const key = String(name ?? \"\");\n const next = Number(value);\n this.#controllerVariables.set(key, next);\n for (const controller of this.controllers)\n {\n controller?.SetVariable?.(key, next);\n }\n for (const child of this.objects)\n {\n child?.SetControllerVariable?.(key, next);\n }\n }\n\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n const eventName = String(name ?? \"\");\n for (const controller of this.controllers)\n {\n controller?.HandleEvent?.(eventName);\n }\n for (const child of this.objects)\n {\n child?.HandleControllerEvent?.(eventName);\n }\n }\n\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n for (const controller of this.controllers)\n {\n controller?.Start?.();\n }\n for (const child of this.objects)\n {\n child?.StartControllers?.();\n }\n }\n\n @carbon.method\n @impl.implemented\n SetProceduralContainerVariable(name, value)\n {\n for (const child of this.objects)\n {\n child?.SetProceduralContainerVariable?.(name, value);\n }\n }\n\n @carbon.method\n @impl.implemented\n GetEffectChildByName(name)\n {\n const target = String(name ?? \"\");\n for (const child of this.objects)\n {\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\n {\n return child;\n }\n }\n return null;\n }\n\n @carbon.method\n @impl.adapted\n AddToEffectChildrenList(child)\n {\n this.objects.push(child);\n for (const [name, value] of this.#controllerVariables)\n {\n child?.SetControllerVariable?.(name, value);\n }\n return child;\n }\n\n @carbon.method\n @impl.implemented\n RemoveFromEffectChildrenList(child)\n {\n const index = this.objects.indexOf(child);\n if (index !== -1)\n {\n this.objects.splice(index, 1);\n return true;\n }\n return false;\n }\n\n @carbon.method\n @impl.implemented\n SetShaderOption(name, value)\n {\n for (const child of this.objects)\n {\n child?.SetShaderOption?.(name, value);\n }\n for (const attachment of this.attachments)\n {\n attachment?.SetShaderOption?.(name, value);\n }\n }\n\n @carbon.method\n @impl.implemented\n SetAnimationOwner(animationOwner)\n {\n this.animationOwner = animationOwner ?? null;\n }\n\n @carbon.method\n @impl.implemented\n SetIsPlacementRoot(isPlacementRoot)\n {\n this.isPlacementRoot = !!isPlacementRoot;\n }\n\n @carbon.method\n @impl.implemented\n AddAttachment(attachment)\n {\n this.attachments.push(attachment);\n }\n\n @carbon.method\n @impl.implemented\n ClearAttachments()\n {\n this.attachments.length = 0;\n }\n\n @carbon.method\n @impl.implemented\n Empty()\n {\n return this.objects.length === 0 &&\n this.lights.length === 0 &&\n this.attachments.length === 0 &&\n this.controllers.length === 0 &&\n this.curveSets.length === 0 &&\n this.transformModifiers.length === 0 &&\n this.observers.length === 0;\n }\n\n /**\n * Sync-side frame update (Carbon EveChildContainer::UpdateSyncronous,\n * cpp:496-518): gate on IsUpdating, remember the owner max speed, then\n * recurse into the children with childParent params rebased onto this\n * container's world transform, and refresh the local observers.\n * @param {Object} updateContext - frame context (EveUpdateContext)\n * @param {EveChildUpdateParams} params\n */\n @carbon.method\n @impl.implemented\n UpdateSyncronous(updateContext, params)\n {\n if (!this.IsUpdating())\n {\n return;\n }\n\n this.#ownerMaxSpeed = Number(params?.ownerMaxSpeed) || 0;\n\n const newParams = EveChildContainer.#DeriveChildParams(params);\n newParams.isVisible = (params?.isVisible !== false) && this.display;\n newParams.childParent = this;\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\n\n for (const child of this.objects)\n {\n child?.UpdateSyncronous?.(updateContext, newParams);\n }\n for (const observer of this.observers)\n {\n observer?.Update?.(this.worldTransform);\n }\n }\n\n /**\n * Per-frame async update (Carbon EveChildContainer::UpdateAsyncronous +\n * DoUpdateAsyncronous, cpp:520-641): rebuild the world transform from the\n * parent, tick the controllers, fold the transform modifiers, then recurse\n * into the children with childParent params, update the curve sets and fx\n * attributes, and refresh light/attachment bone state. Carbon's wrapper\n * advances the GPU bone ring buffer and may dispatch the body onto the\n * placement task group (cpp:522-538) - both engine-owned, so the JS port\n * runs the DoUpdateAsyncronous body inline behind the same IsUpdating gate.\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\n * @returns {Float32Array} worldTransform\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.adapted\n @impl.reason(\"The GPU bone ring buffer, task-group dispatch, per-object VS/PS struct refresh, and the Granny bone-list override are engine/animation seams; the CPU update fan-out is ported.\")\n UpdateAsyncronous(updateContext, params)\n {\n if (!this.IsUpdating())\n {\n return this.worldTransform;\n }\n\n const parentTransform = params?.localToWorldTransform;\n\n if (parentTransform && parentTransform.length === 16)\n {\n this.UpdateTransform(parentTransform);\n }\n\n const frequency = params?.controllerUpdateFrequency ?? 0.5;\n for (const controller of this.controllers)\n {\n controller?.Update?.(frequency);\n }\n\n // Carbon's DoUpdateAsyncronous overrides boneCount/bones from this\n // container's own animation controller here (Tr2GrannyAnimationUtils::\n // GetBoneList, cpp:556-559) before folding modifiers. Deferred until the\n // Granny bone-list API and the bone-consuming EveChildModifierAttachToBone\n // are ported; no currently-ported modifier reads bones.\n const boneCount = params?.boneCount ?? 0;\n const bones = params?.bones ?? null;\n\n applyTransformModifiers(this, updateContext, boneCount, bones);\n\n this.#activationStrength = Number(params?.activationStrength ?? 1);\n\n // Carbon (cpp:568-590): when attachments exist the per-object VS/PS\n // structs are refreshed from the parent - GPU constant-buffer seam; the\n // per-object record carries the live object reference instead\n // (GetPerObjectData).\n\n const newParams = EveChildContainer.#DeriveChildParams(params);\n newParams.isVisible = (params?.isVisible !== false) && this.display;\n newParams.childParent = this;\n newParams.boneCount = boneCount;\n newParams.bones = bones;\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\n\n // Carbon (cpp:599-610): a space-object-rooted container samples the\n // owner's world velocity; nested containers inherit it via params.\n if (params?.spaceObjectParent)\n {\n if (!params.childParent)\n {\n const velocity = params.spaceObjectParent.GetWorldVelocity?.(this.#worldVelocity) ??\n params.spaceObjectParent.worldVelocity;\n if (velocity && velocity !== this.#worldVelocity)\n {\n vec3.copy(this.#worldVelocity, velocity);\n }\n vec3.copy(newParams.worldVelocity, this.#worldVelocity);\n }\n else\n {\n vec3.copy(this.#worldVelocity, params.worldVelocity ?? ZERO_VEC3);\n }\n }\n\n for (const child of this.objects)\n {\n child?.UpdateAsyncronous?.(updateContext, newParams);\n }\n\n // Carbon (cpp:617-624): container-owned curve sets tick with the frame\n // time as BOTH realTime and simTime.\n if (this.curveSets.length)\n {\n const time = Number(updateContext?.GetTime?.() ?? updateContext?.currentTime ?? updateContext?.time ?? 0);\n for (const curveSet of this.curveSets)\n {\n curveSet?.Update?.(time, time);\n }\n }\n\n for (const fxAttribute of this.fxAttributes)\n {\n fxAttribute?.UpdateAsyncronous?.(updateContext, newParams);\n }\n\n for (const light of this.lights)\n {\n light?.SetBoneMatrix?.(bones, boneCount);\n }\n\n for (const attachment of this.attachments)\n {\n attachment?.UpdateLights?.(this.worldTransform, bones, boneCount, this.#activationStrength, 0);\n }\n\n this.#hasUpdated = true;\n return this.worldTransform;\n }\n\n /**\n * Frame visibility fan-out (Carbon EveChildContainer::UpdateVisibility,\n * cpp:379-410): gate on display/IsUpdating, recurse into the children with\n * the unchanged parent transform/LOD, then refresh attachment visibility\n * against this container's world transform.\n * @param {Object} updateContext - frame context (frustum ducks)\n * @param {Float32Array} parentTransform\n * @param {Number} parentLod - parent Tr2Lod level\n * @returns {Boolean} whether the fan-out ran\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The animationOwner bone list for attachments awaits the animation seam (bones pass as null); the visibility fan-out is ported.\")\n UpdateVisibility(updateContext, parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\n {\n if (!this.display)\n {\n return false;\n }\n if (!this.IsUpdating())\n {\n return false;\n }\n\n for (const child of this.objects)\n {\n child?.UpdateVisibility?.(updateContext, parentTransform, parentLod);\n }\n\n if (this.HasRenderables())\n {\n for (const attachment of this.attachments)\n {\n attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0);\n }\n }\n return true;\n }\n\n /** Carbon EveChildContainer::GetRenderables (cpp:412-432): the container\n * itself renders only when it owns attachments; children always recurse. */\n @carbon.method\n @impl.implemented\n GetRenderables(out = [])\n {\n if (!this.display || !this.#hasUpdated)\n {\n return out;\n }\n if (!this.IsRendering())\n {\n return out;\n }\n\n if (this.HasRenderables())\n {\n out.push(this);\n }\n\n for (const child of this.objects)\n {\n child?.GetRenderables?.(out);\n }\n return out;\n }\n\n /** Carbon EveChildContainer::GetBoundingSphere (cpp:434-452): the union of\n * the children's spheres (BoundingSphereSetOrUpdate -> sph3.union). The\n * child sphere is a per-call local rather than module scratch because\n * containers nest - a shared scratch would be clobbered between recursion\n * levels; this is a bounds query, not the per-frame update hot path. */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create(), _query = 0)\n {\n if (!this.IsUpdating())\n {\n return false;\n }\n\n const childSphere = vec4.create();\n let success = false;\n for (const child of this.objects)\n {\n if (child?.GetBoundingSphere?.(childSphere))\n {\n if (success)\n {\n sph3.union(out, out, childSphere);\n }\n else\n {\n vec4.copy(out, childSphere);\n }\n success = true;\n }\n }\n return success;\n }\n\n /** Carbon EveChildContainer::GetLocalToWorldTransform (cpp:644-647); the\n * optional out follows the EveChildInstancedMeshes copy-out shape. */\n @carbon.method\n @impl.implemented\n GetLocalToWorldTransform(out = null)\n {\n if (out)\n {\n return mat4.copy(out, this.worldTransform);\n }\n return this.worldTransform;\n }\n\n /** Carbon EveChildContainer::ChangeLOD (cpp:649-655): fan-out only. */\n @carbon.method\n @impl.implemented\n ChangeLOD(lod)\n {\n for (const child of this.objects)\n {\n child?.ChangeLOD?.(lod);\n }\n }\n\n /** Carbon EveChildContainer::GetLights (cpp:657-675): each light is added\n * with the container world transform and the average basis-length scaling\n * ((|X| + |Y| + |Z|) / 3 of the world basis rows - single-matrix reads, no\n * composition). The light manager is duck-typed. */\n @carbon.method\n @impl.implemented\n GetLights(lightManager)\n {\n if (!this.display || !this.#hasUpdated)\n {\n return;\n }\n if (!this.IsRendering())\n {\n return;\n }\n\n const m = this.worldTransform;\n const scaling = (\n Math.hypot(m[0], m[1], m[2]) +\n Math.hypot(m[4], m[5], m[6]) +\n Math.hypot(m[8], m[9], m[10])\n ) / 3;\n\n for (const light of this.lights)\n {\n light?.AddLight?.(lightManager, m, scaling);\n }\n }\n\n /** Carbon EveChildContainer::GetBatches (cpp:1134-1143): attachments only,\n * gated on display, the NORMAL render reason, and a non-zero activation\n * strength. Returns whether any batch was committed (JS addition; Carbon\n * returns void). */\n @carbon.method\n @impl.implemented\n GetBatches(batches, batchType, perObjectData, reason = Tr2RenderReason.TR2RENDERREASON_NORMAL)\n {\n if (!this.display || reason !== Tr2RenderReason.TR2RENDERREASON_NORMAL || this.#activationStrength === 0)\n {\n return false;\n }\n\n let committed = false;\n for (const attachment of this.attachments)\n {\n committed = attachment?.GetBatches?.(batches, batchType, perObjectData, reason) === true || committed;\n }\n return committed;\n }\n\n /** Carbon EveChildContainer::HasTransparentBatches (cpp:1145-1148). */\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n return false;\n }\n\n /** Carbon EveChildContainer::GetSortValue (cpp:1150-1153). */\n @carbon.method\n @impl.implemented\n GetSortValue()\n {\n return 0;\n }\n\n /** Carbon EveChildContainer::GetPerObjectData (cpp:1180-1203) uploads the\n * animationOwner bone palette into the GPU ring buffer and allocates\n * Tr2PerObjectDataWithPersistentBuffers; both are GPU seams, so the GPU-free\n * record carries the live object reference for the engine serializer\n * (mirrors EveSpaceObject2.GetPerObjectData). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Persistent VS/PS device buffers and the bone ring upload are engine-owned; the record carries the object reference the engine serializer consumes.\")\n GetPerObjectData(accumulator = null)\n {\n const data = typeof accumulator?.Allocate === \"function\"\n ? accumulator.Allocate(Tr2PerObjectData)\n : new Tr2PerObjectData();\n data.object = this;\n return data;\n }\n\n /** Carbon EveChildContainer::HasRenderables (cpp:1129-1132): the container\n * renders only for its attachments. */\n @carbon.method\n @impl.implemented\n HasRenderables()\n {\n return this.attachments.length > 0;\n }\n\n /** Carbon EveChildContainer::IsRendering (cpp:334-362): whether the current\n * shader model passes this container's display filter. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer shader-model global; the browser runtime stamps EveChildContainer.shaderModel (default TR2SM_3_0_DEPTH, the DX11 depth path EVE ships).\")\n IsRendering()\n {\n const settings = EveChildContainer.shaderModel;\n const filter = EveChildContainer.DisplayQualityModifier;\n\n if (settings === TR2SHADERMODEL.TR2SM_AUTHORING && this.displayFilter !== filter.ONLY_REFLECTIONS)\n {\n return true;\n }\n\n switch (this.displayFilter)\n {\n case filter.SHADER_LOW:\n return settings === TR2SHADERMODEL.TR2SM_3_0_LO;\n case filter.SHADER_LOWMID:\n return settings <= TR2SHADERMODEL.TR2SM_3_0_HI;\n case filter.SHADER_MED:\n return settings === TR2SHADERMODEL.TR2SM_3_0_HI;\n case filter.SHADER_HIGHMID:\n return settings >= TR2SHADERMODEL.TR2SM_3_0_HI;\n case filter.SHADER_HIGH:\n return settings === TR2SHADERMODEL.TR2SM_3_0_DEPTH;\n case filter.SHADER_ALL:\n return true;\n case filter.ONLY_REFLECTIONS:\n return false;\n }\n return false;\n }\n\n /** Carbon EveChildContainer::IsUpdating (cpp:364-367). */\n @carbon.method\n @impl.implemented\n IsUpdating()\n {\n return (this.display || !this.updateOnDisplay) &&\n (this.IsRendering() || this.displayFilter === EveChildContainer.DisplayQualityModifier.ONLY_REFLECTIONS);\n }\n\n /** Carbon EveChildContainer::PlayCurveSet (cpp:682-712): named own sets play\n * (or play a named range); children recurse via the curve-set-owner duck. */\n @carbon.method\n @impl.implemented\n PlayCurveSet(name, rangeName = \"\")\n {\n if (!this.IsUpdating())\n {\n return;\n }\n\n const target = String(name ?? \"\");\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) !== target)\n {\n continue;\n }\n if (rangeName)\n {\n curveSet.PlayTimeRange?.(rangeName);\n }\n else\n {\n curveSet.ResetTimeRange?.();\n curveSet.Play?.();\n }\n }\n\n for (const child of this.objects)\n {\n child?.PlayCurveSet?.(target, rangeName);\n }\n }\n\n /** Carbon EveChildContainer::StopCurveSet (cpp:746-768). */\n @carbon.method\n @impl.implemented\n StopCurveSet(name)\n {\n if (!this.IsUpdating())\n {\n return;\n }\n\n const target = String(name ?? \"\");\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\n {\n curveSet.Stop?.();\n }\n }\n\n for (const child of this.objects)\n {\n child?.StopCurveSet?.(target);\n }\n }\n\n /** Carbon EveChildContainer::UpdateCurveSet (cpp:770-786): samples matching\n * own and child sets at an explicit time (both clocks, as Carbon does). */\n @carbon.method\n @impl.implemented\n UpdateCurveSet(name, time)\n {\n const target = String(name ?? \"\");\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\n {\n curveSet.Update?.(time, time);\n }\n }\n\n for (const child of this.objects)\n {\n child?.UpdateCurveSet?.(target, time);\n }\n }\n\n /** Carbon EveChildContainer::PlayAllCurveSets (cpp:714-728): children\n * first, then every own set. */\n @carbon.method\n @impl.implemented\n PlayAllCurveSets()\n {\n for (const child of this.objects)\n {\n child?.PlayAllCurveSets?.();\n }\n for (const curveSet of this.curveSets)\n {\n curveSet?.Play?.();\n }\n }\n\n /** Carbon EveChildContainer::StopAllCurveSets (cpp:730-744). */\n @carbon.method\n @impl.implemented\n StopAllCurveSets()\n {\n for (const child of this.objects)\n {\n child?.StopAllCurveSets?.();\n }\n for (const curveSet of this.curveSets)\n {\n curveSet?.Stop?.();\n }\n }\n\n /** Carbon EveChildContainer::GetCurveSetDuration (cpp:788-813): maximum\n * GetMaxCurveDuration over matching own and child sets. */\n @carbon.method\n @impl.implemented\n GetCurveSetDuration(name)\n {\n if (!this.IsUpdating())\n {\n return 0;\n }\n\n const target = String(name ?? \"\");\n let duration = 0;\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\n {\n duration = Math.max(duration, Number(curveSet.GetMaxCurveDuration?.() ?? 0));\n }\n }\n\n for (const child of this.objects)\n {\n duration = Math.max(duration, Number(child?.GetCurveSetDuration?.(target) ?? 0));\n }\n return duration;\n }\n\n /** Carbon EveChildContainer::GetRangeDuration (cpp:815-840): maximum named\n * range duration over matching own and child sets. */\n @carbon.method\n @impl.implemented\n GetRangeDuration(name, rangeName)\n {\n if (!this.IsUpdating())\n {\n return 0;\n }\n\n const target = String(name ?? \"\");\n let duration = 0;\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\n {\n duration = Math.max(duration, Number(curveSet.GetRangeDuration?.(rangeName) ?? 0));\n }\n }\n\n for (const child of this.objects)\n {\n duration = Math.max(duration, Number(child?.GetRangeDuration?.(target, rangeName) ?? 0));\n }\n return duration;\n }\n\n /** Carbon EveChildContainer::GetControllerValueByName (cpp:1083-1098):\n * Carbon returns bool with a float& out; the JS port returns the value or\n * null when no controller exposes the named float variable. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The bool + float& out-param pair collapses to value-or-null in JS.\")\n GetControllerValueByName(name)\n {\n const key = String(name ?? \"\");\n for (const controller of this.controllers)\n {\n const value = controller?.GetFloatVariableByName?.(key);\n if (value !== undefined && value !== null)\n {\n return Number(value);\n }\n }\n return null;\n }\n\n /** Carbon EveChildContainer::GetWorldVelocity (cpp:1012-1015). */\n @carbon.method\n @impl.implemented\n GetWorldVelocity(out = vec3.create())\n {\n return vec3.copy(out, this.#worldVelocity);\n }\n\n /** Carbon EveChildContainer::GetOwnerMaxSpeed (cpp:1073-1076). */\n @carbon.method\n @impl.implemented\n GetOwnerMaxSpeed()\n {\n return this.#ownerMaxSpeed;\n }\n\n /** Carbon EveChildContainer::SetInheritProperties (cpp:1017-1040): lazily\n * creates the property holder, then fans the color set out to children and\n * lights. */\n @carbon.method\n @impl.implemented\n SetInheritProperties(colorSet)\n {\n if (!this.inheritProperties)\n {\n this.inheritProperties = new EveChildInheritProperties();\n }\n this.inheritProperties.SetProperties(colorSet);\n\n for (const child of this.objects)\n {\n child?.SetInheritProperties?.(colorSet);\n }\n for (const light of this.lights)\n {\n light?.SetInheritProperties?.(colorSet);\n }\n }\n\n /** Carbon EveChildContainer::FindSoundEmitter (cpp:1042-1066): named local\n * observers first, then duck-typed recursion into the children. */\n @carbon.method\n @impl.implemented\n FindSoundEmitter(name)\n {\n const target = String(name ?? \"\");\n for (const observer of this.observers)\n {\n if (observer?.name === target)\n {\n return typeof observer.GetObserver === \"function\"\n ? observer.GetObserver()\n : observer.observer ?? null;\n }\n }\n\n for (const child of this.objects)\n {\n const emitter = child?.FindSoundEmitter?.(target);\n if (emitter)\n {\n return emitter;\n }\n }\n return null;\n }\n\n // Copies the caller's params into a fresh child-facing record (Carbon copies\n // EveChildUpdateParams by value, cpp:505/592). Allocated per call like\n // EveSpaceObject2's child fan-out - container recursion makes a module\n // scratch record unsafe.\n static #DeriveChildParams(params)\n {\n const next = new EveChildUpdateParams();\n if (params)\n {\n next.spaceObjectParent = params.spaceObjectParent ?? null;\n next.childParent = params.childParent ?? null;\n next.boneCount = params.boneCount ?? 0;\n next.bones = params.bones ?? null;\n next.ownerMaxSpeed = Number(params.ownerMaxSpeed) || 0;\n next.activationStrength = Number(params.activationStrength ?? 1);\n next.controllerUpdateFrequency = Number(params.controllerUpdateFrequency ?? 0.5);\n next.isVisible = params.isVisible !== false;\n if (params.localToWorldTransform?.length === 16)\n {\n mat4.copy(next.localToWorldTransform, params.localToWorldTransform);\n }\n if (params.worldVelocity)\n {\n vec3.copy(next.worldVelocity, params.worldVelocity);\n }\n }\n return next;\n }\n\n // Carbon reads Tr2Renderer::GetShaderModel() (a renderer global); the\n // browser runtime stamps it here. TR2SM_3_0_DEPTH is the DX11 depth path\n // EVE ships, so every quality-gated container renders by default.\n static shaderModel = TR2SHADERMODEL.TR2SM_3_0_DEPTH;\n\n static DisplayQualityModifier = Object.freeze({\n ONLY_REFLECTIONS: 6,\n SHADER_ALL: 5,\n SHADER_HIGHMID: 3,\n SHADER_LOWMID: 1,\n SHADER_HIGH: 4,\n SHADER_MED: 2,\n SHADER_LOW: 0\n });\n\n static Origin = Origin;\n\n}\n"],"names":["ZERO_VEC3","vec3","create","_EveChildContainer","_identity","EveChildContainer","EveChildTransform","e","_init_displayFilter","_init_extra_displayFilter","_init_objects","_init_extra_objects","_init_transformModifiers","_init_extra_transformModifiers","_init_curveSets","_init_extra_curveSets","_init_worldTransform","_init_extra_worldTransform","_init_mute","_init_extra_mute","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_translation","_init_extra_translation","_init_rotation","_init_extra_rotation","_init_scaling","_init_extra_scaling","_init_localTransform","_init_extra_localTransform","_init_staticTransform","_init_extra_staticTransform","_init_alwaysOn","_init_extra_alwaysOn","_init_updateOnDisplay","_init_extra_updateOnDisplay","_init_attachments","_init_extra_attachments","_init_observers","_init_extra_observers","_init_fxAttributes","_init_extra_fxAttributes","_init_lights","_init_extra_lights","_init_controllers","_init_extra_controllers","_init_inheritProperties","_init_extra_inheritProperties","_init_useSRT","_init_extra_useSRT","_init_useStaticRotation","_init_extra_useStaticRotation","_init_useStaticScale","_init_extra_useStaticScale","_init_animationOwner","_init_extra_animationOwner","_init_origin","_init_extra_origin","_init_isPlacementRoot","_init_extra_isPlacementRoot","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","read","mat4","readwrite","boolean","string","quat","objectRef","carbon","method","impl","adapted","reason","implemented","contextual","displayFilter","objects","transformModifiers","curveSets","worldTransform","mute","display","name","translation","rotation","scaling","fromValues","localTransform","staticTransform","alwaysOn","updateOnDisplay","attachments","observers","fxAttributes","lights","controllers","inheritProperties","useSRT","useStaticRotation","useStaticScale","animationOwner","origin","isPlacementRoot","Map","Initialize","controller","IsLinked","Link","OnModified","value","MuteChildren","Setup","scale","lowestLodVisible","GetName","SetName","String","SetOrigin","Number","SetAlwaysOn","IsAlwaysOn","SetDisplayQualityModifier","filter","SetMute","next","child","observer","AddTransformModifier","modifier","push","AddObserver","AddController","SetVariable","SetControllerVariable","key","set","HandleControllerEvent","eventName","HandleEvent","StartControllers","Start","SetProceduralContainerVariable","GetEffectChildByName","target","AddToEffectChildrenList","RemoveFromEffectChildrenList","index","indexOf","splice","SetShaderOption","attachment","SetAnimationOwner","SetIsPlacementRoot","AddAttachment","ClearAttachments","length","Empty","UpdateSyncronous","updateContext","params","IsUpdating","ownerMaxSpeed","newParams","isVisible","childParent","copy","localToWorldTransform","Update","UpdateAsyncronous","parentTransform","UpdateTransform","frequency","controllerUpdateFrequency","boneCount","bones","applyTransformModifiers","activationStrength","spaceObjectParent","velocity","GetWorldVelocity","worldVelocity","time","GetTime","currentTime","curveSet","fxAttribute","light","SetBoneMatrix","UpdateLights","UpdateVisibility","parentLod","Tr2Lod","TR2_LOD_HIGH","HasRenderables","GetRenderables","out","IsRendering","GetBoundingSphere","vec4","_query","childSphere","success","sph3","union","GetLocalToWorldTransform","ChangeLOD","lod","GetLights","lightManager","m","Math","hypot","AddLight","GetBatches","batches","batchType","perObjectData","Tr2RenderReason","TR2RENDERREASON_NORMAL","committed","HasTransparentBatches","GetSortValue","GetPerObjectData","accumulator","data","Allocate","Tr2PerObjectData","object","settings","shaderModel","DisplayQualityModifier","TR2SHADERMODEL","TR2SM_AUTHORING","ONLY_REFLECTIONS","SHADER_LOW","TR2SM_3_0_LO","SHADER_LOWMID","TR2SM_3_0_HI","SHADER_MED","SHADER_HIGHMID","SHADER_HIGH","TR2SM_3_0_DEPTH","SHADER_ALL","PlayCurveSet","rangeName","PlayTimeRange","ResetTimeRange","Play","StopCurveSet","Stop","UpdateCurveSet","PlayAllCurveSets","StopAllCurveSets","GetCurveSetDuration","duration","max","GetMaxCurveDuration","GetRangeDuration","GetControllerValueByName","GetFloatVariableByName","undefined","GetOwnerMaxSpeed","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","FindSoundEmitter","GetObserver","emitter","#DeriveChildParams","EveChildUpdateParams","Object","freeze","Origin","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildContainer.js","sources":["../../../../src/eve/child/EveChildContainer.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildContainer_Blue.cpp\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { quat } from \"@carbonenginejs/core-math/quat\";\r\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveChildTransform, applyTransformModifiers } from \"./EveChildTransform.js\";\r\nimport { EveChildInheritProperties } from \"./EveChildInheritProperties.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveComponentType } from \"../EveComponentTypes.js\";\r\nimport { Origin } from \"../../generated/eve/child/enums.js\";\r\nimport { Tr2RenderReason, TR2SHADERMODEL } from \"../../generated/trinityCore/enums.js\";\r\nimport { Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\r\n\r\n// Module scratch (read-only zero vector; container recursion forbids mutable\r\n// module scratch here - see GetBoundingSphere).\r\nconst ZERO_VEC3 = vec3.create();\r\n\r\n\r\n@type.define({ className: \"EveChildContainer\", family: \"eve/child\" })\r\nexport class EveChildContainer extends EveChildTransform\r\n{\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"DisplayQualityModifier\")\r\n displayFilter = 5;\r\n\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n objects = [];\r\n\r\n @io.persist\r\n @type.list(\"IEveChildTransformModifier\")\r\n transformModifiers = [];\r\n\r\n @io.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.persist\r\n @type.vec3\r\n translation = vec3.create();\r\n\r\n @io.persist\r\n @type.quat\r\n rotation = quat.create();\r\n\r\n @io.persist\r\n @type.vec3\r\n scaling = vec3.fromValues(1, 1, 1);\r\n\r\n @io.persist\r\n @type.mat4\r\n localTransform = mat4.create();\r\n\r\n @io.persist\r\n @type.boolean\r\n staticTransform = false;\r\n\r\n @io.persist\r\n @type.boolean\r\n alwaysOn = false;\r\n\r\n @io.persist\r\n @type.boolean\r\n updateOnDisplay = true;\r\n\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n @io.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n @io.persist\r\n @type.list(\"IEveFxAttribute\")\r\n fxAttributes = [];\r\n\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n @io.persist\r\n @type.objectRef(\"EveChildInheritProperties\")\r\n inheritProperties = null;\r\n\r\n @io.persist\r\n @type.boolean\r\n useSRT = true;\r\n\r\n @io.persist\r\n @type.boolean\r\n useStaticRotation = false;\r\n\r\n @io.persist\r\n @type.boolean\r\n useStaticScale = false;\r\n\r\n // SOF-authored placement values; persisted so the values interchange\r\n // reproduces Carbon's hidden container placement state.\r\n @io.persist\r\n @type.objectRef(\"ITr2GrannyAnimationOwner\")\r\n animationOwner = null;\r\n\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"Origin\")\r\n origin = 0;\r\n\r\n @io.persist\r\n @type.boolean\r\n isPlacementRoot = false;\r\n\r\n #controllerVariables = new Map();\r\n\r\n // Carbon m_worldVelocity/m_ownerMaxSpeed/m_activationStrength/m_hasUpdated:\r\n // runtime-only frame state (never persisted; Carbon keeps them out of the\r\n // Blue surface too).\r\n #worldVelocity = vec3.create();\r\n\r\n #ownerMaxSpeed = 0;\r\n\r\n #activationStrength = 1;\r\n\r\n #hasUpdated = false;\r\n\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildContainer::OnModified (cpp:76-88): display/displayFilter\r\n * changes re-register with the scene component registry (engine-owned,\r\n * omitted); a mute change fans out to children and observers. The value\r\n * argument follows the repo's OnModified duck (field name or field value). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Registry re-registration on display/displayFilter changes is engine-owned; the mute fan-out side effect is ported.\")\r\n OnModified(value = null)\r\n {\r\n if (value === \"mute\" || value === this.mute)\r\n {\r\n this.MuteChildren();\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetOrigin(origin)\r\n {\r\n this.origin = Number(origin) | 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetAlwaysOn(alwaysOn)\r\n {\r\n this.alwaysOn = !!alwaysOn;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n IsAlwaysOn()\r\n {\r\n return this.alwaysOn;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetDisplayQualityModifier(filter)\r\n {\r\n this.displayFilter = Number(filter) | 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetMute(mute)\r\n {\r\n const next = !!mute;\r\n if (next !== this.mute)\r\n {\r\n this.mute = next;\r\n this.MuteChildren();\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n MuteChildren()\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.SetMute?.(this.mute);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.SetMute?.(this.mute);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddTransformModifier(modifier)\r\n {\r\n this.transformModifiers.push(modifier);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddController(controller)\r\n {\r\n this.controllers.push(controller);\r\n controller?.Link?.(this);\r\n for (const [name, value] of this.#controllerVariables)\r\n {\r\n controller?.SetVariable?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name ?? \"\");\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers)\r\n {\r\n controller?.SetVariable?.(key, next);\r\n }\r\n for (const child of this.objects)\r\n {\r\n child?.SetControllerVariable?.(key, next);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n const eventName = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n controller?.HandleEvent?.(eventName);\r\n }\r\n for (const child of this.objects)\r\n {\r\n child?.HandleControllerEvent?.(eventName);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Start?.();\r\n }\r\n for (const child of this.objects)\r\n {\r\n child?.StartControllers?.();\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetEffectChildByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const child of this.objects)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\r\n {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddToEffectChildrenList(child)\r\n {\r\n this.objects.push(child);\r\n for (const [name, value] of this.#controllerVariables)\r\n {\r\n child?.SetControllerVariable?.(name, value);\r\n }\r\n return child;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n const index = this.objects.indexOf(child);\r\n if (index !== -1)\r\n {\r\n this.objects.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetShaderOption(name, value)\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.SetShaderOption?.(name, value);\r\n }\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.SetShaderOption?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetAnimationOwner(animationOwner)\r\n {\r\n this.animationOwner = animationOwner ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetIsPlacementRoot(isPlacementRoot)\r\n {\r\n this.isPlacementRoot = !!isPlacementRoot;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddAttachment(attachment)\r\n {\r\n this.attachments.push(attachment);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ClearAttachments()\r\n {\r\n this.attachments.length = 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Empty()\r\n {\r\n return this.objects.length === 0 &&\r\n this.lights.length === 0 &&\r\n this.attachments.length === 0 &&\r\n this.controllers.length === 0 &&\r\n this.curveSets.length === 0 &&\r\n this.transformModifiers.length === 0 &&\r\n this.observers.length === 0;\r\n }\r\n\r\n /**\r\n * Sync-side frame update (Carbon EveChildContainer::UpdateSyncronous,\r\n * cpp:496-518): gate on IsUpdating, remember the owner max speed, then\r\n * recurse into the children with childParent params rebased onto this\r\n * container's world transform, and refresh the local observers.\r\n * @param {Object} updateContext - frame context (EveUpdateContext)\r\n * @param {EveChildUpdateParams} params\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSyncronous(updateContext, params)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return;\r\n }\r\n\r\n this.#ownerMaxSpeed = Number(params?.ownerMaxSpeed) || 0;\r\n\r\n const newParams = EveChildContainer.#DeriveChildParams(params);\r\n newParams.isVisible = (params?.isVisible !== false) && this.display;\r\n newParams.childParent = this;\r\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.UpdateSyncronous?.(updateContext, newParams);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.Update?.(this.worldTransform);\r\n }\r\n }\r\n\r\n /**\r\n * Per-frame async update (Carbon EveChildContainer::UpdateAsyncronous +\r\n * DoUpdateAsyncronous, cpp:520-641): rebuild the world transform from the\r\n * parent, tick the controllers, fold the transform modifiers, then recurse\r\n * into the children with childParent params, update the curve sets and fx\r\n * attributes, and refresh light/attachment bone state. Carbon's wrapper\r\n * advances the GPU bone ring buffer and may dispatch the body onto the\r\n * placement task group (cpp:522-538) - both engine-owned, so the JS port\r\n * runs the DoUpdateAsyncronous body inline behind the same IsUpdating gate.\r\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\r\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\r\n * @returns {Float32Array} worldTransform\r\n */\r\n @carbon.method\r\n @carbon.contextual([\"camera\"])\r\n @impl.adapted\r\n @impl.reason(\"The GPU bone ring buffer, task-group dispatch, per-object VS/PS struct refresh, and the Granny bone-list override are engine/animation seams; the CPU update fan-out is ported.\")\r\n UpdateAsyncronous(updateContext, params)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n const parentTransform = params?.localToWorldTransform;\r\n\r\n if (parentTransform && parentTransform.length === 16)\r\n {\r\n this.UpdateTransform(parentTransform);\r\n }\r\n\r\n const frequency = params?.controllerUpdateFrequency ?? 0.5;\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Update?.(frequency);\r\n }\r\n\r\n // Carbon's DoUpdateAsyncronous overrides boneCount/bones from this\r\n // container's own animation controller here (Tr2GrannyAnimationUtils::\r\n // GetBoneList, cpp:556-559) before folding modifiers. Deferred until the\r\n // Granny bone-list API and the bone-consuming EveChildModifierAttachToBone\r\n // are ported; no currently-ported modifier reads bones.\r\n const boneCount = params?.boneCount ?? 0;\r\n const bones = params?.bones ?? null;\r\n\r\n applyTransformModifiers(this, updateContext, boneCount, bones);\r\n\r\n this.#activationStrength = Number(params?.activationStrength ?? 1);\r\n\r\n // Carbon (cpp:568-590): when attachments exist the per-object VS/PS\r\n // structs are refreshed from the parent - GPU constant-buffer seam; the\r\n // per-object record carries the live object reference instead\r\n // (GetPerObjectData).\r\n\r\n const newParams = EveChildContainer.#DeriveChildParams(params);\r\n newParams.isVisible = (params?.isVisible !== false) && this.display;\r\n newParams.childParent = this;\r\n newParams.boneCount = boneCount;\r\n newParams.bones = bones;\r\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\r\n\r\n // Carbon (cpp:599-610): a space-object-rooted container samples the\r\n // owner's world velocity; nested containers inherit it via params.\r\n if (params?.spaceObjectParent)\r\n {\r\n if (!params.childParent)\r\n {\r\n const velocity = params.spaceObjectParent.GetWorldVelocity?.(this.#worldVelocity) ??\r\n params.spaceObjectParent.worldVelocity;\r\n if (velocity && velocity !== this.#worldVelocity)\r\n {\r\n vec3.copy(this.#worldVelocity, velocity);\r\n }\r\n vec3.copy(newParams.worldVelocity, this.#worldVelocity);\r\n }\r\n else\r\n {\r\n vec3.copy(this.#worldVelocity, params.worldVelocity ?? ZERO_VEC3);\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.UpdateAsyncronous?.(updateContext, newParams);\r\n }\r\n\r\n // Carbon (cpp:617-624): container-owned curve sets tick with the frame\r\n // time as BOTH realTime and simTime.\r\n if (this.curveSets.length)\r\n {\r\n const time = Number(updateContext?.GetTime?.() ?? updateContext?.currentTime ?? updateContext?.time ?? 0);\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Update?.(time, time);\r\n }\r\n }\r\n\r\n for (const fxAttribute of this.fxAttributes)\r\n {\r\n fxAttribute?.UpdateAsyncronous?.(updateContext, newParams);\r\n }\r\n\r\n for (const light of this.lights)\r\n {\r\n light?.SetBoneMatrix?.(bones, boneCount);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UpdateLights?.(this.worldTransform, bones, boneCount, this.#activationStrength, 0);\r\n }\r\n\r\n this.#hasUpdated = true;\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * Frame visibility fan-out (Carbon EveChildContainer::UpdateVisibility,\r\n * cpp:379-410): gate on display/IsUpdating, recurse into the children with\r\n * the unchanged parent transform/LOD, then refresh attachment visibility\r\n * against this container's world transform.\r\n * @param {Object} updateContext - frame context (frustum ducks)\r\n * @param {Float32Array} parentTransform\r\n * @param {Number} parentLod - parent Tr2Lod level\r\n * @returns {Boolean} whether the fan-out ran\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The animationOwner bone list for attachments awaits the animation seam (bones pass as null); the visibility fan-out is ported.\")\r\n UpdateVisibility(updateContext, parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\r\n {\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n if (!this.IsUpdating())\r\n {\r\n return false;\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.UpdateVisibility?.(updateContext, parentTransform, parentLod);\r\n }\r\n\r\n if (this.HasRenderables())\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetRenderables (cpp:412-432): the container\r\n * itself renders only when it owns attachments; children always recurse. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display || !this.#hasUpdated)\r\n {\r\n return out;\r\n }\r\n if (!this.IsRendering())\r\n {\r\n return out;\r\n }\r\n\r\n if (this.HasRenderables())\r\n {\r\n out.push(this);\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.GetRenderables?.(out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetBoundingSphere (cpp:434-452): the union of\r\n * the children's spheres (BoundingSphereSetOrUpdate -> sph3.union). The\r\n * child sphere is a per-call local rather than module scratch because\r\n * containers nest - a shared scratch would be clobbered between recursion\r\n * levels; this is a bounds query, not the per-frame update hot path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create(), _query = 0)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return false;\r\n }\r\n\r\n const childSphere = vec4.create();\r\n let success = false;\r\n for (const child of this.objects)\r\n {\r\n if (child?.GetBoundingSphere?.(childSphere))\r\n {\r\n if (success)\r\n {\r\n sph3.union(out, out, childSphere);\r\n }\r\n else\r\n {\r\n vec4.copy(out, childSphere);\r\n }\r\n success = true;\r\n }\r\n }\r\n return success;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetLocalToWorldTransform (cpp:644-647); the\r\n * optional out follows the EveChildInstancedMeshes copy-out shape. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n /** Carbon EveChildContainer::ChangeLOD (cpp:649-655): fan-out only. */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD(lod)\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.ChangeLOD?.(lod);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::GetLights (cpp:657-675): each light is added\r\n * with the container world transform and the average basis-length scaling\r\n * ((|X| + |Y| + |Z|) / 3 of the world basis rows - single-matrix reads, no\r\n * composition). The light manager is duck-typed. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLights(lightManager)\r\n {\r\n if (!this.display || !this.#hasUpdated)\r\n {\r\n return;\r\n }\r\n if (!this.IsRendering())\r\n {\r\n return;\r\n }\r\n\r\n const m = this.worldTransform;\r\n const scaling = (\r\n Math.hypot(m[0], m[1], m[2]) +\r\n Math.hypot(m[4], m[5], m[6]) +\r\n Math.hypot(m[8], m[9], m[10])\r\n ) / 3;\r\n\r\n for (const light of this.lights)\r\n {\r\n light?.AddLight?.(lightManager, m, scaling);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::GetBatches (cpp:1134-1143): attachments only,\r\n * gated on display, the NORMAL render reason, and a non-zero activation\r\n * strength. Returns whether any batch was committed (JS addition; Carbon\r\n * returns void). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBatches(batches, batchType, perObjectData, reason = Tr2RenderReason.TR2RENDERREASON_NORMAL)\r\n {\r\n if (!this.display || reason !== Tr2RenderReason.TR2RENDERREASON_NORMAL || this.#activationStrength === 0)\r\n {\r\n return false;\r\n }\r\n\r\n let committed = false;\r\n for (const attachment of this.attachments)\r\n {\r\n committed = attachment?.GetBatches?.(batches, batchType, perObjectData, reason) === true || committed;\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon EveChildContainer::HasTransparentBatches (cpp:1145-1148). */\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetSortValue (cpp:1150-1153). */\r\n @carbon.method\r\n @impl.implemented\r\n GetSortValue()\r\n {\r\n return 0;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetPerObjectData (cpp:1180-1203) uploads the\r\n * animationOwner bone palette into the GPU ring buffer and allocates\r\n * Tr2PerObjectDataWithPersistentBuffers; both are GPU seams, so the GPU-free\r\n * record carries the live object reference for the engine serializer\r\n * (mirrors EveSpaceObject2.GetPerObjectData). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Persistent VS/PS device buffers and the bone ring upload are engine-owned; the record carries the object reference the engine serializer consumes.\")\r\n GetPerObjectData(accumulator = null)\r\n {\r\n const data = typeof accumulator?.Allocate === \"function\"\r\n ? accumulator.Allocate(Tr2PerObjectData)\r\n : new Tr2PerObjectData();\r\n data.object = this;\r\n return data;\r\n }\r\n\r\n /** Carbon EveChildContainer::HasRenderables (cpp:1129-1132): the container\r\n * renders only for its attachments. */\r\n @carbon.method\r\n @impl.implemented\r\n HasRenderables()\r\n {\r\n return this.attachments.length > 0;\r\n }\r\n\r\n /** Carbon EveChildContainer::IsRendering (cpp:334-362): whether the current\r\n * shader model passes this container's display filter. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer shader-model global; the browser runtime stamps EveChildContainer.shaderModel (default TR2SM_3_0_DEPTH, the DX11 depth path EVE ships).\")\r\n IsRendering()\r\n {\r\n const settings = EveChildContainer.shaderModel;\r\n const filter = EveChildContainer.DisplayQualityModifier;\r\n\r\n if (settings === TR2SHADERMODEL.TR2SM_AUTHORING && this.displayFilter !== filter.ONLY_REFLECTIONS)\r\n {\r\n return true;\r\n }\r\n\r\n switch (this.displayFilter)\r\n {\r\n case filter.SHADER_LOW:\r\n return settings === TR2SHADERMODEL.TR2SM_3_0_LO;\r\n case filter.SHADER_LOWMID:\r\n return settings <= TR2SHADERMODEL.TR2SM_3_0_HI;\r\n case filter.SHADER_MED:\r\n return settings === TR2SHADERMODEL.TR2SM_3_0_HI;\r\n case filter.SHADER_HIGHMID:\r\n return settings >= TR2SHADERMODEL.TR2SM_3_0_HI;\r\n case filter.SHADER_HIGH:\r\n return settings === TR2SHADERMODEL.TR2SM_3_0_DEPTH;\r\n case filter.SHADER_ALL:\r\n return true;\r\n case filter.ONLY_REFLECTIONS:\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildContainer::IsUpdating (cpp:364-367). */\r\n @carbon.method\r\n @impl.implemented\r\n IsUpdating()\r\n {\r\n return (this.display || !this.updateOnDisplay) &&\r\n (this.IsRendering() || this.displayFilter === EveChildContainer.DisplayQualityModifier.ONLY_REFLECTIONS);\r\n }\r\n\r\n /** Carbon EveChildContainer::RegisterComponents (cpp:258-284): LightOwner\r\n * when lights are authored, then forwards the contained objects and the\r\n * attachments. Gate m_display && IsUpdating(). */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display && this.IsUpdating())\r\n {\r\n if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n\r\n for (const object of this.objects)\r\n {\r\n object?.Register?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::UnRegisterComponents (cpp:290-311): forwards\r\n * the contained objects and attachments only (own components were already\r\n * removed by EveEntity::UnRegister, EveEntity.cpp:90); no display/IsUpdating\r\n * re-check. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const object of this.objects)\r\n {\r\n object?.UnRegister?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::PlayCurveSet (cpp:682-712): named own sets play\r\n * (or play a named range); children recurse via the curve-set-owner duck. */\r\n @carbon.method\r\n @impl.implemented\r\n PlayCurveSet(name, rangeName = \"\")\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return;\r\n }\r\n\r\n const target = String(name ?? \"\");\r\n for (const curveSet of this.curveSets)\r\n {\r\n if ((curveSet?.GetName?.() ?? curveSet?.name) !== target)\r\n {\r\n continue;\r\n }\r\n if (rangeName)\r\n {\r\n curveSet.PlayTimeRange?.(rangeName);\r\n }\r\n else\r\n {\r\n curveSet.ResetTimeRange?.();\r\n curveSet.Play?.();\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.PlayCurveSet?.(target, rangeName);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::StopCurveSet (cpp:746-768). */\r\n @carbon.method\r\n @impl.implemented\r\n StopCurveSet(name)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return;\r\n }\r\n\r\n const target = String(name ?? \"\");\r\n for (const curveSet of this.curveSets)\r\n {\r\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\r\n {\r\n curveSet.Stop?.();\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.StopCurveSet?.(target);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::UpdateCurveSet (cpp:770-786): samples matching\r\n * own and child sets at an explicit time (both clocks, as Carbon does). */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateCurveSet(name, time)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const curveSet of this.curveSets)\r\n {\r\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\r\n {\r\n curveSet.Update?.(time, time);\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.UpdateCurveSet?.(target, time);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::PlayAllCurveSets (cpp:714-728): children\r\n * first, then every own set. */\r\n @carbon.method\r\n @impl.implemented\r\n PlayAllCurveSets()\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.PlayAllCurveSets?.();\r\n }\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Play?.();\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::StopAllCurveSets (cpp:730-744). */\r\n @carbon.method\r\n @impl.implemented\r\n StopAllCurveSets()\r\n {\r\n for (const child of this.objects)\r\n {\r\n child?.StopAllCurveSets?.();\r\n }\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Stop?.();\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::GetCurveSetDuration (cpp:788-813): maximum\r\n * GetMaxCurveDuration over matching own and child sets. */\r\n @carbon.method\r\n @impl.implemented\r\n GetCurveSetDuration(name)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return 0;\r\n }\r\n\r\n const target = String(name ?? \"\");\r\n let duration = 0;\r\n for (const curveSet of this.curveSets)\r\n {\r\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\r\n {\r\n duration = Math.max(duration, Number(curveSet.GetMaxCurveDuration?.() ?? 0));\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n duration = Math.max(duration, Number(child?.GetCurveSetDuration?.(target) ?? 0));\r\n }\r\n return duration;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetRangeDuration (cpp:815-840): maximum named\r\n * range duration over matching own and child sets. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRangeDuration(name, rangeName)\r\n {\r\n if (!this.IsUpdating())\r\n {\r\n return 0;\r\n }\r\n\r\n const target = String(name ?? \"\");\r\n let duration = 0;\r\n for (const curveSet of this.curveSets)\r\n {\r\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target)\r\n {\r\n duration = Math.max(duration, Number(curveSet.GetRangeDuration?.(rangeName) ?? 0));\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n duration = Math.max(duration, Number(child?.GetRangeDuration?.(target, rangeName) ?? 0));\r\n }\r\n return duration;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetControllerValueByName (cpp:1083-1098):\r\n * Carbon returns bool with a float& out; the JS port returns the value or\r\n * null when no controller exposes the named float variable. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The bool + float& out-param pair collapses to value-or-null in JS.\")\r\n GetControllerValueByName(name)\r\n {\r\n const key = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n const value = controller?.GetFloatVariableByName?.(key);\r\n if (value !== undefined && value !== null)\r\n {\r\n return Number(value);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /** Carbon EveChildContainer::GetWorldVelocity (cpp:1012-1015). */\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldVelocity(out = vec3.create())\r\n {\r\n return vec3.copy(out, this.#worldVelocity);\r\n }\r\n\r\n /** Carbon EveChildContainer::GetOwnerMaxSpeed (cpp:1073-1076). */\r\n @carbon.method\r\n @impl.implemented\r\n GetOwnerMaxSpeed()\r\n {\r\n return this.#ownerMaxSpeed;\r\n }\r\n\r\n /** Carbon EveChildContainer::SetInheritProperties (cpp:1017-1040): lazily\r\n * creates the property holder, then fans the color set out to children and\r\n * lights. */\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n if (!this.inheritProperties)\r\n {\r\n this.inheritProperties = new EveChildInheritProperties();\r\n }\r\n this.inheritProperties.SetProperties(colorSet);\r\n\r\n for (const child of this.objects)\r\n {\r\n child?.SetInheritProperties?.(colorSet);\r\n }\r\n for (const light of this.lights)\r\n {\r\n light?.SetInheritProperties?.(colorSet);\r\n }\r\n }\r\n\r\n /** Carbon EveChildContainer::FindSoundEmitter (cpp:1042-1066): named local\r\n * observers first, then duck-typed recursion into the children. */\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const observer of this.observers)\r\n {\r\n if (observer?.name === target)\r\n {\r\n return typeof observer.GetObserver === \"function\"\r\n ? observer.GetObserver()\r\n : observer.observer ?? null;\r\n }\r\n }\r\n\r\n for (const child of this.objects)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter)\r\n {\r\n return emitter;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Copies the caller's params into a fresh child-facing record (Carbon copies\r\n // EveChildUpdateParams by value, cpp:505/592). Allocated per call like\r\n // EveSpaceObject2's child fan-out - container recursion makes a module\r\n // scratch record unsafe.\r\n static #DeriveChildParams(params)\r\n {\r\n const next = new EveChildUpdateParams();\r\n if (params)\r\n {\r\n next.spaceObjectParent = params.spaceObjectParent ?? null;\r\n next.childParent = params.childParent ?? null;\r\n next.boneCount = params.boneCount ?? 0;\r\n next.bones = params.bones ?? null;\r\n next.ownerMaxSpeed = Number(params.ownerMaxSpeed) || 0;\r\n next.activationStrength = Number(params.activationStrength ?? 1);\r\n next.controllerUpdateFrequency = Number(params.controllerUpdateFrequency ?? 0.5);\r\n next.isVisible = params.isVisible !== false;\r\n if (params.localToWorldTransform?.length === 16)\r\n {\r\n mat4.copy(next.localToWorldTransform, params.localToWorldTransform);\r\n }\r\n if (params.worldVelocity)\r\n {\r\n vec3.copy(next.worldVelocity, params.worldVelocity);\r\n }\r\n }\r\n return next;\r\n }\r\n\r\n // Carbon reads Tr2Renderer::GetShaderModel() (a renderer global); the\r\n // browser runtime stamps it here. TR2SM_3_0_DEPTH is the DX11 depth path\r\n // EVE ships, so every quality-gated container renders by default.\r\n static shaderModel = TR2SHADERMODEL.TR2SM_3_0_DEPTH;\r\n\r\n static DisplayQualityModifier = Object.freeze({\r\n ONLY_REFLECTIONS: 6,\r\n SHADER_ALL: 5,\r\n SHADER_HIGHMID: 3,\r\n SHADER_LOWMID: 1,\r\n SHADER_HIGH: 4,\r\n SHADER_MED: 2,\r\n SHADER_LOW: 0\r\n });\r\n\r\n static Origin = Origin;\r\n\r\n}\r\n"],"names":["ZERO_VEC3","vec3","create","_EveChildContainer","_identity","EveChildContainer","EveChildTransform","e","_init_displayFilter","_init_extra_displayFilter","_init_objects","_init_extra_objects","_init_transformModifiers","_init_extra_transformModifiers","_init_curveSets","_init_extra_curveSets","_init_worldTransform","_init_extra_worldTransform","_init_mute","_init_extra_mute","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_translation","_init_extra_translation","_init_rotation","_init_extra_rotation","_init_scaling","_init_extra_scaling","_init_localTransform","_init_extra_localTransform","_init_staticTransform","_init_extra_staticTransform","_init_alwaysOn","_init_extra_alwaysOn","_init_updateOnDisplay","_init_extra_updateOnDisplay","_init_attachments","_init_extra_attachments","_init_observers","_init_extra_observers","_init_fxAttributes","_init_extra_fxAttributes","_init_lights","_init_extra_lights","_init_controllers","_init_extra_controllers","_init_inheritProperties","_init_extra_inheritProperties","_init_useSRT","_init_extra_useSRT","_init_useStaticRotation","_init_extra_useStaticRotation","_init_useStaticScale","_init_extra_useStaticScale","_init_animationOwner","_init_extra_animationOwner","_init_origin","_init_extra_origin","_init_isPlacementRoot","_init_extra_isPlacementRoot","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","read","mat4","readwrite","boolean","string","quat","objectRef","carbon","method","impl","adapted","reason","implemented","contextual","displayFilter","objects","transformModifiers","curveSets","worldTransform","mute","display","name","translation","rotation","scaling","fromValues","localTransform","staticTransform","alwaysOn","updateOnDisplay","attachments","observers","fxAttributes","lights","controllers","inheritProperties","useSRT","useStaticRotation","useStaticScale","animationOwner","origin","isPlacementRoot","Map","Initialize","controller","IsLinked","Link","OnModified","value","MuteChildren","Setup","scale","lowestLodVisible","GetName","SetName","String","SetOrigin","Number","SetAlwaysOn","IsAlwaysOn","SetDisplayQualityModifier","filter","SetMute","next","child","observer","AddTransformModifier","modifier","push","AddObserver","AddController","SetVariable","SetControllerVariable","key","set","HandleControllerEvent","eventName","HandleEvent","StartControllers","Start","SetProceduralContainerVariable","GetEffectChildByName","target","AddToEffectChildrenList","RemoveFromEffectChildrenList","index","indexOf","splice","SetShaderOption","attachment","SetAnimationOwner","SetIsPlacementRoot","AddAttachment","ClearAttachments","length","Empty","UpdateSyncronous","updateContext","params","IsUpdating","ownerMaxSpeed","newParams","isVisible","childParent","copy","localToWorldTransform","Update","UpdateAsyncronous","parentTransform","UpdateTransform","frequency","controllerUpdateFrequency","boneCount","bones","applyTransformModifiers","activationStrength","spaceObjectParent","velocity","GetWorldVelocity","worldVelocity","time","GetTime","currentTime","curveSet","fxAttribute","light","SetBoneMatrix","UpdateLights","UpdateVisibility","parentLod","Tr2Lod","TR2_LOD_HIGH","HasRenderables","GetRenderables","out","IsRendering","GetBoundingSphere","vec4","_query","childSphere","success","sph3","union","GetLocalToWorldTransform","ChangeLOD","lod","GetLights","lightManager","m","Math","hypot","AddLight","GetBatches","batches","batchType","perObjectData","Tr2RenderReason","TR2RENDERREASON_NORMAL","committed","HasTransparentBatches","GetSortValue","GetPerObjectData","accumulator","data","Allocate","Tr2PerObjectData","object","settings","shaderModel","DisplayQualityModifier","TR2SHADERMODEL","TR2SM_AUTHORING","ONLY_REFLECTIONS","SHADER_LOW","TR2SM_3_0_LO","SHADER_LOWMID","TR2SM_3_0_HI","SHADER_MED","SHADER_HIGHMID","SHADER_HIGH","TR2SM_3_0_DEPTH","SHADER_ALL","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","Register","UnRegisterComponents","UnRegister","PlayCurveSet","rangeName","PlayTimeRange","ResetTimeRange","Play","StopCurveSet","Stop","UpdateCurveSet","PlayAllCurveSets","StopAllCurveSets","GetCurveSetDuration","duration","max","GetMaxCurveDuration","GetRangeDuration","GetControllerValueByName","GetFloatVariableByName","undefined","GetOwnerMaxSpeed","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","FindSoundEmitter","GetObserver","emitter","#DeriveChildParams","EveChildUpdateParams","Object","freeze","Origin","constructor"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { vec3 } from '@carbonenginejs/core-math/vec3';
|
|
|
4
4
|
import { vec4 } from '@carbonenginejs/core-math/vec4';
|
|
5
5
|
import { io, type, impl, schema } from '@carbonenginejs/core-types/schema';
|
|
6
6
|
import { EveChildTransform as _EveChildTransform } from './EveChildTransform.js';
|
|
7
|
+
import { EveComponentType } from '../EveComponentTypes.js';
|
|
7
8
|
|
|
8
9
|
let _initProto, _initClass, _init_priority, _init_extra_priority, _init_volumes, _init_extra_volumes, _init_boundingSphereCenter, _init_extra_boundingSphereCenter, _init_boundingSphereRadius, _init_extra_boundingSphereRadius, _init_name, _init_extra_name, _init_intensity, _init_extra_intensity, _init_thickness, _init_extra_thickness, _init_thicknessEnabled, _init_extra_thicknessEnabled, _init_lightDirectionality, _init_extra_lightDirectionality, _init_lightDirectionalityEnabled, _init_extra_lightDirectionalityEnabled, _init_environmentIntensity, _init_extra_environmentIntensity, _init_environmentIntensityEnabled, _init_extra_environmentIntensityEnabled, _init_environmentDirectionality, _init_extra_environmentDirectionality, _init_environmentDirectionalityEnabled, _init_extra_environmentDirectionalityEnabled, _init_fogColor, _init_extra_fogColor, _init_fogColorEnabled, _init_extra_fogColorEnabled, _init_backgroundVisibility, _init_extra_backgroundVisibility, _init_backgroundVisibilityEnabled, _init_extra_backgroundVisibilityEnabled, _init_godRayNoiseIntensity, _init_extra_godRayNoiseIntensity, _init_godRayNoiseIntensityEnabled, _init_extra_godRayNoiseIntensityEnabled, _init_godRayNoiseFrequency, _init_extra_godRayNoiseFrequency, _init_godRayNoiseFrequencyEnabled, _init_extra_godRayNoiseFrequencyEnabled, _init_godRayNoiseAnimationSpeed, _init_extra_godRayNoiseAnimationSpeed, _init_godRayNoiseAnimationSpeedEnabled, _init_extra_godRayNoiseAnimationSpeedEnabled, _init_fogNoiseIntensity, _init_extra_fogNoiseIntensity, _init_fogNoiseIntensityEnabled, _init_extra_fogNoiseIntensityEnabled, _init_fogNoiseFrequency, _init_extra_fogNoiseFrequency, _init_fogNoiseFrequencyEnabled, _init_extra_fogNoiseFrequencyEnabled;
|
|
9
10
|
let _EveChildFogVolume;
|
|
@@ -16,7 +17,7 @@ new class extends _identity {
|
|
|
16
17
|
} = _applyDecs2311(this, [type.define({
|
|
17
18
|
className: "EveChildFogVolume",
|
|
18
19
|
family: "eve/child"
|
|
19
|
-
})], [[[io, io.persist, type, type.int32, void 0, schema.enum("Priority")], 16, "priority"], [[io, io.persist, void 0, type.list("IEveVolume")], 16, "volumes"], [[io, io.read, type, type.vec3], 16, "boundingSphereCenter"], [[io, io.read, type, type.float32], 16, "boundingSphereRadius"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.float32], 16, "intensity"], [[io, io.persist, type, type.float32], 16, "thickness"], [[io, io.persist, type, type.boolean], 16, "thicknessEnabled"], [[io, io.persist, type, type.float32], 16, "lightDirectionality"], [[io, io.persist, type, type.boolean], 16, "lightDirectionalityEnabled"], [[io, io.persist, type, type.float32], 16, "environmentIntensity"], [[io, io.persist, type, type.boolean], 16, "environmentIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "environmentDirectionality"], [[io, io.persist, type, type.boolean], 16, "environmentDirectionalityEnabled"], [[io, io.persist, type, type.color], 16, "fogColor"], [[io, io.persist, type, type.boolean], 16, "fogColorEnabled"], [[io, io.persist, type, type.float32], 16, "backgroundVisibility"], [[io, io.persist, type, type.boolean], 16, "backgroundVisibilityEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseIntensity"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseFrequency"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseFrequencyEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseAnimationSpeed"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseAnimationSpeedEnabled"], [[io, io.persist, type, type.float32], 16, "fogNoiseIntensity"], [[io, io.persist, type, type.boolean], 16, "fogNoiseIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "fogNoiseFrequency"], [[io, io.persist, type, type.boolean], 16, "fogNoiseFrequencyEnabled"], [[impl, impl.adapted], 18, "RebuildBoundingSphere"], [[impl, impl.adapted], 18, "UpdateAsyncronous"], [[impl, impl.adapted], 18, "GetFroxelFogSettings"]], 0, void 0, _EveChildTransform));
|
|
20
|
+
})], [[[io, io.persist, type, type.int32, void 0, schema.enum("Priority")], 16, "priority"], [[io, io.persist, void 0, type.list("IEveVolume")], 16, "volumes"], [[io, io.read, type, type.vec3], 16, "boundingSphereCenter"], [[io, io.read, type, type.float32], 16, "boundingSphereRadius"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, type, type.float32], 16, "intensity"], [[io, io.persist, type, type.float32], 16, "thickness"], [[io, io.persist, type, type.boolean], 16, "thicknessEnabled"], [[io, io.persist, type, type.float32], 16, "lightDirectionality"], [[io, io.persist, type, type.boolean], 16, "lightDirectionalityEnabled"], [[io, io.persist, type, type.float32], 16, "environmentIntensity"], [[io, io.persist, type, type.boolean], 16, "environmentIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "environmentDirectionality"], [[io, io.persist, type, type.boolean], 16, "environmentDirectionalityEnabled"], [[io, io.persist, type, type.color], 16, "fogColor"], [[io, io.persist, type, type.boolean], 16, "fogColorEnabled"], [[io, io.persist, type, type.float32], 16, "backgroundVisibility"], [[io, io.persist, type, type.boolean], 16, "backgroundVisibilityEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseIntensity"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseFrequency"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseFrequencyEnabled"], [[io, io.persist, type, type.float32], 16, "godRayNoiseAnimationSpeed"], [[io, io.persist, type, type.boolean], 16, "godRayNoiseAnimationSpeedEnabled"], [[io, io.persist, type, type.float32], 16, "fogNoiseIntensity"], [[io, io.persist, type, type.boolean], 16, "fogNoiseIntensityEnabled"], [[io, io.persist, type, type.float32], 16, "fogNoiseFrequency"], [[io, io.persist, type, type.boolean], 16, "fogNoiseFrequencyEnabled"], [[impl, impl.adapted], 18, "RebuildBoundingSphere"], [[impl, impl.adapted], 18, "UpdateAsyncronous"], [[impl, impl.implemented], 18, "RegisterComponents"], [[impl, impl.adapted], 18, "GetFroxelFogSettings"]], 0, void 0, _EveChildTransform));
|
|
20
21
|
}
|
|
21
22
|
constructor(...args) {
|
|
22
23
|
super(...args);
|
|
@@ -111,6 +112,18 @@ new class extends _identity {
|
|
|
111
112
|
this.RebuildBoundingSphere();
|
|
112
113
|
return true;
|
|
113
114
|
}
|
|
115
|
+
|
|
116
|
+
/** Carbon EveChildFogVolume::RegisterComponents (cpp:69-72): unconditional
|
|
117
|
+
* FroxelFogSettings leaf self-registration. Carbon's UnRegisterComponents
|
|
118
|
+
* (cpp:74-77) only removes this same component, which EveEntity::UnRegister
|
|
119
|
+
* already did via UnRegisterAllComponents (EveEntity.cpp:90), so the JS
|
|
120
|
+
* un-side keeps the base no-op. */
|
|
121
|
+
RegisterComponents() {
|
|
122
|
+
const registry = this.GetComponentRegistry();
|
|
123
|
+
if (registry) {
|
|
124
|
+
registry.RegisterComponent(EveComponentType.FroxelFogSettings, this);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
114
127
|
GetFroxelFogSettings() {
|
|
115
128
|
const attribute = (value, enabled) => ({
|
|
116
129
|
value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildFogVolume.js","sources":["../../../../src/eve/child/EveChildFogVolume.js"],"sourcesContent":["// Ported/adapted from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume.h\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume.cpp\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume_Blue.cpp\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveChildTransform } from \"./EveChildTransform.js\";\n\n\n@type.define({ className: \"EveChildFogVolume\", family: \"eve/child\" })\nexport class EveChildFogVolume extends EveChildTransform\n{\n #fogIntensity = 0;\n\n @io.persist\n @type.int32\n @schema.enum(\"Priority\")\n priority = 2;\n\n @io.persist\n @type.list(\"IEveVolume\")\n volumes = [];\n\n @io.read\n @type.vec3\n boundingSphereCenter = vec3.create();\n\n @io.read\n @type.float32\n boundingSphereRadius = 0;\n\n @io.persist\n @type.string\n name = \"\";\n\n @io.persist\n @type.float32\n intensity = 1;\n\n @io.persist\n @type.float32\n thickness = 1;\n\n @io.persist\n @type.boolean\n thicknessEnabled = false;\n\n @io.persist\n @type.float32\n lightDirectionality = 0.5;\n\n @io.persist\n @type.boolean\n lightDirectionalityEnabled = false;\n\n @io.persist\n @type.float32\n environmentIntensity = 1;\n\n @io.persist\n @type.boolean\n environmentIntensityEnabled = false;\n\n @io.persist\n @type.float32\n environmentDirectionality = 0.75;\n\n @io.persist\n @type.boolean\n environmentDirectionalityEnabled = false;\n\n @io.persist\n @type.color\n fogColor = vec4.fromValues(1, 1, 1, 1);\n\n @io.persist\n @type.boolean\n fogColorEnabled = false;\n\n @io.persist\n @type.float32\n backgroundVisibility = 0;\n\n @io.persist\n @type.boolean\n backgroundVisibilityEnabled = false;\n\n @io.persist\n @type.float32\n godRayNoiseIntensity = 0;\n\n @io.persist\n @type.boolean\n godRayNoiseIntensityEnabled = false;\n\n @io.persist\n @type.float32\n godRayNoiseFrequency = 15;\n\n @io.persist\n @type.boolean\n godRayNoiseFrequencyEnabled = false;\n\n @io.persist\n @type.float32\n godRayNoiseAnimationSpeed = 0;\n\n @io.persist\n @type.boolean\n godRayNoiseAnimationSpeedEnabled = false;\n\n @io.persist\n @type.float32\n fogNoiseIntensity = 0;\n\n @io.persist\n @type.boolean\n fogNoiseIntensityEnabled = false;\n\n @io.persist\n @type.float32\n fogNoiseFrequency = 15;\n\n @io.persist\n @type.boolean\n fogNoiseFrequencyEnabled = false;\n\n @impl.adapted\n RebuildBoundingSphere()\n {\n vec3.set(this.boundingSphereCenter, 0, 0, 0);\n this.boundingSphereRadius = 0;\n let initialized = false;\n for (const volume of this.volumes)\n {\n const sphere = volume?.GetBoundingSphere?.();\n if (!sphere?.center || !Number.isFinite(sphere.radius) || sphere.radius < 0) continue;\n if (!initialized)\n {\n vec3.copy(this.boundingSphereCenter, sphere.center);\n this.boundingSphereRadius = sphere.radius;\n initialized = true;\n continue;\n }\n this.#UnionSphere(sphere);\n }\n return initialized;\n }\n\n GetName()\n {\n return this.name;\n }\n\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n GetBoundingSphere(out = vec4.create())\n {\n vec4.set(out, this.boundingSphereCenter[0], this.boundingSphereCenter[1], this.boundingSphereCenter[2], this.boundingSphereRadius);\n return true;\n }\n\n UpdateSyncronous(_updateContext, _params)\n {\n }\n\n @impl.adapted\n UpdateAsyncronous(updateContext, params = {})\n {\n this.UpdateTransform(params.localToWorldTransform ?? mat4.create());\n const initialized = this.RebuildBoundingSphere();\n if (this.volumes.length === 0)\n {\n this.#fogIntensity = this.intensity;\n return;\n }\n\n this.#fogIntensity = 0;\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\n const inverse = mat4.invert(mat4.create(), this.worldTransform);\n if (!viewPosition || !inverse || !initialized) return;\n const localView = vec3.transformMat4(vec3.create(), viewPosition, inverse);\n if (vec3.distance(localView, this.boundingSphereCenter) > this.boundingSphereRadius) return;\n for (const volume of this.volumes)\n {\n this.#fogIntensity = Math.max(this.#fogIntensity, Number(volume?.GetIntensity?.(localView)) || 0);\n if (this.#fogIntensity >= 1) break;\n }\n this.#fogIntensity *= this.intensity;\n }\n\n GetLocalToWorldTransform(out = mat4.create())\n {\n return mat4.copy(out, this.worldTransform);\n }\n\n Setup(scale, rotation, translation, lowestLodVisible)\n {\n return super.Setup(scale, rotation, translation, lowestLodVisible);\n }\n\n IsAlwaysOn()\n {\n return true;\n }\n\n Initialize()\n {\n this.RebuildBoundingSphere();\n return true;\n }\n\n @impl.adapted\n GetFroxelFogSettings()\n {\n const attribute = (value, enabled) => ({ value, enabled });\n return {\n priority: this.priority,\n intensity: this.#fogIntensity,\n thickness: attribute(this.thickness, this.thicknessEnabled),\n lightDirectionality: attribute(this.lightDirectionality, this.lightDirectionalityEnabled),\n environmentIntensity: attribute(this.environmentIntensity, this.environmentIntensityEnabled),\n environmentDirectionality: attribute(this.environmentDirectionality, this.environmentDirectionalityEnabled),\n fogColor: attribute(vec4.clone(this.fogColor), this.fogColorEnabled),\n backgroundVisibility: attribute(this.backgroundVisibility, this.backgroundVisibilityEnabled),\n godRayNoiseIntensity: attribute(this.godRayNoiseIntensity, this.godRayNoiseIntensityEnabled),\n godRayNoiseFrequency: attribute(this.godRayNoiseFrequency, this.godRayNoiseFrequencyEnabled),\n godRayNoiseAnimationSpeed: attribute(this.godRayNoiseAnimationSpeed, this.godRayNoiseAnimationSpeedEnabled),\n fogNoiseIntensity: attribute(this.fogNoiseIntensity, this.fogNoiseIntensityEnabled),\n fogNoiseFrequency: attribute(this.fogNoiseFrequency, this.fogNoiseFrequencyEnabled)\n };\n }\n\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\n {\n }\n\n GetRenderables(_renderables)\n {\n }\n\n ChangeLOD(_lod)\n {\n }\n\n static Priority = Object.freeze({\n SCENE_DEFAULT_PRIORITY: 0,\n LOW_PRIORITY: 1,\n MEDIUM_PRIORITY: 2,\n HIGH_PRIORITY: 3,\n UI_PRIORITY: 4,\n PRIORITY_COUNT: 5\n });\n\n #UnionSphere(sphere)\n {\n const delta = vec3.subtract(vec3.create(), sphere.center, this.boundingSphereCenter);\n const distance = vec3.length(delta);\n if (distance + sphere.radius <= this.boundingSphereRadius) return;\n if (distance + this.boundingSphereRadius <= sphere.radius)\n {\n vec3.copy(this.boundingSphereCenter, sphere.center);\n this.boundingSphereRadius = sphere.radius;\n return;\n }\n if (distance === 0)\n {\n this.boundingSphereRadius = Math.max(this.boundingSphereRadius, sphere.radius);\n return;\n }\n const radius = (this.boundingSphereRadius + sphere.radius + distance) * 0.5;\n vec3.scaleAndAdd(this.boundingSphereCenter, this.boundingSphereCenter, delta, (radius - this.boundingSphereRadius) / distance);\n this.boundingSphereRadius = radius;\n }\n}\n"],"names":["_EveChildFogVolume","_identity","EveChildFogVolume","EveChildTransform","e","_init_priority","_init_extra_priority","_init_volumes","_init_extra_volumes","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_name","_init_extra_name","_init_intensity","_init_extra_intensity","_init_thickness","_init_extra_thickness","_init_thicknessEnabled","_init_extra_thicknessEnabled","_init_lightDirectionality","_init_extra_lightDirectionality","_init_lightDirectionalityEnabled","_init_extra_lightDirectionalityEnabled","_init_environmentIntensity","_init_extra_environmentIntensity","_init_environmentIntensityEnabled","_init_extra_environmentIntensityEnabled","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_environmentDirectionalityEnabled","_init_extra_environmentDirectionalityEnabled","_init_fogColor","_init_extra_fogColor","_init_fogColorEnabled","_init_extra_fogColorEnabled","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_backgroundVisibilityEnabled","_init_extra_backgroundVisibilityEnabled","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_godRayNoiseIntensityEnabled","_init_extra_godRayNoiseIntensityEnabled","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_godRayNoiseFrequencyEnabled","_init_extra_godRayNoiseFrequencyEnabled","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_godRayNoiseAnimationSpeedEnabled","_init_extra_godRayNoiseAnimationSpeedEnabled","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_fogNoiseIntensityEnabled","_init_extra_fogNoiseIntensityEnabled","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_fogNoiseFrequencyEnabled","_init_extra_fogNoiseFrequencyEnabled","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","schema","enum","list","read","vec3","float32","string","boolean","color","impl","adapted","constructor","args","priority","volumes","boundingSphereCenter","create","boundingSphereRadius","name","intensity","thickness","thicknessEnabled","lightDirectionality","lightDirectionalityEnabled","environmentIntensity","environmentIntensityEnabled","environmentDirectionality","environmentDirectionalityEnabled","fogColor","vec4","fromValues","fogColorEnabled","backgroundVisibility","backgroundVisibilityEnabled","godRayNoiseIntensity","godRayNoiseIntensityEnabled","godRayNoiseFrequency","godRayNoiseFrequencyEnabled","godRayNoiseAnimationSpeed","godRayNoiseAnimationSpeedEnabled","fogNoiseIntensity","fogNoiseIntensityEnabled","fogNoiseFrequency","fogNoiseFrequencyEnabled","RebuildBoundingSphere","set","initialized","volume","sphere","GetBoundingSphere","center","Number","isFinite","radius","copy","GetName","SetName","String","out","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","updateContext","params","UpdateTransform","localToWorldTransform","mat4","length","viewPosition","renderContext","GetViewPosition","inverse","invert","worldTransform","localView","transformMat4","distance","Math","max","GetIntensity","GetLocalToWorldTransform","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","GetFroxelFogSettings","attribute","value","enabled","clone","UpdateVisibility","_parentTransform","_parentLod","GetRenderables","_renderables","ChangeLOD","_lod","#UnionSphere","delta","subtract","scaleAndAdd","Priority","Object","freeze","SCENE_DEFAULT_PRIORITY","LOW_PRIORITY","MEDIUM_PRIORITY","HIGH_PRIORITY","UI_PRIORITY","PRIORITY_COUNT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildFogVolume.js","sources":["../../../../src/eve/child/EveChildFogVolume.js"],"sourcesContent":["// Ported/adapted from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume.h\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume.cpp\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildFogVolume_Blue.cpp\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveChildTransform } from \"./EveChildTransform.js\";\r\nimport { EveComponentType } from \"../EveComponentTypes.js\";\r\n\r\n\r\n@type.define({ className: \"EveChildFogVolume\", family: \"eve/child\" })\r\nexport class EveChildFogVolume extends EveChildTransform\r\n{\r\n #fogIntensity = 0;\r\n\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"Priority\")\r\n priority = 2;\r\n\r\n @io.persist\r\n @type.list(\"IEveVolume\")\r\n volumes = [];\r\n\r\n @io.read\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n @io.read\r\n @type.float32\r\n boundingSphereRadius = 0;\r\n\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.persist\r\n @type.float32\r\n intensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n thickness = 1;\r\n\r\n @io.persist\r\n @type.boolean\r\n thicknessEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n lightDirectionality = 0.5;\r\n\r\n @io.persist\r\n @type.boolean\r\n lightDirectionalityEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n environmentIntensity = 1;\r\n\r\n @io.persist\r\n @type.boolean\r\n environmentIntensityEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n environmentDirectionality = 0.75;\r\n\r\n @io.persist\r\n @type.boolean\r\n environmentDirectionalityEnabled = false;\r\n\r\n @io.persist\r\n @type.color\r\n fogColor = vec4.fromValues(1, 1, 1, 1);\r\n\r\n @io.persist\r\n @type.boolean\r\n fogColorEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n backgroundVisibility = 0;\r\n\r\n @io.persist\r\n @type.boolean\r\n backgroundVisibilityEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n godRayNoiseIntensity = 0;\r\n\r\n @io.persist\r\n @type.boolean\r\n godRayNoiseIntensityEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n godRayNoiseFrequency = 15;\r\n\r\n @io.persist\r\n @type.boolean\r\n godRayNoiseFrequencyEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n godRayNoiseAnimationSpeed = 0;\r\n\r\n @io.persist\r\n @type.boolean\r\n godRayNoiseAnimationSpeedEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n fogNoiseIntensity = 0;\r\n\r\n @io.persist\r\n @type.boolean\r\n fogNoiseIntensityEnabled = false;\r\n\r\n @io.persist\r\n @type.float32\r\n fogNoiseFrequency = 15;\r\n\r\n @io.persist\r\n @type.boolean\r\n fogNoiseFrequencyEnabled = false;\r\n\r\n @impl.adapted\r\n RebuildBoundingSphere()\r\n {\r\n vec3.set(this.boundingSphereCenter, 0, 0, 0);\r\n this.boundingSphereRadius = 0;\r\n let initialized = false;\r\n for (const volume of this.volumes)\r\n {\r\n const sphere = volume?.GetBoundingSphere?.();\r\n if (!sphere?.center || !Number.isFinite(sphere.radius) || sphere.radius < 0) continue;\r\n if (!initialized)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = sphere.radius;\r\n initialized = true;\r\n continue;\r\n }\r\n this.#UnionSphere(sphere);\r\n }\r\n return initialized;\r\n }\r\n\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n GetBoundingSphere(out = vec4.create())\r\n {\r\n vec4.set(out, this.boundingSphereCenter[0], this.boundingSphereCenter[1], this.boundingSphereCenter[2], this.boundingSphereRadius);\r\n return true;\r\n }\r\n\r\n UpdateSyncronous(_updateContext, _params)\r\n {\r\n }\r\n\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext, params = {})\r\n {\r\n this.UpdateTransform(params.localToWorldTransform ?? mat4.create());\r\n const initialized = this.RebuildBoundingSphere();\r\n if (this.volumes.length === 0)\r\n {\r\n this.#fogIntensity = this.intensity;\r\n return;\r\n }\r\n\r\n this.#fogIntensity = 0;\r\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\r\n const inverse = mat4.invert(mat4.create(), this.worldTransform);\r\n if (!viewPosition || !inverse || !initialized) return;\r\n const localView = vec3.transformMat4(vec3.create(), viewPosition, inverse);\r\n if (vec3.distance(localView, this.boundingSphereCenter) > this.boundingSphereRadius) return;\r\n for (const volume of this.volumes)\r\n {\r\n this.#fogIntensity = Math.max(this.#fogIntensity, Number(volume?.GetIntensity?.(localView)) || 0);\r\n if (this.#fogIntensity >= 1) break;\r\n }\r\n this.#fogIntensity *= this.intensity;\r\n }\r\n\r\n GetLocalToWorldTransform(out = mat4.create())\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n\r\n Setup(scale, rotation, translation, lowestLodVisible)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n IsAlwaysOn()\r\n {\r\n return true;\r\n }\r\n\r\n Initialize()\r\n {\r\n this.RebuildBoundingSphere();\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildFogVolume::RegisterComponents (cpp:69-72): unconditional\r\n * FroxelFogSettings leaf self-registration. Carbon's UnRegisterComponents\r\n * (cpp:74-77) only removes this same component, which EveEntity::UnRegister\r\n * already did via UnRegisterAllComponents (EveEntity.cpp:90), so the JS\r\n * un-side keeps the base no-op. */\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.FroxelFogSettings, this);\r\n }\r\n }\r\n\r\n @impl.adapted\r\n GetFroxelFogSettings()\r\n {\r\n const attribute = (value, enabled) => ({ value, enabled });\r\n return {\r\n priority: this.priority,\r\n intensity: this.#fogIntensity,\r\n thickness: attribute(this.thickness, this.thicknessEnabled),\r\n lightDirectionality: attribute(this.lightDirectionality, this.lightDirectionalityEnabled),\r\n environmentIntensity: attribute(this.environmentIntensity, this.environmentIntensityEnabled),\r\n environmentDirectionality: attribute(this.environmentDirectionality, this.environmentDirectionalityEnabled),\r\n fogColor: attribute(vec4.clone(this.fogColor), this.fogColorEnabled),\r\n backgroundVisibility: attribute(this.backgroundVisibility, this.backgroundVisibilityEnabled),\r\n godRayNoiseIntensity: attribute(this.godRayNoiseIntensity, this.godRayNoiseIntensityEnabled),\r\n godRayNoiseFrequency: attribute(this.godRayNoiseFrequency, this.godRayNoiseFrequencyEnabled),\r\n godRayNoiseAnimationSpeed: attribute(this.godRayNoiseAnimationSpeed, this.godRayNoiseAnimationSpeedEnabled),\r\n fogNoiseIntensity: attribute(this.fogNoiseIntensity, this.fogNoiseIntensityEnabled),\r\n fogNoiseFrequency: attribute(this.fogNoiseFrequency, this.fogNoiseFrequencyEnabled)\r\n };\r\n }\r\n\r\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\r\n {\r\n }\r\n\r\n GetRenderables(_renderables)\r\n {\r\n }\r\n\r\n ChangeLOD(_lod)\r\n {\r\n }\r\n\r\n static Priority = Object.freeze({\r\n SCENE_DEFAULT_PRIORITY: 0,\r\n LOW_PRIORITY: 1,\r\n MEDIUM_PRIORITY: 2,\r\n HIGH_PRIORITY: 3,\r\n UI_PRIORITY: 4,\r\n PRIORITY_COUNT: 5\r\n });\r\n\r\n #UnionSphere(sphere)\r\n {\r\n const delta = vec3.subtract(vec3.create(), sphere.center, this.boundingSphereCenter);\r\n const distance = vec3.length(delta);\r\n if (distance + sphere.radius <= this.boundingSphereRadius) return;\r\n if (distance + this.boundingSphereRadius <= sphere.radius)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = sphere.radius;\r\n return;\r\n }\r\n if (distance === 0)\r\n {\r\n this.boundingSphereRadius = Math.max(this.boundingSphereRadius, sphere.radius);\r\n return;\r\n }\r\n const radius = (this.boundingSphereRadius + sphere.radius + distance) * 0.5;\r\n vec3.scaleAndAdd(this.boundingSphereCenter, this.boundingSphereCenter, delta, (radius - this.boundingSphereRadius) / distance);\r\n this.boundingSphereRadius = radius;\r\n }\r\n}\r\n"],"names":["_EveChildFogVolume","_identity","EveChildFogVolume","EveChildTransform","e","_init_priority","_init_extra_priority","_init_volumes","_init_extra_volumes","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_name","_init_extra_name","_init_intensity","_init_extra_intensity","_init_thickness","_init_extra_thickness","_init_thicknessEnabled","_init_extra_thicknessEnabled","_init_lightDirectionality","_init_extra_lightDirectionality","_init_lightDirectionalityEnabled","_init_extra_lightDirectionalityEnabled","_init_environmentIntensity","_init_extra_environmentIntensity","_init_environmentIntensityEnabled","_init_extra_environmentIntensityEnabled","_init_environmentDirectionality","_init_extra_environmentDirectionality","_init_environmentDirectionalityEnabled","_init_extra_environmentDirectionalityEnabled","_init_fogColor","_init_extra_fogColor","_init_fogColorEnabled","_init_extra_fogColorEnabled","_init_backgroundVisibility","_init_extra_backgroundVisibility","_init_backgroundVisibilityEnabled","_init_extra_backgroundVisibilityEnabled","_init_godRayNoiseIntensity","_init_extra_godRayNoiseIntensity","_init_godRayNoiseIntensityEnabled","_init_extra_godRayNoiseIntensityEnabled","_init_godRayNoiseFrequency","_init_extra_godRayNoiseFrequency","_init_godRayNoiseFrequencyEnabled","_init_extra_godRayNoiseFrequencyEnabled","_init_godRayNoiseAnimationSpeed","_init_extra_godRayNoiseAnimationSpeed","_init_godRayNoiseAnimationSpeedEnabled","_init_extra_godRayNoiseAnimationSpeedEnabled","_init_fogNoiseIntensity","_init_extra_fogNoiseIntensity","_init_fogNoiseIntensityEnabled","_init_extra_fogNoiseIntensityEnabled","_init_fogNoiseFrequency","_init_extra_fogNoiseFrequency","_init_fogNoiseFrequencyEnabled","_init_extra_fogNoiseFrequencyEnabled","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","schema","enum","list","read","vec3","float32","string","boolean","color","impl","adapted","implemented","constructor","args","priority","volumes","boundingSphereCenter","create","boundingSphereRadius","name","intensity","thickness","thicknessEnabled","lightDirectionality","lightDirectionalityEnabled","environmentIntensity","environmentIntensityEnabled","environmentDirectionality","environmentDirectionalityEnabled","fogColor","vec4","fromValues","fogColorEnabled","backgroundVisibility","backgroundVisibilityEnabled","godRayNoiseIntensity","godRayNoiseIntensityEnabled","godRayNoiseFrequency","godRayNoiseFrequencyEnabled","godRayNoiseAnimationSpeed","godRayNoiseAnimationSpeedEnabled","fogNoiseIntensity","fogNoiseIntensityEnabled","fogNoiseFrequency","fogNoiseFrequencyEnabled","RebuildBoundingSphere","set","initialized","volume","sphere","GetBoundingSphere","center","Number","isFinite","radius","copy","GetName","SetName","String","out","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","updateContext","params","UpdateTransform","localToWorldTransform","mat4","length","viewPosition","renderContext","GetViewPosition","inverse","invert","worldTransform","localView","transformMat4","distance","Math","max","GetIntensity","GetLocalToWorldTransform","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","FroxelFogSettings","GetFroxelFogSettings","attribute","value","enabled","clone","UpdateVisibility","_parentTransform","_parentLod","GetRenderables","_renderables","ChangeLOD","_lod","#UnionSphere","delta","subtract","scaleAndAdd","Priority","Object","freeze","SCENE_DEFAULT_PRIORITY","LOW_PRIORITY","MEDIUM_PRIORITY","HIGH_PRIORITY","UI_PRIORITY","PRIORITY_COUNT"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { mat4 } from '@carbonenginejs/core-math/mat4';
|
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/core-types/model';
|
|
4
4
|
import { io, type, carbon, impl } from '@carbonenginejs/core-types/schema';
|
|
5
5
|
import { EveEntity as _EveEntity } from '../../generated/eve/EveEntity.js';
|
|
6
|
+
import { EveComponentType } from '../EveComponentTypes.js';
|
|
6
7
|
|
|
7
8
|
let _initClass, _init_effect, _init_extra_effect, _init_batchType, _init_extra_batchType, _init_areaIndex, _init_extra_areaIndex, _init_areaCount, _init_extra_areaCount, _init_effectHash, _init_extra_effectHash, _initClass2, _init_transform, _init_extra_transform, _init_sphereIndex, _init_extra_sphereIndex, _initClass3, _init_geometryPath, _init_extra_geometryPath, _init_castsShadow, _init_extra_castsShadow, _init_reflectionMode, _init_extra_reflectionMode, _init_meshIndex, _init_extra_meshIndex, _init_areas, _init_extra_areas, _init_instances, _init_extra_instances, _init_sofHullName, _init_extra_sofHullName, _init_sofLocatorSetName, _init_extra_sofLocatorSetName, _init_display, _init_extra_display, _initProto, _initClass4, _init_name, _init_extra_name, _init_worldTransform, _init_extra_worldTransform, _init_hasUpdated, _init_extra_hasUpdated, _init_meshes, _init_extra_meshes;
|
|
8
9
|
let _EveChildInstancedMes;
|
|
@@ -91,7 +92,7 @@ new class extends _identity {
|
|
|
91
92
|
} = _applyDecs2311(this, [type.define({
|
|
92
93
|
className: "EveChildInstancedMeshes",
|
|
93
94
|
family: "eve/child"
|
|
94
|
-
})], [[[io, io.persist, type, type.string], 16, "name"], [[io, io.read, type, type.mat4], 16, "worldTransform"], [[io, io.read, type, type.boolean], 16, "hasUpdated"], [[io, io.persist, void 0, type.list("EveChildInstancedMesh")], 16, "meshes"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.adapted], 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, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChangeLOD"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetOrigin"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsAlwaysOn"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetShaderOption"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "Clear"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetSofSourceLocator"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMeshCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshInfo"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetAreaInfo"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshDisplay"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMeshDisplay"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetGeometryResource"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRevision"]], 0, void 0, _EveEntity));
|
|
95
|
+
})], [[[io, io.persist, type, type.string], 16, "name"], [[io, io.read, type, type.mat4], 16, "worldTransform"], [[io, io.read, type, type.boolean], 16, "hasUpdated"], [[io, io.persist, void 0, type.list("EveChildInstancedMesh")], 16, "meshes"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.adapted], 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, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChangeLOD"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetOrigin"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsAlwaysOn"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetShaderOption"], [[carbon, carbon.method, impl, impl.adapted], 18, "AddMesh"], [[carbon, carbon.method, impl, impl.adapted], 18, "Clear"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetSofSourceLocator"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetMeshCount"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshInfo"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetAreaInfo"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshDisplay"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetMeshDisplay"], [[carbon, carbon.method, impl, impl.adapted], 18, "SetGeometryResource"], [[carbon, carbon.method, impl, impl.adapted], 18, "GetMeshData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRevision"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("UnregisterFromMeshManager releases GPU mesh-group/sphere/per-object handles owned by the engine's EveInstancedMeshManager.")], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "AddMeshesToManager"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsCastingShadow"], [[carbon, carbon.method, impl, impl.noop], 18, "GetShadowBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetShadowPerObjectData"]], 0, void 0, _EveEntity));
|
|
95
96
|
}
|
|
96
97
|
name = (_initProto(this), _init_name(this, ""));
|
|
97
98
|
worldTransform = (_init_extra_name(this), _init_worldTransform(this, mat4.create()));
|
|
@@ -223,6 +224,47 @@ new class extends _identity {
|
|
|
223
224
|
GetRevision() {
|
|
224
225
|
return this.#revision;
|
|
225
226
|
}
|
|
227
|
+
|
|
228
|
+
/** Carbon EveChildInstancedMeshes::RegisterComponents (cpp:36-43):
|
|
229
|
+
* unconditional InstancedMeshProvider + ShadowCaster leaf
|
|
230
|
+
* self-registration. */
|
|
231
|
+
RegisterComponents() {
|
|
232
|
+
const registry = this.GetComponentRegistry();
|
|
233
|
+
if (registry) {
|
|
234
|
+
registry.RegisterComponent(EveComponentType.InstancedMeshProvider, this);
|
|
235
|
+
registry.RegisterComponent(EveComponentType.ShadowCaster, this);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** Carbon EveChildInstancedMeshes::UnRegisterComponents (cpp:45-48) only
|
|
240
|
+
* calls UnregisterFromMeshManager (GPU mesh-manager handle cleanup,
|
|
241
|
+
* unported); own components were already removed by EveEntity::UnRegister
|
|
242
|
+
* (EveEntity.cpp:90). */
|
|
243
|
+
UnRegisterComponents() {}
|
|
244
|
+
|
|
245
|
+
/** Carbon EveChildInstancedMeshes::AddMeshesToManager (cpp:472-535)
|
|
246
|
+
* uploads instance data to the engine-owned EveInstancedMeshManager;
|
|
247
|
+
* presence satisfies the "InstancedMeshProvider" duck contract. */
|
|
248
|
+
AddMeshesToManager(..._args) {
|
|
249
|
+
throw new Error("EveChildInstancedMeshes.AddMeshesToManager is not implemented in CarbonEngineJS.");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** Carbon EveChildInstancedMeshes::IsCastingShadow (cpp:73-76) always
|
|
253
|
+
* returns false (instanced shadows cull per instance group); presence
|
|
254
|
+
* satisfies the "ShadowCaster" duck contract. */
|
|
255
|
+
IsCastingShadow(..._args) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/** Carbon EveChildInstancedMeshes::GetShadowBatches (cpp:78-80) is an
|
|
260
|
+
* intentional no-op (the instanced mesh manager emits the batches). */
|
|
261
|
+
GetShadowBatches(..._args) {}
|
|
262
|
+
|
|
263
|
+
/** Carbon EveChildInstancedMeshes::GetShadowPerObjectData (cpp:82-85)
|
|
264
|
+
* returns null (per-object data flows through the mesh manager). */
|
|
265
|
+
GetShadowPerObjectData(..._args) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
226
268
|
}];
|
|
227
269
|
#GetMesh(meshes, meshId) {
|
|
228
270
|
const index = Number(meshId) >>> 0;
|