@needle-tools/engine 2.40.0-pre → 2.41.0-pre

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/needle-engine.d.ts +269 -123
  3. package/dist/needle-engine.js +389 -389
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +41 -41
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/engine_gizmos.d.ts +1 -0
  8. package/lib/engine/engine_gizmos.js +16 -4
  9. package/lib/engine/engine_gizmos.js.map +1 -1
  10. package/lib/engine/engine_math.d.ts +9 -6
  11. package/lib/engine/engine_math.js +9 -0
  12. package/lib/engine/engine_math.js.map +1 -1
  13. package/lib/engine/engine_physics.js +14 -6
  14. package/lib/engine/engine_physics.js.map +1 -1
  15. package/lib/engine/engine_serialization_core.js +2 -0
  16. package/lib/engine/engine_serialization_core.js.map +1 -1
  17. package/lib/engine/engine_utils.d.ts +1 -0
  18. package/lib/engine/engine_utils.js +3 -0
  19. package/lib/engine/engine_utils.js.map +1 -1
  20. package/lib/engine-components/AnimationCurve.js +20 -5
  21. package/lib/engine-components/AnimationCurve.js.map +1 -1
  22. package/lib/engine-components/Light.d.ts +2 -0
  23. package/lib/engine-components/Light.js +33 -9
  24. package/lib/engine-components/Light.js.map +1 -1
  25. package/lib/engine-components/ParticleSystem.d.ts +15 -26
  26. package/lib/engine-components/ParticleSystem.js +251 -184
  27. package/lib/engine-components/ParticleSystem.js.map +1 -1
  28. package/lib/engine-components/ParticleSystemModules.d.ts +208 -63
  29. package/lib/engine-components/ParticleSystemModules.js +640 -153
  30. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  31. package/lib/engine-components/WebXR.js +8 -3
  32. package/lib/engine-components/WebXR.js.map +1 -1
  33. package/lib/engine-components/codegen/components.d.ts +6 -0
  34. package/lib/engine-components/codegen/components.js +6 -0
  35. package/lib/engine-components/codegen/components.js.map +1 -1
  36. package/package.json +3 -1
  37. package/src/engine/codegen/register_types.js +24 -0
  38. package/src/engine/engine_gizmos.ts +19 -4
  39. package/src/engine/engine_math.ts +19 -6
  40. package/src/engine/engine_physics.ts +17 -7
  41. package/src/engine/engine_serialization_core.ts +1 -0
  42. package/src/engine/engine_utils.ts +5 -0
  43. package/src/engine-components/AnimationCurve.ts +25 -11
  44. package/src/engine-components/Light.ts +39 -8
  45. package/src/engine-components/ParticleSystem.ts +314 -194
  46. package/src/engine-components/ParticleSystemModules.ts +537 -154
  47. package/src/engine-components/WebXR.ts +11 -8
  48. package/src/engine-components/codegen/components.ts +6 -0
  49. package/src/engine/dist/engine_physics.js +0 -739
  50. package/src/engine/dist/engine_setup.js +0 -777
  51. package/src/engine-components/dist/CharacterController.js +0 -123
  52. package/src/engine-components/dist/RigidBody.js +0 -458
@@ -1,213 +1,280 @@
1
- import { Behaviour, GameObject } from "./Component";
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Behaviour } from "./Component";
2
8
  import * as THREE from "three";
3
- import * as Modules from "./ParticleSystemModules";
4
- import { Mathf } from "../engine/engine_math";
9
+ import { MainModule, EmissionModule, ShapeModule, ColorOverLifetimeModule, SizeOverLifetimeModule, NoiseModule, ParticleSystemSimulationSpace } from "./ParticleSystemModules";
5
10
  import { getParam } from "../engine/engine_utils";
11
+ import System, { Emitter, Position, Life, SpriteRenderer, Particle, } from 'three-nebula';
12
+ // https://github.dev/creativelifeform/three-nebula
13
+ import { serializeable } from "../engine/engine_serialization";
14
+ import { Context } from "../engine/engine_setup";
15
+ import { AxesHelper, Material, Vector3 } from "three";
16
+ import { getWorldQuaternion, getWorldScale } from "../engine/engine_three_utils";
6
17
  const debug = getParam("debugparticles");
7
- class ParticleState {
8
- age = 0;
9
- lifetime = 0;
10
- position;
11
- velocity;
12
- color;
13
- }
14
18
  export class ParticleSystemRenderer extends Behaviour {
15
- get mainTexture() {
16
- if (this.sharedMaterial) {
17
- const tex = this.context.assets.findTexture(this.sharedMaterial);
18
- if (tex)
19
- return tex;
20
- }
21
- return null;
22
- }
23
- getMesh(_index) {
24
- if (!this.mesh)
25
- return null;
26
- return this.context.assets.findMesh(this.mesh);
27
- }
28
- sharedMaterial;
29
- mesh;
30
- awake() {
31
- if (debug)
32
- console.log(this);
33
- }
19
+ particleMaterial;
34
20
  }
21
+ __decorate([
22
+ serializeable(Material)
23
+ ], ParticleSystemRenderer.prototype, "particleMaterial", void 0);
35
24
  export class ParticleSystem extends Behaviour {
25
+ colorOverLifetime;
36
26
  main;
37
27
  emission;
28
+ sizeOverLifetime;
38
29
  shape;
30
+ noise;
39
31
  renderer;
40
- geometry;
41
- material;
42
- particlesMesh;
43
- positions;
44
- positionsArray;
45
- particleStates = [];
46
- activeCount = 0;
47
- shapeRotation = new THREE.Quaternion();
48
- tempVec3 = new THREE.Vector3();
49
- tempQuat = new THREE.Quaternion();
32
+ _system;
33
+ _emitter;
34
+ _size;
50
35
  awake() {
51
- this.renderer = GameObject.getComponent(this.gameObject, ParticleSystemRenderer);
52
- // if (debug)
53
- console.log(this);
36
+ if (debug) {
37
+ console.log(this);
38
+ this.gameObject.add(new AxesHelper(1));
39
+ }
40
+ this.renderer = this.gameObject.getComponent(ParticleSystemRenderer);
41
+ this._system = new System();
42
+ const container = this.main.simulationSpace == ParticleSystemSimulationSpace.Local ? this.gameObject : this.context.scene;
43
+ const renderer = new SpriteRenderer(container, THREE);
44
+ renderer.logRendererType = () => { };
45
+ if (this.renderer.particleMaterial) {
46
+ const sprite = renderer._body;
47
+ sprite.layers.disableAll();
48
+ sprite.layers.set(2); // ignore raycasting particles
49
+ sprite.renderOrder = 1;
50
+ sprite.material.map = this.renderer.particleMaterial.map;
51
+ sprite.material.transparent = true;
52
+ // sprite.material.sizeAttenuation = false;
53
+ sprite.material.blending = this.renderer.particleMaterial.blending;
54
+ sprite.material.blendDst = this.renderer.particleMaterial.blendDst;
55
+ sprite.material.blendDstAlpha = this.renderer.particleMaterial.blendDstAlpha;
56
+ sprite.material.blendEquation = this.renderer.particleMaterial.blendEquation;
57
+ sprite.material.blendEquationAlpha = this.renderer.particleMaterial.blendEquationAlpha;
58
+ sprite.material.blendSrc = this.renderer.particleMaterial.blendSrc;
59
+ sprite.material.blendSrcAlpha = this.renderer.particleMaterial.blendSrcAlpha;
60
+ sprite.material.premultipliedAlpha = this.renderer.particleMaterial.premultipliedAlpha;
61
+ sprite.material.depthWrite = false;
62
+ sprite.material.depthTest = true;
63
+ if (debug)
64
+ console.log(sprite);
65
+ }
66
+ this._system.addRenderer(renderer);
67
+ const initializers = [];
68
+ const behaviours = [];
69
+ const life = new Life();
70
+ life.lifePan = new MinMaxCurveSpan(this.main.startLifetime, 1);
71
+ initializers.push(life);
72
+ const shape = new Position(this.shape);
73
+ initializers.push(shape);
74
+ const size = this._size = new SizeBehaviour(this.main.startSize, this.main.startSizeMultiplier);
75
+ size.sizeOverLifetimeModule = this.sizeOverLifetime;
76
+ behaviours.push(size);
77
+ const color = new GradientBehaviour(this.main.startColor, this.colorOverLifetime?.enabled ? this.colorOverLifetime.color : undefined);
78
+ behaviours.push(color);
79
+ const velocity = new VelocityBehaviour(renderer.container, this.shape, this.noise, this.main.startSpeed, 1);
80
+ velocity.gravity = this.main.gravityModifier;
81
+ velocity.gravityModifierMultiplier = this.main.gravityModifierMultiplier;
82
+ behaviours.push(velocity);
83
+ const emitter = this._emitter = new Emitter({});
84
+ emitter.setInitializers(initializers);
85
+ emitter.setBehaviours(behaviours);
86
+ emitter.setRate(this.emission);
87
+ emitter.damping = 0;
54
88
  }
55
89
  onEnable() {
56
- // console.trace();
57
- if (this.geometry) {
58
- return;
90
+ this._emitter.emit();
91
+ this._system.addEmitter(this._emitter);
92
+ this._system.emit({ onStart: () => { }, onUpdate: () => { }, onEnd: () => { }, });
93
+ }
94
+ onDisable() {
95
+ this._system.removeEmitter(this._emitter);
96
+ }
97
+ onBeforeRender() {
98
+ this.emission.currentParticles = this._system.getCount();
99
+ this.emission.maxParticles = this.main.maxParticles;
100
+ this.shape.update(this.context, this.main.simulationSpace, this.gameObject);
101
+ this.noise.update(this.context);
102
+ this._system.update(this.context.time.deltaTime * this.main.simulationSpeed);
103
+ // sprite materials must be scaled in AR
104
+ const cam = this.context.mainCamera;
105
+ if (cam) {
106
+ const scale = getWorldScale(cam);
107
+ this._size.cameraScale = scale.x;
108
+ }
109
+ }
110
+ }
111
+ __decorate([
112
+ serializeable(ColorOverLifetimeModule)
113
+ ], ParticleSystem.prototype, "colorOverLifetime", void 0);
114
+ __decorate([
115
+ serializeable(MainModule)
116
+ ], ParticleSystem.prototype, "main", void 0);
117
+ __decorate([
118
+ serializeable(EmissionModule)
119
+ ], ParticleSystem.prototype, "emission", void 0);
120
+ __decorate([
121
+ serializeable(SizeOverLifetimeModule)
122
+ ], ParticleSystem.prototype, "sizeOverLifetime", void 0);
123
+ __decorate([
124
+ serializeable(ShapeModule)
125
+ ], ParticleSystem.prototype, "shape", void 0);
126
+ __decorate([
127
+ serializeable(NoiseModule)
128
+ ], ParticleSystem.prototype, "noise", void 0);
129
+ class MinMaxCurveSpan {
130
+ time;
131
+ curve;
132
+ multiplier = 1;
133
+ constructor(minMaxCurve, multiplier = 1) {
134
+ this.time = Context.Current.time;
135
+ this.curve = minMaxCurve;
136
+ this.multiplier = multiplier;
137
+ }
138
+ /** called by nebula */
139
+ getValue(lerp) {
140
+ const res = this.curve.evaluate(this.time.time, lerp) * this.multiplier;
141
+ return res;
142
+ }
143
+ }
144
+ class CustomBehaviour extends Behaviour {
145
+ }
146
+ class MinMaxCurveBehaviour extends CustomBehaviour {
147
+ startCurve;
148
+ startMultiplier = 1;
149
+ constructor(startCurve, startMultiplier = 1) {
150
+ super();
151
+ this.startCurve = startCurve;
152
+ this.startMultiplier = startMultiplier;
153
+ }
154
+ }
155
+ class SizeBehaviour extends MinMaxCurveBehaviour {
156
+ sizeOverLifetimeModule;
157
+ cameraScale = 1;
158
+ applyBehaviour(particle, _deltaTime, _index) {
159
+ if (particle.target.type === "Sprite") {
160
+ particle.radius = 1 / this.cameraScale;
59
161
  }
60
- // console.log(this);
61
- this.particleStates = [];
62
- this.shapeRotation.setFromEuler(new THREE.Euler(this.shape.rotation.x, this.shape.rotation.y, this.shape.rotation.z));
63
- // TODO: how to render particle mesh
64
- // const assignedMesh = this.renderer?.getMesh(0);
65
- // console.log(assignedMesh);
66
- this.geometry = new THREE.BufferGeometry();
67
- this.positionsArray = new Float32Array(this.main.maxParticles * 3);
68
- this.positions = new THREE.Float32BufferAttribute(this.positionsArray, 3);
69
- this.geometry.setAttribute('position', this.positions);
70
- // const color = new THREE.Color();
71
- const colorsArray = new Float32Array(this.main.maxParticles * 3);
72
- for (let i = 0; i < colorsArray.length; i++) {
73
- colorsArray[i * 3] = 1;
74
- colorsArray[i * 3 + 1] = 1;
75
- colorsArray[i * 3 + 2] = 1;
162
+ else
163
+ particle.radius = 1;
164
+ // particle.target.scale.set(1,1,1);
165
+ if (this.sizeOverLifetimeModule?.enabled) {
166
+ const time = particle.age / particle.life;
167
+ const scaleVector = particle.target.scale;
168
+ this.sizeOverLifetimeModule.evaluate?.call(this.sizeOverLifetimeModule, time, scaleVector);
169
+ // scaleVector.set(.1, .1, .1)
170
+ particle.scale = particle.start_scale * scaleVector.x;
171
+ // console.log(time, particle.scale);
76
172
  }
77
- const colors = new THREE.Float32BufferAttribute(colorsArray, 3);
78
- this.geometry.setAttribute('color', colors);
79
- this.material = new THREE.PointsMaterial({ size: this.main.startSize, color: 0xffffff, vertexColors: true });
80
- this.material.map = this.renderer.mainTexture;
81
- // this.material.onBeforeCompile = (shader) => {
82
- // shader.
83
- // });
84
- this.particlesMesh = new THREE.Points(this.geometry, this.material);
85
- this.particlesMesh.layers.enable(2);
86
- this.gameObject.add(this.particlesMesh);
87
- this.activeCount = this.main.prewarm ? this.main.maxParticles : 0;
88
173
  }
89
- // update() {
90
- // if (!this.geometry) return;
91
- // const t = this.context.time.deltaTime;
92
- // this.emit(t);
93
- // for (let i = 0; i < this.activeCount; i += 1) {
94
- // const ps = this.particleStates[i];
95
- // if (!ps) continue;
96
- // const vx = ps.velocity.x * t;
97
- // const vy = ps.velocity.y * t;
98
- // const vz = ps.velocity.z * t;
99
- // ps.position.x += vx;
100
- // ps.position.y += vy;
101
- // ps.position.z += vz;
102
- // this.updateOverLifetime(i, ps);
103
- // this.geometry.attributes.position.setXYZ(i, ps.position.x, ps.position.y, ps.position.z);
104
- // this.geometry.attributes.color.setXYZ(i, ps.color.r, ps.color.g, ps.color.b);
105
- // }
106
- // if (this.geometry) {
107
- // this.geometry.attributes.position.needsUpdate = true;
108
- // this.geometry.setDrawRange(0, this.activeCount);
109
- // }
110
- // }
111
- emit(deltaTime) {
112
- const count = this.activeCount;
113
- for (let i = 0; i < count; i += 1) {
114
- if (i >= this.particleStates.length) {
115
- const ps = new ParticleState();
116
- ps.lifetime = this.main.startLifetime ?? 1;
117
- ps.position = new THREE.Vector3();
118
- ps.velocity = new THREE.Vector3();
119
- ps.color = new THREE.Color(1, 0, 0);
120
- this.particleStates.push(ps);
121
- this.initializeParticle(i, ps);
122
- ps.age = ps.lifetime * Math.random();
123
- }
124
- const ps = this.particleStates[i];
125
- if (ps.age > ps.lifetime) {
126
- this.activeCount -= 1;
127
- this.activeCount = Math.max(0, this.activeCount);
128
- this.initializeParticle(i, ps);
129
- continue;
174
+ initialize(particle) {
175
+ particle.scale = this.startCurve.evaluate(0, Math.random()); // * this.startMultiplier;
176
+ particle.start_scale = particle.scale;
177
+ }
178
+ }
179
+ class GradientBehaviour extends CustomBehaviour {
180
+ startGradient;
181
+ gradient;
182
+ constructor(startGradient, gradient) {
183
+ super();
184
+ this.startGradient = startGradient;
185
+ this.gradient = gradient;
186
+ }
187
+ /** called from nebula */
188
+ applyBehaviour(target, _deltaTime, _index) {
189
+ // console.log(target, time, index)
190
+ if (target instanceof Particle) {
191
+ if (this.gradient) {
192
+ const t = target.age / target.life;
193
+ const ev = this.gradient.evaluate(t);
194
+ const startColor = target.color_start;
195
+ target.color.r = startColor.r * ev.r;
196
+ target.color.g = startColor.g * ev.g;
197
+ target.color.b = startColor.b * ev.b;
198
+ target.alpha = ev.alpha * target.alpha_start;
130
199
  }
131
- ps.age += deltaTime;
132
- this.particleStates[i] = ps;
133
200
  }
134
- this.activeCount += deltaTime * (this.emission.rate);
135
- this.activeCount = Math.min(this.main.maxParticles, this.activeCount);
136
201
  }
137
- initializeParticle(index, particle) {
138
- if (!this.geometry)
139
- return;
202
+ id = Symbol('gradientId');
203
+ _internalId = 0;
204
+ /** called from nebula */
205
+ initialize(particle) {
206
+ // console.log(particle);
207
+ // const context = Context.Current;
208
+ // const time = context.time.time;
209
+ const ev = this.startGradient.evaluate(Math.random());
210
+ particle.color.r = ev.r;
211
+ particle.color.g = ev.g;
212
+ particle.color.b = ev.b;
213
+ particle.alpha = ev.alpha;
140
214
  particle.age = 0;
141
- particle.color.set(this.main.startColor);
142
- if (this.main.startColor1) {
143
- particle.color.lerp(this.main.startColor1, Math.random());
144
- }
145
- this.geometry.attributes.color.needsUpdate = true;
146
- this.assignPosition(particle.position);
147
- this.assignVelocity(particle.position, particle.velocity);
148
- const position = particle.position;
149
- position.multiply(this.shape.scale);
150
- position.applyQuaternion(this.shapeRotation);
151
- position.add(this.shape.position);
152
- // push back
153
- this.particleStates.splice(index, 1);
154
- this.particleStates.push(particle);
215
+ particle.color_start = { r: ev.r, g: ev.g, b: ev.b };
216
+ particle.alpha_start = ev.alpha;
217
+ particle.useColor = true;
218
+ particle.useAlpha = true;
219
+ if (particle[this.id] === undefined)
220
+ particle[this.id] = this._internalId++;
155
221
  }
156
- updateOverLifetime(_index, _particle) {
157
- // particle.position.multiplyScalar()
222
+ }
223
+ class VelocityBehaviour extends CustomBehaviour {
224
+ container;
225
+ shape;
226
+ noise;
227
+ startSpeed;
228
+ startMultiplier = 1;
229
+ gravity;
230
+ gravityModifierMultiplier = 1;
231
+ downDirection = new Vector3(0, -1, 0);
232
+ _temp = new Vector3();
233
+ constructor(container, shape, noise, startCurve, startMultiplier) {
234
+ super();
235
+ this.container = container;
236
+ this.shape = shape;
237
+ this.noise = noise;
238
+ this.startSpeed = startCurve;
239
+ this.startMultiplier = startMultiplier;
240
+ const quat = getWorldQuaternion(container);
241
+ this.downDirection.applyQuaternion(quat);
158
242
  }
159
- assignPosition(position) {
160
- switch (this.shape.shapeType) {
161
- case Modules.ParticleSystemShapeType.Sphere:
162
- position.set(Math.random() - .5, Math.random() - .5, Math.random() - .5).multiplyScalar(this.shape.radius);
163
- break;
164
- case Modules.ParticleSystemShapeType.Box:
165
- position.set(Math.random() - .5, Math.random() - .5, Math.random() - .5);
166
- break;
167
- default:
168
- position.set(0, 0, 0);
169
- break;
243
+ applyBehaviour(target, deltaTime, index) {
244
+ if (target instanceof Particle) {
245
+ // target.velocity.x = target.velocity_start.x;
246
+ // target.velocity.y = target.velocity_start.y;
247
+ // target.velocity.z = target.velocity_start.z;
248
+ if (target.gravity) {
249
+ // get world down vector
250
+ this._temp.copy(this.downDirection);
251
+ this._temp.multiplyScalar(target.gravity * deltaTime);
252
+ target.velocity.sub(this._temp);
253
+ }
254
+ if (this.noise) {
255
+ this.noise.applyNoise(index, target.position, target.velocity, deltaTime, target.age, target.life);
256
+ }
170
257
  }
171
258
  }
172
- assignVelocity(position, velocity) {
173
- switch (this.shape.shapeType) {
174
- case Modules.ParticleSystemShapeType.Sphere:
175
- velocity.set(position.x, position.y, position.z);
176
- break;
177
- case Modules.ParticleSystemShapeType.Box:
178
- velocity.set(0, 0, 1);
179
- if (this.shape.sphericalDirectionAmount > 0) {
180
- this.tempVec3.set(position.x, position.y, position.z).multiply(this.shape.scale).normalize();
181
- velocity.lerp(this.tempVec3, this.shape.sphericalDirectionAmount);
182
- }
183
- break;
184
- case Modules.ParticleSystemShapeType.Cone:
185
- // const maxAngle = 90;
186
- // const fwd = this.shape.angle / maxAngle;
187
- // const side = 1 - fwd;
188
- // const angle = Mathf.toRadians(this.shape.angle);
189
- // const upDir = Math.random();
190
- // const sideDir = 1 - upDir;
191
- // const quat = new THREE.Quaternion().setFromAxisAngle(this.tempVec3.set(side, 0, fwd), angle * Math.random())
192
- const dir = new THREE.Vector3(0, 1, 0); //.applyQuaternion(quat);
193
- velocity.copy(dir);
194
- break;
195
- case Modules.ParticleSystemShapeType.Circle:
196
- this.tempQuat.setFromAxisAngle(this.tempVec3.set(0, 0, 1), Math.random() * Mathf.toRadians(this.shape.arc));
197
- velocity.copy(this.tempVec3.set(1, 0, 0).applyQuaternion(this.tempQuat));
198
- break;
199
- default:
200
- velocity.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1);
201
- break;
259
+ initialize(particle) {
260
+ const dir = this.shape.getDirection(particle.position);
261
+ const speed = this.startSpeed.evaluate(0, Math.random()) * this.startMultiplier;
262
+ particle.velocity.x = dir.x * speed;
263
+ particle.velocity.y = dir.y * speed;
264
+ particle.velocity.z = dir.z * speed;
265
+ if (!particle.velocity_start)
266
+ particle.velocity_start = {};
267
+ particle.velocity_start.x = particle.velocity.x;
268
+ particle.velocity_start.y = particle.velocity.y;
269
+ particle.velocity_start.z = particle.velocity.z;
270
+ if (this.gravity) {
271
+ particle.gravity = this.gravity.evaluate(0, Math.random()) * this.gravityModifierMultiplier * 9.81;
202
272
  }
203
- velocity.normalize();
204
- // set position
205
- switch (this.shape.shapeType) {
206
- case Modules.ParticleSystemShapeType.Circle:
207
- position.add(velocity).multiplyScalar(this.shape.radius);
208
- break;
273
+ else {
274
+ particle.gravity = 0;
209
275
  }
210
- velocity.multiplyScalar(this.main.startSpeedMultiplier);
276
+ // particle.acceleration.y = 1;
277
+ // console.log(particle);
211
278
  }
212
279
  }
213
280
  //# sourceMappingURL=ParticleSystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleSystem.js","sourceRoot":"","sources":["../../../engine-components/ParticleSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParticleSystem.js","sourceRoot":"","sources":["../../../engine-components/ParticleSystem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAwD,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAA;AACpO,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,MAAM,EAAE,EACX,OAAO,EAGP,QAAQ,EAGR,IAAI,EAMJ,cAAc,EAGd,QAAQ,GAGX,MAAM,cAAc,CAAC;AACtB,mDAAmD;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAoC,OAAO,EAAE,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEjF,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAIzC,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IAGjD,gBAAgB,CAAkB;CACrC;AADG;IADC,aAAa,CAAC,QAAQ,CAAC;gEACU;AAGtC,MAAM,OAAO,cAAe,SAAQ,SAAS;IAGzC,iBAAiB,CAA2B;IAG5C,IAAI,CAAc;IAGlB,QAAQ,CAAkB;IAG1B,gBAAgB,CAA0B;IAG1C,KAAK,CAAe;IAGpB,KAAK,CAAe;IAEpB,QAAQ,CAA0B;IAE1B,OAAO,CAAU;IACjB,QAAQ,CAAU;IAClB,KAAK,CAAiB;IAE9B,KAAK;QACD,IAAI,KAAK,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;SACzC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,sBAAsB,CAA2B,CAAC;QAC/F,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAG1H,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACtD,QAAQ,CAAC,eAAe,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAe,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;YACpD,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACnC,2CAA2C;YAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACvF,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;YACvF,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;YACjC,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEnC,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,MAAM,UAAU,GAAe,EAAE,CAAC;QAIlC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC/D,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5G,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,QAAQ,CAAC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACzE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAG1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,SAAS;QACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;QACV,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7E,wCAAwC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,GAAG,EAAE;YACL,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;SACpC;IACL,CAAC;CAEJ;AApHG;IADC,aAAa,CAAC,uBAAuB,CAAC;yDACK;AAG5C;IADC,aAAa,CAAC,UAAU,CAAC;4CACR;AAGlB;IADC,aAAa,CAAC,cAAc,CAAC;gDACJ;AAG1B;IADC,aAAa,CAAC,sBAAsB,CAAC;wDACI;AAG1C;IADC,aAAa,CAAC,WAAW,CAAC;6CACP;AAGpB;IADC,aAAa,CAAC,WAAW,CAAC;6CACP;AA0GxB,MAAM,eAAe;IAER,IAAI,CAAO;IACX,KAAK,CAAc;IAC5B,UAAU,GAAW,CAAC,CAAC;IAEvB,YAAY,WAAwB,EAAE,aAAqB,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,uBAAuB;IACvB,QAAQ,CAAC,IAAa;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACxE,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,MAAe,eAAgB,SAAQ,SAAS;CAG/C;AAED,MAAe,oBAAqB,SAAQ,eAAe;IAE9C,UAAU,CAAc;IACjC,eAAe,GAAW,CAAC,CAAC;IAE5B,YAAY,UAAuB,EAAE,kBAA0B,CAAC;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;CACJ;AAID,MAAM,aAAc,SAAQ,oBAAoB;IAE5C,sBAAsB,CAA0B;IAEhD,WAAW,GAAW,CAAC,CAAC;IAExB,cAAc,CAAC,QAA2B,EAAE,UAAkB,EAAE,MAAc;QAC1E,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SAC1C;;YACI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzB,oCAAoC;QACpC,IAAI,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;YACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3F,8BAA8B;YAC9B,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;YACtD,qCAAqC;SACxC;IACL,CAAC;IACD,UAAU,CAAC,QAA2B;QAClC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,0BAA0B;QACtF,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE1C,CAAC;CACJ;AAID,MAAM,iBAAkB,SAAQ,eAAe;IAEnC,aAAa,CAAiB;IAC9B,QAAQ,CAAkB;IAElC,YAAY,aAA6B,EAAE,QAAyB;QAChE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,yBAAyB;IACzB,cAAc,CAAC,MAAmC,EAAE,UAAkB,EAAE,MAAc;QAClF,mCAAmC;QACnC,IAAI,MAAM,YAAY,QAAQ,EAAE;YAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;gBACnC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAc,CAAC;gBAClD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;aAChD;SACJ;IACL,CAAC;IAEO,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1B,WAAW,GAAW,CAAC,CAAC;IAEhC,yBAAyB;IACzB,UAAU,CAAC,QAA2B;QAElC,yBAAyB;QACzB,mCAAmC;QACnC,kCAAkC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAc,CAAC;QACnE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAA;QAEzB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;QAEjB,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QACrD,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC;QAEhC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEzB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS;YAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;CACJ;AAKD,MAAM,iBAAkB,SAAQ,eAAe;IAE3C,SAAS,CAAW;IAEpB,KAAK,CAAc;IACnB,KAAK,CAAc;IAEnB,UAAU,CAAc;IACxB,eAAe,GAAW,CAAC,CAAC;IAE5B,OAAO,CAAe;IACtB,yBAAyB,GAAW,CAAC,CAAC;IAEtC,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,KAAK,GAAY,IAAI,OAAO,EAAE,CAAC;IAEvC,YAAY,SAAmB,EAAE,KAAkB,EAAE,KAAkB,EAAE,UAAuB,EAAE,eAAuB;QACrH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,MAAsC,EAAE,SAAiB,EAAE,KAAa;QAEnF,IAAI,MAAM,YAAY,QAAQ,EAAE;YAC5B,+CAA+C;YAC/C,+CAA+C;YAC/C,+CAA+C;YAC/C,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,wBAAwB;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;gBACtD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;aACtG;SACJ;IACL,CAAC;IAED,UAAU,CAAC,QAA8B;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAChF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,cAAc;YACxB,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAC;QACjC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACtG;aACI;YACD,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;SACxB;QAED,+BAA+B;QAC/B,yBAAyB;IAC7B,CAAC;CAEJ"}