@flighthq/particles 0.5.1-next.815.cc08b93 → 0.5.1-next.903.f434bc2

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/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/particles`. The `@fl
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/particles@0.5.1-next.815.cc08b93](https://github.com/flighthq/flight/tree/cc08b93ef981080fa86bdd5143dc61dbdbf2665b/packages/particles)
17
- - [License](https://github.com/flighthq/flight/blob/cc08b93ef981080fa86bdd5143dc61dbdbf2665b/LICENSE.md)
16
+ - [Source for @flighthq/particles@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/particles)
17
+ - [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
@@ -9,4 +9,8 @@ export * from './particleSpawnOffset';
9
9
  export * from './stepParticleObjects';
10
10
  export * from './updateParticleObjects';
11
11
  export * from './validateParticleEmitterConfig';
12
+ export { initializeParticleEmitterSignals } from './particleEmitterSignals';
13
+ export { initializeParticleEmitterConfig } from './particleEmitterConfig';
14
+ export { initializeParticleObjectsState } from './particleObjectsState';
15
+ export { initializeParticleEmitterState } from './particleEmitterState';
12
16
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/contract.js CHANGED
@@ -9,4 +9,8 @@ export * from './particleSpawnOffset';
9
9
  export * from './stepParticleObjects';
10
10
  export * from './updateParticleObjects';
11
11
  export * from './validateParticleEmitterConfig';
12
+ export { initializeParticleEmitterSignals } from './particleEmitterSignals';
13
+ export { initializeParticleEmitterConfig } from './particleEmitterConfig';
14
+ export { initializeParticleObjectsState } from './particleObjectsState';
15
+ export { initializeParticleEmitterState } from './particleEmitterState';
12
16
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,3 +1,4 @@
1
- import type { NonEntityCreateResult, ParticleEmitterConfig } from '@flighthq/types/contract';
2
- export declare function createParticleEmitterConfig(config?: Partial<ParticleEmitterConfig>): NonEntityCreateResult<ParticleEmitterConfig, 'options'>;
1
+ import type { ParticleEmitterConfig, EntityConstruction } from '@flighthq/types/contract';
2
+ export declare function createParticleEmitterConfig(config?: Partial<ParticleEmitterConfig>): ParticleEmitterConfig;
3
+ export declare function initializeParticleEmitterConfig(out: EntityConstruction<ParticleEmitterConfig>, config?: Partial<ParticleEmitterConfig>): void;
3
4
  //# sourceMappingURL=particleEmitterConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterConfig.d.ts","sourceRoot":"","sources":["../src/particleEmitterConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACtC,qBAAqB,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAuDzD"}
1
+ {"version":3,"file":"particleEmitterConfig.d.ts","sourceRoot":"","sources":["../src/particleEmitterConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAI1G;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,EAC9C,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACtC,IAAI,CAqDN"}
@@ -1,57 +1,61 @@
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
1
2
  export function createParticleEmitterConfig(config) {
2
- return {
3
- alphaCurve: config?.alphaCurve ?? null,
4
- alphaEnd: config?.alphaEnd ?? 0,
5
- alphaStart: config?.alphaStart ?? 1,
6
- blendMode: config?.blendMode ?? null,
7
- burstCount: config?.burstCount ?? 0,
8
- burstInterval: config?.burstInterval ?? 0,
9
- colorCurve: config?.colorCurve ?? null,
10
- colorEndB: config?.colorEndB ?? 1,
11
- colorEndG: config?.colorEndG ?? 1,
12
- colorEndR: config?.colorEndR ?? 1,
13
- colorEndVarianceB: config?.colorEndVarianceB ?? 0,
14
- colorEndVarianceG: config?.colorEndVarianceG ?? 0,
15
- colorEndVarianceR: config?.colorEndVarianceR ?? 0,
16
- colorStartB: config?.colorStartB ?? 1,
17
- colorStartG: config?.colorStartG ?? 1,
18
- colorStartR: config?.colorStartR ?? 1,
19
- colorStartVarianceB: config?.colorStartVarianceB ?? 0,
20
- colorStartVarianceG: config?.colorStartVarianceG ?? 0,
21
- colorStartVarianceR: config?.colorStartVarianceR ?? 0,
22
- directionX: config?.directionX ?? 0,
23
- directionY: config?.directionY ?? -1,
24
- directionZ: config?.directionZ ?? 0,
25
- duration: config?.duration ?? 0,
26
- emitterConeAngle: config?.emitterConeAngle ?? 0,
27
- emitterDepth: config?.emitterDepth ?? 0,
28
- emitterHeight: config?.emitterHeight ?? 0,
29
- emitterRadius: config?.emitterRadius ?? 0,
30
- emitterShape: config?.emitterShape ?? 'point',
31
- emitterWidth: config?.emitterWidth ?? 0,
32
- frameCount: config?.frameCount ?? 1,
33
- frameRate: config?.frameRate ?? 12,
34
- gravityX: config?.gravityX ?? 0,
35
- gravityY: config?.gravityY ?? 0,
36
- gravityZ: config?.gravityZ ?? 0,
37
- lifetimeMax: config?.lifetimeMax ?? 1,
38
- lifetimeMin: config?.lifetimeMin ?? 0.5,
39
- loop: config?.loop ?? true,
40
- maxParticles: config?.maxParticles ?? 1000,
41
- regionIdMax: config?.regionIdMax ?? 1,
42
- regionIdMin: config?.regionIdMin ?? 0,
43
- rotationSpeedMax: config?.rotationSpeedMax ?? 0,
44
- rotationSpeedMin: config?.rotationSpeedMin ?? 0,
45
- scaleCurve: config?.scaleCurve ?? null,
46
- scaleEnd: config?.scaleEnd ?? 1,
47
- scaleMax: config?.scaleMax ?? 1,
48
- scaleMin: config?.scaleMin ?? 1,
49
- spawnRate: config?.spawnRate ?? 10,
50
- speedMax: config?.speedMax ?? 100,
51
- speedMin: config?.speedMin ?? 50,
52
- spread: config?.spread ?? Math.PI,
53
- velocityInheritance: config?.velocityInheritance ?? 0,
54
- worldSpace: config?.worldSpace ?? false,
55
- };
3
+ const out = allocateEntity();
4
+ initializeParticleEmitterConfig(out, config);
5
+ return finishEntity(out);
6
+ }
7
+ export function initializeParticleEmitterConfig(out, config) {
8
+ out.alphaCurve = config?.alphaCurve ?? null;
9
+ out.alphaEnd = config?.alphaEnd ?? 0;
10
+ out.alphaStart = config?.alphaStart ?? 1;
11
+ out.blendMode = config?.blendMode ?? null;
12
+ out.burstCount = config?.burstCount ?? 0;
13
+ out.burstInterval = config?.burstInterval ?? 0;
14
+ out.colorCurve = config?.colorCurve ?? null;
15
+ out.colorEndB = config?.colorEndB ?? 1;
16
+ out.colorEndG = config?.colorEndG ?? 1;
17
+ out.colorEndR = config?.colorEndR ?? 1;
18
+ out.colorEndVarianceB = config?.colorEndVarianceB ?? 0;
19
+ out.colorEndVarianceG = config?.colorEndVarianceG ?? 0;
20
+ out.colorEndVarianceR = config?.colorEndVarianceR ?? 0;
21
+ out.colorStartB = config?.colorStartB ?? 1;
22
+ out.colorStartG = config?.colorStartG ?? 1;
23
+ out.colorStartR = config?.colorStartR ?? 1;
24
+ out.colorStartVarianceB = config?.colorStartVarianceB ?? 0;
25
+ out.colorStartVarianceG = config?.colorStartVarianceG ?? 0;
26
+ out.colorStartVarianceR = config?.colorStartVarianceR ?? 0;
27
+ out.directionX = config?.directionX ?? 0;
28
+ out.directionY = config?.directionY ?? -1;
29
+ out.directionZ = config?.directionZ ?? 0;
30
+ out.duration = config?.duration ?? 0;
31
+ out.emitterConeAngle = config?.emitterConeAngle ?? 0;
32
+ out.emitterDepth = config?.emitterDepth ?? 0;
33
+ out.emitterHeight = config?.emitterHeight ?? 0;
34
+ out.emitterRadius = config?.emitterRadius ?? 0;
35
+ out.emitterShape = config?.emitterShape ?? 'point';
36
+ out.emitterWidth = config?.emitterWidth ?? 0;
37
+ out.frameCount = config?.frameCount ?? 1;
38
+ out.frameRate = config?.frameRate ?? 12;
39
+ out.gravityX = config?.gravityX ?? 0;
40
+ out.gravityY = config?.gravityY ?? 0;
41
+ out.gravityZ = config?.gravityZ ?? 0;
42
+ out.lifetimeMax = config?.lifetimeMax ?? 1;
43
+ out.lifetimeMin = config?.lifetimeMin ?? 0.5;
44
+ out.loop = config?.loop ?? true;
45
+ out.maxParticles = config?.maxParticles ?? 1000;
46
+ out.regionIdMax = config?.regionIdMax ?? 1;
47
+ out.regionIdMin = config?.regionIdMin ?? 0;
48
+ out.rotationSpeedMax = config?.rotationSpeedMax ?? 0;
49
+ out.rotationSpeedMin = config?.rotationSpeedMin ?? 0;
50
+ out.scaleCurve = config?.scaleCurve ?? null;
51
+ out.scaleEnd = config?.scaleEnd ?? 1;
52
+ out.scaleMax = config?.scaleMax ?? 1;
53
+ out.scaleMin = config?.scaleMin ?? 1;
54
+ out.spawnRate = config?.spawnRate ?? 10;
55
+ out.speedMax = config?.speedMax ?? 100;
56
+ out.speedMin = config?.speedMin ?? 50;
57
+ out.spread = config?.spread ?? Math.PI;
58
+ out.velocityInheritance = config?.velocityInheritance ?? 0;
59
+ out.worldSpace = config?.worldSpace ?? false;
56
60
  }
57
61
  //# sourceMappingURL=particleEmitterConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterConfig.js","sourceRoot":"","sources":["../src/particleEmitterConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"particleEmitterConfig.js","sourceRoot":"","sources":["../src/particleEmitterConfig.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- import type { ParticleEmitterSignals } from '@flighthq/types/contract';
2
- /** Create a fresh {@link ParticleEmitterSignals} group. Called by
3
- * {@link enableParticleEmitterSignals} on first use; exported for unit testing. */
1
+ import type { ParticleEmitterSignals, EntityConstruction } from '@flighthq/types/contract';
4
2
  export declare function createParticleEmitterSignals(): ParticleEmitterSignals;
5
3
  /** Opt-in signals for a typed-array particle emitter.
6
4
  *
@@ -16,4 +14,7 @@ export declare function enableParticleEmitterSignals(state: object): ParticleEmi
16
14
  /** Return the {@link ParticleEmitterSignals} attached to `state`, or `null` if signals
17
15
  * have not been enabled for this emitter. */
18
16
  export declare function getParticleEmitterSignals(state: object): ParticleEmitterSignals | null;
17
+ /** Create a fresh {@link ParticleEmitterSignals} group. Called by
18
+ * {@link enableParticleEmitterSignals} on first use; exported for unit testing. */
19
+ export declare function initializeParticleEmitterSignals(out: EntityConstruction<ParticleEmitterSignals>): void;
19
20
  //# sourceMappingURL=particleEmitterSignals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterSignals.d.ts","sourceRoot":"","sources":["../src/particleEmitterSignals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE;oFACoF;AACpF,wBAAgB,4BAA4B,IAAI,sBAAsB,CAMrE;AAED;;;;;;;;;gEASgE;AAChE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAGlF;AAED;8CAC8C;AAC9C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAEtF"}
1
+ {"version":3,"file":"particleEmitterSignals.d.ts","sourceRoot":"","sources":["../src/particleEmitterSignals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,wBAAgB,4BAA4B,IAAI,sBAAsB,CAIrE;AAED;;;;;;;;;gEASgE;AAChE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAGlF;AAED;8CAC8C;AAC9C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAEtF;AAED;oFACoF;AACpF,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAItG"}
@@ -1,13 +1,9 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { createSignal } from '@flighthq/signals/contract';
3
- /** Create a fresh {@link ParticleEmitterSignals} group. Called by
4
- * {@link enableParticleEmitterSignals} on first use; exported for unit testing. */
5
3
  export function createParticleEmitterSignals() {
6
- return createEntity({
7
- onEmitterComplete: createSignal(),
8
- onParticleDeath: createSignal(),
9
- onParticleSpawn: createSignal(),
10
- });
4
+ const out = allocateEntity();
5
+ initializeParticleEmitterSignals(out);
6
+ return finishEntity(out);
11
7
  }
12
8
  /** Opt-in signals for a typed-array particle emitter.
13
9
  *
@@ -28,6 +24,13 @@ export function enableParticleEmitterSignals(state) {
28
24
  export function getParticleEmitterSignals(state) {
29
25
  return state[signalsSlot] ?? null;
30
26
  }
27
+ /** Create a fresh {@link ParticleEmitterSignals} group. Called by
28
+ * {@link enableParticleEmitterSignals} on first use; exported for unit testing. */
29
+ export function initializeParticleEmitterSignals(out) {
30
+ out.onEmitterComplete = createSignal();
31
+ out.onParticleDeath = createSignal();
32
+ out.onParticleSpawn = createSignal();
33
+ }
31
34
  // Per-emitter state slot for signal storage. Keyed by a module-level symbol so
32
35
  // there is no collision with other packages that might attach state to the same object.
33
36
  const signalsSlot = Symbol('particleEmitterSignals');
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterSignals.js","sourceRoot":"","sources":["../src/particleEmitterSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D;oFACoF;AACpF,MAAM,UAAU,4BAA4B;IAC1C,OAAO,YAAY,CAAC;QAClB,iBAAiB,EAAE,YAAY,EAAE;QACjC,eAAe,EAAE,YAAY,EAAE;QAC/B,eAAe,EAAE,YAAY,EAAE;KAChC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;gEASgE;AAChE,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,CAAC,GAAG,KAA2D,CAAC;IACtE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,4BAA4B,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;8CAC8C;AAC9C,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAQ,KAA4D,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC5F,CAAC;AAED,+EAA+E;AAC/E,wFAAwF;AACxF,MAAM,WAAW,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"particleEmitterSignals.js","sourceRoot":"","sources":["../src/particleEmitterSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,MAAM,UAAU,4BAA4B;IAC1C,MAAM,GAAG,GAAG,cAAc,EAA0B,CAAC;IACrD,gCAAgC,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;gEASgE;AAChE,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,CAAC,GAAG,KAA2D,CAAC;IACtE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,4BAA4B,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;8CAC8C;AAC9C,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAQ,KAA4D,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC5F,CAAC;AAED;oFACoF;AACpF,MAAM,UAAU,gCAAgC,CAAC,GAA+C;IAC9F,GAAG,CAAC,iBAAiB,GAAG,YAAY,EAAE,CAAC;IACvC,GAAG,CAAC,eAAe,GAAG,YAAY,EAAE,CAAC;IACrC,GAAG,CAAC,eAAe,GAAG,YAAY,EAAE,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,wFAAwF;AACxF,MAAM,WAAW,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
@@ -1,8 +1,9 @@
1
- import type { ParticleEmitterState, RandomSource } from '@flighthq/types/contract';
1
+ import type { ParticleEmitterState, RandomSource, EntityConstruction } from '@flighthq/types/contract';
2
2
  export declare const PARTICLE_VELOCITY_STRIDE = 3;
3
3
  export declare function createParticleEmitterState(random?: RandomSource): ParticleEmitterState;
4
4
  /** Grow the per-particle state arrays to hold at least `capacity` particles.
5
5
  * No-op when already large enough. `colorBirth`/`colorDeath` are only grown when
6
6
  * the emitter uses color variance (they stay empty otherwise). */
7
7
  export declare function ensureParticleEmitterStateCapacity(state: ParticleEmitterState, capacity: number, hasColorVariance: boolean): void;
8
+ export declare function initializeParticleEmitterState(out: EntityConstruction<ParticleEmitterState>, random?: RandomSource): void;
8
9
  //# sourceMappingURL=particleEmitterState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterState.d.ts","sourceRoot":"","sources":["../src/particleEmitterState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGnF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,YAA0B,GAAG,oBAAoB,CAgBnG;AAED;;mEAEmE;AACnE,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,CAgBN"}
1
+ {"version":3,"file":"particleEmitterState.d.ts","sourceRoot":"","sources":["../src/particleEmitterState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGvG,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,YAA0B,GAAG,oBAAoB,CAInG;AAED;;mEAEmE;AACnE,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,CAgBN;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,EAC7C,MAAM,GAAE,YAA0B,GACjC,IAAI,CAcN"}
@@ -1,23 +1,11 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { reserveFloat32Array } from '@flighthq/geometry/contract';
3
3
  // Velocity stride: [vx, vy, vz] per particle.
4
4
  export const PARTICLE_VELOCITY_STRIDE = 3;
5
5
  export function createParticleEmitterState(random = Math.random) {
6
- return createEntity({
7
- burstTimer: 0,
8
- colorBirth: new Float32Array(),
9
- colorDeath: new Float32Array(),
10
- emitterAge: 0,
11
- lifetimes: new Float32Array(),
12
- prevX: NaN,
13
- prevY: NaN,
14
- prevZ: NaN,
15
- random,
16
- rotationSpeeds: new Float32Array(),
17
- scales: new Float32Array(),
18
- spawnAccumulator: 0,
19
- velocities: new Float32Array(),
20
- });
6
+ const out = allocateEntity();
7
+ initializeParticleEmitterState(out, random);
8
+ return finishEntity(out);
21
9
  }
22
10
  /** Grow the per-particle state arrays to hold at least `capacity` particles.
23
11
  * No-op when already large enough. `colorBirth`/`colorDeath` are only grown when
@@ -39,4 +27,19 @@ export function ensureParticleEmitterStateCapacity(state, capacity, hasColorVari
39
27
  state.colorDeath = reserveFloat32Array(state.colorDeath, capacity * 3);
40
28
  }
41
29
  }
30
+ export function initializeParticleEmitterState(out, random = Math.random) {
31
+ out.burstTimer = 0;
32
+ out.colorBirth = new Float32Array();
33
+ out.colorDeath = new Float32Array();
34
+ out.emitterAge = 0;
35
+ out.lifetimes = new Float32Array();
36
+ out.prevX = NaN;
37
+ out.prevY = NaN;
38
+ out.prevZ = NaN;
39
+ out.random = random;
40
+ out.rotationSpeeds = new Float32Array();
41
+ out.scales = new Float32Array();
42
+ out.spawnAccumulator = 0;
43
+ out.velocities = new Float32Array();
44
+ }
42
45
  //# sourceMappingURL=particleEmitterState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitterState.js","sourceRoot":"","sources":["../src/particleEmitterState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAM,UAAU,0BAA0B,CAAC,SAAuB,IAAI,CAAC,MAAM;IAC3E,OAAO,YAAY,CAAC;QAClB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI,YAAY,EAAE;QAC9B,UAAU,EAAE,IAAI,YAAY,EAAE;QAC9B,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,IAAI,YAAY,EAAE;QAC7B,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,MAAM;QACN,cAAc,EAAE,IAAI,YAAY,EAAE;QAClC,MAAM,EAAE,IAAI,YAAY,EAAE;QAC1B,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,IAAI,YAAY,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED;;mEAEmE;AACnE,MAAM,UAAU,kCAAkC,CAChD,KAA2B,EAC3B,QAAgB,EAChB,gBAAyB;IAEzB,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,wBAAwB,CAAC,CAAC;IAC9F,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"particleEmitterState.js","sourceRoot":"","sources":["../src/particleEmitterState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAM,UAAU,0BAA0B,CAAC,SAAuB,IAAI,CAAC,MAAM;IAC3E,MAAM,GAAG,GAAG,cAAc,EAAwB,CAAC;IACnD,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;mEAEmE;AACnE,MAAM,UAAU,kCAAkC,CAChD,KAA2B,EAC3B,QAAgB,EAChB,gBAAyB;IAEzB,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,wBAAwB,CAAC,CAAC;IAC9F,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,GAA6C,EAC7C,SAAuB,IAAI,CAAC,MAAM;IAElC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,GAAG,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,GAAG,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAChC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AACtC,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { ParticleObjectsState, RandomSource } from '@flighthq/types/contract';
1
+ import type { ParticleObjectsState, RandomSource, EntityConstruction } from '@flighthq/types/contract';
2
2
  export declare function createParticleObjectsState(capacity: number, random?: RandomSource): ParticleObjectsState;
3
3
  export declare function ensureParticleObjectsStateCapacity(state: ParticleObjectsState, capacity: number): void;
4
+ export declare function initializeParticleObjectsState(out: EntityConstruction<ParticleObjectsState>, capacity: number, random?: RandomSource): void;
4
5
  //# sourceMappingURL=particleObjectsState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleObjectsState.d.ts","sourceRoot":"","sources":["../src/particleObjectsState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEnF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,YAA0B,GAAG,oBAAoB,CAarH;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtG"}
1
+ {"version":3,"file":"particleObjectsState.d.ts","sourceRoot":"","sources":["../src/particleObjectsState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEvG,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,YAA0B,GAAG,oBAAoB,CAIrH;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtG;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,EAC7C,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,YAA0B,GACjC,IAAI,CAWN"}
@@ -1,18 +1,9 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import { reserveFloat32Array } from '@flighthq/geometry/contract';
3
3
  export function createParticleObjectsState(capacity, random = Math.random) {
4
- return createEntity({
5
- burstTimer: 0,
6
- emitterAge: 0,
7
- lifetimes: new Float32Array(capacity * 2),
8
- prevX: NaN,
9
- prevY: NaN,
10
- random,
11
- rotationSpeeds: new Float32Array(capacity),
12
- scales: new Float32Array(capacity),
13
- spawnAccumulator: 0,
14
- velocities: new Float32Array(capacity * 2),
15
- });
4
+ const out = allocateEntity();
5
+ initializeParticleObjectsState(out, capacity, random);
6
+ return finishEntity(out);
16
7
  }
17
8
  export function ensureParticleObjectsStateCapacity(state, capacity) {
18
9
  if (state.lifetimes.length >= capacity * 2)
@@ -22,4 +13,16 @@ export function ensureParticleObjectsStateCapacity(state, capacity) {
22
13
  state.scales = reserveFloat32Array(state.scales, capacity);
23
14
  state.rotationSpeeds = reserveFloat32Array(state.rotationSpeeds, capacity);
24
15
  }
16
+ export function initializeParticleObjectsState(out, capacity, random = Math.random) {
17
+ out.burstTimer = 0;
18
+ out.emitterAge = 0;
19
+ out.lifetimes = new Float32Array(capacity * 2);
20
+ out.prevX = NaN;
21
+ out.prevY = NaN;
22
+ out.random = random;
23
+ out.rotationSpeeds = new Float32Array(capacity);
24
+ out.scales = new Float32Array(capacity);
25
+ out.spawnAccumulator = 0;
26
+ out.velocities = new Float32Array(capacity * 2);
27
+ }
25
28
  //# sourceMappingURL=particleObjectsState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleObjectsState.js","sourceRoot":"","sources":["../src/particleObjectsState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,SAAuB,IAAI,CAAC,MAAM;IAC7F,OAAO,YAAY,CAAC;QAClB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzC,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,MAAM;QACN,cAAc,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;QAClC,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,KAA2B,EAAE,QAAgB;IAC9F,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IACnD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"particleObjectsState.js","sourceRoot":"","sources":["../src/particleObjectsState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,SAAuB,IAAI,CAAC,MAAM;IAC7F,MAAM,GAAG,GAAG,cAAc,EAAwB,CAAC;IACnD,8BAA8B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,KAA2B,EAAE,QAAgB;IAC9F,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IACnD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,GAA6C,EAC7C,QAAgB,EAChB,SAAuB,IAAI,CAAC,MAAM;IAElC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC/C,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,cAAc,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChD,GAAG,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateParticleEmitterConfig.js","sourceRoot":"","sources":["../src/validateParticleEmitterConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateParticleEmitterConfig.js","sourceRoot":"","sources":["../src/validateParticleEmitterConfig.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/particles",
3
- "version": "0.5.1-next.815.cc08b93",
3
+ "version": "0.5.1-next.903.f434bc2",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,10 +38,10 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-next.815.cc08b93",
42
- "@flighthq/geometry": "0.5.1-next.815.cc08b93",
43
- "@flighthq/signals": "0.5.1-next.815.cc08b93",
44
- "@flighthq/types": "0.5.1-next.815.cc08b93"
41
+ "@flighthq/entity": "0.5.1-next.903.f434bc2",
42
+ "@flighthq/geometry": "0.5.1-next.903.f434bc2",
43
+ "@flighthq/signals": "0.5.1-next.903.f434bc2",
44
+ "@flighthq/types": "0.5.1-next.903.f434bc2"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@flighthq/math": "*",
@@ -1,4 +1,4 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import type { ParticleEmitter2D, ParticleEmitterData } from '@flighthq/types/contract';
3
3
  import type { ParticleObject } from '@flighthq/types/contract';
4
4
 
@@ -9,17 +9,16 @@ import { createParticleObjectsState } from './particleObjectsState';
9
9
  // Node-free SoA emitter fixture: applyParticleCollisions reads only `emitter.data`, so the display
10
10
  // node from @flighthq/particleemitter is not needed to unit-test the collision pass.
11
11
  function createEmitterFixture(capacity: number): ParticleEmitter2D {
12
- const data: ParticleEmitterData = createEntity({
13
- alphas: new Float32Array(capacity),
14
- atlas: null,
15
- colors: new Float32Array(capacity * 3),
16
- ids: new Uint16Array(capacity),
17
- particleCount: 0,
18
- positionsZ: new Float32Array(capacity),
19
- transforms: new Float32Array(capacity * 4),
20
- velocities: new Float32Array(capacity * 2),
21
- worldSpace: false,
22
- });
12
+ const data = allocateEntity<any>();
13
+ data.alphas = new Float32Array(capacity);
14
+ data.atlas = null;
15
+ data.colors = new Float32Array(capacity * 3);
16
+ data.ids = new Uint16Array(capacity);
17
+ data.particleCount = 0;
18
+ data.positionsZ = new Float32Array(capacity);
19
+ data.transforms = new Float32Array(capacity * 4);
20
+ data.velocities = new Float32Array(capacity * 2);
21
+ data.worldSpace = false;
23
22
  return { data, x: 0, y: 0 } as unknown as ParticleEmitter2D;
24
23
  }
25
24
 
@@ -1,4 +1,4 @@
1
- import { createEntity } from '@flighthq/entity/contract';
1
+ import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
2
  import type { ParticleEmitter2D, ParticleEmitterData } from '@flighthq/types/contract';
3
3
  import type { ParticleObject } from '@flighthq/types/contract';
4
4
 
@@ -12,17 +12,16 @@ import { updateParticleObjects } from './updateParticleObjects';
12
12
  // node from @flighthq/particleemitter is not needed to unit-test the force pass. Keeping this
13
13
  // fixture local preserves particles as a pure sim leaf.
14
14
  function createEmitterFixture(capacity: number): ParticleEmitter2D {
15
- const data: ParticleEmitterData = createEntity({
16
- alphas: new Float32Array(capacity),
17
- atlas: null,
18
- colors: new Float32Array(capacity * 3),
19
- ids: new Uint16Array(capacity),
20
- particleCount: 0,
21
- positionsZ: new Float32Array(capacity),
22
- transforms: new Float32Array(capacity * 4),
23
- velocities: new Float32Array(capacity * 2),
24
- worldSpace: false,
25
- });
15
+ const data = allocateEntity<any>();
16
+ data.alphas = new Float32Array(capacity);
17
+ data.atlas = null;
18
+ data.colors = new Float32Array(capacity * 3);
19
+ data.ids = new Uint16Array(capacity);
20
+ data.particleCount = 0;
21
+ data.positionsZ = new Float32Array(capacity);
22
+ data.transforms = new Float32Array(capacity * 4);
23
+ data.velocities = new Float32Array(capacity * 2);
24
+ data.worldSpace = false;
26
25
  return { data, x: 0, y: 0 } as unknown as ParticleEmitter2D;
27
26
  }
28
27