@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":"EveEffectRoot2.js","sources":["../../../../src/eve/spaceObject/EveEffectRoot2.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2.cpp\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2_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 { EveEntity } from \"../../generated/eve/EveEntity.js\";\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\nimport { EveSpaceObjectPSData } from \"../EveSpaceObjectPSData.js\";\nimport { EveSpaceObjectVSData } from \"../EveSpaceObjectVSData.js\";\n\n\n@type.define({ className: \"EveEffectRoot2\", family: \"eve/spaceObject\" })\nexport class EveEffectRoot2 extends EveEntity\n{\n\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectChild\")\n effectChildren = [];\n\n /** m_estimatedSize (float) [READ] */\n @io.read\n @type.float32\n estimatedSize = 0;\n\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\n @io.read\n @type.int32\n @schema.enum(\"Tr2Lod\")\n lodLevel = Tr2Lod.TR2_LOD_HIGH;\n\n /** m_mute (bool) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.boolean\n mute = false;\n\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n /** m_name (std::string) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_dynamicLODSelection (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n dynamicLOD = false;\n\n /** m_scaling (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n scaling = vec3.fromValues(1, 1, 1);\n\n /** m_rotation (Quaternion) [READWRITE, PERSIST] */\n @io.persist\n @type.quat\n rotation = quat.create();\n\n /** m_translation (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n translation = vec3.create();\n\n /** m_effectDuration (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n duration = -1;\n\n /** m_secondaryLightingEmissiveColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n secondaryLightingEmissiveColor = vec4.create();\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_lights (PTr2LightVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2Light\")\n lights = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"ITr2Controller\")\n controllers = [];\n\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriObserverLocal\")\n observers = [];\n\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriQuaternionFunction\")\n rotationCurve = null;\n\n /** m_secondaryLightingSphereRadiusLocal (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n secondaryLightingSphereRadius = 0.5;\n\n /** m_boundingSphere.xyz, exposed by Carbon's MAPFLOATARRAYSIZE Blue mapping. */\n @impl.adapted\n @impl.reason(\"The schema scanner omits MAPFLOATARRAYSIZE; Carbon exposes the three persisted center components separately from radius.\")\n @io.persist\n @type.vec3\n boundingSphereCenter = vec3.create();\n\n /** m_boundingSphere.w (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n boundingSphereRadius = 0;\n\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriVectorFunction\")\n modelTranslationCurve = null;\n\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriQuaternionFunction\")\n modelRotationCurve = null;\n\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriVectorFunction\")\n translationCurve = null;\n\n #changeLOD = true;\n #controllerVariables = new Map();\n #lastUpdateMatrix = mat4.create();\n #localTransform = mat4.create();\n #secondaryLightingSphereRadiusWorld = 0.5;\n #worldTransform = mat4.create();\n\n /** Links authored controllers after graph hydration. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Blue root locking is represented by the hydrated JavaScript object identity.\")\n Initialize()\n {\n for (const controller of this.controllers)\n {\n if (!controller?.IsLinked?.()) controller?.Link?.(this);\n EveEffectRoot2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\n }\n return true;\n }\n\n /** Adds and initializes a controller through Carbon's list-notify behavior. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so insertion behavior is explicit.\")\n AddController(controller)\n {\n this.controllers.push(controller);\n if (!controller?.IsLinked?.()) controller?.Link?.(this);\n EveEffectRoot2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\n return controller;\n }\n\n /** Removes and unlinks a controller through Carbon's list-notify behavior. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so removal behavior is explicit.\")\n RemoveController(controller)\n {\n const index = this.controllers.indexOf(controller);\n if (index === -1) return false;\n this.controllers.splice(index, 1);\n controller?.Unlink?.();\n return true;\n }\n\n /** Evaluates root curves and updates children that require synchronous placement. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon task and lock ownership is omitted; child update parameters retain the source graph contract.\")\n UpdateSyncronous(updateContext = null)\n {\n const time = EveEffectRoot2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n this.UpdateWorldTransform(time);\n mat4.fromRotationTranslationScale(this.#localTransform, this.rotation, this.translation, this.scaling);\n // Carbon (row-vector): m_localTransform * m_worldTransform - local first.\n mat4.multiply(this.#lastUpdateMatrix, this.#worldTransform, this.#localTransform);\n this.#secondaryLightingSphereRadiusWorld = this.secondaryLightingSphereRadius *\n (this.scaling[0] + this.scaling[1] + this.scaling[2]) / 3;\n\n for (const observer of this.observers) observer?.Update?.(this.#lastUpdateMatrix);\n if (this.effectChildren.length)\n {\n const params = this.#CreateChildUpdateParams();\n for (const child of this.effectChildren) child?.UpdateSyncronous?.(updateContext, params);\n }\n return true;\n }\n\n /** Advances controllers, root curve sets, and effect children. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Controller and child work is forwarded synchronously through the GPU-free graph instead of Carbon task groups.\")\n UpdateAsyncronous(updateContext = null)\n {\n let frequency = 0;\n if (this.display)\n {\n if (this.dynamicLOD)\n {\n const threshold = EveEffectRoot2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\n if (threshold > 0) frequency = Math.min(1, this.estimatedSize / threshold);\n }\n else\n {\n frequency = 0.5;\n }\n }\n\n this.UpdateControllers(frequency);\n const time = EveEffectRoot2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\n for (const curveSet of this.curveSets) curveSet?.Update?.(time, time);\n if (this.effectChildren.length)\n {\n const params = this.#CreateChildUpdateParams();\n params.controllerUpdateFrequency = frequency;\n for (const child of this.effectChildren) child?.UpdateAsyncronous?.(updateContext, params);\n }\n return frequency;\n }\n\n /** Updates dynamic LOD and forwards visibility to the effect children. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Frustum and threshold state is supplied by the explicit update context rather than renderer globals.\")\n UpdateVisibility(updateContext = null, parentTransform = EveEffectRoot2.#identity)\n {\n if (!this.display) return false;\n if (this.dynamicLOD)\n {\n this.GetBoundingSphere(EveEffectRoot2.#localSphere);\n sph3.transformMat4(EveEffectRoot2.#worldSphere, EveEffectRoot2.#localSphere, this.#worldTransform);\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n if (frustum?.IsSphereVisible?.(EveEffectRoot2.#worldSphere) !== false)\n {\n this.estimatedSize = Number(frustum?.GetPixelSizeAccross?.(EveEffectRoot2.#worldSphere) ?? this.estimatedSize) || 0;\n }\n\n const oldLod = this.lodLevel;\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\n const medium = EveEffectRoot2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\n const low = EveEffectRoot2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\n if (this.estimatedSize >= medium) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\n else if (this.estimatedSize >= low) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\n this.#changeLOD ||= oldLod !== this.lodLevel;\n }\n\n for (const child of this.effectChildren)\n {\n child?.UpdateVisibility?.(updateContext, parentTransform, this.lodLevel);\n }\n return true;\n }\n\n /** Collects child renderables after applying a pending LOD change. */\n @carbon.method\n @impl.implemented\n GetRenderables(out = [])\n {\n if (!this.display) return out;\n if (this.#changeLOD)\n {\n this.#changeLOD = false;\n for (const child of this.effectChildren) child?.ChangeLOD?.(this.lodLevel);\n }\n for (const child of this.effectChildren) child?.GetRenderables?.(out);\n return out;\n }\n\n /** Advances every controller at the selected detail frequency. */\n @carbon.method\n @impl.implemented\n UpdateControllers(updateFrequency)\n {\n for (const controller of this.controllers) controller?.Update?.(updateFrequency);\n }\n\n /** Returns the authored local bounding sphere. */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create())\n {\n vec4.set(\n out,\n this.boundingSphereCenter[0],\n this.boundingSphereCenter[1],\n this.boundingSphereCenter[2],\n this.boundingSphereRadius\n );\n return true;\n }\n\n /** Returns the authored bounding-sphere radius. */\n @carbon.method\n @impl.implemented\n GetBoundingSphereRadius()\n {\n return this.boundingSphereRadius;\n }\n\n /** Evaluates the ball/model curves into the detached root transform. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Curve outputs use CarbonEngineJS's time-first, output-second convention.\")\n UpdateWorldTransform(time)\n {\n EveEffectRoot2.#UpdateCurve(this.translationCurve, time, EveEffectRoot2.#translation, EveEffectRoot2.#zero);\n EveEffectRoot2.#UpdateCurve(this.rotationCurve, time, EveEffectRoot2.#rotation, EveEffectRoot2.#identityRotation);\n if (this.modelRotationCurve)\n {\n EveEffectRoot2.#UpdateCurve(this.modelRotationCurve, time, EveEffectRoot2.#modelRotation, EveEffectRoot2.#identityRotation);\n // Carbon (row-vector): rotation = modelRotation * rotation - model first.\n quat.multiply(EveEffectRoot2.#rotation, EveEffectRoot2.#rotation, EveEffectRoot2.#modelRotation);\n }\n\n mat4.fromRotationTranslation(this.#worldTransform, EveEffectRoot2.#rotation, EveEffectRoot2.#translation);\n if (this.modelTranslationCurve)\n {\n EveEffectRoot2.#UpdateCurve(this.modelTranslationCurve, time, EveEffectRoot2.#modelTranslation, EveEffectRoot2.#zero);\n vec3.transformMat4(EveEffectRoot2.#modelTranslation, EveEffectRoot2.#modelTranslation, this.#worldTransform);\n this.#worldTransform[12] = EveEffectRoot2.#modelTranslation[0];\n this.#worldTransform[13] = EveEffectRoot2.#modelTranslation[1];\n this.#worldTransform[14] = EveEffectRoot2.#modelTranslation[2];\n }\n return this.#worldTransform;\n }\n\n /** Updates and returns the model-center world position. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\n UpdateModelCenterWorldPosition(time, out = vec3.create())\n {\n this.UpdateWorldTransform(time);\n mat4.fromRotationTranslationScale(this.#localTransform, this.rotation, this.translation, this.scaling);\n // Carbon (row-vector): currentTransform * m_worldTransform - local first.\n mat4.multiply(EveEffectRoot2.#centerTransform, this.#worldTransform, this.#localTransform);\n return vec3.transformMat4(out, this.boundingSphereCenter, EveEffectRoot2.#centerTransform);\n }\n\n /** Returns the last model-center world position without advancing curves. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\n GetModelCenterWorldPosition(out = vec3.create())\n {\n return vec3.transformMat4(out, this.boundingSphereCenter, this.#lastUpdateMatrix);\n }\n\n /** Effect roots do not expose a local AABB in Carbon. */\n @carbon.method\n @impl.noop\n GetLocalBoundingBox(_min, _max)\n {\n return false;\n }\n\n /** Returns the last composed local-to-world transform. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS returns the caller-owned output matrix.\")\n GetLocalToWorldTransform(out = mat4.create())\n {\n return mat4.copy(out, this.#lastUpdateMatrix);\n }\n\n /** Registers every child with an injected quad renderer. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The quad renderer is an injected engine-owned capability.\")\n RegisterWithQuadRenderer(quadRenderer)\n {\n for (const child of this.effectChildren) child?.RegisterWithQuadRenderer?.(quadRenderer);\n }\n\n /** Adds visible child quads to an injected renderer. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The quad renderer is an injected engine-owned capability.\")\n AddQuadsToQuadRenderer(frustum, quadRenderer)\n {\n if (!this.display) return;\n for (const child of this.effectChildren) child?.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\n }\n\n /** Adds authored lights using the effect's composed placement and average scale. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The light manager is an injected engine-owned capability.\")\n GetLights(lightManager)\n {\n if (!this.display) return;\n const transform = this.#lastUpdateMatrix;\n const scale = (\n Math.hypot(transform[0], transform[1], transform[2]) +\n Math.hypot(transform[4], transform[5], transform[6]) +\n Math.hypot(transform[8], transform[9], transform[10])\n ) / 3;\n for (const light of this.lights) light?.AddLight?.(lightManager, transform, scale);\n }\n\n /** Adds an authored light. */\n @carbon.method\n @impl.implemented\n AddLight(light)\n {\n this.lights.push(light);\n return light;\n }\n\n /** Removes all authored lights. */\n @carbon.method\n @impl.implemented\n ClearLights()\n {\n this.lights.length = 0;\n }\n\n /** Initializes the portable child-facing space-object records. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Native constant-buffer structs are represented by GPU-free value records.\")\n GetPerObjectStructs(vsData = new EveSpaceObjectVSData(), psData = new EveSpaceObjectPSData())\n {\n EveEffectRoot2.#ZeroNumericRecord(vsData);\n EveEffectRoot2.#ZeroNumericRecord(psData);\n vsData.shipData[1] = 1;\n vsData.shipData[3] = 1;\n psData.shipData[1] = 1;\n psData.shipData[3] = 1;\n return { vsData, psData };\n }\n\n /** Registers this root as a secondary light source with an injected manager. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The SH lighting manager is injected; Trinity owns only the authored source values.\")\n RegisterSecondaryLightSource(manager)\n {\n return manager?.RegisterSecondaryLightSource?.(\n this.#worldTransform.subarray(12, 15),\n this.#secondaryLightingSphereRadiusWorld,\n EveEffectRoot2.#noAlbedo,\n this.secondaryLightingEmissiveColor\n );\n }\n\n /** Unregisters this root from an injected secondary-light manager. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The SH lighting manager is injected; Trinity owns only the authored source values.\")\n UnregisterSecondaryLightSource(manager)\n {\n return manager?.UnregisterSecondaryLightSource?.(this.#worldTransform.subarray(12, 15));\n }\n\n /** Plays root and child-owned curve sets. */\n @carbon.method\n @impl.implemented\n Start()\n {\n for (const curveSet of this.curveSets) curveSet?.Play?.();\n for (const child of this.effectChildren)\n {\n if (child?.PlayAllCurveSets) child.PlayAllCurveSets();\n else child?.PlayCurveSets?.();\n }\n }\n\n /** Stops root and child-owned curve sets. */\n @carbon.method\n @impl.implemented\n Stop()\n {\n for (const curveSet of this.curveSets) curveSet?.Stop?.();\n for (const child of this.effectChildren)\n {\n if (child?.StopAllCurveSets) child.StopAllCurveSets();\n else child?.StopCurveSets?.();\n }\n }\n\n /** Effect roots have no damage locators. */\n @carbon.method\n @impl.noop\n GetDamageLocatorCount()\n {\n return 0;\n }\n\n /** Returns the detached root translation as the sole target point. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses output parameters last and returns the targetable validity flag.\")\n GetDamageLocatorPosition(_index, _inWorldSpace, out = vec3.create())\n {\n vec3.set(out, this.#worldTransform[12], this.#worldTransform[13], this.#worldTransform[14]);\n return true;\n }\n\n /** Returns Carbon's constant +Y target direction. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses output parameters last and returns the targetable validity flag.\")\n GetDamageLocatorDirection(_index, _inWorldSpace, out = vec3.create())\n {\n vec3.set(out, 0, 1, 0);\n return true;\n }\n\n /** Tests whether a projectile has reached the root target point. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\n GetImpactPosition(locator, _posPrev, posNow, epsilon, out = vec3.create())\n {\n this.GetDamageLocatorPosition(locator, true, out);\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\n }\n\n /** Effect roots never use shield impact geometry. */\n @carbon.method\n @impl.noop\n HasImpactConfigurationShield()\n {\n return false;\n }\n\n /** Effect roots use their only target point. */\n @carbon.method\n @impl.noop\n GetClosestDamageLocatorIndex(_position)\n {\n return 0;\n }\n\n /** Effect roots use their only target point. */\n @carbon.method\n @impl.noop\n GetGoodDamageLocatorIndex(_position)\n {\n return 0;\n }\n\n /** Returns the authored target radius. */\n @carbon.method\n @impl.implemented\n GetRadius()\n {\n return this.boundingSphereRadius;\n }\n\n /** Effect roots do not create attached impact overlays. */\n @carbon.method\n @impl.noop\n CreateImpact(_damageLocatorIndex, _direction, _lifeTime, _size)\n {\n return -1;\n }\n\n /** Effect roots do not update attached impact overlays. */\n @carbon.method\n @impl.noop\n UpdateImpact(_out, _direction, _impactIndex)\n {\n return false;\n }\n\n /** Returns the detached root world position. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS returns the caller-owned output vector.\")\n GetWorldPosition(out = vec3.create())\n {\n return vec3.set(out, this.#worldTransform[12], this.#worldTransform[13], this.#worldTransform[14]);\n }\n\n /** Returns the authored local rotation composed with the detached root rotation. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS returns the caller-owned output quaternion.\")\n GetWorldRotation(out = quat.create())\n {\n mat4.getRotation(EveEffectRoot2.#worldRotation, this.#worldTransform);\n // Carbon (row-vector): m_rotation * RotationQuaternion(world) - local first.\n quat.multiply(out, EveEffectRoot2.#worldRotation, this.rotation);\n return quat.normalize(out, out);\n }\n\n /** Computes a miss point just outside the root's spherical silhouette. */\n @carbon.method\n @impl.implemented\n GetMissPosition(hit, source, out = vec3.create())\n {\n this.GetDamageLocatorPosition(-1, true, out);\n if (!hit || !source) return out;\n vec3.subtract(EveEffectRoot2.#missOffset, hit, out);\n vec3.subtract(EveEffectRoot2.#missDirection, hit, source);\n const directionLength = vec3.length(EveEffectRoot2.#missDirection);\n if (directionLength) vec3.scale(EveEffectRoot2.#missDirection, EveEffectRoot2.#missDirection, 1 / directionLength);\n vec3.scaleAndAdd(\n EveEffectRoot2.#missOffset,\n EveEffectRoot2.#missOffset,\n EveEffectRoot2.#missDirection,\n -vec3.dot(EveEffectRoot2.#missDirection, EveEffectRoot2.#missOffset)\n );\n const offsetLength = vec3.length(EveEffectRoot2.#missOffset);\n if (offsetLength) vec3.scale(EveEffectRoot2.#missOffset, EveEffectRoot2.#missOffset, 1 / offsetLength);\n return vec3.scaleAndAdd(out, out, EveEffectRoot2.#missOffset, this.boundingSphereRadius * 1.125);\n }\n\n /** Returns the owned effect-child list. */\n @carbon.method\n @impl.implemented\n GetChildren()\n {\n return this.effectChildren;\n }\n\n /** Decomposes a matrix into the authored local SRT fields. */\n @carbon.method\n @impl.implemented\n SetTransform(transform)\n {\n mat4.getScaling(this.scaling, transform);\n mat4.getRotation(this.rotation, transform);\n mat4.getTranslation(this.translation, transform);\n }\n\n /** Plays matching root and child curve sets. */\n @carbon.method\n @impl.implemented\n PlayCurveSet(name, rangeName = \"\")\n {\n const target = String(name ?? \"\");\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) !== target) continue;\n if (rangeName) curveSet?.PlayTimeRange?.(rangeName);\n else\n {\n curveSet?.ResetTimeRange?.();\n curveSet?.Play?.();\n }\n }\n for (const child of this.effectChildren) child?.PlayCurveSet?.(target, rangeName);\n }\n\n /** Stops matching root and child curve sets. */\n @carbon.method\n @impl.implemented\n StopCurveSet(name)\n {\n const target = String(name ?? \"\");\n for (const curveSet of this.curveSets)\n {\n if ((curveSet?.GetName?.() ?? curveSet?.name) === target) curveSet?.Stop?.();\n }\n for (const child of this.effectChildren) child?.StopCurveSet?.(target);\n }\n\n /** Samples matching root and child curve sets at an explicit time. */\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) curveSet?.Update?.(time, time);\n }\n for (const child of this.effectChildren) child?.UpdateCurveSet?.(target, time);\n }\n\n /** Returns the maximum duration of matching root and child curve sets. */\n @carbon.method\n @impl.implemented\n GetCurveSetDuration(name)\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 for (const child of this.effectChildren)\n {\n duration = Math.max(duration, Number(child?.GetCurveSetDuration?.(target) ?? 0));\n }\n return duration;\n }\n\n /** Returns the maximum named range duration in matching root and child sets. */\n @carbon.method\n @impl.implemented\n GetRangeDuration(name, rangeName)\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 for (const child of this.effectChildren)\n {\n duration = Math.max(duration, Number(child?.GetRangeDuration?.(target, rangeName) ?? 0));\n }\n return duration;\n }\n\n /** Collects the Carbon debug-option names and child options. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The debug renderer/options collection is an injected engine-owned capability.\")\n GetDebugOptions(options = new Set())\n {\n options.add?.(\"Bounding Sphere\");\n options.add?.(\"Lights\");\n for (const observer of this.observers) observer?.GetDebugOptions?.(options);\n for (const child of this.effectChildren) child?.GetDebugOptions?.(options);\n return options;\n }\n\n /** Forwards root debug geometry to an injected debug renderer. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The debug renderer is an injected engine-owned capability.\")\n RenderDebugInfo(renderer)\n {\n if (renderer?.HasOption?.(this, \"Bounding Sphere\"))\n {\n renderer?.DrawSphere?.(this, this.boundingSphereCenter, this.boundingSphereRadius, 8, \"wireframe\", 0xffff00ff);\n }\n for (const child of this.effectChildren) child?.RenderDebugInfo?.(renderer);\n if (renderer?.HasOption?.(this, \"Lights\"))\n {\n for (const light of this.lights) light?.RenderDebugInfo?.(renderer, this.#worldTransform);\n }\n for (const observer of this.observers) observer?.RenderDebugInfo?.(renderer);\n }\n\n /** Stores and propagates a controller variable to current and future members. */\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) controller?.SetVariable?.(key, next);\n for (const child of this.effectChildren) child?.SetControllerVariable?.(key, next);\n }\n\n /** Propagates an event to controllers and effect children. */\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n const eventName = String(name ?? \"\");\n for (const controller of this.controllers) controller?.HandleEvent?.(eventName);\n for (const child of this.effectChildren) child?.HandleControllerEvent?.(eventName);\n }\n\n /** Starts controllers on the root and its effect children. */\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n for (const controller of this.controllers) controller?.Start?.();\n for (const child of this.effectChildren) child?.StartControllers?.();\n }\n\n /** Finds a named direct effect child. */\n @carbon.method\n @impl.implemented\n GetEffectChildByName(name)\n {\n const target = String(name ?? \"\");\n for (const child of this.effectChildren)\n {\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target) return child;\n }\n return null;\n }\n\n /** Adds and initializes an effect child through Carbon's list-notify behavior. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so insertion behavior is explicit.\")\n AddToEffectChildrenList(child)\n {\n this.effectChildren.push(child);\n EveEffectRoot2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\n child?.StartControllers?.();\n return child;\n }\n\n /** Removes an effect child. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so removal behavior is explicit.\")\n RemoveFromEffectChildrenList(child)\n {\n const index = this.effectChildren.indexOf(child);\n if (index === -1) return false;\n this.effectChildren.splice(index, 1);\n return true;\n }\n\n /** Applies a shader option to every effect child. */\n @carbon.method\n @impl.implemented\n SetShaderOption(name, value)\n {\n for (const child of this.effectChildren) child?.SetShaderOption?.(name, value);\n }\n\n /** Finds a named observer or child-owned sound emitter. */\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\" ? observer.GetObserver() : observer.observer ?? null;\n }\n }\n for (const child of this.effectChildren)\n {\n const emitter = child?.FindSoundEmitter?.(target);\n if (emitter) return emitter;\n }\n return null;\n }\n\n /** Adds a placement observer. */\n @carbon.method\n @impl.implemented\n AddObserver(observer)\n {\n this.observers.push(observer);\n return observer;\n }\n\n /** Applies the mute state to effect children and placement observers. */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The explicit setter replaces Carbon's Blue field-notify callback.\")\n SetMute(isMute)\n {\n this.mute = !!isMute;\n for (const child of this.effectChildren) child?.SetMute?.(this.mute);\n for (const observer of this.observers) observer?.SetMute?.(this.mute);\n }\n\n /** Freezes every child at Carbon's high-detail LOD. */\n @carbon.method\n @impl.implemented\n FreezeHighDetailMesh()\n {\n this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\n this.#changeLOD = false;\n for (const child of this.effectChildren) child?.ChangeLOD?.(this.lodLevel);\n }\n\n /** Propagates a procedural-container variable to every effect child. */\n @carbon.method\n @impl.implemented\n SetProceduralContainerVariable(name, value)\n {\n for (const child of this.effectChildren) child?.SetProceduralContainerVariable?.(name, value);\n }\n\n #CreateChildUpdateParams()\n {\n const params = new EveChildUpdateParams();\n params.spaceObjectParent = this;\n params.isVisible = this.display;\n mat4.copy(params.localToWorldTransform, this.#lastUpdateMatrix);\n return params;\n }\n\n static #ApplyControllerVariables(target, variables, methodName)\n {\n const setter = target?.[methodName];\n if (typeof setter !== \"function\") return;\n for (const [name, value] of variables) setter.call(target, name, value);\n }\n\n static #GetContextValue(context, methodName, ...propertyNames)\n {\n const method = context?.[methodName];\n if (typeof method === \"function\") return Number(method.call(context)) || 0;\n for (const propertyName of propertyNames)\n {\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\n {\n return Number(context[propertyName]) || 0;\n }\n }\n return 0;\n }\n\n static #UpdateCurve(curve, time, out, fallback)\n {\n if (!curve)\n {\n for (let index = 0; index < out.length; index++) out[index] = fallback[index];\n return out;\n }\n let result;\n if (typeof curve.Update === \"function\") result = curve.Update(time, out);\n else if (typeof curve.GetValueAt === \"function\") result = curve.GetValueAt(time, out);\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\n {\n for (let index = 0; index < out.length; index++) out[index] = result[index];\n }\n return out;\n }\n\n static #ZeroNumericRecord(record)\n {\n for (const [name, value] of Object.entries(record))\n {\n if (typeof value === \"number\") record[name] = 0;\n else if (ArrayBuffer.isView(value)) value.fill(0);\n else if (Array.isArray(value))\n {\n for (let index = 0; index < value.length; index++)\n {\n if (typeof value[index] === \"number\") value[index] = 0;\n else if (ArrayBuffer.isView(value[index])) value[index].fill(0);\n }\n }\n }\n }\n\n static #identity = mat4.create();\n static #centerTransform = mat4.create();\n static #localSphere = vec4.create();\n static #worldSphere = vec4.create();\n static #zero = vec3.create();\n static #translation = vec3.create();\n static #modelTranslation = vec3.create();\n static #missOffset = vec3.create();\n static #missDirection = vec3.create();\n static #identityRotation = quat.create();\n static #rotation = quat.create();\n static #modelRotation = quat.create();\n static #worldRotation = quat.create();\n static #noAlbedo = vec4.create();\n\n static Tr2Lod = Tr2Lod;\n\n}\n"],"names":["_EveEffectRoot","_identity","EveEffectRoot2","EveEntity","e","_init_effectChildren","_init_extra_effectChildren","_init_estimatedSize","_init_extra_estimatedSize","_init_lodLevel","_init_extra_lodLevel","_init_mute","_init_extra_mute","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_dynamicLOD","_init_extra_dynamicLOD","_init_scaling","_init_extra_scaling","_init_rotation","_init_extra_rotation","_init_translation","_init_extra_translation","_init_duration","_init_extra_duration","_init_secondaryLightingEmissiveColor","_init_extra_secondaryLightingEmissiveColor","_init_curveSets","_init_extra_curveSets","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_observers","_init_extra_observers","_init_rotationCurve","_init_extra_rotationCurve","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_translationCurve","_init_extra_translationCurve","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","float32","int32","schema","enum","notify","readwrite","boolean","string","vec3","quat","color","model","impl","adapted","reason","carbon","method","implemented","noop","effectChildren","estimatedSize","lodLevel","Tr2Lod","TR2_LOD_HIGH","mute","display","name","dynamicLOD","scaling","fromValues","rotation","create","translation","duration","secondaryLightingEmissiveColor","vec4","curveSets","lights","externalParameters","controllers","observers","rotationCurve","secondaryLightingSphereRadius","boundingSphereCenter","boundingSphereRadius","modelTranslationCurve","modelRotationCurve","translationCurve","Map","mat4","Initialize","controller","IsLinked","Link","AddController","push","RemoveController","index","indexOf","splice","Unlink","UpdateSyncronous","updateContext","time","UpdateWorldTransform","fromRotationTranslationScale","multiply","observer","Update","length","params","child","UpdateAsyncronous","frequency","threshold","Math","min","UpdateControllers","curveSet","controllerUpdateFrequency","UpdateVisibility","parentTransform","GetBoundingSphere","sph3","transformMat4","frustum","GetFrustum","IsSphereVisible","Number","GetPixelSizeAccross","oldLod","TR2_LOD_LOW","medium","low","TR2_LOD_MEDIUM","GetRenderables","out","ChangeLOD","updateFrequency","set","GetBoundingSphereRadius","fromRotationTranslation","UpdateModelCenterWorldPosition","GetModelCenterWorldPosition","GetLocalBoundingBox","_min","_max","GetLocalToWorldTransform","copy","RegisterWithQuadRenderer","quadRenderer","AddQuadsToQuadRenderer","GetLights","lightManager","transform","scale","hypot","light","AddLight","ClearLights","GetPerObjectStructs","vsData","EveSpaceObjectVSData","psData","EveSpaceObjectPSData","shipData","RegisterSecondaryLightSource","manager","subarray","UnregisterSecondaryLightSource","Start","Play","PlayAllCurveSets","PlayCurveSets","Stop","StopAllCurveSets","StopCurveSets","GetDamageLocatorCount","GetDamageLocatorPosition","_index","_inWorldSpace","GetDamageLocatorDirection","GetImpactPosition","locator","_posPrev","posNow","epsilon","squaredDistance","HasImpactConfigurationShield","GetClosestDamageLocatorIndex","_position","GetGoodDamageLocatorIndex","GetRadius","CreateImpact","_damageLocatorIndex","_direction","_lifeTime","_size","UpdateImpact","_out","_impactIndex","GetWorldPosition","GetWorldRotation","getRotation","normalize","GetMissPosition","hit","source","subtract","directionLength","scaleAndAdd","dot","offsetLength","GetChildren","SetTransform","getScaling","getTranslation","PlayCurveSet","rangeName","target","String","GetName","PlayTimeRange","ResetTimeRange","StopCurveSet","UpdateCurveSet","GetCurveSetDuration","max","GetMaxCurveDuration","GetRangeDuration","GetDebugOptions","options","Set","add","RenderDebugInfo","renderer","HasOption","DrawSphere","SetControllerVariable","value","key","next","SetVariable","HandleControllerEvent","eventName","HandleEvent","StartControllers","GetEffectChildByName","AddToEffectChildrenList","RemoveFromEffectChildrenList","SetShaderOption","FindSoundEmitter","GetObserver","emitter","AddObserver","SetMute","isMute","FreezeHighDetailMesh","SetProceduralContainerVariable","#CreateChildUpdateParams","EveChildUpdateParams","spaceObjectParent","isVisible","localToWorldTransform","#ApplyControllerVariables","variables","methodName","setter","call","#GetContextValue","context","propertyNames","propertyName","undefined","#UpdateCurve","curve","fallback","result","GetValueAt","Array","isArray","ArrayBuffer","isView","#ZeroNumericRecord","record","Object","entries","fill","constructor"],"mappings":";;;;;;;;;;;;;;AAakE,IAAAA;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QAGlE,MAAAC,cAAA,SACoCC,UAAS,CAC7C;AAAA,IAAA;AAAA,MAAA,CAAA;QAAAC,CAAA,EAAA,CAAAC,oBAAA,EAAAC,0BAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,oCAAA,EAAAC,0CAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,mCAAA,EAAAC,yCAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,0BAAA,EAAAC,gCAAA,EAAAC,2BAAA,EAAAC,iCAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAAtD,cAAA,EAAAuD,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,gBAAgB;AAAEC,QAAAA,MAAM,EAAE;AAAkB,OAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAKrEC,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,sBAAsB,CAAC,4BAIjCF,EAAE,EAAFA,EAAE,CAACG,IAAI,EACPP,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIZJ,EAAE,EAAFA,EAAE,CAACG,IAAI,EACPP,IAAI,EAAJA,IAAI,CAACS,KAAK,EAAA,MAAA,EACVC,MAAM,CAACC,IAAI,CAAC,QAAQ,CAAC,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAIrBP,EAAE,EAAFA,EAAE,CAACQ,MAAM,EACTR,EAAE,EAAFA,EAAE,CAACS,SAAS,EACZb,IAAI,EAAJA,IAAI,CAACc,OAAO,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAIZV,EAAE,EAAFA,EAAE,CAACQ,MAAM,EACTR,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACc,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAIZV,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACe,MAAM,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAIXX,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACc,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAIZV,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACgB,IAAI,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAITZ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACiB,IAAI,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAITb,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACgB,IAAI,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAITZ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAIZJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACkB,KAAK,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAIVd,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAIxBF,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIrBF,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,sBAAsB,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIjCF,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAI3BF,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACM,IAAI,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAI7BF,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACmB,KAAK,CAAC,wBAAwB,CAAC,2BAIpCf,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAIZY,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,0HAA0H,CAAC,EACvIlB,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACgB,IAAI,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAITZ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAIZJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACmB,KAAK,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAIhCf,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACmB,KAAK,CAAC,wBAAwB,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIpCf,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACmB,KAAK,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAWhCI,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,8EAA8E,CAAC,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAY3FC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,8FAA8F,CAAC,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAU3GC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,4FAA4F,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAWzGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,sGAAsG,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAqBnHC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,gHAAgH,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA8B7HC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,sGAAsG,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CA+BnHC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAchBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAchBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,0EAA0E,CAAC,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAyBvFC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,kEAAkE,CAAC,4CAW/EC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,kEAAkE,CAAC,yCAO/EC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,wDAAwD,CAAC,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAOrEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,UACZD,IAAI,CAACE,MAAM,CAAC,2DAA2D,CAAC,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAOxEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,2DAA2D,CAAC,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAQxEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,2DAA2D,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAcxEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAQhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,UACZD,IAAI,CAACE,MAAM,CAAC,2EAA2E,CAAC,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAaxFC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,UACZD,IAAI,CAACE,MAAM,CAAC,oFAAoF,CAAC,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAYjGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,UACZD,IAAI,CAACE,MAAM,CAAC,oFAAoF,CAAC,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAOjGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,mBAYhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAYhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,sFAAsF,CAAC,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAQnGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,sFAAsF,CAAC,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAQnGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,kEAAkE,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAQ/EC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACM,IAAI,0BAOTH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,wDAAwD,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAOrEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,4DAA4D,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUzEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAqBhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAShBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAkBhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAYhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAYhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAoBhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,8BAoBhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,+EAA+E,CAAC,6BAW5FC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,4DAA4D,CAAC,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAgBzEC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAWhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAShBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAQhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAYhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,8FAA8F,CAAC,CAAA,EAAA,EAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAU3GC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,4FAA4F,CAAC,CAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAUzGC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAOhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAoBhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAQhBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACC,OAAO,EAAA,MAAA,EACZD,IAAI,CAACE,MAAM,CAAC,mEAAmE,CAAC,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAShFC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAShBF,MAAM,EAANA,MAAM,CAACC,MAAM,EACbJ,IAAI,EAAJA,IAAI,CAACK,WAAW,sDAp3BiB/E,UAAS,CAAA;AAAA;AAG3C;AAGAiF,IAAAA,cAAc,IAAA/B,UAAA,CAAA,IAAA,CAAA,EAAAhD,oBAAA,OAAG,EAAE,CAAA;;AAEnB;AAGAgF,IAAAA,aAAa,IAAA/E,0BAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,CAAC,CAAA;;AAEjB;AAIA+E,IAAAA,QAAQ,IAAA9E,yBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,CAAA,IAAA,EAAG8E,MAAM,CAACC,YAAY,CAAA;;AAE9B;AAIAC,IAAAA,IAAI,IAAA/E,oBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,KAAK,CAAA;;AAEZ;AAIA+E,IAAAA,OAAO,IAAA9E,gBAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;;AAEd;AAGA8E,IAAAA,IAAI,IAAA7E,mBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,EAAE,CAAA;;AAET;AAGA6E,IAAAA,UAAU,IAAA5E,gBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,KAAK,CAAA;;AAElB;AAGA4E,IAAAA,OAAO,IAAA3E,sBAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAGsD,IAAI,CAACqB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;;AAElC;IAGAC,QAAQ,IAAA3E,mBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,OAAGqD,IAAI,CAACsB,MAAM,EAAE,CAAA;;AAExB;IAGAC,WAAW,IAAA3E,oBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAGkD,IAAI,CAACuB,MAAM,EAAE,CAAA;;AAE3B;AAGAE,IAAAA,QAAQ,IAAA1E,uBAAA,CAAA,IAAA,CAAA,EAAAC,cAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEb;IAGA0E,8BAA8B,IAAAzE,oBAAA,CAAA,IAAA,CAAA,EAAAC,oCAAA,OAAGyE,IAAI,CAACJ,MAAM,EAAE,CAAA;;AAE9C;AAGAK,IAAAA,SAAS,IAAAzE,0CAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;;AAEd;AAGAyE,IAAAA,MAAM,IAAAxE,qBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,EAAE,CAAA;;AAEX;AAGAwE,IAAAA,kBAAkB,IAAAvE,kBAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,EAAE,CAAA;;AAEvB;AAGAuE,IAAAA,WAAW,IAAAtE,8BAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;;AAEhB;AAGAsE,IAAAA,SAAS,IAAArE,uBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;;AAEd;AAGAqE,IAAAA,aAAa,IAAApE,qBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,IAAI,CAAA;;AAEpB;AAGAoE,IAAAA,6BAA6B,IAAAnE,yBAAA,CAAA,IAAA,CAAA,EAAAC,mCAAA,OAAG,GAAG,CAAA;;AAEnC;IAKAmE,oBAAoB,IAAAlE,yCAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAG8B,IAAI,CAACuB,MAAM,EAAE,CAAA;;AAEpC;AAGAa,IAAAA,oBAAoB,IAAAjE,gCAAA,CAAA,IAAA,CAAA,EAAAC,0BAAA,OAAG,CAAC,CAAA;;AAExB;AAGAiE,IAAAA,qBAAqB,IAAAhE,gCAAA,CAAA,IAAA,CAAA,EAAAC,2BAAA,OAAG,IAAI,CAAA;;AAE5B;AAGAgE,IAAAA,kBAAkB,IAAA/D,iCAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,IAAI,CAAA;;AAEzB;AAGA+D,IAAAA,gBAAgB,IAAA9D,8BAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAG,IAAI,CAAA;AAEvB,IAAA,UAAU,IAAAC,4BAAA,CAAA,IAAA,CAAA,EAAG,IAAI;AACjB,IAAA,oBAAoB,GAAG,IAAI6D,GAAG,EAAE;AAChC,IAAA,iBAAiB,GAAGC,IAAI,CAAClB,MAAM,EAAE;AACjC,IAAA,eAAe,GAAGkB,IAAI,CAAClB,MAAM,EAAE;IAC/B,mCAAmC,GAAG,GAAG;AACzC,IAAA,eAAe,GAAGkB,IAAI,CAAClB,MAAM,EAAE;;AAE/B;AAIAmB,IAAAA,UAAUA,GACV;AACE,MAAA,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACZ,WAAW,EACzC;AACE,QAAA,IAAI,CAACY,UAAU,EAAEC,QAAQ,IAAI,EAAED,UAAU,EAAEE,IAAI,GAAG,IAAI,CAAC;AACvDpH,QAAAA,cAAc,CAAC,yBAAyB,CAACkH,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC;AAChG,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAIAG,aAAaA,CAACH,UAAU,EACxB;AACE,MAAA,IAAI,CAACZ,WAAW,CAACgB,IAAI,CAACJ,UAAU,CAAC;AACjC,MAAA,IAAI,CAACA,UAAU,EAAEC,QAAQ,IAAI,EAAED,UAAU,EAAEE,IAAI,GAAG,IAAI,CAAC;AACvDpH,MAAAA,cAAc,CAAC,yBAAyB,CAACkH,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC;AAC9F,MAAA,OAAOA,UAAU;AACnB,IAAA;;AAEA;IAIAK,gBAAgBA,CAACL,UAAU,EAC3B;MACE,MAAMM,KAAK,GAAG,IAAI,CAAClB,WAAW,CAACmB,OAAO,CAACP,UAAU,CAAC;AAClD,MAAA,IAAIM,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK;MAC9B,IAAI,CAAClB,WAAW,CAACoB,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MACjCN,UAAU,EAAES,MAAM,IAAI;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAIAC,IAAAA,gBAAgBA,CAACC,aAAa,GAAG,IAAI,EACrC;AACE,MAAA,MAAMC,IAAI,GAAG9H,cAAc,CAAC,gBAAgB,CAAC6H,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7F,MAAA,IAAI,CAACE,oBAAoB,CAACD,IAAI,CAAC;AAC/Bd,MAAAA,IAAI,CAACgB,4BAA4B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAACnC,QAAQ,EAAE,IAAI,CAACE,WAAW,EAAE,IAAI,CAACJ,OAAO,CAAC;AACtG;AACAqB,MAAAA,IAAI,CAACiB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC;AACjF,MAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAACxB,6BAA6B,IAC1E,IAAI,CAACd,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAACA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAACA,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAE3D,MAAA,KAAK,MAAMuC,QAAQ,IAAI,IAAI,CAAC3B,SAAS,EAAE2B,QAAQ,EAAEC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACjF,MAAA,IAAI,IAAI,CAACjD,cAAc,CAACkD,MAAM,EAC9B;AACE,QAAA,MAAMC,MAAM,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC9C,QAAA,KAAK,MAAMC,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEV,gBAAgB,GAAGC,aAAa,EAAEQ,MAAM,CAAC;AAC3F,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAIAE,IAAAA,iBAAiBA,CAACV,aAAa,GAAG,IAAI,EACtC;MACE,IAAIW,SAAS,GAAG,CAAC;MACjB,IAAI,IAAI,CAAChD,OAAO,EAChB;QACE,IAAI,IAAI,CAACE,UAAU,EACnB;AACE,UAAA,MAAM+C,SAAS,GAAGzI,cAAc,CAAC,gBAAgB,CAAC6H,aAAa,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;AACjH,UAAA,IAAIY,SAAS,GAAG,CAAC,EAAED,SAAS,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,IAAI,CAACxD,aAAa,GAAGsD,SAAS,CAAC;AAC5E,QAAA,CAAC,MAED;AACED,UAAAA,SAAS,GAAG,GAAG;AACjB,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAACI,iBAAiB,CAACJ,SAAS,CAAC;AACjC,MAAA,MAAMV,IAAI,GAAG9H,cAAc,CAAC,gBAAgB,CAAC6H,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7F,MAAA,KAAK,MAAMgB,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EAAE0C,QAAQ,EAAEV,MAAM,GAAGL,IAAI,EAAEA,IAAI,CAAC;AACrE,MAAA,IAAI,IAAI,CAAC5C,cAAc,CAACkD,MAAM,EAC9B;AACE,QAAA,MAAMC,MAAM,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAC9CA,MAAM,CAACS,yBAAyB,GAAGN,SAAS;AAC5C,QAAA,KAAK,MAAMF,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEC,iBAAiB,GAAGV,aAAa,EAAEQ,MAAM,CAAC;AAC5F,MAAA;AACA,MAAA,OAAOG,SAAS;AAClB,IAAA;;AAEA;IAIAO,gBAAgBA,CAAClB,aAAa,GAAG,IAAI,EAAEmB,eAAe,GAAGhJ,cAAc,CAAC,SAAS,EACjF;AACE,MAAA,IAAI,CAAC,IAAI,CAACwF,OAAO,EAAE,OAAO,KAAK;MAC/B,IAAI,IAAI,CAACE,UAAU,EACnB;AACE,QAAA,IAAI,CAACuD,iBAAiB,CAACjJ,cAAc,CAAC,YAAY,CAAC;AACnDkJ,QAAAA,IAAI,CAACC,aAAa,CAACnJ,cAAc,CAAC,YAAY,EAAEA,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;QAClG,MAAMoJ,OAAO,GAAGvB,aAAa,EAAEwB,UAAU,IAAI,IAAIxB,aAAa,EAAEuB,OAAO;QACvE,IAAIA,OAAO,EAAEE,eAAe,GAAGtJ,cAAc,CAAC,YAAY,CAAC,KAAK,KAAK,EACrE;UACE,IAAI,CAACmF,aAAa,GAAGoE,MAAM,CAACH,OAAO,EAAEI,mBAAmB,GAAGxJ,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,CAACmF,aAAa,CAAC,IAAI,CAAC;AACrH,QAAA;AAEA,QAAA,MAAMsE,MAAM,GAAG,IAAI,CAACrE,QAAQ;AAC5B,QAAA,IAAI,CAACA,QAAQ,GAAGC,MAAM,CAACqE,WAAW;AAClC,QAAA,MAAMC,MAAM,GAAG3J,cAAc,CAAC,gBAAgB,CAAC6H,aAAa,EAAE,0BAA0B,EAAE,uBAAuB,CAAC;AAClH,QAAA,MAAM+B,GAAG,GAAG5J,cAAc,CAAC,gBAAgB,CAAC6H,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,CAAC;AACzG,QAAA,IAAI,IAAI,CAAC1C,aAAa,IAAIwE,MAAM,EAAE,IAAI,CAACvE,QAAQ,GAAGC,MAAM,CAACC,YAAY,CAAC,KACjE,IAAI,IAAI,CAACH,aAAa,IAAIyE,GAAG,EAAE,IAAI,CAACxE,QAAQ,GAAGC,MAAM,CAACwE,cAAc;QACzE,IAAI,CAAC,UAAU,KAAKJ,MAAM,KAAK,IAAI,CAACrE,QAAQ;AAC9C,MAAA;AAEA,MAAA,KAAK,MAAMkD,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;QACEoD,KAAK,EAAES,gBAAgB,GAAGlB,aAAa,EAAEmB,eAAe,EAAE,IAAI,CAAC5D,QAAQ,CAAC;AAC1E,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAGA0E,IAAAA,cAAcA,CAACC,GAAG,GAAG,EAAE,EACvB;AACE,MAAA,IAAI,CAAC,IAAI,CAACvE,OAAO,EAAE,OAAOuE,GAAG;AAC7B,MAAA,IAAI,IAAI,CAAC,UAAU,EACnB;AACE,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,KAAK,MAAMzB,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE0B,SAAS,GAAG,IAAI,CAAC5E,QAAQ,CAAC;AAC5E,MAAA;AACA,MAAA,KAAK,MAAMkD,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEwB,cAAc,GAAGC,GAAG,CAAC;AACrE,MAAA,OAAOA,GAAG;AACZ,IAAA;;AAEA;IAGAnB,iBAAiBA,CAACqB,eAAe,EACjC;AACE,MAAA,KAAK,MAAM/C,UAAU,IAAI,IAAI,CAACZ,WAAW,EAAEY,UAAU,EAAEiB,MAAM,GAAG8B,eAAe,CAAC;AAClF,IAAA;;AAEA;IAGAhB,iBAAiBA,CAACc,GAAG,GAAG7D,IAAI,CAACJ,MAAM,EAAE,EACrC;AACEI,MAAAA,IAAI,CAACgE,GAAG,CACNH,GAAG,EACH,IAAI,CAACrD,oBAAoB,CAAC,CAAC,CAAC,EAC5B,IAAI,CAACA,oBAAoB,CAAC,CAAC,CAAC,EAC5B,IAAI,CAACA,oBAAoB,CAAC,CAAC,CAAC,EAC5B,IAAI,CAACC,oBACP,CAAC;AACD,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAGAwD,IAAAA,uBAAuBA,GACvB;MACE,OAAO,IAAI,CAACxD,oBAAoB;AAClC,IAAA;;AAEA;IAIAoB,oBAAoBA,CAACD,IAAI,EACzB;AACE9H,MAAAA,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC8G,gBAAgB,EAAEgB,IAAI,EAAE9H,cAAc,CAAC,YAAY,EAAEA,cAAc,CAAC,KAAK,CAAC;AAC3GA,MAAAA,cAAc,CAAC,YAAY,CAAC,IAAI,CAACwG,aAAa,EAAEsB,IAAI,EAAE9H,cAAc,CAAC,SAAS,EAAEA,cAAc,CAAC,iBAAiB,CAAC;MACjH,IAAI,IAAI,CAAC6G,kBAAkB,EAC3B;AACE7G,QAAAA,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC6G,kBAAkB,EAAEiB,IAAI,EAAE9H,cAAc,CAAC,cAAc,EAAEA,cAAc,CAAC,iBAAiB,CAAC;AAC3H;AACAwE,QAAAA,IAAI,CAACyD,QAAQ,CAACjI,cAAc,CAAC,SAAS,EAAEA,cAAc,CAAC,SAAS,EAAEA,cAAc,CAAC,cAAc,CAAC;AAClG,MAAA;AAEAgH,MAAAA,IAAI,CAACoD,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAEpK,cAAc,CAAC,SAAS,EAAEA,cAAc,CAAC,YAAY,CAAC;MACzG,IAAI,IAAI,CAAC4G,qBAAqB,EAC9B;AACE5G,QAAAA,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC4G,qBAAqB,EAAEkB,IAAI,EAAE9H,cAAc,CAAC,iBAAiB,EAAEA,cAAc,CAAC,KAAK,CAAC;AACrHuE,QAAAA,IAAI,CAAC4E,aAAa,CAACnJ,cAAc,CAAC,iBAAiB,EAAEA,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC;AAC5G,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAGA,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAGA,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAGA,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChE,MAAA;MACA,OAAO,IAAI,CAAC,eAAe;AAC7B,IAAA;;AAEA;IAIAqK,8BAA8BA,CAACvC,IAAI,EAAEiC,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EACxD;AACE,MAAA,IAAI,CAACiC,oBAAoB,CAACD,IAAI,CAAC;AAC/Bd,MAAAA,IAAI,CAACgB,4BAA4B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAACnC,QAAQ,EAAE,IAAI,CAACE,WAAW,EAAE,IAAI,CAACJ,OAAO,CAAC;AACtG;AACAqB,MAAAA,IAAI,CAACiB,QAAQ,CAACjI,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC;AAC1F,MAAA,OAAOuE,IAAI,CAAC4E,aAAa,CAACY,GAAG,EAAE,IAAI,CAACrD,oBAAoB,EAAE1G,cAAc,CAAC,gBAAgB,CAAC;AAC5F,IAAA;;AAEA;IAIAsK,2BAA2BA,CAACP,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EAC/C;AACE,MAAA,OAAOvB,IAAI,CAAC4E,aAAa,CAACY,GAAG,EAAE,IAAI,CAACrD,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACnF,IAAA;;AAEA;AAGA6D,IAAAA,mBAAmBA,CAACC,IAAI,EAAEC,IAAI,EAC9B;AACE,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;IAIAC,wBAAwBA,CAACX,GAAG,GAAG/C,IAAI,CAAClB,MAAM,EAAE,EAC5C;MACE,OAAOkB,IAAI,CAAC2D,IAAI,CAACZ,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC/C,IAAA;;AAEA;IAIAa,wBAAwBA,CAACC,YAAY,EACrC;AACE,MAAA,KAAK,MAAMvC,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEsC,wBAAwB,GAAGC,YAAY,CAAC;AAC1F,IAAA;;AAEA;AAIAC,IAAAA,sBAAsBA,CAAC1B,OAAO,EAAEyB,YAAY,EAC5C;AACE,MAAA,IAAI,CAAC,IAAI,CAACrF,OAAO,EAAE;AACnB,MAAA,KAAK,MAAM8C,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEwC,sBAAsB,GAAG1B,OAAO,EAAEyB,YAAY,CAAC;AACjG,IAAA;;AAEA;IAIAE,SAASA,CAACC,YAAY,EACtB;AACE,MAAA,IAAI,CAAC,IAAI,CAACxF,OAAO,EAAE;AACnB,MAAA,MAAMyF,SAAS,GAAG,IAAI,CAAC,iBAAiB;AACxC,MAAA,MAAMC,KAAK,GAAG,CACZxC,IAAI,CAACyC,KAAK,CAACF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC,GACpDvC,IAAI,CAACyC,KAAK,CAACF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC,GACpDvC,IAAI,CAACyC,KAAK,CAACF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,EAAE,CAAC,CAAC,IACnD,CAAC;AACL,MAAA,KAAK,MAAMG,KAAK,IAAI,IAAI,CAAChF,MAAM,EAAEgF,KAAK,EAAEC,QAAQ,GAAGL,YAAY,EAAEC,SAAS,EAAEC,KAAK,CAAC;AACpF,IAAA;;AAEA;IAGAG,QAAQA,CAACD,KAAK,EACd;AACE,MAAA,IAAI,CAAChF,MAAM,CAACkB,IAAI,CAAC8D,KAAK,CAAC;AACvB,MAAA,OAAOA,KAAK;AACd,IAAA;;AAEA;AAGAE,IAAAA,WAAWA,GACX;AACE,MAAA,IAAI,CAAClF,MAAM,CAACgC,MAAM,GAAG,CAAC;AACxB,IAAA;;AAEA;AAIAmD,IAAAA,mBAAmBA,CAACC,MAAM,GAAG,IAAIC,qBAAoB,EAAE,EAAEC,MAAM,GAAG,IAAIC,qBAAoB,EAAE,EAC5F;AACE3L,MAAAA,cAAc,CAAC,kBAAkB,CAACwL,MAAM,CAAC;AACzCxL,MAAAA,cAAc,CAAC,kBAAkB,CAAC0L,MAAM,CAAC;AACzCF,MAAAA,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACtBJ,MAAAA,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACtBF,MAAAA,MAAM,CAACE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACtBF,MAAAA,MAAM,CAACE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;MACtB,OAAO;QAAEJ,MAAM;AAAEE,QAAAA;OAAQ;AAC3B,IAAA;;AAEA;IAIAG,4BAA4BA,CAACC,OAAO,EACpC;AACE,MAAA,OAAOA,OAAO,EAAED,4BAA4B,GAC1C,IAAI,CAAC,eAAe,CAACE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EACrC,IAAI,CAAC,mCAAmC,EACxC/L,cAAc,CAAC,SAAS,EACxB,IAAI,CAACiG,8BACP,CAAC;AACH,IAAA;;AAEA;IAIA+F,8BAA8BA,CAACF,OAAO,EACtC;AACE,MAAA,OAAOA,OAAO,EAAEE,8BAA8B,GAAG,IAAI,CAAC,eAAe,CAACD,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzF,IAAA;;AAEA;AAGAE,IAAAA,KAAKA,GACL;MACE,KAAK,MAAMpD,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EAAE0C,QAAQ,EAAEqD,IAAI,IAAI;AACzD,MAAA,KAAK,MAAM5D,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;AACE,QAAA,IAAIoD,KAAK,EAAE6D,gBAAgB,EAAE7D,KAAK,CAAC6D,gBAAgB,EAAE,CAAC,KACjD7D,KAAK,EAAE8D,aAAa,IAAI;AAC/B,MAAA;AACF,IAAA;;AAEA;AAGAC,IAAAA,IAAIA,GACJ;MACE,KAAK,MAAMxD,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EAAE0C,QAAQ,EAAEwD,IAAI,IAAI;AACzD,MAAA,KAAK,MAAM/D,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;AACE,QAAA,IAAIoD,KAAK,EAAEgE,gBAAgB,EAAEhE,KAAK,CAACgE,gBAAgB,EAAE,CAAC,KACjDhE,KAAK,EAAEiE,aAAa,IAAI;AAC/B,MAAA;AACF,IAAA;;AAEA;AAGAC,IAAAA,qBAAqBA,GACrB;AACE,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;AAIAC,IAAAA,wBAAwBA,CAACC,MAAM,EAAEC,aAAa,EAAE5C,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EACnE;AACEvB,MAAAA,IAAI,CAAC2F,GAAG,CAACH,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC3F,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAIA6C,IAAAA,yBAAyBA,CAACF,MAAM,EAAEC,aAAa,EAAE5C,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EACpE;MACEvB,IAAI,CAAC2F,GAAG,CAACH,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAIA8C,IAAAA,iBAAiBA,CAACC,OAAO,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAElD,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EACzE;MACE,IAAI,CAAC2G,wBAAwB,CAACK,OAAO,EAAE,IAAI,EAAE/C,GAAG,CAAC;AACjD,MAAA,OAAOxF,IAAI,CAAC2I,eAAe,CAACF,MAAM,EAAEjD,GAAG,CAAC,GAAGR,MAAM,CAAC0D,OAAO,CAAC;AAC5D,IAAA;;AAEA;AAGAE,IAAAA,4BAA4BA,GAC5B;AACE,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;IAGAC,4BAA4BA,CAACC,SAAS,EACtC;AACE,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;IAGAC,yBAAyBA,CAACD,SAAS,EACnC;AACE,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;AAGAE,IAAAA,SAASA,GACT;MACE,OAAO,IAAI,CAAC5G,oBAAoB;AAClC,IAAA;;AAEA;IAGA6G,YAAYA,CAACC,mBAAmB,EAAEC,UAAU,EAAEC,SAAS,EAAEC,KAAK,EAC9D;AACE,MAAA,OAAO,EAAE;AACX,IAAA;;AAEA;AAGAC,IAAAA,YAAYA,CAACC,IAAI,EAAEJ,UAAU,EAAEK,YAAY,EAC3C;AACE,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;IAIAC,gBAAgBA,CAACjE,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EACpC;AACE,MAAA,OAAOvB,IAAI,CAAC2F,GAAG,CAACH,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AACpG,IAAA;;AAEA;IAIAkE,gBAAgBA,CAAClE,GAAG,GAAGvF,IAAI,CAACsB,MAAM,EAAE,EACpC;AACEkB,MAAAA,IAAI,CAACkH,WAAW,CAAClO,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC;AACrE;AACAwE,MAAAA,IAAI,CAACyD,QAAQ,CAAC8B,GAAG,EAAE/J,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC6F,QAAQ,CAAC;AAChE,MAAA,OAAOrB,IAAI,CAAC2J,SAAS,CAACpE,GAAG,EAAEA,GAAG,CAAC;AACjC,IAAA;;AAEA;AAGAqE,IAAAA,eAAeA,CAACC,GAAG,EAAEC,MAAM,EAAEvE,GAAG,GAAGxF,IAAI,CAACuB,MAAM,EAAE,EAChD;MACE,IAAI,CAAC2G,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE1C,GAAG,CAAC;AAC5C,MAAA,IAAI,CAACsE,GAAG,IAAI,CAACC,MAAM,EAAE,OAAOvE,GAAG;MAC/BxF,IAAI,CAACgK,QAAQ,CAACvO,cAAc,CAAC,WAAW,EAAEqO,GAAG,EAAEtE,GAAG,CAAC;MACnDxF,IAAI,CAACgK,QAAQ,CAACvO,cAAc,CAAC,cAAc,EAAEqO,GAAG,EAAEC,MAAM,CAAC;MACzD,MAAME,eAAe,GAAGjK,IAAI,CAAC6D,MAAM,CAACpI,cAAc,CAAC,cAAc,CAAC;AAClE,MAAA,IAAIwO,eAAe,EAAEjK,IAAI,CAAC2G,KAAK,CAAClL,cAAc,CAAC,cAAc,EAAEA,cAAc,CAAC,cAAc,EAAE,CAAC,GAAGwO,eAAe,CAAC;AAClHjK,MAAAA,IAAI,CAACkK,WAAW,CACdzO,cAAc,CAAC,WAAW,EAC1BA,cAAc,CAAC,WAAW,EAC1BA,cAAc,CAAC,cAAc,EAC7B,CAACuE,IAAI,CAACmK,GAAG,CAAC1O,cAAc,CAAC,cAAc,EAAEA,cAAc,CAAC,WAAW,CACrE,CAAC;MACD,MAAM2O,YAAY,GAAGpK,IAAI,CAAC6D,MAAM,CAACpI,cAAc,CAAC,WAAW,CAAC;AAC5D,MAAA,IAAI2O,YAAY,EAAEpK,IAAI,CAAC2G,KAAK,CAAClL,cAAc,CAAC,WAAW,EAAEA,cAAc,CAAC,WAAW,EAAE,CAAC,GAAG2O,YAAY,CAAC;AACtG,MAAA,OAAOpK,IAAI,CAACkK,WAAW,CAAC1E,GAAG,EAAEA,GAAG,EAAE/J,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC2G,oBAAoB,GAAG,KAAK,CAAC;AAClG,IAAA;;AAEA;AAGAiI,IAAAA,WAAWA,GACX;MACE,OAAO,IAAI,CAAC1J,cAAc;AAC5B,IAAA;;AAEA;IAGA2J,YAAYA,CAAC5D,SAAS,EACtB;MACEjE,IAAI,CAAC8H,UAAU,CAAC,IAAI,CAACnJ,OAAO,EAAEsF,SAAS,CAAC;MACxCjE,IAAI,CAACkH,WAAW,CAAC,IAAI,CAACrI,QAAQ,EAAEoF,SAAS,CAAC;MAC1CjE,IAAI,CAAC+H,cAAc,CAAC,IAAI,CAAChJ,WAAW,EAAEkF,SAAS,CAAC;AAClD,IAAA;;AAEA;AAGA+D,IAAAA,YAAYA,CAACvJ,IAAI,EAAEwJ,SAAS,GAAG,EAAE,EACjC;AACE,MAAA,MAAMC,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMoD,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EACrC;AACE,QAAA,IAAI,CAAC0C,QAAQ,EAAEuG,OAAO,IAAI,IAAIvG,QAAQ,EAAEpD,IAAI,MAAMyJ,MAAM,EAAE;QAC1D,IAAID,SAAS,EAAEpG,QAAQ,EAAEwG,aAAa,GAAGJ,SAAS,CAAC,CAAC,KAEpD;UACEpG,QAAQ,EAAEyG,cAAc,IAAI;UAC5BzG,QAAQ,EAAEqD,IAAI,IAAI;AACpB,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAM5D,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE0G,YAAY,GAAGE,MAAM,EAAED,SAAS,CAAC;AACnF,IAAA;;AAEA;IAGAM,YAAYA,CAAC9J,IAAI,EACjB;AACE,MAAA,MAAMyJ,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMoD,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EACrC;AACE,QAAA,IAAI,CAAC0C,QAAQ,EAAEuG,OAAO,IAAI,IAAIvG,QAAQ,EAAEpD,IAAI,MAAMyJ,MAAM,EAAErG,QAAQ,EAAEwD,IAAI,IAAI;AAC9E,MAAA;AACA,MAAA,KAAK,MAAM/D,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEiH,YAAY,GAAGL,MAAM,CAAC;AACxE,IAAA;;AAEA;AAGAM,IAAAA,cAAcA,CAAC/J,IAAI,EAAEqC,IAAI,EACzB;AACE,MAAA,MAAMoH,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMoD,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EACrC;QACE,IAAI,CAAC0C,QAAQ,EAAEuG,OAAO,IAAI,IAAIvG,QAAQ,EAAEpD,IAAI,MAAMyJ,MAAM,EAAErG,QAAQ,EAAEV,MAAM,GAAGL,IAAI,EAAEA,IAAI,CAAC;AAC1F,MAAA;AACA,MAAA,KAAK,MAAMQ,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEkH,cAAc,GAAGN,MAAM,EAAEpH,IAAI,CAAC;AAChF,IAAA;;AAEA;IAGA2H,mBAAmBA,CAAChK,IAAI,EACxB;AACE,MAAA,MAAMyJ,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;MACjC,IAAIO,QAAQ,GAAG,CAAC;AAChB,MAAA,KAAK,MAAM6C,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EACrC;AACE,QAAA,IAAI,CAAC0C,QAAQ,EAAEuG,OAAO,IAAI,IAAIvG,QAAQ,EAAEpD,IAAI,MAAMyJ,MAAM,EACxD;AACElJ,UAAAA,QAAQ,GAAG0C,IAAI,CAACgH,GAAG,CAAC1J,QAAQ,EAAEuD,MAAM,CAACV,QAAQ,EAAE8G,mBAAmB,IAAI,IAAI,CAAC,CAAC,CAAC;AAC/E,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAMrH,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;AACEc,QAAAA,QAAQ,GAAG0C,IAAI,CAACgH,GAAG,CAAC1J,QAAQ,EAAEuD,MAAM,CAACjB,KAAK,EAAEmH,mBAAmB,GAAGP,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,MAAA;AACA,MAAA,OAAOlJ,QAAQ;AACjB,IAAA;;AAEA;AAGA4J,IAAAA,gBAAgBA,CAACnK,IAAI,EAAEwJ,SAAS,EAChC;AACE,MAAA,MAAMC,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;MACjC,IAAIO,QAAQ,GAAG,CAAC;AAChB,MAAA,KAAK,MAAM6C,QAAQ,IAAI,IAAI,CAAC1C,SAAS,EACrC;AACE,QAAA,IAAI,CAAC0C,QAAQ,EAAEuG,OAAO,IAAI,IAAIvG,QAAQ,EAAEpD,IAAI,MAAMyJ,MAAM,EACxD;AACElJ,UAAAA,QAAQ,GAAG0C,IAAI,CAACgH,GAAG,CAAC1J,QAAQ,EAAEuD,MAAM,CAACV,QAAQ,EAAE+G,gBAAgB,GAAGX,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAM3G,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;QACEc,QAAQ,GAAG0C,IAAI,CAACgH,GAAG,CAAC1J,QAAQ,EAAEuD,MAAM,CAACjB,KAAK,EAAEsH,gBAAgB,GAAGV,MAAM,EAAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,MAAA;AACA,MAAA,OAAOjJ,QAAQ;AACjB,IAAA;;AAEA;AAIA6J,IAAAA,eAAeA,CAACC,OAAO,GAAG,IAAIC,GAAG,EAAE,EACnC;AACED,MAAAA,OAAO,CAACE,GAAG,GAAG,iBAAiB,CAAC;AAChCF,MAAAA,OAAO,CAACE,GAAG,GAAG,QAAQ,CAAC;AACvB,MAAA,KAAK,MAAM9H,QAAQ,IAAI,IAAI,CAAC3B,SAAS,EAAE2B,QAAQ,EAAE2H,eAAe,GAAGC,OAAO,CAAC;AAC3E,MAAA,KAAK,MAAMxH,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEuH,eAAe,GAAGC,OAAO,CAAC;AAC1E,MAAA,OAAOA,OAAO;AAChB,IAAA;;AAEA;IAIAG,eAAeA,CAACC,QAAQ,EACxB;MACE,IAAIA,QAAQ,EAAEC,SAAS,GAAG,IAAI,EAAE,iBAAiB,CAAC,EAClD;AACED,QAAAA,QAAQ,EAAEE,UAAU,GAAG,IAAI,EAAE,IAAI,CAAC1J,oBAAoB,EAAE,IAAI,CAACC,oBAAoB,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC;AAChH,MAAA;AACA,MAAA,KAAK,MAAM2B,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE2H,eAAe,GAAGC,QAAQ,CAAC;MAC3E,IAAIA,QAAQ,EAAEC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,EACzC;AACE,QAAA,KAAK,MAAM/E,KAAK,IAAI,IAAI,CAAChF,MAAM,EAAEgF,KAAK,EAAE6E,eAAe,GAAGC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AAC3F,MAAA;AACA,MAAA,KAAK,MAAMhI,QAAQ,IAAI,IAAI,CAAC3B,SAAS,EAAE2B,QAAQ,EAAE+H,eAAe,GAAGC,QAAQ,CAAC;AAC9E,IAAA;;AAEA;AAGAG,IAAAA,qBAAqBA,CAAC5K,IAAI,EAAE6K,KAAK,EACjC;AACE,MAAA,MAAMC,GAAG,GAAGpB,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AAC9B,MAAA,MAAM+K,IAAI,GAAGjH,MAAM,CAAC+G,KAAK,CAAC;MAC1B,IAAI,CAAC,oBAAoB,CAACpG,GAAG,CAACqG,GAAG,EAAEC,IAAI,CAAC;AACxC,MAAA,KAAK,MAAMtJ,UAAU,IAAI,IAAI,CAACZ,WAAW,EAAEY,UAAU,EAAEuJ,WAAW,GAAGF,GAAG,EAAEC,IAAI,CAAC;AAC/E,MAAA,KAAK,MAAMlI,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE+H,qBAAqB,GAAGE,GAAG,EAAEC,IAAI,CAAC;AACpF,IAAA;;AAEA;IAGAE,qBAAqBA,CAACjL,IAAI,EAC1B;AACE,MAAA,MAAMkL,SAAS,GAAGxB,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACpC,MAAA,KAAK,MAAMyB,UAAU,IAAI,IAAI,CAACZ,WAAW,EAAEY,UAAU,EAAE0J,WAAW,GAAGD,SAAS,CAAC;AAC/E,MAAA,KAAK,MAAMrI,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEoI,qBAAqB,GAAGC,SAAS,CAAC;AACpF,IAAA;;AAEA;AAGAE,IAAAA,gBAAgBA,GAChB;MACE,KAAK,MAAM3J,UAAU,IAAI,IAAI,CAACZ,WAAW,EAAEY,UAAU,EAAE+E,KAAK,IAAI;MAChE,KAAK,MAAM3D,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEuI,gBAAgB,IAAI;AACtE,IAAA;;AAEA;IAGAC,oBAAoBA,CAACrL,IAAI,EACzB;AACE,MAAA,MAAMyJ,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAM6C,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;AACE,QAAA,IAAI,CAACoD,KAAK,EAAE8G,OAAO,IAAI,IAAI9G,KAAK,EAAE7C,IAAI,IAAI,EAAE,MAAMyJ,MAAM,EAAE,OAAO5G,KAAK;AACxE,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAIAyI,uBAAuBA,CAACzI,KAAK,EAC7B;AACE,MAAA,IAAI,CAACpD,cAAc,CAACoC,IAAI,CAACgB,KAAK,CAAC;AAC/BtI,MAAAA,cAAc,CAAC,yBAAyB,CAACsI,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;MACnGA,KAAK,EAAEuI,gBAAgB,IAAI;AAC3B,MAAA,OAAOvI,KAAK;AACd,IAAA;;AAEA;IAIA0I,4BAA4BA,CAAC1I,KAAK,EAClC;MACE,MAAMd,KAAK,GAAG,IAAI,CAACtC,cAAc,CAACuC,OAAO,CAACa,KAAK,CAAC;AAChD,MAAA,IAAId,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK;MAC9B,IAAI,CAACtC,cAAc,CAACwC,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;AACpC,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AAGAyJ,IAAAA,eAAeA,CAACxL,IAAI,EAAE6K,KAAK,EAC3B;AACE,MAAA,KAAK,MAAMhI,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE2I,eAAe,GAAGxL,IAAI,EAAE6K,KAAK,CAAC;AAChF,IAAA;;AAEA;IAGAY,gBAAgBA,CAACzL,IAAI,EACrB;AACE,MAAA,MAAMyJ,MAAM,GAAGC,MAAM,CAAC1J,IAAI,IAAI,EAAE,CAAC;AACjC,MAAA,KAAK,MAAMyC,QAAQ,IAAI,IAAI,CAAC3B,SAAS,EACrC;QACE,IAAI,CAAC2B,QAAQ,EAAEzC,IAAI,IAAI,EAAE,MAAMyJ,MAAM,EACrC;AACE,UAAA,OAAO,OAAOhH,QAAQ,CAACiJ,WAAW,KAAK,UAAU,GAAGjJ,QAAQ,CAACiJ,WAAW,EAAE,GAAGjJ,QAAQ,CAACA,QAAQ,IAAI,IAAI;AACxG,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAMI,KAAK,IAAI,IAAI,CAACpD,cAAc,EACvC;AACE,QAAA,MAAMkM,OAAO,GAAG9I,KAAK,EAAE4I,gBAAgB,GAAGhC,MAAM,CAAC;QACjD,IAAIkC,OAAO,EAAE,OAAOA,OAAO;AAC7B,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IAGAC,WAAWA,CAACnJ,QAAQ,EACpB;AACE,MAAA,IAAI,CAAC3B,SAAS,CAACe,IAAI,CAACY,QAAQ,CAAC;AAC7B,MAAA,OAAOA,QAAQ;AACjB,IAAA;;AAEA;IAIAoJ,OAAOA,CAACC,MAAM,EACd;AACE,MAAA,IAAI,CAAChM,IAAI,GAAG,CAAC,CAACgM,MAAM;AACpB,MAAA,KAAK,MAAMjJ,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEgJ,OAAO,GAAG,IAAI,CAAC/L,IAAI,CAAC;AACpE,MAAA,KAAK,MAAM2C,QAAQ,IAAI,IAAI,CAAC3B,SAAS,EAAE2B,QAAQ,EAAEoJ,OAAO,GAAG,IAAI,CAAC/L,IAAI,CAAC;AACvE,IAAA;;AAEA;AAGAiM,IAAAA,oBAAoBA,GACpB;AACE,MAAA,IAAI,CAACpM,QAAQ,GAAGC,MAAM,CAACC,YAAY;AACnC,MAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,MAAA,KAAK,MAAMgD,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAE0B,SAAS,GAAG,IAAI,CAAC5E,QAAQ,CAAC;AAC5E,IAAA;;AAEA;AAGAqM,IAAAA,8BAA8BA,CAAChM,IAAI,EAAE6K,KAAK,EAC1C;AACE,MAAA,KAAK,MAAMhI,KAAK,IAAI,IAAI,CAACpD,cAAc,EAAEoD,KAAK,EAAEmJ,8BAA8B,GAAGhM,IAAI,EAAE6K,KAAK,CAAC;AAC/F,IAAA;IAEA,wBAAwBoB,GACxB;AACE,MAAA,MAAMrJ,MAAM,GAAG,IAAIsJ,qBAAoB,EAAE;MACzCtJ,MAAM,CAACuJ,iBAAiB,GAAG,IAAI;AAC/BvJ,MAAAA,MAAM,CAACwJ,SAAS,GAAG,IAAI,CAACrM,OAAO;MAC/BwB,IAAI,CAAC2D,IAAI,CAACtC,MAAM,CAACyJ,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC/D,MAAA,OAAOzJ,MAAM;AACf,IAAA;GA0ED;AAxEQ,EAAA,yBAAyB0J,CAAC7C,MAAM,EAAE8C,SAAS,EAAEC,UAAU,EAC9D;AACE,IAAA,MAAMC,MAAM,GAAGhD,MAAM,GAAG+C,UAAU,CAAC;AACnC,IAAA,IAAI,OAAOC,MAAM,KAAK,UAAU,EAAE;AAClC,IAAA,KAAK,MAAM,CAACzM,IAAI,EAAE6K,KAAK,CAAC,IAAI0B,SAAS,EAAEE,MAAM,CAACC,IAAI,CAACjD,MAAM,EAAEzJ,IAAI,EAAE6K,KAAK,CAAC;AACzE,EAAA;EAEO,gBAAgB8B,CAACC,OAAO,EAAEJ,UAAU,EAAE,GAAGK,aAAa,EAC7D;AACE,IAAA,MAAMvN,MAAM,GAAGsN,OAAO,GAAGJ,UAAU,CAAC;AACpC,IAAA,IAAI,OAAOlN,MAAM,KAAK,UAAU,EAAE,OAAOwE,MAAM,CAACxE,MAAM,CAACoN,IAAI,CAACE,OAAO,CAAC,CAAC,IAAI,CAAC;AAC1E,IAAA,KAAK,MAAME,YAAY,IAAID,aAAa,EACxC;AACE,MAAA,IAAID,OAAO,GAAGE,YAAY,CAAC,KAAKC,SAAS,IAAIH,OAAO,GAAGE,YAAY,CAAC,KAAK,IAAI,EAC7E;QACE,OAAOhJ,MAAM,CAAC8I,OAAO,CAACE,YAAY,CAAC,CAAC,IAAI,CAAC;AAC3C,MAAA;AACF,IAAA;AACA,IAAA,OAAO,CAAC;AACV,EAAA;EAEO,YAAYE,CAACC,KAAK,EAAE5K,IAAI,EAAEiC,GAAG,EAAE4I,QAAQ,EAC9C;IACE,IAAI,CAACD,KAAK,EACV;MACE,KAAK,IAAIlL,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGuC,GAAG,CAAC3B,MAAM,EAAEZ,KAAK,EAAE,EAAEuC,GAAG,CAACvC,KAAK,CAAC,GAAGmL,QAAQ,CAACnL,KAAK,CAAC;AAC7E,MAAA,OAAOuC,GAAG;AACZ,IAAA;AACA,IAAA,IAAI6I,MAAM;AACV,IAAA,IAAI,OAAOF,KAAK,CAACvK,MAAM,KAAK,UAAU,EAAEyK,MAAM,GAAGF,KAAK,CAACvK,MAAM,CAACL,IAAI,EAAEiC,GAAG,CAAC,CAAC,KACpE,IAAI,OAAO2I,KAAK,CAACG,UAAU,KAAK,UAAU,EAAED,MAAM,GAAGF,KAAK,CAACG,UAAU,CAAC/K,IAAI,EAAEiC,GAAG,CAAC;AACrF,IAAA,IAAI,CAAC+I,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,IAAII,WAAW,CAACC,MAAM,CAACL,MAAM,CAAC,KAAKA,MAAM,KAAK7I,GAAG,EAC3E;MACE,KAAK,IAAIvC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGuC,GAAG,CAAC3B,MAAM,EAAEZ,KAAK,EAAE,EAAEuC,GAAG,CAACvC,KAAK,CAAC,GAAGoL,MAAM,CAACpL,KAAK,CAAC;AAC7E,IAAA;AACA,IAAA,OAAOuC,GAAG;AACZ,EAAA;EAEO,kBAAkBmJ,CAACC,MAAM,EAChC;AACE,IAAA,KAAK,MAAM,CAAC1N,IAAI,EAAE6K,KAAK,CAAC,IAAI8C,MAAM,CAACC,OAAO,CAACF,MAAM,CAAC,EAClD;AACE,MAAA,IAAI,OAAO7C,KAAK,KAAK,QAAQ,EAAE6C,MAAM,CAAC1N,IAAI,CAAC,GAAG,CAAC,CAAC,KAC3C,IAAIuN,WAAW,CAACC,MAAM,CAAC3C,KAAK,CAAC,EAAEA,KAAK,CAACgD,IAAI,CAAC,CAAC,CAAC,CAAC,KAC7C,IAAIR,KAAK,CAACC,OAAO,CAACzC,KAAK,CAAC,EAC7B;AACE,QAAA,KAAK,IAAI9I,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG8I,KAAK,CAAClI,MAAM,EAAEZ,KAAK,EAAE,EACjD;AACE,UAAA,IAAI,OAAO8I,KAAK,CAAC9I,KAAK,CAAC,KAAK,QAAQ,EAAE8I,KAAK,CAAC9I,KAAK,CAAC,GAAG,CAAC,CAAC,KAClD,IAAIwL,WAAW,CAACC,MAAM,CAAC3C,KAAK,CAAC9I,KAAK,CAAC,CAAC,EAAE8I,KAAK,CAAC9I,KAAK,CAAC,CAAC8L,IAAI,CAAC,CAAC,CAAC;AACjE,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA,SAAS,GAAGtM,IAAI,CAAClB,MAAM,EAAE;AACzB,EAAA,gBAAgB,GAAGkB,IAAI,CAAClB,MAAM,EAAE;AAChC,EAAA,YAAY,GAAGI,IAAI,CAACJ,MAAM,EAAE;AAC5B,EAAA,YAAY,GAAGI,IAAI,CAACJ,MAAM,EAAE;AAC5B,EAAA,KAAK,GAAGvB,IAAI,CAACuB,MAAM,EAAE;AACrB,EAAA,YAAY,GAAGvB,IAAI,CAACuB,MAAM,EAAE;AAC5B,EAAA,iBAAiB,GAAGvB,IAAI,CAACuB,MAAM,EAAE;AACjC,EAAA,WAAW,GAAGvB,IAAI,CAACuB,MAAM,EAAE;AAC3B,EAAA,cAAc,GAAGvB,IAAI,CAACuB,MAAM,EAAE;AAC9B,EAAA,iBAAiB,GAAGtB,IAAI,CAACsB,MAAM,EAAE;AACjC,EAAA,SAAS,GAAGtB,IAAI,CAACsB,MAAM,EAAE;AACzB,EAAA,cAAc,GAAGtB,IAAI,CAACsB,MAAM,EAAE;AAC9B,EAAA,cAAc,GAAGtB,IAAI,CAACsB,MAAM,EAAE;AAC9B,EAAA,SAAS,GAAGI,IAAI,CAACJ,MAAM,EAAE;AAEzBT,EAAAA,MAAM,GAAGA,MAAM;EAACkO,WAAAA,GAAA;IAAA,KAAA,CAAAzT,cAAA,GAAAuD,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"EveEffectRoot2.js","sources":["../../../../src/eve/spaceObject/EveEffectRoot2.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveEffectRoot2_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 { EveEntity } from \"../../generated/eve/EveEntity.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { EveSpaceObjectPSData } from \"../EveSpaceObjectPSData.js\";\r\nimport { EveSpaceObjectVSData } from \"../EveSpaceObjectVSData.js\";\r\nimport { EveComponentType } from \"../EveComponentTypes.js\";\r\n\r\n\r\n@type.define({ className: \"EveEffectRoot2\", family: \"eve/spaceObject\" })\r\nexport class EveEffectRoot2 extends EveEntity\r\n{\r\n\r\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n effectChildren = [];\r\n\r\n /** m_estimatedSize (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedSize = 0;\r\n\r\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\r\n @io.read\r\n @type.int32\r\n @schema.enum(\"Tr2Lod\")\r\n lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n\r\n /** m_mute (bool) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_name (std::string) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_dynamicLODSelection (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n dynamicLOD = false;\r\n\r\n /** m_scaling (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n scaling = vec3.fromValues(1, 1, 1);\r\n\r\n /** m_rotation (Quaternion) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.quat\r\n rotation = quat.create();\r\n\r\n /** m_translation (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n translation = vec3.create();\r\n\r\n /** m_effectDuration (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n duration = -1;\r\n\r\n /** m_secondaryLightingEmissiveColor (Color) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.color\r\n secondaryLightingEmissiveColor = vec4.create();\r\n\r\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n /** m_lights (PTr2LightVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"ITriQuaternionFunction\")\r\n rotationCurve = null;\r\n\r\n /** m_secondaryLightingSphereRadiusLocal (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n secondaryLightingSphereRadius = 0.5;\r\n\r\n /** m_boundingSphere.xyz, exposed by Carbon's MAPFLOATARRAYSIZE Blue mapping. */\r\n @impl.adapted\r\n @impl.reason(\"The schema scanner omits MAPFLOATARRAYSIZE; Carbon exposes the three persisted center components separately from radius.\")\r\n @io.persist\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n /** m_boundingSphere.w (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n boundingSphereRadius = 0;\r\n\r\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"ITriVectorFunction\")\r\n modelTranslationCurve = null;\r\n\r\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"ITriQuaternionFunction\")\r\n modelRotationCurve = null;\r\n\r\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"ITriVectorFunction\")\r\n translationCurve = null;\r\n\r\n #changeLOD = true;\r\n #controllerVariables = new Map();\r\n #lastUpdateMatrix = mat4.create();\r\n #localTransform = mat4.create();\r\n #secondaryLightingSphereRadiusWorld = 0.5;\r\n #worldTransform = mat4.create();\r\n\r\n /** Links authored controllers after graph hydration. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Blue root locking is represented by the hydrated JavaScript object identity.\")\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked?.()) controller?.Link?.(this);\r\n EveEffectRoot2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\r\n }\r\n return true;\r\n }\r\n\r\n /** Adds and initializes a controller through Carbon's list-notify behavior. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so insertion behavior is explicit.\")\r\n AddController(controller)\r\n {\r\n this.controllers.push(controller);\r\n if (!controller?.IsLinked?.()) controller?.Link?.(this);\r\n EveEffectRoot2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\r\n return controller;\r\n }\r\n\r\n /** Removes and unlinks a controller through Carbon's list-notify behavior. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so removal behavior is explicit.\")\r\n RemoveController(controller)\r\n {\r\n const index = this.controllers.indexOf(controller);\r\n if (index === -1) return false;\r\n this.controllers.splice(index, 1);\r\n controller?.Unlink?.();\r\n return true;\r\n }\r\n\r\n /** Evaluates root curves and updates children that require synchronous placement. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon task and lock ownership is omitted; child update parameters retain the source graph contract.\")\r\n UpdateSyncronous(updateContext = null)\r\n {\r\n const time = EveEffectRoot2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n this.UpdateWorldTransform(time);\r\n mat4.fromRotationTranslationScale(this.#localTransform, this.rotation, this.translation, this.scaling);\r\n // Carbon (row-vector): m_localTransform * m_worldTransform - local first.\r\n mat4.multiply(this.#lastUpdateMatrix, this.#worldTransform, this.#localTransform);\r\n this.#secondaryLightingSphereRadiusWorld = this.secondaryLightingSphereRadius *\r\n (this.scaling[0] + this.scaling[1] + this.scaling[2]) / 3;\r\n\r\n for (const observer of this.observers) observer?.Update?.(this.#lastUpdateMatrix);\r\n if (this.effectChildren.length)\r\n {\r\n const params = this.#CreateChildUpdateParams();\r\n for (const child of this.effectChildren) child?.UpdateSyncronous?.(updateContext, params);\r\n }\r\n return true;\r\n }\r\n\r\n /** Advances controllers, root curve sets, and effect children. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Controller and child work is forwarded synchronously through the GPU-free graph instead of Carbon task groups.\")\r\n UpdateAsyncronous(updateContext = null)\r\n {\r\n let frequency = 0;\r\n if (this.display)\r\n {\r\n if (this.dynamicLOD)\r\n {\r\n const threshold = EveEffectRoot2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\r\n if (threshold > 0) frequency = Math.min(1, this.estimatedSize / threshold);\r\n }\r\n else\r\n {\r\n frequency = 0.5;\r\n }\r\n }\r\n\r\n this.UpdateControllers(frequency);\r\n const time = EveEffectRoot2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n for (const curveSet of this.curveSets) curveSet?.Update?.(time, time);\r\n if (this.effectChildren.length)\r\n {\r\n const params = this.#CreateChildUpdateParams();\r\n params.controllerUpdateFrequency = frequency;\r\n for (const child of this.effectChildren) child?.UpdateAsyncronous?.(updateContext, params);\r\n }\r\n return frequency;\r\n }\r\n\r\n /** Updates dynamic LOD and forwards visibility to the effect children. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Frustum and threshold state is supplied by the explicit update context rather than renderer globals.\")\r\n UpdateVisibility(updateContext = null, parentTransform = EveEffectRoot2.#identity)\r\n {\r\n if (!this.display) return false;\r\n if (this.dynamicLOD)\r\n {\r\n this.GetBoundingSphere(EveEffectRoot2.#localSphere);\r\n sph3.transformMat4(EveEffectRoot2.#worldSphere, EveEffectRoot2.#localSphere, this.#worldTransform);\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n if (frustum?.IsSphereVisible?.(EveEffectRoot2.#worldSphere) !== false)\r\n {\r\n this.estimatedSize = Number(frustum?.GetPixelSizeAccross?.(EveEffectRoot2.#worldSphere) ?? this.estimatedSize) || 0;\r\n }\r\n\r\n const oldLod = this.lodLevel;\r\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\r\n const medium = EveEffectRoot2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const low = EveEffectRoot2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n if (this.estimatedSize >= medium) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedSize >= low) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\r\n this.#changeLOD ||= oldLod !== this.lodLevel;\r\n }\r\n\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UpdateVisibility?.(updateContext, parentTransform, this.lodLevel);\r\n }\r\n return true;\r\n }\r\n\r\n /** Collects child renderables after applying a pending LOD change. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display) return out;\r\n if (this.#changeLOD)\r\n {\r\n this.#changeLOD = false;\r\n for (const child of this.effectChildren) child?.ChangeLOD?.(this.lodLevel);\r\n }\r\n for (const child of this.effectChildren) child?.GetRenderables?.(out);\r\n return out;\r\n }\r\n\r\n /** Advances every controller at the selected detail frequency. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateControllers(updateFrequency)\r\n {\r\n for (const controller of this.controllers) controller?.Update?.(updateFrequency);\r\n }\r\n\r\n /** Returns the authored local bounding sphere. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create())\r\n {\r\n vec4.set(\r\n out,\r\n this.boundingSphereCenter[0],\r\n this.boundingSphereCenter[1],\r\n this.boundingSphereCenter[2],\r\n this.boundingSphereRadius\r\n );\r\n return true;\r\n }\r\n\r\n /** Returns the authored bounding-sphere radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n return this.boundingSphereRadius;\r\n }\r\n\r\n /** Evaluates the ball/model curves into the detached root transform. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Curve outputs use CarbonEngineJS's time-first, output-second convention.\")\r\n UpdateWorldTransform(time)\r\n {\r\n EveEffectRoot2.#UpdateCurve(this.translationCurve, time, EveEffectRoot2.#translation, EveEffectRoot2.#zero);\r\n EveEffectRoot2.#UpdateCurve(this.rotationCurve, time, EveEffectRoot2.#rotation, EveEffectRoot2.#identityRotation);\r\n if (this.modelRotationCurve)\r\n {\r\n EveEffectRoot2.#UpdateCurve(this.modelRotationCurve, time, EveEffectRoot2.#modelRotation, EveEffectRoot2.#identityRotation);\r\n // Carbon (row-vector): rotation = modelRotation * rotation - model first.\r\n quat.multiply(EveEffectRoot2.#rotation, EveEffectRoot2.#rotation, EveEffectRoot2.#modelRotation);\r\n }\r\n\r\n mat4.fromRotationTranslation(this.#worldTransform, EveEffectRoot2.#rotation, EveEffectRoot2.#translation);\r\n if (this.modelTranslationCurve)\r\n {\r\n EveEffectRoot2.#UpdateCurve(this.modelTranslationCurve, time, EveEffectRoot2.#modelTranslation, EveEffectRoot2.#zero);\r\n vec3.transformMat4(EveEffectRoot2.#modelTranslation, EveEffectRoot2.#modelTranslation, this.#worldTransform);\r\n this.#worldTransform[12] = EveEffectRoot2.#modelTranslation[0];\r\n this.#worldTransform[13] = EveEffectRoot2.#modelTranslation[1];\r\n this.#worldTransform[14] = EveEffectRoot2.#modelTranslation[2];\r\n }\r\n return this.#worldTransform;\r\n }\r\n\r\n /** Updates and returns the model-center world position. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\r\n UpdateModelCenterWorldPosition(time, out = vec3.create())\r\n {\r\n this.UpdateWorldTransform(time);\r\n mat4.fromRotationTranslationScale(this.#localTransform, this.rotation, this.translation, this.scaling);\r\n // Carbon (row-vector): currentTransform * m_worldTransform - local first.\r\n mat4.multiply(EveEffectRoot2.#centerTransform, this.#worldTransform, this.#localTransform);\r\n return vec3.transformMat4(out, this.boundingSphereCenter, EveEffectRoot2.#centerTransform);\r\n }\r\n\r\n /** Returns the last model-center world position without advancing curves. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\r\n GetModelCenterWorldPosition(out = vec3.create())\r\n {\r\n return vec3.transformMat4(out, this.boundingSphereCenter, this.#lastUpdateMatrix);\r\n }\r\n\r\n /** Effect roots do not expose a local AABB in Carbon. */\r\n @carbon.method\r\n @impl.noop\r\n GetLocalBoundingBox(_min, _max)\r\n {\r\n return false;\r\n }\r\n\r\n /** Returns the last composed local-to-world transform. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS returns the caller-owned output matrix.\")\r\n GetLocalToWorldTransform(out = mat4.create())\r\n {\r\n return mat4.copy(out, this.#lastUpdateMatrix);\r\n }\r\n\r\n /** Registers every child with an injected quad renderer. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The quad renderer is an injected engine-owned capability.\")\r\n RegisterWithQuadRenderer(quadRenderer)\r\n {\r\n for (const child of this.effectChildren) child?.RegisterWithQuadRenderer?.(quadRenderer);\r\n }\r\n\r\n /** Adds visible child quads to an injected renderer. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The quad renderer is an injected engine-owned capability.\")\r\n AddQuadsToQuadRenderer(frustum, quadRenderer)\r\n {\r\n if (!this.display) return;\r\n for (const child of this.effectChildren) child?.AddQuadsToQuadRenderer?.(frustum, quadRenderer);\r\n }\r\n\r\n /** Carbon EveEffectRoot2::RegisterComponents (cpp:496-513): LightOwner when\r\n * lights are authored, then forwards the effect children. Gate m_display. */\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)\r\n {\r\n if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveEffectRoot2::UnRegisterComponents (cpp:515-528): forwards the\r\n * effect children only (own components were already removed by\r\n * EveEntity::UnRegister, EveEntity.cpp:90); no display 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 child of this.effectChildren)\r\n {\r\n child?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Adds authored lights using the effect's composed placement and average scale. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The light manager is an injected engine-owned capability.\")\r\n GetLights(lightManager)\r\n {\r\n if (!this.display) return;\r\n const transform = this.#lastUpdateMatrix;\r\n const scale = (\r\n Math.hypot(transform[0], transform[1], transform[2]) +\r\n Math.hypot(transform[4], transform[5], transform[6]) +\r\n Math.hypot(transform[8], transform[9], transform[10])\r\n ) / 3;\r\n for (const light of this.lights) light?.AddLight?.(lightManager, transform, scale);\r\n }\r\n\r\n /** Adds an authored light. */\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n this.lights.push(light);\r\n return light;\r\n }\r\n\r\n /** Removes all authored lights. */\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n this.lights.length = 0;\r\n }\r\n\r\n /** Initializes the portable child-facing space-object records. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Native constant-buffer structs are represented by GPU-free value records.\")\r\n GetPerObjectStructs(vsData = new EveSpaceObjectVSData(), psData = new EveSpaceObjectPSData())\r\n {\r\n EveEffectRoot2.#ZeroNumericRecord(vsData);\r\n EveEffectRoot2.#ZeroNumericRecord(psData);\r\n vsData.shipData[1] = 1;\r\n vsData.shipData[3] = 1;\r\n psData.shipData[1] = 1;\r\n psData.shipData[3] = 1;\r\n return { vsData, psData };\r\n }\r\n\r\n /** Registers this root as a secondary light source with an injected manager. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The SH lighting manager is injected; Trinity owns only the authored source values.\")\r\n RegisterSecondaryLightSource(manager)\r\n {\r\n return manager?.RegisterSecondaryLightSource?.(\r\n this.#worldTransform.subarray(12, 15),\r\n this.#secondaryLightingSphereRadiusWorld,\r\n EveEffectRoot2.#noAlbedo,\r\n this.secondaryLightingEmissiveColor\r\n );\r\n }\r\n\r\n /** Unregisters this root from an injected secondary-light manager. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The SH lighting manager is injected; Trinity owns only the authored source values.\")\r\n UnregisterSecondaryLightSource(manager)\r\n {\r\n return manager?.UnregisterSecondaryLightSource?.(this.#worldTransform.subarray(12, 15));\r\n }\r\n\r\n /** Plays root and child-owned curve sets. */\r\n @carbon.method\r\n @impl.implemented\r\n Start()\r\n {\r\n for (const curveSet of this.curveSets) curveSet?.Play?.();\r\n for (const child of this.effectChildren)\r\n {\r\n if (child?.PlayAllCurveSets) child.PlayAllCurveSets();\r\n else child?.PlayCurveSets?.();\r\n }\r\n }\r\n\r\n /** Stops root and child-owned curve sets. */\r\n @carbon.method\r\n @impl.implemented\r\n Stop()\r\n {\r\n for (const curveSet of this.curveSets) curveSet?.Stop?.();\r\n for (const child of this.effectChildren)\r\n {\r\n if (child?.StopAllCurveSets) child.StopAllCurveSets();\r\n else child?.StopCurveSets?.();\r\n }\r\n }\r\n\r\n /** Effect roots have no damage locators. */\r\n @carbon.method\r\n @impl.noop\r\n GetDamageLocatorCount()\r\n {\r\n return 0;\r\n }\r\n\r\n /** Returns the detached root translation as the sole target point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses output parameters last and returns the targetable validity flag.\")\r\n GetDamageLocatorPosition(_index, _inWorldSpace, out = vec3.create())\r\n {\r\n vec3.set(out, this.#worldTransform[12], this.#worldTransform[13], this.#worldTransform[14]);\r\n return true;\r\n }\r\n\r\n /** Returns Carbon's constant +Y target direction. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses output parameters last and returns the targetable validity flag.\")\r\n GetDamageLocatorDirection(_index, _inWorldSpace, out = vec3.create())\r\n {\r\n vec3.set(out, 0, 1, 0);\r\n return true;\r\n }\r\n\r\n /** Tests whether a projectile has reached the root target point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature for output parameters.\")\r\n GetImpactPosition(locator, _posPrev, posNow, epsilon, out = vec3.create())\r\n {\r\n this.GetDamageLocatorPosition(locator, true, out);\r\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\r\n }\r\n\r\n /** Effect roots never use shield impact geometry. */\r\n @carbon.method\r\n @impl.noop\r\n HasImpactConfigurationShield()\r\n {\r\n return false;\r\n }\r\n\r\n /** Effect roots use their only target point. */\r\n @carbon.method\r\n @impl.noop\r\n GetClosestDamageLocatorIndex(_position)\r\n {\r\n return 0;\r\n }\r\n\r\n /** Effect roots use their only target point. */\r\n @carbon.method\r\n @impl.noop\r\n GetGoodDamageLocatorIndex(_position)\r\n {\r\n return 0;\r\n }\r\n\r\n /** Returns the authored target radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRadius()\r\n {\r\n return this.boundingSphereRadius;\r\n }\r\n\r\n /** Effect roots do not create attached impact overlays. */\r\n @carbon.method\r\n @impl.noop\r\n CreateImpact(_damageLocatorIndex, _direction, _lifeTime, _size)\r\n {\r\n return -1;\r\n }\r\n\r\n /** Effect roots do not update attached impact overlays. */\r\n @carbon.method\r\n @impl.noop\r\n UpdateImpact(_out, _direction, _impactIndex)\r\n {\r\n return false;\r\n }\r\n\r\n /** Returns the detached root world position. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS returns the caller-owned output vector.\")\r\n GetWorldPosition(out = vec3.create())\r\n {\r\n return vec3.set(out, this.#worldTransform[12], this.#worldTransform[13], this.#worldTransform[14]);\r\n }\r\n\r\n /** Returns the authored local rotation composed with the detached root rotation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS returns the caller-owned output quaternion.\")\r\n GetWorldRotation(out = quat.create())\r\n {\r\n mat4.getRotation(EveEffectRoot2.#worldRotation, this.#worldTransform);\r\n // Carbon (row-vector): m_rotation * RotationQuaternion(world) - local first.\r\n quat.multiply(out, EveEffectRoot2.#worldRotation, this.rotation);\r\n return quat.normalize(out, out);\r\n }\r\n\r\n /** Computes a miss point just outside the root's spherical silhouette. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMissPosition(hit, source, out = vec3.create())\r\n {\r\n this.GetDamageLocatorPosition(-1, true, out);\r\n if (!hit || !source) return out;\r\n vec3.subtract(EveEffectRoot2.#missOffset, hit, out);\r\n vec3.subtract(EveEffectRoot2.#missDirection, hit, source);\r\n const directionLength = vec3.length(EveEffectRoot2.#missDirection);\r\n if (directionLength) vec3.scale(EveEffectRoot2.#missDirection, EveEffectRoot2.#missDirection, 1 / directionLength);\r\n vec3.scaleAndAdd(\r\n EveEffectRoot2.#missOffset,\r\n EveEffectRoot2.#missOffset,\r\n EveEffectRoot2.#missDirection,\r\n -vec3.dot(EveEffectRoot2.#missDirection, EveEffectRoot2.#missOffset)\r\n );\r\n const offsetLength = vec3.length(EveEffectRoot2.#missOffset);\r\n if (offsetLength) vec3.scale(EveEffectRoot2.#missOffset, EveEffectRoot2.#missOffset, 1 / offsetLength);\r\n return vec3.scaleAndAdd(out, out, EveEffectRoot2.#missOffset, this.boundingSphereRadius * 1.125);\r\n }\r\n\r\n /** Returns the owned effect-child list. */\r\n @carbon.method\r\n @impl.implemented\r\n GetChildren()\r\n {\r\n return this.effectChildren;\r\n }\r\n\r\n /** Decomposes a matrix into the authored local SRT fields. */\r\n @carbon.method\r\n @impl.implemented\r\n SetTransform(transform)\r\n {\r\n mat4.getScaling(this.scaling, transform);\r\n mat4.getRotation(this.rotation, transform);\r\n mat4.getTranslation(this.translation, transform);\r\n }\r\n\r\n /** Plays matching root and child curve sets. */\r\n @carbon.method\r\n @impl.implemented\r\n PlayCurveSet(name, rangeName = \"\")\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) continue;\r\n if (rangeName) curveSet?.PlayTimeRange?.(rangeName);\r\n else\r\n {\r\n curveSet?.ResetTimeRange?.();\r\n curveSet?.Play?.();\r\n }\r\n }\r\n for (const child of this.effectChildren) child?.PlayCurveSet?.(target, rangeName);\r\n }\r\n\r\n /** Stops matching root and child curve sets. */\r\n @carbon.method\r\n @impl.implemented\r\n StopCurveSet(name)\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) curveSet?.Stop?.();\r\n }\r\n for (const child of this.effectChildren) child?.StopCurveSet?.(target);\r\n }\r\n\r\n /** Samples matching root and child curve sets at an explicit time. */\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) curveSet?.Update?.(time, time);\r\n }\r\n for (const child of this.effectChildren) child?.UpdateCurveSet?.(target, time);\r\n }\r\n\r\n /** Returns the maximum duration of matching root and child curve sets. */\r\n @carbon.method\r\n @impl.implemented\r\n GetCurveSetDuration(name)\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 for (const child of this.effectChildren)\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 /** Returns the maximum named range duration in matching root and child sets. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRangeDuration(name, rangeName)\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 for (const child of this.effectChildren)\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 /** Collects the Carbon debug-option names and child options. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The debug renderer/options collection is an injected engine-owned capability.\")\r\n GetDebugOptions(options = new Set())\r\n {\r\n options.add?.(\"Bounding Sphere\");\r\n options.add?.(\"Lights\");\r\n for (const observer of this.observers) observer?.GetDebugOptions?.(options);\r\n for (const child of this.effectChildren) child?.GetDebugOptions?.(options);\r\n return options;\r\n }\r\n\r\n /** Forwards root debug geometry to an injected debug renderer. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The debug renderer is an injected engine-owned capability.\")\r\n RenderDebugInfo(renderer)\r\n {\r\n if (renderer?.HasOption?.(this, \"Bounding Sphere\"))\r\n {\r\n renderer?.DrawSphere?.(this, this.boundingSphereCenter, this.boundingSphereRadius, 8, \"wireframe\", 0xffff00ff);\r\n }\r\n for (const child of this.effectChildren) child?.RenderDebugInfo?.(renderer);\r\n if (renderer?.HasOption?.(this, \"Lights\"))\r\n {\r\n for (const light of this.lights) light?.RenderDebugInfo?.(renderer, this.#worldTransform);\r\n }\r\n for (const observer of this.observers) observer?.RenderDebugInfo?.(renderer);\r\n }\r\n\r\n /** Stores and propagates a controller variable to current and future members. */\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) controller?.SetVariable?.(key, next);\r\n for (const child of this.effectChildren) child?.SetControllerVariable?.(key, next);\r\n }\r\n\r\n /** Propagates an event to controllers and effect children. */\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) controller?.HandleEvent?.(eventName);\r\n for (const child of this.effectChildren) child?.HandleControllerEvent?.(eventName);\r\n }\r\n\r\n /** Starts controllers on the root and its effect children. */\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers) controller?.Start?.();\r\n for (const child of this.effectChildren) child?.StartControllers?.();\r\n }\r\n\r\n /** Finds a named direct effect child. */\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.effectChildren)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target) return child;\r\n }\r\n return null;\r\n }\r\n\r\n /** Adds and initializes an effect child through Carbon's list-notify behavior. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so insertion behavior is explicit.\")\r\n AddToEffectChildrenList(child)\r\n {\r\n this.effectChildren.push(child);\r\n EveEffectRoot2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\r\n child?.StartControllers?.();\r\n return child;\r\n }\r\n\r\n /** Removes an effect child. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Plain JavaScript arrays have no Blue IList notifications, so removal behavior is explicit.\")\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n const index = this.effectChildren.indexOf(child);\r\n if (index === -1) return false;\r\n this.effectChildren.splice(index, 1);\r\n return true;\r\n }\r\n\r\n /** Applies a shader option to every effect child. */\r\n @carbon.method\r\n @impl.implemented\r\n SetShaderOption(name, value)\r\n {\r\n for (const child of this.effectChildren) child?.SetShaderOption?.(name, value);\r\n }\r\n\r\n /** Finds a named observer or child-owned sound emitter. */\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\" ? observer.GetObserver() : observer.observer ?? null;\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter) return emitter;\r\n }\r\n return null;\r\n }\r\n\r\n /** Adds a placement observer. */\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n return observer;\r\n }\r\n\r\n /** Applies the mute state to effect children and placement observers. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The explicit setter replaces Carbon's Blue field-notify callback.\")\r\n SetMute(isMute)\r\n {\r\n this.mute = !!isMute;\r\n for (const child of this.effectChildren) child?.SetMute?.(this.mute);\r\n for (const observer of this.observers) observer?.SetMute?.(this.mute);\r\n }\r\n\r\n /** Freezes every child at Carbon's high-detail LOD. */\r\n @carbon.method\r\n @impl.implemented\r\n FreezeHighDetailMesh()\r\n {\r\n this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n this.#changeLOD = false;\r\n for (const child of this.effectChildren) child?.ChangeLOD?.(this.lodLevel);\r\n }\r\n\r\n /** Propagates a procedural-container variable to every effect child. */\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.effectChildren) child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n\r\n #CreateChildUpdateParams()\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.isVisible = this.display;\r\n mat4.copy(params.localToWorldTransform, this.#lastUpdateMatrix);\r\n return params;\r\n }\r\n\r\n static #ApplyControllerVariables(target, variables, methodName)\r\n {\r\n const setter = target?.[methodName];\r\n if (typeof setter !== \"function\") return;\r\n for (const [name, value] of variables) setter.call(target, name, value);\r\n }\r\n\r\n static #GetContextValue(context, methodName, ...propertyNames)\r\n {\r\n const method = context?.[methodName];\r\n if (typeof method === \"function\") return Number(method.call(context)) || 0;\r\n for (const propertyName of propertyNames)\r\n {\r\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\r\n {\r\n return Number(context[propertyName]) || 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static #UpdateCurve(curve, time, out, fallback)\r\n {\r\n if (!curve)\r\n {\r\n for (let index = 0; index < out.length; index++) out[index] = fallback[index];\r\n return out;\r\n }\r\n let result;\r\n if (typeof curve.Update === \"function\") result = curve.Update(time, out);\r\n else if (typeof curve.GetValueAt === \"function\") result = curve.GetValueAt(time, out);\r\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\r\n {\r\n for (let index = 0; index < out.length; index++) out[index] = result[index];\r\n }\r\n return out;\r\n }\r\n\r\n static #ZeroNumericRecord(record)\r\n {\r\n for (const [name, value] of Object.entries(record))\r\n {\r\n if (typeof value === \"number\") record[name] = 0;\r\n else if (ArrayBuffer.isView(value)) value.fill(0);\r\n else if (Array.isArray(value))\r\n {\r\n for (let index = 0; index < value.length; index++)\r\n {\r\n if (typeof value[index] === \"number\") value[index] = 0;\r\n else if (ArrayBuffer.isView(value[index])) value[index].fill(0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static #identity = mat4.create();\r\n static #centerTransform = mat4.create();\r\n static #localSphere = vec4.create();\r\n static #worldSphere = vec4.create();\r\n static #zero = vec3.create();\r\n static #translation = vec3.create();\r\n static #modelTranslation = vec3.create();\r\n static #missOffset = vec3.create();\r\n static #missDirection = vec3.create();\r\n static #identityRotation = quat.create();\r\n static #rotation = quat.create();\r\n static #modelRotation = quat.create();\r\n static #worldRotation = quat.create();\r\n static #noAlbedo = vec4.create();\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n}\r\n"],"names":["_EveEffectRoot","_identity","EveEffectRoot2","EveEntity","e","_init_effectChildren","_init_extra_effectChildren","_init_estimatedSize","_init_extra_estimatedSize","_init_lodLevel","_init_extra_lodLevel","_init_mute","_init_extra_mute","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_dynamicLOD","_init_extra_dynamicLOD","_init_scaling","_init_extra_scaling","_init_rotation","_init_extra_rotation","_init_translation","_init_extra_translation","_init_duration","_init_extra_duration","_init_secondaryLightingEmissiveColor","_init_extra_secondaryLightingEmissiveColor","_init_curveSets","_init_extra_curveSets","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_observers","_init_extra_observers","_init_rotationCurve","_init_extra_rotationCurve","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_translationCurve","_init_extra_translationCurve","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","float32","int32","schema","enum","notify","readwrite","boolean","string","vec3","quat","color","model","impl","adapted","reason","carbon","method","implemented","noop","effectChildren","estimatedSize","lodLevel","Tr2Lod","TR2_LOD_HIGH","mute","display","name","dynamicLOD","scaling","fromValues","rotation","create","translation","duration","secondaryLightingEmissiveColor","vec4","curveSets","lights","externalParameters","controllers","observers","rotationCurve","secondaryLightingSphereRadius","boundingSphereCenter","boundingSphereRadius","modelTranslationCurve","modelRotationCurve","translationCurve","Map","mat4","Initialize","controller","IsLinked","Link","AddController","push","RemoveController","index","indexOf","splice","Unlink","UpdateSyncronous","updateContext","time","UpdateWorldTransform","fromRotationTranslationScale","multiply","observer","Update","length","params","child","UpdateAsyncronous","frequency","threshold","Math","min","UpdateControllers","curveSet","controllerUpdateFrequency","UpdateVisibility","parentTransform","GetBoundingSphere","sph3","transformMat4","frustum","GetFrustum","IsSphereVisible","Number","GetPixelSizeAccross","oldLod","TR2_LOD_LOW","medium","low","TR2_LOD_MEDIUM","GetRenderables","out","ChangeLOD","updateFrequency","set","GetBoundingSphereRadius","fromRotationTranslation","UpdateModelCenterWorldPosition","GetModelCenterWorldPosition","GetLocalBoundingBox","_min","_max","GetLocalToWorldTransform","copy","RegisterWithQuadRenderer","quadRenderer","AddQuadsToQuadRenderer","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","Register","UnRegisterComponents","UnRegister","GetLights","lightManager","transform","scale","hypot","light","AddLight","ClearLights","GetPerObjectStructs","vsData","EveSpaceObjectVSData","psData","EveSpaceObjectPSData","shipData","RegisterSecondaryLightSource","manager","subarray","UnregisterSecondaryLightSource","Start","Play","PlayAllCurveSets","PlayCurveSets","Stop","StopAllCurveSets","StopCurveSets","GetDamageLocatorCount","GetDamageLocatorPosition","_index","_inWorldSpace","GetDamageLocatorDirection","GetImpactPosition","locator","_posPrev","posNow","epsilon","squaredDistance","HasImpactConfigurationShield","GetClosestDamageLocatorIndex","_position","GetGoodDamageLocatorIndex","GetRadius","CreateImpact","_damageLocatorIndex","_direction","_lifeTime","_size","UpdateImpact","_out","_impactIndex","GetWorldPosition","GetWorldRotation","getRotation","normalize","GetMissPosition","hit","source","subtract","directionLength","scaleAndAdd","dot","offsetLength","GetChildren","SetTransform","getScaling","getTranslation","PlayCurveSet","rangeName","target","String","GetName","PlayTimeRange","ResetTimeRange","StopCurveSet","UpdateCurveSet","GetCurveSetDuration","max","GetMaxCurveDuration","GetRangeDuration","GetDebugOptions","options","Set","add","RenderDebugInfo","renderer","HasOption","DrawSphere","SetControllerVariable","value","key","next","SetVariable","HandleControllerEvent","eventName","HandleEvent","StartControllers","GetEffectChildByName","AddToEffectChildrenList","RemoveFromEffectChildrenList","SetShaderOption","FindSoundEmitter","GetObserver","emitter","AddObserver","SetMute","isMute","FreezeHighDetailMesh","SetProceduralContainerVariable","#CreateChildUpdateParams","EveChildUpdateParams","spaceObjectParent","isVisible","localToWorldTransform","#ApplyControllerVariables","variables","methodName","setter","call","#GetContextValue","context","propertyNames","propertyName","undefined","#UpdateCurve","curve","fallback","result","GetValueAt","Array","isArray","ArrayBuffer","isView","#ZeroNumericRecord","record","Object","entries","fill","constructor"],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ new class extends _identity {
|
|
|
16
16
|
} = _applyDecs2311(this, [type.define({
|
|
17
17
|
className: "EveMobile",
|
|
18
18
|
family: "eve/spaceObject"
|
|
19
|
-
})], [[[io, io.notify, io, io.persist, void 0, type.list("EveTurretSet")], 16, "turretSets"], [[io, io.read, type, type.uint32], 16, "ActiveTurretCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("List notifications are represented by a direct browser callback; registry ownership remains runtime-engine work.")], 18, "OnListModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Authored EveLocator2 transforms and optional animation-updater bone transforms replace Carbon's locator-type pointer surface.")], 18, "RebuildTurretPositions"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActiveTurretCount"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animated locator transforms use an optional animation-updater bone contract; all turret state updates remain in Trinity.")], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's native ParentData constant buffers collapse to the portable parent transform required by turret graph updates.")], 18, "UpdateTurretsAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalBoundingBox"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "DisplayChildren"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretTransform"]], 0, void 0, _EveSpaceObject));
|
|
19
|
+
})], [[[io, io.notify, io, io.persist, void 0, type.list("EveTurretSet")], 16, "turretSets"], [[io, io.read, type, type.uint32], 16, "ActiveTurretCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("List notifications are represented by a direct browser callback; registry ownership remains runtime-engine work.")], 18, "OnListModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretLocatorIndex"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Authored EveLocator2 transforms and optional animation-updater bone transforms replace Carbon's locator-type pointer surface.")], 18, "RebuildTurretPositions"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretLocatorCount"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetActiveTurretCount"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Animated locator transforms use an optional animation-updater bone contract; all turret state updates remain in Trinity.")], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon's native ParentData constant buffers collapse to the portable parent transform required by turret graph updates.")], 18, "UpdateTurretsAsyncronous"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLocalBoundingBox"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "DisplayChildren"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetTurretTransform"]], 0, void 0, _EveSpaceObject));
|
|
20
20
|
}
|
|
21
21
|
turretSets = (_initProto(this), _init_turretSets(this, []));
|
|
22
22
|
ActiveTurretCount = (_init_extra_turretSets(this), _init_ActiveTurretCount(this, 0));
|
|
@@ -31,6 +31,30 @@ new class extends _identity {
|
|
|
31
31
|
OnListModified() {
|
|
32
32
|
this.RebuildTurretPositions();
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
/** Carbon EveMobile::RegisterComponents (cpp:109-120): base registration,
|
|
36
|
+
* then forwards the turret sets. Gate m_display. */
|
|
37
|
+
RegisterComponents() {
|
|
38
|
+
super.RegisterComponents();
|
|
39
|
+
const registry = this.GetComponentRegistry();
|
|
40
|
+
if (registry && this.display) {
|
|
41
|
+
for (const turretSet of this.turretSets) {
|
|
42
|
+
turretSet?.Register?.(registry);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Carbon EveMobile::UnRegisterComponents (cpp:126-138): base, then forwards
|
|
48
|
+
* the turret sets without re-checking display. */
|
|
49
|
+
UnRegisterComponents() {
|
|
50
|
+
super.UnRegisterComponents();
|
|
51
|
+
const registry = this.GetComponentRegistry();
|
|
52
|
+
if (registry) {
|
|
53
|
+
for (const turretSet of this.turretSets) {
|
|
54
|
+
turretSet?.UnRegister?.(registry);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
34
58
|
GetTurretLocatorIndex(turretSetIndex, slotIndex) {
|
|
35
59
|
return this.#turretSetsLocatorInfo[turretSetIndex]?.locators?.[slotIndex]?.index ?? 0;
|
|
36
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveMobile.js","sources":["../../../../src/eve/spaceObject/EveMobile.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveMobile.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveMobile.cpp\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveTurretSet } from \"../attachment/turrets/EveTurretSet.js\";\nimport { EveSpaceObject2 } from \"./EveSpaceObject2.js\";\n\n\n@type.define({ className: \"EveMobile\", family: \"eve/spaceObject\" })\nexport class EveMobile extends EveSpaceObject2\n{\n @io.notify\n @io.persist\n @type.list(\"EveTurretSet\")\n turretSets = [];\n\n @io.read\n @type.uint32\n ActiveTurretCount = 0;\n\n #turretSetsLocatorInfo = [];\n #turretLocatorCountingInfo = new Map();\n\n @carbon.method\n @impl.implemented\n Initialize()\n {\n super.Initialize();\n this.#resetTurretLocatorCounter(true);\n this.RebuildTurretPositions();\n return true;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"List notifications are represented by a direct browser callback; registry ownership remains runtime-engine work.\")\n OnListModified()\n {\n this.RebuildTurretPositions();\n }\n\n @carbon.method\n @impl.implemented\n GetTurretLocatorIndex(turretSetIndex, slotIndex)\n {\n return this.#turretSetsLocatorInfo[turretSetIndex]?.locators?.[slotIndex]?.index ?? 0;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Authored EveLocator2 transforms and optional animation-updater bone transforms replace Carbon's locator-type pointer surface.\")\n RebuildTurretPositions()\n {\n this.#turretSetsLocatorInfo.length = 0;\n this.#resetTurretLocatorCounter(false);\n const records = this.#locatorRecords();\n for (const turretSet of this.turretSets)\n {\n if (!turretSet) continue;\n let name = String(turretSet.locatorName ?? \"\");\n let turretInName = name.includes(\"_turret_\");\n let locatorNumber = 0;\n if (!turretInName)\n {\n let counting = this.#getTurretLocatorCountingInfo(name);\n if (!counting)\n {\n name = \"locator_turret_\";\n counting = this.#getTurretLocatorCountingInfo(name);\n turretInName = true;\n }\n if (!counting)\n {\n this.#turretSetsLocatorInfo.push({ type: \"none\", locators: [] });\n continue;\n }\n locatorNumber = counting.current;\n if (locatorNumber > counting.total)\n {\n if (!turretInName)\n {\n name = \"locator_turret_\";\n counting = this.#getTurretLocatorCountingInfo(name);\n turretInName = true;\n }\n if (!counting || counting.current > counting.total)\n {\n this.#turretSetsLocatorInfo.push({ type: \"none\", locators: [] });\n continue;\n }\n locatorNumber = counting.current;\n }\n }\n if (turretInName) locatorNumber = Number(turretSet.slotNumber) | 0;\n const baseName = `${name}${locatorNumber}`;\n const matched = records\n .filter(record => record.name.startsWith(baseName))\n .sort((a, b) => a.name.localeCompare(b.name));\n const locatorInfo = { type: matched.some(record => record.type === \"bone\") ? \"bone\" : \"locator\", locators: [] };\n for (let index = 0; index < matched.length && index < EveTurretSet.MAX_TURRETS_PER_SET; index++)\n {\n const record = matched[index];\n const transform = this.#getLocatorRecordTransform(record, EveMobile.#locatorTransform);\n if (!transform) continue;\n turretSet.SetLocalTransform?.(index, transform);\n locatorInfo.locators.push(record);\n }\n this.#turretSetsLocatorInfo.push(locatorInfo);\n const counter = this.#turretLocatorCountingInfo.get(name);\n if (counter) counter.currentCount++;\n }\n return true;\n }\n\n @carbon.method\n @impl.implemented\n GetTurretLocatorCount()\n {\n let foundA = 0;\n let foundB = 0;\n for (const record of this.#locatorRecords())\n {\n const match = /^locator_turret_(\\d+)([ab])$/.exec(record.name);\n if (!match) continue;\n const index = Number(match[1]);\n if (!(index > 0 && index <= 32)) continue;\n if (match[2] === \"a\") foundA |= 1 << (index - 1);\n else foundB |= 1 << (index - 1);\n }\n if (foundA !== foundB && foundB) return 0;\n let count = 0;\n while (foundA & 1)\n {\n count++;\n foundA >>>= 1;\n }\n return count;\n }\n\n @carbon.method\n @impl.implemented\n GetActiveTurretCount()\n {\n return this.ActiveTurretCount;\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Animated locator transforms use an optional animation-updater bone contract; all turret state updates remain in Trinity.\")\n UpdateSyncronous(context)\n {\n super.UpdateSyncronous(context);\n let activeCount = 0;\n for (let setIndex = 0; setIndex < this.turretSets.length; setIndex++)\n {\n const turretSet = this.turretSets[setIndex];\n if (!turretSet) continue;\n if (turretSet.state > EveTurretSet.State.STATE_TARGETING) activeCount++;\n const locatorInfo = this.#turretSetsLocatorInfo[setIndex];\n if (locatorInfo?.type === \"bone\")\n {\n for (let turretIndex = 0; turretIndex < locatorInfo.locators.length; turretIndex++)\n {\n const transform = this.#getLocatorRecordTransform(locatorInfo.locators[turretIndex], EveMobile.#locatorTransform);\n if (transform) turretSet.SetLocalTransform?.(turretIndex, transform);\n }\n turretSet.UpdateTurretTransforms?.(this.GetTurretTransform(turretSet.swarmID));\n }\n turretSet.UpdateSyncronous?.(context, this.GetTurretTransform(turretSet.swarmID));\n }\n this.ActiveTurretCount = activeCount;\n return true;\n }\n\n @carbon.method\n @impl.implemented\n UpdateAsyncronous(context)\n {\n super.UpdateAsyncronous(context);\n return this.UpdateTurretsAsyncronous(context);\n }\n\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's native ParentData constant buffers collapse to the portable parent transform required by turret graph updates.\")\n UpdateTurretsAsyncronous(context)\n {\n for (const turretSet of this.turretSets) turretSet?.UpdateAsyncronous?.(context, { transform: this.GetTurretTransform(turretSet.swarmID) });\n return true;\n }\n\n @carbon.method\n @impl.implemented\n UpdateVisibility(context, _parentTransform = EveMobile.#identity)\n {\n const visible = super.UpdateVisibility(context, _parentTransform);\n if (!this.display) return false;\n for (const turretSet of this.turretSets) turretSet?.UpdateVisibility?.(context);\n return visible;\n }\n\n @carbon.method\n @impl.implemented\n GetRenderables(out = [])\n {\n if (!this.display) return out;\n super.GetRenderables(out);\n for (const turretSet of this.turretSets) turretSet?.GetRenderables?.(out);\n return out;\n }\n\n @carbon.method\n @impl.implemented\n GetLocalBoundingBox(outMin, outMax)\n {\n const returnObject = !outMin || !outMax;\n outMin ??= vec3.create();\n outMax ??= vec3.create();\n const result = super.GetLocalBoundingBox(outMin, outMax);\n if (result === false) return false;\n for (const turretSet of this.turretSets)\n {\n if (turretSet?.GetLocalBoundingBox?.(EveMobile.#boundsMin, EveMobile.#boundsMax))\n {\n vec3.min(outMin, outMin, EveMobile.#boundsMin);\n vec3.max(outMax, outMax, EveMobile.#boundsMax);\n }\n }\n return returnObject ? { min: outMin, max: outMax } : true;\n }\n\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n super.SetControllerVariable(name, value);\n for (const turretSet of this.turretSets) turretSet?.SetControllerVariable?.(name, value);\n }\n\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n super.HandleControllerEvent(name);\n for (const turretSet of this.turretSets) turretSet?.HandleControllerEvent?.(name);\n }\n\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n super.StartControllers();\n for (const turretSet of this.turretSets) turretSet?.StartControllers?.();\n }\n\n @carbon.method\n @impl.implemented\n DisplayChildren()\n {\n return this.activationStrength > 0.5;\n }\n\n @carbon.method\n @impl.implemented\n GetTurretTransform(_turretSetIndex = 0)\n {\n return this.worldTransform;\n }\n\n #resetTurretLocatorCounter(updateTotal)\n {\n for (const record of this.#locatorRecords())\n {\n const separator = record.name.lastIndexOf(\"_\");\n if (separator < 0) continue;\n const prefix = record.name.slice(0, separator + 1);\n let info = this.#turretLocatorCountingInfo.get(prefix);\n if (!info)\n {\n info = { currentCount: 0, totalCount: 0 };\n this.#turretLocatorCountingInfo.set(prefix, info);\n }\n else info.currentCount = 0;\n if (updateTotal)\n {\n const number = Number.parseInt(record.name.slice(separator + 1, separator + 2), 10) || 0;\n info.totalCount = Math.max(info.totalCount, number);\n }\n }\n }\n\n #getTurretLocatorCountingInfo(name)\n {\n const info = this.#turretLocatorCountingInfo.get(name);\n return info ? { current: info.currentCount + 1, total: info.totalCount } : null;\n }\n\n #locatorRecords()\n {\n const records = [];\n for (let index = 0; index < this.locators.length; index++)\n {\n const locator = this.locators[index];\n const name = String(locator?.GetName?.() ?? locator?.name ?? \"\");\n if (name) records.push({ name, type: \"locator\", index, value: locator });\n }\n const updater = this.animationUpdater;\n const names = updater?.GetBoneNames?.() ?? updater?.boneNames ?? updater?.GetSkeleton?.()?.bones ?? updater?.skeleton?.bones ?? [];\n for (let index = 0; index < names.length; index++)\n {\n const value = names[index];\n const name = String(value?.name ?? value ?? \"\");\n if (name && !records.some(record => record.name === name)) records.push({ name, type: \"bone\", index, value });\n }\n return records;\n }\n\n #getLocatorRecordTransform(record, out)\n {\n if (record.type === \"bone\")\n {\n const value = this.animationUpdater?.GetBoneWorldTransform?.(record.name, out)\n ?? this.animationUpdater?.GetBoneTransform?.(record.index, out);\n if (value === false || value === null || value === undefined) return null;\n if (value?.length === 16 && value !== out) mat4.copy(out, value);\n return out;\n }\n const value = record.value?.GetTransform?.() ?? record.value?.transform;\n return value?.length === 16 ? mat4.copy(out, value) : null;\n }\n\n static #identity = mat4.create();\n static #locatorTransform = mat4.create();\n static #boundsMin = vec3.create();\n static #boundsMax = vec3.create();\n}\n"],"names":["_EveMobile","_identity","EveMobile","EveSpaceObject2","e","_init_turretSets","_init_extra_turretSets","_init_ActiveTurretCount","_init_extra_ActiveTurretCount","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","list","read","uint32","carbon","method","impl","implemented","adapted","reason","turretSets","ActiveTurretCount","Map","Initialize","RebuildTurretPositions","OnListModified","GetTurretLocatorIndex","turretSetIndex","slotIndex","locators","index","length","records","turretSet","name","String","locatorName","turretInName","includes","locatorNumber","counting","push","current","total","Number","slotNumber","baseName","matched","filter","record","startsWith","sort","a","b","localeCompare","locatorInfo","some","EveTurretSet","MAX_TURRETS_PER_SET","transform","SetLocalTransform","counter","get","currentCount","GetTurretLocatorCount","foundA","foundB","match","exec","count","GetActiveTurretCount","UpdateSyncronous","context","activeCount","setIndex","state","State","STATE_TARGETING","turretIndex","UpdateTurretTransforms","GetTurretTransform","swarmID","UpdateAsyncronous","UpdateTurretsAsyncronous","UpdateVisibility","_parentTransform","visible","display","GetRenderables","out","GetLocalBoundingBox","outMin","outMax","returnObject","vec3","create","result","min","max","SetControllerVariable","value","HandleControllerEvent","StartControllers","DisplayChildren","activationStrength","_turretSetIndex","worldTransform","#resetTurretLocatorCounter","updateTotal","separator","lastIndexOf","prefix","slice","info","totalCount","set","number","parseInt","Math","#getTurretLocatorCountingInfo","#locatorRecords","locator","GetName","updater","animationUpdater","names","GetBoneNames","boneNames","GetSkeleton","bones","skeleton","#getLocatorRecordTransform","GetBoneWorldTransform","GetBoneTransform","undefined","mat4","copy","GetTransform","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveMobile.js","sources":["../../../../src/eve/spaceObject/EveMobile.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveMobile.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveMobile.cpp\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveTurretSet } from \"../attachment/turrets/EveTurretSet.js\";\r\nimport { EveSpaceObject2 } from \"./EveSpaceObject2.js\";\r\n\r\n\r\n@type.define({ className: \"EveMobile\", family: \"eve/spaceObject\" })\r\nexport class EveMobile extends EveSpaceObject2\r\n{\r\n @io.notify\r\n @io.persist\r\n @type.list(\"EveTurretSet\")\r\n turretSets = [];\r\n\r\n @io.read\r\n @type.uint32\r\n ActiveTurretCount = 0;\r\n\r\n #turretSetsLocatorInfo = [];\r\n #turretLocatorCountingInfo = new Map();\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Initialize()\r\n {\r\n super.Initialize();\r\n this.#resetTurretLocatorCounter(true);\r\n this.RebuildTurretPositions();\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"List notifications are represented by a direct browser callback; registry ownership remains runtime-engine work.\")\r\n OnListModified()\r\n {\r\n this.RebuildTurretPositions();\r\n }\r\n\r\n /** Carbon EveMobile::RegisterComponents (cpp:109-120): base registration,\r\n * then forwards the turret sets. Gate m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n super.RegisterComponents();\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n for (const turretSet of this.turretSets)\r\n {\r\n turretSet?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveMobile::UnRegisterComponents (cpp:126-138): base, then forwards\r\n * the turret sets without re-checking display. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n super.UnRegisterComponents();\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const turretSet of this.turretSets)\r\n {\r\n turretSet?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetTurretLocatorIndex(turretSetIndex, slotIndex)\r\n {\r\n return this.#turretSetsLocatorInfo[turretSetIndex]?.locators?.[slotIndex]?.index ?? 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Authored EveLocator2 transforms and optional animation-updater bone transforms replace Carbon's locator-type pointer surface.\")\r\n RebuildTurretPositions()\r\n {\r\n this.#turretSetsLocatorInfo.length = 0;\r\n this.#resetTurretLocatorCounter(false);\r\n const records = this.#locatorRecords();\r\n for (const turretSet of this.turretSets)\r\n {\r\n if (!turretSet) continue;\r\n let name = String(turretSet.locatorName ?? \"\");\r\n let turretInName = name.includes(\"_turret_\");\r\n let locatorNumber = 0;\r\n if (!turretInName)\r\n {\r\n let counting = this.#getTurretLocatorCountingInfo(name);\r\n if (!counting)\r\n {\r\n name = \"locator_turret_\";\r\n counting = this.#getTurretLocatorCountingInfo(name);\r\n turretInName = true;\r\n }\r\n if (!counting)\r\n {\r\n this.#turretSetsLocatorInfo.push({ type: \"none\", locators: [] });\r\n continue;\r\n }\r\n locatorNumber = counting.current;\r\n if (locatorNumber > counting.total)\r\n {\r\n if (!turretInName)\r\n {\r\n name = \"locator_turret_\";\r\n counting = this.#getTurretLocatorCountingInfo(name);\r\n turretInName = true;\r\n }\r\n if (!counting || counting.current > counting.total)\r\n {\r\n this.#turretSetsLocatorInfo.push({ type: \"none\", locators: [] });\r\n continue;\r\n }\r\n locatorNumber = counting.current;\r\n }\r\n }\r\n if (turretInName) locatorNumber = Number(turretSet.slotNumber) | 0;\r\n const baseName = `${name}${locatorNumber}`;\r\n const matched = records\r\n .filter(record => record.name.startsWith(baseName))\r\n .sort((a, b) => a.name.localeCompare(b.name));\r\n const locatorInfo = { type: matched.some(record => record.type === \"bone\") ? \"bone\" : \"locator\", locators: [] };\r\n for (let index = 0; index < matched.length && index < EveTurretSet.MAX_TURRETS_PER_SET; index++)\r\n {\r\n const record = matched[index];\r\n const transform = this.#getLocatorRecordTransform(record, EveMobile.#locatorTransform);\r\n if (!transform) continue;\r\n turretSet.SetLocalTransform?.(index, transform);\r\n locatorInfo.locators.push(record);\r\n }\r\n this.#turretSetsLocatorInfo.push(locatorInfo);\r\n const counter = this.#turretLocatorCountingInfo.get(name);\r\n if (counter) counter.currentCount++;\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetTurretLocatorCount()\r\n {\r\n let foundA = 0;\r\n let foundB = 0;\r\n for (const record of this.#locatorRecords())\r\n {\r\n const match = /^locator_turret_(\\d+)([ab])$/.exec(record.name);\r\n if (!match) continue;\r\n const index = Number(match[1]);\r\n if (!(index > 0 && index <= 32)) continue;\r\n if (match[2] === \"a\") foundA |= 1 << (index - 1);\r\n else foundB |= 1 << (index - 1);\r\n }\r\n if (foundA !== foundB && foundB) return 0;\r\n let count = 0;\r\n while (foundA & 1)\r\n {\r\n count++;\r\n foundA >>>= 1;\r\n }\r\n return count;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetActiveTurretCount()\r\n {\r\n return this.ActiveTurretCount;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Animated locator transforms use an optional animation-updater bone contract; all turret state updates remain in Trinity.\")\r\n UpdateSyncronous(context)\r\n {\r\n super.UpdateSyncronous(context);\r\n let activeCount = 0;\r\n for (let setIndex = 0; setIndex < this.turretSets.length; setIndex++)\r\n {\r\n const turretSet = this.turretSets[setIndex];\r\n if (!turretSet) continue;\r\n if (turretSet.state > EveTurretSet.State.STATE_TARGETING) activeCount++;\r\n const locatorInfo = this.#turretSetsLocatorInfo[setIndex];\r\n if (locatorInfo?.type === \"bone\")\r\n {\r\n for (let turretIndex = 0; turretIndex < locatorInfo.locators.length; turretIndex++)\r\n {\r\n const transform = this.#getLocatorRecordTransform(locatorInfo.locators[turretIndex], EveMobile.#locatorTransform);\r\n if (transform) turretSet.SetLocalTransform?.(turretIndex, transform);\r\n }\r\n turretSet.UpdateTurretTransforms?.(this.GetTurretTransform(turretSet.swarmID));\r\n }\r\n turretSet.UpdateSyncronous?.(context, this.GetTurretTransform(turretSet.swarmID));\r\n }\r\n this.ActiveTurretCount = activeCount;\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n UpdateAsyncronous(context)\r\n {\r\n super.UpdateAsyncronous(context);\r\n return this.UpdateTurretsAsyncronous(context);\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's native ParentData constant buffers collapse to the portable parent transform required by turret graph updates.\")\r\n UpdateTurretsAsyncronous(context)\r\n {\r\n for (const turretSet of this.turretSets) turretSet?.UpdateAsyncronous?.(context, { transform: this.GetTurretTransform(turretSet.swarmID) });\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n UpdateVisibility(context, _parentTransform = EveMobile.#identity)\r\n {\r\n const visible = super.UpdateVisibility(context, _parentTransform);\r\n if (!this.display) return false;\r\n for (const turretSet of this.turretSets) turretSet?.UpdateVisibility?.(context);\r\n return visible;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display) return out;\r\n super.GetRenderables(out);\r\n for (const turretSet of this.turretSets) turretSet?.GetRenderables?.(out);\r\n return out;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalBoundingBox(outMin, outMax)\r\n {\r\n const returnObject = !outMin || !outMax;\r\n outMin ??= vec3.create();\r\n outMax ??= vec3.create();\r\n const result = super.GetLocalBoundingBox(outMin, outMax);\r\n if (result === false) return false;\r\n for (const turretSet of this.turretSets)\r\n {\r\n if (turretSet?.GetLocalBoundingBox?.(EveMobile.#boundsMin, EveMobile.#boundsMax))\r\n {\r\n vec3.min(outMin, outMin, EveMobile.#boundsMin);\r\n vec3.max(outMax, outMax, EveMobile.#boundsMax);\r\n }\r\n }\r\n return returnObject ? { min: outMin, max: outMax } : true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n super.SetControllerVariable(name, value);\r\n for (const turretSet of this.turretSets) turretSet?.SetControllerVariable?.(name, value);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n super.HandleControllerEvent(name);\r\n for (const turretSet of this.turretSets) turretSet?.HandleControllerEvent?.(name);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n super.StartControllers();\r\n for (const turretSet of this.turretSets) turretSet?.StartControllers?.();\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n DisplayChildren()\r\n {\r\n return this.activationStrength > 0.5;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetTurretTransform(_turretSetIndex = 0)\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n #resetTurretLocatorCounter(updateTotal)\r\n {\r\n for (const record of this.#locatorRecords())\r\n {\r\n const separator = record.name.lastIndexOf(\"_\");\r\n if (separator < 0) continue;\r\n const prefix = record.name.slice(0, separator + 1);\r\n let info = this.#turretLocatorCountingInfo.get(prefix);\r\n if (!info)\r\n {\r\n info = { currentCount: 0, totalCount: 0 };\r\n this.#turretLocatorCountingInfo.set(prefix, info);\r\n }\r\n else info.currentCount = 0;\r\n if (updateTotal)\r\n {\r\n const number = Number.parseInt(record.name.slice(separator + 1, separator + 2), 10) || 0;\r\n info.totalCount = Math.max(info.totalCount, number);\r\n }\r\n }\r\n }\r\n\r\n #getTurretLocatorCountingInfo(name)\r\n {\r\n const info = this.#turretLocatorCountingInfo.get(name);\r\n return info ? { current: info.currentCount + 1, total: info.totalCount } : null;\r\n }\r\n\r\n #locatorRecords()\r\n {\r\n const records = [];\r\n for (let index = 0; index < this.locators.length; index++)\r\n {\r\n const locator = this.locators[index];\r\n const name = String(locator?.GetName?.() ?? locator?.name ?? \"\");\r\n if (name) records.push({ name, type: \"locator\", index, value: locator });\r\n }\r\n const updater = this.animationUpdater;\r\n const names = updater?.GetBoneNames?.() ?? updater?.boneNames ?? updater?.GetSkeleton?.()?.bones ?? updater?.skeleton?.bones ?? [];\r\n for (let index = 0; index < names.length; index++)\r\n {\r\n const value = names[index];\r\n const name = String(value?.name ?? value ?? \"\");\r\n if (name && !records.some(record => record.name === name)) records.push({ name, type: \"bone\", index, value });\r\n }\r\n return records;\r\n }\r\n\r\n #getLocatorRecordTransform(record, out)\r\n {\r\n if (record.type === \"bone\")\r\n {\r\n const value = this.animationUpdater?.GetBoneWorldTransform?.(record.name, out)\r\n ?? this.animationUpdater?.GetBoneTransform?.(record.index, out);\r\n if (value === false || value === null || value === undefined) return null;\r\n if (value?.length === 16 && value !== out) mat4.copy(out, value);\r\n return out;\r\n }\r\n const value = record.value?.GetTransform?.() ?? record.value?.transform;\r\n return value?.length === 16 ? mat4.copy(out, value) : null;\r\n }\r\n\r\n static #identity = mat4.create();\r\n static #locatorTransform = mat4.create();\r\n static #boundsMin = vec3.create();\r\n static #boundsMax = vec3.create();\r\n}\r\n"],"names":["_EveMobile","_identity","EveMobile","EveSpaceObject2","e","_init_turretSets","_init_extra_turretSets","_init_ActiveTurretCount","_init_extra_ActiveTurretCount","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","list","read","uint32","carbon","method","impl","implemented","adapted","reason","turretSets","ActiveTurretCount","Map","Initialize","RebuildTurretPositions","OnListModified","RegisterComponents","registry","GetComponentRegistry","display","turretSet","Register","UnRegisterComponents","UnRegister","GetTurretLocatorIndex","turretSetIndex","slotIndex","locators","index","length","records","name","String","locatorName","turretInName","includes","locatorNumber","counting","push","current","total","Number","slotNumber","baseName","matched","filter","record","startsWith","sort","a","b","localeCompare","locatorInfo","some","EveTurretSet","MAX_TURRETS_PER_SET","transform","SetLocalTransform","counter","get","currentCount","GetTurretLocatorCount","foundA","foundB","match","exec","count","GetActiveTurretCount","UpdateSyncronous","context","activeCount","setIndex","state","State","STATE_TARGETING","turretIndex","UpdateTurretTransforms","GetTurretTransform","swarmID","UpdateAsyncronous","UpdateTurretsAsyncronous","UpdateVisibility","_parentTransform","visible","GetRenderables","out","GetLocalBoundingBox","outMin","outMax","returnObject","vec3","create","result","min","max","SetControllerVariable","value","HandleControllerEvent","StartControllers","DisplayChildren","activationStrength","_turretSetIndex","worldTransform","#resetTurretLocatorCounter","updateTotal","separator","lastIndexOf","prefix","slice","info","totalCount","set","number","parseInt","Math","#getTurretLocatorCountingInfo","#locatorRecords","locator","GetName","updater","animationUpdater","names","GetBoneNames","boneNames","GetSkeleton","bones","skeleton","#getLocatorRecordTransform","GetBoneWorldTransform","GetBoneTransform","undefined","mat4","copy","GetTransform","constructor"],"mappings":"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"}
|