@needle-tools/engine 2.41.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.
- package/CHANGELOG.md +11 -0
- package/dist/needle-engine.d.ts +100 -40
- package/dist/needle-engine.js +367 -367
- package/dist/needle-engine.js.map +3 -3
- package/dist/needle-engine.min.js +37 -37
- package/dist/needle-engine.min.js.map +3 -3
- package/lib/engine/engine_element.js +1 -1
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_element_loading.js +6 -1
- package/lib/engine/engine_element_loading.js.map +1 -1
- package/lib/engine/engine_gizmos.d.ts +8 -22
- package/lib/engine/engine_gizmos.js +37 -3
- package/lib/engine/engine_gizmos.js.map +1 -1
- package/lib/engine/engine_setup.d.ts +3 -0
- package/lib/engine/engine_setup.js +15 -0
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/engine_three_utils.d.ts +16 -1
- package/lib/engine/engine_three_utils.js +94 -54
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_types.d.ts +6 -0
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine-components/AnimationCurve.js +2 -2
- package/lib/engine-components/AnimationCurve.js.map +1 -1
- package/lib/engine-components/BoxHelperComponent.js +9 -10
- package/lib/engine-components/BoxHelperComponent.js.map +1 -1
- package/lib/engine-components/ParticleSystem.d.ts +24 -10
- package/lib/engine-components/ParticleSystem.js +136 -41
- package/lib/engine-components/ParticleSystem.js.map +1 -1
- package/lib/engine-components/ParticleSystemModules.d.ts +40 -6
- package/lib/engine-components/ParticleSystemModules.js +103 -21
- package/lib/engine-components/ParticleSystemModules.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.js +29 -11
- package/lib/engine-components/ReflectionProbe.js.map +1 -1
- package/lib/engine-components/Renderer.d.ts +1 -0
- package/lib/engine-components/Renderer.js +4 -2
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +1 -0
- package/lib/engine-components/codegen/components.js +1 -0
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/package.json +2 -2
- package/src/engine/codegen/register_types.js +4 -0
- package/src/engine/dist/engine_three_utils.js +279 -0
- package/src/engine/engine_element.ts +1 -1
- package/src/engine/engine_element_loading.ts +5 -1
- package/src/engine/engine_gizmos.ts +45 -8
- package/src/engine/engine_setup.ts +25 -2
- package/src/engine/engine_three_utils.ts +103 -62
- package/src/engine/engine_types.ts +8 -1
- package/src/engine-components/AnimationCurve.ts +2 -2
- package/src/engine-components/BoxHelperComponent.ts +12 -15
- package/src/engine-components/ParticleSystem.ts +151 -75
- package/src/engine-components/ParticleSystemModules.ts +127 -24
- package/src/engine-components/ReflectionProbe.ts +37 -13
- package/src/engine-components/Renderer.ts +4 -2
- package/src/engine-components/codegen/components.ts +1 -0
|
@@ -6,18 +6,35 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Behaviour } from "./Component";
|
|
8
8
|
import * as THREE from "three";
|
|
9
|
-
import { MainModule, EmissionModule, ShapeModule, ColorOverLifetimeModule, SizeOverLifetimeModule, NoiseModule, ParticleSystemSimulationSpace } from "./ParticleSystemModules";
|
|
9
|
+
import { MainModule, EmissionModule, ShapeModule, ColorOverLifetimeModule, SizeOverLifetimeModule, NoiseModule, ParticleSystemSimulationSpace, ParticleBurst, ParticleSystemRenderMode } from "./ParticleSystemModules";
|
|
10
10
|
import { getParam } from "../engine/engine_utils";
|
|
11
|
-
import System, { Emitter, Position, Life, SpriteRenderer, Particle, } from 'three-nebula';
|
|
12
11
|
// https://github.dev/creativelifeform/three-nebula
|
|
12
|
+
import System, { Emitter, Position, Life, SpriteRenderer, Particle, Body, MeshRenderer, } from 'three-nebula';
|
|
13
13
|
import { serializeable } from "../engine/engine_serialization";
|
|
14
14
|
import { Context } from "../engine/engine_setup";
|
|
15
|
-
import { AxesHelper, Material, Vector3 } from "three";
|
|
15
|
+
import { AxesHelper, Material, Mesh, Object3D, Vector3 } from "three";
|
|
16
16
|
import { getWorldQuaternion, getWorldScale } from "../engine/engine_three_utils";
|
|
17
|
+
import { assign } from "../engine/engine_serialization_core";
|
|
17
18
|
const debug = getParam("debugparticles");
|
|
18
19
|
export class ParticleSystemRenderer extends Behaviour {
|
|
20
|
+
renderMode;
|
|
19
21
|
particleMaterial;
|
|
22
|
+
// @serializeable(Mesh)
|
|
23
|
+
particleMesh;
|
|
24
|
+
getMesh() {
|
|
25
|
+
let geo = null;
|
|
26
|
+
if (this.particleMesh instanceof Mesh) {
|
|
27
|
+
geo = this.particleMesh.geometry;
|
|
28
|
+
}
|
|
29
|
+
if (geo === null)
|
|
30
|
+
geo = new THREE.BoxGeometry(1, 1, 1);
|
|
31
|
+
const res = new Mesh(geo, this.particleMaterial);
|
|
32
|
+
return res;
|
|
33
|
+
}
|
|
20
34
|
}
|
|
35
|
+
__decorate([
|
|
36
|
+
serializeable()
|
|
37
|
+
], ParticleSystemRenderer.prototype, "renderMode", void 0);
|
|
21
38
|
__decorate([
|
|
22
39
|
serializeable(Material)
|
|
23
40
|
], ParticleSystemRenderer.prototype, "particleMaterial", void 0);
|
|
@@ -28,40 +45,92 @@ export class ParticleSystem extends Behaviour {
|
|
|
28
45
|
sizeOverLifetime;
|
|
29
46
|
shape;
|
|
30
47
|
noise;
|
|
31
|
-
renderer
|
|
48
|
+
get renderer() {
|
|
49
|
+
return this._renderer;
|
|
50
|
+
}
|
|
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;
|
|
32
64
|
_system;
|
|
33
65
|
_emitter;
|
|
34
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;
|
|
35
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;
|
|
36
91
|
if (debug) {
|
|
37
92
|
console.log(this);
|
|
38
93
|
this.gameObject.add(new AxesHelper(1));
|
|
39
94
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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");
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
44
111
|
renderer.logRendererType = () => { };
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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);
|
|
133
|
+
}
|
|
65
134
|
}
|
|
66
135
|
this._system.addRenderer(renderer);
|
|
67
136
|
const initializers = [];
|
|
@@ -80,6 +149,9 @@ export class ParticleSystem extends Behaviour {
|
|
|
80
149
|
velocity.gravity = this.main.gravityModifier;
|
|
81
150
|
velocity.gravityModifierMultiplier = this.main.gravityModifierMultiplier;
|
|
82
151
|
behaviours.push(velocity);
|
|
152
|
+
if (renderMode === ParticleSystemRenderMode.Mesh) {
|
|
153
|
+
initializers.push(new Body(this._renderer.getMesh()));
|
|
154
|
+
}
|
|
83
155
|
const emitter = this._emitter = new Emitter({});
|
|
84
156
|
emitter.setInitializers(initializers);
|
|
85
157
|
emitter.setBehaviours(behaviours);
|
|
@@ -90,22 +162,46 @@ export class ParticleSystem extends Behaviour {
|
|
|
90
162
|
this._emitter.emit();
|
|
91
163
|
this._system.addEmitter(this._emitter);
|
|
92
164
|
this._system.emit({ onStart: () => { }, onUpdate: () => { }, onEnd: () => { }, });
|
|
165
|
+
this._time = 0;
|
|
93
166
|
}
|
|
94
167
|
onDisable() {
|
|
95
168
|
this._system.removeEmitter(this._emitter);
|
|
96
169
|
}
|
|
97
170
|
onBeforeRender() {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.noise.update(this.context);
|
|
102
|
-
this._system.update(this.context.time.deltaTime * this.main.simulationSpeed);
|
|
171
|
+
if (this._bursts) {
|
|
172
|
+
this.emission.bursts = this._bursts;
|
|
173
|
+
}
|
|
103
174
|
// sprite materials must be scaled in AR
|
|
104
175
|
const cam = this.context.mainCamera;
|
|
105
176
|
if (cam) {
|
|
106
177
|
const scale = getWorldScale(cam);
|
|
107
178
|
this._size.cameraScale = scale.x;
|
|
108
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;
|
|
109
205
|
}
|
|
110
206
|
}
|
|
111
207
|
__decorate([
|
|
@@ -228,7 +324,7 @@ class VelocityBehaviour extends CustomBehaviour {
|
|
|
228
324
|
startMultiplier = 1;
|
|
229
325
|
gravity;
|
|
230
326
|
gravityModifierMultiplier = 1;
|
|
231
|
-
downDirection = new Vector3(
|
|
327
|
+
downDirection = new Vector3();
|
|
232
328
|
_temp = new Vector3();
|
|
233
329
|
constructor(container, shape, noise, startCurve, startMultiplier) {
|
|
234
330
|
super();
|
|
@@ -237,19 +333,17 @@ class VelocityBehaviour extends CustomBehaviour {
|
|
|
237
333
|
this.noise = noise;
|
|
238
334
|
this.startSpeed = startCurve;
|
|
239
335
|
this.startMultiplier = startMultiplier;
|
|
240
|
-
const quat = getWorldQuaternion(container);
|
|
241
|
-
this.downDirection.applyQuaternion(quat);
|
|
242
336
|
}
|
|
243
337
|
applyBehaviour(target, deltaTime, index) {
|
|
244
338
|
if (target instanceof Particle) {
|
|
245
339
|
// target.velocity.x = target.velocity_start.x;
|
|
246
340
|
// target.velocity.y = target.velocity_start.y;
|
|
247
341
|
// target.velocity.z = target.velocity_start.z;
|
|
248
|
-
if (target.gravity) {
|
|
342
|
+
if (target.gravity !== 0 && this.gravity) {
|
|
249
343
|
// get world down vector
|
|
250
344
|
this._temp.copy(this.downDirection);
|
|
251
345
|
this._temp.multiplyScalar(target.gravity * deltaTime);
|
|
252
|
-
target.velocity.
|
|
346
|
+
target.velocity.add(this._temp);
|
|
253
347
|
}
|
|
254
348
|
if (this.noise) {
|
|
255
349
|
this.noise.applyNoise(index, target.position, target.velocity, deltaTime, target.age, target.life);
|
|
@@ -258,6 +352,7 @@ class VelocityBehaviour extends CustomBehaviour {
|
|
|
258
352
|
}
|
|
259
353
|
initialize(particle) {
|
|
260
354
|
const dir = this.shape.getDirection(particle.position);
|
|
355
|
+
// dir.applyQuaternion(quat);
|
|
261
356
|
const speed = this.startSpeed.evaluate(0, Math.random()) * this.startMultiplier;
|
|
262
357
|
particle.velocity.x = dir.x * speed;
|
|
263
358
|
particle.velocity.y = dir.y * speed;
|
|
@@ -268,13 +363,13 @@ class VelocityBehaviour extends CustomBehaviour {
|
|
|
268
363
|
particle.velocity_start.y = particle.velocity.y;
|
|
269
364
|
particle.velocity_start.z = particle.velocity.z;
|
|
270
365
|
if (this.gravity) {
|
|
271
|
-
particle.gravity = this.gravity.evaluate(
|
|
366
|
+
particle.gravity = this.gravity.evaluate(Math.random(), Math.random()) * 9.81;
|
|
272
367
|
}
|
|
273
368
|
else {
|
|
274
369
|
particle.gravity = 0;
|
|
275
370
|
}
|
|
276
|
-
|
|
277
|
-
|
|
371
|
+
const quat = getWorldQuaternion(this.container);
|
|
372
|
+
this.downDirection.set(0, -1, 0).applyQuaternion(quat);
|
|
278
373
|
}
|
|
279
374
|
}
|
|
280
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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"}
|
|
@@ -17,6 +17,17 @@ declare type AlphaKey = {
|
|
|
17
17
|
time: number;
|
|
18
18
|
alpha: number;
|
|
19
19
|
};
|
|
20
|
+
export interface IParticleSystem {
|
|
21
|
+
get currentParticles(): number;
|
|
22
|
+
get maxParticles(): number;
|
|
23
|
+
get time(): number;
|
|
24
|
+
get duration(): number;
|
|
25
|
+
readonly main: MainModule;
|
|
26
|
+
}
|
|
27
|
+
export declare enum ParticleSystemRenderMode {
|
|
28
|
+
Billboard = 0,
|
|
29
|
+
Mesh = 4
|
|
30
|
+
}
|
|
20
31
|
export declare class Gradient {
|
|
21
32
|
alphaKeys: Array<AlphaKey>;
|
|
22
33
|
colorKeys: Array<ColorKey>;
|
|
@@ -83,7 +94,8 @@ export declare class MinMaxGradient {
|
|
|
83
94
|
gradient: Gradient;
|
|
84
95
|
gradientMin: Gradient;
|
|
85
96
|
gradientMax: Gradient;
|
|
86
|
-
private _temp;
|
|
97
|
+
private static _temp;
|
|
98
|
+
private static _temp2;
|
|
87
99
|
evaluate(t01: number, lerpFactor?: number): RGBAColor;
|
|
88
100
|
}
|
|
89
101
|
declare type ParticleSystemScalingMode = {
|
|
@@ -138,16 +150,38 @@ export declare class MainModule {
|
|
|
138
150
|
stopAction: number;
|
|
139
151
|
useUnscaledTime: boolean;
|
|
140
152
|
}
|
|
153
|
+
export declare class ParticleBurst {
|
|
154
|
+
cycleCount: number;
|
|
155
|
+
maxCount: number;
|
|
156
|
+
minCount: number;
|
|
157
|
+
probability: number;
|
|
158
|
+
repeatInterval: number;
|
|
159
|
+
time: number;
|
|
160
|
+
count: {
|
|
161
|
+
constant: number;
|
|
162
|
+
constantMax: number;
|
|
163
|
+
constantMin: number;
|
|
164
|
+
curve?: AnimationCurve;
|
|
165
|
+
curveMax?: AnimationCurve;
|
|
166
|
+
curveMin?: AnimationCurve;
|
|
167
|
+
curveMultiplier?: number;
|
|
168
|
+
mode: ParticleSystemCurveMode;
|
|
169
|
+
};
|
|
170
|
+
private _performed;
|
|
171
|
+
reset(): void;
|
|
172
|
+
run(time: number): number;
|
|
173
|
+
}
|
|
141
174
|
export declare class EmissionModule {
|
|
142
|
-
burstCount: number;
|
|
143
175
|
enabled: boolean;
|
|
176
|
+
get burstCount(): number;
|
|
177
|
+
bursts: ParticleBurst[];
|
|
144
178
|
rateOverTime: MinMaxCurve;
|
|
145
179
|
rateOverTimeMultiplier: number;
|
|
146
180
|
rateOverDistance: MinMaxCurve;
|
|
147
181
|
rateOverDistanceMultiplier: number;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
182
|
+
/** set from system */
|
|
183
|
+
system: IParticleSystem;
|
|
184
|
+
get time(): number;
|
|
151
185
|
private _summed;
|
|
152
186
|
/** called by nebula */
|
|
153
187
|
init(): void;
|
|
@@ -198,7 +232,7 @@ export declare class ShapeModule {
|
|
|
198
232
|
/** called by nebula */
|
|
199
233
|
getPosition(): void;
|
|
200
234
|
private _dir;
|
|
201
|
-
getDirection(position: any):
|
|
235
|
+
getDirection(position: any): Vector3;
|
|
202
236
|
}
|
|
203
237
|
import { Context } from "../engine/engine_setup";
|
|
204
238
|
export declare class NoiseModule {
|
|
@@ -9,6 +9,15 @@ import { Mathf } from "../engine/engine_math";
|
|
|
9
9
|
import { serializeable } from "../engine/engine_serialization";
|
|
10
10
|
import { RGBAColor } from "./js-extensions/RGBAColor";
|
|
11
11
|
import { AnimationCurve } from "./AnimationCurve";
|
|
12
|
+
export var ParticleSystemRenderMode;
|
|
13
|
+
(function (ParticleSystemRenderMode) {
|
|
14
|
+
ParticleSystemRenderMode[ParticleSystemRenderMode["Billboard"] = 0] = "Billboard";
|
|
15
|
+
// Stretch = 1,
|
|
16
|
+
// HorizontalBillboard = 2,
|
|
17
|
+
// VerticalBillboard = 3,
|
|
18
|
+
ParticleSystemRenderMode[ParticleSystemRenderMode["Mesh"] = 4] = "Mesh";
|
|
19
|
+
// None = 5,
|
|
20
|
+
})(ParticleSystemRenderMode || (ParticleSystemRenderMode = {}));
|
|
12
21
|
export class Gradient {
|
|
13
22
|
alphaKeys;
|
|
14
23
|
colorKeys;
|
|
@@ -181,22 +190,28 @@ export class MinMaxGradient {
|
|
|
181
190
|
gradient;
|
|
182
191
|
gradientMin;
|
|
183
192
|
gradientMax;
|
|
184
|
-
_temp = new RGBAColor(0, 0, 0, 1);
|
|
193
|
+
static _temp = new RGBAColor(0, 0, 0, 1);
|
|
194
|
+
static _temp2 = new RGBAColor(0, 0, 0, 1);
|
|
185
195
|
evaluate(t01, lerpFactor) {
|
|
186
196
|
const t = lerpFactor === undefined ? Math.random() : lerpFactor;
|
|
187
197
|
switch (this.mode) {
|
|
188
198
|
case ParticleSystemGradientMode.Color:
|
|
189
199
|
return this.color;
|
|
190
200
|
case ParticleSystemGradientMode.Gradient:
|
|
191
|
-
this.gradient.evaluate(t01,
|
|
192
|
-
return
|
|
201
|
+
this.gradient.evaluate(t01, MinMaxGradient._temp);
|
|
202
|
+
return MinMaxGradient._temp;
|
|
193
203
|
case ParticleSystemGradientMode.TwoColors:
|
|
194
|
-
return
|
|
204
|
+
return MinMaxGradient._temp.lerpColors(this.colorMin, this.colorMax, t);
|
|
205
|
+
case ParticleSystemGradientMode.TwoGradients:
|
|
206
|
+
const t2 = Math.random();
|
|
207
|
+
this.gradientMin.evaluate(t2, MinMaxGradient._temp);
|
|
208
|
+
this.gradientMax.evaluate(t2, MinMaxGradient._temp2);
|
|
209
|
+
return MinMaxGradient._temp.lerp(MinMaxGradient._temp2, t);
|
|
195
210
|
}
|
|
196
211
|
// console.warn("Not implemented", ParticleSystemGradientMode[this.mode]);
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
return
|
|
212
|
+
MinMaxGradient._temp.set(0xff00ff);
|
|
213
|
+
MinMaxGradient._temp.alpha = 1;
|
|
214
|
+
return MinMaxGradient._temp;
|
|
200
215
|
}
|
|
201
216
|
}
|
|
202
217
|
__decorate([
|
|
@@ -300,16 +315,63 @@ __decorate([
|
|
|
300
315
|
__decorate([
|
|
301
316
|
serializeable(MinMaxCurve)
|
|
302
317
|
], MainModule.prototype, "startSpeed", void 0);
|
|
318
|
+
export class ParticleBurst {
|
|
319
|
+
cycleCount;
|
|
320
|
+
maxCount;
|
|
321
|
+
minCount;
|
|
322
|
+
probability;
|
|
323
|
+
repeatInterval;
|
|
324
|
+
time;
|
|
325
|
+
count;
|
|
326
|
+
_performed = 0;
|
|
327
|
+
reset() {
|
|
328
|
+
this._performed = 0;
|
|
329
|
+
}
|
|
330
|
+
run(time) {
|
|
331
|
+
if (time <= this.time) {
|
|
332
|
+
this.reset();
|
|
333
|
+
return 0;
|
|
334
|
+
}
|
|
335
|
+
let amount = 0;
|
|
336
|
+
if (this.cycleCount === 0 || this._performed < this.cycleCount) {
|
|
337
|
+
const nextTime = this.time + this.repeatInterval * this._performed;
|
|
338
|
+
if (time >= nextTime) {
|
|
339
|
+
this._performed += 1;
|
|
340
|
+
if (Math.random() < this.probability) {
|
|
341
|
+
switch (this.count.mode) {
|
|
342
|
+
case ParticleSystemCurveMode.Constant:
|
|
343
|
+
amount = this.count.constant;
|
|
344
|
+
break;
|
|
345
|
+
case ParticleSystemCurveMode.TwoConstants:
|
|
346
|
+
amount = Mathf.lerp(this.count.constantMin, this.count.constantMax, Math.random());
|
|
347
|
+
break;
|
|
348
|
+
case ParticleSystemCurveMode.Curve:
|
|
349
|
+
amount = this.count.curve.evaluate(Math.random());
|
|
350
|
+
break;
|
|
351
|
+
case ParticleSystemCurveMode.TwoCurves:
|
|
352
|
+
const t = Math.random();
|
|
353
|
+
amount = Mathf.lerp(this.count.curveMin.evaluate(t), this.count.curveMax.evaluate(t), Math.random());
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return amount;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
303
362
|
export class EmissionModule {
|
|
304
|
-
burstCount;
|
|
305
363
|
enabled;
|
|
364
|
+
get burstCount() {
|
|
365
|
+
return this.bursts?.length ?? 0;
|
|
366
|
+
}
|
|
367
|
+
bursts;
|
|
306
368
|
rateOverTime;
|
|
307
369
|
rateOverTimeMultiplier;
|
|
308
370
|
rateOverDistance;
|
|
309
371
|
rateOverDistanceMultiplier;
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
372
|
+
/** set from system */
|
|
373
|
+
system;
|
|
374
|
+
get time() { return this.system.time; }
|
|
313
375
|
_summed = 0;
|
|
314
376
|
// private _didEmit: boolean = false;
|
|
315
377
|
/** called by nebula */
|
|
@@ -317,27 +379,46 @@ export class EmissionModule {
|
|
|
317
379
|
}
|
|
318
380
|
/** called by nebula */
|
|
319
381
|
getValue(deltaTime) {
|
|
320
|
-
if (this.currentParticles >= this.maxParticles)
|
|
382
|
+
if (this.system.currentParticles >= this.system.maxParticles)
|
|
321
383
|
return 0;
|
|
322
|
-
// if (this._didEmit) return 0;
|
|
323
|
-
// this._didEmit = true;
|
|
324
|
-
// return 1;
|
|
325
384
|
if (!this.enabled)
|
|
326
385
|
return 0;
|
|
327
|
-
|
|
328
|
-
let count = this.rateOverTime.evaluate(time, Math.random());
|
|
386
|
+
let count = this.rateOverTime.evaluate(this.time / this.system.duration, Math.random());
|
|
329
387
|
this._summed += count * deltaTime;
|
|
330
|
-
|
|
388
|
+
let amount = Math.floor(this._summed);
|
|
331
389
|
this._summed -= amount;
|
|
332
|
-
|
|
390
|
+
if (this.burstCount > 0) {
|
|
391
|
+
for (let i = 0; i < this.burstCount; i++) {
|
|
392
|
+
const burst = this.bursts[i];
|
|
393
|
+
if (burst.time >= this.time) {
|
|
394
|
+
burst.reset();
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
amount += Math.round(burst.run(this.time));
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
// dont emit more than we are allowed to
|
|
401
|
+
return amount; //Mathf.clamp(amount, 0, this.system.maxParticles - this.system.currentParticles);
|
|
333
402
|
}
|
|
334
403
|
}
|
|
404
|
+
__decorate([
|
|
405
|
+
serializeable()
|
|
406
|
+
], EmissionModule.prototype, "enabled", void 0);
|
|
407
|
+
__decorate([
|
|
408
|
+
serializeable()
|
|
409
|
+
], EmissionModule.prototype, "bursts", void 0);
|
|
335
410
|
__decorate([
|
|
336
411
|
serializeable(MinMaxCurve)
|
|
337
412
|
], EmissionModule.prototype, "rateOverTime", void 0);
|
|
413
|
+
__decorate([
|
|
414
|
+
serializeable()
|
|
415
|
+
], EmissionModule.prototype, "rateOverTimeMultiplier", void 0);
|
|
338
416
|
__decorate([
|
|
339
417
|
serializeable(MinMaxCurve)
|
|
340
418
|
], EmissionModule.prototype, "rateOverDistance", void 0);
|
|
419
|
+
__decorate([
|
|
420
|
+
serializeable()
|
|
421
|
+
], EmissionModule.prototype, "rateOverDistanceMultiplier", void 0);
|
|
341
422
|
export class ColorOverLifetimeModule {
|
|
342
423
|
enabled;
|
|
343
424
|
color;
|
|
@@ -559,8 +640,9 @@ export class NoiseModule {
|
|
|
559
640
|
if (!this.separateAxes) {
|
|
560
641
|
if (this.strengthX)
|
|
561
642
|
strengthFactor *= this.strengthX.evaluate(t, index * 1.1);
|
|
562
|
-
|
|
563
|
-
|
|
643
|
+
else
|
|
644
|
+
strengthFactor *= this.strengthMultiplier;
|
|
645
|
+
strengthFactor *= deltaTime;
|
|
564
646
|
this._temp.multiplyScalar(strengthFactor);
|
|
565
647
|
}
|
|
566
648
|
if (this.separateAxes) {
|