@holoscript/engine 6.0.3 → 6.0.4
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/dist/AutoMesher-CK47F6AV.js +17 -0
- package/dist/GPUBuffers-2LHBCD7X.js +9 -0
- package/dist/WebGPUContext-TNEUYU2Y.js +11 -0
- package/dist/animation/index.cjs +38 -38
- package/dist/animation/index.d.cts +1 -1
- package/dist/animation/index.d.ts +1 -1
- package/dist/animation/index.js +1 -1
- package/dist/audio/index.cjs +16 -6
- package/dist/audio/index.d.cts +1 -1
- package/dist/audio/index.d.ts +1 -1
- package/dist/audio/index.js +1 -1
- package/dist/camera/index.cjs +23 -23
- package/dist/camera/index.d.cts +1 -1
- package/dist/camera/index.d.ts +1 -1
- package/dist/camera/index.js +1 -1
- package/dist/character/index.cjs +6 -4
- package/dist/character/index.js +1 -1
- package/dist/choreography/index.cjs +1194 -0
- package/dist/choreography/index.d.cts +687 -0
- package/dist/choreography/index.d.ts +687 -0
- package/dist/choreography/index.js +1156 -0
- package/dist/chunk-2CSNRI2N.js +217 -0
- package/dist/chunk-33T2WINR.js +266 -0
- package/dist/chunk-35R73OFM.js +1257 -0
- package/dist/chunk-4MMDSUNP.js +1256 -0
- package/dist/chunk-5V6HOU72.js +319 -0
- package/dist/chunk-6QOP6PYF.js +1038 -0
- package/dist/chunk-7KMJVHIL.js +8944 -0
- package/dist/chunk-7VPUC62U.js +1106 -0
- package/dist/chunk-A2Y6RCAT.js +1878 -0
- package/dist/chunk-AHM42MK6.js +8944 -0
- package/dist/chunk-BL7IDTHE.js +218 -0
- package/dist/chunk-CITOMSWL.js +10462 -0
- package/dist/chunk-CXDPKW2K.js +8944 -0
- package/dist/chunk-CXZPLD4S.js +223 -0
- package/dist/chunk-CZYJE7IH.js +5169 -0
- package/dist/chunk-D2OP7YC7.js +6325 -0
- package/dist/chunk-EDRVQHUU.js +1544 -0
- package/dist/chunk-EJSLOOW2.js +3589 -0
- package/dist/chunk-F53SFGW5.js +1878 -0
- package/dist/chunk-HCFPELPY.js +919 -0
- package/dist/chunk-HNEE36PY.js +93 -0
- package/dist/chunk-HYXNV36F.js +1256 -0
- package/dist/chunk-IB7KHVFY.js +821 -0
- package/dist/chunk-IBBO7YYG.js +690 -0
- package/dist/chunk-ILIBGINU.js +5470 -0
- package/dist/chunk-IS4MHLKN.js +5479 -0
- package/dist/chunk-JT2PFKWD.js +5479 -0
- package/dist/chunk-K4CUB4NY.js +1038 -0
- package/dist/chunk-KATDQXRJ.js +10462 -0
- package/dist/chunk-KBQE6ZFJ.js +8944 -0
- package/dist/chunk-KBVD5K7E.js +560 -0
- package/dist/chunk-KCDPVQRY.js +4088 -0
- package/dist/chunk-KN4QJPKN.js +8944 -0
- package/dist/chunk-KWJ3ROSI.js +8944 -0
- package/dist/chunk-L45VF6DD.js +919 -0
- package/dist/chunk-LY4T37YK.js +307 -0
- package/dist/chunk-MDN5WZXA.js +1544 -0
- package/dist/chunk-MGCDP6VU.js +928 -0
- package/dist/chunk-NCX7X6G2.js +8681 -0
- package/dist/chunk-OF54BPVD.js +913 -0
- package/dist/chunk-OWSN2Q3Q.js +690 -0
- package/dist/chunk-PRRB5TTA.js +406 -0
- package/dist/chunk-PXWVQF76.js +4086 -0
- package/dist/chunk-PYCOIDT2.js +812 -0
- package/dist/chunk-PZCSADOV.js +928 -0
- package/dist/chunk-Q2XBVS2K.js +1038 -0
- package/dist/chunk-QDZRXWN5.js +1776 -0
- package/dist/chunk-RNWOZ6WQ.js +913 -0
- package/dist/chunk-ROLFT4CJ.js +1693 -0
- package/dist/chunk-SLTJRZ2N.js +266 -0
- package/dist/chunk-SRUS5XSU.js +4088 -0
- package/dist/chunk-TKCA3WZ5.js +5409 -0
- package/dist/chunk-TNRMXYI2.js +1650 -0
- package/dist/chunk-TQB3GJGM.js +9763 -0
- package/dist/chunk-TUFGXG6K.js +510 -0
- package/dist/chunk-U6KMTGQJ.js +632 -0
- package/dist/chunk-VMGJQST6.js +8681 -0
- package/dist/chunk-X4F4TCG4.js +5470 -0
- package/dist/chunk-ZIFROE75.js +1544 -0
- package/dist/chunk-ZIJQYHSQ.js +1204 -0
- package/dist/combat/index.cjs +4 -4
- package/dist/combat/index.d.cts +1 -1
- package/dist/combat/index.d.ts +1 -1
- package/dist/combat/index.js +1 -1
- package/dist/ecs/index.cjs +1 -1
- package/dist/ecs/index.js +1 -1
- package/dist/environment/index.cjs +14 -14
- package/dist/environment/index.d.cts +1 -1
- package/dist/environment/index.d.ts +1 -1
- package/dist/environment/index.js +1 -1
- package/dist/gpu/index.cjs +4810 -0
- package/dist/gpu/index.js +3714 -0
- package/dist/hologram/index.cjs +27 -1
- package/dist/hologram/index.js +1 -1
- package/dist/index-B2PIsAmR.d.cts +2180 -0
- package/dist/index-B2PIsAmR.d.ts +2180 -0
- package/dist/index-BHySEPX7.d.cts +2921 -0
- package/dist/index-BJV21zuy.d.cts +341 -0
- package/dist/index-BJV21zuy.d.ts +341 -0
- package/dist/index-BQutTphC.d.cts +790 -0
- package/dist/index-ByIq2XrS.d.cts +3910 -0
- package/dist/index-BysHjDSO.d.cts +224 -0
- package/dist/index-BysHjDSO.d.ts +224 -0
- package/dist/index-CKwAJGck.d.ts +455 -0
- package/dist/index-CUl3QstQ.d.cts +3006 -0
- package/dist/index-CUl3QstQ.d.ts +3006 -0
- package/dist/index-CmYtNiI-.d.cts +953 -0
- package/dist/index-CmYtNiI-.d.ts +953 -0
- package/dist/index-CnRzWxi_.d.cts +522 -0
- package/dist/index-CnRzWxi_.d.ts +522 -0
- package/dist/index-CwRWbSC7.d.ts +2921 -0
- package/dist/index-CxKIBstO.d.ts +790 -0
- package/dist/index-DJ6-R8vh.d.cts +455 -0
- package/dist/index-DQKisbcI.d.cts +4968 -0
- package/dist/index-DQKisbcI.d.ts +4968 -0
- package/dist/index-DRT2zJez.d.ts +3910 -0
- package/dist/index-DfNLiAka.d.cts +192 -0
- package/dist/index-DfNLiAka.d.ts +192 -0
- package/dist/index-nMvkoRm8.d.cts +405 -0
- package/dist/index-nMvkoRm8.d.ts +405 -0
- package/dist/index-s9yOFU37.d.cts +604 -0
- package/dist/index-s9yOFU37.d.ts +604 -0
- package/dist/index.cjs +22966 -6960
- package/dist/index.d.cts +864 -20
- package/dist/index.d.ts +864 -20
- package/dist/index.js +3062 -48
- package/dist/input/index.cjs +1 -1
- package/dist/input/index.js +1 -1
- package/dist/orbital/index.cjs +3 -3
- package/dist/orbital/index.d.cts +1 -1
- package/dist/orbital/index.d.ts +1 -1
- package/dist/orbital/index.js +1 -1
- package/dist/particles/index.cjs +16 -16
- package/dist/particles/index.d.cts +1 -1
- package/dist/particles/index.d.ts +1 -1
- package/dist/particles/index.js +1 -1
- package/dist/physics/index.cjs +2377 -21
- package/dist/physics/index.d.cts +1 -1
- package/dist/physics/index.d.ts +1 -1
- package/dist/physics/index.js +35 -1
- package/dist/postfx/index.cjs +3491 -0
- package/dist/postfx/index.js +93 -0
- package/dist/procedural/index.cjs +1 -1
- package/dist/procedural/index.js +1 -1
- package/dist/puppeteer-5VF6KDVO.js +52197 -0
- package/dist/puppeteer-IZVZ3SG4.js +52197 -0
- package/dist/rendering/index.cjs +33 -32
- package/dist/rendering/index.d.cts +1 -1
- package/dist/rendering/index.d.ts +1 -1
- package/dist/rendering/index.js +8 -6
- package/dist/runtime/index.cjs +23 -13
- package/dist/runtime/index.d.cts +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +8 -6
- package/dist/runtime/protocols/index.cjs +349 -0
- package/dist/runtime/protocols/index.js +15 -0
- package/dist/scene/index.cjs +8 -8
- package/dist/scene/index.d.cts +1 -1
- package/dist/scene/index.d.ts +1 -1
- package/dist/scene/index.js +1 -1
- package/dist/shader/index.cjs +3087 -0
- package/dist/shader/index.js +3044 -0
- package/dist/simulation/index.cjs +10680 -0
- package/dist/simulation/index.d.cts +3 -0
- package/dist/simulation/index.d.ts +3 -0
- package/dist/simulation/index.js +307 -0
- package/dist/spatial/index.cjs +2443 -0
- package/dist/spatial/index.d.cts +1545 -0
- package/dist/spatial/index.d.ts +1545 -0
- package/dist/spatial/index.js +2400 -0
- package/dist/terrain/index.cjs +1 -1
- package/dist/terrain/index.d.cts +1 -1
- package/dist/terrain/index.d.ts +1 -1
- package/dist/terrain/index.js +1 -1
- package/dist/transformers.node-4NKAPD5U.js +45620 -0
- package/dist/vm/index.cjs +7 -8
- package/dist/vm/index.d.cts +1 -1
- package/dist/vm/index.d.ts +1 -1
- package/dist/vm/index.js +1 -1
- package/dist/vm-bridge/index.cjs +2 -2
- package/dist/vm-bridge/index.d.cts +2 -2
- package/dist/vm-bridge/index.d.ts +2 -2
- package/dist/vm-bridge/index.js +1 -1
- package/dist/vr/index.cjs +6 -6
- package/dist/vr/index.js +1 -1
- package/dist/world/index.cjs +3 -3
- package/dist/world/index.d.cts +1 -1
- package/dist/world/index.d.ts +1 -1
- package/dist/world/index.js +1 -1
- package/package.json +53 -21
- package/LICENSE +0 -21
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ParticleSystem.ts
|
|
3
|
+
*
|
|
4
|
+
* High-performance particle system with object pooling.
|
|
5
|
+
* Manages particle lifecycle: birth, update, death, recycling.
|
|
6
|
+
*/
|
|
7
|
+
interface Color4 {
|
|
8
|
+
r: number;
|
|
9
|
+
g: number;
|
|
10
|
+
b: number;
|
|
11
|
+
a: number;
|
|
12
|
+
}
|
|
13
|
+
interface Particle$2 {
|
|
14
|
+
alive: boolean;
|
|
15
|
+
age: number;
|
|
16
|
+
lifetime: number;
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
z: number;
|
|
20
|
+
vx: number;
|
|
21
|
+
vy: number;
|
|
22
|
+
vz: number;
|
|
23
|
+
ax: number;
|
|
24
|
+
ay: number;
|
|
25
|
+
az: number;
|
|
26
|
+
size: number;
|
|
27
|
+
sizeStart: number;
|
|
28
|
+
sizeEnd: number;
|
|
29
|
+
color: Color4;
|
|
30
|
+
colorStart: Color4;
|
|
31
|
+
colorEnd: Color4;
|
|
32
|
+
rotation: number;
|
|
33
|
+
rotationSpeed: number;
|
|
34
|
+
}
|
|
35
|
+
type EmitterShape = 'point' | 'sphere' | 'cone' | 'box';
|
|
36
|
+
interface EmitterConfig$1 {
|
|
37
|
+
/** Shape of the emission volume */
|
|
38
|
+
shape: EmitterShape;
|
|
39
|
+
/** Particles emitted per second */
|
|
40
|
+
rate: number;
|
|
41
|
+
/** Burst: emit N particles instantly */
|
|
42
|
+
burst?: number;
|
|
43
|
+
/** Max active particles */
|
|
44
|
+
maxParticles: number;
|
|
45
|
+
/** Particle lifetime range [min, max] seconds */
|
|
46
|
+
lifetime: [number, number];
|
|
47
|
+
/** Initial speed range [min, max] */
|
|
48
|
+
speed: [number, number];
|
|
49
|
+
/** Initial size range [min, max] */
|
|
50
|
+
size: [number, number];
|
|
51
|
+
/** End size range [min, max] */
|
|
52
|
+
sizeEnd: [number, number];
|
|
53
|
+
/** Start color */
|
|
54
|
+
colorStart: Color4;
|
|
55
|
+
/** End color (interpolates over lifetime) */
|
|
56
|
+
colorEnd: Color4;
|
|
57
|
+
/** Emitter world position */
|
|
58
|
+
position: [number, number, number];
|
|
59
|
+
/** For cone shape: half-angle in radians */
|
|
60
|
+
coneAngle?: number;
|
|
61
|
+
/** For sphere/box: radius/extents */
|
|
62
|
+
radius?: number;
|
|
63
|
+
/** Rotation speed range [min, max] */
|
|
64
|
+
rotationSpeed?: [number, number];
|
|
65
|
+
/** Direction bias (normalized) */
|
|
66
|
+
direction?: {
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
z: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
declare class ParticleSystem {
|
|
73
|
+
private pool;
|
|
74
|
+
private config;
|
|
75
|
+
private emitAccumulator;
|
|
76
|
+
private activeCount;
|
|
77
|
+
private _isEmitting;
|
|
78
|
+
private totalElapsed;
|
|
79
|
+
/** External affectors applied each frame */
|
|
80
|
+
private affectors;
|
|
81
|
+
constructor(config: EmitterConfig$1);
|
|
82
|
+
private createDeadParticle;
|
|
83
|
+
/**
|
|
84
|
+
* Add an affector function that runs on each particle per update.
|
|
85
|
+
*/
|
|
86
|
+
addAffector(fn: (p: Particle$2, delta: number) => void): void;
|
|
87
|
+
/**
|
|
88
|
+
* Start/stop emitting new particles.
|
|
89
|
+
*/
|
|
90
|
+
setEmitting(emitting: boolean): void;
|
|
91
|
+
isEmitting(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Emit a burst of N particles immediately.
|
|
94
|
+
*/
|
|
95
|
+
burst(count: number): void;
|
|
96
|
+
/**
|
|
97
|
+
* Update all particles. Call every frame.
|
|
98
|
+
*/
|
|
99
|
+
update(delta: number): void;
|
|
100
|
+
private emitOne;
|
|
101
|
+
private sampleEmitterShape;
|
|
102
|
+
/**
|
|
103
|
+
* Get all alive particles (for rendering).
|
|
104
|
+
*/
|
|
105
|
+
getAliveParticles(): Particle$2[];
|
|
106
|
+
/**
|
|
107
|
+
* Get active particle count.
|
|
108
|
+
*/
|
|
109
|
+
getActiveCount(): number;
|
|
110
|
+
/**
|
|
111
|
+
* Get the config.
|
|
112
|
+
*/
|
|
113
|
+
getConfig(): EmitterConfig$1;
|
|
114
|
+
/**
|
|
115
|
+
* Update emitter position.
|
|
116
|
+
*/
|
|
117
|
+
setPosition(x: number, y: number, z: number): void;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* ParticleAffectors.ts
|
|
122
|
+
*
|
|
123
|
+
* Reusable affector functions that modify particles each frame.
|
|
124
|
+
* Plug these into ParticleSystem.addAffector().
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Gravity: Constant downward acceleration.
|
|
129
|
+
*/
|
|
130
|
+
declare function gravity(strength?: number): (p: Particle$2, delta: number) => void;
|
|
131
|
+
/**
|
|
132
|
+
* Wind: Constant force in a direction.
|
|
133
|
+
*/
|
|
134
|
+
declare function wind(x: number, y: number, z: number): (p: Particle$2, delta: number) => void;
|
|
135
|
+
/**
|
|
136
|
+
* Turbulence: Random velocity perturbation based on pseudo-noise.
|
|
137
|
+
*/
|
|
138
|
+
declare function turbulence(strength?: number): (p: Particle$2, delta: number) => void;
|
|
139
|
+
/**
|
|
140
|
+
* Drag: Velocity damping (air resistance).
|
|
141
|
+
*/
|
|
142
|
+
declare function drag(coefficient?: number): (p: Particle$2, delta: number) => void;
|
|
143
|
+
/**
|
|
144
|
+
* Attractor: Pull particles toward a point.
|
|
145
|
+
*/
|
|
146
|
+
declare function attractor(x: number, y: number, z: number, strength?: number, minDist?: number): (p: Particle$2, delta: number) => void;
|
|
147
|
+
/**
|
|
148
|
+
* Vortex: Spin particles around an axis.
|
|
149
|
+
*/
|
|
150
|
+
declare function vortex(axisX: number, axisY: number, axisZ: number, strength?: number): (p: Particle$2, delta: number) => void;
|
|
151
|
+
/**
|
|
152
|
+
* Floor bounce: Bounce particles off a horizontal plane.
|
|
153
|
+
*/
|
|
154
|
+
declare function floorBounce(floorY?: number, bounciness?: number): (p: Particle$2, delta: number) => void;
|
|
155
|
+
/**
|
|
156
|
+
* Size oscillation: Pulse size over lifetime.
|
|
157
|
+
*/
|
|
158
|
+
declare function sizeOscillate(frequency?: number, amplitude?: number): (p: Particle$2, delta: number) => void;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* ParticlePresets.ts
|
|
162
|
+
*
|
|
163
|
+
* Ready-to-use particle emitter configurations for common visual effects.
|
|
164
|
+
*/
|
|
165
|
+
|
|
166
|
+
declare const ParticlePresets: Record<string, EmitterConfig$1>;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* ParticleAttractor.ts
|
|
170
|
+
*
|
|
171
|
+
* Point/line/plane attractors for particle systems:
|
|
172
|
+
* inverse-square falloff, orbital motion, and kill radius.
|
|
173
|
+
*
|
|
174
|
+
* @module particles
|
|
175
|
+
*/
|
|
176
|
+
type AttractorShape = 'point' | 'line' | 'plane';
|
|
177
|
+
interface Attractor {
|
|
178
|
+
id: string;
|
|
179
|
+
shape: AttractorShape;
|
|
180
|
+
position: [number, number, number];
|
|
181
|
+
direction: {
|
|
182
|
+
x: number;
|
|
183
|
+
y: number;
|
|
184
|
+
z: number;
|
|
185
|
+
};
|
|
186
|
+
strength: number;
|
|
187
|
+
radius: number;
|
|
188
|
+
killRadius: number;
|
|
189
|
+
orbit: boolean;
|
|
190
|
+
}
|
|
191
|
+
interface Particle$1 {
|
|
192
|
+
x: number;
|
|
193
|
+
y: number;
|
|
194
|
+
z: number;
|
|
195
|
+
vx: number;
|
|
196
|
+
vy: number;
|
|
197
|
+
vz: number;
|
|
198
|
+
alive: boolean;
|
|
199
|
+
}
|
|
200
|
+
declare class ParticleAttractorSystem {
|
|
201
|
+
private attractors;
|
|
202
|
+
addAttractor(a: Attractor): void;
|
|
203
|
+
removeAttractor(id: string): void;
|
|
204
|
+
apply(particles: Particle$1[], dt: number): void;
|
|
205
|
+
getAttractorCount(): number;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* ParticleEmitter.ts
|
|
210
|
+
*
|
|
211
|
+
* Particle emission system: shapes, lifetime, velocity,
|
|
212
|
+
* color/size over lifetime curves, and sub-emitters.
|
|
213
|
+
*
|
|
214
|
+
* @module particles
|
|
215
|
+
*/
|
|
216
|
+
interface IVector3 {
|
|
217
|
+
x: number;
|
|
218
|
+
y: number;
|
|
219
|
+
z: number;
|
|
220
|
+
}
|
|
221
|
+
interface IColor {
|
|
222
|
+
r: number;
|
|
223
|
+
g: number;
|
|
224
|
+
b: number;
|
|
225
|
+
a: number;
|
|
226
|
+
}
|
|
227
|
+
interface CurveKeyframe {
|
|
228
|
+
time: number;
|
|
229
|
+
value: number;
|
|
230
|
+
}
|
|
231
|
+
type EmissionShape = 'point' | 'sphere' | 'box' | 'cone' | 'circle' | 'line';
|
|
232
|
+
interface EmitterConfig {
|
|
233
|
+
id: string;
|
|
234
|
+
maxParticles: number;
|
|
235
|
+
emissionRate: number;
|
|
236
|
+
emissionShape: EmissionShape;
|
|
237
|
+
shapeParams: {
|
|
238
|
+
radius?: number;
|
|
239
|
+
angle?: number;
|
|
240
|
+
extents?: IVector3;
|
|
241
|
+
length?: number;
|
|
242
|
+
};
|
|
243
|
+
lifetime: {
|
|
244
|
+
min: number;
|
|
245
|
+
max: number;
|
|
246
|
+
};
|
|
247
|
+
startSpeed: {
|
|
248
|
+
min: number;
|
|
249
|
+
max: number;
|
|
250
|
+
};
|
|
251
|
+
startSize: {
|
|
252
|
+
min: number;
|
|
253
|
+
max: number;
|
|
254
|
+
};
|
|
255
|
+
startColor: IColor;
|
|
256
|
+
endColor?: IColor;
|
|
257
|
+
gravity: number;
|
|
258
|
+
sizeOverLifetime?: CurveKeyframe[];
|
|
259
|
+
alphaOverLifetime?: CurveKeyframe[];
|
|
260
|
+
speedOverLifetime?: CurveKeyframe[];
|
|
261
|
+
worldSpace: boolean;
|
|
262
|
+
prewarm: boolean;
|
|
263
|
+
}
|
|
264
|
+
interface Particle {
|
|
265
|
+
position: IVector3;
|
|
266
|
+
velocity: IVector3;
|
|
267
|
+
color: IColor;
|
|
268
|
+
size: number;
|
|
269
|
+
age: number;
|
|
270
|
+
lifetime: number;
|
|
271
|
+
alive: boolean;
|
|
272
|
+
startSpeed: number;
|
|
273
|
+
}
|
|
274
|
+
interface EmitterState {
|
|
275
|
+
id: string;
|
|
276
|
+
playing: boolean;
|
|
277
|
+
elapsed: number;
|
|
278
|
+
emissionAccum: number;
|
|
279
|
+
aliveCount: number;
|
|
280
|
+
totalEmitted: number;
|
|
281
|
+
}
|
|
282
|
+
declare class ParticleEmitter {
|
|
283
|
+
readonly config: EmitterConfig;
|
|
284
|
+
private particles;
|
|
285
|
+
private state;
|
|
286
|
+
constructor(config: EmitterConfig);
|
|
287
|
+
play(): void;
|
|
288
|
+
pause(): void;
|
|
289
|
+
stop(): void;
|
|
290
|
+
isPlaying(): boolean;
|
|
291
|
+
getState(): EmitterState;
|
|
292
|
+
update(dt: number): Particle[];
|
|
293
|
+
private emit;
|
|
294
|
+
private sampleShape;
|
|
295
|
+
private randomDirection;
|
|
296
|
+
private createDeadParticle;
|
|
297
|
+
getAliveParticles(): Particle[];
|
|
298
|
+
getAliveCount(): number;
|
|
299
|
+
getCapacity(): number;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* ParticleCollision.ts
|
|
304
|
+
*
|
|
305
|
+
* Particle collision: plane/sphere bounce, friction,
|
|
306
|
+
* lifetime reduction on impact, and sub-emitter spawning.
|
|
307
|
+
*
|
|
308
|
+
* @module particles
|
|
309
|
+
*/
|
|
310
|
+
interface CollisionPlane {
|
|
311
|
+
id: string;
|
|
312
|
+
nx: number;
|
|
313
|
+
ny: number;
|
|
314
|
+
nz: number;
|
|
315
|
+
d: number;
|
|
316
|
+
bounce: number;
|
|
317
|
+
friction: number;
|
|
318
|
+
lifetimeLoss: number;
|
|
319
|
+
}
|
|
320
|
+
interface CollisionSphere {
|
|
321
|
+
id: string;
|
|
322
|
+
cx: number;
|
|
323
|
+
cy: number;
|
|
324
|
+
cz: number;
|
|
325
|
+
radius: number;
|
|
326
|
+
bounce: number;
|
|
327
|
+
friction: number;
|
|
328
|
+
}
|
|
329
|
+
interface CollidableParticle {
|
|
330
|
+
x: number;
|
|
331
|
+
y: number;
|
|
332
|
+
z: number;
|
|
333
|
+
vx: number;
|
|
334
|
+
vy: number;
|
|
335
|
+
vz: number;
|
|
336
|
+
lifetime: number;
|
|
337
|
+
alive: boolean;
|
|
338
|
+
}
|
|
339
|
+
type SubEmitCallback = (x: number, y: number, z: number, count: number) => void;
|
|
340
|
+
declare class ParticleCollisionSystem {
|
|
341
|
+
private planes;
|
|
342
|
+
private spheres;
|
|
343
|
+
private subEmitCallback;
|
|
344
|
+
private subEmitCount;
|
|
345
|
+
private collisionCount;
|
|
346
|
+
addPlane(plane: CollisionPlane): void;
|
|
347
|
+
addSphere(sphere: CollisionSphere): void;
|
|
348
|
+
onSubEmit(callback: SubEmitCallback, count?: number): void;
|
|
349
|
+
resolve(particles: CollidableParticle[]): void;
|
|
350
|
+
getCollisionCount(): number;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* ParticleForces.ts
|
|
355
|
+
*
|
|
356
|
+
* Force field system for particles: gravity, wind, turbulence,
|
|
357
|
+
* point attractors, vortex fields, and drag.
|
|
358
|
+
*
|
|
359
|
+
* @module particles
|
|
360
|
+
*/
|
|
361
|
+
|
|
362
|
+
type ForceType = 'gravity' | 'wind' | 'turbulence' | 'attractor' | 'vortex' | 'drag';
|
|
363
|
+
interface ForceFieldConfig {
|
|
364
|
+
id: string;
|
|
365
|
+
type: ForceType;
|
|
366
|
+
strength: number;
|
|
367
|
+
position?: IVector3;
|
|
368
|
+
direction?: IVector3;
|
|
369
|
+
radius?: number;
|
|
370
|
+
falloff?: 'linear' | 'quadratic' | 'none';
|
|
371
|
+
frequency?: number;
|
|
372
|
+
dragCoefficient?: number;
|
|
373
|
+
}
|
|
374
|
+
interface ForceField {
|
|
375
|
+
config: ForceFieldConfig;
|
|
376
|
+
enabled: boolean;
|
|
377
|
+
}
|
|
378
|
+
declare class ParticleForceSystem {
|
|
379
|
+
private fields;
|
|
380
|
+
private time;
|
|
381
|
+
addForce(config: ForceFieldConfig): void;
|
|
382
|
+
removeForce(id: string): void;
|
|
383
|
+
setEnabled(id: string, enabled: boolean): void;
|
|
384
|
+
getForce(id: string): ForceField | undefined;
|
|
385
|
+
getForceCount(): number;
|
|
386
|
+
/**
|
|
387
|
+
* Apply all force fields to a set of particles.
|
|
388
|
+
*/
|
|
389
|
+
apply(particles: Particle[], dt: number): void;
|
|
390
|
+
private applyForce;
|
|
391
|
+
private applyGravity;
|
|
392
|
+
private applyWind;
|
|
393
|
+
private applyTurbulence;
|
|
394
|
+
private applyAttractor;
|
|
395
|
+
private applyVortex;
|
|
396
|
+
private applyDrag;
|
|
397
|
+
private getPositionalFalloff;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* ParticleTurbulence.ts
|
|
402
|
+
*
|
|
403
|
+
* Turbulence fields for particles: curl noise approximation,
|
|
404
|
+
* vortex fields, time-varying strength, and frequency control.
|
|
405
|
+
*
|
|
406
|
+
* @module particles
|
|
407
|
+
*/
|
|
408
|
+
interface TurbulenceConfig {
|
|
409
|
+
strength: number;
|
|
410
|
+
frequency: number;
|
|
411
|
+
octaves: number;
|
|
412
|
+
time: number;
|
|
413
|
+
}
|
|
414
|
+
interface TurbParticle {
|
|
415
|
+
x: number;
|
|
416
|
+
y: number;
|
|
417
|
+
z: number;
|
|
418
|
+
vx: number;
|
|
419
|
+
vy: number;
|
|
420
|
+
vz: number;
|
|
421
|
+
}
|
|
422
|
+
declare class ParticleTurbulence {
|
|
423
|
+
private config;
|
|
424
|
+
constructor(config?: Partial<TurbulenceConfig>);
|
|
425
|
+
setStrength(s: number): void;
|
|
426
|
+
setFrequency(f: number): void;
|
|
427
|
+
setTime(t: number): void;
|
|
428
|
+
getConfig(): TurbulenceConfig;
|
|
429
|
+
sampleCurl(x: number, y: number, z: number): {
|
|
430
|
+
fx: number;
|
|
431
|
+
fy: number;
|
|
432
|
+
fz: number;
|
|
433
|
+
};
|
|
434
|
+
apply(particles: TurbParticle[], dt: number): void;
|
|
435
|
+
tick(dt: number): void;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* ParticleTrait.ts
|
|
440
|
+
*
|
|
441
|
+
* Declarative particle attachment for HoloScript+ nodes.
|
|
442
|
+
* Allows any node to emit particles via the trait system.
|
|
443
|
+
*
|
|
444
|
+
* @trait particles
|
|
445
|
+
*/
|
|
446
|
+
|
|
447
|
+
interface HSPlusNode {
|
|
448
|
+
id?: string;
|
|
449
|
+
properties?: Record<string, unknown>;
|
|
450
|
+
}
|
|
451
|
+
interface TraitHandler<TConfig> {
|
|
452
|
+
name: string;
|
|
453
|
+
defaultConfig: TConfig;
|
|
454
|
+
onAttach(node: HSPlusNode, config: TConfig, context: unknown): void;
|
|
455
|
+
onDetach(node: HSPlusNode, config: TConfig, context: unknown): void;
|
|
456
|
+
onUpdate(node: HSPlusNode, config: TConfig, context: unknown, delta: number): void;
|
|
457
|
+
}
|
|
458
|
+
interface ParticleTraitConfig {
|
|
459
|
+
/** Preset name (key from ParticlePresets) */
|
|
460
|
+
preset?: string;
|
|
461
|
+
/** Custom emitter config (overrides preset) */
|
|
462
|
+
emitter?: Partial<EmitterConfig$1>;
|
|
463
|
+
/** Affectors to apply */
|
|
464
|
+
affectors?: string[];
|
|
465
|
+
/** Whether to follow the node's position */
|
|
466
|
+
followNode: boolean;
|
|
467
|
+
/** Whether to auto-start emitting on attach */
|
|
468
|
+
autoStart: boolean;
|
|
469
|
+
}
|
|
470
|
+
declare const particleTraitHandler: TraitHandler<ParticleTraitConfig>;
|
|
471
|
+
/**
|
|
472
|
+
* Get the ParticleSystem for a given node (for external control).
|
|
473
|
+
*/
|
|
474
|
+
declare function getNodeParticleSystem(nodeId: string): ParticleSystem | undefined;
|
|
475
|
+
|
|
476
|
+
type index_Attractor = Attractor;
|
|
477
|
+
type index_AttractorShape = AttractorShape;
|
|
478
|
+
type index_CollidableParticle = CollidableParticle;
|
|
479
|
+
type index_CollisionPlane = CollisionPlane;
|
|
480
|
+
type index_CollisionSphere = CollisionSphere;
|
|
481
|
+
type index_Color4 = Color4;
|
|
482
|
+
type index_CurveKeyframe = CurveKeyframe;
|
|
483
|
+
type index_EmissionShape = EmissionShape;
|
|
484
|
+
type index_EmitterShape = EmitterShape;
|
|
485
|
+
type index_EmitterState = EmitterState;
|
|
486
|
+
type index_ForceField = ForceField;
|
|
487
|
+
type index_ForceFieldConfig = ForceFieldConfig;
|
|
488
|
+
type index_ForceType = ForceType;
|
|
489
|
+
type index_HSPlusNode = HSPlusNode;
|
|
490
|
+
type index_IColor = IColor;
|
|
491
|
+
type index_ParticleAttractorSystem = ParticleAttractorSystem;
|
|
492
|
+
declare const index_ParticleAttractorSystem: typeof ParticleAttractorSystem;
|
|
493
|
+
type index_ParticleCollisionSystem = ParticleCollisionSystem;
|
|
494
|
+
declare const index_ParticleCollisionSystem: typeof ParticleCollisionSystem;
|
|
495
|
+
type index_ParticleEmitter = ParticleEmitter;
|
|
496
|
+
declare const index_ParticleEmitter: typeof ParticleEmitter;
|
|
497
|
+
type index_ParticleForceSystem = ParticleForceSystem;
|
|
498
|
+
declare const index_ParticleForceSystem: typeof ParticleForceSystem;
|
|
499
|
+
declare const index_ParticlePresets: typeof ParticlePresets;
|
|
500
|
+
type index_ParticleSystem = ParticleSystem;
|
|
501
|
+
declare const index_ParticleSystem: typeof ParticleSystem;
|
|
502
|
+
type index_ParticleTraitConfig = ParticleTraitConfig;
|
|
503
|
+
type index_ParticleTurbulence = ParticleTurbulence;
|
|
504
|
+
declare const index_ParticleTurbulence: typeof ParticleTurbulence;
|
|
505
|
+
type index_SubEmitCallback = SubEmitCallback;
|
|
506
|
+
type index_TraitHandler<TConfig> = TraitHandler<TConfig>;
|
|
507
|
+
type index_TurbulenceConfig = TurbulenceConfig;
|
|
508
|
+
declare const index_attractor: typeof attractor;
|
|
509
|
+
declare const index_drag: typeof drag;
|
|
510
|
+
declare const index_floorBounce: typeof floorBounce;
|
|
511
|
+
declare const index_getNodeParticleSystem: typeof getNodeParticleSystem;
|
|
512
|
+
declare const index_gravity: typeof gravity;
|
|
513
|
+
declare const index_particleTraitHandler: typeof particleTraitHandler;
|
|
514
|
+
declare const index_sizeOscillate: typeof sizeOscillate;
|
|
515
|
+
declare const index_turbulence: typeof turbulence;
|
|
516
|
+
declare const index_vortex: typeof vortex;
|
|
517
|
+
declare const index_wind: typeof wind;
|
|
518
|
+
declare namespace index {
|
|
519
|
+
export { type index_Attractor as Attractor, type Particle$1 as AttractorParticle, type index_AttractorShape as AttractorShape, type index_CollidableParticle as CollidableParticle, type index_CollisionPlane as CollisionPlane, type index_CollisionSphere as CollisionSphere, type index_Color4 as Color4, type index_CurveKeyframe as CurveKeyframe, type index_EmissionShape as EmissionShape, type EmitterConfig$1 as EmitterConfig, type Particle as EmitterParticle, type index_EmitterShape as EmitterShape, type EmitterConfig as EmitterSourceConfig, type index_EmitterState as EmitterState, type IVector3 as EmitterVector3, type index_ForceField as ForceField, type index_ForceFieldConfig as ForceFieldConfig, type index_ForceType as ForceType, type index_HSPlusNode as HSPlusNode, type index_IColor as IColor, type Particle$2 as Particle, index_ParticleAttractorSystem as ParticleAttractorSystem, index_ParticleCollisionSystem as ParticleCollisionSystem, index_ParticleEmitter as ParticleEmitter, index_ParticleForceSystem as ParticleForceSystem, index_ParticlePresets as ParticlePresets, index_ParticleSystem as ParticleSystem, type index_ParticleTraitConfig as ParticleTraitConfig, index_ParticleTurbulence as ParticleTurbulence, type index_SubEmitCallback as SubEmitCallback, type index_TraitHandler as TraitHandler, type index_TurbulenceConfig as TurbulenceConfig, index_attractor as attractor, index_drag as drag, index_floorBounce as floorBounce, index_getNodeParticleSystem as getNodeParticleSystem, index_gravity as gravity, index_particleTraitHandler as particleTraitHandler, index_sizeOscillate as sizeOscillate, index_turbulence as turbulence, index_vortex as vortex, index_wind as wind };
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
export { type Attractor as A, floorBounce as B, type CollidableParticle as C, getNodeParticleSystem as D, type EmissionShape as E, type ForceField as F, gravity as G, type HSPlusNode as H, type IVector3 as I, particleTraitHandler as J, sizeOscillate as K, turbulence as L, vortex as M, wind as N, type Particle$1 as P, type SubEmitCallback as S, type TraitHandler as T, type AttractorShape as a, type CollisionPlane as b, type CollisionSphere as c, type Color4 as d, type CurveKeyframe as e, type EmitterConfig$1 as f, type Particle as g, type EmitterShape as h, index as i, type EmitterConfig as j, type EmitterState as k, type ForceFieldConfig as l, type ForceType as m, type IColor as n, type Particle$2 as o, ParticleAttractorSystem as p, ParticleCollisionSystem as q, ParticleEmitter as r, ParticleForceSystem as s, ParticlePresets as t, ParticleSystem as u, type ParticleTraitConfig as v, ParticleTurbulence as w, type TurbulenceConfig as x, attractor as y, drag as z };
|