@needle-tools/engine 2.40.0-pre → 2.42.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 (80) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/needle-engine.d.ts +332 -126
  3. package/dist/needle-engine.js +401 -401
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +53 -53
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/engine_element.js +1 -1
  8. package/lib/engine/engine_element.js.map +1 -1
  9. package/lib/engine/engine_element_loading.js +6 -1
  10. package/lib/engine/engine_element_loading.js.map +1 -1
  11. package/lib/engine/engine_gizmos.d.ts +8 -21
  12. package/lib/engine/engine_gizmos.js +51 -5
  13. package/lib/engine/engine_gizmos.js.map +1 -1
  14. package/lib/engine/engine_math.d.ts +9 -6
  15. package/lib/engine/engine_math.js +9 -0
  16. package/lib/engine/engine_math.js.map +1 -1
  17. package/lib/engine/engine_physics.js +14 -6
  18. package/lib/engine/engine_physics.js.map +1 -1
  19. package/lib/engine/engine_serialization_core.js +2 -0
  20. package/lib/engine/engine_serialization_core.js.map +1 -1
  21. package/lib/engine/engine_setup.d.ts +3 -0
  22. package/lib/engine/engine_setup.js +15 -0
  23. package/lib/engine/engine_setup.js.map +1 -1
  24. package/lib/engine/engine_three_utils.d.ts +16 -1
  25. package/lib/engine/engine_three_utils.js +94 -54
  26. package/lib/engine/engine_three_utils.js.map +1 -1
  27. package/lib/engine/engine_types.d.ts +6 -0
  28. package/lib/engine/engine_types.js.map +1 -1
  29. package/lib/engine/engine_utils.d.ts +1 -0
  30. package/lib/engine/engine_utils.js +3 -0
  31. package/lib/engine/engine_utils.js.map +1 -1
  32. package/lib/engine-components/AnimationCurve.js +20 -5
  33. package/lib/engine-components/AnimationCurve.js.map +1 -1
  34. package/lib/engine-components/BoxHelperComponent.js +9 -10
  35. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  36. package/lib/engine-components/Light.d.ts +2 -0
  37. package/lib/engine-components/Light.js +33 -9
  38. package/lib/engine-components/Light.js.map +1 -1
  39. package/lib/engine-components/ParticleSystem.d.ts +29 -26
  40. package/lib/engine-components/ParticleSystem.js +349 -187
  41. package/lib/engine-components/ParticleSystem.js.map +1 -1
  42. package/lib/engine-components/ParticleSystemModules.d.ts +243 -64
  43. package/lib/engine-components/ParticleSystemModules.js +722 -153
  44. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  45. package/lib/engine-components/ReflectionProbe.js +29 -11
  46. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  47. package/lib/engine-components/Renderer.d.ts +1 -0
  48. package/lib/engine-components/Renderer.js +4 -2
  49. package/lib/engine-components/Renderer.js.map +1 -1
  50. package/lib/engine-components/WebXR.js +8 -3
  51. package/lib/engine-components/WebXR.js.map +1 -1
  52. package/lib/engine-components/codegen/components.d.ts +7 -0
  53. package/lib/engine-components/codegen/components.js +7 -0
  54. package/lib/engine-components/codegen/components.js.map +1 -1
  55. package/package.json +4 -2
  56. package/src/engine/codegen/register_types.js +28 -0
  57. package/src/engine/dist/engine_three_utils.js +279 -0
  58. package/src/engine/engine_element.ts +1 -1
  59. package/src/engine/engine_element_loading.ts +5 -1
  60. package/src/engine/engine_gizmos.ts +58 -6
  61. package/src/engine/engine_math.ts +19 -6
  62. package/src/engine/engine_physics.ts +17 -7
  63. package/src/engine/engine_serialization_core.ts +1 -0
  64. package/src/engine/engine_setup.ts +25 -2
  65. package/src/engine/engine_three_utils.ts +103 -62
  66. package/src/engine/engine_types.ts +8 -1
  67. package/src/engine/engine_utils.ts +5 -0
  68. package/src/engine-components/AnimationCurve.ts +25 -11
  69. package/src/engine-components/BoxHelperComponent.ts +12 -15
  70. package/src/engine-components/Light.ts +39 -8
  71. package/src/engine-components/ParticleSystem.ts +395 -199
  72. package/src/engine-components/ParticleSystemModules.ts +638 -152
  73. package/src/engine-components/ReflectionProbe.ts +37 -13
  74. package/src/engine-components/Renderer.ts +4 -2
  75. package/src/engine-components/WebXR.ts +11 -8
  76. package/src/engine-components/codegen/components.ts +7 -0
  77. package/src/engine/dist/engine_physics.js +0 -739
  78. package/src/engine/dist/engine_setup.js +0 -777
  79. package/src/engine-components/dist/CharacterController.js +0 -123
  80. package/src/engine-components/dist/RigidBody.js +0 -458
@@ -1,213 +1,375 @@
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, ParticleBurst, ParticleSystemRenderMode } from "./ParticleSystemModules";
5
10
  import { getParam } from "../engine/engine_utils";
11
+ // https://github.dev/creativelifeform/three-nebula
12
+ import System, { Emitter, Position, Life, SpriteRenderer, Particle, Body, MeshRenderer, } from 'three-nebula';
13
+ import { serializeable } from "../engine/engine_serialization";
14
+ import { Context } from "../engine/engine_setup";
15
+ import { AxesHelper, Material, Mesh, Object3D, Vector3 } from "three";
16
+ import { getWorldQuaternion, getWorldScale } from "../engine/engine_three_utils";
17
+ import { assign } from "../engine/engine_serialization_core";
6
18
  const debug = getParam("debugparticles");
7
- class ParticleState {
8
- age = 0;
9
- lifetime = 0;
10
- position;
11
- velocity;
12
- color;
13
- }
14
19
  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
+ renderMode;
21
+ particleMaterial;
22
+ // @serializeable(Mesh)
23
+ particleMesh;
24
+ getMesh() {
25
+ let geo = null;
26
+ if (this.particleMesh instanceof Mesh) {
27
+ geo = this.particleMesh.geometry;
20
28
  }
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);
29
+ if (geo === null)
30
+ geo = new THREE.BoxGeometry(1, 1, 1);
31
+ const res = new Mesh(geo, this.particleMaterial);
32
+ return res;
33
33
  }
34
34
  }
35
+ __decorate([
36
+ serializeable()
37
+ ], ParticleSystemRenderer.prototype, "renderMode", void 0);
38
+ __decorate([
39
+ serializeable(Material)
40
+ ], ParticleSystemRenderer.prototype, "particleMaterial", void 0);
35
41
  export class ParticleSystem extends Behaviour {
42
+ colorOverLifetime;
36
43
  main;
37
44
  emission;
45
+ sizeOverLifetime;
38
46
  shape;
39
- 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();
50
- awake() {
51
- this.renderer = GameObject.getComponent(this.gameObject, ParticleSystemRenderer);
52
- // if (debug)
53
- console.log(this);
47
+ noise;
48
+ get renderer() {
49
+ return this._renderer;
54
50
  }
55
- onEnable() {
56
- // console.trace();
57
- if (this.geometry) {
51
+ get currentParticles() {
52
+ return this._system?.getCount() ?? 0;
53
+ }
54
+ get maxParticles() {
55
+ return this.main.maxParticles;
56
+ }
57
+ get time() {
58
+ return this._time;
59
+ }
60
+ get duration() {
61
+ return this.main.duration;
62
+ }
63
+ _renderer;
64
+ _system;
65
+ _emitter;
66
+ _size;
67
+ _container;
68
+ _time = 0;
69
+ /** called from deserialization */
70
+ set bursts(arr) {
71
+ for (let i = 0; i < arr.length; i++) {
72
+ const burst = arr[i];
73
+ if ((burst instanceof ParticleBurst) === false) {
74
+ const instance = new ParticleBurst();
75
+ assign(instance, burst);
76
+ arr[i] = instance;
77
+ }
78
+ }
79
+ this._bursts = arr;
80
+ }
81
+ _bursts;
82
+ awake() {
83
+ this._renderer = this.gameObject.getComponent(ParticleSystemRenderer);
84
+ this._system = new System();
85
+ if (this.main.simulationSpace == ParticleSystemSimulationSpace.Local) {
86
+ this._container = new Object3D();
87
+ this._container.matrixAutoUpdate = false;
88
+ this.gameObject.add(this._container);
89
+ }
90
+ const container = this.main.simulationSpace == ParticleSystemSimulationSpace.Local ? this._container : this.context.scene;
91
+ if (debug) {
92
+ console.log(this);
93
+ this.gameObject.add(new AxesHelper(1));
94
+ }
95
+ const renderMode = this._renderer.renderMode;
96
+ let renderer = undefined;
97
+ switch (renderMode) {
98
+ case ParticleSystemRenderMode.Mesh:
99
+ // https://three-nebula-docs.netlify.app/class/src/renderer/meshrenderer.js~meshrenderer
100
+ // mesh renderer example: https://github.com/creativelifeform/three-nebula/blob/master/website/components/Examples/MeshRenderer/init.js
101
+ renderer = new MeshRenderer(container, THREE);
102
+ break;
103
+ case ParticleSystemRenderMode.Billboard:
104
+ renderer = new SpriteRenderer(container, THREE);
105
+ break;
106
+ }
107
+ if (!renderer) {
108
+ console.error("No renderer for particle system");
58
109
  return;
59
110
  }
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;
76
- }
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
- }
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();
111
+ renderer.logRendererType = () => { };
112
+ if (renderMode === ParticleSystemRenderMode.Billboard) {
113
+ if (this.renderer.particleMaterial) {
114
+ const sprite = renderer._body;
115
+ sprite.layers.disableAll();
116
+ sprite.layers.set(2); // ignore raycasting particles
117
+ sprite.renderOrder = 1;
118
+ sprite.material.map = this.renderer.particleMaterial.map;
119
+ sprite.material.transparent = true;
120
+ // sprite.material.sizeAttenuation = false;
121
+ sprite.material.blending = this.renderer.particleMaterial.blending;
122
+ sprite.material.blendDst = this.renderer.particleMaterial.blendDst;
123
+ sprite.material.blendDstAlpha = this.renderer.particleMaterial.blendDstAlpha;
124
+ sprite.material.blendEquation = this.renderer.particleMaterial.blendEquation;
125
+ sprite.material.blendEquationAlpha = this.renderer.particleMaterial.blendEquationAlpha;
126
+ sprite.material.blendSrc = this.renderer.particleMaterial.blendSrc;
127
+ sprite.material.blendSrcAlpha = this.renderer.particleMaterial.blendSrcAlpha;
128
+ sprite.material.premultipliedAlpha = this.renderer.particleMaterial.premultipliedAlpha;
129
+ sprite.material.depthWrite = false;
130
+ sprite.material.depthTest = true;
131
+ if (debug)
132
+ console.log(sprite);
123
133
  }
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;
134
+ }
135
+ this._system.addRenderer(renderer);
136
+ const initializers = [];
137
+ const behaviours = [];
138
+ const life = new Life();
139
+ life.lifePan = new MinMaxCurveSpan(this.main.startLifetime, 1);
140
+ initializers.push(life);
141
+ const shape = new Position(this.shape);
142
+ initializers.push(shape);
143
+ const size = this._size = new SizeBehaviour(this.main.startSize, this.main.startSizeMultiplier);
144
+ size.sizeOverLifetimeModule = this.sizeOverLifetime;
145
+ behaviours.push(size);
146
+ const color = new GradientBehaviour(this.main.startColor, this.colorOverLifetime?.enabled ? this.colorOverLifetime.color : undefined);
147
+ behaviours.push(color);
148
+ const velocity = new VelocityBehaviour(renderer.container, this.shape, this.noise, this.main.startSpeed, 1);
149
+ velocity.gravity = this.main.gravityModifier;
150
+ velocity.gravityModifierMultiplier = this.main.gravityModifierMultiplier;
151
+ behaviours.push(velocity);
152
+ if (renderMode === ParticleSystemRenderMode.Mesh) {
153
+ initializers.push(new Body(this._renderer.getMesh()));
154
+ }
155
+ const emitter = this._emitter = new Emitter({});
156
+ emitter.setInitializers(initializers);
157
+ emitter.setBehaviours(behaviours);
158
+ emitter.setRate(this.emission);
159
+ emitter.damping = 0;
160
+ }
161
+ onEnable() {
162
+ this._emitter.emit();
163
+ this._system.addEmitter(this._emitter);
164
+ this._system.emit({ onStart: () => { }, onUpdate: () => { }, onEnd: () => { }, });
165
+ this._time = 0;
166
+ }
167
+ onDisable() {
168
+ this._system.removeEmitter(this._emitter);
169
+ }
170
+ onBeforeRender() {
171
+ if (this._bursts) {
172
+ this.emission.bursts = this._bursts;
173
+ }
174
+ // sprite materials must be scaled in AR
175
+ const cam = this.context.mainCamera;
176
+ if (cam) {
177
+ const scale = getWorldScale(cam);
178
+ this._size.cameraScale = scale.x;
179
+ }
180
+ if (this._container && this.gameObject?.parent) {
181
+ // this._container.matrix.copy(this.gameObject.matrixWorld);
182
+ // this._container.matrixWorld.copy(this.gameObject.matrixWorld);
183
+ const scale = getWorldScale(this.gameObject.parent);
184
+ scale.x = 1 / scale.x;
185
+ scale.y = 1 / scale.y;
186
+ scale.z = 1 / scale.z;
187
+ // console.log(scale);
188
+ // this._container.scale.copy(scale);
189
+ // // this._container.updateMatrix();
190
+ // // this._container.updateMatrixWorld();
191
+ // // // set scale to 1
192
+ this._container.matrix.identity();
193
+ this._container.matrix.scale(scale);
194
+ // this._container.matrixWorld.copy(this._container.matrix);
195
+ }
196
+ // this._system.time
197
+ // this._system.duration = this.main.duration;
198
+ this.emission.system = this;
199
+ this.shape.update(this.context, this.main.simulationSpace, this.gameObject);
200
+ this.noise.update(this.context);
201
+ this._system.update(this.context.time.deltaTime * this.main.simulationSpeed);
202
+ this._time += this.context.time.deltaTime;
203
+ if (this._time > this.duration)
204
+ this._time = 0;
205
+ }
206
+ }
207
+ __decorate([
208
+ serializeable(ColorOverLifetimeModule)
209
+ ], ParticleSystem.prototype, "colorOverLifetime", void 0);
210
+ __decorate([
211
+ serializeable(MainModule)
212
+ ], ParticleSystem.prototype, "main", void 0);
213
+ __decorate([
214
+ serializeable(EmissionModule)
215
+ ], ParticleSystem.prototype, "emission", void 0);
216
+ __decorate([
217
+ serializeable(SizeOverLifetimeModule)
218
+ ], ParticleSystem.prototype, "sizeOverLifetime", void 0);
219
+ __decorate([
220
+ serializeable(ShapeModule)
221
+ ], ParticleSystem.prototype, "shape", void 0);
222
+ __decorate([
223
+ serializeable(NoiseModule)
224
+ ], ParticleSystem.prototype, "noise", void 0);
225
+ class MinMaxCurveSpan {
226
+ time;
227
+ curve;
228
+ multiplier = 1;
229
+ constructor(minMaxCurve, multiplier = 1) {
230
+ this.time = Context.Current.time;
231
+ this.curve = minMaxCurve;
232
+ this.multiplier = multiplier;
233
+ }
234
+ /** called by nebula */
235
+ getValue(lerp) {
236
+ const res = this.curve.evaluate(this.time.time, lerp) * this.multiplier;
237
+ return res;
238
+ }
239
+ }
240
+ class CustomBehaviour extends Behaviour {
241
+ }
242
+ class MinMaxCurveBehaviour extends CustomBehaviour {
243
+ startCurve;
244
+ startMultiplier = 1;
245
+ constructor(startCurve, startMultiplier = 1) {
246
+ super();
247
+ this.startCurve = startCurve;
248
+ this.startMultiplier = startMultiplier;
249
+ }
250
+ }
251
+ class SizeBehaviour extends MinMaxCurveBehaviour {
252
+ sizeOverLifetimeModule;
253
+ cameraScale = 1;
254
+ applyBehaviour(particle, _deltaTime, _index) {
255
+ if (particle.target.type === "Sprite") {
256
+ particle.radius = 1 / this.cameraScale;
257
+ }
258
+ else
259
+ particle.radius = 1;
260
+ // particle.target.scale.set(1,1,1);
261
+ if (this.sizeOverLifetimeModule?.enabled) {
262
+ const time = particle.age / particle.life;
263
+ const scaleVector = particle.target.scale;
264
+ this.sizeOverLifetimeModule.evaluate?.call(this.sizeOverLifetimeModule, time, scaleVector);
265
+ // scaleVector.set(.1, .1, .1)
266
+ particle.scale = particle.start_scale * scaleVector.x;
267
+ // console.log(time, particle.scale);
268
+ }
269
+ }
270
+ initialize(particle) {
271
+ particle.scale = this.startCurve.evaluate(0, Math.random()); // * this.startMultiplier;
272
+ particle.start_scale = particle.scale;
273
+ }
274
+ }
275
+ class GradientBehaviour extends CustomBehaviour {
276
+ startGradient;
277
+ gradient;
278
+ constructor(startGradient, gradient) {
279
+ super();
280
+ this.startGradient = startGradient;
281
+ this.gradient = gradient;
282
+ }
283
+ /** called from nebula */
284
+ applyBehaviour(target, _deltaTime, _index) {
285
+ // console.log(target, time, index)
286
+ if (target instanceof Particle) {
287
+ if (this.gradient) {
288
+ const t = target.age / target.life;
289
+ const ev = this.gradient.evaluate(t);
290
+ const startColor = target.color_start;
291
+ target.color.r = startColor.r * ev.r;
292
+ target.color.g = startColor.g * ev.g;
293
+ target.color.b = startColor.b * ev.b;
294
+ target.alpha = ev.alpha * target.alpha_start;
130
295
  }
131
- ps.age += deltaTime;
132
- this.particleStates[i] = ps;
133
296
  }
134
- this.activeCount += deltaTime * (this.emission.rate);
135
- this.activeCount = Math.min(this.main.maxParticles, this.activeCount);
136
297
  }
137
- initializeParticle(index, particle) {
138
- if (!this.geometry)
139
- return;
298
+ id = Symbol('gradientId');
299
+ _internalId = 0;
300
+ /** called from nebula */
301
+ initialize(particle) {
302
+ // console.log(particle);
303
+ // const context = Context.Current;
304
+ // const time = context.time.time;
305
+ const ev = this.startGradient.evaluate(Math.random());
306
+ particle.color.r = ev.r;
307
+ particle.color.g = ev.g;
308
+ particle.color.b = ev.b;
309
+ particle.alpha = ev.alpha;
140
310
  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);
155
- }
156
- updateOverLifetime(_index, _particle) {
157
- // particle.position.multiplyScalar()
158
- }
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;
311
+ particle.color_start = { r: ev.r, g: ev.g, b: ev.b };
312
+ particle.alpha_start = ev.alpha;
313
+ particle.useColor = true;
314
+ particle.useAlpha = true;
315
+ if (particle[this.id] === undefined)
316
+ particle[this.id] = this._internalId++;
317
+ }
318
+ }
319
+ class VelocityBehaviour extends CustomBehaviour {
320
+ container;
321
+ shape;
322
+ noise;
323
+ startSpeed;
324
+ startMultiplier = 1;
325
+ gravity;
326
+ gravityModifierMultiplier = 1;
327
+ downDirection = new Vector3();
328
+ _temp = new Vector3();
329
+ constructor(container, shape, noise, startCurve, startMultiplier) {
330
+ super();
331
+ this.container = container;
332
+ this.shape = shape;
333
+ this.noise = noise;
334
+ this.startSpeed = startCurve;
335
+ this.startMultiplier = startMultiplier;
336
+ }
337
+ applyBehaviour(target, deltaTime, index) {
338
+ if (target instanceof Particle) {
339
+ // target.velocity.x = target.velocity_start.x;
340
+ // target.velocity.y = target.velocity_start.y;
341
+ // target.velocity.z = target.velocity_start.z;
342
+ if (target.gravity !== 0 && this.gravity) {
343
+ // get world down vector
344
+ this._temp.copy(this.downDirection);
345
+ this._temp.multiplyScalar(target.gravity * deltaTime);
346
+ target.velocity.add(this._temp);
347
+ }
348
+ if (this.noise) {
349
+ this.noise.applyNoise(index, target.position, target.velocity, deltaTime, target.age, target.life);
350
+ }
170
351
  }
171
352
  }
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;
353
+ initialize(particle) {
354
+ const dir = this.shape.getDirection(particle.position);
355
+ // dir.applyQuaternion(quat);
356
+ const speed = this.startSpeed.evaluate(0, Math.random()) * this.startMultiplier;
357
+ particle.velocity.x = dir.x * speed;
358
+ particle.velocity.y = dir.y * speed;
359
+ particle.velocity.z = dir.z * speed;
360
+ if (!particle.velocity_start)
361
+ particle.velocity_start = {};
362
+ particle.velocity_start.x = particle.velocity.x;
363
+ particle.velocity_start.y = particle.velocity.y;
364
+ particle.velocity_start.z = particle.velocity.z;
365
+ if (this.gravity) {
366
+ particle.gravity = this.gravity.evaluate(Math.random(), Math.random()) * 9.81;
202
367
  }
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;
368
+ else {
369
+ particle.gravity = 0;
209
370
  }
210
- velocity.multiplyScalar(this.main.startSpeedMultiplier);
371
+ const quat = getWorldQuaternion(this.container);
372
+ this.downDirection.set(0, -1, 0).applyQuaternion(quat);
211
373
  }
212
374
  }
213
375
  //# 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":"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"}