@woosh/meep-engine 2.165.2 → 2.165.3
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/package.json +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.js +5 -2
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +3 -2
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +5 -2
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +3 -2
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +5 -3
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +6 -4
- package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.d.ts +2 -1
- package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.d.ts.map +1 -1
- package/src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.js +3 -2
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"description": "Pure JavaScript game engine. Fully featured and production ready.",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"author": "Alexander Goldring",
|
|
9
|
-
"version": "2.165.
|
|
9
|
+
"version": "2.165.3",
|
|
10
10
|
"main": "build/meep.module.js",
|
|
11
11
|
"module": "build/meep.module.js",
|
|
12
12
|
"exports": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail2d/Trail2D.js"],"names":[],"mappings":";AAwBA;
|
|
1
|
+
{"version":3,"file":"Trail2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail2d/Trail2D.js"],"names":[],"mappings":";AAwBA;IAkMI,oCAMC;IAtMD;;;OAGG;IACH,QAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,OAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,WAFU,cAAc,GAAC,MAAM,CAEC;IAEhC;;;;OAIG;IACH,eAFU,MAAM,CAEuB;IAEvC;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,eAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,yBAFU,MAAM,CAEY;IAE5B;;;;;OAKG;IACH,gBAFU,KAAK,CAEe;IAE9B;;;;OAIG;IACH,iBAFU,OAAO,CAEM;IAEvB;;;OAGG;IACH,QAFU,OAAO,GAAC,IAAI,CAER;IAEd;;;OAGG;IACH,UAFU,mBAAmB,CAEQ;IAErC;;;OAGG;IACH,cAFU,SAAS,CAEG;IAEtB;;;OAGG;IACH,cAAsB;IAEtB,gBAQC;IAMD,4BAEC;IAND,yBAEC;IAMD;;;;OAIG;IACH,cAHW,MAAM,GAAC,YAAY,GACjB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,YAAY,GACjB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,YAAY,SACnB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,YAAY,GACjB,OAAO,CAInB;IAED;;;OAGG;IACH,qBAFW,MAAM,QAehB;IADG,kHAAgB;IAGpB;;OAEG;IACH,cAsBC;IAUD;;;;;;;;;;;;;aAkBC;IAGD;;;;;;;;;;;;;;;;;MAUC;IAED;;;OAGG;IACH,cAFW,OAAO,WAWjB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,KACN,MAAM,KACN,MAAM,YACN,MAAM,GACJ,OAAO,CAmEnB;CAEJ;;;;;;+BAtV8B,+BAA+B;sBALxC,iCAAiC;oBACnC,kCAAkC;wBAM9B,0BAA0B;oCACd,sCAAsC;0BAThD,yCAAyC;6BAWtC,mBAAmB;kCADd,wBAAwB"}
|
|
@@ -74,6 +74,8 @@ class Trail2D {
|
|
|
74
74
|
distanceSinceLastUpdate = 0;
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
|
+
* RGB tints the ribbon; alpha is the trail's base opacity, which the
|
|
78
|
+
* age-driven fade scales down to zero.
|
|
77
79
|
* @readonly
|
|
78
80
|
* @type {Color}
|
|
79
81
|
*/
|
|
@@ -336,9 +338,10 @@ class Trail2D {
|
|
|
336
338
|
this.setFlag(Trail2DFlags.BoundsNeedUpdate);
|
|
337
339
|
}
|
|
338
340
|
|
|
339
|
-
// set head to fresh value
|
|
341
|
+
// set head to fresh value; alpha follows the same fade law the simulator
|
|
342
|
+
// applies every tick, so the point doesn't pop when it stops being the head
|
|
340
343
|
ribbon.setPointAttribute_Scalar(head_index, RIBBON_ATTRIBUTE_ADDRESS_AGE, head_age);
|
|
341
|
-
ribbon.setPointAlpha(head_index, clamp01(head_age / maxAge));
|
|
344
|
+
ribbon.setPointAlpha(head_index, (1 - clamp01(head_age / maxAge)) * this.color.w);
|
|
342
345
|
ribbon.setPointThickness(head_index, this.width);
|
|
343
346
|
|
|
344
347
|
return head_position_changed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail2DSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail2d/Trail2DSystem.js"],"names":[],"mappings":";AA0BA;IAkCI;;;OAGG;IACH,4BA4BC;IAjED,oDAAoC;IAEpC,+DAEE;IAEF;;;OAGG;IACH,WAFU,4BAA4B,CAES;IAE/C;;;;OAIG;IACH,wBAAiC;IAGjC;;;;OAIG;IACH,oBAAgB;IAEhB;;;OAGG;IACH,YAAgB;IAcZ;;;;OAIG;IACH,iBAAsB;IAEtB;;;OAGG;IACH,UAFU,cAAc,CAEO;IAE/B;;;OAGG;IACH,aAFU,cAAY,IAAI,CAEH;IAK3B,2CAmBC;IAED,4CAIC;IAED;;;;;OAKG;IACH,
|
|
1
|
+
{"version":3,"file":"Trail2DSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail2d/Trail2DSystem.js"],"names":[],"mappings":";AA0BA;IAkCI;;;OAGG;IACH,4BA4BC;IAjED,oDAAoC;IAEpC,+DAEE;IAEF;;;OAGG;IACH,WAFU,4BAA4B,CAES;IAE/C;;;;OAIG;IACH,wBAAiC;IAGjC;;;;OAIG;IACH,oBAAgB;IAEhB;;;OAGG;IACH,YAAgB;IAcZ;;;;OAIG;IACH,iBAAsB;IAEtB;;;OAGG;IACH,UAFU,cAAc,CAEO;IAE/B;;;OAGG;IACH,aAFU,cAAY,IAAI,CAEH;IAK3B,2CAmBC;IAED,4CAIC;IAED;;;;;OAKG;IACH,sBAsDC;IAED;;;;;OAKG;IACH,YAHW,OAAO,aADP,SAAS,YAET,MAAM,QAahB;IAED;;;;;OAKG;IACH,kBAJW,OAAO,aACP,SAAS,UACT,MAAM,QAShB;IAED;;;;OAIG;IACH,yBAHW,OAAO,aACP,SAAS,QAoCnB;IAED,6BAWC;CACJ;uBAtQsB,wBAAwB;0BACrB,qCAAqC;oBAY3C,cAAc;4CAdU,uDAAuD;6CAYtD,yDAAyD;+BARvE,yBAAyB"}
|
|
@@ -167,7 +167,8 @@ class Trail2DSystem extends System {
|
|
|
167
167
|
ribbon.setPointPosition(i, position_x, position_y, position_z);
|
|
168
168
|
ribbon.setPointThickness(i, trail.width);
|
|
169
169
|
ribbon.setPointAttribute_Scalar(i, RIBBON_ATTRIBUTE_ADDRESS_UV_OFFSET, f);
|
|
170
|
-
|
|
170
|
+
// seeded age = maxAge means "already expired", so alpha follows the fade law: 0
|
|
171
|
+
ribbon.setPointAlpha(i, 0);
|
|
171
172
|
ribbon.setPointAttribute_Scalar(i, RIBBON_ATTRIBUTE_ADDRESS_AGE, trail.maxAge);
|
|
172
173
|
|
|
173
174
|
}
|
|
@@ -238,7 +239,7 @@ class Trail2DSystem extends System {
|
|
|
238
239
|
|
|
239
240
|
const ageOffset = max2(0, trail.maxAge - trail.time);
|
|
240
241
|
|
|
241
|
-
this.simulator.update(ribbon, trail.maxAge, timeDelta);
|
|
242
|
+
this.simulator.update(ribbon, trail.maxAge, timeDelta, trail.color.w);
|
|
242
243
|
|
|
243
244
|
if (trail.getFlag(Trail2DFlags.Spawning)) {
|
|
244
245
|
trail.updateHead(newPosition.x, newPosition.y, newPosition.z, ageOffset);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail3d/Trail3D.js"],"names":[],"mappings":";AAgCA;;;;;GAKG;AACH;
|
|
1
|
+
{"version":3,"file":"Trail3D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail3d/Trail3D.js"],"names":[],"mappings":";AAgCA;;;;;GAKG;AACH;IA8MI,oCAMC;IAlND;;;OAGG;IACH,QAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,OAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,gBAFU,MAAM,CAEyB;IAEzC;;;OAGG;IACH,WAFU,cAAc,GAAC,MAAM,CAEC;IAEhC;;;;OAIG;IACH,eAFU,MAAM,CAEuB;IAEvC;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;OAEG;IACH,eAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,yBAFU,MAAM,CAEY;IAE5B;;;;;OAKG;IACH,gBAFU,KAAK,CAEe;IAE9B;;;;OAIG;IACH,iBAFU,OAAO,CAEM;IAEvB;;;OAGG;IACH,MAFU,KAAK,GAAC,IAAI,CAER;IAEZ;;;OAGG;IACH,MAFU,OAAK,IAAI,CAEP;IAEZ;;;OAGG;IACH,UAFU,iBAAiB,CAEQ;IAEnC;;;OAGG;IACH,cAFU,SAAS,CAEG;IAEtB;;;OAGG;IACH,cAAsB;IAEtB,gBAQC;IAMD,4BAEC;IAND,yBAEC;IAUD,6BAEC;IAND,0BAEC;IAMD;;;OAGG;IACH,cAHW,MAAM,GAAC,YAAY,GACjB,IAAI,CAIhB;IAED;;;OAGG;IACH,gBAHW,MAAM,GAAC,YAAY,GACjB,IAAI,CAIhB;IAED;;;OAGG;IACH,gBAHW,MAAM,GAAC,YAAY,SACnB,OAAO,QAQjB;IAED;;;OAGG;IACH,cAHW,MAAM,GAAC,YAAY,GACjB,OAAO,CAInB;IAED;;OAEG;IACH,qBAFW,MAAM,QAehB;IAED;;OAEG;IACH,cAmBC;IAUD;;;;;;;;;;;;;;;aAsBC;IAED;;;;;;;;;;;;;;;;;;;MAYC;IAED;;OAEG;IACH,cAFW,OAAO,WAajB;IAkDD;;;;;;OAMG;IACH,cANW,MAAM,KACN,MAAM,KACN,MAAM,YACN,MAAM,GACJ,OAAO,CAiEnB;;CAEJ;;;;;+BAja8B,+BAA+B;sBAPxC,iCAAiC;oBACnC,kCAAkC;sBAShC,2BAA2B;kCACf,uCAAuC;0BAZ/C,yCAAyC;6BAatC,mBAAmB"}
|
|
@@ -94,6 +94,8 @@ class Trail3D {
|
|
|
94
94
|
distanceSinceLastUpdate = 0;
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
|
+
* RGB tints the tube; alpha is the trail's base opacity, which the
|
|
98
|
+
* age-driven fade scales down to zero.
|
|
97
99
|
* @readonly
|
|
98
100
|
* @type {Color}
|
|
99
101
|
*/
|
|
@@ -413,9 +415,10 @@ class Trail3D {
|
|
|
413
415
|
this.setFlag(Trail3DFlags.BoundsNeedUpdate);
|
|
414
416
|
}
|
|
415
417
|
|
|
416
|
-
// set head to fresh value
|
|
418
|
+
// set head to fresh value; alpha follows the same fade law the simulator
|
|
419
|
+
// applies every tick, so the knot doesn't pop when it stops being the head
|
|
417
420
|
tube.setKnotAttribute_Scalar(head_index, TUBE_ATTRIBUTE_ADDRESS_AGE, head_age);
|
|
418
|
-
tube.setKnotAlpha(head_index, clamp01(head_age / maxAge));
|
|
421
|
+
tube.setKnotAlpha(head_index, (1 - clamp01(head_age / maxAge)) * this.color.w);
|
|
419
422
|
tube.setKnotThickness(head_index, this.width);
|
|
420
423
|
|
|
421
424
|
return head_position_changed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail3d/Trail3DSystem.js"],"names":[],"mappings":";AAyBA;IAiCI;;;OAGG;IACH,4BAkBC;IAtDD,oDAAoC;IAEpC,+DAEE;IAEF;;OAEG;IACH,WAFU,0BAA0B,CAES;IAiB7C;;;OAGG;IACH,YAAgB;IAeZ;;OAEG;IACH,UAFU,cAAc,CAEO;IAE/B;;OAEG;IACH,aAFU,cAAY,IAAI,CAEH;IAG3B,2CAmBC;IAED,4CAIC;
|
|
1
|
+
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/trail3d/Trail3DSystem.js"],"names":[],"mappings":";AAyBA;IAiCI;;;OAGG;IACH,4BAkBC;IAtDD,oDAAoC;IAEpC,+DAEE;IAEF;;OAEG;IACH,WAFU,0BAA0B,CAES;IAiB7C;;;OAGG;IACH,YAAgB;IAeZ;;OAEG;IACH,UAFU,cAAc,CAEO;IAE/B;;OAEG;IACH,aAFU,cAAY,IAAI,CAEH;IAG3B,2CAmBC;IAED,4CAIC;IA2DD;;;;OAIG;IACH,YAJW,OAAO,aACP,SAAS,YACT,MAAM,QAYhB;IAED;;;;OAIG;IACH,kBAJW,OAAO,aACP,SAAS,UACT,MAAM,QAQhB;IAED;;;OAGG;IACH,yBAHW,OAAO,aACP,SAAS,QAkCnB;IAED,6BAWC;;CACJ;uBA9OsB,wBAAwB;0BACrB,qCAAqC;oBAW3C,cAAc;4CAbU,uDAAuD;2CAUxD,0DAA0D;+BANtE,yBAAyB"}
|
|
@@ -151,7 +151,8 @@ class Trail3DSystem extends System {
|
|
|
151
151
|
tube.setKnotPosition(i, position_x, position_y, position_z);
|
|
152
152
|
tube.setKnotThickness(i, trail.width);
|
|
153
153
|
tube.setKnotAttribute_Scalar(i, TUBE_ATTRIBUTE_ADDRESS_UV_V, f);
|
|
154
|
-
|
|
154
|
+
// seeded age = maxAge means "already expired", so alpha follows the fade law: 0
|
|
155
|
+
tube.setKnotAlpha(i, 0);
|
|
155
156
|
tube.setKnotAttribute_Scalar(i, TUBE_ATTRIBUTE_ADDRESS_AGE, trail.maxAge);
|
|
156
157
|
}
|
|
157
158
|
|
|
@@ -215,7 +216,7 @@ class Trail3DSystem extends System {
|
|
|
215
216
|
|
|
216
217
|
const ageOffset = max2(0, trail.maxAge - trail.time);
|
|
217
218
|
|
|
218
|
-
this.simulator.update(tube, trail.maxAge, timeDelta);
|
|
219
|
+
this.simulator.update(tube, trail.maxAge, timeDelta, trail.color.w);
|
|
219
220
|
|
|
220
221
|
if (trail.getFlag(Trail3DFlags.Spawning)) {
|
|
221
222
|
trail.updateHead(newPosition.x, newPosition.y, newPosition.z, ageOffset);
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fixed-function simulation for {@link TubeX} tubes — the 3D analogue of
|
|
3
|
-
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, fades its alpha
|
|
4
|
-
* as it approaches `max_age`, and flows the along-tube UV
|
|
3
|
+
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, fades its alpha from
|
|
4
|
+
* `alpha` to zero as it approaches `max_age`, and flows the along-tube UV
|
|
5
|
+
* coordinate with age.
|
|
5
6
|
*/
|
|
6
7
|
export class TubeXFixedPhysicsSimulator {
|
|
7
8
|
/**
|
|
8
9
|
* @param {TubeX} tube
|
|
9
10
|
* @param {number} max_age
|
|
10
11
|
* @param {number} timeDelta
|
|
12
|
+
* @param {number} [alpha] base alpha of an age-0 knot; the age fade scales it
|
|
11
13
|
*/
|
|
12
|
-
update(tube: TubeX, max_age: number, timeDelta: number): void;
|
|
14
|
+
update(tube: TubeX, max_age: number, timeDelta: number, alpha?: number): void;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=TubeXFixedPhysicsSimulator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TubeXFixedPhysicsSimulator.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"TubeXFixedPhysicsSimulator.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH;IAEI;;;;;OAKG;IACH,6BAJW,MAAM,aACN,MAAM,UACN,MAAM,QAiBhB;CACJ"}
|
|
@@ -3,8 +3,9 @@ import { TUBE_ATTRIBUTE_ADDRESS_AGE, TUBE_ATTRIBUTE_ADDRESS_UV_V } from "../tube
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Fixed-function simulation for {@link TubeX} tubes — the 3D analogue of
|
|
6
|
-
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, fades its alpha
|
|
7
|
-
* as it approaches `max_age`, and flows the along-tube UV
|
|
6
|
+
* {@link RibbonXFixedPhysicsSimulator}. Ages every knot, fades its alpha from
|
|
7
|
+
* `alpha` to zero as it approaches `max_age`, and flows the along-tube UV
|
|
8
|
+
* coordinate with age.
|
|
8
9
|
*/
|
|
9
10
|
export class TubeXFixedPhysicsSimulator {
|
|
10
11
|
|
|
@@ -12,8 +13,9 @@ export class TubeXFixedPhysicsSimulator {
|
|
|
12
13
|
* @param {TubeX} tube
|
|
13
14
|
* @param {number} max_age
|
|
14
15
|
* @param {number} timeDelta
|
|
16
|
+
* @param {number} [alpha] base alpha of an age-0 knot; the age fade scales it
|
|
15
17
|
*/
|
|
16
|
-
update(tube, max_age, timeDelta) {
|
|
18
|
+
update(tube, max_age, timeDelta, alpha = 1) {
|
|
17
19
|
|
|
18
20
|
const n = tube.getCount();
|
|
19
21
|
|
|
@@ -23,7 +25,7 @@ export class TubeXFixedPhysicsSimulator {
|
|
|
23
25
|
const relative_age = clamp01(age / max_age);
|
|
24
26
|
|
|
25
27
|
// fade out with age
|
|
26
|
-
tube.setKnotAlpha(i, 1.0 - relative_age);
|
|
28
|
+
tube.setKnotAlpha(i, (1.0 - relative_age) * alpha);
|
|
27
29
|
|
|
28
30
|
// flow the along-tube UV with age
|
|
29
31
|
tube.setKnotAttribute_Scalar(i, TUBE_ATTRIBUTE_ADDRESS_UV_V, relative_age);
|
|
@@ -7,7 +7,8 @@ export class RibbonXFixedPhysicsSimulator {
|
|
|
7
7
|
* @param {RibbonX} ribbon
|
|
8
8
|
* @param {number} max_age
|
|
9
9
|
* @param {number} timeDelta
|
|
10
|
+
* @param {number} [alpha] base alpha of an age-0 point; the age fade scales it
|
|
10
11
|
*/
|
|
11
|
-
update(ribbon: RibbonX, max_age: number, timeDelta: number): void;
|
|
12
|
+
update(ribbon: RibbonX, max_age: number, timeDelta: number, alpha?: number): void;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=RibbonXFixedPhysicsSimulator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RibbonXFixedPhysicsSimulator.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAEI
|
|
1
|
+
{"version":3,"file":"RibbonXFixedPhysicsSimulator.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/trail/x/simulator/RibbonXFixedPhysicsSimulator.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAEI;;;;;;OAMG;IACH,iCAJW,MAAM,aACN,MAAM,UACN,MAAM,QAkBhB;CACJ"}
|
|
@@ -12,8 +12,9 @@ export class RibbonXFixedPhysicsSimulator {
|
|
|
12
12
|
* @param {RibbonX} ribbon
|
|
13
13
|
* @param {number} max_age
|
|
14
14
|
* @param {number} timeDelta
|
|
15
|
+
* @param {number} [alpha] base alpha of an age-0 point; the age fade scales it
|
|
15
16
|
*/
|
|
16
|
-
update(ribbon, max_age, timeDelta) {
|
|
17
|
+
update(ribbon, max_age, timeDelta, alpha = 1) {
|
|
17
18
|
|
|
18
19
|
const n = ribbon.getCount();
|
|
19
20
|
for (let i = 0; i < n; i++) {
|
|
@@ -23,7 +24,7 @@ export class RibbonXFixedPhysicsSimulator {
|
|
|
23
24
|
const relative_age = clamp01(age / max_age);
|
|
24
25
|
|
|
25
26
|
// apply alpha over-time
|
|
26
|
-
ribbon.setPointAlpha(i, 1.0 - relative_age);
|
|
27
|
+
ribbon.setPointAlpha(i, (1.0 - relative_age) * alpha);
|
|
27
28
|
|
|
28
29
|
ribbon.setPointAttribute_Scalar(i, RIBBON_ATTRIBUTE_ADDRESS_UV_OFFSET, relative_age);
|
|
29
30
|
}
|