@carbonenginejs/runtime-trinity 0.7.0 → 0.8.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/eve/scene/EveSpaceScene.js +287 -1
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/eve/spaceObject/EveTransform.js +43 -1
- package/dist/eve/spaceObject/EveTransform.js.map +1 -1
- package/dist/trinityCore/rawData/CjsPerFrameLayouts.js +517 -0
- package/dist/trinityCore/rawData/CjsPerFrameLayouts.js.map +1 -0
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js +9 -150
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js.map +1 -1
- package/dist/trinityCore/rawData/RawData.js +31 -3
- package/dist/trinityCore/rawData/RawData.js.map +1 -1
- package/dist/trinityCore/rawData/constantLayout.js +175 -0
- package/dist/trinityCore/rawData/constantLayout.js.map +1 -0
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSpaceScene.js","sources":["../../../../src/eve/scene/EveSpaceScene.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveSpaceScene.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveSpaceScene.cpp\n//\n// Hand-maintained (promoted from src/generated/eve/scene; the generator skips it\n// while this file exists). Fields mirror the generated schema shell; the\n// additions are the per-frame update driver ported from Carbon\n// EveSpaceScene::Update and the scene-owned EveUpdateContext member (Carbon\n// m_updateContext - protected, so absent from the Blue schema scan).\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\nimport { quat } from \"@carbonenginejs/runtime-utils/quat\";\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveComponentRegistry } from \"./components/EveComponentRegistry.js\";\nimport { Tr2PostProcess2 } from \"../../postProcess/Tr2PostProcess2.js\";\nimport { Tr2PostProcessAttributes } from \"../../postProcess/Tr2PostProcessAttributes.js\";\nimport { EveComponentType } from \"../EveComponentTypes.js\";\nimport { EveUpdateContext } from \"../EveUpdateContext.js\";\nimport { EveEffectRoot2 } from \"../spaceObject/EveEffectRoot2.js\";\nimport { convertProjectionCoordToWorldPickRay, screenToProjection } from \"../../trinityCore/pickRay.js\";\n\n\n// Module scratch for the per-frame sun-direction read (assume-dirty).\nconst sunDirectionScratch = vec3.create();\n\n// The scene-root parent transform for the visibility pass (Carbon\n// EveSpaceScene.cpp:1441 `const Matrix& identity = IdentityMatrix()`). Module\n// const, NEVER mutated - objects in m_objects are scene roots.\nconst IDENTITY = mat4.create();\n\n// ---------------------------------------------------------------------------\n// DRIVER-ORDER CONTRACT (per frame) - the CPU visibility/gather drive.\n// Carbon runs steps 5-12 inside EveSpaceScene::BeginRender/GatherBatches\n// (EveSpaceScene.cpp:1295-1427/1433-1525); CarbonEngineJS splits them into\n// scene-owned methods that an engine driver calls in this exact order:\n//\n// 1. Host stamps `updateContext.renderContext` (view -> derived inverse-view\n// + viewPos) and `updateContext.device`.\n// 2. Driver derives the frustum:\n// `frustum.DeriveFrustum(view, viewPos, projection, viewport)` from that\n// same renderContext state (Carbon cpp:476).\n// 3. `scene.StampFrameContext({ frustum, thresholds..., lodFactor,\n// raytracingEnabled })`.\n// 4. `scene.Update(realTime, simTime)` - internally ends with\n// `UpdatePostProcessAttributes()` then the sun-direction read (Carbon\n// cpp:584 -> 589).\n// 5. `scene.BlendLightingOverrides()` - BeginRender phase, before any gather\n// (Carbon cpp:1333, before GatherBatches cpp:1387).\n// 6. (engine) volumetrics `UpdateFogSettings(scene.componentRegistry,\n// scene.updateContext)` - engine reads \"FroxelFogSettings\"; not scene\n// work (cpp:1365-1370).\n// 7. `scene.UpdateVisibility(updateContext.renderContext\n// .GetInverseViewTransform())` - the cpp:1443-1467 block.\n// 8. `const renderables = scene.GetRenderables([])` - pre-culled\n// (cpp:1470-1507 minus impostors).\n// 9. `batchManager.Collect(renderables, reason, updateContext.renderContext)`\n// - with engine-registered collectors covering Carbon's [QUADS]\n// (cpp:1509-1511) and [INSTANCED] (cpp:1516-1520; the instanced collector\n// reads \"InstancedMeshProvider\" from `scene.componentRegistry`);\n// `Finalize` inside Collect = Carbon FinalizeBatches cpp:1522.\n// 10. `scene.GatherLights(lightManager)` - AFTER step 9 (Carbon cpp:1396-1416\n// runs after GatherBatches cpp:1387).\n// 10b. `scene.UpdateShLighting(objects)` - the LAST thing Carbon's gather does\n// (cpp:1524), so every receiver's secondary-lighting coefficients are\n// current for the frame being submitted. Skipped entirely when the scene\n// carries no shLightingManager.\n// 11. (driver/engine, optional) `for (const lf of scene.lensflares)\n// lf?.PrepareRender?.(frustum)` (cpp:1419-1422; the JS lensflare shell has\n// no method yet - pure no-op today).\n// 12. (engine) reads registry collections directly: \"ShadowCaster\" (cascade\n// gate cpp:614-621, RT push cpp:1544-1547), \"VolumetricRenderable\",\n// \"FroxelFogSettings\", \"MeshMorph\" (engine may call\n// `scene.componentRegistry.Clear(\"MeshMorph\")` after bake),\n// \"ReflectionRenderable\" (secondary gather cpp:1886-1895).\n//\n// One-shot registration trigger: after graph build/mutation call\n// `scene.ReregisterEntities()` - covers objects + backgroundObjects + planets\n// (entity-guarded) + cameraAttachmentParent (cpp:4064-4089, matching what\n// OnListModified registers incrementally, cpp:3435-3491). uiObjects are\n// intentionally excluded everywhere (cpp:3462 gate) - Carbon never registers\n// or culls them.\n// ---------------------------------------------------------------------------\n\n/** EveSpaceScene (eve/scene) - hand-maintained from schema shapeHash 571234b0.... */\n@type.define({ className: \"EveSpaceScene\", family: \"eve/scene\" })\nexport class EveSpaceScene extends CjsModel\n{\n\n /** m_visualizeMethod (EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @io.readwrite\n @type.int32\n @schema.enum(\"EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_envMap1ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap1ResPath = \"\";\n\n /** m_envMap2ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap2ResPath = \"\";\n\n /** m_envMap3ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap3ResPath = \"\";\n\n /** m_lowQualityNebulaResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n lowQualityNebulaResPath = \"\";\n\n /** m_lowQualityNebulaMixResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n lowQualityNebulaMixResPath = \"\";\n\n /** m_envMapResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMapResPath = \"\";\n\n /** m_fogColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n fogColor = vec4.create();\n\n /** m_sunData.DirWorld (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n sunDirection = vec3.create();\n\n /** m_ambientColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n ambientColor = vec4.create();\n\n /** m_shLightingManager (Tr2ShLightingManagerPtr) [PERSISTONLY] */\n @io.persistOnly\n @type.model(\"Tr2ShLightingManager\")\n shLightingManager = null;\n\n /** m_combinedPostProcessAttributes (Tr2PostProcessAttributesPtr) [READ] -\n * default-constructed like Carbon's ctor CreateInstance (cpp:297); refreshed\n * by UpdatePostProcessAttributes' re-export at MEDIUM_PRIORITY (cpp:407). */\n @io.read\n @type.objectRef(\"Tr2PostProcessAttributes\")\n combinedPostProcessAttributes = new Tr2PostProcessAttributes();\n\n /** m_dataTextureMgr (Tr2DataTextureManagerPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2DataTextureManager\")\n dataTextureMgr = null;\n\n /** m_dynamicObjectReflectionEnabled (bool) [READWRITE] */\n @io.readwrite\n @type.boolean\n dynamicObjectReflectionEnabled = true;\n\n /** m_componentRegistry (EveComponentRegistryPtr) [READ] */\n @io.read\n @type.objectRef(\"EveComponentRegistry\")\n componentRegistry = new EveComponentRegistry();\n\n /** m_cameraAttachmentParent (EveEffectRoot2Ptr) - protected Carbon scene\n * entity, default-constructed like Carbon's ctor CreateInstance (cpp:287, no\n * further setup applied). Consumers still optional-chain - deserialization\n * may null it. */\n @type.model(\"EveEffectRoot2\")\n cameraAttachmentParent = new EveEffectRoot2();\n\n /** m_postProcessDebug (BluePy) - protected Carbon debug payload. */\n @type.rawStruct(\"BluePy\")\n postProcessDebug = null;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_defaultDiffuseRoughness (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n defaultDiffuseRoughness = 1;\n\n /** m_fogStart (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogStart = 0;\n\n /** m_fogEnd (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogEnd = 0;\n\n /** m_reflectionIntensity (float) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.float32\n reflectionIntensity = 0;\n\n /** m_distanceFields (PEveDistanceFieldVector) [READ] */\n @io.read\n @type.list(\"EveDistanceField\")\n distanceFields = [];\n\n /** m_backgroundEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2Effect\")\n backgroundEffect = null;\n\n /** m_backgroundReflectionIntensity (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n backgroundReflectionIntensity = 1;\n\n /** m_nebulaIntensity (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n nebulaIntensity = 1;\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n display = true;\n\n /** m_backgroundRenderingEnabled (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n backgroundRenderingEnabled = false;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n update = true;\n\n /** m_impostorManager (Tr2ImpostorManagerPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2ImpostorManager\")\n impostorManager = null;\n\n /** m_lensflares (PEveLensflareVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLensflare\")\n lensflares = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_fogMax (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogMax = 0;\n\n /** m_staticParticles (PEveSceneStaticParticlesVector) [READ] */\n @io.read\n @type.list(\"EveSceneStaticParticles\")\n staticParticles = [];\n\n /** m_debugRenderer (Tr2DebugRendererPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2DebugRenderer\")\n debugRenderer = null;\n\n /** m_objects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n objects = [];\n\n /** m_uiObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n uiObjects = [];\n\n /** m_backgroundObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n backgroundObjects = [];\n\n /** m_planets (PEvePlanetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EvePlanet\")\n planets = [];\n\n /** m_rtManager (Tr2RaytracingManagerPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2RaytracingManager\")\n raytracingManager = null;\n\n /** m_reflectionBackLightingColor (Color) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.color\n reflectionBackLightingColor = vec4.fromValues(2, 2, 2, 2);\n\n /** m_reflectionBackLightingContrast (float) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.float32\n reflectionBackLightingContrast = 8;\n\n /** m_reflectionProbe (Tr2ReflectionProbePtr) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.objectRef(\"Tr2ReflectionProbe\")\n reflectionProbe = null;\n\n /** m_volumetricsRenderer (Tr2VolumetricsRendererPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2VolumetricsRenderer\")\n volumetricsRenderer = null;\n\n /** m_starfield (EveStarfieldPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"EveStarfield\")\n starfield = null;\n\n /** m_planetScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n planetScale = 1000000;\n\n /** m_planetCameraScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n planetCameraScale = 1000000;\n\n /** m_sssss (Tr2SSSSSPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2SSSSS\")\n subSurfaceScattering = null;\n\n /** m_shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.int32\n @schema.enum(\"ShadowQuality\")\n shadowQualitySetting = 3;\n\n /** m_sunColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n sunDiffuseColor = vec4.fromValues(1, 1, 1, 1);\n\n /** m_sunColorWithDynamicLights (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n sunDiffuseColorWithDynamicLights = vec4.fromValues(1, 1, 1, 1);\n\n /** m_envMapRotation (Quaternion) [READWRITE, PERSIST] */\n @io.persist\n @type.quat\n envMapRotation = quat.create();\n\n /** m_ballpark (IEveBallparkPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"IEveBallpark\")\n ballpark = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_sunBall (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriVectorFunction\")\n sunBall = null;\n\n /** m_sceneDefaultPostProcess (Tr2PostProcess2Ptr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2PostProcess2\")\n postprocess = null;\n\n /** m_virtualCameraSystem (EveVirtualCameraSystemPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"EveVirtualCameraSystem\")\n virtualCameraSystem = null;\n\n /** m_warpTunnel (IEveSpaceObject2Ptr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"IEveSpaceObject2\")\n warpTunnel = null;\n\n /** m_perFrameDebug (float) [READWRITE] */\n @io.readwrite\n @type.float32\n perFrameDebug = 0;\n\n /** m_cascadedShadowMap (Tr2ShadowMapPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2ShadowMap\")\n cascadedShadowMap = null;\n\n /** m_updateTime (Be::Time) [READ] */\n @io.read\n @type.float64\n updateTime = 0;\n\n /** m_useSunColorWithDynamicLights (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n useSunDiffuseColorWithDynamicLights = false;\n\n /** m_envMap1 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap1 = null;\n\n /** m_envMap2 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap2 = null;\n\n /** m_envMap3 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap3 = null;\n\n // Carbon m_updateContext (protected, absent from the Blue scan): the scene\n // owns ONE frame context, constructed once and re-stamped each Update. The\n // host/driver stamps updateContext.renderContext (camera view) + .device per\n // pass before calling Update - our explicit replacement for Carbon's\n // Tr2Renderer view statics.\n updateContext = new EveUpdateContext();\n\n // Carbon m_sceneDefaultPostProcessAttributes (EveSpaceScene.h:640, ctor\n // CreateInstance cpp:296): the scene default's attribute snapshot, refreshed\n // by UpdatePostProcessAttributes each frame.\n #sceneDefaultPostProcessAttributes = new Tr2PostProcessAttributes();\n\n // Carbon m_combinedPostProcess (EveSpaceScene.h:636): the merged output\n // post-process, lazily constructed on first combine (cpp:367-370).\n #combinedPostProcess = null;\n\n // Carbon m_currentSunColor / m_currentNebulaIntensity /\n // m_currentReflectionIntensity (EveSpaceScene.h:492-493/650, protected):\n // outputs of the BeginRender lighting-override blend (cpp:1360-1362).\n currentSunColor = vec4.create();\n\n currentNebulaIntensity = 0;\n\n currentReflectionIntensity = 0;\n\n // Carbon g_eveSpaceSceneDynamicLighting (registered setting\n // \"eveSpaceSceneDynamicLighting\", cpp:109-110, default false) - scoped to\n // the scene instead of a module global.\n dynamicLightingEnabled = false;\n\n // Carbon g_enablePostProcessDebugging (registered setting\n // \"enablePostProcessDebugging\", cpp:118-119, default false) - scoped to the\n // scene instead of a module global.\n enablePostProcessDebugging = false;\n\n /**\n * Stamps the per-frame frustum/threshold/LOD state onto the scene-owned\n * update context (Carbon EveSpaceScene::Update cpp:475-484, identical to the\n * already-updated fast path cpp:448-457). Carbon derives the frustum from\n * the Tr2Renderer view statics and reads the thresholds from console vars\n * divided by m_upscalingAmount (=1 by default, cpp:221); in CarbonEngineJS\n * the driver derives the frustum from the same renderContext state it\n * stamped and supplies the thresholds explicitly (pre-divided if it ever\n * upscales). Defaults are the Carbon console-var defaults (cpp:75-84).\n * The raytracing flag is Carbon's `m_shadowQuality == SHADOW_RAYTRACED &&\n * m_enableShadows` (cpp:457/484) - the driver computes it; the scene does\n * not. Stamps unconditionally: Carbon's same-frame fast path restamps\n * regardless of m_update (cpp:444-462); only the cold path skips stamping\n * when !m_update (cpp:466 precedes 475) - benign divergence.\n * @param {Object} [options]\n * @param {Object|null} [options.frustum] - a ready TriFrustum, held by reference\n * @param {Number} [options.visibilityThreshold]\n * @param {Number} [options.lowDetailThreshold]\n * @param {Number} [options.mediumDetailThreshold]\n * @param {Number} [options.highDetailThreshold]\n * @param {Number} [options.lodFactor]\n * @param {Boolean} [options.raytracingEnabled]\n */\n StampFrameContext({\n frustum = null,\n visibilityThreshold = 5,\n lowDetailThreshold = 100,\n mediumDetailThreshold = 400,\n highDetailThreshold = 800,\n lodFactor = 1,\n raytracingEnabled = false\n } = {})\n {\n const context = this.updateContext;\n context.SetFrustum(frustum);\n context.SetHighDetailThreshold(highDetailThreshold);\n context.SetMediumDetailThreshold(mediumDetailThreshold);\n context.SetLowDetailThreshold(lowDetailThreshold);\n context.SetVisibilityThreshold(visibilityThreshold);\n context.SetLodFactor(lodFactor);\n context.raytracingEnabled = !!raytracingEnabled;\n }\n\n /**\n * Per-frame scene update, ported from Carbon EveSpaceScene::Update: stamps the\n * scene-owned frame context (time, origin, data-texture manager), then drives\n * every collection in Carbon's order - background objects, warp tunnel,\n * starfield, static particles, data textures, distance fields, lensflares,\n * virtual camera system, curve sets, then all space/UI objects synchronous\n * first and asynchronous second (Carbon parallelizes the async pass on a task\n * group; JS runs it sequentially). Then combines the post-process attributes\n * (cpp:584) and finally reads the sun direction from the sun ball\n * (cpp:589-596).\n *\n * Adapted - deferred vs Carbon: the recording-frame dedup fast path,\n * frustum/threshold/LOD/raytracing stamping (now the driver's job via\n * StampFrameContext, called BEFORE Update), planet update (planet\n * view-matrix swap unported), and main-thread action flush (N/A).\n * @param {Number} realTime\n * @param {Number} simTime\n */\n @carbon.method\n @impl.adapted\n Update(realTime, simTime)\n {\n if (!this.update)\n {\n return;\n }\n\n const context = this.updateContext;\n context.SetTime(simTime);\n context.UpdateOrigin(this.ballpark);\n context.dataTextureManager = this.dataTextureMgr;\n\n for (const object of this.backgroundObjects)\n {\n object?.UpdateSyncronous?.(context);\n }\n for (const object of this.backgroundObjects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n\n if (this.warpTunnel)\n {\n this.warpTunnel.UpdateSyncronous?.(context);\n this.warpTunnel.UpdateAsyncronous?.(context);\n }\n\n this.starfield?.Update?.(simTime);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.Update?.(context);\n }\n\n this.dataTextureMgr?.Update?.(context);\n\n for (const distanceField of this.distanceFields)\n {\n distanceField?.Update?.(context);\n }\n\n for (const lensflare of this.lensflares)\n {\n lensflare?.Update?.(realTime, simTime);\n }\n\n this.virtualCameraSystem?.Update?.(realTime);\n\n for (const curveSet of this.curveSets)\n {\n curveSet?.Update?.(realTime, simTime);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateSyncronous?.(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateSyncronous?.(context);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n\n // Combine the post-process attributes (Carbon cpp:584, after the async\n // pass + ExecuteMainThreadActions cpp:581 and before the sun read).\n this.UpdatePostProcessAttributes();\n\n // Sun direction from the sun ball: the normalized sun position, negated\n // (Carbon: m_sunData.DirWorld = -Normalize(sunDirection)).\n if (this.sunBall?.Update)\n {\n this.sunBall.Update(simTime, sunDirectionScratch);\n vec3.normalize(sunDirectionScratch, sunDirectionScratch);\n vec3.negate(this.sunDirection, sunDirectionScratch);\n }\n\n this.updateTime = simTime;\n }\n\n /** Carbon method PickObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickAsyncObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickAsyncObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickAsyncObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickObjectAndAreaID -> PyPickObjectAndAreaID (MAP_METHOD). */\n @carbon.method\n @impl.notImplemented\n PickObjectAndAreaID(...args)\n {\n throw new Error(\"EveSpaceScene.PickObjectAndAreaID is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Carbon EveSpaceScene::PickInfinity (cpp:4039-4050): the world-space\n * DIRECTION a screen pixel points along - the pick ray with nothing to hit,\n * which is what a click on empty space resolves to. Pure math, no readback.\n *\n * @param {Number} x - screen x, in pixels\n * @param {Number} y - screen y, in pixels\n * @param {Float32Array} projection - the projection matrix\n * @param {Float32Array} view - the view matrix\n * @param {Object} [viewport] - { x, y, width, height }; the frame's render\n * context supplies one when this is omitted\n * @param {Float32Array} [out] - caller-owned direction\n * @returns {Float32Array|null} the normalized world direction, or null when\n * either matrix cannot be inverted\n */\n @carbon.method\n @impl.implemented\n PickInfinity(x, y, projection, view, viewport = null, out = vec3.create())\n {\n const resolved = viewport ?? this.updateContext?.renderContext?.GetViewport?.();\n const projected = screenToProjection(x, y, resolved);\n const ray = convertProjectionCoordToWorldPickRay(projected.x, projected.y, projection, view);\n\n return ray ? vec3.copy(out, ray.direction) : null;\n }\n\n /**\n * The per-frame CPU visibility pass, ported from the [VISIBILITY] block of\n * Carbon EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1443-1467; the\n * enclosing display gate is BeginRender cpp:1299-1302). Carbon's\n * Tr2ParallelDo loops (objects cpp:1445-1447, staticParticles cpp:1454-1456,\n * planets cpp:1458-1460) run sequentially in the same order; the lensflare\n * loop is sequential in Carbon too (cpp:1462-1466). LOD stamping (lodLevel,\n * isVisible, pixel diameters) happens INSIDE each object's UpdateVisibility;\n * per-object display gates live there too - the scene does not pre-filter.\n * uiObjects are never visited (Carbon never culls them). The camera parent's\n * SetTransform is pure decomposition (EveEffectRoot2.cpp:677-680 Decompose)\n * - no composition, so no row-vector operand swap here; this per-gather\n * Sync/Async pair is the camera parent's ONLY update, so its world transform\n * is the camera pose of the frame being gathered (cpp:1449-1452).\n * @param {Float32Array} inverseView - the inverse view matrix\n * (updateContext.renderContext.GetInverseViewTransform(); Carbon reads the\n * Tr2Renderer static at cpp:1449)\n */\n UpdateVisibility(inverseView)\n {\n if (!this.display)\n {\n return;\n }\n\n for (const object of this.objects)\n {\n object?.UpdateVisibility?.(this.updateContext, IDENTITY);\n }\n\n this.cameraAttachmentParent?.SetTransform?.(inverseView);\n this.cameraAttachmentParent?.UpdateSyncronous?.(this.updateContext);\n this.cameraAttachmentParent?.UpdateAsyncronous?.(this.updateContext);\n this.cameraAttachmentParent?.UpdateVisibility?.(this.updateContext, IDENTITY);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.UpdateVisibility?.(this.updateContext);\n }\n\n for (const planet of this.planets)\n {\n planet?.UpdateZOnlyVisibility?.(this.updateContext);\n }\n\n // Sequential in Carbon too: \"until we have proper support for multiple\n // lensflares we just do it in a list\" (cpp:1462-1466).\n for (const lensflare of this.lensflares)\n {\n lensflare?.UpdateVisibility?.(this.updateContext);\n }\n }\n\n /** Gathers batchable renderables from the scene's objects for the batch\n * collection pass - the [GATHER] block of Carbon\n * EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1470-1507): m_objects in\n * list order (cpp:1470-1475), then cameraAttachmentParent pushed LAST\n * (cpp:1476), then the staticParticles leg (cpp:1504-1507; Carbon signature\n * `GetRenderables(frustum, renderables)`, EveSceneStaticParticles.h - kept\n * with the out-parameter last per convention). Objects self-filter on the\n * visibility flags stamped by UpdateVisibility, so the array handed to\n * CjsBatchManager.Collect is pre-culled and this aggregation stays GPU-free.\n * The impostor-manager argument (cpp:1478-1502) is dropped - engine-owned.\n * Gather order matters downstream: the opaque accumulator receives batches\n * in gather order before Finalize sorts. */\n GetRenderables(out = [])\n {\n if (!this.display)\n {\n return out;\n }\n\n for (const object of this.objects) object?.GetRenderables?.(out);\n this.cameraAttachmentParent?.GetRenderables?.(out);\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.GetRenderables?.(this.updateContext.GetFrustum(), out);\n }\n return out;\n }\n\n /**\n * Refreshes the scene default's attribute snapshot, gathers every registered\n * PostProcessOwner's attributes, priority-blends them into the combined\n * post-process, copies the six engine effects through from the scene\n * default, and re-exports the result (Carbon\n * EveSpaceScene::UpdatePostProcessAttributes, EveSpaceScene.cpp:346-413).\n * Sort is descending by priority (cpp:372-377); Carbon's std::sort is\n * unstable while JS sort is stable - equal-priority ties keep registry\n * insertion order, which is blend-order-independent for every Sum-accumulated\n * attribute (the whole tie group is normalized together); only MaxWeight\n * ties at exactly equal weight (string paths / bools / DoF shape) could\n * differ from C++.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's g_enablePostProcessDebugging global becomes the scene-scoped enablePostProcessDebugging field; the debug payload is a plain object, null when off.\")\n UpdatePostProcessAttributes()\n {\n if (!this.display)\n {\n return;\n }\n\n // Scene default refreshed BEFORE the gather (cpp:354); FromPostProcess\n // handles a null postprocess (reset + return).\n this.#sceneDefaultPostProcessAttributes.FromPostProcess(\n this.postprocess, Tr2PostProcessAttributes.SCENE_DEFAULT_PRIORITY, 1.0);\n\n const sources = [];\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.PostProcessOwner) ?? [])\n {\n // Carbon pushes unguarded (cpp:358-361); JS ducks may return null.\n const attributes = owner?.GetPostProcessAttributes?.();\n if (attributes)\n {\n sources.push(attributes);\n }\n }\n\n // Scene default appended LAST (cpp:363).\n sources.push(this.#sceneDefaultPostProcessAttributes);\n\n // The list is never empty (default always pushed) so Carbon's else-branch\n // (cpp:411) is unreachable; the guard is kept for shape fidelity.\n if (sources.length)\n {\n this.#combinedPostProcess ??= new Tr2PostProcess2();\n\n sources.sort((a, b) => b.priority - a.priority);\n\n if (this.enablePostProcessDebugging)\n {\n const observer = Tr2PostProcessAttributes.CreateDebugObserver();\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources, observer);\n this.postProcessDebug = observer.GetDict();\n }\n else\n {\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources);\n this.postProcessDebug = null;\n }\n\n // Engine-effect copy-through from the scene default only - NOT blended\n // (cpp:389-406).\n if (this.postprocess)\n {\n this.#combinedPostProcess.SetDynamicExposure(this.postprocess.GetDynamicExposureIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTaa(this.postprocess.GetTaaIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTonemapping(this.postprocess.GetTonemappingIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetFog(this.postprocess.GetFogIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGodRays(this.postprocess.GetGodRaysIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGenericEffect(this.postprocess.GetGenericEffectIfAvailable?.() ?? null);\n }\n else\n {\n this.#combinedPostProcess.SetDynamicExposure(null);\n this.#combinedPostProcess.SetTaa(null);\n this.#combinedPostProcess.SetTonemapping(null);\n this.#combinedPostProcess.SetFog(null);\n this.#combinedPostProcess.SetGodRays(null);\n this.#combinedPostProcess.SetGenericEffect(null);\n }\n\n // Re-export the combined result as an attributes object at\n // MEDIUM_PRIORITY - consumed by nested-scene composition (cpp:407).\n (this.combinedPostProcessAttributes ??= new Tr2PostProcessAttributes())\n .FromPostProcess(this.#combinedPostProcess, Tr2PostProcessAttributes.MEDIUM_PRIORITY, 1.0);\n }\n else\n {\n this.#combinedPostProcess = null;\n }\n }\n\n /** Carbon method GetPostProcess (EveSpaceScene.cpp:420-427): the combined\n * post-process, or null while the scene is not displayed. */\n @carbon.method\n @impl.implemented\n GetPostProcess()\n {\n if (!this.display)\n {\n return null;\n }\n return this.#combinedPostProcess;\n }\n\n /**\n * Blends every registered EveLightingOverride against the scene baseline and\n * stamps currentSunColor / currentNebulaIntensity /\n * currentReflectionIntensity - the lighting-override block of Carbon\n * EveSpaceScene::BeginRender (EveSpaceScene.cpp:1333-1363). The baseline is\n * appended AFTER the sort at raw priority -1 - one below\n * SCENE_DEFAULT_PRIORITY=0, outside the legal enum range (Carbon casts -1,\n * cpp:1343) - so it always sits last. Scalar/color math only - no matrix\n * compositions, no row-vector swaps anywhere in this method. Same\n * stable-sort note as UpdatePostProcessAttributes - here fully benign, the\n * blend is symmetric within a tie group.\n */\n BlendLightingOverrides()\n {\n if (!this.display)\n {\n return;\n }\n\n const overrides = [];\n for (const component of this.componentRegistry?.GetComponents(EveComponentType.EveLightingOverride) ?? [])\n {\n overrides.push(component.GetOverrides());\n }\n overrides.sort((a, b) => b.priority - a.priority);\n\n // Baseline (cpp:1342-1357): the scene's own sun/nebula/reflection state,\n // sun color normalized by its max channel (all four components scaled).\n const sunColorSource = this.useSunDiffuseColorWithDynamicLights && this.dynamicLightingEnabled\n ? this.sunDiffuseColorWithDynamicLights\n : this.sunDiffuseColor;\n const sunIntensity = Math.max(sunColorSource[0], sunColorSource[1], sunColorSource[2]);\n const baselineSunColor = vec4.create();\n if (sunIntensity !== 0)\n {\n vec4.scale(baselineSunColor, sunColorSource, 1 / sunIntensity);\n }\n else\n {\n vec4.copy(baselineSunColor, sunColorSource);\n }\n overrides.push({\n priority: -1,\n intensity: 1,\n value: {\n sunColor: baselineSunColor,\n sunIntensity,\n backgroundIntensity: this.nebulaIntensity,\n reflectionIntensity: this.reflectionIntensity\n }\n });\n\n const over = EveSpaceScene.#SimplePriorityBlend(overrides);\n vec4.scale(this.currentSunColor, over.sunColor, over.sunIntensity);\n this.currentNebulaIntensity = over.backgroundIntensity;\n this.currentReflectionIntensity = over.reflectionIntensity;\n }\n\n /**\n * Drives the injected light manager through Carbon's dynamic-light gather\n * (EveSpaceScene::BeginRender, EveSpaceScene.cpp:1396-1416, AFTER\n * GatherBatches cpp:1387): shadow quality, clear (runs even with zero owners\n * - stale lights must drop), frustum, LOD cutoff, then every registered\n * LightOwner's GetLights (Carbon Tr2ParallelFor chunk-20 cpp:1405-1413; JS\n * sequential in collection order), then ResolveLightData. No JS\n * Tr2LightManager class exists - the manager is a duck and every manager\n * call is optional-chained so a partial duck still gets the owner loop.\n * Carbon runs the block only when a manager instance exists (dynamic\n * lighting on) - a null manager is a no-op. The recording frame number\n * Carbon passes to SetShadowQuality and the renderContext it passes to Clear\n * are engine recording state - the JS Clear receives the frame's\n * renderContext for ducks that want it.\n * @param {Object|null} lightManager\n */\n GatherLights(lightManager)\n {\n if (!lightManager || !this.display)\n {\n return;\n }\n\n lightManager.SetShadowQuality?.(this.shadowQualitySetting);\n lightManager.Clear?.(this.updateContext.renderContext);\n lightManager.SetFrustum?.(this.updateContext.GetFrustum());\n lightManager.AdjustLightCutoff?.(this.updateContext.GetLodFactor());\n\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.LightOwner) ?? [])\n {\n owner?.GetLights?.(lightManager);\n }\n\n lightManager.ResolveLightData?.();\n }\n\n /**\n * Carbon EveSpaceScene::UpdateShLighting (cpp:1685-1703): hands every\n * secondary-lighting receiver the scene's SH manager, so each one samples the\n * bounce light at its own position. A scene with no manager does nothing, as\n * Carbon does.\n *\n * Carbon runs this at the very END of the gather (cpp:1524, after\n * FinalizeBatches), and over a parallel range; the JS pass is sequential\n * because the receivers write only their own records and share no state.\n *\n * @param {Array} objects - the frame's visible objects\n * @returns {Number} how many receivers were updated\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's Tr2ParallelFor becomes a sequential pass; the receivers touch only their own per-object records.\")\n UpdateShLighting(objects = [])\n {\n if (!this.shLightingManager)\n {\n return 0;\n }\n\n let updated = 0;\n\n for (const object of objects)\n {\n if (typeof object?.UpdateShLighting !== \"function\")\n {\n continue;\n }\n object.UpdateShLighting(this.shLightingManager, this.updateContext);\n updated++;\n }\n\n return updated;\n }\n\n /** Carbon method ReregisterEntities (MAP_METHOD_AND_WRAP, cpp:4064-4089).\n * Guarded no-op after ClearComponentRegistry has nulled the registry\n * (destroy-only path; Carbon would never call this afterwards). */\n @carbon.method\n @impl.implemented\n ReregisterEntities()\n {\n if (!this.componentRegistry)\n {\n return;\n }\n\n for (const collection of [this.objects, this.backgroundObjects, this.planets])\n {\n for (const object of collection)\n {\n if (object instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(object);\n }\n }\n }\n if (this.cameraAttachmentParent instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(this.cameraAttachmentParent);\n }\n }\n\n /** Carbon method ClearComponentRegistry (EveSpaceScene.cpp:4091-4099, called\n * from the destructor cpp:322). Entity component-state is deliberately NOT\n * cleared beyond what Clear() does - either the scene is being destroyed\n * (entities go too) or entities move to another scene and re-register there.\n * The JS registry Clear() additionally detaches entity.registry when it\n * points at this registry - strictly more hygienic than Carbon; kept. */\n @carbon.method\n @impl.implemented\n ClearComponentRegistry()\n {\n this.componentRegistry?.Clear();\n this.componentRegistry = null;\n }\n\n /** Carbon method GetPostProcessDebug (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n GetPostProcessDebug()\n {\n return this.postProcessDebug;\n }\n\n /** Carbon method UpdateScene -> UpdateSceneFromScript (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n UpdateScene(time)\n {\n return this.Update(time, time);\n }\n\n static EveVisualizeMethod = Object.freeze({\n VM_NONE: 0,\n VM_TEXCOORD0: 1,\n VM_TEXCOORD1: 2,\n VM_WHITE: 3,\n VM_OVERDRAW: 4,\n VW_WIREFRAME: 5,\n VW_LIGHT_COUNT: 6,\n VM_COUNT: 7,\n });\n\n static ShadowQuality = Object.freeze({\n SHADOW_DISABLED: 0,\n SHADOW_LOW: 1,\n SHADOW_HIGH: 2,\n SHADOW_RAYTRACED: 3,\n });\n\n /**\n * Carbon SimplePriorityBlend (PriorityBlend.h:371-413) specialized to the\n * IEveLightingOverride::Overrides value type\n * { sunColor: vec4, sunIntensity, backgroundIntensity, reflectionIntensity }\n * (EveChildLightingOverride.h:15-32) - `+` and `* weight` componentwise.\n * Walks the (already priority-desc-sorted) list in equal-priority groups:\n * factor = (1 / max(groupTotal, 1)) * remainingWeight\n * then subtracts the UNCLAMPED group total from remainingWeight. Two quirks\n * preserved exactly: (a) a group with total intensity 0.3 contributes at\n * weight 0.3*remaining and leaves 0.7 for lower priorities; (b) a group with\n * total 2 is normalized to consume exactly remainingWeight and terminates\n * (remaining goes to -1).\n * @param {Array} sources - [{ priority, intensity, value }] sorted high->low\n * @returns {{ sunColor: Float32Array, sunIntensity: Number,\n * backgroundIntensity: Number, reflectionIntensity: Number }}\n */\n static #SimplePriorityBlend(sources)\n {\n const result = {\n sunColor: vec4.create(),\n sunIntensity: 0,\n backgroundIntensity: 0,\n reflectionIntensity: 0\n };\n let remainingWeight = 1;\n\n for (let first = 0; first < sources.length;)\n {\n // The range of sources sharing the current priority.\n let last = first + 1;\n while (last < sources.length && sources[last].priority === sources[first].priority)\n {\n last++;\n }\n\n let totalPriorityIntensity = 0;\n for (let index = first; index < last; index++)\n {\n totalPriorityIntensity += sources[index].intensity;\n }\n if (totalPriorityIntensity === 0)\n {\n first = last;\n continue;\n }\n\n const normalizationFactor = 1 / Math.max(totalPriorityIntensity, 1) * remainingWeight;\n\n for (let index = first; index < last; index++)\n {\n const weight = sources[index].intensity * normalizationFactor;\n const value = sources[index].value;\n vec4.scaleAndAdd(result.sunColor, result.sunColor, value.sunColor, weight);\n result.sunIntensity += value.sunIntensity * weight;\n result.backgroundIntensity += value.backgroundIntensity * weight;\n result.reflectionIntensity += value.reflectionIntensity * weight;\n }\n\n // Subtracts the UNCLAMPED total (PriorityBlend.h:405).\n remainingWeight -= totalPriorityIntensity;\n first = last;\n if (remainingWeight <= 0)\n {\n break;\n }\n }\n return result;\n }\n\n}\n"],"names":["sunDirectionScratch","vec3","create","IDENTITY","mat4","_EveSpaceScene","_identity","EveSpaceScene","CjsModel","e","_init_visualizeMethod","_init_extra_visualizeMethod","_init_envMap1ResPath","_init_extra_envMap1ResPath","_init_envMap2ResPath","_init_extra_envMap2ResPath","_init_envMap3ResPath","_init_extra_envMap3ResPath","_init_lowQualityNebulaResPath","_init_extra_lowQualityNebulaResPath","_init_lowQualityNebulaMixResPath","_init_extra_lowQualityNebulaMixResPath","_init_envMapResPath","_init_extra_envMapResPath","_init_fogColor","_init_extra_fogColor","_init_sunDirection","_init_extra_sunDirection","_init_ambientColor","_init_extra_ambientColor","_init_shLightingManager","_init_extra_shLightingManager","_init_combinedPostProcessAttributes","_init_extra_combinedPostProcessAttributes","_init_dataTextureMgr","_init_extra_dataTextureMgr","_init_dynamicObjectReflectionEnabled","_init_extra_dynamicObjectReflectionEnabled","_init_componentRegistry","_init_extra_componentRegistry","_init_cameraAttachmentParent","_init_extra_cameraAttachmentParent","_init_postProcessDebug","_init_extra_postProcessDebug","_init_curveSets","_init_extra_curveSets","_init_defaultDiffuseRoughness","_init_extra_defaultDiffuseRoughness","_init_fogStart","_init_extra_fogStart","_init_fogEnd","_init_extra_fogEnd","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_distanceFields","_init_extra_distanceFields","_init_backgroundEffect","_init_extra_backgroundEffect","_init_backgroundReflectionIntensity","_init_extra_backgroundReflectionIntensity","_init_nebulaIntensity","_init_extra_nebulaIntensity","_init_display","_init_extra_display","_init_backgroundRenderingEnabled","_init_extra_backgroundRenderingEnabled","_init_update","_init_extra_update","_init_impostorManager","_init_extra_impostorManager","_init_lensflares","_init_extra_lensflares","_init_externalParameters","_init_extra_externalParameters","_init_fogMax","_init_extra_fogMax","_init_staticParticles","_init_extra_staticParticles","_init_debugRenderer","_init_extra_debugRenderer","_init_objects","_init_extra_objects","_init_uiObjects","_init_extra_uiObjects","_init_backgroundObjects","_init_extra_backgroundObjects","_init_planets","_init_extra_planets","_init_raytracingManager","_init_extra_raytracingManager","_init_reflectionBackLightingColor","_init_extra_reflectionBackLightingColor","_init_reflectionBackLightingContrast","_init_extra_reflectionBackLightingContrast","_init_reflectionProbe","_init_extra_reflectionProbe","_init_volumetricsRenderer","_init_extra_volumetricsRenderer","_init_starfield","_init_extra_starfield","_init_planetScale","_init_extra_planetScale","_init_planetCameraScale","_init_extra_planetCameraScale","_init_subSurfaceScattering","_init_extra_subSurfaceScattering","_init_shadowQualitySetting","_init_extra_shadowQualitySetting","_init_sunDiffuseColor","_init_extra_sunDiffuseColor","_init_sunDiffuseColorWithDynamicLights","_init_extra_sunDiffuseColorWithDynamicLights","_init_envMapRotation","_init_extra_envMapRotation","_init_ballpark","_init_extra_ballpark","_init_name","_init_extra_name","_init_sunBall","_init_extra_sunBall","_init_postprocess","_init_extra_postprocess","_init_virtualCameraSystem","_init_extra_virtualCameraSystem","_init_warpTunnel","_init_extra_warpTunnel","_init_perFrameDebug","_init_extra_perFrameDebug","_init_cascadedShadowMap","_init_extra_cascadedShadowMap","_init_updateTime","_init_extra_updateTime","_init_useSunDiffuseColorWithDynamicLights","_init_extra_useSunDiffuseColorWithDynamicLights","_init_envMap","_init_extra_envMap","_init_envMap2","_init_extra_envMap2","_init_envMap3","_init_extra_envMap3","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","readwrite","int32","schema","enum","notify","persist","string","color","persistOnly","model","read","objectRef","boolean","rawStruct","list","float32","quat","float64","carbon","method","impl","adapted","notImplemented","implemented","reason","visualizeMethod","envMap1ResPath","envMap2ResPath","envMap3ResPath","lowQualityNebulaResPath","lowQualityNebulaMixResPath","envMapResPath","fogColor","vec4","sunDirection","ambientColor","shLightingManager","combinedPostProcessAttributes","Tr2PostProcessAttributes","dataTextureMgr","dynamicObjectReflectionEnabled","componentRegistry","EveComponentRegistry","cameraAttachmentParent","EveEffectRoot2","postProcessDebug","curveSets","defaultDiffuseRoughness","fogStart","fogEnd","reflectionIntensity","distanceFields","backgroundEffect","backgroundReflectionIntensity","nebulaIntensity","display","backgroundRenderingEnabled","update","impostorManager","lensflares","externalParameters","fogMax","staticParticles","debugRenderer","objects","uiObjects","backgroundObjects","planets","raytracingManager","reflectionBackLightingColor","fromValues","reflectionBackLightingContrast","reflectionProbe","volumetricsRenderer","starfield","planetScale","planetCameraScale","subSurfaceScattering","shadowQualitySetting","sunDiffuseColor","sunDiffuseColorWithDynamicLights","envMapRotation","ballpark","name","sunBall","postprocess","virtualCameraSystem","warpTunnel","perFrameDebug","cascadedShadowMap","updateTime","useSunDiffuseColorWithDynamicLights","envMap1","envMap2","envMap3","updateContext","EveUpdateContext","currentSunColor","currentNebulaIntensity","currentReflectionIntensity","dynamicLightingEnabled","enablePostProcessDebugging","StampFrameContext","frustum","visibilityThreshold","lowDetailThreshold","mediumDetailThreshold","highDetailThreshold","lodFactor","raytracingEnabled","context","SetFrustum","SetHighDetailThreshold","SetMediumDetailThreshold","SetLowDetailThreshold","SetVisibilityThreshold","SetLodFactor","Update","realTime","simTime","SetTime","UpdateOrigin","dataTextureManager","object","UpdateSyncronous","UpdateAsyncronous","distanceField","lensflare","curveSet","UpdatePostProcessAttributes","normalize","negate","PickObject","args","Error","PickAsyncObject","PickObjectAndAreaID","PickInfinity","x","y","projection","view","viewport","out","resolved","renderContext","GetViewport","projected","screenToProjection","ray","convertProjectionCoordToWorldPickRay","copy","direction","UpdateVisibility","inverseView","SetTransform","planet","UpdateZOnlyVisibility","GetRenderables","GetFrustum","FromPostProcess","SCENE_DEFAULT_PRIORITY","sources","owner","GetComponents","EveComponentType","PostProcessOwner","attributes","GetPostProcessAttributes","push","length","Tr2PostProcess2","sort","a","b","priority","observer","CreateDebugObserver","MergeInto","GetDict","SetDynamicExposure","GetDynamicExposureIfAvailable","SetTaa","GetTaaIfAvailable","SetTonemapping","GetTonemappingIfAvailable","SetFog","GetFogIfAvailable","SetGodRays","GetGodRaysIfAvailable","SetGenericEffect","GetGenericEffectIfAvailable","MEDIUM_PRIORITY","GetPostProcess","BlendLightingOverrides","overrides","component","EveLightingOverride","GetOverrides","sunColorSource","sunIntensity","Math","max","baselineSunColor","scale","intensity","value","sunColor","backgroundIntensity","over","GatherLights","lightManager","SetShadowQuality","Clear","AdjustLightCutoff","GetLodFactor","LightOwner","GetLights","ResolveLightData","UpdateShLighting","updated","ReregisterEntities","collection","EveEntity","ReRegister","ClearComponentRegistry","GetPostProcessDebug","UpdateScene","time","EveVisualizeMethod","Object","freeze","VM_NONE","VM_TEXCOORD0","VM_TEXCOORD1","VM_WHITE","VM_OVERDRAW","VW_WIREFRAME","VW_LIGHT_COUNT","VM_COUNT","ShadowQuality","SHADOW_DISABLED","SHADOW_LOW","SHADOW_HIGH","SHADOW_RAYTRACED","#SimplePriorityBlend","result","remainingWeight","first","last","totalPriorityIntensity","index","normalizationFactor","weight","scaleAndAdd","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSpaceScene.js","sources":["../../../../src/eve/scene/EveSpaceScene.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveSpaceScene.h\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\EveSpaceScene.cpp\n//\n// Hand-maintained (promoted from src/generated/eve/scene; the generator skips it\n// while this file exists). Fields mirror the generated schema shell; the\n// additions are the per-frame update driver ported from Carbon\n// EveSpaceScene::Update and the scene-owned EveUpdateContext member (Carbon\n// m_updateContext - protected, so absent from the Blue schema scan).\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\nimport { quat } from \"@carbonenginejs/runtime-utils/quat\";\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveComponentRegistry } from \"./components/EveComponentRegistry.js\";\nimport { Tr2PostProcess2 } from \"../../postProcess/Tr2PostProcess2.js\";\nimport { Tr2PostProcessAttributes } from \"../../postProcess/Tr2PostProcessAttributes.js\";\nimport { EveComponentType } from \"../EveComponentTypes.js\";\nimport { EveUpdateContext } from \"../EveUpdateContext.js\";\nimport { EveEffectRoot2 } from \"../spaceObject/EveEffectRoot2.js\";\nimport { EveCamera } from \"../camera/EveCamera.js\";\nimport { CjsPerFrameLayouts } from \"../../trinityCore/rawData/CjsPerFrameLayouts.js\";\nimport { RawData } from \"../../trinityCore/rawData/RawData.js\";\nimport { convertProjectionCoordToWorldPickRay, screenToProjection } from \"../../trinityCore/pickRay.js\";\n\n\n// Module scratch for the per-frame sun-direction read (assume-dirty).\nconst sunDirectionScratch = vec3.create();\n\n// Module scratch for the per-frame constant fills. Two are needed because the\n// composed result and one operand are live at the same time; neither survives\n// the call that wrote it.\nconst perFrameMatrixScratch = mat4.create();\nconst perFrameLastProjectionScratch = mat4.create();\n\nconst ZERO4 = Object.freeze([0, 0, 0, 0]);\n\nconst ZERO_JITTER = vec4.create();\n\n// EveSpaceScene.cpp:3196-3199 - the four froxel-fog slice distances, constant\n// every frame.\nconst VOLUMETRIC_SLICES = Object.freeze([1000, 10000, 100000, 1000000]);\n\n// Flip y and change the range from (-1, +1) to (0, 1): Carbon's\n// `ScalingMatrix(0.5, -0.5, 1) * TranslationMatrix(0.5, 0.5, 0)`\n// (EveSpaceScene.cpp:3179), pre-built because it never changes.\nconst SHADOW_CLIP_TO_UV = mat4.fromValues(\n 0.5, 0, 0, 0,\n 0, -0.5, 0, 0,\n 0, 0, 1, 0,\n 0.5, 0.5, 0, 1\n);\n\n// The scene-root parent transform for the visibility pass (Carbon\n// EveSpaceScene.cpp:1441 `const Matrix& identity = IdentityMatrix()`). Module\n// const, NEVER mutated - objects in m_objects are scene roots.\nconst IDENTITY = mat4.create();\n\n// ---------------------------------------------------------------------------\n// DRIVER-ORDER CONTRACT (per frame) - the CPU visibility/gather drive.\n// Carbon runs steps 5-12 inside EveSpaceScene::BeginRender/GatherBatches\n// (EveSpaceScene.cpp:1295-1427/1433-1525); CarbonEngineJS splits them into\n// scene-owned methods that an engine driver calls in this exact order:\n//\n// 1. Host stamps `updateContext.renderContext` (view -> derived inverse-view\n// + viewPos) and `updateContext.device`.\n// 2. Driver derives the frustum:\n// `frustum.DeriveFrustum(view, viewPos, projection, viewport)` from that\n// same renderContext state (Carbon cpp:476).\n// 3. `scene.StampFrameContext({ frustum, thresholds..., lodFactor,\n// raytracingEnabled })`.\n// 4. `scene.Update(realTime, simTime)` - internally ends with\n// `UpdatePostProcessAttributes()` then the sun-direction read (Carbon\n// cpp:584 -> 589).\n// 5. `scene.BlendLightingOverrides()` - BeginRender phase, before any gather\n// (Carbon cpp:1333, before GatherBatches cpp:1387).\n// 6. (engine) volumetrics `UpdateFogSettings(scene.componentRegistry,\n// scene.updateContext)` - engine reads \"FroxelFogSettings\"; not scene\n// work (cpp:1365-1370).\n// 7. `scene.UpdateVisibility(updateContext.renderContext\n// .GetInverseViewTransform())` - the cpp:1443-1467 block.\n// 8. `const renderables = scene.GetRenderables([])` - pre-culled\n// (cpp:1470-1507 minus impostors).\n// 9. `batchManager.Collect(renderables, reason, updateContext.renderContext)`\n// - with engine-registered collectors covering Carbon's [QUADS]\n// (cpp:1509-1511) and [INSTANCED] (cpp:1516-1520; the instanced collector\n// reads \"InstancedMeshProvider\" from `scene.componentRegistry`);\n// `Finalize` inside Collect = Carbon FinalizeBatches cpp:1522.\n// 10. `scene.GatherLights(lightManager)` - AFTER step 9 (Carbon cpp:1396-1416\n// runs after GatherBatches cpp:1387).\n// 10b. `scene.UpdateShLighting(objects)` - the LAST thing Carbon's gather does\n// (cpp:1524), so every receiver's secondary-lighting coefficients are\n// current for the frame being submitted. Skipped entirely when the scene\n// carries no shLightingManager.\n// 10c. `scene.PopulatePerFramePSData(renderContext, frame, shadowMap)` then\n// `scene.PopulatePerFrameVSData(renderContext, frame)` - Carbon's order at\n// cpp:1424-1425, PS first, because the pixel fill is what resolves\n// m_upscalingAmount that the vertex fill then reads. Runs after GatherLights\n// so the blended sun colour is current. The engine binds the two records at\n// Tr2Renderer::GetPerFrame{VS,PS}StartRegister; their layouts are published\n// on the `/perframe` subpath.\n// 11. (driver/engine, optional) `for (const lf of scene.lensflares)\n// lf?.PrepareRender?.(frustum)` (cpp:1419-1422; the JS lensflare shell has\n// no method yet - pure no-op today).\n// 12. (engine) reads registry collections directly: \"ShadowCaster\" (cascade\n// gate cpp:614-621, RT push cpp:1544-1547), \"VolumetricRenderable\",\n// \"FroxelFogSettings\", \"MeshMorph\" (engine may call\n// `scene.componentRegistry.Clear(\"MeshMorph\")` after bake),\n// \"ReflectionRenderable\" (secondary gather cpp:1886-1895).\n//\n// One-shot registration trigger: after graph build/mutation call\n// `scene.ReregisterEntities()` - covers objects + backgroundObjects + planets\n// (entity-guarded) + cameraAttachmentParent (cpp:4064-4089, matching what\n// OnListModified registers incrementally, cpp:3435-3491). uiObjects are\n// intentionally excluded everywhere (cpp:3462 gate) - Carbon never registers\n// or culls them.\n// ---------------------------------------------------------------------------\n\n/** EveSpaceScene (eve/scene) - hand-maintained from schema shapeHash 571234b0.... */\n@type.define({ className: \"EveSpaceScene\", family: \"eve/scene\" })\nexport class EveSpaceScene extends CjsModel\n{\n\n /** m_visualizeMethod (EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @io.readwrite\n @type.int32\n @schema.enum(\"EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_envMap1ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap1ResPath = \"\";\n\n /** m_envMap2ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap2ResPath = \"\";\n\n /** m_envMap3ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMap3ResPath = \"\";\n\n /** m_lowQualityNebulaResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n lowQualityNebulaResPath = \"\";\n\n /** m_lowQualityNebulaMixResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n lowQualityNebulaMixResPath = \"\";\n\n /** m_envMapResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.string\n envMapResPath = \"\";\n\n /** m_fogColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n fogColor = vec4.create();\n\n /** m_sunData.DirWorld (Vector3) [READWRITE, PERSIST] */\n @io.persist\n @type.vec3\n sunDirection = vec3.create();\n\n /** m_ambientColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n ambientColor = vec4.create();\n\n /** m_shLightingManager (Tr2ShLightingManagerPtr) [PERSISTONLY] */\n @io.persistOnly\n @type.model(\"Tr2ShLightingManager\")\n shLightingManager = null;\n\n /** m_combinedPostProcessAttributes (Tr2PostProcessAttributesPtr) [READ] -\n * default-constructed like Carbon's ctor CreateInstance (cpp:297); refreshed\n * by UpdatePostProcessAttributes' re-export at MEDIUM_PRIORITY (cpp:407). */\n @io.read\n @type.objectRef(\"Tr2PostProcessAttributes\")\n combinedPostProcessAttributes = new Tr2PostProcessAttributes();\n\n /** m_dataTextureMgr (Tr2DataTextureManagerPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2DataTextureManager\")\n dataTextureMgr = null;\n\n /** m_dynamicObjectReflectionEnabled (bool) [READWRITE] */\n @io.readwrite\n @type.boolean\n dynamicObjectReflectionEnabled = true;\n\n /** m_componentRegistry (EveComponentRegistryPtr) [READ] */\n @io.read\n @type.objectRef(\"EveComponentRegistry\")\n componentRegistry = new EveComponentRegistry();\n\n /** m_cameraAttachmentParent (EveEffectRoot2Ptr) - protected Carbon scene\n * entity, default-constructed like Carbon's ctor CreateInstance (cpp:287, no\n * further setup applied). Consumers still optional-chain - deserialization\n * may null it. */\n @type.model(\"EveEffectRoot2\")\n cameraAttachmentParent = new EveEffectRoot2();\n\n /** m_postProcessDebug (BluePy) - protected Carbon debug payload. */\n @type.rawStruct(\"BluePy\")\n postProcessDebug = null;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_defaultDiffuseRoughness (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n defaultDiffuseRoughness = 1;\n\n /** m_fogStart (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogStart = 0;\n\n /** m_fogEnd (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogEnd = 0;\n\n /** m_reflectionIntensity (float) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.float32\n reflectionIntensity = 0;\n\n /** m_distanceFields (PEveDistanceFieldVector) [READ] */\n @io.read\n @type.list(\"EveDistanceField\")\n distanceFields = [];\n\n /** m_backgroundEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2Effect\")\n backgroundEffect = null;\n\n /** m_backgroundReflectionIntensity (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n backgroundReflectionIntensity = 1;\n\n /** m_nebulaIntensity (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n nebulaIntensity = 1;\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n display = true;\n\n /** m_backgroundRenderingEnabled (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n backgroundRenderingEnabled = false;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n update = true;\n\n /** m_impostorManager (Tr2ImpostorManagerPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2ImpostorManager\")\n impostorManager = null;\n\n /** m_lensflares (PEveLensflareVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EveLensflare\")\n lensflares = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_fogMax (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n fogMax = 0;\n\n /** m_staticParticles (PEveSceneStaticParticlesVector) [READ] */\n @io.read\n @type.list(\"EveSceneStaticParticles\")\n staticParticles = [];\n\n /** m_debugRenderer (Tr2DebugRendererPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2DebugRenderer\")\n debugRenderer = null;\n\n /** m_objects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n objects = [];\n\n /** m_uiObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n uiObjects = [];\n\n /** m_backgroundObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObject2\")\n backgroundObjects = [];\n\n /** m_planets (PEvePlanetVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"EvePlanet\")\n planets = [];\n\n /** m_rtManager (Tr2RaytracingManagerPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"Tr2RaytracingManager\")\n raytracingManager = null;\n\n /** m_reflectionBackLightingColor (Color) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.color\n reflectionBackLightingColor = vec4.fromValues(2, 2, 2, 2);\n\n /** m_reflectionBackLightingContrast (float) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.float32\n reflectionBackLightingContrast = 8;\n\n /** m_reflectionProbe (Tr2ReflectionProbePtr) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.objectRef(\"Tr2ReflectionProbe\")\n reflectionProbe = null;\n\n /** m_volumetricsRenderer (Tr2VolumetricsRendererPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2VolumetricsRenderer\")\n volumetricsRenderer = null;\n\n /** m_starfield (EveStarfieldPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"EveStarfield\")\n starfield = null;\n\n /** m_planetScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n planetScale = 1000000;\n\n /** m_planetCameraScale (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n planetCameraScale = 1000000;\n\n /** m_sssss (Tr2SSSSSPtr) [READ] */\n @io.read\n @type.objectRef(\"Tr2SSSSS\")\n subSurfaceScattering = null;\n\n /** m_shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, NOTIFY] */\n @io.notify\n @io.readwrite\n @type.int32\n @schema.enum(\"ShadowQuality\")\n shadowQualitySetting = 3;\n\n /** m_sunColor (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n sunDiffuseColor = vec4.fromValues(1, 1, 1, 1);\n\n /** m_sunColorWithDynamicLights (Color) [READWRITE, PERSIST] */\n @io.persist\n @type.color\n sunDiffuseColorWithDynamicLights = vec4.fromValues(1, 1, 1, 1);\n\n /** m_envMapRotation (Quaternion) [READWRITE, PERSIST] */\n @io.persist\n @type.quat\n envMapRotation = quat.create();\n\n /** m_ballpark (IEveBallparkPtr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"IEveBallpark\")\n ballpark = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_sunBall (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"ITriVectorFunction\")\n sunBall = null;\n\n /** m_sceneDefaultPostProcess (Tr2PostProcess2Ptr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2PostProcess2\")\n postprocess = null;\n\n /** m_virtualCameraSystem (EveVirtualCameraSystemPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"EveVirtualCameraSystem\")\n virtualCameraSystem = null;\n\n /** m_warpTunnel (IEveSpaceObject2Ptr) [READWRITE] */\n @io.readwrite\n @type.objectRef(\"IEveSpaceObject2\")\n warpTunnel = null;\n\n /** m_perFrameDebug (float) [READWRITE] */\n @io.readwrite\n @type.float32\n perFrameDebug = 0;\n\n /** m_cascadedShadowMap (Tr2ShadowMapPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2ShadowMap\")\n cascadedShadowMap = null;\n\n /** m_updateTime (Be::Time) [READ] */\n @io.read\n @type.float64\n updateTime = 0;\n\n /** m_useSunColorWithDynamicLights (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n useSunDiffuseColorWithDynamicLights = false;\n\n /** m_envMap1 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap1 = null;\n\n /** m_envMap2 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap2 = null;\n\n /** m_envMap3 (ITr2TextureProviderPtr) [READ] */\n @io.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap3 = null;\n\n // Carbon m_updateContext (protected, absent from the Blue scan): the scene\n // owns ONE frame context, constructed once and re-stamped each Update. The\n // host/driver stamps updateContext.renderContext (camera view) + .device per\n // pass before calling Update - our explicit replacement for Carbon's\n // Tr2Renderer view statics.\n updateContext = new EveUpdateContext();\n\n // Carbon m_sceneDefaultPostProcessAttributes (EveSpaceScene.h:640, ctor\n // CreateInstance cpp:296): the scene default's attribute snapshot, refreshed\n // by UpdatePostProcessAttributes each frame.\n #sceneDefaultPostProcessAttributes = new Tr2PostProcessAttributes();\n\n // Carbon m_combinedPostProcess (EveSpaceScene.h:636): the merged output\n // post-process, lazily constructed on first combine (cpp:367-370).\n #combinedPostProcess = null;\n\n // Carbon m_currentSunColor / m_currentNebulaIntensity /\n // m_currentReflectionIntensity (EveSpaceScene.h:492-493/650, protected):\n // outputs of the BeginRender lighting-override blend (cpp:1360-1362).\n currentSunColor = vec4.create();\n\n currentNebulaIntensity = 0;\n\n currentReflectionIntensity = 0;\n\n // Carbon m_viewLast / m_projectionLast / m_jitterMatrix\n // (EveSpaceScene.h:296-297, protected): the previous frame's camera, which\n // the per-frame vertex block hands to the shader for motion vectors.\n viewLast = mat4.create();\n\n projectionLast = mat4.create();\n\n jitterMatrix = mat4.create();\n\n // Carbon m_jitter (EveSpaceScene.h:624) - xy: projection offset, zw: pixel\n // offset. The per-frame pixel block reports only whether it is non-zero.\n jitter = vec4.create();\n\n // Carbon m_upscalingAmount (EveSpaceScene.h:623, =1 by default at cpp:221).\n // Reset by the per-frame pixel fill and raised by an upscaler, if any.\n upscalingAmount = 1;\n\n // Carbon g_eveSpaceSceneDynamicLighting (registered setting\n // \"eveSpaceSceneDynamicLighting\", cpp:109-110, default false) - scoped to\n // the scene instead of a module global.\n dynamicLightingEnabled = false;\n\n // Carbon g_enablePostProcessDebugging (registered setting\n // \"enablePostProcessDebugging\", cpp:118-119, default false) - scoped to the\n // scene instead of a module global.\n enablePostProcessDebugging = false;\n\n /**\n * Stamps the per-frame frustum/threshold/LOD state onto the scene-owned\n * update context (Carbon EveSpaceScene::Update cpp:475-484, identical to the\n * already-updated fast path cpp:448-457). Carbon derives the frustum from\n * the Tr2Renderer view statics and reads the thresholds from console vars\n * divided by m_upscalingAmount (=1 by default, cpp:221); in CarbonEngineJS\n * the driver derives the frustum from the same renderContext state it\n * stamped and supplies the thresholds explicitly (pre-divided if it ever\n * upscales). Defaults are the Carbon console-var defaults (cpp:75-84).\n * The raytracing flag is Carbon's `m_shadowQuality == SHADOW_RAYTRACED &&\n * m_enableShadows` (cpp:457/484) - the driver computes it; the scene does\n * not. Stamps unconditionally: Carbon's same-frame fast path restamps\n * regardless of m_update (cpp:444-462); only the cold path skips stamping\n * when !m_update (cpp:466 precedes 475) - benign divergence.\n * @param {Object} [options]\n * @param {Object|null} [options.frustum] - a ready TriFrustum, held by reference\n * @param {Number} [options.visibilityThreshold]\n * @param {Number} [options.lowDetailThreshold]\n * @param {Number} [options.mediumDetailThreshold]\n * @param {Number} [options.highDetailThreshold]\n * @param {Number} [options.lodFactor]\n * @param {Boolean} [options.raytracingEnabled]\n */\n StampFrameContext({\n frustum = null,\n visibilityThreshold = 5,\n lowDetailThreshold = 100,\n mediumDetailThreshold = 400,\n highDetailThreshold = 800,\n lodFactor = 1,\n raytracingEnabled = false\n } = {})\n {\n const context = this.updateContext;\n context.SetFrustum(frustum);\n context.SetHighDetailThreshold(highDetailThreshold);\n context.SetMediumDetailThreshold(mediumDetailThreshold);\n context.SetLowDetailThreshold(lowDetailThreshold);\n context.SetVisibilityThreshold(visibilityThreshold);\n context.SetLodFactor(lodFactor);\n context.raytracingEnabled = !!raytracingEnabled;\n }\n\n /**\n * Per-frame scene update, ported from Carbon EveSpaceScene::Update: stamps the\n * scene-owned frame context (time, origin, data-texture manager), then drives\n * every collection in Carbon's order - background objects, warp tunnel,\n * starfield, static particles, data textures, distance fields, lensflares,\n * virtual camera system, curve sets, then all space/UI objects synchronous\n * first and asynchronous second (Carbon parallelizes the async pass on a task\n * group; JS runs it sequentially). Then combines the post-process attributes\n * (cpp:584) and finally reads the sun direction from the sun ball\n * (cpp:589-596).\n *\n * Adapted - deferred vs Carbon: the recording-frame dedup fast path,\n * frustum/threshold/LOD/raytracing stamping (now the driver's job via\n * StampFrameContext, called BEFORE Update), planet update (planet\n * view-matrix swap unported), and main-thread action flush (N/A).\n * @param {Number} realTime\n * @param {Number} simTime\n */\n @carbon.method\n @impl.adapted\n Update(realTime, simTime)\n {\n if (!this.update)\n {\n return;\n }\n\n const context = this.updateContext;\n context.SetTime(simTime);\n context.UpdateOrigin(this.ballpark);\n context.dataTextureManager = this.dataTextureMgr;\n\n for (const object of this.backgroundObjects)\n {\n object?.UpdateSyncronous?.(context);\n }\n for (const object of this.backgroundObjects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n\n if (this.warpTunnel)\n {\n this.warpTunnel.UpdateSyncronous?.(context);\n this.warpTunnel.UpdateAsyncronous?.(context);\n }\n\n this.starfield?.Update?.(simTime);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.Update?.(context);\n }\n\n this.dataTextureMgr?.Update?.(context);\n\n for (const distanceField of this.distanceFields)\n {\n distanceField?.Update?.(context);\n }\n\n for (const lensflare of this.lensflares)\n {\n lensflare?.Update?.(realTime, simTime);\n }\n\n this.virtualCameraSystem?.Update?.(realTime);\n\n for (const curveSet of this.curveSets)\n {\n curveSet?.Update?.(realTime, simTime);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateSyncronous?.(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateSyncronous?.(context);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateAsyncronous?.(context);\n }\n\n // Combine the post-process attributes (Carbon cpp:584, after the async\n // pass + ExecuteMainThreadActions cpp:581 and before the sun read).\n this.UpdatePostProcessAttributes();\n\n // Sun direction from the sun ball: the normalized sun position, negated\n // (Carbon: m_sunData.DirWorld = -Normalize(sunDirection)).\n if (this.sunBall?.Update)\n {\n this.sunBall.Update(simTime, sunDirectionScratch);\n vec3.normalize(sunDirectionScratch, sunDirectionScratch);\n vec3.negate(this.sunDirection, sunDirectionScratch);\n }\n\n this.updateTime = simTime;\n }\n\n /** Carbon method PickObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickAsyncObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickAsyncObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickAsyncObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickObjectAndAreaID -> PyPickObjectAndAreaID (MAP_METHOD). */\n @carbon.method\n @impl.notImplemented\n PickObjectAndAreaID(...args)\n {\n throw new Error(\"EveSpaceScene.PickObjectAndAreaID is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Carbon EveSpaceScene::PickInfinity (cpp:4039-4050): the world-space\n * DIRECTION a screen pixel points along - the pick ray with nothing to hit,\n * which is what a click on empty space resolves to. Pure math, no readback.\n *\n * @param {Number} x - screen x, in pixels\n * @param {Number} y - screen y, in pixels\n * @param {Float32Array} projection - the projection matrix\n * @param {Float32Array} view - the view matrix\n * @param {Object} [viewport] - { x, y, width, height }; the frame's render\n * context supplies one when this is omitted\n * @param {Float32Array} [out] - caller-owned direction\n * @returns {Float32Array|null} the normalized world direction, or null when\n * either matrix cannot be inverted\n */\n @carbon.method\n @impl.implemented\n PickInfinity(x, y, projection, view, viewport = null, out = vec3.create())\n {\n const resolved = viewport ?? this.updateContext?.renderContext?.GetViewport?.();\n const projected = screenToProjection(x, y, resolved);\n const ray = convertProjectionCoordToWorldPickRay(projected.x, projected.y, projection, view);\n\n return ray ? vec3.copy(out, ray.direction) : null;\n }\n\n /**\n * The per-frame CPU visibility pass, ported from the [VISIBILITY] block of\n * Carbon EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1443-1467; the\n * enclosing display gate is BeginRender cpp:1299-1302). Carbon's\n * Tr2ParallelDo loops (objects cpp:1445-1447, staticParticles cpp:1454-1456,\n * planets cpp:1458-1460) run sequentially in the same order; the lensflare\n * loop is sequential in Carbon too (cpp:1462-1466). LOD stamping (lodLevel,\n * isVisible, pixel diameters) happens INSIDE each object's UpdateVisibility;\n * per-object display gates live there too - the scene does not pre-filter.\n * uiObjects are never visited (Carbon never culls them). The camera parent's\n * SetTransform is pure decomposition (EveEffectRoot2.cpp:677-680 Decompose)\n * - no composition, so no row-vector operand swap here; this per-gather\n * Sync/Async pair is the camera parent's ONLY update, so its world transform\n * is the camera pose of the frame being gathered (cpp:1449-1452).\n * @param {Float32Array} inverseView - the inverse view matrix\n * (updateContext.renderContext.GetInverseViewTransform(); Carbon reads the\n * Tr2Renderer static at cpp:1449)\n */\n UpdateVisibility(inverseView)\n {\n if (!this.display)\n {\n return;\n }\n\n for (const object of this.objects)\n {\n object?.UpdateVisibility?.(this.updateContext, IDENTITY);\n }\n\n this.cameraAttachmentParent?.SetTransform?.(inverseView);\n this.cameraAttachmentParent?.UpdateSyncronous?.(this.updateContext);\n this.cameraAttachmentParent?.UpdateAsyncronous?.(this.updateContext);\n this.cameraAttachmentParent?.UpdateVisibility?.(this.updateContext, IDENTITY);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.UpdateVisibility?.(this.updateContext);\n }\n\n for (const planet of this.planets)\n {\n planet?.UpdateZOnlyVisibility?.(this.updateContext);\n }\n\n // Sequential in Carbon too: \"until we have proper support for multiple\n // lensflares we just do it in a list\" (cpp:1462-1466).\n for (const lensflare of this.lensflares)\n {\n lensflare?.UpdateVisibility?.(this.updateContext);\n }\n }\n\n /** Gathers batchable renderables from the scene's objects for the batch\n * collection pass - the [GATHER] block of Carbon\n * EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1470-1507): m_objects in\n * list order (cpp:1470-1475), then cameraAttachmentParent pushed LAST\n * (cpp:1476), then the staticParticles leg (cpp:1504-1507; Carbon signature\n * `GetRenderables(frustum, renderables)`, EveSceneStaticParticles.h - kept\n * with the out-parameter last per convention). Objects self-filter on the\n * visibility flags stamped by UpdateVisibility, so the array handed to\n * CjsBatchManager.Collect is pre-culled and this aggregation stays GPU-free.\n * The impostor-manager argument (cpp:1478-1502) is dropped - engine-owned.\n * Gather order matters downstream: the opaque accumulator receives batches\n * in gather order before Finalize sorts. */\n GetRenderables(out = [])\n {\n if (!this.display)\n {\n return out;\n }\n\n for (const object of this.objects) object?.GetRenderables?.(out);\n this.cameraAttachmentParent?.GetRenderables?.(out);\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.GetRenderables?.(this.updateContext.GetFrustum(), out);\n }\n return out;\n }\n\n /**\n * Refreshes the scene default's attribute snapshot, gathers every registered\n * PostProcessOwner's attributes, priority-blends them into the combined\n * post-process, copies the six engine effects through from the scene\n * default, and re-exports the result (Carbon\n * EveSpaceScene::UpdatePostProcessAttributes, EveSpaceScene.cpp:346-413).\n * Sort is descending by priority (cpp:372-377); Carbon's std::sort is\n * unstable while JS sort is stable - equal-priority ties keep registry\n * insertion order, which is blend-order-independent for every Sum-accumulated\n * attribute (the whole tie group is normalized together); only MaxWeight\n * ties at exactly equal weight (string paths / bools / DoF shape) could\n * differ from C++.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's g_enablePostProcessDebugging global becomes the scene-scoped enablePostProcessDebugging field; the debug payload is a plain object, null when off.\")\n UpdatePostProcessAttributes()\n {\n if (!this.display)\n {\n return;\n }\n\n // Scene default refreshed BEFORE the gather (cpp:354); FromPostProcess\n // handles a null postprocess (reset + return).\n this.#sceneDefaultPostProcessAttributes.FromPostProcess(\n this.postprocess, Tr2PostProcessAttributes.SCENE_DEFAULT_PRIORITY, 1.0);\n\n const sources = [];\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.PostProcessOwner) ?? [])\n {\n // Carbon pushes unguarded (cpp:358-361); JS ducks may return null.\n const attributes = owner?.GetPostProcessAttributes?.();\n if (attributes)\n {\n sources.push(attributes);\n }\n }\n\n // Scene default appended LAST (cpp:363).\n sources.push(this.#sceneDefaultPostProcessAttributes);\n\n // The list is never empty (default always pushed) so Carbon's else-branch\n // (cpp:411) is unreachable; the guard is kept for shape fidelity.\n if (sources.length)\n {\n this.#combinedPostProcess ??= new Tr2PostProcess2();\n\n sources.sort((a, b) => b.priority - a.priority);\n\n if (this.enablePostProcessDebugging)\n {\n const observer = Tr2PostProcessAttributes.CreateDebugObserver();\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources, observer);\n this.postProcessDebug = observer.GetDict();\n }\n else\n {\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources);\n this.postProcessDebug = null;\n }\n\n // Engine-effect copy-through from the scene default only - NOT blended\n // (cpp:389-406).\n if (this.postprocess)\n {\n this.#combinedPostProcess.SetDynamicExposure(this.postprocess.GetDynamicExposureIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTaa(this.postprocess.GetTaaIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTonemapping(this.postprocess.GetTonemappingIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetFog(this.postprocess.GetFogIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGodRays(this.postprocess.GetGodRaysIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGenericEffect(this.postprocess.GetGenericEffectIfAvailable?.() ?? null);\n }\n else\n {\n this.#combinedPostProcess.SetDynamicExposure(null);\n this.#combinedPostProcess.SetTaa(null);\n this.#combinedPostProcess.SetTonemapping(null);\n this.#combinedPostProcess.SetFog(null);\n this.#combinedPostProcess.SetGodRays(null);\n this.#combinedPostProcess.SetGenericEffect(null);\n }\n\n // Re-export the combined result as an attributes object at\n // MEDIUM_PRIORITY - consumed by nested-scene composition (cpp:407).\n (this.combinedPostProcessAttributes ??= new Tr2PostProcessAttributes())\n .FromPostProcess(this.#combinedPostProcess, Tr2PostProcessAttributes.MEDIUM_PRIORITY, 1.0);\n }\n else\n {\n this.#combinedPostProcess = null;\n }\n }\n\n /** Carbon method GetPostProcess (EveSpaceScene.cpp:420-427): the combined\n * post-process, or null while the scene is not displayed. */\n @carbon.method\n @impl.implemented\n GetPostProcess()\n {\n if (!this.display)\n {\n return null;\n }\n return this.#combinedPostProcess;\n }\n\n /**\n * Blends every registered EveLightingOverride against the scene baseline and\n * stamps currentSunColor / currentNebulaIntensity /\n * currentReflectionIntensity - the lighting-override block of Carbon\n * EveSpaceScene::BeginRender (EveSpaceScene.cpp:1333-1363). The baseline is\n * appended AFTER the sort at raw priority -1 - one below\n * SCENE_DEFAULT_PRIORITY=0, outside the legal enum range (Carbon casts -1,\n * cpp:1343) - so it always sits last. Scalar/color math only - no matrix\n * compositions, no row-vector swaps anywhere in this method. Same\n * stable-sort note as UpdatePostProcessAttributes - here fully benign, the\n * blend is symmetric within a tie group.\n */\n BlendLightingOverrides()\n {\n if (!this.display)\n {\n return;\n }\n\n const overrides = [];\n for (const component of this.componentRegistry?.GetComponents(EveComponentType.EveLightingOverride) ?? [])\n {\n overrides.push(component.GetOverrides());\n }\n overrides.sort((a, b) => b.priority - a.priority);\n\n // Baseline (cpp:1342-1357): the scene's own sun/nebula/reflection state,\n // sun color normalized by its max channel (all four components scaled).\n const sunColorSource = this.useSunDiffuseColorWithDynamicLights && this.dynamicLightingEnabled\n ? this.sunDiffuseColorWithDynamicLights\n : this.sunDiffuseColor;\n const sunIntensity = Math.max(sunColorSource[0], sunColorSource[1], sunColorSource[2]);\n const baselineSunColor = vec4.create();\n if (sunIntensity !== 0)\n {\n vec4.scale(baselineSunColor, sunColorSource, 1 / sunIntensity);\n }\n else\n {\n vec4.copy(baselineSunColor, sunColorSource);\n }\n overrides.push({\n priority: -1,\n intensity: 1,\n value: {\n sunColor: baselineSunColor,\n sunIntensity,\n backgroundIntensity: this.nebulaIntensity,\n reflectionIntensity: this.reflectionIntensity\n }\n });\n\n const over = EveSpaceScene.#SimplePriorityBlend(overrides);\n vec4.scale(this.currentSunColor, over.sunColor, over.sunIntensity);\n this.currentNebulaIntensity = over.backgroundIntensity;\n this.currentReflectionIntensity = over.reflectionIntensity;\n }\n\n /**\n * Drives the injected light manager through Carbon's dynamic-light gather\n * (EveSpaceScene::BeginRender, EveSpaceScene.cpp:1396-1416, AFTER\n * GatherBatches cpp:1387): shadow quality, clear (runs even with zero owners\n * - stale lights must drop), frustum, LOD cutoff, then every registered\n * LightOwner's GetLights (Carbon Tr2ParallelFor chunk-20 cpp:1405-1413; JS\n * sequential in collection order), then ResolveLightData. No JS\n * Tr2LightManager class exists - the manager is a duck and every manager\n * call is optional-chained so a partial duck still gets the owner loop.\n * Carbon runs the block only when a manager instance exists (dynamic\n * lighting on) - a null manager is a no-op. The recording frame number\n * Carbon passes to SetShadowQuality and the renderContext it passes to Clear\n * are engine recording state - the JS Clear receives the frame's\n * renderContext for ducks that want it.\n * @param {Object|null} lightManager\n */\n GatherLights(lightManager)\n {\n if (!lightManager || !this.display)\n {\n return;\n }\n\n lightManager.SetShadowQuality?.(this.shadowQualitySetting);\n lightManager.Clear?.(this.updateContext.renderContext);\n lightManager.SetFrustum?.(this.updateContext.GetFrustum());\n lightManager.AdjustLightCutoff?.(this.updateContext.GetLodFactor());\n\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.LightOwner) ?? [])\n {\n owner?.GetLights?.(lightManager);\n }\n\n lightManager.ResolveLightData?.();\n }\n\n /**\n * Carbon EveSpaceScene::UpdateShLighting (cpp:1685-1703): hands every\n * secondary-lighting receiver the scene's SH manager, so each one samples the\n * bounce light at its own position. A scene with no manager does nothing, as\n * Carbon does.\n *\n * Carbon runs this at the very END of the gather (cpp:1524, after\n * FinalizeBatches), and over a parallel range; the JS pass is sequential\n * because the receivers write only their own records and share no state.\n *\n * @param {Array} objects - the frame's visible objects\n * @returns {Number} how many receivers were updated\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's Tr2ParallelFor becomes a sequential pass; the receivers touch only their own per-object records.\")\n UpdateShLighting(objects = [])\n {\n if (!this.shLightingManager)\n {\n return 0;\n }\n\n let updated = 0;\n\n for (const object of objects)\n {\n if (typeof object?.UpdateShLighting !== \"function\")\n {\n continue;\n }\n object.UpdateShLighting(this.shLightingManager, this.updateContext);\n updated++;\n }\n\n return updated;\n }\n\n /**\n * The scene's own per-frame vertex record (Carbon m_perFrameVS,\n * EveSpaceScene.h:300). Persistent, not arena-leased: it is rewritten each\n * frame and bound once, and the PS fill reads m_upscalingAmount back out of\n * the same pass.\n */\n #perFrameVS = RawData.create(\"EveSpaceScenePerFrameVSData\");\n\n /** Carbon m_perFramePS (EveSpaceScene.h:240). */\n #perFramePS = RawData.create(\"EveSpaceScenePerFramePSData\");\n\n /** The record PopulatePerFrameVSData fills. */\n GetPerFrameVSData()\n {\n return this.#perFrameVS;\n }\n\n /** The record PopulatePerFramePSData fills. */\n GetPerFramePSData()\n {\n return this.#perFramePS;\n }\n\n /**\n * Fills the per-frame VERTEX constants (Carbon\n * EveSpaceScene::PopulatePerFrameVSData, cpp:3015-3068).\n *\n * Adapted in one respect, the same way StampFrameContext is: Carbon reads\n * the camera off `Tr2Renderer` statics and the render-target/viewport sizes\n * off `renderContext.m_esm`, neither of which exists GPU-free here. The\n * driver passes them in `frame` instead. Everything the scene itself owns -\n * sun, fog, env-map rotation, the previous frame's view/projection - is read\n * from the scene, as Carbon does.\n *\n * Matrices are stored TRANSPOSED because the shaders are column_major, with\n * one deliberate exception Carbon calls out at cpp:3023: the value wanted for\n * `ViewInverseTransposeMat` is already a transpose, so transposing it again\n * cancels and the inverse view goes in as-is.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - the engine-supplied state Carbon reads statically\n * @param {Number} [frame.renderTargetWidth]\n * @param {Number} [frame.renderTargetHeight]\n * @param {Number} [frame.aspectRatio]\n * @param {Number} [frame.animationTime] - Tr2Renderer::GetAnimationTime\n * @param {Object|null} [frame.deviceViewport] - {width, height}\n * @param {Object|null} [frame.projectionTransform] - the NON reversed-depth\n * projection, which Carbon uses only to recover the field of view\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer view statics and the ESM's render-target/viewport sizes are engine state; the driver supplies them in `frame`.\")\n PopulatePerFrameVSData(renderContext, frame = {}, out = this.#perFrameVS)\n {\n const view = renderContext.GetViewTransform();\n const projection = renderContext.GetProjection();\n\n // column_major for shaders\n out.SetAndTranspose(\"ViewMat\", view);\n out.SetAndTranspose(\"ProjectionMat\", projection);\n\n // Carbon `view * proj` (row-vector); gl-matrix swaps the operands.\n mat4.multiply(perFrameMatrixScratch, projection, view);\n out.SetAndTranspose(\"ViewProjectionMat\", perFrameMatrixScratch);\n\n // Needs the transposed, but the shader also wants column_major, so it is\n // transpose(transpose(m)) == m (cpp:3023-3024).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n // Carbon `m_projectionLast * m_jitterMatrix` then `m_viewLast * that`.\n mat4.multiply(perFrameLastProjectionScratch, this.jitterMatrix, this.projectionLast);\n out.SetAndTranspose(\"ProjLast\", perFrameLastProjectionScratch);\n out.SetAndTranspose(\"ViewLast\", this.viewLast);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, this.viewLast);\n out.SetAndTranspose(\"ViewProjectionLast\", perFrameMatrixScratch);\n\n // Each scene has a nebula, and that can be rotated and inverted by scaling.\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Guarded so a zero-width fog band cannot divide by zero (cpp:3049-3054).\n let distance = this.fogEnd - this.fogStart;\n if (Math.abs(distance) < 1e-5)\n {\n distance = 1e-5;\n }\n out.Set(\"FogFactors\", [ this.fogEnd / distance, 1 / distance, this.fogMax ]);\n\n // Derived from SetupViewport in Tr2Renderer.cpp (cpp:3056-3062).\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n if (viewport && device)\n {\n out.Set(\"ViewportAdjustment\", [\n viewport.x < 0 ? -1 : 1,\n viewport.y + viewport.height > (frame.renderTargetHeight ?? 0) ? -1 : 1,\n device.width / viewport.width,\n device.height / viewport.height\n ]);\n }\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n return out;\n }\n\n /**\n * Fills the per-frame PIXEL constants (Carbon\n * EveSpaceScene::PopulatePerFramePSData, cpp:3075-3202). Same `frame`\n * adaptation as the vertex fill.\n *\n * The cascaded-shadow block (ShadowMapValues / CascadeRanges /\n * ShadowMatrixVal / SplitInfo) is filled only when a shadow map is passed,\n * exactly as Carbon's `if( shadowMap )` gate does; without one the record\n * keeps the shadows-disabled defaults the catalog declares.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - as PopulatePerFrameVSData, plus:\n * @param {Number} [frame.frameIndex] - Tr2Renderer::GetCurrentFrameCounter\n * @param {Number} [frame.gammaBrightness]\n * @param {Number} [frame.sceneMipLodBias] - the upscaler's bias, plus the\n * scene post-process's own; the upscaling info is engine state\n * @param {Number} [frame.inverseShadowMapAtlasSize] - 0 with no light manager\n * @param {Number} [frame.shadowMapAtlasEntryMinSizeLog2]\n * @param {Object|null} [shadowMap] - the cascaded shadow map, or null\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer statics, the ESM viewport, Tr2LightManager's atlas settings and the upscaler's mip bias are engine state; the driver supplies them in `frame`.\")\n PopulatePerFramePSData(renderContext, frame = {}, shadowMap = null, out = this.#perFramePS)\n {\n const projection = renderContext.GetProjection();\n\n out.SetAndTranspose(\"ViewMat\", renderContext.GetViewTransform());\n\n // transpose(transpose(m)) == m, as in the vertex fill (cpp:3079-3080).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n // The pixel fill alone overrides the sun's alpha with the roughness\n // (cpp:3087) - the vertex fill leaves the blended colour's own alpha.\n out.Set(\"SunDiffuseColor\", [\n this.currentSunColor[0],\n this.currentSunColor[1],\n this.currentSunColor[2],\n this.defaultDiffuseRoughness\n ]);\n\n out.Set(\"AmbientColor\", [ this.ambientColor[0], this.ambientColor[1], this.ambientColor[2] ]);\n out.Set(\"ReflectionIntensity\", this.currentReflectionIntensity);\n out.Set(\"FogColor\", [ this.fogColor[0], this.fogColor[1], this.fogColor[2], this.fogMax ]);\n\n out.Set(\"GammaBrightness\", frame.gammaBrightness ?? 0);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Shadows are disabled by default (cpp:3107).\n out.Set(\"ShadowCameraRange\", [ 1, 0 ]);\n\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n out.Set(\"ViewportOffset\", viewport ? [ viewport.x, viewport.y ] : [ 0, 0 ]);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n\n out.Set(\"FrameIndex\", frame.frameIndex ?? 0);\n out.Set(\"Jittering\", vec4.exactEquals(this.jitter, ZERO_JITTER) ? 0 : 1);\n\n // Carbon stores 1 << m_shadowQuality, not the enum value.\n out.Set(\"ShadowQuality\", 1 << this.shadowQualitySetting);\n\n out.Set(\"InverseShadowMapAtlasSize\", frame.inverseShadowMapAtlasSize ?? 0);\n out.Set(\"ShadowMapAtlasEntryMinSizeLog2\", frame.shadowMapAtlasEntryMinSizeLog2 ?? 0);\n\n out.Set(\"ShadowMapSettings\", [ 1, 1, 0, 0 ]);\n out.Set(\"ShadowLightness\", 0);\n out.Set(\"DepthMapSampleCount\", 1); // legacy\n\n // The reversed-depth projection's _43/_33, which the shader uses to turn a\n // depth sample back into a view-space distance (cpp:3140-3142).\n out.Set(\"ProjectionToView\", [ projection[14], projection[10] ]);\n\n // Carbon resets m_upscalingAmount here and lets the upscaler raise it; with\n // no upscaler the scene stays at 1 and only the post-process bias applies.\n this.upscalingAmount = frame.upscalingAmount ?? 1;\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"SceneMipLodBias\", frame.sceneMipLodBias ?? 0);\n\n if (shadowMap)\n {\n this.#FillShadowCascades(out, shadowMap, renderContext);\n }\n\n // m_perFrameVS.ProjectionMat is already transposed (cpp:3192-3193).\n mat4.transpose(perFrameMatrixScratch, projection);\n mat4.invert(perFrameMatrixScratch, perFrameMatrixScratch);\n out.SetAndTranspose(\"ProjectionInverseMat\", perFrameMatrixScratch);\n\n out.Set(\"Debug\", this.perFrameDebug);\n\n out.Set(\"VolumetricSlices\", VOLUMETRIC_SLICES);\n\n this.volumetricsRenderer?.PopulatePerFrameData?.(out);\n\n return out;\n }\n\n /**\n * The SunData block both fills share (cpp:3035-3039 / 3085-3089). The\n * direction is normalized AND negated: shaders work with the direction TO\n * the light, not the direction it travels.\n */\n #FillSunData(out)\n {\n vec3.normalize(sunDirectionScratch, this.sunDirection);\n out.Set(\"SunDirWorld\", [\n -sunDirectionScratch[0],\n -sunDirectionScratch[1],\n -sunDirectionScratch[2]\n ]);\n out.Set(\"SunDiffuseColor\", this.currentSunColor);\n }\n\n /**\n * FOV both ways - width in x, height in y (cpp:3046-3047 / 3103-3104).\n * Carbon recovers it from the NON reversed-depth projection, so a driver\n * that reverses depth must pass the original in `frame.projectionTransform`.\n */\n #FillFovXY(out, frame)\n {\n const source = frame.projectionTransform;\n const fovY = source ? EveCamera.CalculateFovFromProjection(source) : 0;\n\n out.Set(\"FovXY\", [ fovY * (frame.aspectRatio ?? 1), fovY ]);\n }\n\n /**\n * The cascaded-shadow block (cpp:3163-3190). Each cascade's shadow matrix is\n * rebased into the current view, flipped in y, remapped from (-1,+1) to\n * (0,1), then scaled and offset into its cell of the 8x2 atlas.\n */\n #FillShadowCascades(out, shadowMap, renderContext)\n {\n const split = shadowMap.perSplitData ?? shadowMap.m_perSplitData ?? {};\n\n for (let index = 0; index < 4; index++)\n {\n out.SetIndex(\"ShadowMapValues\", index, split.ShadowMapValues?.[index] ?? ZERO4);\n }\n\n for (let index = 0; index < 16; index++)\n {\n out.SetIndex(\"CascadeRanges\", index, split.CascadeRanges?.[index] ?? ZERO4);\n }\n\n const inverseView = renderContext.GetInverseViewTransform();\n const cellsX = 8;\n const cellsY = 2;\n\n for (let index = 0; index < CjsPerFrameLayouts.SHADOW_FRUSTUM_COUNT; index++)\n {\n const stored = split.ShadowMatrixVal?.[index];\n\n if (!stored)\n {\n continue;\n }\n\n // Carbon `inverseView * Transpose(stored)`; gl-matrix swaps operands.\n mat4.transpose(perFrameLastProjectionScratch, stored);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, inverseView);\n\n // Flip y and change the range from (-1, +1) to (0, 1).\n mat4.multiply(perFrameMatrixScratch, SHADOW_CLIP_TO_UV, perFrameMatrixScratch);\n\n // Then into this cascade's cell of the 8x2 atlas.\n mat4.identity(perFrameLastProjectionScratch);\n mat4.translate(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n (index % cellsX) / cellsX,\n Math.floor(index / cellsX) / cellsY,\n 0\n ]);\n mat4.scale(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n 1 / cellsX,\n 1 / cellsY,\n 1\n ]);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, perFrameMatrixScratch);\n\n out.SetAndTransposeIndex(\"ShadowMatrixVal\", index, perFrameMatrixScratch);\n }\n\n out.Set(\"SplitInfo\", split.SplitInfo ?? ZERO4);\n }\n\n /** Carbon method ReregisterEntities (MAP_METHOD_AND_WRAP, cpp:4064-4089).\n * Guarded no-op after ClearComponentRegistry has nulled the registry\n * (destroy-only path; Carbon would never call this afterwards). */\n @carbon.method\n @impl.implemented\n ReregisterEntities()\n {\n if (!this.componentRegistry)\n {\n return;\n }\n\n for (const collection of [this.objects, this.backgroundObjects, this.planets])\n {\n for (const object of collection)\n {\n if (object instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(object);\n }\n }\n }\n if (this.cameraAttachmentParent instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(this.cameraAttachmentParent);\n }\n }\n\n /** Carbon method ClearComponentRegistry (EveSpaceScene.cpp:4091-4099, called\n * from the destructor cpp:322). Entity component-state is deliberately NOT\n * cleared beyond what Clear() does - either the scene is being destroyed\n * (entities go too) or entities move to another scene and re-register there.\n * The JS registry Clear() additionally detaches entity.registry when it\n * points at this registry - strictly more hygienic than Carbon; kept. */\n @carbon.method\n @impl.implemented\n ClearComponentRegistry()\n {\n this.componentRegistry?.Clear();\n this.componentRegistry = null;\n }\n\n /** Carbon method GetPostProcessDebug (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n GetPostProcessDebug()\n {\n return this.postProcessDebug;\n }\n\n /** Carbon method UpdateScene -> UpdateSceneFromScript (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n UpdateScene(time)\n {\n return this.Update(time, time);\n }\n\n static EveVisualizeMethod = Object.freeze({\n VM_NONE: 0,\n VM_TEXCOORD0: 1,\n VM_TEXCOORD1: 2,\n VM_WHITE: 3,\n VM_OVERDRAW: 4,\n VW_WIREFRAME: 5,\n VW_LIGHT_COUNT: 6,\n VM_COUNT: 7,\n });\n\n static ShadowQuality = Object.freeze({\n SHADOW_DISABLED: 0,\n SHADOW_LOW: 1,\n SHADOW_HIGH: 2,\n SHADOW_RAYTRACED: 3,\n });\n\n /**\n * Carbon SimplePriorityBlend (PriorityBlend.h:371-413) specialized to the\n * IEveLightingOverride::Overrides value type\n * { sunColor: vec4, sunIntensity, backgroundIntensity, reflectionIntensity }\n * (EveChildLightingOverride.h:15-32) - `+` and `* weight` componentwise.\n * Walks the (already priority-desc-sorted) list in equal-priority groups:\n * factor = (1 / max(groupTotal, 1)) * remainingWeight\n * then subtracts the UNCLAMPED group total from remainingWeight. Two quirks\n * preserved exactly: (a) a group with total intensity 0.3 contributes at\n * weight 0.3*remaining and leaves 0.7 for lower priorities; (b) a group with\n * total 2 is normalized to consume exactly remainingWeight and terminates\n * (remaining goes to -1).\n * @param {Array} sources - [{ priority, intensity, value }] sorted high->low\n * @returns {{ sunColor: Float32Array, sunIntensity: Number,\n * backgroundIntensity: Number, reflectionIntensity: Number }}\n */\n static #SimplePriorityBlend(sources)\n {\n const result = {\n sunColor: vec4.create(),\n sunIntensity: 0,\n backgroundIntensity: 0,\n reflectionIntensity: 0\n };\n let remainingWeight = 1;\n\n for (let first = 0; first < sources.length;)\n {\n // The range of sources sharing the current priority.\n let last = first + 1;\n while (last < sources.length && sources[last].priority === sources[first].priority)\n {\n last++;\n }\n\n let totalPriorityIntensity = 0;\n for (let index = first; index < last; index++)\n {\n totalPriorityIntensity += sources[index].intensity;\n }\n if (totalPriorityIntensity === 0)\n {\n first = last;\n continue;\n }\n\n const normalizationFactor = 1 / Math.max(totalPriorityIntensity, 1) * remainingWeight;\n\n for (let index = first; index < last; index++)\n {\n const weight = sources[index].intensity * normalizationFactor;\n const value = sources[index].value;\n vec4.scaleAndAdd(result.sunColor, result.sunColor, value.sunColor, weight);\n result.sunIntensity += value.sunIntensity * weight;\n result.backgroundIntensity += value.backgroundIntensity * weight;\n result.reflectionIntensity += value.reflectionIntensity * weight;\n }\n\n // Subtracts the UNCLAMPED total (PriorityBlend.h:405).\n remainingWeight -= totalPriorityIntensity;\n first = last;\n if (remainingWeight <= 0)\n {\n break;\n }\n }\n return result;\n }\n\n}\n"],"names":["sunDirectionScratch","vec3","create","perFrameMatrixScratch","mat4","perFrameLastProjectionScratch","ZERO4","Object","freeze","ZERO_JITTER","vec4","VOLUMETRIC_SLICES","SHADOW_CLIP_TO_UV","fromValues","IDENTITY","_EveSpaceScene","_identity","EveSpaceScene","CjsModel","e","_init_visualizeMethod","_init_extra_visualizeMethod","_init_envMap1ResPath","_init_extra_envMap1ResPath","_init_envMap2ResPath","_init_extra_envMap2ResPath","_init_envMap3ResPath","_init_extra_envMap3ResPath","_init_lowQualityNebulaResPath","_init_extra_lowQualityNebulaResPath","_init_lowQualityNebulaMixResPath","_init_extra_lowQualityNebulaMixResPath","_init_envMapResPath","_init_extra_envMapResPath","_init_fogColor","_init_extra_fogColor","_init_sunDirection","_init_extra_sunDirection","_init_ambientColor","_init_extra_ambientColor","_init_shLightingManager","_init_extra_shLightingManager","_init_combinedPostProcessAttributes","_init_extra_combinedPostProcessAttributes","_init_dataTextureMgr","_init_extra_dataTextureMgr","_init_dynamicObjectReflectionEnabled","_init_extra_dynamicObjectReflectionEnabled","_init_componentRegistry","_init_extra_componentRegistry","_init_cameraAttachmentParent","_init_extra_cameraAttachmentParent","_init_postProcessDebug","_init_extra_postProcessDebug","_init_curveSets","_init_extra_curveSets","_init_defaultDiffuseRoughness","_init_extra_defaultDiffuseRoughness","_init_fogStart","_init_extra_fogStart","_init_fogEnd","_init_extra_fogEnd","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_distanceFields","_init_extra_distanceFields","_init_backgroundEffect","_init_extra_backgroundEffect","_init_backgroundReflectionIntensity","_init_extra_backgroundReflectionIntensity","_init_nebulaIntensity","_init_extra_nebulaIntensity","_init_display","_init_extra_display","_init_backgroundRenderingEnabled","_init_extra_backgroundRenderingEnabled","_init_update","_init_extra_update","_init_impostorManager","_init_extra_impostorManager","_init_lensflares","_init_extra_lensflares","_init_externalParameters","_init_extra_externalParameters","_init_fogMax","_init_extra_fogMax","_init_staticParticles","_init_extra_staticParticles","_init_debugRenderer","_init_extra_debugRenderer","_init_objects","_init_extra_objects","_init_uiObjects","_init_extra_uiObjects","_init_backgroundObjects","_init_extra_backgroundObjects","_init_planets","_init_extra_planets","_init_raytracingManager","_init_extra_raytracingManager","_init_reflectionBackLightingColor","_init_extra_reflectionBackLightingColor","_init_reflectionBackLightingContrast","_init_extra_reflectionBackLightingContrast","_init_reflectionProbe","_init_extra_reflectionProbe","_init_volumetricsRenderer","_init_extra_volumetricsRenderer","_init_starfield","_init_extra_starfield","_init_planetScale","_init_extra_planetScale","_init_planetCameraScale","_init_extra_planetCameraScale","_init_subSurfaceScattering","_init_extra_subSurfaceScattering","_init_shadowQualitySetting","_init_extra_shadowQualitySetting","_init_sunDiffuseColor","_init_extra_sunDiffuseColor","_init_sunDiffuseColorWithDynamicLights","_init_extra_sunDiffuseColorWithDynamicLights","_init_envMapRotation","_init_extra_envMapRotation","_init_ballpark","_init_extra_ballpark","_init_name","_init_extra_name","_init_sunBall","_init_extra_sunBall","_init_postprocess","_init_extra_postprocess","_init_virtualCameraSystem","_init_extra_virtualCameraSystem","_init_warpTunnel","_init_extra_warpTunnel","_init_perFrameDebug","_init_extra_perFrameDebug","_init_cascadedShadowMap","_init_extra_cascadedShadowMap","_init_updateTime","_init_extra_updateTime","_init_useSunDiffuseColorWithDynamicLights","_init_extra_useSunDiffuseColorWithDynamicLights","_init_envMap","_init_extra_envMap","_init_envMap2","_init_extra_envMap2","_init_envMap3","_init_extra_envMap3","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","readwrite","int32","schema","enum","notify","persist","string","color","persistOnly","model","read","objectRef","boolean","rawStruct","list","float32","quat","float64","carbon","method","impl","adapted","notImplemented","implemented","reason","visualizeMethod","envMap1ResPath","envMap2ResPath","envMap3ResPath","lowQualityNebulaResPath","lowQualityNebulaMixResPath","envMapResPath","fogColor","sunDirection","ambientColor","shLightingManager","combinedPostProcessAttributes","Tr2PostProcessAttributes","dataTextureMgr","dynamicObjectReflectionEnabled","componentRegistry","EveComponentRegistry","cameraAttachmentParent","EveEffectRoot2","postProcessDebug","curveSets","defaultDiffuseRoughness","fogStart","fogEnd","reflectionIntensity","distanceFields","backgroundEffect","backgroundReflectionIntensity","nebulaIntensity","display","backgroundRenderingEnabled","update","impostorManager","lensflares","externalParameters","fogMax","staticParticles","debugRenderer","objects","uiObjects","backgroundObjects","planets","raytracingManager","reflectionBackLightingColor","reflectionBackLightingContrast","reflectionProbe","volumetricsRenderer","starfield","planetScale","planetCameraScale","subSurfaceScattering","shadowQualitySetting","sunDiffuseColor","sunDiffuseColorWithDynamicLights","envMapRotation","ballpark","name","sunBall","postprocess","virtualCameraSystem","warpTunnel","perFrameDebug","cascadedShadowMap","updateTime","useSunDiffuseColorWithDynamicLights","envMap1","envMap2","envMap3","updateContext","EveUpdateContext","currentSunColor","currentNebulaIntensity","currentReflectionIntensity","viewLast","projectionLast","jitterMatrix","jitter","upscalingAmount","dynamicLightingEnabled","enablePostProcessDebugging","StampFrameContext","frustum","visibilityThreshold","lowDetailThreshold","mediumDetailThreshold","highDetailThreshold","lodFactor","raytracingEnabled","context","SetFrustum","SetHighDetailThreshold","SetMediumDetailThreshold","SetLowDetailThreshold","SetVisibilityThreshold","SetLodFactor","Update","realTime","simTime","SetTime","UpdateOrigin","dataTextureManager","object","UpdateSyncronous","UpdateAsyncronous","distanceField","lensflare","curveSet","UpdatePostProcessAttributes","normalize","negate","PickObject","args","Error","PickAsyncObject","PickObjectAndAreaID","PickInfinity","x","y","projection","view","viewport","out","resolved","renderContext","GetViewport","projected","screenToProjection","ray","convertProjectionCoordToWorldPickRay","copy","direction","UpdateVisibility","inverseView","SetTransform","planet","UpdateZOnlyVisibility","GetRenderables","GetFrustum","FromPostProcess","SCENE_DEFAULT_PRIORITY","sources","owner","GetComponents","EveComponentType","PostProcessOwner","attributes","GetPostProcessAttributes","push","length","Tr2PostProcess2","sort","a","b","priority","observer","CreateDebugObserver","MergeInto","GetDict","SetDynamicExposure","GetDynamicExposureIfAvailable","SetTaa","GetTaaIfAvailable","SetTonemapping","GetTonemappingIfAvailable","SetFog","GetFogIfAvailable","SetGodRays","GetGodRaysIfAvailable","SetGenericEffect","GetGenericEffectIfAvailable","MEDIUM_PRIORITY","GetPostProcess","BlendLightingOverrides","overrides","component","EveLightingOverride","GetOverrides","sunColorSource","sunIntensity","Math","max","baselineSunColor","scale","intensity","value","sunColor","backgroundIntensity","over","GatherLights","lightManager","SetShadowQuality","Clear","AdjustLightCutoff","GetLodFactor","LightOwner","GetLights","ResolveLightData","UpdateShLighting","updated","RawData","GetPerFrameVSData","GetPerFramePSData","PopulatePerFrameVSData","frame","GetViewTransform","GetProjection","SetAndTranspose","multiply","transpose","GetInverseViewTransform","fromQuat","Set","renderTargetWidth","renderTargetHeight","distance","abs","device","deviceViewport","height","width","animationTime","PopulatePerFramePSData","shadowMap","gammaBrightness","frameIndex","exactEquals","inverseShadowMapAtlasSize","shadowMapAtlasEntryMinSizeLog2","sceneMipLodBias","invert","PopulatePerFrameData","#FillSunData","#FillFovXY","source","projectionTransform","fovY","EveCamera","CalculateFovFromProjection","aspectRatio","#FillShadowCascades","split","perSplitData","m_perSplitData","index","SetIndex","ShadowMapValues","CascadeRanges","cellsX","cellsY","CjsPerFrameLayouts","SHADOW_FRUSTUM_COUNT","stored","ShadowMatrixVal","identity","translate","floor","SetAndTransposeIndex","SplitInfo","ReregisterEntities","collection","EveEntity","ReRegister","ClearComponentRegistry","GetPostProcessDebug","UpdateScene","time","EveVisualizeMethod","VM_NONE","VM_TEXCOORD0","VM_TEXCOORD1","VM_WHITE","VM_OVERDRAW","VW_WIREFRAME","VW_LIGHT_COUNT","VM_COUNT","ShadowQuality","SHADOW_DISABLED","SHADOW_LOW","SHADOW_HIGH","SHADOW_RAYTRACED","#SimplePriorityBlend","result","remainingWeight","first","last","totalPriorityIntensity","normalizationFactor","weight","scaleAndAdd","constructor"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { io, type, carbon, impl, schema } from '@carbonenginejs/runtime-utils/sc
|
|
|
8
8
|
import { TriBatchType } from '@carbonenginejs/runtime-utils/graphics';
|
|
9
9
|
import { Tr2Transform as _Tr2Transform } from '../../generated/trinityCore/Tr2Transform.js';
|
|
10
10
|
import { EveLODHelper } from '../EveLODHelper.js';
|
|
11
|
+
import { TR2_PICK_TYPE_DEFAULT, Tr2PickType } from '../../trinityCore/Tr2PickType.js';
|
|
11
12
|
import { Tr2Lod } from '@carbonenginejs/runtime-utils/const/trinity';
|
|
12
13
|
|
|
13
14
|
let _initProto, _initClass, _init_meshLod, _init_extra_meshLod, _init_children, _init_extra_children, _init_overrideBoundsMin, _init_extra_overrideBoundsMin, _init_overrideBoundsMax, _init_extra_overrideBoundsMax, _init_particleEmitters, _init_extra_particleEmitters, _init_particleSystems, _init_extra_particleSystems, _init_lodLevel, _init_extra_lodLevel, _init_hideOnLowQuality, _init_extra_hideOnLowQuality, _init_visibilityThreshold, _init_extra_visibilityThreshold, _init_observers, _init_extra_observers, _init_useLodLevel, _init_extra_useLodLevel;
|
|
@@ -31,7 +32,7 @@ new class extends _identity {
|
|
|
31
32
|
} = _applyDecs2311(this, [type.define({
|
|
32
33
|
className: "EveTransform",
|
|
33
34
|
family: "eve/spaceObject"
|
|
34
|
-
})], [[[io, io.persist, void 0, type.model("Tr2MeshBase")], 16, "meshLod"], [[io, io.persist, void 0, type.list("IEveTransform")], 16, "children"], [[io, io.persist, type, type.vec3], 16, "overrideBoundsMin"], [[io, io.persist, type, type.vec3], 16, "overrideBoundsMax"], [[io, io.persist, void 0, type.list("ITr2GenericEmitter")], 16, "particleEmitters"], [[io, io.persist, void 0, type.list("Tr2ParticleSystem")], 16, "particleSystems"], [[io, io.read, type, type.int32, void 0, schema.enum("Tr2Lod")], 16, "lodLevel"], [[io, io.persist, type, type.boolean], 16, "hideOnLowQuality"], [[io, io.persist, type, type.float32], 16, "visibilityThreshold"], [[io, io.persist, void 0, type.list("TriObserverLocal")], 16, "observers"], [[io, io.persist, type, type.boolean], 16, "useLodLevel"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderer-owned modifier state is supplied through the update context; standard SRT and parent composition stay in Trinity.")], 18, "UpdateViewDependentData"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Particle updates are forwarded through backend-neutral emitter and system contracts; device particle managers remain engine-owned.")], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Browser frustum and quality state are read from the explicit update context instead of renderer globals.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Constant-buffer layout/packing is engine-owned; Trinity Allocs the record from the accumulator's store and Sets logical values by name (the store transposes per the engine layout).")], 18, "GetPerObjectData"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Declared on Tr2Transform in Carbon; the generated base class stays data-only.")], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Declared on Tr2Transform in Carbon; the generated base class stays data-only.")], 18, "HasTransparentBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.")], 18, "GetSortValue"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldRotation"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLODLevel"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplay"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveSetDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRangeDuration"]], 0, void 0, _Tr2Transform));
|
|
35
|
+
})], [[[io, io.persist, void 0, type.model("Tr2MeshBase")], 16, "meshLod"], [[io, io.persist, void 0, type.list("IEveTransform")], 16, "children"], [[io, io.persist, type, type.vec3], 16, "overrideBoundsMin"], [[io, io.persist, type, type.vec3], 16, "overrideBoundsMax"], [[io, io.persist, void 0, type.list("ITr2GenericEmitter")], 16, "particleEmitters"], [[io, io.persist, void 0, type.list("Tr2ParticleSystem")], 16, "particleSystems"], [[io, io.read, type, type.int32, void 0, schema.enum("Tr2Lod")], 16, "lodLevel"], [[io, io.persist, type, type.boolean], 16, "hideOnLowQuality"], [[io, io.persist, type, type.float32], 16, "visibilityThreshold"], [[io, io.persist, void 0, type.list("TriObserverLocal")], 16, "observers"], [[io, io.persist, type, type.boolean], 16, "useLodLevel"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Renderer-owned modifier state is supplied through the update context; standard SRT and parent composition stay in Trinity.")], 18, "UpdateViewDependentData"], [[carbon, carbon.method, impl, impl.implemented], 18, "Update"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateSyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Particle updates are forwarded through backend-neutral emitter and system contracts; device particle managers remain engine-owned.")], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Browser frustum and quality state are read from the explicit update context instead of renderer globals.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Constant-buffer layout/packing is engine-owned; Trinity Allocs the record from the accumulator's store and Sets logical values by name (the store transposes per the engine layout).")], 18, "GetPerObjectData"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Declared on Tr2Transform in Carbon; the generated base class stays data-only.")], 18, "GetBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPickingBatches"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetID"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Declared on Tr2Transform in Carbon; the generated base class stays data-only.")], 18, "HasTransparentBatches"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.")], 18, "GetSortValue"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldPosition"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetWorldRotation"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLODLevel"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetDisplay"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSets"], [[carbon, carbon.method, impl, impl.implemented], 18, "PlayCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "StopCurveSet"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetCurveSetDuration"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRangeDuration"]], 0, void 0, _Tr2Transform));
|
|
35
36
|
}
|
|
36
37
|
/** m_meshLod (Tr2MeshBasePtr) [READWRITE, PERSIST] */
|
|
37
38
|
meshLod = (_initProto(this), _init_meshLod(this, null));
|
|
@@ -220,6 +221,47 @@ new class extends _identity {
|
|
|
220
221
|
return false;
|
|
221
222
|
}
|
|
222
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Carbon EveTransform::GetPickingBatches (EveTransform.cpp:?): collects the
|
|
226
|
+
* geometry a pick pass should test, by mask.
|
|
227
|
+
*
|
|
228
|
+
* Simpler than the hull's version in two ways that are deliberate: there are
|
|
229
|
+
* no decals or overlay effects to pull into the opaque bit, and the
|
|
230
|
+
* transparent bit goes through this class's own `GetBatches` rather than
|
|
231
|
+
* reaching into the mesh's areas - so a hidden transform contributes nothing
|
|
232
|
+
* at all, instead of suppressing only its transparent pass.
|
|
233
|
+
*
|
|
234
|
+
* Inherited by `EveMissileWarhead` and `EveRootTransform`, which is how
|
|
235
|
+
* Carbon gives them a pickable surface without declaring one.
|
|
236
|
+
*
|
|
237
|
+
* @param {Object} batches - the picking accumulator
|
|
238
|
+
* @param {Number} pickTypes - a Tr2PickType mask
|
|
239
|
+
* @param {Object} perObjectData - this transform's per-object record
|
|
240
|
+
*/
|
|
241
|
+
GetPickingBatches(batches, pickTypes = TR2_PICK_TYPE_DEFAULT, perObjectData = null) {
|
|
242
|
+
if (pickTypes & Tr2PickType.PICK_TYPE_PICKING) {
|
|
243
|
+
this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_PICKING, perObjectData);
|
|
244
|
+
}
|
|
245
|
+
if (pickTypes & Tr2PickType.PICK_TYPE_OPAQUE) {
|
|
246
|
+
this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_OPAQUE, perObjectData);
|
|
247
|
+
}
|
|
248
|
+
if (pickTypes & Tr2PickType.PICK_TYPE_TRANSPARENT) {
|
|
249
|
+
this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_TRANSPARENT, perObjectData);
|
|
250
|
+
this.GetBatches(batches, TriBatchType.TRIBATCHTYPE_ADDITIVE, perObjectData);
|
|
251
|
+
}
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Carbon EveTransform::GetID (EveTransform.h:83-86): a picked area resolves
|
|
257
|
+
* to this transform, so the area index is deliberately ignored.
|
|
258
|
+
* @param {Number} [_areaID] - the picked area, unused by this class
|
|
259
|
+
* @returns {EveTransform} this
|
|
260
|
+
*/
|
|
261
|
+
GetID(_areaID = 0) {
|
|
262
|
+
return this;
|
|
263
|
+
}
|
|
264
|
+
|
|
223
265
|
/**
|
|
224
266
|
* Reports whether the mesh has any transparent areas, which tells the renderer
|
|
225
267
|
* to route this node through the sorted transparent pass.
|