particle-flux 0.4.13 → 0.4.15

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 (88) hide show
  1. package/lib/core/Particle.d.ts +5 -5
  2. package/lib/core/Particle.d.ts.map +1 -1
  3. package/lib/core/Particle.js +150 -113
  4. package/lib/core/Particle.js.map +1 -1
  5. package/lib/core/ParticleContainer.d.ts +6 -14
  6. package/lib/core/ParticleContainer.d.ts.map +1 -1
  7. package/lib/core/ParticleContainer.js +8 -97
  8. package/lib/core/ParticleContainer.js.map +1 -1
  9. package/lib/core/ParticleEmitter.js +2 -5
  10. package/lib/core/ParticleEmitter.js.map +1 -1
  11. package/lib/core/base-behaviors/base-behaviors.typeguards.d.ts +10 -0
  12. package/lib/core/base-behaviors/base-behaviors.typeguards.d.ts.map +1 -0
  13. package/lib/core/base-behaviors/base-behaviors.typeguards.js +21 -0
  14. package/lib/core/base-behaviors/base-behaviors.typeguards.js.map +1 -0
  15. package/lib/core/base-behaviors/base-behaviors.types.d.ts +11 -3
  16. package/lib/core/base-behaviors/base-behaviors.types.d.ts.map +1 -1
  17. package/lib/core/base-behaviors/base-behaviors.types.js +8 -0
  18. package/lib/core/base-behaviors/base-behaviors.types.js.map +1 -1
  19. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.d.ts +3 -3
  20. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.d.ts.map +1 -1
  21. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.js +12 -8
  22. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.js.map +1 -1
  23. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.types.d.ts +6 -0
  24. package/lib/core/base-behaviors/delta-behavior/DeltaBehavior.types.d.ts.map +1 -1
  25. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.d.ts +3 -3
  26. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.d.ts.map +1 -1
  27. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.js +15 -10
  28. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.js.map +1 -1
  29. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.types.d.ts +7 -0
  30. package/lib/core/base-behaviors/scalar-behavior/ScalarBehavior.types.d.ts.map +1 -1
  31. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.d.ts +3 -3
  32. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.d.ts.map +1 -1
  33. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.js +9 -5
  34. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.js.map +1 -1
  35. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.typeguards.d.ts +1 -1
  36. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.typeguards.d.ts.map +1 -1
  37. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.typeguards.js.map +1 -1
  38. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.types.d.ts +5 -0
  39. package/lib/core/base-behaviors/script-behavior/ScriptBehavior.types.d.ts.map +1 -1
  40. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.d.ts +3 -3
  41. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.d.ts.map +1 -1
  42. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.js +27 -18
  43. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.js.map +1 -1
  44. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.types.d.ts +11 -0
  45. package/lib/core/base-behaviors/vector-behavior/VectorBehavior.types.d.ts.map +1 -1
  46. package/lib/core/behaviors/color-behavior/ColorBehavior/ColorDynamicBehavior.d.ts +4 -0
  47. package/lib/core/behaviors/color-behavior/ColorBehavior/ColorDynamicBehavior.d.ts.map +1 -0
  48. package/lib/core/behaviors/color-behavior/ColorBehavior/ColorDynamicBehavior.js +32 -0
  49. package/lib/core/behaviors/color-behavior/ColorBehavior/ColorDynamicBehavior.js.map +1 -0
  50. package/lib/core/behaviors/color-behavior/ColorBehavior.typeguards.d.ts +2 -1
  51. package/lib/core/behaviors/color-behavior/ColorBehavior.typeguards.d.ts.map +1 -1
  52. package/lib/core/behaviors/color-behavior/ColorBehavior.typeguards.js +6 -1
  53. package/lib/core/behaviors/color-behavior/ColorBehavior.typeguards.js.map +1 -1
  54. package/lib/core/behaviors/color-behavior/ColorBehavior.types.d.ts +12 -2
  55. package/lib/core/behaviors/color-behavior/ColorBehavior.types.d.ts.map +1 -1
  56. package/lib/core/behaviors/color-behavior/ColorBehavior.types.js +5 -0
  57. package/lib/core/behaviors/color-behavior/ColorBehavior.types.js.map +1 -1
  58. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.d.ts +5 -2
  59. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.d.ts.map +1 -1
  60. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.js +16 -14
  61. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.js.map +1 -1
  62. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.types.d.ts +4 -0
  63. package/lib/core/behaviors/life-time-behavior/LifeTimeBehavior.types.d.ts.map +1 -1
  64. package/lib/scripts/test-performance.d.ts.map +1 -1
  65. package/lib/scripts/test-performance.js +1 -0
  66. package/lib/scripts/test-performance.js.map +1 -1
  67. package/lib/types.d.ts +22 -18
  68. package/lib/types.d.ts.map +1 -1
  69. package/lib/utils/easing/easing-functions.d.ts.map +1 -1
  70. package/lib/utils/easing/easing-functions.js +32 -31
  71. package/lib/utils/easing/easing-functions.js.map +1 -1
  72. package/lib/utils/easing/easing.types.d.ts +31 -31
  73. package/lib/utils/easing/easing.types.d.ts.map +1 -1
  74. package/lib/utils/easing/easing.types.js +31 -31
  75. package/lib/utils/easing/easing.types.js.map +1 -1
  76. package/package.json +1 -1
  77. package/lib/core/behaviors/color-behavior/ColorDynamicBehavior/ColorDynamicBehavior.d.ts +0 -4
  78. package/lib/core/behaviors/color-behavior/ColorDynamicBehavior/ColorDynamicBehavior.d.ts.map +0 -1
  79. package/lib/core/behaviors/color-behavior/ColorDynamicBehavior/ColorDynamicBehavior.js +0 -14
  80. package/lib/core/behaviors/color-behavior/ColorDynamicBehavior/ColorDynamicBehavior.js.map +0 -1
  81. package/lib/core/behaviors/color-behavior/ColorScriptBehavior/ColorScriptBehavior.d.ts +0 -1
  82. package/lib/core/behaviors/color-behavior/ColorScriptBehavior/ColorScriptBehavior.d.ts.map +0 -1
  83. package/lib/core/behaviors/color-behavior/ColorScriptBehavior/ColorScriptBehavior.js +0 -2
  84. package/lib/core/behaviors/color-behavior/ColorScriptBehavior/ColorScriptBehavior.js.map +0 -1
  85. package/lib/core/behaviors/color-behavior/ColorStaticBehavior/ColorStaticBehavior.d.ts +0 -4
  86. package/lib/core/behaviors/color-behavior/ColorStaticBehavior/ColorStaticBehavior.d.ts.map +0 -1
  87. package/lib/core/behaviors/color-behavior/ColorStaticBehavior/ColorStaticBehavior.js +0 -8
  88. package/lib/core/behaviors/color-behavior/ColorStaticBehavior/ColorStaticBehavior.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { IParticle, ParticleConfig, ViewContainer, ViewParticle, ViewRenderFn } from '../types';
2
- export declare const createParticle: (viewContainer: ViewContainer<ViewParticle>) => IParticle;
3
- export declare function useParticle(particle: IParticle, viewRenderFn: ViewRenderFn | ViewRenderFn[], config: ParticleConfig): void;
4
- export declare function updateParticle(particle: IParticle, elapsedDelta: number, deltaMS: number): void;
5
- export declare function noUseParticle(particle: IParticle): void;
6
- export declare function isParticleInUse(particle: IParticle): boolean;
2
+ export declare const createParticlePool: (viewContainer: ViewContainer<ViewParticle>, maxParticles: number) => IParticle;
3
+ export declare function useParticle(particlePool: IParticle, index: number, viewRenderFn: ViewRenderFn | ViewRenderFn[], config: ParticleConfig): void;
4
+ export declare function updateParticle(particlePool: IParticle, index: number, elapsedDelta: number, deltaMS: number): void;
5
+ export declare function noUseParticle(particlePool: IParticle, index: number): void;
6
+ export declare function isParticleInUse(particlePool: IParticle, index: number): boolean;
7
7
  //# sourceMappingURL=Particle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Particle.d.ts","sourceRoot":"","sources":["../../src/core/Particle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,cAAc,EAAW,aAAa,EAAE,YAAY,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAwBvG,eAAO,MAAM,cAAc,kBAAmB,cAAc,YAAY,CAAC,KAAG,SAkB1E,CAAC;AAEH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE,EAC3C,MAAM,EAAE,cAAc,GACrB,IAAI,CAoGN;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAoD/F;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAMvD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAE5D"}
1
+ {"version":3,"file":"Particle.d.ts","sourceRoot":"","sources":["../../src/core/Particle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,cAAc,EAAW,aAAa,EAAE,YAAY,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAyCvG,eAAO,MAAM,kBAAkB,kBAAmB,cAAc,YAAY,CAAC,gBAAgB,MAAM,KAAG,SA4CpG,CAAC;AAEH,wBAAgB,WAAW,CACzB,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE,EAC3C,MAAM,EAAE,cAAc,GACrB,IAAI,CA2HN;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAgKlH;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/E"}
@@ -1,198 +1,235 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isParticleInUse = exports.noUseParticle = exports.updateParticle = exports.useParticle = exports.createParticle = void 0;
4
- const LifeTimeBehavior_1 = require("./behaviors/life-time-behavior/LifeTimeBehavior");
5
- const ScalarBehavior_1 = require("./base-behaviors/scalar-behavior/ScalarBehavior");
3
+ exports.isParticleInUse = exports.noUseParticle = exports.updateParticle = exports.useParticle = exports.createParticlePool = void 0;
6
4
  const ScalarBehavior_typeguards_1 = require("./base-behaviors/scalar-behavior/ScalarBehavior.typeguards");
7
5
  const ScriptBehavior_typeguards_1 = require("./base-behaviors/script-behavior/ScriptBehavior.typeguards");
8
- const ScriptBehavior_1 = require("./base-behaviors/script-behavior/ScriptBehavior");
9
6
  const getDirection_1 = require("./direction/getDirection");
10
7
  const RealRandom_1 = require("../utils/random/RealRandom");
11
8
  const Vector2Utils_1 = require("../utils/Vector2Utils");
12
- const DeltaBehavior_1 = require("./base-behaviors/delta-behavior/DeltaBehavior");
13
9
  const DeltaBehavior_typeguards_1 = require("./base-behaviors/delta-behavior/DeltaBehavior.typeguards");
14
10
  const VectorBehavior_typeguards_1 = require("./base-behaviors/vector-behavior/VectorBehavior.typeguards");
15
- const VectorBehavior_1 = require("./base-behaviors/vector-behavior/VectorBehavior");
16
11
  const ColorBehavior_typeguards_1 = require("../core/behaviors/color-behavior/ColorBehavior.typeguards");
17
- const ColorDynamicBehavior_1 = require("../core/behaviors/color-behavior/ColorDynamicBehavior/ColorDynamicBehavior");
18
- const ColorStaticBehavior_1 = require("../core/behaviors/color-behavior/ColorStaticBehavior/ColorStaticBehavior");
19
12
  const parsePath_1 = require("../utils/parsePath");
20
13
  const getSpawnPosition_1 = require("./spawn-shapes/getSpawnPosition");
21
14
  const constants_1 = require("../constants");
22
- const createParticle = (viewContainer) => ({
23
- speed: 0,
24
- deltaPath: { x: 0, y: 0 },
25
- initialPosition: { x: 0, y: 0 },
26
- direction: { x: 0, y: 0 },
27
- view: null,
28
- next: null,
29
- prev: null,
30
- inUse: false,
31
- lifeTimeBehavior: () => 0,
32
- speedBehavior: null,
33
- alphaBehavior: null,
34
- rotationBehavior: null,
35
- scaleBehavior: null,
36
- colorBehavior: null,
37
- gravityBehavior: null,
38
- pathFunc: null,
15
+ const LifeTimeBehavior_1 = require("./behaviors/life-time-behavior/LifeTimeBehavior");
16
+ const ScriptBehavior_1 = require("./base-behaviors/script-behavior/ScriptBehavior");
17
+ const ScalarBehavior_1 = require("./base-behaviors/scalar-behavior/ScalarBehavior");
18
+ const DeltaBehavior_1 = require("./base-behaviors/delta-behavior/DeltaBehavior");
19
+ const VectorBehavior_1 = require("./base-behaviors/vector-behavior/VectorBehavior");
20
+ const ColorDynamicBehavior_1 = require("./behaviors/color-behavior/ColorBehavior/ColorDynamicBehavior");
21
+ const base_behaviors_typeguards_1 = require("./base-behaviors/base-behaviors.typeguards");
22
+ const createParticlePool = (viewContainer, maxParticles) => ({
23
+ speedBehavior: Array(maxParticles).fill(null),
24
+ dirX: new Float32Array(maxParticles),
25
+ dirY: new Float32Array(maxParticles),
26
+ view: Array(maxParticles).fill(null),
27
+ speed: new Float32Array(maxParticles),
28
+ inUse: new Float32Array(maxParticles),
29
+ age: new Float32Array(maxParticles),
30
+ lifeTime: new Float32Array(maxParticles),
31
+ alphaBehavior: Array(maxParticles).fill(null),
32
+ rotationBehavior: Array(maxParticles).fill(null),
33
+ scaleBehavior: Array(maxParticles).fill(null),
34
+ colorBehavior: Array(maxParticles).fill(null),
35
+ gravityBehavior: Array(maxParticles).fill(null),
36
+ deltaPath: Array(maxParticles).fill({ x: 0, y: 0 }),
37
+ initialPosition: Array(maxParticles).fill({ x: 0, y: 0 }),
38
+ pathFunc: Array(maxParticles).fill(null),
39
39
  viewContainer,
40
+ nextAvailable: 0,
40
41
  });
41
- exports.createParticle = createParticle;
42
- function useParticle(particle, viewRenderFn, config) {
43
- particle.inUse = true;
44
- particle.view = createView(viewRenderFn);
45
- particle.viewContainer.addChild(particle.view);
46
- particle.lifeTimeBehavior = (0, LifeTimeBehavior_1.getLifeTimeBehavior)(config.lifeTime || constants_1.DEFAULT_LIFE_TIME_CONFIG);
47
- particle.initialPosition = config.spawnShape
42
+ exports.createParticlePool = createParticlePool;
43
+ function useParticle(particlePool, index, viewRenderFn, config) {
44
+ particlePool.inUse[index] = 1;
45
+ particlePool.nextAvailable = index + 1;
46
+ const view = createView(viewRenderFn);
47
+ particlePool.view[index] = view;
48
+ particlePool.viewContainer.addChild(view);
49
+ const lifeTimeBehavior = (0, LifeTimeBehavior_1.getLifeTimeBehaviorState)(config.lifeTime || constants_1.DEFAULT_LIFE_TIME_CONFIG);
50
+ particlePool.lifeTime[index] = lifeTimeBehavior.lifeTime;
51
+ particlePool.age[index] = lifeTimeBehavior.age;
52
+ const initialPosition = config.spawnShape
48
53
  ? (0, getSpawnPosition_1.getSpawnPosition)(config.spawnShape, config.spawnPosition)
49
54
  : config.spawnPosition || { x: 0, y: 0 };
50
- particle.view.x = particle.initialPosition.x;
51
- particle.view.y = particle.initialPosition.y;
55
+ particlePool.initialPosition[index] = initialPosition;
56
+ view.x = initialPosition.x;
57
+ view.y = initialPosition.y;
52
58
  if (config.direction) {
53
- particle.direction = (0, getDirection_1.getDirection)(config.direction);
59
+ const direction = (0, getDirection_1.getDirection)(config.direction);
60
+ particlePool.dirX[index] = direction.x;
61
+ particlePool.dirY[index] = direction.y;
54
62
  }
55
63
  else {
56
- particle.direction = {
57
- x: 0,
58
- y: 0,
59
- };
64
+ particlePool.dirX[index] = 0;
65
+ particlePool.dirY[index] = 0;
60
66
  }
61
67
  if (config.speed) {
62
68
  if ((0, ScriptBehavior_typeguards_1.isScriptBehaviorConfig)(config.speed)) {
63
- particle.speedBehavior = (0, ScriptBehavior_1.getScriptBehavior)(config.speed);
69
+ particlePool.speedBehavior[index] = (0, ScriptBehavior_1.getScriptBehaviorState)(config.speed);
64
70
  }
65
71
  else if ((0, ScalarBehavior_typeguards_1.isScalarBehaviorConfig)(config.speed)) {
66
- particle.speedBehavior = (0, ScalarBehavior_1.getScalarBehavior)(config.speed);
72
+ particlePool.speedBehavior[index] = (0, ScalarBehavior_1.getScalarBehaviorState)(config.speed);
67
73
  }
68
74
  }
69
75
  if (config.alpha) {
70
76
  if ((0, ScriptBehavior_typeguards_1.isScriptBehaviorConfig)(config.alpha)) {
71
- particle.alphaBehavior = (0, ScriptBehavior_1.getScriptBehavior)(config.alpha);
77
+ particlePool.alphaBehavior[index] = (0, ScriptBehavior_1.getScriptBehaviorState)(config.alpha);
72
78
  }
73
79
  else if ((0, ScalarBehavior_typeguards_1.isScalarBehaviorConfig)(config.alpha)) {
74
- particle.alphaBehavior = (0, ScalarBehavior_1.getScalarBehavior)(config.alpha);
80
+ particlePool.alphaBehavior[index] = (0, ScalarBehavior_1.getScalarBehaviorState)(config.alpha);
75
81
  }
76
82
  }
83
+ else {
84
+ particlePool.alphaBehavior[index] = null;
85
+ }
77
86
  if (config.rotation) {
78
87
  if ((0, DeltaBehavior_typeguards_1.isDeltaBehaviorConfig)(config.rotation)) {
79
- particle.rotationBehavior = (0, DeltaBehavior_1.getDeltaBehavior)(config.rotation);
88
+ particlePool.rotationBehavior[index] = (0, DeltaBehavior_1.getDeltaBehaviorState)(config.rotation);
80
89
  }
81
90
  else if ((0, ScalarBehavior_typeguards_1.isScalarBehaviorConfig)(config.rotation)) {
82
- particle.rotationBehavior = (0, ScalarBehavior_1.getScalarBehavior)(config.rotation);
91
+ particlePool.rotationBehavior[index] = (0, ScalarBehavior_1.getScalarBehaviorState)(config.rotation);
83
92
  }
84
93
  else if ((0, ScriptBehavior_typeguards_1.isScriptBehaviorConfig)(config.rotation)) {
85
- particle.rotationBehavior = (0, ScriptBehavior_1.getScriptBehavior)(config.rotation);
94
+ particlePool.rotationBehavior[index] = (0, ScriptBehavior_1.getScriptBehaviorState)(config.rotation);
86
95
  }
87
96
  }
97
+ else {
98
+ particlePool.rotationBehavior[index] = null;
99
+ }
88
100
  if (config.scale) {
89
101
  if ((0, ScalarBehavior_typeguards_1.isScalarBehaviorConfig)(config.scale)) {
90
- particle.scaleBehavior = (lifeTimeNormalizedProgress, elapsedDelta) => {
91
- const value = (0, ScalarBehavior_1.getScalarBehavior)(config.scale)(lifeTimeNormalizedProgress, elapsedDelta);
92
- return {
93
- x: value,
94
- y: value,
95
- };
96
- };
102
+ particlePool.scaleBehavior[index] = (0, ScalarBehavior_1.getScalarBehaviorState)(config.scale);
97
103
  }
98
104
  else if ((0, ScriptBehavior_typeguards_1.isScriptBehaviorConfig)(config.scale)) {
99
- particle.scaleBehavior = (lifeTimeNormalizedProgress, elapsedDelta) => {
100
- const value = (0, ScriptBehavior_1.getScriptBehavior)(config.scale)(lifeTimeNormalizedProgress, elapsedDelta);
101
- if (typeof value === 'number') {
102
- return {
103
- x: value,
104
- y: value,
105
- };
106
- }
107
- else {
108
- return value;
109
- }
110
- };
105
+ particlePool.scaleBehavior[index] = (0, ScriptBehavior_1.getScriptBehaviorState)(config.scale);
111
106
  }
112
107
  else if ((0, VectorBehavior_typeguards_1.isVectorBehaviorConfig)(config.scale)) {
113
- particle.scaleBehavior = (0, VectorBehavior_1.getVectorBehavior)(config.scale);
108
+ particlePool.scaleBehavior[index] = (0, VectorBehavior_1.getVectorBehaviorState)(config.scale);
114
109
  }
115
110
  }
111
+ else {
112
+ particlePool.scaleBehavior[index] = null;
113
+ }
116
114
  if (config.color) {
117
115
  if ((0, ColorBehavior_typeguards_1.isColorScriptBehaviorConfig)(config.color)) {
118
- particle.colorBehavior = (0, ScriptBehavior_1.getScriptBehavior)(config.color);
119
- }
120
- else if ((0, ColorBehavior_typeguards_1.isColorStaticBehaviorConfig)(config.color)) {
121
- particle.colorBehavior = (0, ColorStaticBehavior_1.getColorStaticBehavior)(config.color);
116
+ particlePool.colorBehavior[index] = (0, ScriptBehavior_1.getScriptBehaviorState)(config.color);
122
117
  }
123
118
  else if ((0, ColorBehavior_typeguards_1.isColorDynamicBehaviorConfig)(config.color)) {
124
- particle.colorBehavior = (0, ColorDynamicBehavior_1.getColorDynamicBehavior)(config.color);
119
+ particlePool.colorBehavior[index] = (0, ColorDynamicBehavior_1.getColorDynamicBehaviorState)(config.color);
125
120
  }
126
121
  }
122
+ else {
123
+ particlePool.colorBehavior[index] = null;
124
+ }
127
125
  if (config.gravity) {
128
- particle.gravityBehavior = (0, ScalarBehavior_1.getScalarBehavior)(config.gravity);
126
+ particlePool.gravityBehavior[index] = (0, ScalarBehavior_1.getScalarBehaviorState)(config.gravity);
127
+ }
128
+ else {
129
+ particlePool.gravityBehavior[index] = null;
129
130
  }
130
131
  if (config.path) {
131
- particle.pathFunc = (0, parsePath_1.parsePath)(config.path.path);
132
+ particlePool.pathFunc[index] = (0, parsePath_1.parsePath)(config.path.path);
132
133
  }
133
- updateParticle(particle, 0, 0);
134
+ updateParticle(particlePool, index, 0, 0);
134
135
  }
135
136
  exports.useParticle = useParticle;
136
- function updateParticle(particle, elapsedDelta, deltaMS) {
137
- if (!particle.inUse || particle.view === null)
137
+ function updateParticle(particlePool, index, elapsedDelta, deltaMS) {
138
+ const view = particlePool.view[index];
139
+ if (view === null)
138
140
  return;
139
- if (particle.view.destroyed) {
140
- noUseParticle(particle);
141
+ if (view.destroyed) {
142
+ noUseParticle(particlePool, index);
141
143
  return;
142
144
  }
143
- const lifeTimeNormalizedProgress = particle.lifeTimeBehavior(deltaMS);
144
- if (isDead(lifeTimeNormalizedProgress)) {
145
- noUseParticle(particle);
145
+ const lifeTimeNormalizedProgress = (0, LifeTimeBehavior_1.updateLifeTimeBehaviorState)(particlePool, index, deltaMS);
146
+ if (isParticleDead(particlePool, index)) {
147
+ noUseParticle(particlePool, index);
146
148
  return;
147
149
  }
148
- if (particle.speedBehavior !== null) {
149
- particle.speed = particle.speedBehavior(lifeTimeNormalizedProgress, elapsedDelta);
150
+ if (particlePool.speedBehavior[index] !== null) {
151
+ const speedBehavior = particlePool.speedBehavior[index];
152
+ if ((0, base_behaviors_typeguards_1.isScriptBehaviorState)(speedBehavior)) {
153
+ particlePool.speed[index] = (0, ScriptBehavior_1.updateScriptBehaviorState)(speedBehavior, lifeTimeNormalizedProgress);
154
+ }
155
+ else if ((0, base_behaviors_typeguards_1.isScalarBehaviorState)(speedBehavior)) {
156
+ particlePool.speed[index] = (0, ScalarBehavior_1.updateScalarBehaviorState)(speedBehavior, lifeTimeNormalizedProgress);
157
+ }
150
158
  }
151
- if (particle.alphaBehavior !== null) {
152
- particle.view.alpha = particle.alphaBehavior(lifeTimeNormalizedProgress, elapsedDelta);
159
+ const speed = particlePool.speed[index] * elapsedDelta;
160
+ if (particlePool.alphaBehavior[index] !== null) {
161
+ const alphaBehavior = particlePool.alphaBehavior[index];
162
+ if ((0, base_behaviors_typeguards_1.isScriptBehaviorState)(alphaBehavior)) {
163
+ view.alpha = (0, ScriptBehavior_1.updateScriptBehaviorState)(alphaBehavior, lifeTimeNormalizedProgress);
164
+ }
165
+ else if ((0, base_behaviors_typeguards_1.isScalarBehaviorState)(alphaBehavior)) {
166
+ view.alpha = (0, ScalarBehavior_1.updateScalarBehaviorState)(alphaBehavior, lifeTimeNormalizedProgress);
167
+ }
153
168
  }
154
- if (particle.rotationBehavior !== null) {
155
- particle.view.angle = particle.rotationBehavior(lifeTimeNormalizedProgress, elapsedDelta);
169
+ if (particlePool.rotationBehavior[index] !== null) {
170
+ const rotation = particlePool.rotationBehavior[index];
171
+ if ((0, base_behaviors_typeguards_1.isDeltaBehaviorState)(rotation)) {
172
+ view.angle = (0, DeltaBehavior_1.updateDeltaBehaviorState)(rotation, elapsedDelta);
173
+ }
174
+ else if ((0, base_behaviors_typeguards_1.isScriptBehaviorState)(rotation)) {
175
+ view.angle = (0, ScriptBehavior_1.updateScriptBehaviorState)(rotation, lifeTimeNormalizedProgress);
176
+ }
177
+ else if ((0, base_behaviors_typeguards_1.isScalarBehaviorState)(rotation)) {
178
+ view.angle = (0, ScalarBehavior_1.updateScalarBehaviorState)(rotation, lifeTimeNormalizedProgress);
179
+ }
156
180
  }
157
- if (particle.scaleBehavior !== null) {
158
- particle.view.scale = particle.scaleBehavior(lifeTimeNormalizedProgress, elapsedDelta);
181
+ if (particlePool.scaleBehavior[index] !== null) {
182
+ const scale = particlePool.scaleBehavior[index];
183
+ if ((0, base_behaviors_typeguards_1.isScriptBehaviorState)(scale)) {
184
+ view.scale = (0, ScriptBehavior_1.updateScriptBehaviorState)(scale, lifeTimeNormalizedProgress);
185
+ }
186
+ else if ((0, base_behaviors_typeguards_1.isScalarBehaviorState)(scale)) {
187
+ view.scale.x = view.scale.y = (0, ScalarBehavior_1.updateScalarBehaviorState)(scale, lifeTimeNormalizedProgress);
188
+ }
189
+ else if ((0, base_behaviors_typeguards_1.isVectorBehaviorState)(scale)) {
190
+ view.scale = (0, VectorBehavior_1.updateVectorBehaviorState)(scale, elapsedDelta);
191
+ }
159
192
  }
160
- if (particle.colorBehavior !== null) {
161
- particle.view.tint = particle.colorBehavior(lifeTimeNormalizedProgress, elapsedDelta);
193
+ if (particlePool.colorBehavior[index] !== null) {
194
+ const color = particlePool.colorBehavior[index];
195
+ if ((0, ColorBehavior_typeguards_1.isColorDynamicBehaviorState)(color)) {
196
+ view.tint = (0, ColorDynamicBehavior_1.updateColorDynamicState)(color, lifeTimeNormalizedProgress);
197
+ }
198
+ else if ((0, base_behaviors_typeguards_1.isScriptBehaviorState)(color)) {
199
+ view.tint = (0, ScriptBehavior_1.updateScriptBehaviorState)(color, lifeTimeNormalizedProgress);
200
+ }
162
201
  }
163
- const speed = particle.speed * elapsedDelta;
164
- if (particle.pathFunc !== null) {
165
- particle.deltaPath.x = particle.deltaPath.x + speed;
166
- particle.deltaPath.y = particle.pathFunc(particle.deltaPath.x);
167
- const delta = Vector2Utils_1.Vector2Utils.rotate(particle.deltaPath, -Math.PI / 2);
168
- particle.view.x = particle.initialPosition.x + delta.x;
169
- particle.view.y = particle.initialPosition.y + delta.y;
202
+ const pathFunc = particlePool.pathFunc[index];
203
+ if (pathFunc !== null) {
204
+ particlePool.deltaPath[index].x = particlePool.deltaPath[index].x + speed;
205
+ particlePool.deltaPath[index].y = pathFunc(particlePool.deltaPath[index].x);
206
+ const delta = Vector2Utils_1.Vector2Utils.rotate(particlePool.deltaPath[index], -Math.PI / 2);
207
+ view.x = particlePool.initialPosition[index].x + delta.x;
208
+ view.y = particlePool.initialPosition[index].y + delta.y;
170
209
  }
171
210
  else {
172
- const gravityShift = particle.gravityBehavior
173
- ? particle.gravityBehavior(lifeTimeNormalizedProgress, elapsedDelta)
174
- : 0;
175
- particle.view.x += particle.direction.x * speed;
176
- particle.view.y += (particle.direction.y + gravityShift) * speed;
211
+ const gravityBehavior = particlePool.gravityBehavior[index];
212
+ const gravityShift = gravityBehavior ? (0, ScalarBehavior_1.updateScalarBehaviorState)(gravityBehavior, lifeTimeNormalizedProgress) : 0;
213
+ view.x += particlePool.dirX[index] * speed;
214
+ view.y += (particlePool.dirY[index] + gravityShift) * speed;
177
215
  }
178
216
  }
179
217
  exports.updateParticle = updateParticle;
180
- function noUseParticle(particle) {
181
- if (particle.view === null)
182
- return;
183
- particle.viewContainer.removeChild(particle.view);
184
- particle.view = null;
185
- particle.inUse = false;
218
+ function noUseParticle(particlePool, index) {
219
+ particlePool.viewContainer.removeChild(particlePool.view[index]);
220
+ particlePool.view[index] = null;
221
+ particlePool.inUse[index] = 0;
222
+ particlePool.nextAvailable = index;
186
223
  }
187
224
  exports.noUseParticle = noUseParticle;
188
- function isParticleInUse(particle) {
189
- return particle.inUse;
225
+ function isParticleInUse(particlePool, index) {
226
+ return particlePool.inUse[index] === 1;
190
227
  }
191
228
  exports.isParticleInUse = isParticleInUse;
192
229
  function createView(viewFactory) {
193
230
  return Array.isArray(viewFactory) ? RealRandom_1.realRandom.choice(viewFactory)() : viewFactory();
194
231
  }
195
- function isDead(lifeTimeNormalizedProgress) {
196
- return lifeTimeNormalizedProgress === 1;
232
+ function isParticleDead(particlePool, index) {
233
+ return particlePool.age[index] === particlePool.lifeTime[index];
197
234
  }
198
235
  //# sourceMappingURL=Particle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/core/Particle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/core/Particle.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,14 @@
1
- import { IParticleContainer, ViewContainer, ViewParticle, IParticle } from '../types';
1
+ import { ViewContainer, ViewParticle } from '../types';
2
2
  import { ConfigManager } from './ConfigManager';
3
- export declare class ParticleContainer implements IParticleContainer {
3
+ export declare class ParticleContainer {
4
4
  private readonly viewContainer;
5
5
  private readonly config;
6
- headParticle: IParticle | null;
7
- availableParticleHead: IParticle | null;
6
+ private readonly maxParticles;
8
7
  private containerParticlesCount;
9
- constructor(viewContainer: ViewContainer<ViewParticle>, config: ConfigManager);
10
- getParticlesArray(): IParticle[];
11
- getPoolParticlesArray(): IParticle[];
8
+ private particlePool;
9
+ constructor(viewContainer: ViewContainer<ViewParticle>, config: ConfigManager, maxParticles: number);
12
10
  getParticlesCount(): number;
13
11
  update(elapsedDelta: number, deltaMS: number): void;
14
- clear(): void;
15
- clearPool(): void;
16
- addParticle(): IParticle;
17
- fillPool(count: number): void;
18
- private addParticleInUsedParticles;
19
- private addParticleToPool;
20
- private getParticleFromPool;
12
+ addParticle(): void;
21
13
  }
22
14
  //# sourceMappingURL=ParticleContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleContainer.d.ts","sourceRoot":"","sources":["../../src/core/ParticleContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,UAAU,CAAC;AACpF,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,qBAAa,iBAAkB,YAAW,kBAAkB;IAK9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAA+B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzF,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,qBAAqB,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/C,OAAO,CAAC,uBAAuB,CAAS;gBAEX,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAAmB,MAAM,EAAE,aAAa;IAOxG,iBAAiB,IAAI,SAAS,EAAE;IAchC,qBAAqB,IAAI,SAAS,EAAE;IAepC,iBAAiB,IAAI,MAAM;IAK3B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAiCnD,KAAK,IAAI,IAAI;IAeb,SAAS,IAAI,IAAI;IAIjB,WAAW,IAAI,SAAS;IAYxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpC,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,mBAAmB;CAe5B"}
1
+ {"version":3,"file":"ParticleContainer.d.ts","sourceRoot":"","sources":["../../src/core/ParticleContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AACpF,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,YAAY,CAAY;gBAGb,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM;IAsChC,iBAAiB,IAAI,MAAM;IAI3B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA+DnD,WAAW,IAAI,IAAI;CAqD3B"}
@@ -3,116 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ParticleContainer = void 0;
4
4
  const Particle_1 = require("./Particle");
5
5
  class ParticleContainer {
6
- constructor(viewContainer, config) {
6
+ constructor(viewContainer, config, maxParticles) {
7
7
  this.viewContainer = viewContainer;
8
8
  this.config = config;
9
- this.headParticle = null;
10
- this.availableParticleHead = null;
9
+ this.maxParticles = maxParticles;
10
+ this.particlePool = (0, Particle_1.createParticlePool)(this.viewContainer, maxParticles);
11
11
  this.containerParticlesCount = 0;
12
12
  }
13
- getParticlesArray() {
14
- const particleList = [];
15
- let particle = this.headParticle;
16
- while (particle !== null) {
17
- particleList.push(particle);
18
- particle = particle.next;
19
- }
20
- return particleList;
21
- }
22
- getPoolParticlesArray() {
23
- const particleList = [];
24
- let particle = this.availableParticleHead;
25
- while (particle !== null) {
26
- particleList.push(particle);
27
- particle = particle.next;
28
- }
29
- return particleList;
30
- }
31
13
  getParticlesCount() {
32
14
  return this.containerParticlesCount;
33
15
  }
34
16
  update(elapsedDelta, deltaMS) {
35
- this.containerParticlesCount = 0;
36
- let pointer = this.headParticle;
37
- while (pointer !== null) {
38
- if (!(0, Particle_1.isParticleInUse)(pointer)) {
39
- if (pointer === this.headParticle) {
40
- this.headParticle = this.headParticle.next;
41
- if (this.headParticle !== null) {
42
- this.headParticle.prev = null;
43
- }
44
- }
45
- else {
46
- pointer.prev.next = pointer.next;
47
- }
48
- const temp = pointer;
49
- pointer = pointer.next;
50
- temp.next = null;
51
- this.addParticleToPool(temp);
17
+ for (let i = 0; i < this.maxParticles; i++) {
18
+ if (!(0, Particle_1.isParticleInUse)(this.particlePool, i)) {
19
+ continue;
52
20
  }
53
- else {
54
- (0, Particle_1.updateParticle)(pointer, elapsedDelta, deltaMS);
55
- this.containerParticlesCount++;
56
- pointer = pointer.next;
57
- }
58
- }
59
- }
60
- clear() {
61
- this.availableParticleHead = this.headParticle;
62
- let particle = this.headParticle;
63
- while (particle !== null) {
64
- (0, Particle_1.noUseParticle)(particle);
65
- particle = particle.next;
21
+ (0, Particle_1.updateParticle)(this.particlePool, i, elapsedDelta, deltaMS);
66
22
  }
67
- this.headParticle = null;
68
- this.containerParticlesCount = 0;
69
- }
70
- clearPool() {
71
- this.availableParticleHead = null;
72
23
  }
73
24
  addParticle() {
74
- let particle = this.getParticleFromPool() || (0, Particle_1.createParticle)(this.viewContainer);
75
- (0, Particle_1.useParticle)(particle, this.config.view, this.config.particleConfig);
76
- this.addParticleInUsedParticles(particle);
25
+ (0, Particle_1.useParticle)(this.particlePool, this.particlePool.nextAvailable, this.config.view, this.config.particleConfig);
77
26
  this.containerParticlesCount++;
78
- return particle;
79
- }
80
- fillPool(count) {
81
- for (let i = 0; i < count; i++) {
82
- this.addParticleToPool((0, Particle_1.createParticle)(this.viewContainer));
83
- }
84
- }
85
- addParticleInUsedParticles(particle) {
86
- if (this.headParticle === null) {
87
- this.headParticle = particle;
88
- }
89
- else {
90
- this.headParticle.prev = particle;
91
- particle.next = this.headParticle;
92
- this.headParticle = particle;
93
- }
94
- }
95
- addParticleToPool(particle) {
96
- if (this.availableParticleHead === null) {
97
- this.availableParticleHead = particle;
98
- }
99
- else {
100
- this.availableParticleHead.prev = particle;
101
- particle.next = this.availableParticleHead;
102
- this.availableParticleHead = particle;
103
- }
104
- }
105
- getParticleFromPool() {
106
- if (this.availableParticleHead === null)
107
- return null;
108
- const particle = this.availableParticleHead;
109
- this.availableParticleHead = this.availableParticleHead.next;
110
- if (this.availableParticleHead !== null) {
111
- this.availableParticleHead.prev = null;
112
- }
113
- particle.next = null;
114
- particle.prev = null;
115
- return particle;
116
27
  }
117
28
  }
118
29
  exports.ParticleContainer = ParticleContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleContainer.js","sourceRoot":"","sources":["../../src/core/ParticleContainer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParticleContainer.js","sourceRoot":"","sources":["../../src/core/ParticleContainer.ts"],"names":[],"mappings":";;;AAEA,yCAA2G;AAK3G,MAAa,iBAAiB;IAM5B,YACmB,aAA0C,EAC1C,MAAqB,EACrB,YAAoB;QAFpB,kBAAa,GAAb,aAAa,CAA6B;QAC1C,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAQ;QAIrC,IAAI,CAAC,YAAY,GAAG,IAAA,6BAAkB,EAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACnC,CAAC;IAgCM,iBAAiB;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,YAAoB,EAAE,OAAe;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAA,0BAAe,EAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;gBAC1C,SAAS;aACV;YAED,IAAA,yBAAc,EAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;SAC7D;IACH,CAAC;IAuDM,WAAW;QAGhB,IAAA,sBAAW,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAI9G,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAGjC,CAAC;CA2CF;AAvKD,8CAuKC"}