@carbonenginejs/runtime-trinity 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/curves/CjsGrannyCurves.js +12 -13
- package/dist/curves/CjsGrannyCurves.js.map +1 -1
- package/dist/eve/EveBannerSet.js +20 -1
- package/dist/eve/EveBannerSet.js.map +1 -1
- package/dist/eve/EveBoosterSet2.js +19 -1
- package/dist/eve/EveBoosterSet2.js.map +1 -1
- package/dist/eve/EveComponentTypes.js +116 -0
- package/dist/eve/EveComponentTypes.js.map +1 -0
- package/dist/eve/EveHazeSet.js +18 -1
- package/dist/eve/EveHazeSet.js.map +1 -1
- package/dist/eve/EvePlaneSet.js +19 -1
- package/dist/eve/EvePlaneSet.js.map +1 -1
- package/dist/eve/EveSpotlightSet.js +18 -1
- package/dist/eve/EveSpotlightSet.js.map +1 -1
- package/dist/eve/EveSpriteLineSet.js +18 -1
- package/dist/eve/EveSpriteLineSet.js.map +1 -1
- package/dist/eve/EveSpriteSet.js +18 -1
- package/dist/eve/EveSpriteSet.js.map +1 -1
- package/dist/eve/EveUpdateContext.js +195 -31
- package/dist/eve/EveUpdateContext.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js +23 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js +43 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/eve/child/EveChildContainer.js +95 -60
- package/dist/eve/child/EveChildContainer.js.map +1 -1
- package/dist/eve/child/EveChildFogVolume.js +14 -1
- package/dist/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/eve/child/EveChildInstancedMeshes.js +43 -1
- package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
- package/dist/eve/child/EveChildLightingOverride.js +14 -1
- package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/eve/child/EveChildMesh.js +121 -80
- package/dist/eve/child/EveChildMesh.js.map +1 -1
- package/dist/eve/child/EveChildTransform.js +27 -17
- package/dist/eve/child/EveChildTransform.js.map +1 -1
- package/dist/eve/index.js +2 -0
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +14 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch.js +11 -1
- package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch2.js +14 -1
- package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch3.js +24 -1
- package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/eve/scene/EveSpaceScene.js +443 -16
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js +28 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/eve/spaceObject/EveMobile.js +25 -1
- package/dist/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js +59 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/generated/eve/child/EveChildCloud2.js +88 -5
- package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/generated/eve/child/EveChildExplosion.js +17 -1
- package/dist/generated/eve/child/EveChildExplosion.js.map +1 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js +29 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js.map +1 -1
- package/dist/generated/eve/child/EveChildParticleSystem.js +32 -24
- package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/generated/eve/child/EveChildPlug.js +23 -1
- package/dist/generated/eve/child/EveChildPlug.js.map +1 -1
- package/dist/generated/eve/child/EveChildPostProcessVolume.js +27 -14
- package/dist/generated/eve/child/EveChildPostProcessVolume.js.map +1 -1
- package/dist/generated/eve/child/EveChildRef.js +17 -1
- package/dist/generated/eve/child/EveChildRef.js.map +1 -1
- package/dist/generated/eve/child/EveChildSocket.js +17 -1
- package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js +43 -40
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js +53 -49
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
- package/dist/generated/eve/scene/EveComponentRegistry.js +11 -0
- package/dist/generated/eve/scene/EveComponentRegistry.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowFrustum.js +74 -22
- package/dist/generated/eve/scene/TriShadowFrustum.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +128 -26
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +1 -1
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js +37 -24
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +29 -28
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/generated/eve/spaceObject/EveShip2.js +39 -19
- package/dist/generated/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/trinityCore/TriFrustum.js +374 -0
- package/dist/trinityCore/TriFrustum.js.map +1 -0
- package/dist/trinityCore/TriFrustumOrtho.js +158 -0
- package/dist/trinityCore/TriFrustumOrtho.js.map +1 -0
- package/dist/trinityCore/index.js +2 -0
- package/dist/trinityCore/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -7,6 +7,7 @@ import { vec3 } from '@carbonenginejs/core-math/vec3';
|
|
|
7
7
|
import { vec4 } from '@carbonenginejs/core-math/vec4';
|
|
8
8
|
import { TriBatchType } from '@carbonenginejs/runtime-const/graphics';
|
|
9
9
|
import { Tr2Lod } from '../../../eve/EveLODHelper.js';
|
|
10
|
+
import { ShouldReflect, EveComponentType } from '../../../eve/EveComponentTypes.js';
|
|
10
11
|
|
|
11
12
|
let _initProto, _initClass, _init_reflectionMode, _init_extra_reflectionMode, _init_particleEmitters, _init_extra_particleEmitters, _init_particleSystems, _init_extra_particleSystems, _init_transformModifiers, _init_extra_transformModifiers, _init_display, _init_extra_display, _init_name, _init_extra_name, _init_mesh, _init_extra_mesh, _init_lodClampLow, _init_extra_lodClampLow, _init_lodSphereRadius, _init_extra_lodSphereRadius, _init_useDynamicLod, _init_extra_useDynamicLod, _init_lodFactorLow, _init_extra_lodFactorLow, _init_lodFactorMedium, _init_extra_lodFactorMedium, _init_minScreenSize, _init_extra_minScreenSize, _init_currentScreenSize, _init_extra_currentScreenSize;
|
|
12
13
|
|
|
@@ -21,7 +22,7 @@ new class extends _identity {
|
|
|
21
22
|
} = _applyDecs2311(this, [type.define({
|
|
22
23
|
className: "EveChildParticleSystem",
|
|
23
24
|
family: "eve/child"
|
|
24
|
-
})], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ReflectionMode")], 16, "reflectionMode"], [[io, io.persist, void 0, type.list("ITr2GenericEmitter")], 16, "particleEmitters"], [[io, io.persist, void 0, type.list("Tr2ParticleSystem")], 16, "particleSystems"], [[io, io.persist, void 0, type.list("IEveChildTransformModifier")], 16, "transformModifiers"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.model("Tr2InstancedMesh")], 16, "mesh"], [[io, io.persist, type, type.uint32], 16, "lodClampLow"], [[io, io.persist, type, type.float32], 16, "lodSphereRadius"], [[io, io.persist, type, type.boolean], 16, "useDynamicLod"], [[io, io.persist, type, type.float32], 16, "lodFactorLow"], [[io, io.persist, type, type.float32], 16, "lodFactorMedium"], [[io, io.persist, type, type.float32], 16, "minScreenSize"], [[io, io.read, type, type.float32], 16, "currentScreenSize"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("
|
|
25
|
+
})], [[[io, io.notify, io, io.persist, type, type.int32, void 0, schema.enum("ReflectionMode")], 16, "reflectionMode"], [[io, io.persist, void 0, type.list("ITr2GenericEmitter")], 16, "particleEmitters"], [[io, io.persist, void 0, type.list("Tr2ParticleSystem")], 16, "particleSystems"], [[io, io.persist, void 0, type.list("IEveChildTransformModifier")], 16, "transformModifiers"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.model("Tr2InstancedMesh")], 16, "mesh"], [[io, io.persist, type, type.uint32], 16, "lodClampLow"], [[io, io.persist, type, type.float32], 16, "lodSphereRadius"], [[io, io.persist, type, type.boolean], 16, "useDynamicLod"], [[io, io.persist, type, type.float32], 16, "lodFactorLow"], [[io, io.persist, type, type.float32], 16, "lodFactorMedium"], [[io, io.persist, type, type.float32], 16, "minScreenSize"], [[io, io.read, type, type.float32], 16, "currentScreenSize"], [[carbon, carbon.method, impl, impl.implemented], 18, "Initialize"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Carbon re-registers on m_reflectionMode/m_display Var edits; JS forwards every OnModified to the EveEntity ReRegister lifecycle.")], 18, "OnModified"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.")], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.")], 18, "IsVisible"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "HasTransparentBatches"], [[carbon, carbon.method, impl, impl.notImplemented], 18, "GetBatches"], [[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.notImplemented], 18, "GetPerObjectData"], [[carbon, carbon.method, impl, impl.noop], 18, "UpdateSyncronous"], [[carbon, carbon.method, void 0, carbon.contextual(["camera"]), impl, impl.adapted, void 0, impl.reason("Renderer-global frustum state is read from the update context, and emitter/system updates use the backend-neutral argument record.")], 18, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("CarbonEngineJS uses an out-last signature and returns the matrix when no output is supplied.")], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "ChangeLOD"], [[carbon, carbon.method, impl, impl.implemented], 18, "AddTransformModifier"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"]], 0, void 0, _EveChildTransform));
|
|
25
26
|
}
|
|
26
27
|
/** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */
|
|
27
28
|
reflectionMode = (_initProto(this), _init_reflectionMode(this, 3));
|
|
@@ -88,9 +89,9 @@ new class extends _identity {
|
|
|
88
89
|
return true;
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
/**
|
|
92
|
-
* Carbon re-registers the renderable component when m_reflectionMode or
|
|
93
|
-
* m_display change (EveChildParticleSystem.cpp:71-78).
|
|
92
|
+
/**
|
|
93
|
+
* Carbon re-registers the renderable component when m_reflectionMode or
|
|
94
|
+
* m_display change (EveChildParticleSystem.cpp:71-78).
|
|
94
95
|
*/
|
|
95
96
|
OnModified(_value) {
|
|
96
97
|
this.ReRegister?.();
|
|
@@ -108,10 +109,10 @@ new class extends _identity {
|
|
|
108
109
|
return super.Setup(scale, rotation, translation, lowestLodVisible);
|
|
109
110
|
}
|
|
110
111
|
|
|
111
|
-
/**
|
|
112
|
-
* Frustum/screen-size visibility against the mesh bound and the LOD probe
|
|
113
|
-
* sphere, then per-system view-dependent updates
|
|
114
|
-
* (EveChildParticleSystem.cpp:100-121).
|
|
112
|
+
/**
|
|
113
|
+
* Frustum/screen-size visibility against the mesh bound and the LOD probe
|
|
114
|
+
* sphere, then per-system view-dependent updates
|
|
115
|
+
* (EveChildParticleSystem.cpp:100-121).
|
|
115
116
|
*/
|
|
116
117
|
UpdateVisibility(updateContext, _parentTransform, _parentLod) {
|
|
117
118
|
const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;
|
|
@@ -130,9 +131,9 @@ new class extends _identity {
|
|
|
130
131
|
}
|
|
131
132
|
}
|
|
132
133
|
|
|
133
|
-
/**
|
|
134
|
-
* Stateless visibility probe used by the entity layer
|
|
135
|
-
* (EveChildParticleSystem.cpp:123-127).
|
|
134
|
+
/**
|
|
135
|
+
* Stateless visibility probe used by the entity layer
|
|
136
|
+
* (EveChildParticleSystem.cpp:123-127).
|
|
136
137
|
*/
|
|
137
138
|
IsVisible(updateContext) {
|
|
138
139
|
const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;
|
|
@@ -140,9 +141,9 @@ new class extends _identity {
|
|
|
140
141
|
return frustum?.IsSphereVisible?.(this.#boundingSphere) !== false && Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity) >= this.minScreenSize * lodFactor;
|
|
141
142
|
}
|
|
142
143
|
|
|
143
|
-
/**
|
|
144
|
-
* Sorts particles and publishes this child as a renderable when visible
|
|
145
|
-
* (EveChildParticleSystem.cpp:130-143).
|
|
144
|
+
/**
|
|
145
|
+
* Sorts particles and publishes this child as a renderable when visible
|
|
146
|
+
* (EveChildParticleSystem.cpp:130-143).
|
|
146
147
|
*/
|
|
147
148
|
GetRenderables(renderables = []) {
|
|
148
149
|
if (!this.#isVisible) {
|
|
@@ -192,10 +193,10 @@ new class extends _identity {
|
|
|
192
193
|
/** Carbon's synchronous pass is empty (EveChildParticleSystem.cpp:197-199). */
|
|
193
194
|
UpdateSyncronous(_updateContext, _params) {}
|
|
194
195
|
|
|
195
|
-
/**
|
|
196
|
-
* Per-frame async update (EveChildParticleSystem.cpp:201-280): rebuild the
|
|
197
|
-
* world transform, fold the transform modifiers, rebuild the bounding and
|
|
198
|
-
* LOD spheres, then drive the particle systems and emitters.
|
|
196
|
+
/**
|
|
197
|
+
* Per-frame async update (EveChildParticleSystem.cpp:201-280): rebuild the
|
|
198
|
+
* world transform, fold the transform modifiers, rebuild the bounding and
|
|
199
|
+
* LOD spheres, then drive the particle systems and emitters.
|
|
199
200
|
*/
|
|
200
201
|
UpdateAsyncronous(updateContext, params) {
|
|
201
202
|
mat4.copy(this.#worldTransformLast, this.worldTransform);
|
|
@@ -271,9 +272,9 @@ new class extends _identity {
|
|
|
271
272
|
return this.worldTransform;
|
|
272
273
|
}
|
|
273
274
|
|
|
274
|
-
/**
|
|
275
|
-
* Clamps each system's particle budget when the parent's LOD changed
|
|
276
|
-
* (EveChildParticleSystem.cpp:295-318).
|
|
275
|
+
/**
|
|
276
|
+
* Clamps each system's particle budget when the parent's LOD changed
|
|
277
|
+
* (EveChildParticleSystem.cpp:295-318).
|
|
277
278
|
*/
|
|
278
279
|
ChangeLOD(lod) {
|
|
279
280
|
if (!this.useDynamicLod) {
|
|
@@ -296,9 +297,16 @@ new class extends _identity {
|
|
|
296
297
|
this.transformModifiers.push(modifier);
|
|
297
298
|
}
|
|
298
299
|
|
|
299
|
-
/** Carbon
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
/** Carbon EveChildParticleSystem::RegisterComponents (cpp:58-68):
|
|
301
|
+
* ReflectionRenderable leaf self-registration behind ShouldReflect (Carbon
|
|
302
|
+
* redundantly re-checks m_display inside the outer display gate). */
|
|
303
|
+
RegisterComponents() {
|
|
304
|
+
const registry = this.GetComponentRegistry();
|
|
305
|
+
if (registry && this.display) {
|
|
306
|
+
if (ShouldReflect(this.reflectionMode) && this.display) {
|
|
307
|
+
registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
302
310
|
}
|
|
303
311
|
|
|
304
312
|
// Reusable emitter/system argument records (backend-neutral mirror of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildParticleSystem.js","sources":["../../../../../src/generated/eve/child/EveChildParticleSystem.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/EveChildParticleSystem.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildParticleSystem.json.\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveChildTransform, applyTransformModifiers } from \"../../../eve/child/EveChildTransform.js\";\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { TriBatchType } from \"@carbonenginejs/runtime-const/graphics\";\nimport { Tr2Lod } from \"../../../eve/EveLODHelper.js\";\n\n/** EveChildParticleSystem (eve/child) - generated from schema shapeHash 30e9fc72.... */\n@type.define({ className: \"EveChildParticleSystem\", family: \"eve/child\" })\nexport class EveChildParticleSystem extends EveChildTransform\n{\n\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\n @io.notify\n @io.persist\n @type.int32\n @schema.enum(\"ReflectionMode\")\n reflectionMode = 3;\n\n /** m_particleEmitters (PITr2GenericEmitterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"ITr2GenericEmitter\")\n particleEmitters = [];\n\n /** m_particleSystems (PTr2ParticleSystemVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ParticleSystem\")\n particleSystems = [];\n\n /** m_transformModifiers (PIEveChildTransformModifierVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveChildTransformModifier\")\n transformModifiers = [];\n\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_mesh (Tr2InstancedMeshPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2InstancedMesh\")\n mesh = null;\n\n /** m_lodClampLow (uint32_t) [READWRITE, PERSIST] */\n @io.persist\n @type.uint32\n lodClampLow = 5;\n\n /** m_lodSphereRadius (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n lodSphereRadius = 0;\n\n /** m_useDynamicLod (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n useDynamicLod = false;\n\n /** m_lodFactorLow (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n lodFactorLow = 0.125;\n\n /** m_lodFactorMedium (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n lodFactorMedium = 0.25;\n\n /** m_minScreenSize (float) [READWRITE, PERSIST] */\n @io.persist\n @type.float32\n minScreenSize = 0;\n\n /** m_currentScreenSize (float) [READ] */\n @io.read\n @type.float32\n currentScreenSize = -1;\n\n /** m_boundingSphere (Vector4) - world-space mesh bound, radius -1 until built. */\n #boundingSphere = vec4.fromValues(0, 0, 0, -1);\n\n /** m_lodSphere (Vector4) - world-space LOD probe, radius -1 while lodSphereRadius is unset. */\n #lodSphere = vec4.fromValues(0, 0, 0, -1);\n\n /** m_worldTransformLast (Matrix) - previous frame's world transform. */\n #worldTransformLast = mat4.create();\n\n /** m_isVisible (bool) - result of the last UpdateVisibility pass. */\n #isVisible = true;\n\n /** m_hasUpdated (bool) - until an update ran, the object cannot be rendered. */\n #hasUpdated = false;\n\n /** Rebuilds static local transforms (EveChildParticleSystem.cpp:43-50). */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n if (this.staticTransform)\n {\n this.RebuildLocalTransform();\n }\n return true;\n }\n\n /**\n * Carbon re-registers the renderable component when m_reflectionMode or\n * m_display change (EveChildParticleSystem.cpp:71-78).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Component-registry integration is deferred; the re-register hook is limited to an optional duck-typed call.\")\n OnModified(_value)\n {\n this.ReRegister?.();\n return true;\n }\n\n @carbon.method\n @impl.implemented\n GetName()\n {\n return this.name;\n }\n\n @carbon.method\n @impl.implemented\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n /** Forwards to the base transform setup (EveChildParticleSystem.cpp:95-98). */\n @carbon.method\n @impl.implemented\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\n {\n return super.Setup(scale, rotation, translation, lowestLodVisible);\n }\n\n /**\n * Frustum/screen-size visibility against the mesh bound and the LOD probe\n * sphere, then per-system view-dependent updates\n * (EveChildParticleSystem.cpp:100-121).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.\")\n UpdateVisibility(updateContext, _parentTransform, _parentLod)\n {\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n this.#isVisible = this.display && this.#hasUpdated && frustum?.IsSphereVisible?.(this.#boundingSphere) !== false;\n if (this.#isVisible)\n {\n this.currentScreenSize = Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity);\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\n this.#isVisible = this.#isVisible && this.currentScreenSize >= this.minScreenSize * lodFactor;\n }\n else\n {\n this.currentScreenSize = -1;\n }\n if (this.#isVisible)\n {\n for (const system of this.particleSystems)\n {\n system?.UpdateViewDependentData?.(frustum, this.worldTransform);\n }\n }\n }\n\n /**\n * Stateless visibility probe used by the entity layer\n * (EveChildParticleSystem.cpp:123-127).\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.\")\n IsVisible(updateContext)\n {\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\n return frustum?.IsSphereVisible?.(this.#boundingSphere) !== false &&\n Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity) >= this.minScreenSize * lodFactor;\n }\n\n /**\n * Sorts particles and publishes this child as a renderable when visible\n * (EveChildParticleSystem.cpp:130-143).\n */\n @carbon.method\n @impl.implemented\n GetRenderables(renderables = [])\n {\n if (!this.#isVisible)\n {\n return renderables;\n }\n for (const system of this.particleSystems)\n {\n system?.SortParticles?.();\n }\n renderables.push(this);\n return renderables;\n }\n\n /** Copies the world-space mesh bound when built (EveChildParticleSystem.cpp:145-153). */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create(), _query = 0)\n {\n if (this.#boundingSphere[3] === -1)\n {\n return false;\n }\n vec4.copy(out, this.#boundingSphere);\n return true;\n }\n\n @carbon.method\n @impl.implemented\n HasTransparentBatches()\n {\n if (this.display && this.mesh)\n {\n return (this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0;\n }\n return false;\n }\n\n /** Carbon method GetBatches (EveChildParticleSystem.cpp:165-171). */\n @carbon.method\n @impl.notImplemented\n GetBatches(..._args)\n {\n throw new Error(\"EveChildParticleSystem.GetBatches is not implemented in CarbonEngineJS.\");\n }\n\n /** Distance from the view position to the world translation (EveChildParticleSystem.cpp:173-178). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\n GetSortValue(renderContext = null)\n {\n const viewPosition = renderContext?.GetViewPosition?.();\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\n return Math.hypot(x, y, z);\n }\n\n /** Carbon method GetPerObjectData (EveChildParticleSystem.cpp:180-195). */\n @carbon.method\n @impl.notImplemented\n GetPerObjectData(..._args)\n {\n throw new Error(\"EveChildParticleSystem.GetPerObjectData is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon's synchronous pass is empty (EveChildParticleSystem.cpp:197-199). */\n @carbon.method\n @impl.noop\n UpdateSyncronous(_updateContext, _params)\n {\n }\n\n /**\n * Per-frame async update (EveChildParticleSystem.cpp:201-280): rebuild the\n * world transform, fold the transform modifiers, rebuild the bounding and\n * LOD spheres, then drive the particle systems and emitters.\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.adapted\n @impl.reason(\"Renderer-global frustum state is read from the update context, and emitter/system updates use the backend-neutral argument record.\")\n UpdateAsyncronous(updateContext, params)\n {\n mat4.copy(this.#worldTransformLast, this.worldTransform);\n const parentTransform = params?.localToWorldTransform;\n if (parentTransform && parentTransform.length === 16)\n {\n this.UpdateTransform(parentTransform);\n }\n applyTransformModifiers(this, updateContext, params?.boneCount ?? 0, params?.bones ?? null);\n\n if (this.mesh?.GetBoundingBox?.(EveChildParticleSystem.#boundsMin, EveChildParticleSystem.#boundsMax))\n {\n sph3.fromBounds(EveChildParticleSystem.#localSphere, EveChildParticleSystem.#boundsMin, EveChildParticleSystem.#boundsMax);\n sph3.transformMat4(this.#boundingSphere, EveChildParticleSystem.#localSphere, this.worldTransform);\n }\n\n if (this.lodSphereRadius > 0)\n {\n vec4.set(this.#lodSphere, 0, 0, 0, this.lodSphereRadius);\n sph3.transformMat4(this.#lodSphere, this.#lodSphere, this.worldTransform);\n }\n else\n {\n this.#lodSphere[3] = -1;\n }\n\n for (const system of this.particleSystems)\n {\n system?.UpdateTransform?.(this.worldTransform);\n }\n\n const time = Number(updateContext?.GetTime?.() ?? updateContext?.currentTime ?? 0);\n const gpuParticleSystem = updateContext?.GetGpuParticleSystem?.() ?? updateContext?.gpuParticleSystem ?? null;\n const originShift = updateContext?.GetOriginShift?.() ?? updateContext?.originShift ?? EveChildParticleSystem.#zero;\n\n if (this.particleEmitters.length)\n {\n let emitCountFactor = 1;\n if (!(params?.isVisible ?? true) || !this.display)\n {\n emitCountFactor = 0;\n }\n else if (this.minScreenSize > 0 && this.lodSphereRadius > 0 && this.reflectionMode === EveChildParticleSystem.ReflectionMode.REFLECT_NEVER)\n {\n // Carbon derives a scratch frustum from the Tr2Renderer view globals\n // here (EveChildParticleSystem.cpp:246-254); the relocated camera\n // state is the context frustum.\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\n const size = Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity);\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\n if (size < this.minScreenSize * lodFactor)\n {\n emitCountFactor = 0;\n }\n }\n const args = EveChildParticleSystem.#emitterArgs;\n args.time = time;\n args.gpuParticleSystem = gpuParticleSystem;\n args.transform = this.worldTransform;\n args.originShift = originShift;\n args.emitCountFactor = emitCountFactor;\n args.context = updateContext;\n for (const emitter of this.particleEmitters)\n {\n emitter?.Update?.(args);\n }\n }\n\n if (this.particleSystems.length)\n {\n // Carbon passes IdentityMatrix() for the systems' own update\n // (EveChildParticleSystem.cpp:267-278).\n const args = EveChildParticleSystem.#systemArgs;\n args.time = time;\n args.gpuParticleSystem = gpuParticleSystem;\n args.transform = EveChildParticleSystem.#identity;\n args.originShift = originShift;\n args.emitCountFactor = 1;\n args.context = updateContext;\n for (const system of this.particleSystems)\n {\n system?.Update?.(args);\n }\n }\n\n this.#hasUpdated = true;\n }\n\n /** Returns the local-to-world matrix (EveChildParticleSystem.cpp:286-289). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"CarbonEngineJS uses an out-last signature and returns the matrix when no output is supplied.\")\n GetLocalToWorldTransform(out = null)\n {\n if (out)\n {\n return mat4.copy(out, this.worldTransform);\n }\n return this.worldTransform;\n }\n\n /**\n * Clamps each system's particle budget when the parent's LOD changed\n * (EveChildParticleSystem.cpp:295-318).\n */\n @carbon.method\n @impl.implemented\n ChangeLOD(lod)\n {\n if (!this.useDynamicLod)\n {\n return;\n }\n for (const system of this.particleSystems)\n {\n const original = Number(system?.GetOriginalMaxParticles?.() ?? 0) >>> 0;\n let particleCount = original;\n if (lod === Tr2Lod.TR2_LOD_LOW)\n {\n particleCount = Math.min(this.lodClampLow, Math.trunc(original * this.lodFactorLow));\n }\n else if (lod === Tr2Lod.TR2_LOD_MEDIUM)\n {\n particleCount = Math.trunc(original * this.lodFactorMedium);\n }\n system?.SetMaxParticleCount?.(particleCount);\n }\n }\n\n /** Carbon method AddTransformModifier (EveChildParticleSystem.cpp:344-347). */\n @carbon.method\n @impl.implemented\n AddTransformModifier(modifier)\n {\n this.transformModifiers.push(modifier);\n }\n\n /** Carbon method RegisterComponents (EveChildParticleSystem.cpp:58-68). */\n @carbon.method\n @impl.notImplemented\n RegisterComponents(..._args)\n {\n throw new Error(\"EveChildParticleSystem.RegisterComponents is not implemented in CarbonEngineJS.\");\n }\n\n static ReflectionMode = Object.freeze({\n REFLECT_HIGH: 0,\n REFLECT_MEDIUM_AND_HIGH: 1,\n REFLECT_LOW_MEDIUM_HIGH: 2,\n REFLECT_NEVER: 3,\n });\n\n static Tr2Lod = Tr2Lod;\n\n static #boundsMin = vec3.create();\n\n static #boundsMax = vec3.create();\n\n static #localSphere = vec4.create();\n\n static #zero = vec3.create();\n\n static #identity = mat4.create();\n\n // Reusable emitter/system argument records (backend-neutral mirror of\n // ITr2GenericEmitter::UpdateArguments); child updates run sequentially, so\n // the shared records are non-reentrant by design.\n static #emitterArgs = {\n time: 0,\n gpuParticleSystem: null,\n transform: null,\n originShift: null,\n emitCountFactor: 1,\n context: null\n };\n\n static #systemArgs = {\n time: 0,\n gpuParticleSystem: null,\n transform: null,\n originShift: null,\n emitCountFactor: 1,\n context: null\n };\n\n}\n"],"names":["_EveChildParticleSyst","_identity","EveChildParticleSystem","EveChildTransform","e","_init_reflectionMode","_init_extra_reflectionMode","_init_particleEmitters","_init_extra_particleEmitters","_init_particleSystems","_init_extra_particleSystems","_init_transformModifiers","_init_extra_transformModifiers","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_mesh","_init_extra_mesh","_init_lodClampLow","_init_extra_lodClampLow","_init_lodSphereRadius","_init_extra_lodSphereRadius","_init_useDynamicLod","_init_extra_useDynamicLod","_init_lodFactorLow","_init_extra_lodFactorLow","_init_lodFactorMedium","_init_extra_lodFactorMedium","_init_minScreenSize","_init_extra_minScreenSize","_init_currentScreenSize","_init_extra_currentScreenSize","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","boolean","string","model","uint32","float32","read","carbon","method","impl","implemented","adapted","reason","notImplemented","noop","contextual","reflectionMode","particleEmitters","particleSystems","transformModifiers","display","name","mesh","lodClampLow","lodSphereRadius","useDynamicLod","lodFactorLow","lodFactorMedium","minScreenSize","currentScreenSize","vec4","fromValues","mat4","create","Initialize","staticTransform","RebuildLocalTransform","OnModified","_value","ReRegister","GetName","SetName","String","Setup","scale","rotation","translation","lowestLodVisible","UpdateVisibility","updateContext","_parentTransform","_parentLod","frustum","GetFrustum","IsSphereVisible","Number","GetPixelSizeAccrossEst","Infinity","lodFactor","GetLodFactor","system","UpdateViewDependentData","worldTransform","IsVisible","GetRenderables","renderables","SortParticles","push","GetBoundingSphere","out","_query","copy","HasTransparentBatches","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","length","GetBatches","_args","Error","GetSortValue","renderContext","viewPosition","GetViewPosition","x","y","z","Math","hypot","GetPerObjectData","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","params","parentTransform","localToWorldTransform","UpdateTransform","applyTransformModifiers","boneCount","bones","GetBoundingBox","sph3","fromBounds","transformMat4","set","time","GetTime","currentTime","gpuParticleSystem","GetGpuParticleSystem","originShift","GetOriginShift","emitCountFactor","isVisible","ReflectionMode","REFLECT_NEVER","size","args","transform","context","emitter","Update","GetLocalToWorldTransform","ChangeLOD","lod","original","GetOriginalMaxParticles","particleCount","Tr2Lod","TR2_LOD_LOW","min","trunc","TR2_LOD_MEDIUM","SetMaxParticleCount","AddTransformModifier","modifier","RegisterComponents","Object","freeze","REFLECT_HIGH","REFLECT_MEDIUM_AND_HIGH","REFLECT_LOW_MEDIUM_HIGH","vec3","constructor"],"mappings":";;;;;;;;;;;;AAYA;AAAA,IAAAA;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QACA,MAAAC,sBAAA,SAC4CC,kBAAiB,CAC7D;AAAA,IAAA;AAAA,MAAA,CAAA;QAAAC,CAAA,EAAA,CAAAC,oBAAA,EAAAC,0BAAA,EAAAC,sBAAA,EAAAC,4BAAA,EAAAC,qBAAA,EAAAC,2BAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,qBAAA,EAAAC,2BAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,kBAAA,EAAAC,wBAAA,EAAAC,qBAAA,EAAAC,2BAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAAlC,qBAAA,EAAAmC,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,wBAAwB;AAAEC,QAAAA,MAAM,EAAE;OAAa,CAAC,CAAA,EAAA,CAAA,CAAA,CAKvEC,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACO,KAAK,EAAA,MAAA,EACVC,MAAM,CAACC,IAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAI7BL,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAI/BN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAI9BN,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACU,IAAI,CAAC,4BAA4B,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAIvCN,EAAE,EAAFA,EAAE,CAACC,MAAM,EACTD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACW,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAIZP,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACY,MAAM,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAIXR,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACa,KAAK,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAI9BT,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACc,MAAM,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAIXV,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACe,OAAO,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAIZX,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACW,OAAO,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIZP,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACe,OAAO,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAIZX,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACe,OAAO,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAIZX,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACe,OAAO,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIZX,EAAE,EAAFA,EAAE,CAACY,IAAI,EACPhB,IAAI,EAAJA,IAAI,CAACe,OAAO,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAmBZE,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAchBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,6GAA6G,CAAC,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAO1HL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,4GAA4G,CAAC,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CA4BzHL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,4GAA4G,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAazHL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAgBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACI,cAAc,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAOnBN,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,wHAAwH,CAAC,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAWrIL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACI,cAAc,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAOnBN,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACK,IAAI,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAUTP,MAAM,EAANA,MAAM,CAACC,MAAM,EAAA,MAAA,EACbD,MAAM,CAACQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7BN,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,oIAAoI,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA0FjJL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,8FAA8F,CAAC,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAc3GL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAwBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,kCAOhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACI,cAAc,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EA5ZsBzD,kBAAiB,CAAA;AAAA;AAG3D;AAKA4D,IAAAA,cAAc,IAAA9B,UAAA,CAAA,IAAA,CAAA,EAAA5B,oBAAA,OAAG,CAAC,CAAA;;AAElB;AAGA2D,IAAAA,gBAAgB,IAAA1D,0BAAA,CAAA,IAAA,CAAA,EAAAC,sBAAA,OAAG,EAAE,CAAA;;AAErB;AAGA0D,IAAAA,eAAe,IAAAzD,4BAAA,CAAA,IAAA,CAAA,EAAAC,qBAAA,OAAG,EAAE,CAAA;;AAEpB;AAGAyD,IAAAA,kBAAkB,IAAAxD,2BAAA,CAAA,IAAA,CAAA,EAAAC,wBAAA,OAAG,EAAE,CAAA;;AAEvB;AAIAwD,IAAAA,OAAO,IAAAvD,8BAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;;AAEd;AAGAuD,IAAAA,IAAI,IAAAtD,mBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,EAAE,CAAA;;AAET;AAGAsD,IAAAA,IAAI,IAAArD,gBAAA,CAAA,IAAA,CAAA,EAAAC,UAAA,OAAG,IAAI,CAAA;;AAEX;AAGAqD,IAAAA,WAAW,IAAApD,gBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,CAAC,CAAA;;AAEf;AAGAoD,IAAAA,eAAe,IAAAnD,uBAAA,CAAA,IAAA,CAAA,EAAAC,qBAAA,OAAG,CAAC,CAAA;;AAEnB;AAGAmD,IAAAA,aAAa,IAAAlD,2BAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,KAAK,CAAA;;AAErB;AAGAkD,IAAAA,YAAY,IAAAjD,yBAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,OAAG,KAAK,CAAA;;AAEpB;AAGAiD,IAAAA,eAAe,IAAAhD,wBAAA,CAAA,IAAA,CAAA,EAAAC,qBAAA,OAAG,IAAI,CAAA;;AAEtB;AAGAgD,IAAAA,aAAa,IAAA/C,2BAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,CAAC,CAAA;;AAEjB;AAGA+C,IAAAA,iBAAiB,IAAA9C,yBAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEtB;AACA,IAAA,eAAe,IAAAC,6BAAA,CAAA,IAAA,CAAA,EAAG6C,IAAI,CAACC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;AAE9C;AACA,IAAA,UAAU,GAAGD,IAAI,CAACC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;AAEzC;AACA,IAAA,mBAAmB,GAAGC,IAAI,CAACC,MAAM,EAAE;;AAEnC;IACA,UAAU,GAAG,IAAI;;AAEjB;IACA,WAAW,GAAG,KAAK;;AAEnB;AAGAC,IAAAA,UAAUA,GACV;MACE,IAAI,IAAI,CAACC,eAAe,EACxB;QACE,IAAI,CAACC,qBAAqB,EAAE;AAC9B,MAAA;AACA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACF;AACA;AACA;IAIEC,UAAUA,CAACC,MAAM,EACjB;MACE,IAAI,CAACC,UAAU,IAAI;AACnB,MAAA,OAAO,IAAI;AACb,IAAA;AAIAC,IAAAA,OAAOA,GACP;MACE,OAAO,IAAI,CAACnB,IAAI;AAClB,IAAA;IAIAoB,OAAOA,CAACpB,IAAI,EACZ;MACE,IAAI,CAACA,IAAI,GAAGqB,MAAM,CAACrB,IAAI,IAAI,EAAE,CAAC;AAChC,IAAA;;AAEA;AAGAsB,IAAAA,KAAKA,CAACC,KAAK,GAAG,IAAI,EAAEC,QAAQ,GAAG,IAAI,EAAEC,WAAW,GAAG,IAAI,EAAEC,gBAAgB,GAAG,IAAI,EAChF;MACE,OAAO,KAAK,CAACJ,KAAK,CAACC,KAAK,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,CAAC;AACpE,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIEC,IAAAA,gBAAgBA,CAACC,aAAa,EAAEC,gBAAgB,EAAEC,UAAU,EAC5D;MACE,MAAMC,OAAO,GAAGH,aAAa,EAAEI,UAAU,IAAI,IAAIJ,aAAa,EAAEG,OAAO;MACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAChC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAIgC,OAAO,EAAEE,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK;AAChH,MAAA,IAAI,IAAI,CAAC,UAAU,EACnB;AACE,QAAA,IAAI,CAACzB,iBAAiB,GAAG0B,MAAM,CAACH,OAAO,EAAEI,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAIC,QAAQ,CAAC;AAC/F,QAAA,MAAMC,SAAS,GAAGH,MAAM,CAACN,aAAa,EAAEU,YAAY,IAAI,IAAIV,aAAa,EAAES,SAAS,CAAC,IAAI,CAAC;AAC1F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC7B,iBAAiB,IAAI,IAAI,CAACD,aAAa,GAAG8B,SAAS;AAC/F,MAAA,CAAC,MAED;AACE,QAAA,IAAI,CAAC7B,iBAAiB,GAAG,EAAE;AAC7B,MAAA;AACA,MAAA,IAAI,IAAI,CAAC,UAAU,EACnB;AACE,QAAA,KAAK,MAAM+B,MAAM,IAAI,IAAI,CAAC1C,eAAe,EACzC;UACE0C,MAAM,EAAEC,uBAAuB,GAAGT,OAAO,EAAE,IAAI,CAACU,cAAc,CAAC;AACjE,QAAA;AACF,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;IAIEC,SAASA,CAACd,aAAa,EACvB;MACE,MAAMG,OAAO,GAAGH,aAAa,EAAEI,UAAU,IAAI,IAAIJ,aAAa,EAAEG,OAAO;AACvE,MAAA,MAAMM,SAAS,GAAGH,MAAM,CAACN,aAAa,EAAEU,YAAY,IAAI,IAAIV,aAAa,EAAES,SAAS,CAAC,IAAI,CAAC;AAC1F,MAAA,OAAON,OAAO,EAAEE,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,IAC/DC,MAAM,CAACH,OAAO,EAAEI,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAIC,QAAQ,CAAC,IAAI,IAAI,CAAC7B,aAAa,GAAG8B,SAAS;AAC5G,IAAA;;AAEA;AACF;AACA;AACA;AAGEM,IAAAA,cAAcA,CAACC,WAAW,GAAG,EAAE,EAC/B;AACE,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB;AACE,QAAA,OAAOA,WAAW;AACpB,MAAA;AACA,MAAA,KAAK,MAAML,MAAM,IAAI,IAAI,CAAC1C,eAAe,EACzC;QACE0C,MAAM,EAAEM,aAAa,IAAI;AAC3B,MAAA;AACAD,MAAAA,WAAW,CAACE,IAAI,CAAC,IAAI,CAAC;AACtB,MAAA,OAAOF,WAAW;AACpB,IAAA;;AAEA;AAGAG,IAAAA,iBAAiBA,CAACC,GAAG,GAAGvC,IAAI,CAACG,MAAM,EAAE,EAAEqC,MAAM,GAAG,CAAC,EACjD;MACE,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,EAClC;AACE,QAAA,OAAO,KAAK;AACd,MAAA;MACAxC,IAAI,CAACyC,IAAI,CAACF,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;AACpC,MAAA,OAAO,IAAI;AACb,IAAA;AAIAG,IAAAA,qBAAqBA,GACrB;AACE,MAAA,IAAI,IAAI,CAACpD,OAAO,IAAI,IAAI,CAACE,IAAI,EAC7B;AACE,QAAA,OAAO,CAAC,IAAI,CAACA,IAAI,CAACmD,QAAQ,GAAGC,YAAY,CAACC,wBAAwB,CAAC,EAAEC,MAAM,IAAI,CAAC,IAAI,CAAC;AACvF,MAAA;AACA,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;IAGAC,UAAUA,CAAC,GAAGC,KAAK,EACnB;AACE,MAAA,MAAM,IAAIC,KAAK,CAAC,yEAAyE,CAAC;AAC5F,IAAA;;AAEA;AAIAC,IAAAA,YAAYA,CAACC,aAAa,GAAG,IAAI,EACjC;AACE,MAAA,MAAMC,YAAY,GAAGD,aAAa,EAAEE,eAAe,IAAI;AACvD,MAAA,MAAMC,CAAC,GAAG,CAACF,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACpB,cAAc,CAAC,EAAE,CAAC;AAC5D,MAAA,MAAMuB,CAAC,GAAG,CAACH,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACpB,cAAc,CAAC,EAAE,CAAC;AAC5D,MAAA,MAAMwB,CAAC,GAAG,CAACJ,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAACpB,cAAc,CAAC,EAAE,CAAC;MAC5D,OAAOyB,IAAI,CAACC,KAAK,CAACJ,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AAC5B,IAAA;;AAEA;IAGAG,gBAAgBA,CAAC,GAAGX,KAAK,EACzB;AACE,MAAA,MAAM,IAAIC,KAAK,CAAC,+EAA+E,CAAC;AAClG,IAAA;;AAEA;AAGAW,IAAAA,gBAAgBA,CAACC,cAAc,EAAEC,OAAO,EACxC,CACA;;AAEA;AACF;AACA;AACA;AACA;AAKEC,IAAAA,iBAAiBA,CAAC5C,aAAa,EAAE6C,MAAM,EACvC;MACE9D,IAAI,CAACuC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAACT,cAAc,CAAC;AACxD,MAAA,MAAMiC,eAAe,GAAGD,MAAM,EAAEE,qBAAqB;AACrD,MAAA,IAAID,eAAe,IAAIA,eAAe,CAACnB,MAAM,KAAK,EAAE,EACpD;AACE,QAAA,IAAI,CAACqB,eAAe,CAACF,eAAe,CAAC;AACvC,MAAA;AACAG,MAAAA,uBAAuB,CAAC,IAAI,EAAEjD,aAAa,EAAE6C,MAAM,EAAEK,SAAS,IAAI,CAAC,EAAEL,MAAM,EAAEM,KAAK,IAAI,IAAI,CAAC;AAE3F,MAAA,IAAI,IAAI,CAAC9E,IAAI,EAAE+E,cAAc,GAAGlJ,qBAAsB,CAAC,UAAU,EAAEA,qBAAsB,CAAC,UAAU,CAAC,EACrG;AACEmJ,QAAAA,IAAI,CAACC,UAAU,CAACpJ,qBAAsB,CAAC,YAAY,EAAEA,qBAAsB,CAAC,UAAU,EAAEA,qBAAsB,CAAC,UAAU,CAAC;AAC1HmJ,QAAAA,IAAI,CAACE,aAAa,CAAC,IAAI,CAAC,eAAe,EAAErJ,qBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC2G,cAAc,CAAC;AACpG,MAAA;AAEA,MAAA,IAAI,IAAI,CAACtC,eAAe,GAAG,CAAC,EAC5B;AACEM,QAAAA,IAAI,CAAC2E,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAACjF,eAAe,CAAC;AACxD8E,QAAAA,IAAI,CAACE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC1C,cAAc,CAAC;AAC3E,MAAA,CAAC,MAED;QACE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;AACzB,MAAA;AAEA,MAAA,KAAK,MAAMF,MAAM,IAAI,IAAI,CAAC1C,eAAe,EACzC;AACE0C,QAAAA,MAAM,EAAEqC,eAAe,GAAG,IAAI,CAACnC,cAAc,CAAC;AAChD,MAAA;AAEA,MAAA,MAAM4C,IAAI,GAAGnD,MAAM,CAACN,aAAa,EAAE0D,OAAO,IAAI,IAAI1D,aAAa,EAAE2D,WAAW,IAAI,CAAC,CAAC;AAClF,MAAA,MAAMC,iBAAiB,GAAG5D,aAAa,EAAE6D,oBAAoB,IAAI,IAAI7D,aAAa,EAAE4D,iBAAiB,IAAI,IAAI;AAC7G,MAAA,MAAME,WAAW,GAAG9D,aAAa,EAAE+D,cAAc,IAAI,IAAI/D,aAAa,EAAE8D,WAAW,IAAI5J,qBAAsB,CAAC,KAAK;AAEnH,MAAA,IAAI,IAAI,CAAC8D,gBAAgB,CAAC2D,MAAM,EAChC;QACE,IAAIqC,eAAe,GAAG,CAAC;AACvB,QAAA,IAAI,EAAEnB,MAAM,EAAEoB,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC9F,OAAO,EACjD;AACE6F,UAAAA,eAAe,GAAG,CAAC;QACrB,CAAC,MACI,IAAI,IAAI,CAACrF,aAAa,GAAG,CAAC,IAAI,IAAI,CAACJ,eAAe,GAAG,CAAC,IAAI,IAAI,CAACR,cAAc,KAAK7D,qBAAsB,CAACgK,cAAc,CAACC,aAAa,EAC1I;AACE;AACA;AACA;UACA,MAAMhE,OAAO,GAAGH,aAAa,EAAEI,UAAU,IAAI,IAAIJ,aAAa,EAAEG,OAAO;AACvE,UAAA,MAAMiE,IAAI,GAAG9D,MAAM,CAACH,OAAO,EAAEI,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAIC,QAAQ,CAAC;AACnF,UAAA,MAAMC,SAAS,GAAGH,MAAM,CAACN,aAAa,EAAEU,YAAY,IAAI,IAAIV,aAAa,EAAES,SAAS,CAAC,IAAI,CAAC;AAC1F,UAAA,IAAI2D,IAAI,GAAG,IAAI,CAACzF,aAAa,GAAG8B,SAAS,EACzC;AACEuD,YAAAA,eAAe,GAAG,CAAC;AACrB,UAAA;AACF,QAAA;AACA,QAAA,MAAMK,IAAI,GAAGnK,qBAAsB,CAAC,YAAY;QAChDmK,IAAI,CAACZ,IAAI,GAAGA,IAAI;QAChBY,IAAI,CAACT,iBAAiB,GAAGA,iBAAiB;AAC1CS,QAAAA,IAAI,CAACC,SAAS,GAAG,IAAI,CAACzD,cAAc;QACpCwD,IAAI,CAACP,WAAW,GAAGA,WAAW;QAC9BO,IAAI,CAACL,eAAe,GAAGA,eAAe;QACtCK,IAAI,CAACE,OAAO,GAAGvE,aAAa;AAC5B,QAAA,KAAK,MAAMwE,OAAO,IAAI,IAAI,CAACxG,gBAAgB,EAC3C;AACEwG,UAAAA,OAAO,EAAEC,MAAM,GAAGJ,IAAI,CAAC;AACzB,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,IAAI,CAACpG,eAAe,CAAC0D,MAAM,EAC/B;AACE;AACA;AACA,QAAA,MAAM0C,IAAI,GAAGnK,qBAAsB,CAAC,WAAW;QAC/CmK,IAAI,CAACZ,IAAI,GAAGA,IAAI;QAChBY,IAAI,CAACT,iBAAiB,GAAGA,iBAAiB;AAC1CS,QAAAA,IAAI,CAACC,SAAS,GAAGpK,qBAAsB,CAAC,SAAS;QACjDmK,IAAI,CAACP,WAAW,GAAGA,WAAW;QAC9BO,IAAI,CAACL,eAAe,GAAG,CAAC;QACxBK,IAAI,CAACE,OAAO,GAAGvE,aAAa;AAC5B,QAAA,KAAK,MAAMW,MAAM,IAAI,IAAI,CAAC1C,eAAe,EACzC;AACE0C,UAAAA,MAAM,EAAE8D,MAAM,GAAGJ,IAAI,CAAC;AACxB,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,IAAA;;AAEA;AAIAK,IAAAA,wBAAwBA,CAACtD,GAAG,GAAG,IAAI,EACnC;AACE,MAAA,IAAIA,GAAG,EACP;QACE,OAAOrC,IAAI,CAACuC,IAAI,CAACF,GAAG,EAAE,IAAI,CAACP,cAAc,CAAC;AAC5C,MAAA;MACA,OAAO,IAAI,CAACA,cAAc;AAC5B,IAAA;;AAEA;AACF;AACA;AACA;IAGE8D,SAASA,CAACC,GAAG,EACb;AACE,MAAA,IAAI,CAAC,IAAI,CAACpG,aAAa,EACvB;AACE,QAAA;AACF,MAAA;AACA,MAAA,KAAK,MAAMmC,MAAM,IAAI,IAAI,CAAC1C,eAAe,EACzC;AACE,QAAA,MAAM4G,QAAQ,GAAGvE,MAAM,CAACK,MAAM,EAAEmE,uBAAuB,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC;QACvE,IAAIC,aAAa,GAAGF,QAAQ;AAC5B,QAAA,IAAID,GAAG,KAAKI,MAAM,CAACC,WAAW,EAC9B;AACEF,UAAAA,aAAa,GAAGzC,IAAI,CAAC4C,GAAG,CAAC,IAAI,CAAC5G,WAAW,EAAEgE,IAAI,CAAC6C,KAAK,CAACN,QAAQ,GAAG,IAAI,CAACpG,YAAY,CAAC,CAAC;AACtF,QAAA,CAAC,MACI,IAAImG,GAAG,KAAKI,MAAM,CAACI,cAAc,EACtC;UACEL,aAAa,GAAGzC,IAAI,CAAC6C,KAAK,CAACN,QAAQ,GAAG,IAAI,CAACnG,eAAe,CAAC;AAC7D,QAAA;AACAiC,QAAAA,MAAM,EAAE0E,mBAAmB,GAAGN,aAAa,CAAC;AAC9C,MAAA;AACF,IAAA;;AAEA;IAGAO,oBAAoBA,CAACC,QAAQ,EAC7B;AACE,MAAA,IAAI,CAACrH,kBAAkB,CAACgD,IAAI,CAACqE,QAAQ,CAAC;AACxC,IAAA;;AAEA;IAGAC,kBAAkBA,CAAC,GAAG3D,KAAK,EAC3B;AACE,MAAA,MAAM,IAAIC,KAAK,CAAC,iFAAiF,CAAC;AACpG,IAAA;;AAqBA;AACA;AACA;GAmBD;AAxCQoC,EAAAA,cAAc,GAAGuB,MAAM,CAACC,MAAM,CAAC;AACpCC,IAAAA,YAAY,EAAE,CAAC;AACfC,IAAAA,uBAAuB,EAAE,CAAC;AAC1BC,IAAAA,uBAAuB,EAAE,CAAC;AAC1B1B,IAAAA,aAAa,EAAE;AACjB,GAAC,CAAC;AAEKa,EAAAA,MAAM,GAAGA,MAAM;AAEf,EAAA,UAAU,GAAGc,IAAI,CAAC9G,MAAM,EAAE;AAE1B,EAAA,UAAU,GAAG8G,IAAI,CAAC9G,MAAM,EAAE;AAE1B,EAAA,YAAY,GAAGH,IAAI,CAACG,MAAM,EAAE;AAE5B,EAAA,KAAK,GAAG8G,IAAI,CAAC9G,MAAM,EAAE;AAErB,EAAA,SAAS,GAAGD,IAAI,CAACC,MAAM,EAAE;AAKzB,EAAA,YAAY,GAAG;AACpByE,IAAAA,IAAI,EAAE,CAAC;AACPG,IAAAA,iBAAiB,EAAE,IAAI;AACvBU,IAAAA,SAAS,EAAE,IAAI;AACfR,IAAAA,WAAW,EAAE,IAAI;AACjBE,IAAAA,eAAe,EAAE,CAAC;AAClBO,IAAAA,OAAO,EAAE;GACV;AAEM,EAAA,WAAW,GAAG;AACnBd,IAAAA,IAAI,EAAE,CAAC;AACPG,IAAAA,iBAAiB,EAAE,IAAI;AACvBU,IAAAA,SAAS,EAAE,IAAI;AACfR,IAAAA,WAAW,EAAE,IAAI;AACjBE,IAAAA,eAAe,EAAE,CAAC;AAClBO,IAAAA,OAAO,EAAE;GACV;EAACwB,WAAAA,GAAA;IAAA,KAAA,CAAA/L,qBAAA,GAAAmC,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"EveChildParticleSystem.js","sources":["../../../../../src/generated/eve/child/EveChildParticleSystem.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildParticleSystem.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildParticleSystem.json.\r\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveChildTransform, applyTransformModifiers } from \"../../../eve/child/EveChildTransform.js\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { TriBatchType } from \"@carbonenginejs/runtime-const/graphics\";\r\nimport { Tr2Lod } from \"../../../eve/EveLODHelper.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../../../eve/EveComponentTypes.js\";\r\n\r\n/** EveChildParticleSystem (eve/child) - generated from schema shapeHash 30e9fc72.... */\r\n@type.define({ className: \"EveChildParticleSystem\", family: \"eve/child\" })\r\nexport class EveChildParticleSystem extends EveChildTransform\r\n{\r\n\r\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n /** m_particleEmitters (PITr2GenericEmitterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2GenericEmitter\")\r\n particleEmitters = [];\r\n\r\n /** m_particleSystems (PTr2ParticleSystemVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ParticleSystem\")\r\n particleSystems = [];\r\n\r\n /** m_transformModifiers (PIEveChildTransformModifierVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveChildTransformModifier\")\r\n transformModifiers = [];\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_mesh (Tr2InstancedMeshPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"Tr2InstancedMesh\")\r\n mesh = null;\r\n\r\n /** m_lodClampLow (uint32_t) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.uint32\r\n lodClampLow = 5;\r\n\r\n /** m_lodSphereRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n lodSphereRadius = 0;\r\n\r\n /** m_useDynamicLod (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n useDynamicLod = false;\r\n\r\n /** m_lodFactorLow (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n lodFactorLow = 0.125;\r\n\r\n /** m_lodFactorMedium (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n lodFactorMedium = 0.25;\r\n\r\n /** m_minScreenSize (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n minScreenSize = 0;\r\n\r\n /** m_currentScreenSize (float) [READ] */\r\n @io.read\r\n @type.float32\r\n currentScreenSize = -1;\r\n\r\n /** m_boundingSphere (Vector4) - world-space mesh bound, radius -1 until built. */\r\n #boundingSphere = vec4.fromValues(0, 0, 0, -1);\r\n\r\n /** m_lodSphere (Vector4) - world-space LOD probe, radius -1 while lodSphereRadius is unset. */\r\n #lodSphere = vec4.fromValues(0, 0, 0, -1);\r\n\r\n /** m_worldTransformLast (Matrix) - previous frame's world transform. */\r\n #worldTransformLast = mat4.create();\r\n\r\n /** m_isVisible (bool) - result of the last UpdateVisibility pass. */\r\n #isVisible = true;\r\n\r\n /** m_hasUpdated (bool) - until an update ran, the object cannot be rendered. */\r\n #hasUpdated = false;\r\n\r\n /** Rebuilds static local transforms (EveChildParticleSystem.cpp:43-50). */\r\n @carbon.method\r\n @impl.implemented\r\n Initialize()\r\n {\r\n if (this.staticTransform)\r\n {\r\n this.RebuildLocalTransform();\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Carbon re-registers the renderable component when m_reflectionMode or\r\n * m_display change (EveChildParticleSystem.cpp:71-78).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon re-registers on m_reflectionMode/m_display Var edits; JS forwards every OnModified to the EveEntity ReRegister lifecycle.\")\r\n OnModified(_value)\r\n {\r\n this.ReRegister?.();\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /** Forwards to the base transform setup (EveChildParticleSystem.cpp:95-98). */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n /**\r\n * Frustum/screen-size visibility against the mesh bound and the LOD probe\r\n * sphere, then per-system view-dependent updates\r\n * (EveChildParticleSystem.cpp:100-121).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.\")\r\n UpdateVisibility(updateContext, _parentTransform, _parentLod)\r\n {\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n this.#isVisible = this.display && this.#hasUpdated && frustum?.IsSphereVisible?.(this.#boundingSphere) !== false;\r\n if (this.#isVisible)\r\n {\r\n this.currentScreenSize = Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity);\r\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\r\n this.#isVisible = this.#isVisible && this.currentScreenSize >= this.minScreenSize * lodFactor;\r\n }\r\n else\r\n {\r\n this.currentScreenSize = -1;\r\n }\r\n if (this.#isVisible)\r\n {\r\n for (const system of this.particleSystems)\r\n {\r\n system?.UpdateViewDependentData?.(frustum, this.worldTransform);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Stateless visibility probe used by the entity layer\r\n * (EveChildParticleSystem.cpp:123-127).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Frustum and LOD factor are read from the explicit update context; a missing frustum is treated as visible.\")\r\n IsVisible(updateContext)\r\n {\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\r\n return frustum?.IsSphereVisible?.(this.#boundingSphere) !== false &&\r\n Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity) >= this.minScreenSize * lodFactor;\r\n }\r\n\r\n /**\r\n * Sorts particles and publishes this child as a renderable when visible\r\n * (EveChildParticleSystem.cpp:130-143).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(renderables = [])\r\n {\r\n if (!this.#isVisible)\r\n {\r\n return renderables;\r\n }\r\n for (const system of this.particleSystems)\r\n {\r\n system?.SortParticles?.();\r\n }\r\n renderables.push(this);\r\n return renderables;\r\n }\r\n\r\n /** Copies the world-space mesh bound when built (EveChildParticleSystem.cpp:145-153). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create(), _query = 0)\r\n {\r\n if (this.#boundingSphere[3] === -1)\r\n {\r\n return false;\r\n }\r\n vec4.copy(out, this.#boundingSphere);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HasTransparentBatches()\r\n {\r\n if (this.display && this.mesh)\r\n {\r\n return (this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0;\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon method GetBatches (EveChildParticleSystem.cpp:165-171). */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetBatches(..._args)\r\n {\r\n throw new Error(\"EveChildParticleSystem.GetBatches is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Distance from the view position to the world translation (EveChildParticleSystem.cpp:173-178). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z);\r\n }\r\n\r\n /** Carbon method GetPerObjectData (EveChildParticleSystem.cpp:180-195). */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetPerObjectData(..._args)\r\n {\r\n throw new Error(\"EveChildParticleSystem.GetPerObjectData is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon's synchronous pass is empty (EveChildParticleSystem.cpp:197-199). */\r\n @carbon.method\r\n @impl.noop\r\n UpdateSyncronous(_updateContext, _params)\r\n {\r\n }\r\n\r\n /**\r\n * Per-frame async update (EveChildParticleSystem.cpp:201-280): rebuild the\r\n * world transform, fold the transform modifiers, rebuild the bounding and\r\n * LOD spheres, then drive the particle systems and emitters.\r\n */\r\n @carbon.method\r\n @carbon.contextual([\"camera\"])\r\n @impl.adapted\r\n @impl.reason(\"Renderer-global frustum state is read from the update context, and emitter/system updates use the backend-neutral argument record.\")\r\n UpdateAsyncronous(updateContext, params)\r\n {\r\n mat4.copy(this.#worldTransformLast, this.worldTransform);\r\n const parentTransform = params?.localToWorldTransform;\r\n if (parentTransform && parentTransform.length === 16)\r\n {\r\n this.UpdateTransform(parentTransform);\r\n }\r\n applyTransformModifiers(this, updateContext, params?.boneCount ?? 0, params?.bones ?? null);\r\n\r\n if (this.mesh?.GetBoundingBox?.(EveChildParticleSystem.#boundsMin, EveChildParticleSystem.#boundsMax))\r\n {\r\n sph3.fromBounds(EveChildParticleSystem.#localSphere, EveChildParticleSystem.#boundsMin, EveChildParticleSystem.#boundsMax);\r\n sph3.transformMat4(this.#boundingSphere, EveChildParticleSystem.#localSphere, this.worldTransform);\r\n }\r\n\r\n if (this.lodSphereRadius > 0)\r\n {\r\n vec4.set(this.#lodSphere, 0, 0, 0, this.lodSphereRadius);\r\n sph3.transformMat4(this.#lodSphere, this.#lodSphere, this.worldTransform);\r\n }\r\n else\r\n {\r\n this.#lodSphere[3] = -1;\r\n }\r\n\r\n for (const system of this.particleSystems)\r\n {\r\n system?.UpdateTransform?.(this.worldTransform);\r\n }\r\n\r\n const time = Number(updateContext?.GetTime?.() ?? updateContext?.currentTime ?? 0);\r\n const gpuParticleSystem = updateContext?.GetGpuParticleSystem?.() ?? updateContext?.gpuParticleSystem ?? null;\r\n const originShift = updateContext?.GetOriginShift?.() ?? updateContext?.originShift ?? EveChildParticleSystem.#zero;\r\n\r\n if (this.particleEmitters.length)\r\n {\r\n let emitCountFactor = 1;\r\n if (!(params?.isVisible ?? true) || !this.display)\r\n {\r\n emitCountFactor = 0;\r\n }\r\n else if (this.minScreenSize > 0 && this.lodSphereRadius > 0 && this.reflectionMode === EveChildParticleSystem.ReflectionMode.REFLECT_NEVER)\r\n {\r\n // Carbon derives a scratch frustum from the Tr2Renderer view globals\r\n // here (EveChildParticleSystem.cpp:246-254); the relocated camera\r\n // state is the context frustum.\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const size = Number(frustum?.GetPixelSizeAccrossEst?.(this.#lodSphere) ?? Infinity);\r\n const lodFactor = Number(updateContext?.GetLodFactor?.() ?? updateContext?.lodFactor) || 1;\r\n if (size < this.minScreenSize * lodFactor)\r\n {\r\n emitCountFactor = 0;\r\n }\r\n }\r\n const args = EveChildParticleSystem.#emitterArgs;\r\n args.time = time;\r\n args.gpuParticleSystem = gpuParticleSystem;\r\n args.transform = this.worldTransform;\r\n args.originShift = originShift;\r\n args.emitCountFactor = emitCountFactor;\r\n args.context = updateContext;\r\n for (const emitter of this.particleEmitters)\r\n {\r\n emitter?.Update?.(args);\r\n }\r\n }\r\n\r\n if (this.particleSystems.length)\r\n {\r\n // Carbon passes IdentityMatrix() for the systems' own update\r\n // (EveChildParticleSystem.cpp:267-278).\r\n const args = EveChildParticleSystem.#systemArgs;\r\n args.time = time;\r\n args.gpuParticleSystem = gpuParticleSystem;\r\n args.transform = EveChildParticleSystem.#identity;\r\n args.originShift = originShift;\r\n args.emitCountFactor = 1;\r\n args.context = updateContext;\r\n for (const system of this.particleSystems)\r\n {\r\n system?.Update?.(args);\r\n }\r\n }\r\n\r\n this.#hasUpdated = true;\r\n }\r\n\r\n /** Returns the local-to-world matrix (EveChildParticleSystem.cpp:286-289). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature and returns the matrix when no output is supplied.\")\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * Clamps each system's particle budget when the parent's LOD changed\r\n * (EveChildParticleSystem.cpp:295-318).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD(lod)\r\n {\r\n if (!this.useDynamicLod)\r\n {\r\n return;\r\n }\r\n for (const system of this.particleSystems)\r\n {\r\n const original = Number(system?.GetOriginalMaxParticles?.() ?? 0) >>> 0;\r\n let particleCount = original;\r\n if (lod === Tr2Lod.TR2_LOD_LOW)\r\n {\r\n particleCount = Math.min(this.lodClampLow, Math.trunc(original * this.lodFactorLow));\r\n }\r\n else if (lod === Tr2Lod.TR2_LOD_MEDIUM)\r\n {\r\n particleCount = Math.trunc(original * this.lodFactorMedium);\r\n }\r\n system?.SetMaxParticleCount?.(particleCount);\r\n }\r\n }\r\n\r\n /** Carbon method AddTransformModifier (EveChildParticleSystem.cpp:344-347). */\r\n @carbon.method\r\n @impl.implemented\r\n AddTransformModifier(modifier)\r\n {\r\n this.transformModifiers.push(modifier);\r\n }\r\n\r\n /** Carbon EveChildParticleSystem::RegisterComponents (cpp:58-68):\r\n * ReflectionRenderable leaf self-registration behind ShouldReflect (Carbon\r\n * redundantly re-checks m_display inside the outer display gate). */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n if (ShouldReflect(this.reflectionMode) && this.display)\r\n {\r\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\r\n }\r\n }\r\n }\r\n\r\n static ReflectionMode = Object.freeze({\r\n REFLECT_HIGH: 0,\r\n REFLECT_MEDIUM_AND_HIGH: 1,\r\n REFLECT_LOW_MEDIUM_HIGH: 2,\r\n REFLECT_NEVER: 3,\r\n });\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n static #boundsMin = vec3.create();\r\n\r\n static #boundsMax = vec3.create();\r\n\r\n static #localSphere = vec4.create();\r\n\r\n static #zero = vec3.create();\r\n\r\n static #identity = mat4.create();\r\n\r\n // Reusable emitter/system argument records (backend-neutral mirror of\r\n // ITr2GenericEmitter::UpdateArguments); child updates run sequentially, so\r\n // the shared records are non-reentrant by design.\r\n static #emitterArgs = {\r\n time: 0,\r\n gpuParticleSystem: null,\r\n transform: null,\r\n originShift: null,\r\n emitCountFactor: 1,\r\n context: null\r\n };\r\n\r\n static #systemArgs = {\r\n time: 0,\r\n gpuParticleSystem: null,\r\n transform: null,\r\n originShift: null,\r\n emitCountFactor: 1,\r\n context: null\r\n };\r\n\r\n}\r\n"],"names":["_EveChildParticleSyst","_identity","EveChildParticleSystem","EveChildTransform","e","_init_reflectionMode","_init_extra_reflectionMode","_init_particleEmitters","_init_extra_particleEmitters","_init_particleSystems","_init_extra_particleSystems","_init_transformModifiers","_init_extra_transformModifiers","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_mesh","_init_extra_mesh","_init_lodClampLow","_init_extra_lodClampLow","_init_lodSphereRadius","_init_extra_lodSphereRadius","_init_useDynamicLod","_init_extra_useDynamicLod","_init_lodFactorLow","_init_extra_lodFactorLow","_init_lodFactorMedium","_init_extra_lodFactorMedium","_init_minScreenSize","_init_extra_minScreenSize","_init_currentScreenSize","_init_extra_currentScreenSize","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","boolean","string","model","uint32","float32","read","carbon","method","impl","implemented","adapted","reason","notImplemented","noop","contextual","reflectionMode","particleEmitters","particleSystems","transformModifiers","display","name","mesh","lodClampLow","lodSphereRadius","useDynamicLod","lodFactorLow","lodFactorMedium","minScreenSize","currentScreenSize","vec4","fromValues","mat4","create","Initialize","staticTransform","RebuildLocalTransform","OnModified","_value","ReRegister","GetName","SetName","String","Setup","scale","rotation","translation","lowestLodVisible","UpdateVisibility","updateContext","_parentTransform","_parentLod","frustum","GetFrustum","IsSphereVisible","Number","GetPixelSizeAccrossEst","Infinity","lodFactor","GetLodFactor","system","UpdateViewDependentData","worldTransform","IsVisible","GetRenderables","renderables","SortParticles","push","GetBoundingSphere","out","_query","copy","HasTransparentBatches","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","length","GetBatches","_args","Error","GetSortValue","renderContext","viewPosition","GetViewPosition","x","y","z","Math","hypot","GetPerObjectData","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","params","parentTransform","localToWorldTransform","UpdateTransform","applyTransformModifiers","boneCount","bones","GetBoundingBox","sph3","fromBounds","transformMat4","set","time","GetTime","currentTime","gpuParticleSystem","GetGpuParticleSystem","originShift","GetOriginShift","emitCountFactor","isVisible","ReflectionMode","REFLECT_NEVER","size","args","transform","context","emitter","Update","GetLocalToWorldTransform","ChangeLOD","lod","original","GetOriginalMaxParticles","particleCount","Tr2Lod","TR2_LOD_LOW","min","trunc","TR2_LOD_MEDIUM","SetMaxParticleCount","AddTransformModifier","modifier","RegisterComponents","registry","GetComponentRegistry","ShouldReflect","RegisterComponent","EveComponentType","ReflectionRenderable","Object","freeze","REFLECT_HIGH","REFLECT_MEDIUM_AND_HIGH","REFLECT_LOW_MEDIUM_HIGH","vec3","constructor"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ class EveChildPlug extends _EveChildTransform {
|
|
|
14
14
|
} = _applyDecs2311(this, [type.define({
|
|
15
15
|
className: "EveChildPlug",
|
|
16
16
|
family: "eve/child"
|
|
17
|
-
})], [[[io, io.persist, void 0, type.list("IEveSpaceObjectChild")], 16, "objects"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.list("Tr2ExternalParameter")], 16, "externalParameters"], [[io, io.persist, void 0, type.list("ITr2Controller")], 16, "controllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"]], 0, void 0, _EveChildTransform));
|
|
17
|
+
})], [[[io, io.persist, void 0, type.list("IEveSpaceObjectChild")], 16, "objects"], [[io, io.notify, io, io.persist, type, type.boolean], 16, "display"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.list("Tr2ExternalParameter")], 16, "externalParameters"], [[io, io.persist, void 0, type.list("ITr2Controller")], 16, "controllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "HandleControllerEvent"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetControllerVariable"], [[carbon, carbon.method, impl, impl.implemented], 18, "StartControllers"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnRegisterComponents"]], 0, void 0, _EveChildTransform));
|
|
18
18
|
}
|
|
19
19
|
constructor(...args) {
|
|
20
20
|
super(...args);
|
|
@@ -55,6 +55,28 @@ class EveChildPlug extends _EveChildTransform {
|
|
|
55
55
|
StartControllers() {
|
|
56
56
|
for (const controller of this.controllers) controller?.Start?.();
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
/** Carbon EveChildPlug::RegisterComponents (cpp:122-135): forward-only to
|
|
60
|
+
* the plugged objects. Gate m_display. */
|
|
61
|
+
RegisterComponents() {
|
|
62
|
+
const registry = this.GetComponentRegistry();
|
|
63
|
+
if (registry && this.display) {
|
|
64
|
+
for (const object of this.objects) {
|
|
65
|
+
object?.Register?.(registry);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Carbon EveChildPlug::UnRegisterComponents (cpp:141-154): forwards to the
|
|
71
|
+
* plugged objects; no display re-check. */
|
|
72
|
+
UnRegisterComponents() {
|
|
73
|
+
const registry = this.GetComponentRegistry();
|
|
74
|
+
if (registry) {
|
|
75
|
+
for (const object of this.objects) {
|
|
76
|
+
object?.UnRegister?.(registry);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
58
80
|
static {
|
|
59
81
|
_initClass();
|
|
60
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildPlug.js","sources":["../../../../../src/generated/eve/child/EveChildPlug.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/EveChildPlug.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildPlug.json.\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveChildTransform } from \"../../../eve/child/EveChildTransform.js\";\n\n/** EveChildPlug (eve/child) - generated from schema shapeHash 58d32f08.... */\n@type.define({ className: \"EveChildPlug\", family: \"eve/child\" })\nexport class EveChildPlug extends EveChildTransform\n{\n\n #controllerVariables = new Map();\n\n /** m_objects (PIEveSpaceObjectChildVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveSpaceObjectChild\")\n objects = [];\n\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\n @io.notify\n @io.persist\n @type.boolean\n display = true;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"ITr2Controller\")\n controllers = [];\n\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n for (const controller of this.controllers) controller?.HandleEvent?.(name);\n }\n\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n const key = String(name);\n const next = Number(value);\n this.#controllerVariables.set(key, next);\n for (const controller of this.controllers) controller?.SetVariable?.(key, next);\n for (const object of this.objects) object?.SetControllerVariable?.(key, next);\n }\n\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n for (const controller of this.controllers) controller?.Start?.();\n }\n\n}\n"],"names":["_EveChildPlug","EveChildPlug","EveChildTransform","e","_init_objects","_init_extra_objects","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","notify","boolean","string","carbon","method","impl","implemented","constructor","args","Map","objects","display","name","externalParameters","controllers","HandleControllerEvent","controller","HandleEvent","SetControllerVariable","value","key","String","next","Number","set","SetVariable","object","StartControllers","Start"],"mappings":";;;;;;AAMA;AAAA,IAAAA;AACA,MAAAC,YAAA,SACkCC,kBAAiB,CACnD;AAAA,EAAA;AAAA,IAAA,CAAA;MAAAC,CAAA,EAAA,CAAAC,aAAA,EAAAC,mBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,wBAAA,EAAAC,8BAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,UAAA,CAAA;MAAAC,CAAA,EAAA,CAAAf,aAAA,EAAAgB,UAAA;AAAA,KAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,cAAc;AAAEC,MAAAA,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"EveChildPlug.js","sources":["../../../../../src/generated/eve/child/EveChildPlug.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildPlug.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildPlug.json.\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveChildTransform } from \"../../../eve/child/EveChildTransform.js\";\r\n\r\n/** EveChildPlug (eve/child) - generated from schema shapeHash 58d32f08.... */\r\n@type.define({ className: \"EveChildPlug\", family: \"eve/child\" })\r\nexport class EveChildPlug extends EveChildTransform\r\n{\r\n\r\n #controllerVariables = new Map();\r\n\r\n /** m_objects (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n objects = [];\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n for (const controller of this.controllers) controller?.HandleEvent?.(name);\r\n }\r\n\r\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name);\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers) controller?.SetVariable?.(key, next);\r\n for (const object of this.objects) object?.SetControllerVariable?.(key, next);\r\n }\r\n\r\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers) controller?.Start?.();\r\n }\r\n\r\n /** Carbon EveChildPlug::RegisterComponents (cpp:122-135): forward-only to\r\n * the plugged objects. Gate m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n for (const object of this.objects)\r\n {\r\n object?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildPlug::UnRegisterComponents (cpp:141-154): forwards to the\r\n * plugged objects; no display re-check. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n for (const object of this.objects)\r\n {\r\n object?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"],"names":["_EveChildPlug","EveChildPlug","EveChildTransform","e","_init_objects","_init_extra_objects","_init_display","_init_extra_display","_init_name","_init_extra_name","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","notify","boolean","string","carbon","method","impl","implemented","constructor","args","Map","objects","display","name","externalParameters","controllers","HandleControllerEvent","controller","HandleEvent","SetControllerVariable","value","key","String","next","Number","set","SetVariable","object","StartControllers","Start","RegisterComponents","registry","GetComponentRegistry","Register","UnRegisterComponents","UnRegister"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { mat4 } from '@carbonenginejs/core-math/mat4';
|
|
|
5
5
|
import { vec3 } from '@carbonenginejs/core-math/vec3';
|
|
6
6
|
import { vec4 } from '@carbonenginejs/core-math/vec4';
|
|
7
7
|
import { Tr2PostProcessAttributes as _Tr2PostProcessAttrib } from '../../../postProcess/Tr2PostProcessAttributes.js';
|
|
8
|
+
import { EveComponentType } from '../../../eve/EveComponentTypes.js';
|
|
8
9
|
|
|
9
10
|
let _initProto, _initClass, _init_volumes, _init_extra_volumes, _init_exclusionVolumes, _init_extra_exclusionVolumes, _init_boundingSphereCenter, _init_extra_boundingSphereCenter, _init_boundingSphereRadius, _init_extra_boundingSphereRadius, _init_name, _init_extra_name, _init_postProcessAttributes, _init_extra_postProcessAttributes;
|
|
10
11
|
|
|
@@ -19,7 +20,7 @@ new class extends _identity {
|
|
|
19
20
|
} = _applyDecs2311(this, [type.define({
|
|
20
21
|
className: "EveChildPostProcessVolume",
|
|
21
22
|
family: "eve/child"
|
|
22
|
-
})], [[[io, io.persist, void 0, type.list("IEveVolume")], 16, "volumes"], [[io, io.persist, void 0, type.list("IEveVolume")], 16, "exclusionVolumes"], [[io, io.read, void 0, type.rawStruct("CcpMath::Sphere")], 16, "boundingSphereCenter"], [[io, io.read, void 0, type.rawStruct("CcpMath::Sphere")], 16, "boundingSphereRadius"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.model("Tr2PostProcessAttributes")], 16, "postProcessAttributes"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Volume bounding spheres arrive as duck-typed { center, radius } records rather than CcpMath::Sphere values.")], 18, "RebuildBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.noop], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.noop], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.noop], 18, "UpdateSyncronous"], [[carbon, carbon.method, void 0, carbon.contextual(["camera"]), 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, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.noop], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsAlwaysOn"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The Carbon constructor's attribute-instance creation (cpp:11-18) is deferred to first use because the generated field default stays null.")], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPostProcessAttributes"]], 0, void 0, _EveChildTransform));
|
|
23
|
+
})], [[[io, io.persist, void 0, type.list("IEveVolume")], 16, "volumes"], [[io, io.persist, void 0, type.list("IEveVolume")], 16, "exclusionVolumes"], [[io, io.read, void 0, type.rawStruct("CcpMath::Sphere")], 16, "boundingSphereCenter"], [[io, io.read, void 0, type.rawStruct("CcpMath::Sphere")], 16, "boundingSphereRadius"], [[io, io.persist, type, type.string], 16, "name"], [[io, io.persist, void 0, type.model("Tr2PostProcessAttributes")], 16, "postProcessAttributes"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("Volume bounding spheres arrive as duck-typed { center, radius } records rather than CcpMath::Sphere values.")], 18, "RebuildBoundingSphere"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetName"], [[carbon, carbon.method, impl, impl.implemented], 18, "SetName"], [[carbon, carbon.method, impl, impl.noop], 18, "UpdateVisibility"], [[carbon, carbon.method, impl, impl.noop], 18, "GetRenderables"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetBoundingSphere"], [[carbon, carbon.method, impl, impl.noop], 18, "UpdateSyncronous"], [[carbon, carbon.method, void 0, carbon.contextual(["camera"]), 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, "UpdateAsyncronous"], [[carbon, carbon.method, impl, impl.noop], 18, "GetLocalToWorldTransform"], [[carbon, carbon.method, impl, impl.implemented], 18, "Setup"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsAlwaysOn"], [[carbon, carbon.method, impl, impl.adapted, void 0, impl.reason("The Carbon constructor's attribute-instance creation (cpp:11-18) is deferred to first use because the generated field default stays null.")], 18, "Initialize"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterComponents"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetPostProcessAttributes"]], 0, void 0, _EveChildTransform));
|
|
23
24
|
}
|
|
24
25
|
/** m_volumes (PIEveVolumeVector) [READ, PERSIST] */
|
|
25
26
|
volumes = (_initProto(this), _init_volumes(this, []));
|
|
@@ -45,12 +46,12 @@ new class extends _identity {
|
|
|
45
46
|
// are refreshed after every rebuild.
|
|
46
47
|
#boundingSphere = (_init_extra_postProcessAttributes(this), vec4.create());
|
|
47
48
|
|
|
48
|
-
/**
|
|
49
|
-
* Unions the volumes' bounding spheres into the object-space bound
|
|
50
|
-
* (EveChildPostProcessVolume.cpp:24-60). The zeroed start sphere stays
|
|
51
|
-
* "initialized" per CcpMath::Sphere semantics (radius >= 0,
|
|
52
|
-
* Sphere_inline.h:33-36), so the result always includes the local origin -
|
|
53
|
-
* matching Carbon exactly.
|
|
49
|
+
/**
|
|
50
|
+
* Unions the volumes' bounding spheres into the object-space bound
|
|
51
|
+
* (EveChildPostProcessVolume.cpp:24-60). The zeroed start sphere stays
|
|
52
|
+
* "initialized" per CcpMath::Sphere semantics (radius >= 0,
|
|
53
|
+
* Sphere_inline.h:33-36), so the result always includes the local origin -
|
|
54
|
+
* matching Carbon exactly.
|
|
54
55
|
*/
|
|
55
56
|
RebuildBoundingSphere() {
|
|
56
57
|
const sphere = this.#boundingSphere;
|
|
@@ -111,10 +112,10 @@ new class extends _identity {
|
|
|
111
112
|
/** Carbon's synchronous pass is empty (EveChildPostProcessVolume.cpp:96-98). */
|
|
112
113
|
UpdateSyncronous(_updateContext, _params) {}
|
|
113
114
|
|
|
114
|
-
/**
|
|
115
|
-
* Per-frame async update (EveChildPostProcessVolume.cpp:100-151): refresh
|
|
116
|
-
* the transform and bound, then resolve the post-process intensity from the
|
|
117
|
-
* camera position against the inclusion and exclusion volumes.
|
|
115
|
+
/**
|
|
116
|
+
* Per-frame async update (EveChildPostProcessVolume.cpp:100-151): refresh
|
|
117
|
+
* the transform and bound, then resolve the post-process intensity from the
|
|
118
|
+
* camera position against the inclusion and exclusion volumes.
|
|
118
119
|
*/
|
|
119
120
|
UpdateAsyncronous(updateContext, params) {
|
|
120
121
|
this.#UpdateTransformFromParent(params);
|
|
@@ -186,6 +187,18 @@ new class extends _identity {
|
|
|
186
187
|
return true;
|
|
187
188
|
}
|
|
188
189
|
|
|
190
|
+
/** Carbon EveChildPostProcessVolume::RegisterComponents (cpp:62-65):
|
|
191
|
+
* unconditional PostProcessOwner leaf self-registration. Carbon's
|
|
192
|
+
* UnRegisterComponents (cpp:67-70) only removes this same component, which
|
|
193
|
+
* EveEntity::UnRegister already did via UnRegisterAllComponents
|
|
194
|
+
* (EveEntity.cpp:90), so the JS un-side keeps the base no-op. */
|
|
195
|
+
RegisterComponents() {
|
|
196
|
+
const registry = this.GetComponentRegistry();
|
|
197
|
+
if (registry) {
|
|
198
|
+
registry.RegisterComponent(EveComponentType.PostProcessOwner, this);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
189
202
|
/** Returns the owned attribute record (EveChildPostProcessVolume.cpp:217-220). */
|
|
190
203
|
GetPostProcessAttributes() {
|
|
191
204
|
return this.#EnsureAttributes();
|
|
@@ -199,9 +212,9 @@ new class extends _identity {
|
|
|
199
212
|
}
|
|
200
213
|
}
|
|
201
214
|
|
|
202
|
-
/**
|
|
203
|
-
* Lazily creates the attribute record the Carbon constructor allocates with
|
|
204
|
-
* zero intensity (EveChildPostProcessVolume.cpp:11-18).
|
|
215
|
+
/**
|
|
216
|
+
* Lazily creates the attribute record the Carbon constructor allocates with
|
|
217
|
+
* zero intensity (EveChildPostProcessVolume.cpp:11-18).
|
|
205
218
|
*/
|
|
206
219
|
#EnsureAttributes() {
|
|
207
220
|
if (!this.postProcessAttributes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildPostProcessVolume.js","sources":["../../../../../src/generated/eve/child/EveChildPostProcessVolume.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/EveChildPostProcessVolume.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildPostProcessVolume.json.\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { EveChildTransform } from \"../../../eve/child/EveChildTransform.js\";\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { Tr2PostProcessAttributes } from \"../../../postProcess/Tr2PostProcessAttributes.js\";\n\n/** EveChildPostProcessVolume (eve/child) - generated from schema shapeHash 7d506595.... */\n@type.define({ className: \"EveChildPostProcessVolume\", family: \"eve/child\" })\nexport class EveChildPostProcessVolume extends EveChildTransform\n{\n\n /** m_volumes (PIEveVolumeVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveVolume\")\n volumes = [];\n\n /** m_exclusionVolumes (PIEveVolumeVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveVolume\")\n exclusionVolumes = [];\n\n /** m_boundingSphere.center (CcpMath::Sphere) [READ] */\n @io.read\n @type.rawStruct(\"CcpMath::Sphere\")\n boundingSphereCenter = null;\n\n /** m_boundingSphere.radius (CcpMath::Sphere) [READ] */\n @io.read\n @type.rawStruct(\"CcpMath::Sphere\")\n boundingSphereRadius = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_postProcessAttributes (Tr2PostProcessAttributesPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"Tr2PostProcessAttributes\")\n postProcessAttributes = null;\n\n // m_boundingSphere (CcpMath::Sphere) working state as a packed vec4; the\n // Carbon constructor initializes it to center (0,0,0), radius 0\n // (EveChildPostProcessVolume.cpp:11-18). The read-only mirror fields above\n // are refreshed after every rebuild.\n #boundingSphere = vec4.create();\n\n /**\n * Unions the volumes' bounding spheres into the object-space bound\n * (EveChildPostProcessVolume.cpp:24-60). The zeroed start sphere stays\n * \"initialized\" per CcpMath::Sphere semantics (radius >= 0,\n * Sphere_inline.h:33-36), so the result always includes the local origin -\n * matching Carbon exactly.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Volume bounding spheres arrive as duck-typed { center, radius } records rather than CcpMath::Sphere values.\")\n RebuildBoundingSphere()\n {\n const sphere = this.#boundingSphere;\n vec4.set(sphere, 0, 0, 0, 0);\n for (const volume of this.volumes)\n {\n const volumeSphere = volume?.GetBoundingSphere?.();\n const center = volumeSphere?.center;\n const radius = Number(volumeSphere?.radius);\n if (!center || !(radius >= 0))\n {\n // Sphere::IsInitialized is radius >= 0 (Sphere_inline.h:33-36).\n continue;\n }\n const dx = center[0] - sphere[0];\n const dy = center[1] - sphere[1];\n const dz = center[2] - sphere[2];\n const distanceSq = dx * dx + dy * dy + dz * dz;\n if (radius >= sphere[3] && distanceSq <= (radius - sphere[3]) * (radius - sphere[3]))\n {\n // volumeSphere.IsSphereInside(m_boundingSphere) - copy it (cpp:42-46).\n vec4.set(sphere, center[0], center[1], center[2], radius);\n continue;\n }\n if (sphere[3] >= radius && distanceSq <= (sphere[3] - radius) * (sphere[3] - radius))\n {\n // m_boundingSphere.IsSphereInside(volumeSphere) - no update (cpp:48-51).\n continue;\n }\n // Extend the sphere (cpp:54-58). The contains checks above exclude the\n // coincident-center case, so deltaLen > 0 here, as in Carbon.\n const deltaLen = Math.sqrt(distanceSq);\n const centerScale = 0.5 * (1 + (radius - sphere[3]) / deltaLen);\n sphere[0] += centerScale * dx;\n sphere[1] += centerScale * dy;\n sphere[2] += centerScale * dz;\n sphere[3] = 0.5 * (sphere[3] + radius + deltaLen);\n }\n this.#MirrorBoundingSphere();\n }\n\n @carbon.method\n @impl.implemented\n GetName()\n {\n return this.name;\n }\n\n @carbon.method\n @impl.implemented\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n /** Carbon's visibility pass is empty (EveChildPostProcessVolume.cpp:84-86). */\n @carbon.method\n @impl.noop\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\n {\n }\n\n /** Post-process volumes publish no renderables (EveChildPostProcessVolume.h:40). */\n @carbon.method\n @impl.noop\n GetRenderables(renderables = [])\n {\n return renderables;\n }\n\n /** Copies the object-space bound (EveChildPostProcessVolume.cpp:88-94). */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create(), _query = 0)\n {\n vec4.copy(out, this.#boundingSphere);\n return true;\n }\n\n /** Carbon's synchronous pass is empty (EveChildPostProcessVolume.cpp:96-98). */\n @carbon.method\n @impl.noop\n UpdateSyncronous(_updateContext, _params)\n {\n }\n\n /**\n * Per-frame async update (EveChildPostProcessVolume.cpp:100-151): refresh\n * the transform and bound, then resolve the post-process intensity from the\n * camera position against the inclusion and exclusion volumes.\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.adapted\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\n UpdateAsyncronous(updateContext, params)\n {\n this.#UpdateTransformFromParent(params);\n this.RebuildBoundingSphere();\n const attributes = this.#EnsureAttributes();\n\n // Global postprocess volumes have no volumes, so they are always on\n // (cpp:108-112).\n if (this.volumes.length === 0)\n {\n attributes.intensity = 1;\n return;\n }\n\n attributes.intensity = 0;\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\n if (!viewPosition)\n {\n return;\n }\n if (!mat4.invert(EveChildPostProcessVolume.#inverseWorld, this.worldTransform))\n {\n // JS-only guard: Carbon inverts unconditionally; a singular world\n // transform keeps the volume off for the frame.\n return;\n }\n const cameraInObjectSpace = vec3.transformMat4(EveChildPostProcessVolume.#cameraInObjectSpace, viewPosition, EveChildPostProcessVolume.#inverseWorld);\n\n // Sphere::IsPointInside with radiusEpsilon 1e-4 (Sphere_inline.h:107-117).\n const sphere = this.#boundingSphere;\n const dx = cameraInObjectSpace[0] - sphere[0];\n const dy = cameraInObjectSpace[1] - sphere[1];\n const dz = cameraInObjectSpace[2] - sphere[2];\n if (!(sphere[3] >= 0) || dx * dx + dy * dy + dz * dz > sphere[3] * sphere[3] + 1e-4)\n {\n return;\n }\n\n // Find the intensity within the volumes (cpp:123-132).\n for (const volume of this.volumes)\n {\n attributes.intensity = Math.max(attributes.intensity, Number(volume?.GetIntensity?.(cameraInObjectSpace)) || 0);\n if (attributes.intensity === 1)\n {\n break;\n }\n }\n\n if (attributes.intensity !== 0)\n {\n // Subtract the exclusion volumes' intensity (cpp:134-148).\n let negativeIntensity = 0;\n for (const volume of this.exclusionVolumes)\n {\n negativeIntensity = Math.max(negativeIntensity, Number(volume?.GetIntensity?.(cameraInObjectSpace)) || 0);\n if (negativeIntensity === 1)\n {\n break;\n }\n }\n attributes.intensity = Math.max(0, attributes.intensity - negativeIntensity);\n }\n }\n\n /** Carbon's implementation is empty (EveChildPostProcessVolume.cpp:160-162). */\n @carbon.method\n @impl.noop\n GetLocalToWorldTransform(_out = null)\n {\n }\n\n /** Forwards to the base transform setup (EveChildPostProcessVolume.cpp:164-168). */\n @carbon.method\n @impl.implemented\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\n {\n return super.Setup(scale, rotation, translation, lowestLodVisible);\n }\n\n @carbon.method\n @impl.implemented\n IsAlwaysOn()\n {\n return true;\n }\n\n /** Builds the initial bound (EveChildPostProcessVolume.cpp:177-181). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"The Carbon constructor's attribute-instance creation (cpp:11-18) is deferred to first use because the generated field default stays null.\")\n Initialize()\n {\n this.#EnsureAttributes();\n this.RebuildBoundingSphere();\n return true;\n }\n\n /** Returns the owned attribute record (EveChildPostProcessVolume.cpp:217-220). */\n @carbon.method\n @impl.implemented\n GetPostProcessAttributes()\n {\n return this.#EnsureAttributes();\n }\n\n /** Rebuilds the world transform from the parent (EveChildPostProcessVolume.cpp:153-158). */\n #UpdateTransformFromParent(params)\n {\n const parentTransform = params?.localToWorldTransform;\n if (parentTransform && parentTransform.length === 16)\n {\n this.UpdateTransform(parentTransform);\n }\n }\n\n /**\n * Lazily creates the attribute record the Carbon constructor allocates with\n * zero intensity (EveChildPostProcessVolume.cpp:11-18).\n */\n #EnsureAttributes()\n {\n if (!this.postProcessAttributes)\n {\n this.postProcessAttributes = new Tr2PostProcessAttributes();\n this.postProcessAttributes.intensity = 0;\n }\n return this.postProcessAttributes;\n }\n\n /** Refreshes the schema's read-only center/radius mirrors from the packed bound. */\n #MirrorBoundingSphere()\n {\n if (!this.boundingSphereCenter)\n {\n this.boundingSphereCenter = vec3.create();\n }\n vec3.set(this.boundingSphereCenter, this.#boundingSphere[0], this.#boundingSphere[1], this.#boundingSphere[2]);\n this.boundingSphereRadius = this.#boundingSphere[3];\n }\n\n static #inverseWorld = mat4.create();\n\n static #cameraInObjectSpace = vec3.create();\n\n}\n"],"names":["_EveChildPostProcessV","_identity","EveChildPostProcessVolume","EveChildTransform","e","_init_volumes","_init_extra_volumes","_init_exclusionVolumes","_init_extra_exclusionVolumes","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_name","_init_extra_name","_init_postProcessAttributes","_init_extra_postProcessAttributes","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","rawStruct","string","model","carbon","method","impl","adapted","reason","implemented","noop","contextual","volumes","exclusionVolumes","boundingSphereCenter","boundingSphereRadius","name","postProcessAttributes","vec4","create","RebuildBoundingSphere","sphere","set","volume","volumeSphere","GetBoundingSphere","center","radius","Number","dx","dy","dz","distanceSq","deltaLen","Math","sqrt","centerScale","GetName","SetName","String","UpdateVisibility","_updateContext","_parentTransform","_parentLod","GetRenderables","renderables","out","_query","copy","UpdateSyncronous","_params","UpdateAsyncronous","updateContext","params","attributes","length","intensity","viewPosition","renderContext","GetViewPosition","mat4","invert","worldTransform","cameraInObjectSpace","vec3","transformMat4","max","GetIntensity","negativeIntensity","GetLocalToWorldTransform","_out","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","GetPostProcessAttributes","#UpdateTransformFromParent","parentTransform","localToWorldTransform","UpdateTransform","#EnsureAttributes","Tr2PostProcessAttributes","#MirrorBoundingSphere","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildPostProcessVolume.js","sources":["../../../../../src/generated/eve/child/EveChildPostProcessVolume.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildPostProcessVolume.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/EveChildPostProcessVolume.json.\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveChildTransform } from \"../../../eve/child/EveChildTransform.js\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { Tr2PostProcessAttributes } from \"../../../postProcess/Tr2PostProcessAttributes.js\";\r\nimport { EveComponentType } from \"../../../eve/EveComponentTypes.js\";\r\n\r\n/** EveChildPostProcessVolume (eve/child) - generated from schema shapeHash 7d506595.... */\r\n@type.define({ className: \"EveChildPostProcessVolume\", family: \"eve/child\" })\r\nexport class EveChildPostProcessVolume extends EveChildTransform\r\n{\r\n\r\n /** m_volumes (PIEveVolumeVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveVolume\")\r\n volumes = [];\r\n\r\n /** m_exclusionVolumes (PIEveVolumeVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveVolume\")\r\n exclusionVolumes = [];\r\n\r\n /** m_boundingSphere.center (CcpMath::Sphere) [READ] */\r\n @io.read\r\n @type.rawStruct(\"CcpMath::Sphere\")\r\n boundingSphereCenter = null;\r\n\r\n /** m_boundingSphere.radius (CcpMath::Sphere) [READ] */\r\n @io.read\r\n @type.rawStruct(\"CcpMath::Sphere\")\r\n boundingSphereRadius = null;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_postProcessAttributes (Tr2PostProcessAttributesPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"Tr2PostProcessAttributes\")\r\n postProcessAttributes = null;\r\n\r\n // m_boundingSphere (CcpMath::Sphere) working state as a packed vec4; the\r\n // Carbon constructor initializes it to center (0,0,0), radius 0\r\n // (EveChildPostProcessVolume.cpp:11-18). The read-only mirror fields above\r\n // are refreshed after every rebuild.\r\n #boundingSphere = vec4.create();\r\n\r\n /**\r\n * Unions the volumes' bounding spheres into the object-space bound\r\n * (EveChildPostProcessVolume.cpp:24-60). The zeroed start sphere stays\r\n * \"initialized\" per CcpMath::Sphere semantics (radius >= 0,\r\n * Sphere_inline.h:33-36), so the result always includes the local origin -\r\n * matching Carbon exactly.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Volume bounding spheres arrive as duck-typed { center, radius } records rather than CcpMath::Sphere values.\")\r\n RebuildBoundingSphere()\r\n {\r\n const sphere = this.#boundingSphere;\r\n vec4.set(sphere, 0, 0, 0, 0);\r\n for (const volume of this.volumes)\r\n {\r\n const volumeSphere = volume?.GetBoundingSphere?.();\r\n const center = volumeSphere?.center;\r\n const radius = Number(volumeSphere?.radius);\r\n if (!center || !(radius >= 0))\r\n {\r\n // Sphere::IsInitialized is radius >= 0 (Sphere_inline.h:33-36).\r\n continue;\r\n }\r\n const dx = center[0] - sphere[0];\r\n const dy = center[1] - sphere[1];\r\n const dz = center[2] - sphere[2];\r\n const distanceSq = dx * dx + dy * dy + dz * dz;\r\n if (radius >= sphere[3] && distanceSq <= (radius - sphere[3]) * (radius - sphere[3]))\r\n {\r\n // volumeSphere.IsSphereInside(m_boundingSphere) - copy it (cpp:42-46).\r\n vec4.set(sphere, center[0], center[1], center[2], radius);\r\n continue;\r\n }\r\n if (sphere[3] >= radius && distanceSq <= (sphere[3] - radius) * (sphere[3] - radius))\r\n {\r\n // m_boundingSphere.IsSphereInside(volumeSphere) - no update (cpp:48-51).\r\n continue;\r\n }\r\n // Extend the sphere (cpp:54-58). The contains checks above exclude the\r\n // coincident-center case, so deltaLen > 0 here, as in Carbon.\r\n const deltaLen = Math.sqrt(distanceSq);\r\n const centerScale = 0.5 * (1 + (radius - sphere[3]) / deltaLen);\r\n sphere[0] += centerScale * dx;\r\n sphere[1] += centerScale * dy;\r\n sphere[2] += centerScale * dz;\r\n sphere[3] = 0.5 * (sphere[3] + radius + deltaLen);\r\n }\r\n this.#MirrorBoundingSphere();\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /** Carbon's visibility pass is empty (EveChildPostProcessVolume.cpp:84-86). */\r\n @carbon.method\r\n @impl.noop\r\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\r\n {\r\n }\r\n\r\n /** Post-process volumes publish no renderables (EveChildPostProcessVolume.h:40). */\r\n @carbon.method\r\n @impl.noop\r\n GetRenderables(renderables = [])\r\n {\r\n return renderables;\r\n }\r\n\r\n /** Copies the object-space bound (EveChildPostProcessVolume.cpp:88-94). */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create(), _query = 0)\r\n {\r\n vec4.copy(out, this.#boundingSphere);\r\n return true;\r\n }\r\n\r\n /** Carbon's synchronous pass is empty (EveChildPostProcessVolume.cpp:96-98). */\r\n @carbon.method\r\n @impl.noop\r\n UpdateSyncronous(_updateContext, _params)\r\n {\r\n }\r\n\r\n /**\r\n * Per-frame async update (EveChildPostProcessVolume.cpp:100-151): refresh\r\n * the transform and bound, then resolve the post-process intensity from the\r\n * camera position against the inclusion and exclusion volumes.\r\n */\r\n @carbon.method\r\n @carbon.contextual([\"camera\"])\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n UpdateAsyncronous(updateContext, params)\r\n {\r\n this.#UpdateTransformFromParent(params);\r\n this.RebuildBoundingSphere();\r\n const attributes = this.#EnsureAttributes();\r\n\r\n // Global postprocess volumes have no volumes, so they are always on\r\n // (cpp:108-112).\r\n if (this.volumes.length === 0)\r\n {\r\n attributes.intensity = 1;\r\n return;\r\n }\r\n\r\n attributes.intensity = 0;\r\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\r\n if (!viewPosition)\r\n {\r\n return;\r\n }\r\n if (!mat4.invert(EveChildPostProcessVolume.#inverseWorld, this.worldTransform))\r\n {\r\n // JS-only guard: Carbon inverts unconditionally; a singular world\r\n // transform keeps the volume off for the frame.\r\n return;\r\n }\r\n const cameraInObjectSpace = vec3.transformMat4(EveChildPostProcessVolume.#cameraInObjectSpace, viewPosition, EveChildPostProcessVolume.#inverseWorld);\r\n\r\n // Sphere::IsPointInside with radiusEpsilon 1e-4 (Sphere_inline.h:107-117).\r\n const sphere = this.#boundingSphere;\r\n const dx = cameraInObjectSpace[0] - sphere[0];\r\n const dy = cameraInObjectSpace[1] - sphere[1];\r\n const dz = cameraInObjectSpace[2] - sphere[2];\r\n if (!(sphere[3] >= 0) || dx * dx + dy * dy + dz * dz > sphere[3] * sphere[3] + 1e-4)\r\n {\r\n return;\r\n }\r\n\r\n // Find the intensity within the volumes (cpp:123-132).\r\n for (const volume of this.volumes)\r\n {\r\n attributes.intensity = Math.max(attributes.intensity, Number(volume?.GetIntensity?.(cameraInObjectSpace)) || 0);\r\n if (attributes.intensity === 1)\r\n {\r\n break;\r\n }\r\n }\r\n\r\n if (attributes.intensity !== 0)\r\n {\r\n // Subtract the exclusion volumes' intensity (cpp:134-148).\r\n let negativeIntensity = 0;\r\n for (const volume of this.exclusionVolumes)\r\n {\r\n negativeIntensity = Math.max(negativeIntensity, Number(volume?.GetIntensity?.(cameraInObjectSpace)) || 0);\r\n if (negativeIntensity === 1)\r\n {\r\n break;\r\n }\r\n }\r\n attributes.intensity = Math.max(0, attributes.intensity - negativeIntensity);\r\n }\r\n }\r\n\r\n /** Carbon's implementation is empty (EveChildPostProcessVolume.cpp:160-162). */\r\n @carbon.method\r\n @impl.noop\r\n GetLocalToWorldTransform(_out = null)\r\n {\r\n }\r\n\r\n /** Forwards to the base transform setup (EveChildPostProcessVolume.cpp:164-168). */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n IsAlwaysOn()\r\n {\r\n return true;\r\n }\r\n\r\n /** Builds the initial bound (EveChildPostProcessVolume.cpp:177-181). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The Carbon constructor's attribute-instance creation (cpp:11-18) is deferred to first use because the generated field default stays null.\")\r\n Initialize()\r\n {\r\n this.#EnsureAttributes();\r\n this.RebuildBoundingSphere();\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildPostProcessVolume::RegisterComponents (cpp:62-65):\r\n * unconditional PostProcessOwner leaf self-registration. Carbon's\r\n * UnRegisterComponents (cpp:67-70) only removes this same component, which\r\n * EveEntity::UnRegister already did via UnRegisterAllComponents\r\n * (EveEntity.cpp:90), so the JS un-side keeps the base no-op. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.PostProcessOwner, this);\r\n }\r\n }\r\n\r\n /** Returns the owned attribute record (EveChildPostProcessVolume.cpp:217-220). */\r\n @carbon.method\r\n @impl.implemented\r\n GetPostProcessAttributes()\r\n {\r\n return this.#EnsureAttributes();\r\n }\r\n\r\n /** Rebuilds the world transform from the parent (EveChildPostProcessVolume.cpp:153-158). */\r\n #UpdateTransformFromParent(params)\r\n {\r\n const parentTransform = params?.localToWorldTransform;\r\n if (parentTransform && parentTransform.length === 16)\r\n {\r\n this.UpdateTransform(parentTransform);\r\n }\r\n }\r\n\r\n /**\r\n * Lazily creates the attribute record the Carbon constructor allocates with\r\n * zero intensity (EveChildPostProcessVolume.cpp:11-18).\r\n */\r\n #EnsureAttributes()\r\n {\r\n if (!this.postProcessAttributes)\r\n {\r\n this.postProcessAttributes = new Tr2PostProcessAttributes();\r\n this.postProcessAttributes.intensity = 0;\r\n }\r\n return this.postProcessAttributes;\r\n }\r\n\r\n /** Refreshes the schema's read-only center/radius mirrors from the packed bound. */\r\n #MirrorBoundingSphere()\r\n {\r\n if (!this.boundingSphereCenter)\r\n {\r\n this.boundingSphereCenter = vec3.create();\r\n }\r\n vec3.set(this.boundingSphereCenter, this.#boundingSphere[0], this.#boundingSphere[1], this.#boundingSphere[2]);\r\n this.boundingSphereRadius = this.#boundingSphere[3];\r\n }\r\n\r\n static #inverseWorld = mat4.create();\r\n\r\n static #cameraInObjectSpace = vec3.create();\r\n\r\n}\r\n"],"names":["_EveChildPostProcessV","_identity","EveChildPostProcessVolume","EveChildTransform","e","_init_volumes","_init_extra_volumes","_init_exclusionVolumes","_init_extra_exclusionVolumes","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_name","_init_extra_name","_init_postProcessAttributes","_init_extra_postProcessAttributes","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","rawStruct","string","model","carbon","method","impl","adapted","reason","implemented","noop","contextual","volumes","exclusionVolumes","boundingSphereCenter","boundingSphereRadius","name","postProcessAttributes","vec4","create","RebuildBoundingSphere","sphere","set","volume","volumeSphere","GetBoundingSphere","center","radius","Number","dx","dy","dz","distanceSq","deltaLen","Math","sqrt","centerScale","GetName","SetName","String","UpdateVisibility","_updateContext","_parentTransform","_parentLod","GetRenderables","renderables","out","_query","copy","UpdateSyncronous","_params","UpdateAsyncronous","updateContext","params","attributes","length","intensity","viewPosition","renderContext","GetViewPosition","mat4","invert","worldTransform","cameraInObjectSpace","vec3","transformMat4","max","GetIntensity","negativeIntensity","GetLocalToWorldTransform","_out","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","PostProcessOwner","GetPostProcessAttributes","#UpdateTransformFromParent","parentTransform","localToWorldTransform","UpdateTransform","#EnsureAttributes","Tr2PostProcessAttributes","#MirrorBoundingSphere","constructor"],"mappings":"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"}
|