@zylem/behaviors 0.2.0 → 0.3.0

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 (139) hide show
  1. package/dist/{chunk-3PYGRHAL.js → chunk-23HQH3GJ.js} +1 -2
  2. package/dist/{chunk-EIWQM6U3.js → chunk-2HKY6WF7.js} +0 -1
  3. package/dist/{chunk-KS72RZHX.js → chunk-2HLZBWGD.js} +0 -1
  4. package/dist/{chunk-HZMY3TT4.js → chunk-4DVDFCVY.js} +0 -1
  5. package/dist/{chunk-LD5SMIB3.js → chunk-4EWASZHB.js} +0 -1
  6. package/dist/{chunk-4I6E6DGV.js → chunk-6UMC6BB5.js} +4 -5
  7. package/dist/{chunk-ARJWUNRE.js → chunk-6Y3GB76J.js} +3 -4
  8. package/dist/{chunk-FPTWVCPN.js → chunk-7IZ36Y5G.js} +2 -3
  9. package/dist/{chunk-ID5QJYF5.js → chunk-7U4WFBWM.js} +0 -1
  10. package/dist/{chunk-GCNRXAKH.js → chunk-7Y6JVZ5H.js} +1 -2
  11. package/dist/{chunk-2CLT36VB.js → chunk-BC3IJYS7.js} +4 -5
  12. package/dist/{chunk-XIJNE67Y.js → chunk-D53GNZXP.js} +3 -4
  13. package/dist/{chunk-XG2YMCJW.js → chunk-E4HTCQPK.js} +4 -5
  14. package/dist/{chunk-WOMHL23C.js → chunk-ERS6SNA5.js} +1 -2
  15. package/dist/{chunk-BXP4K7RF.js → chunk-F6LFX4V3.js} +2 -3
  16. package/dist/{chunk-DYLH6K7B.js → chunk-F7E23E26.js} +0 -1
  17. package/dist/{chunk-RTRVBEIB.js → chunk-FHDYJ5WP.js} +2 -3
  18. package/dist/{chunk-F3KRX2V4.js → chunk-FOOM42MK.js} +5 -6
  19. package/dist/{chunk-OYWFPIHF.js → chunk-HIBJDA5Z.js} +4 -5
  20. package/dist/{chunk-6C6NXNEW.js → chunk-IEA7F73P.js} +1 -2
  21. package/dist/{chunk-SS7ELMJ7.js → chunk-IQRG5BAZ.js} +4 -5
  22. package/dist/{chunk-K3UNLQ7W.js → chunk-J5XLB24H.js} +1 -2
  23. package/dist/{chunk-2C3Z5GE7.js → chunk-K4UBXSZL.js} +1 -2
  24. package/dist/{chunk-UYFOLI2X.js → chunk-K6CWKFHL.js} +0 -1
  25. package/dist/{chunk-STCCNLPC.js → chunk-L76JG73P.js} +3 -4
  26. package/dist/{chunk-KOZUNIIE.js → chunk-RD2YTTXY.js} +3 -4
  27. package/dist/{chunk-4URF65BR.js → chunk-RER2IDPW.js} +0 -1
  28. package/dist/{chunk-WWVD5DR5.js → chunk-RHW3IDQX.js} +0 -1
  29. package/dist/{chunk-RTVRUNYR.js → chunk-RQWWUML4.js} +0 -1
  30. package/dist/{chunk-YUO6SKJD.js → chunk-SBACY5SU.js} +5 -6
  31. package/dist/{chunk-JAN34G6S.js → chunk-T2P4JTQN.js} +2 -3
  32. package/dist/{chunk-SVLNF434.js → chunk-UFHYR2LV.js} +0 -1
  33. package/dist/{chunk-VAN4WW3F.js → chunk-VO5J64DG.js} +2 -3
  34. package/dist/{chunk-POZER3MQ.js → chunk-VPZ32CCD.js} +101 -96
  35. package/dist/{chunk-OHCPV2NT.js → chunk-WHKPWIQO.js} +0 -1
  36. package/dist/chunk-WSKD7GY3.js +2630 -0
  37. package/dist/{chunk-EZNCCO4L.js → chunk-YDLO5M7S.js} +0 -1
  38. package/dist/{chunk-Y6UJOUE5.js → chunk-YYJP62QD.js} +0 -1
  39. package/dist/{chunk-KDY5N6J4.js → chunk-ZHBD65AZ.js} +0 -1
  40. package/dist/cooldown.js +2 -3
  41. package/dist/coordinators/boundary-ricochet-3d.js +2 -3
  42. package/dist/coordinators/boundary-ricochet.js +2 -3
  43. package/dist/coordinators/first-person-shooter.js +3 -4
  44. package/dist/coordinators/multidirectional-space-shooter.js +4 -5
  45. package/dist/coordinators/top-down-shooter.js +4 -5
  46. package/dist/core.js +6 -7
  47. package/dist/destructible-3d.js +3 -4
  48. package/dist/destructible-prebake.js +1 -2
  49. package/dist/first-person.js +6 -7
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.js +38 -39
  52. package/dist/jumper-2d.js +5 -6
  53. package/dist/jumper-3d.js +6 -7
  54. package/dist/particle-emitter/presets.d.ts +2 -2
  55. package/dist/particle-emitter/presets.js +1 -2
  56. package/dist/particle-emitter.d.ts +9 -4
  57. package/dist/particle-emitter.js +4 -5
  58. package/dist/platformer-3d.js +3 -4
  59. package/dist/ricochet-2d.js +4 -5
  60. package/dist/ricochet-3d.js +4 -5
  61. package/dist/runtime-2d.js +2 -3
  62. package/dist/runtime-pong.js +2 -3
  63. package/dist/screen-visibility.js +2 -3
  64. package/dist/screen-wrap.js +4 -5
  65. package/dist/shooter-2d.js +4 -5
  66. package/dist/spark-Dx3cJbTW.d.ts +356 -0
  67. package/dist/thruster.js +5 -6
  68. package/dist/top-down-movement.js +5 -6
  69. package/dist/world-boundary-2d.js +5 -6
  70. package/dist/world-boundary-3d.js +5 -6
  71. package/package.json +158 -159
  72. package/dist/chunk-2C3Z5GE7.js.map +0 -1
  73. package/dist/chunk-2CLT36VB.js.map +0 -1
  74. package/dist/chunk-3PYGRHAL.js.map +0 -1
  75. package/dist/chunk-4I6E6DGV.js.map +0 -1
  76. package/dist/chunk-4URF65BR.js.map +0 -1
  77. package/dist/chunk-6C6NXNEW.js.map +0 -1
  78. package/dist/chunk-ARJWUNRE.js.map +0 -1
  79. package/dist/chunk-BXP4K7RF.js.map +0 -1
  80. package/dist/chunk-DYLH6K7B.js.map +0 -1
  81. package/dist/chunk-EIWQM6U3.js.map +0 -1
  82. package/dist/chunk-EZNCCO4L.js.map +0 -1
  83. package/dist/chunk-F3KRX2V4.js.map +0 -1
  84. package/dist/chunk-FPTWVCPN.js.map +0 -1
  85. package/dist/chunk-GCNRXAKH.js.map +0 -1
  86. package/dist/chunk-GYURWCIQ.js +0 -1985
  87. package/dist/chunk-GYURWCIQ.js.map +0 -1
  88. package/dist/chunk-HZMY3TT4.js.map +0 -1
  89. package/dist/chunk-ID5QJYF5.js.map +0 -1
  90. package/dist/chunk-JAN34G6S.js.map +0 -1
  91. package/dist/chunk-K3UNLQ7W.js.map +0 -1
  92. package/dist/chunk-KDY5N6J4.js.map +0 -1
  93. package/dist/chunk-KOZUNIIE.js.map +0 -1
  94. package/dist/chunk-KS72RZHX.js.map +0 -1
  95. package/dist/chunk-LD5SMIB3.js.map +0 -1
  96. package/dist/chunk-OHCPV2NT.js.map +0 -1
  97. package/dist/chunk-OYWFPIHF.js.map +0 -1
  98. package/dist/chunk-POZER3MQ.js.map +0 -1
  99. package/dist/chunk-RTRVBEIB.js.map +0 -1
  100. package/dist/chunk-RTVRUNYR.js.map +0 -1
  101. package/dist/chunk-SS7ELMJ7.js.map +0 -1
  102. package/dist/chunk-STCCNLPC.js.map +0 -1
  103. package/dist/chunk-SVLNF434.js.map +0 -1
  104. package/dist/chunk-UYFOLI2X.js.map +0 -1
  105. package/dist/chunk-VAN4WW3F.js.map +0 -1
  106. package/dist/chunk-WOMHL23C.js.map +0 -1
  107. package/dist/chunk-WWVD5DR5.js.map +0 -1
  108. package/dist/chunk-XG2YMCJW.js.map +0 -1
  109. package/dist/chunk-XIJNE67Y.js.map +0 -1
  110. package/dist/chunk-Y6UJOUE5.js.map +0 -1
  111. package/dist/chunk-YUO6SKJD.js.map +0 -1
  112. package/dist/cooldown.js.map +0 -1
  113. package/dist/coordinators/boundary-ricochet-3d.js.map +0 -1
  114. package/dist/coordinators/boundary-ricochet.js.map +0 -1
  115. package/dist/coordinators/first-person-shooter.js.map +0 -1
  116. package/dist/coordinators/multidirectional-space-shooter.js.map +0 -1
  117. package/dist/coordinators/top-down-shooter.js.map +0 -1
  118. package/dist/core.js.map +0 -1
  119. package/dist/destructible-3d.js.map +0 -1
  120. package/dist/destructible-prebake.js.map +0 -1
  121. package/dist/first-person.js.map +0 -1
  122. package/dist/index.js.map +0 -1
  123. package/dist/jumper-2d.js.map +0 -1
  124. package/dist/jumper-3d.js.map +0 -1
  125. package/dist/particle-emitter/presets.js.map +0 -1
  126. package/dist/particle-emitter.js.map +0 -1
  127. package/dist/platformer-3d.js.map +0 -1
  128. package/dist/ricochet-2d.js.map +0 -1
  129. package/dist/ricochet-3d.js.map +0 -1
  130. package/dist/runtime-2d.js.map +0 -1
  131. package/dist/runtime-pong.js.map +0 -1
  132. package/dist/screen-visibility.js.map +0 -1
  133. package/dist/screen-wrap.js.map +0 -1
  134. package/dist/shooter-2d.js.map +0 -1
  135. package/dist/spark-DDlIg1nM.d.ts +0 -148
  136. package/dist/thruster.js.map +0 -1
  137. package/dist/top-down-movement.js.map +0 -1
  138. package/dist/world-boundary-2d.js.map +0 -1
  139. package/dist/world-boundary-3d.js.map +0 -1
@@ -1,10 +1,9 @@
1
1
  import {
2
2
  ScreenVisibilityBehavior,
3
3
  ScreenVisibilityFSM
4
- } from "./chunk-WOMHL23C.js";
5
- import "./chunk-EZNCCO4L.js";
4
+ } from "./chunk-ERS6SNA5.js";
5
+ import "./chunk-YDLO5M7S.js";
6
6
  export {
7
7
  ScreenVisibilityBehavior,
8
8
  ScreenVisibilityFSM
9
9
  };
10
- //# sourceMappingURL=screen-visibility.js.map
@@ -3,14 +3,13 @@ import {
3
3
  ScreenWrapEvent,
4
4
  ScreenWrapFSM,
5
5
  ScreenWrapState
6
- } from "./chunk-XIJNE67Y.js";
7
- import "./chunk-KDY5N6J4.js";
8
- import "./chunk-4URF65BR.js";
9
- import "./chunk-EZNCCO4L.js";
6
+ } from "./chunk-D53GNZXP.js";
7
+ import "./chunk-ZHBD65AZ.js";
8
+ import "./chunk-RER2IDPW.js";
9
+ import "./chunk-YDLO5M7S.js";
10
10
  export {
11
11
  ScreenWrapBehavior,
12
12
  ScreenWrapEvent,
13
13
  ScreenWrapFSM,
14
14
  ScreenWrapState
15
15
  };
16
- //# sourceMappingURL=screen-wrap.js.map
@@ -1,12 +1,11 @@
1
1
  import {
2
2
  Shooter2DBehavior,
3
3
  createShooter2DStateComponent
4
- } from "./chunk-STCCNLPC.js";
5
- import "./chunk-ID5QJYF5.js";
6
- import "./chunk-WWVD5DR5.js";
7
- import "./chunk-EZNCCO4L.js";
4
+ } from "./chunk-L76JG73P.js";
5
+ import "./chunk-7U4WFBWM.js";
6
+ import "./chunk-RHW3IDQX.js";
7
+ import "./chunk-YDLO5M7S.js";
8
8
  export {
9
9
  Shooter2DBehavior,
10
10
  createShooter2DStateComponent
11
11
  };
12
- //# sourceMappingURL=shooter-2d.js.map
@@ -0,0 +1,356 @@
1
+ import { Texture, Blending, ColorRepresentation } from 'three';
2
+ import * as THREE from 'three/webgpu';
3
+
4
+ /**
5
+ * GPU particle engine configuration types.
6
+ *
7
+ * Ported/adapted from the `threeparticles` project (MIT) — a WebGPU/TSL
8
+ * particle system — to replace the previous three.quarks backend. Editor-only
9
+ * export types from the original are omitted.
10
+ */
11
+ /** Color stop definition for gradient textures. */
12
+ interface ColorStop$1 {
13
+ /** CSS color string (hex, rgb, named color, etc.) */
14
+ color: string;
15
+ /** Position in gradient from 0 to 1 */
16
+ stop: number;
17
+ }
18
+ /** Available easing function identifiers. */
19
+ type EaseFunction = 'easeLinear' | 'easeInPower1' | 'easeOutPower1' | 'easeInOutPower1' | 'easeInPower2' | 'easeOutPower2' | 'easeInOutPower2' | 'easeInPower3' | 'easeOutPower3' | 'easeInOutPower3' | 'easeInPower4' | 'easeOutPower4' | 'easeInOutPower4' | 'easeInQuad' | 'easeOutQuad' | 'easeInOutQuad' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic' | 'easeInQuart' | 'easeOutQuart' | 'easeInOutQuart' | 'easeInQuint' | 'easeOutQuint' | 'easeInOutQuint' | 'easeInSine' | 'easeOutSine' | 'easeInOutSine' | 'easeInExpo' | 'easeOutExpo' | 'easeInOutExpo' | 'easeInCirc' | 'easeOutCirc' | 'easeInOutCirc' | 'easeInElastic' | 'easeOutElastic' | 'easeInOutElastic' | 'easeInBack' | 'easeOutBack' | 'easeInOutBack';
20
+ /** Particle shape rendering modes. */
21
+ declare enum AppearanceMode {
22
+ /** Square/quad particles */
23
+ Square = 0,
24
+ /** Circular particles with soft edges */
25
+ Circular = 1
26
+ }
27
+ /** Configuration for particle visual appearance and behavior. */
28
+ interface ParticleSettings {
29
+ /** Maximum number of particles in the system */
30
+ count: number;
31
+ /** Color intensity multiplier (1.0 = normal) */
32
+ intensity: number;
33
+ /** Size fade range [start, end] as progress values (0-1) */
34
+ fadeSize: [min: number, max: number];
35
+ /** Alpha fade range [start, end] as progress values (0-1) */
36
+ fadeAlpha: [min: number, max: number];
37
+ /** Alpha map morph range [start, end] as progress values (0-1) */
38
+ fadeAlphaMap: [min: number, max: number];
39
+ /** World-space gravity force [x, y, z] */
40
+ gravity: [x: number, y: number, z: number];
41
+ /** Alpha map textures for particle start state */
42
+ alphaMapsStart?: THREE.Texture[];
43
+ /** Alpha map textures for particle end state */
44
+ alphaMapsEnd?: THREE.Texture[];
45
+ /** Color gradient definitions per row */
46
+ colors: ColorStop$1[][];
47
+ /** Particle shape mode */
48
+ appearance: AppearanceMode;
49
+ /** Easing function for particle animation */
50
+ easeFunction: EaseFunction;
51
+ }
52
+ /** Configuration for WebGPU rendering settings. */
53
+ interface RenderSettings {
54
+ /** Size of each alpha map slot in the texture atlas (pixels) */
55
+ alphaMapSize: number;
56
+ /** Texture filtering mode for alpha maps */
57
+ alphaMapFilter: THREE.MagnificationTextureFilter;
58
+ /** Enable frustum culling for the particle mesh */
59
+ frustumCulled: boolean;
60
+ /** Blending mode for particle rendering */
61
+ blendingMode: THREE.Blending;
62
+ /** Which side of faces to render */
63
+ side: THREE.Side;
64
+ /** Enable depth testing */
65
+ depthTest: boolean;
66
+ }
67
+ /** Configuration for particle emission behavior. */
68
+ interface EmitterSettings {
69
+ /** Total duration of emission in seconds */
70
+ duration: number;
71
+ /** Number of particles to emit per cycle */
72
+ rate: number;
73
+ /** Emission timing mode: "time" spreads over duration, "burst" emits all at once */
74
+ spawnMode: 'time' | 'burst';
75
+ /** Static position blend (0 = dynamic, 1 = static at spawn position) */
76
+ static: number;
77
+ /** Apply world up-right correction during animation */
78
+ worldUpRight: boolean;
79
+ /** Loop the emission continuously */
80
+ loop: boolean;
81
+ /** Delay before first emission in seconds */
82
+ delay: number;
83
+ /** Show debug wireframe mesh at emitter position */
84
+ debug: boolean;
85
+ /** Particle lifetime range [min, max] in seconds */
86
+ lifetime: [min: number, max: number];
87
+ /** Speed range [min, max] in units per second */
88
+ speed: [min: number, max: number];
89
+ /** Size range [min, max] */
90
+ size: [min: number, max: number];
91
+ /** Minimum spawn position offset [x, y, z] */
92
+ startPositionMin: [x: number, y: number, z: number];
93
+ /** Maximum spawn position offset [x, y, z] */
94
+ startPositionMax: [x: number, y: number, z: number];
95
+ /** Minimum initial rotation [x, y, z] normalized -1 to 1 */
96
+ startRotationMin: [x: number, y: number, z: number];
97
+ /** Maximum initial rotation [x, y, z] normalized -1 to 1 */
98
+ startRotationMax: [x: number, y: number, z: number];
99
+ /** Minimum rotation speed [x, y, z] in radians per second */
100
+ rotationSpeedMin: [x: number, y: number, z: number];
101
+ /** Maximum rotation speed [x, y, z] in radians per second */
102
+ rotationSpeedMax: [x: number, y: number, z: number];
103
+ /** Minimum emission direction [x, y, z] */
104
+ directionMin: [x: number, y: number, z: number];
105
+ /** Maximum emission direction [x, y, z] */
106
+ directionMax: [x: number, y: number, z: number];
107
+ }
108
+ /**
109
+ * Complete particle system configuration. All sections are deep-partial at the
110
+ * authoring boundary; the {@link Particles} constructor fills defaults.
111
+ */
112
+ interface ParticlesConfig {
113
+ particles: Partial<ParticleSettings> & Pick<ParticleSettings, 'count'>;
114
+ render?: Partial<RenderSettings>;
115
+ emitter?: Partial<EmitterSettings>;
116
+ }
117
+
118
+ /**
119
+ * WebGPU-accelerated particle system using Three.js TSL.
120
+ *
121
+ * Ported/adapted from the `threeparticles` project (MIT). The per-particle
122
+ * simulation (position/rotation/scale/color over life) runs in the node
123
+ * material on the GPU; emission is done on the CPU in `update(delta)`. No
124
+ * renderer/compute access is required, so it ticks from the behavior system
125
+ * exactly like the previous three.quarks `BatchedRenderer` node did.
126
+ *
127
+ * @module
128
+ */
129
+
130
+ declare class Particles extends THREE.Object3D {
131
+ private mesh;
132
+ /** Base object for positioning the emitter. */
133
+ base: THREE.Object3D;
134
+ private debugMesh;
135
+ private material;
136
+ private config;
137
+ private uniforms;
138
+ private buffers;
139
+ private attributes;
140
+ private easingIndex;
141
+ private alphaMapCount;
142
+ private emitted;
143
+ private cursor;
144
+ /** Whether the particle system is currently running. */
145
+ running: boolean;
146
+ constructor(config: ParticlesConfig, geometry?: THREE.BufferGeometry);
147
+ private createMaterial;
148
+ /** Starts the particle system from the beginning. */
149
+ start(): void;
150
+ /** Restarts (alias for start). */
151
+ restart(): void;
152
+ /** Pauses the particle system, keeping current state. */
153
+ pause(): void;
154
+ /** Resumes a paused system without resetting its state. */
155
+ resume(): void;
156
+ /** Stops the particle system and hides it. */
157
+ stop(): void;
158
+ /** Whether emission loops continuously. */
159
+ get looping(): boolean;
160
+ /**
161
+ * For non-looping systems, whether all emitted particles have aged past
162
+ * their maximum lifetime (so the effect is visually finished).
163
+ */
164
+ isComplete(): boolean;
165
+ /** Updates the particle system. Call each frame. */
166
+ update(delta: number): void;
167
+ private _compute;
168
+ private _update;
169
+ /** Updates configuration at runtime (shallow per-section merge). */
170
+ updateConfig(config: Partial<ParticlesConfig>): void;
171
+ /** Disposes of all resources used by the particle system. */
172
+ dispose(): void;
173
+ }
174
+
175
+ /**
176
+ * Builds {@link ParticlesConfig} objects for the WebGPU/TSL particle engine
177
+ * ({@link Particles}) from a high-level "semantic" description.
178
+ *
179
+ * This module previously targeted the CPU-simulated `three.quarks`
180
+ * `ParticleSystem`. The authoring surface (semantic presets, magic modifiers,
181
+ * option names) is preserved; the output now drives the GPU engine instead.
182
+ *
183
+ * ## three.quarks feature-parity notes
184
+ *
185
+ * The GPU engine simulates each particle from a small set of per-instance
186
+ * values, so several three.quarks behaviors are approximated or unsupported:
187
+ *
188
+ * - `ColorOverLife` -> sampled gradient (`particles.colors`). Per-stop alpha is
189
+ * collapsed into a single fade-in/fade-out window (`fadeAlpha`).
190
+ * - `SizeOverLife` (bezier) -> fade-in/out window (`fadeSize`), approximated
191
+ * from the curve's endpoints.
192
+ * - `SpeedOverLife` (bezier) -> chooses an `easeFunction` (accelerate vs.
193
+ * decelerate); the exact curve is not reproduced.
194
+ * - `ForceOverLife` -> constant `gravity` (midpoint of the configured ranges).
195
+ * - `RotationOverLife` -> per-particle `rotationSpeed`.
196
+ * - Cone/Sphere emitters -> emission direction/position ranges approximating
197
+ * the shape; not an exact volumetric match.
198
+ * - `renderMode` -> only billboard is supported (sprites always face the
199
+ * camera); stretched/mesh/trail modes are ignored.
200
+ * - `Noise`, `OrbitOverLife`, sprite-sheet tiling, and trails -> not supported.
201
+ */
202
+ /** Subset of three.quarks `RenderMode` kept for preset-authoring compatibility. */
203
+ declare enum RenderMode {
204
+ BillBoard = 0,
205
+ StretchedBillBoard = 1,
206
+ HorizontalBillBoard = 2,
207
+ VerticalBillBoard = 3,
208
+ Mesh = 4,
209
+ Trail = 5
210
+ }
211
+ /** A particle effect factory returning a fresh {@link Particles} object. */
212
+ interface ParticleEffectDefinition {
213
+ create(): Particles;
214
+ }
215
+ interface ParticlePresetMaterialOptions {
216
+ texture?: Texture;
217
+ opacity?: number;
218
+ depthWrite?: boolean;
219
+ alphaTest?: number;
220
+ blending?: Blending;
221
+ uTileCount?: number;
222
+ vTileCount?: number;
223
+ blendTiles?: boolean;
224
+ }
225
+ type NumericRange = number | readonly [number, number];
226
+ type CurvePoints = readonly [number, number, number, number];
227
+ type ColorStop = readonly [ColorRepresentation, number];
228
+ type AlphaStop = readonly [number, number];
229
+ interface ParticleColorOverLifeConfig {
230
+ colors: readonly ColorStop[];
231
+ alpha: readonly AlphaStop[];
232
+ }
233
+ interface ParticleForceOverLifeConfig {
234
+ x?: NumericRange;
235
+ y?: NumericRange;
236
+ z?: NumericRange;
237
+ }
238
+ interface ParticleNoiseConfig {
239
+ frequency: NumericRange;
240
+ power: NumericRange;
241
+ positionAmount?: NumericRange;
242
+ rotationAmount?: NumericRange;
243
+ }
244
+ interface ParticleOrbitConfig {
245
+ speed: NumericRange;
246
+ axis?: readonly [number, number, number];
247
+ }
248
+ interface ParticleBehaviorOverrides {
249
+ colorOverLife?: ParticleColorOverLifeConfig | null;
250
+ sizeOverLife?: CurvePoints | null;
251
+ speedOverLife?: CurvePoints | null;
252
+ rotationOverLife?: NumericRange | null;
253
+ forceOverLife?: Partial<ParticleForceOverLifeConfig> | null;
254
+ noise?: Partial<ParticleNoiseConfig> | null;
255
+ orbitOverLife?: Partial<ParticleOrbitConfig> | null;
256
+ }
257
+ type ParticleShapeConfig = {
258
+ type: 'point';
259
+ } | {
260
+ type: 'cone';
261
+ radius?: number;
262
+ thickness?: number;
263
+ angle?: number;
264
+ speed?: NumericRange;
265
+ } | {
266
+ type: 'sphere';
267
+ radius?: number;
268
+ thickness?: number;
269
+ speed?: NumericRange;
270
+ };
271
+ type ParticleMagicAlignment = 'arcane' | 'holy' | 'corrupted' | 'nature' | 'void' | 'psychic';
272
+ type ParticleMagicTemperament = 'calm' | 'ominous' | 'playful' | 'regal' | 'predatory';
273
+ type ParticleMagicAgency = 'passive' | 'reactive' | 'seeking' | 'sentient-feeling';
274
+ type ParticleMagicOrder = 'geometric' | 'organic' | 'chaotic';
275
+ type ParticleMagicRealityEffect = 'warping' | 'illuminating' | 'binding' | 'decaying' | 'healing';
276
+ interface ParticleMagicModifierOptions {
277
+ alignment: ParticleMagicAlignment;
278
+ temperament?: ParticleMagicTemperament;
279
+ agency?: ParticleMagicAgency;
280
+ order?: ParticleMagicOrder;
281
+ realityEffect?: ParticleMagicRealityEffect;
282
+ intensity?: number;
283
+ }
284
+ type ParticleMagicModifierInput = ParticleMagicAlignment | ParticleMagicModifierOptions;
285
+ interface SemanticParticlePresetOptions extends ParticlePresetMaterialOptions {
286
+ behaviors?: ParticleBehaviorOverrides;
287
+ color?: ColorRepresentation;
288
+ count?: number;
289
+ duration?: number;
290
+ emissionRate?: number;
291
+ life?: NumericRange;
292
+ looping?: boolean;
293
+ magic?: ParticleMagicModifierInput;
294
+ renderMode?: RenderMode;
295
+ rendererEmitterSettings?: Record<string, unknown>;
296
+ rotation?: NumericRange;
297
+ shape?: ParticleShapeConfig;
298
+ size?: NumericRange;
299
+ speed?: NumericRange;
300
+ worldSpace?: boolean;
301
+ }
302
+ declare function particleEffect(create: () => Particles): ParticleEffectDefinition;
303
+
304
+ declare function arcane(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
305
+
306
+ declare function corrupted(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
307
+
308
+ declare function holy(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
309
+
310
+ declare function nature(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
311
+
312
+ declare function psychic(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
313
+
314
+ declare function voidMagic(options?: Omit<ParticleMagicModifierOptions, 'alignment'>): ParticleMagicModifierOptions;
315
+
316
+ declare function arc(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
317
+
318
+ declare function pulse(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
319
+
320
+ declare function spark$1(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
321
+
322
+ declare function storm(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
323
+
324
+ declare function surge(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
325
+
326
+ declare function haze(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
327
+
328
+ declare function miasma(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
329
+
330
+ declare function plume(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
331
+
332
+ declare function smoke(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
333
+
334
+ declare function vapor(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
335
+
336
+ declare function drizzle(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
337
+
338
+ declare function mist(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
339
+
340
+ declare function splash(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
341
+
342
+ declare function spray(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
343
+
344
+ declare function torrent(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
345
+
346
+ declare function blaze(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
347
+
348
+ declare function ember(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
349
+
350
+ declare function flamelet(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
351
+
352
+ declare function smolder(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
353
+
354
+ declare function spark(options?: SemanticParticlePresetOptions): ParticleEffectDefinition;
355
+
356
+ export { smolder as A, spark$1 as B, spark as C, splash as D, spray as E, storm as F, surge as G, torrent as H, vapor as I, voidMagic as J, type ParticleEffectDefinition as P, type SemanticParticlePresetOptions as S, type ParticleMagicAgency as a, type ParticleMagicAlignment as b, type ParticleMagicModifierInput as c, type ParticleMagicModifierOptions as d, type ParticleMagicOrder as e, type ParticleMagicRealityEffect as f, type ParticleMagicTemperament as g, type ParticlePresetMaterialOptions as h, Particles as i, arc as j, arcane as k, blaze as l, corrupted as m, drizzle as n, ember as o, flamelet as p, haze as q, holy as r, miasma as s, mist as t, nature as u, particleEffect as v, plume as w, psychic as x, pulse as y, smoke as z };
package/dist/thruster.js CHANGED
@@ -4,15 +4,15 @@ import {
4
4
  ThrusterFSM,
5
5
  ThrusterMovementBehavior,
6
6
  ThrusterState
7
- } from "./chunk-2CLT36VB.js";
7
+ } from "./chunk-BC3IJYS7.js";
8
8
  import {
9
9
  createThrusterInputComponent,
10
10
  createThrusterMovementComponent,
11
11
  createThrusterStateComponent
12
- } from "./chunk-KS72RZHX.js";
13
- import "./chunk-ID5QJYF5.js";
14
- import "./chunk-4URF65BR.js";
15
- import "./chunk-EZNCCO4L.js";
12
+ } from "./chunk-2HLZBWGD.js";
13
+ import "./chunk-7U4WFBWM.js";
14
+ import "./chunk-RER2IDPW.js";
15
+ import "./chunk-YDLO5M7S.js";
16
16
  export {
17
17
  ThrusterBehavior,
18
18
  ThrusterEvent,
@@ -23,4 +23,3 @@ export {
23
23
  createThrusterMovementComponent,
24
24
  createThrusterStateComponent
25
25
  };
26
- //# sourceMappingURL=thruster.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  TopDownMovementBehavior,
3
3
  TopDownMovementRuntimeBehavior
4
- } from "./chunk-OYWFPIHF.js";
4
+ } from "./chunk-HIBJDA5Z.js";
5
5
  import {
6
6
  createTopDownMovementComponent,
7
7
  createTopDownMovementInputComponent,
8
8
  createTopDownMovementStateComponent
9
- } from "./chunk-EIWQM6U3.js";
10
- import "./chunk-ID5QJYF5.js";
11
- import "./chunk-Y6UJOUE5.js";
12
- import "./chunk-EZNCCO4L.js";
9
+ } from "./chunk-2HKY6WF7.js";
10
+ import "./chunk-7U4WFBWM.js";
11
+ import "./chunk-YYJP62QD.js";
12
+ import "./chunk-YDLO5M7S.js";
13
13
  export {
14
14
  TopDownMovementBehavior,
15
15
  TopDownMovementRuntimeBehavior,
@@ -17,4 +17,3 @@ export {
17
17
  createTopDownMovementInputComponent,
18
18
  createTopDownMovementStateComponent
19
19
  };
20
- //# sourceMappingURL=top-down-movement.js.map
@@ -5,11 +5,11 @@ import {
5
5
  WorldBoundary2DState,
6
6
  computeWorldBoundary2DHits,
7
7
  hasAnyWorldBoundary2DHit
8
- } from "./chunk-XG2YMCJW.js";
9
- import "./chunk-KDY5N6J4.js";
10
- import "./chunk-Y6UJOUE5.js";
11
- import "./chunk-4URF65BR.js";
12
- import "./chunk-EZNCCO4L.js";
8
+ } from "./chunk-E4HTCQPK.js";
9
+ import "./chunk-ZHBD65AZ.js";
10
+ import "./chunk-YYJP62QD.js";
11
+ import "./chunk-RER2IDPW.js";
12
+ import "./chunk-YDLO5M7S.js";
13
13
  export {
14
14
  WorldBoundary2DBehavior,
15
15
  WorldBoundary2DEvent,
@@ -18,4 +18,3 @@ export {
18
18
  computeWorldBoundary2DHits,
19
19
  hasAnyWorldBoundary2DHit
20
20
  };
21
- //# sourceMappingURL=world-boundary-2d.js.map
@@ -5,11 +5,11 @@ import {
5
5
  WorldBoundary3DState,
6
6
  computeWorldBoundary3DHits,
7
7
  hasAnyWorldBoundary3DHit
8
- } from "./chunk-4I6E6DGV.js";
9
- import "./chunk-OHCPV2NT.js";
10
- import "./chunk-Y6UJOUE5.js";
11
- import "./chunk-4URF65BR.js";
12
- import "./chunk-EZNCCO4L.js";
8
+ } from "./chunk-6UMC6BB5.js";
9
+ import "./chunk-WHKPWIQO.js";
10
+ import "./chunk-YYJP62QD.js";
11
+ import "./chunk-RER2IDPW.js";
12
+ import "./chunk-YDLO5M7S.js";
13
13
  export {
14
14
  WorldBoundary3DBehavior,
15
15
  WorldBoundary3DEvent,
@@ -18,4 +18,3 @@ export {
18
18
  computeWorldBoundary3DHits,
19
19
  hasAnyWorldBoundary3DHit
20
20
  };
21
- //# sourceMappingURL=world-boundary-3d.js.map