@pixi-ui-editor/schema 0.22.0 → 0.23.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.
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type Static } from "@sinclair/typebox";
2
2
  export { collectBindingKeys, collectBindingKeyScopes, OWNER_BINDING_KEY_SCOPE } from "./bindingKeys.js";
3
3
  export { rewriteNodeReferences, rewritePrefabInstanceReferencePatches, type NodeReferenceRewriter } from "./nodeReferences.js";
4
4
  export { clearNodeAssetReferences } from "./assetReferences.js";
5
- export declare const CURRENT_SCHEMA_VERSION: 45;
5
+ export declare const CURRENT_SCHEMA_VERSION: 46;
6
6
  export declare const LayoutProfileIdSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"desktop">, import("@sinclair/typebox").TLiteral<"mobile">]>;
7
7
  export type LayoutProfileId = Static<typeof LayoutProfileIdSchema>;
8
8
  declare const Alignment: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"upper-left">, import("@sinclair/typebox").TLiteral<"upper-center">, import("@sinclair/typebox").TLiteral<"upper-right">, import("@sinclair/typebox").TLiteral<"middle-left">, import("@sinclair/typebox").TLiteral<"middle-center">, import("@sinclair/typebox").TLiteral<"middle-right">, import("@sinclair/typebox").TLiteral<"lower-left">, import("@sinclair/typebox").TLiteral<"lower-center">, import("@sinclair/typebox").TLiteral<"lower-right">]>;
@@ -136,10 +136,7 @@ declare const PaginationDirection: import("@sinclair/typebox").TUnion<[import("@
136
136
  export type PaginationDirection = Static<typeof PaginationDirection>;
137
137
  declare const PaginationItemStyle: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"dots">, import("@sinclair/typebox").TLiteral<"numbers">]>;
138
138
  export type PaginationItemStyle = Static<typeof PaginationItemStyle>;
139
- export declare const EffectDefinitionSchema: import("@sinclair/typebox").TObject<{
140
- id: import("@sinclair/typebox").TString;
141
- name: import("@sinclair/typebox").TString;
142
- type: import("@sinclair/typebox").TLiteral<"particles">;
139
+ export declare const ParticleEmitterSettingsSchema: import("@sinclair/typebox").TObject<{
143
140
  maxParticles: import("@sinclair/typebox").TInteger;
144
141
  seed: import("@sinclair/typebox").TInteger;
145
142
  emission: import("@sinclair/typebox").TObject<{
@@ -217,11 +214,9 @@ export declare const EffectDefinitionSchema: import("@sinclair/typebox").TObject
217
214
  }>;
218
215
  }>;
219
216
  }>;
220
- export type EffectDefinition = Static<typeof EffectDefinitionSchema>;
221
- export type ParticleEffectDefinition = Extract<EffectDefinition, {
222
- type: "particles";
223
- }>;
224
- export declare function isParticleEffect(effect: EffectDefinition): effect is ParticleEffectDefinition;
217
+ export type ParticleEmitterSettings = Static<typeof ParticleEmitterSettingsSchema>;
218
+ /** @deprecated Particle configuration is now owned by `ParticleEmitterNode.particle`. */
219
+ export type ParticleEffectDefinition = ParticleEmitterSettings;
225
220
  export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
226
221
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
227
222
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
@@ -2082,7 +2077,6 @@ export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import
2082
2077
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
2083
2078
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2084
2079
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
2085
- effectId: import("@sinclair/typebox").TString;
2086
2080
  id: import("@sinclair/typebox").TString;
2087
2081
  layoutItem: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
2088
2082
  flexGrow: import("@sinclair/typebox").TNumber;
@@ -2131,6 +2125,84 @@ export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import
2131
2125
  locked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
2132
2126
  name: import("@sinclair/typebox").TString;
2133
2127
  parentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>, import("@sinclair/typebox").TNull]>;
2128
+ particle: import("@sinclair/typebox").TObject<{
2129
+ maxParticles: import("@sinclair/typebox").TInteger;
2130
+ seed: import("@sinclair/typebox").TInteger;
2131
+ emission: import("@sinclair/typebox").TObject<{
2132
+ delay: import("@sinclair/typebox").TNumber;
2133
+ duration: import("@sinclair/typebox").TNumber;
2134
+ loop: import("@sinclair/typebox").TBoolean;
2135
+ rate: import("@sinclair/typebox").TNumber;
2136
+ bursts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
2137
+ time: import("@sinclair/typebox").TNumber;
2138
+ count: import("@sinclair/typebox").TInteger;
2139
+ }>>;
2140
+ }>;
2141
+ particle: import("@sinclair/typebox").TObject<{
2142
+ lifetime: import("@sinclair/typebox").TObject<{
2143
+ min: import("@sinclair/typebox").TNumber;
2144
+ max: import("@sinclair/typebox").TNumber;
2145
+ }>;
2146
+ spawnShape: import("@sinclair/typebox").TObject<{
2147
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"point">, import("@sinclair/typebox").TLiteral<"rectangle">, import("@sinclair/typebox").TLiteral<"circle">]>;
2148
+ }>;
2149
+ movement: import("@sinclair/typebox").TObject<{
2150
+ speed: import("@sinclair/typebox").TObject<{
2151
+ min: import("@sinclair/typebox").TNumber;
2152
+ max: import("@sinclair/typebox").TNumber;
2153
+ }>;
2154
+ directionDegrees: import("@sinclair/typebox").TNumber;
2155
+ spreadDegrees: import("@sinclair/typebox").TNumber;
2156
+ accelerationX: import("@sinclair/typebox").TNumber;
2157
+ accelerationY: import("@sinclair/typebox").TNumber;
2158
+ drag: import("@sinclair/typebox").TNumber;
2159
+ }>;
2160
+ visual: import("@sinclair/typebox").TObject<{
2161
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
2162
+ type: import("@sinclair/typebox").TLiteral<"single">;
2163
+ assetId: import("@sinclair/typebox").TString;
2164
+ }>, import("@sinclair/typebox").TObject<{
2165
+ type: import("@sinclair/typebox").TLiteral<"random">;
2166
+ assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2167
+ }>, import("@sinclair/typebox").TObject<{
2168
+ type: import("@sinclair/typebox").TLiteral<"sequence">;
2169
+ assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2170
+ fps: import("@sinclair/typebox").TNumber;
2171
+ loop: import("@sinclair/typebox").TBoolean;
2172
+ randomStartFrame: import("@sinclair/typebox").TBoolean;
2173
+ }>]>;
2174
+ alpha: import("@sinclair/typebox").TObject<{
2175
+ start: import("@sinclair/typebox").TNumber;
2176
+ end: import("@sinclair/typebox").TNumber;
2177
+ }>;
2178
+ scale: import("@sinclair/typebox").TObject<{
2179
+ start: import("@sinclair/typebox").TObject<{
2180
+ min: import("@sinclair/typebox").TNumber;
2181
+ max: import("@sinclair/typebox").TNumber;
2182
+ }>;
2183
+ end: import("@sinclair/typebox").TObject<{
2184
+ min: import("@sinclair/typebox").TNumber;
2185
+ max: import("@sinclair/typebox").TNumber;
2186
+ }>;
2187
+ }>;
2188
+ tint: import("@sinclair/typebox").TObject<{
2189
+ start: import("@sinclair/typebox").TString;
2190
+ end: import("@sinclair/typebox").TString;
2191
+ }>;
2192
+ rotation: import("@sinclair/typebox").TObject<{
2193
+ initialDegrees: import("@sinclair/typebox").TObject<{
2194
+ min: import("@sinclair/typebox").TNumber;
2195
+ max: import("@sinclair/typebox").TNumber;
2196
+ }>;
2197
+ angularVelocityDegrees: import("@sinclair/typebox").TObject<{
2198
+ min: import("@sinclair/typebox").TNumber;
2199
+ max: import("@sinclair/typebox").TNumber;
2200
+ }>;
2201
+ }>;
2202
+ blendMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"normal">, import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"multiply">, import("@sinclair/typebox").TLiteral<"screen">]>;
2203
+ }>;
2204
+ }>;
2205
+ }>;
2134
2206
  simulationSpace: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"local">, import("@sinclair/typebox").TLiteral<"world">]>;
2135
2207
  transform: import("@sinclair/typebox").TObject<{
2136
2208
  x: import("@sinclair/typebox").TNumber;
@@ -4116,7 +4188,6 @@ export declare const LocallyAddedNodeSchema: import("@sinclair/typebox").TRecurs
4116
4188
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
4117
4189
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
4118
4190
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
4119
- effectId: import("@sinclair/typebox").TString;
4120
4191
  id: import("@sinclair/typebox").TString;
4121
4192
  layoutItem: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
4122
4193
  flexGrow: import("@sinclair/typebox").TNumber;
@@ -4165,6 +4236,84 @@ export declare const LocallyAddedNodeSchema: import("@sinclair/typebox").TRecurs
4165
4236
  locked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
4166
4237
  name: import("@sinclair/typebox").TString;
4167
4238
  parentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>, import("@sinclair/typebox").TNull]>;
4239
+ particle: import("@sinclair/typebox").TObject<{
4240
+ maxParticles: import("@sinclair/typebox").TInteger;
4241
+ seed: import("@sinclair/typebox").TInteger;
4242
+ emission: import("@sinclair/typebox").TObject<{
4243
+ delay: import("@sinclair/typebox").TNumber;
4244
+ duration: import("@sinclair/typebox").TNumber;
4245
+ loop: import("@sinclair/typebox").TBoolean;
4246
+ rate: import("@sinclair/typebox").TNumber;
4247
+ bursts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
4248
+ time: import("@sinclair/typebox").TNumber;
4249
+ count: import("@sinclair/typebox").TInteger;
4250
+ }>>;
4251
+ }>;
4252
+ particle: import("@sinclair/typebox").TObject<{
4253
+ lifetime: import("@sinclair/typebox").TObject<{
4254
+ min: import("@sinclair/typebox").TNumber;
4255
+ max: import("@sinclair/typebox").TNumber;
4256
+ }>;
4257
+ spawnShape: import("@sinclair/typebox").TObject<{
4258
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"point">, import("@sinclair/typebox").TLiteral<"rectangle">, import("@sinclair/typebox").TLiteral<"circle">]>;
4259
+ }>;
4260
+ movement: import("@sinclair/typebox").TObject<{
4261
+ speed: import("@sinclair/typebox").TObject<{
4262
+ min: import("@sinclair/typebox").TNumber;
4263
+ max: import("@sinclair/typebox").TNumber;
4264
+ }>;
4265
+ directionDegrees: import("@sinclair/typebox").TNumber;
4266
+ spreadDegrees: import("@sinclair/typebox").TNumber;
4267
+ accelerationX: import("@sinclair/typebox").TNumber;
4268
+ accelerationY: import("@sinclair/typebox").TNumber;
4269
+ drag: import("@sinclair/typebox").TNumber;
4270
+ }>;
4271
+ visual: import("@sinclair/typebox").TObject<{
4272
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
4273
+ type: import("@sinclair/typebox").TLiteral<"single">;
4274
+ assetId: import("@sinclair/typebox").TString;
4275
+ }>, import("@sinclair/typebox").TObject<{
4276
+ type: import("@sinclair/typebox").TLiteral<"random">;
4277
+ assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
4278
+ }>, import("@sinclair/typebox").TObject<{
4279
+ type: import("@sinclair/typebox").TLiteral<"sequence">;
4280
+ assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
4281
+ fps: import("@sinclair/typebox").TNumber;
4282
+ loop: import("@sinclair/typebox").TBoolean;
4283
+ randomStartFrame: import("@sinclair/typebox").TBoolean;
4284
+ }>]>;
4285
+ alpha: import("@sinclair/typebox").TObject<{
4286
+ start: import("@sinclair/typebox").TNumber;
4287
+ end: import("@sinclair/typebox").TNumber;
4288
+ }>;
4289
+ scale: import("@sinclair/typebox").TObject<{
4290
+ start: import("@sinclair/typebox").TObject<{
4291
+ min: import("@sinclair/typebox").TNumber;
4292
+ max: import("@sinclair/typebox").TNumber;
4293
+ }>;
4294
+ end: import("@sinclair/typebox").TObject<{
4295
+ min: import("@sinclair/typebox").TNumber;
4296
+ max: import("@sinclair/typebox").TNumber;
4297
+ }>;
4298
+ }>;
4299
+ tint: import("@sinclair/typebox").TObject<{
4300
+ start: import("@sinclair/typebox").TString;
4301
+ end: import("@sinclair/typebox").TString;
4302
+ }>;
4303
+ rotation: import("@sinclair/typebox").TObject<{
4304
+ initialDegrees: import("@sinclair/typebox").TObject<{
4305
+ min: import("@sinclair/typebox").TNumber;
4306
+ max: import("@sinclair/typebox").TNumber;
4307
+ }>;
4308
+ angularVelocityDegrees: import("@sinclair/typebox").TObject<{
4309
+ min: import("@sinclair/typebox").TNumber;
4310
+ max: import("@sinclair/typebox").TNumber;
4311
+ }>;
4312
+ }>;
4313
+ blendMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"normal">, import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"multiply">, import("@sinclair/typebox").TLiteral<"screen">]>;
4314
+ }>;
4315
+ }>;
4316
+ }>;
4168
4317
  simulationSpace: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"local">, import("@sinclair/typebox").TLiteral<"world">]>;
4169
4318
  transform: import("@sinclair/typebox").TObject<{
4170
4319
  x: import("@sinclair/typebox").TNumber;
@@ -7525,7 +7674,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
7525
7674
  bindingKey?: string | undefined;
7526
7675
  children: string[];
7527
7676
  editorOnly?: boolean | undefined;
7528
- effectId: string;
7529
7677
  id: string;
7530
7678
  layoutItem?: {
7531
7679
  flexGrow: number;
@@ -7574,6 +7722,84 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
7574
7722
  locked?: boolean | undefined;
7575
7723
  name: string;
7576
7724
  parentId: string | null;
7725
+ particle: {
7726
+ maxParticles: number;
7727
+ seed: number;
7728
+ emission: {
7729
+ delay: number;
7730
+ duration: number;
7731
+ loop: boolean;
7732
+ rate: number;
7733
+ bursts: {
7734
+ time: number;
7735
+ count: number;
7736
+ }[];
7737
+ };
7738
+ particle: {
7739
+ lifetime: {
7740
+ min: number;
7741
+ max: number;
7742
+ };
7743
+ spawnShape: {
7744
+ type: "circle" | "point" | "rectangle";
7745
+ };
7746
+ movement: {
7747
+ speed: {
7748
+ min: number;
7749
+ max: number;
7750
+ };
7751
+ directionDegrees: number;
7752
+ spreadDegrees: number;
7753
+ accelerationX: number;
7754
+ accelerationY: number;
7755
+ drag: number;
7756
+ };
7757
+ visual: {
7758
+ source: {
7759
+ type: "single";
7760
+ assetId: string;
7761
+ } | {
7762
+ type: "random";
7763
+ assetIds: string[];
7764
+ } | {
7765
+ type: "sequence";
7766
+ assetIds: string[];
7767
+ fps: number;
7768
+ loop: boolean;
7769
+ randomStartFrame: boolean;
7770
+ };
7771
+ alpha: {
7772
+ start: number;
7773
+ end: number;
7774
+ };
7775
+ scale: {
7776
+ start: {
7777
+ min: number;
7778
+ max: number;
7779
+ };
7780
+ end: {
7781
+ min: number;
7782
+ max: number;
7783
+ };
7784
+ };
7785
+ tint: {
7786
+ start: string;
7787
+ end: string;
7788
+ };
7789
+ rotation: {
7790
+ initialDegrees: {
7791
+ min: number;
7792
+ max: number;
7793
+ };
7794
+ angularVelocityDegrees: {
7795
+ min: number;
7796
+ max: number;
7797
+ };
7798
+ };
7799
+ blendMode: "add" | "multiply" | "normal" | "screen";
7800
+ };
7801
+ };
7802
+ };
7577
7803
  simulationSpace: "local" | "world";
7578
7804
  transform: {
7579
7805
  x: number;
@@ -8164,7 +8390,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
8164
8390
  bindingKey?: string | undefined;
8165
8391
  children: string[];
8166
8392
  editorOnly?: boolean | undefined;
8167
- effectId: string;
8168
8393
  id: string;
8169
8394
  layoutItem?: {
8170
8395
  flexGrow: number;
@@ -8213,6 +8438,84 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
8213
8438
  locked?: boolean | undefined;
8214
8439
  name: string;
8215
8440
  parentId: string | null;
8441
+ particle: {
8442
+ maxParticles: number;
8443
+ seed: number;
8444
+ emission: {
8445
+ delay: number;
8446
+ duration: number;
8447
+ loop: boolean;
8448
+ rate: number;
8449
+ bursts: {
8450
+ time: number;
8451
+ count: number;
8452
+ }[];
8453
+ };
8454
+ particle: {
8455
+ lifetime: {
8456
+ min: number;
8457
+ max: number;
8458
+ };
8459
+ spawnShape: {
8460
+ type: "circle" | "point" | "rectangle";
8461
+ };
8462
+ movement: {
8463
+ speed: {
8464
+ min: number;
8465
+ max: number;
8466
+ };
8467
+ directionDegrees: number;
8468
+ spreadDegrees: number;
8469
+ accelerationX: number;
8470
+ accelerationY: number;
8471
+ drag: number;
8472
+ };
8473
+ visual: {
8474
+ source: {
8475
+ type: "single";
8476
+ assetId: string;
8477
+ } | {
8478
+ type: "random";
8479
+ assetIds: string[];
8480
+ } | {
8481
+ type: "sequence";
8482
+ assetIds: string[];
8483
+ fps: number;
8484
+ loop: boolean;
8485
+ randomStartFrame: boolean;
8486
+ };
8487
+ alpha: {
8488
+ start: number;
8489
+ end: number;
8490
+ };
8491
+ scale: {
8492
+ start: {
8493
+ min: number;
8494
+ max: number;
8495
+ };
8496
+ end: {
8497
+ min: number;
8498
+ max: number;
8499
+ };
8500
+ };
8501
+ tint: {
8502
+ start: string;
8503
+ end: string;
8504
+ };
8505
+ rotation: {
8506
+ initialDegrees: {
8507
+ min: number;
8508
+ max: number;
8509
+ };
8510
+ angularVelocityDegrees: {
8511
+ min: number;
8512
+ max: number;
8513
+ };
8514
+ };
8515
+ blendMode: "add" | "multiply" | "normal" | "screen";
8516
+ };
8517
+ };
8518
+ };
8216
8519
  simulationSpace: "local" | "world";
8217
8520
  transform: {
8218
8521
  x: number;
@@ -11643,7 +11946,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
11643
11946
  bindingKey?: string | undefined;
11644
11947
  children: string[];
11645
11948
  editorOnly?: boolean | undefined;
11646
- effectId: string;
11647
11949
  id: string;
11648
11950
  layoutItem?: {
11649
11951
  flexGrow: number;
@@ -11692,6 +11994,84 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
11692
11994
  locked?: boolean | undefined;
11693
11995
  name: string;
11694
11996
  parentId: string | null;
11997
+ particle: {
11998
+ maxParticles: number;
11999
+ seed: number;
12000
+ emission: {
12001
+ delay: number;
12002
+ duration: number;
12003
+ loop: boolean;
12004
+ rate: number;
12005
+ bursts: {
12006
+ time: number;
12007
+ count: number;
12008
+ }[];
12009
+ };
12010
+ particle: {
12011
+ lifetime: {
12012
+ min: number;
12013
+ max: number;
12014
+ };
12015
+ spawnShape: {
12016
+ type: "circle" | "point" | "rectangle";
12017
+ };
12018
+ movement: {
12019
+ speed: {
12020
+ min: number;
12021
+ max: number;
12022
+ };
12023
+ directionDegrees: number;
12024
+ spreadDegrees: number;
12025
+ accelerationX: number;
12026
+ accelerationY: number;
12027
+ drag: number;
12028
+ };
12029
+ visual: {
12030
+ source: {
12031
+ type: "single";
12032
+ assetId: string;
12033
+ } | {
12034
+ type: "random";
12035
+ assetIds: string[];
12036
+ } | {
12037
+ type: "sequence";
12038
+ assetIds: string[];
12039
+ fps: number;
12040
+ loop: boolean;
12041
+ randomStartFrame: boolean;
12042
+ };
12043
+ alpha: {
12044
+ start: number;
12045
+ end: number;
12046
+ };
12047
+ scale: {
12048
+ start: {
12049
+ min: number;
12050
+ max: number;
12051
+ };
12052
+ end: {
12053
+ min: number;
12054
+ max: number;
12055
+ };
12056
+ };
12057
+ tint: {
12058
+ start: string;
12059
+ end: string;
12060
+ };
12061
+ rotation: {
12062
+ initialDegrees: {
12063
+ min: number;
12064
+ max: number;
12065
+ };
12066
+ angularVelocityDegrees: {
12067
+ min: number;
12068
+ max: number;
12069
+ };
12070
+ };
12071
+ blendMode: "add" | "multiply" | "normal" | "screen";
12072
+ };
12073
+ };
12074
+ };
11695
12075
  simulationSpace: "local" | "world";
11696
12076
  transform: {
11697
12077
  x: number;
@@ -12282,7 +12662,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12282
12662
  bindingKey?: string | undefined;
12283
12663
  children: string[];
12284
12664
  editorOnly?: boolean | undefined;
12285
- effectId: string;
12286
12665
  id: string;
12287
12666
  layoutItem?: {
12288
12667
  flexGrow: number;
@@ -12331,6 +12710,84 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12331
12710
  locked?: boolean | undefined;
12332
12711
  name: string;
12333
12712
  parentId: string | null;
12713
+ particle: {
12714
+ maxParticles: number;
12715
+ seed: number;
12716
+ emission: {
12717
+ delay: number;
12718
+ duration: number;
12719
+ loop: boolean;
12720
+ rate: number;
12721
+ bursts: {
12722
+ time: number;
12723
+ count: number;
12724
+ }[];
12725
+ };
12726
+ particle: {
12727
+ lifetime: {
12728
+ min: number;
12729
+ max: number;
12730
+ };
12731
+ spawnShape: {
12732
+ type: "circle" | "point" | "rectangle";
12733
+ };
12734
+ movement: {
12735
+ speed: {
12736
+ min: number;
12737
+ max: number;
12738
+ };
12739
+ directionDegrees: number;
12740
+ spreadDegrees: number;
12741
+ accelerationX: number;
12742
+ accelerationY: number;
12743
+ drag: number;
12744
+ };
12745
+ visual: {
12746
+ source: {
12747
+ type: "single";
12748
+ assetId: string;
12749
+ } | {
12750
+ type: "random";
12751
+ assetIds: string[];
12752
+ } | {
12753
+ type: "sequence";
12754
+ assetIds: string[];
12755
+ fps: number;
12756
+ loop: boolean;
12757
+ randomStartFrame: boolean;
12758
+ };
12759
+ alpha: {
12760
+ start: number;
12761
+ end: number;
12762
+ };
12763
+ scale: {
12764
+ start: {
12765
+ min: number;
12766
+ max: number;
12767
+ };
12768
+ end: {
12769
+ min: number;
12770
+ max: number;
12771
+ };
12772
+ };
12773
+ tint: {
12774
+ start: string;
12775
+ end: string;
12776
+ };
12777
+ rotation: {
12778
+ initialDegrees: {
12779
+ min: number;
12780
+ max: number;
12781
+ };
12782
+ angularVelocityDegrees: {
12783
+ min: number;
12784
+ max: number;
12785
+ };
12786
+ };
12787
+ blendMode: "add" | "multiply" | "normal" | "screen";
12788
+ };
12789
+ };
12790
+ };
12334
12791
  simulationSpace: "local" | "world";
12335
12792
  transform: {
12336
12793
  x: number;
@@ -12461,7 +12918,7 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12461
12918
  }>;
12462
12919
  export type PrefabDefinition = Static<typeof PrefabDefinitionSchema>;
12463
12920
  export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<{
12464
- schemaVersion: import("@sinclair/typebox").TLiteral<45>;
12921
+ schemaVersion: import("@sinclair/typebox").TLiteral<46>;
12465
12922
  project: import("@sinclair/typebox").TObject<{
12466
12923
  id: import("@sinclair/typebox").TString;
12467
12924
  name: import("@sinclair/typebox").TString;
@@ -12572,87 +13029,7 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
12572
13029
  }>;
12573
13030
  frames: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
12574
13031
  }>]>>;
12575
- effects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12576
- id: import("@sinclair/typebox").TString;
12577
- name: import("@sinclair/typebox").TString;
12578
- type: import("@sinclair/typebox").TLiteral<"particles">;
12579
- maxParticles: import("@sinclair/typebox").TInteger;
12580
- seed: import("@sinclair/typebox").TInteger;
12581
- emission: import("@sinclair/typebox").TObject<{
12582
- delay: import("@sinclair/typebox").TNumber;
12583
- duration: import("@sinclair/typebox").TNumber;
12584
- loop: import("@sinclair/typebox").TBoolean;
12585
- rate: import("@sinclair/typebox").TNumber;
12586
- bursts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12587
- time: import("@sinclair/typebox").TNumber;
12588
- count: import("@sinclair/typebox").TInteger;
12589
- }>>;
12590
- }>;
12591
- particle: import("@sinclair/typebox").TObject<{
12592
- lifetime: import("@sinclair/typebox").TObject<{
12593
- min: import("@sinclair/typebox").TNumber;
12594
- max: import("@sinclair/typebox").TNumber;
12595
- }>;
12596
- spawnShape: import("@sinclair/typebox").TObject<{
12597
- type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"point">, import("@sinclair/typebox").TLiteral<"rectangle">, import("@sinclair/typebox").TLiteral<"circle">]>;
12598
- }>;
12599
- movement: import("@sinclair/typebox").TObject<{
12600
- speed: import("@sinclair/typebox").TObject<{
12601
- min: import("@sinclair/typebox").TNumber;
12602
- max: import("@sinclair/typebox").TNumber;
12603
- }>;
12604
- directionDegrees: import("@sinclair/typebox").TNumber;
12605
- spreadDegrees: import("@sinclair/typebox").TNumber;
12606
- accelerationX: import("@sinclair/typebox").TNumber;
12607
- accelerationY: import("@sinclair/typebox").TNumber;
12608
- drag: import("@sinclair/typebox").TNumber;
12609
- }>;
12610
- visual: import("@sinclair/typebox").TObject<{
12611
- source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
12612
- type: import("@sinclair/typebox").TLiteral<"single">;
12613
- assetId: import("@sinclair/typebox").TString;
12614
- }>, import("@sinclair/typebox").TObject<{
12615
- type: import("@sinclair/typebox").TLiteral<"random">;
12616
- assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
12617
- }>, import("@sinclair/typebox").TObject<{
12618
- type: import("@sinclair/typebox").TLiteral<"sequence">;
12619
- assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
12620
- fps: import("@sinclair/typebox").TNumber;
12621
- loop: import("@sinclair/typebox").TBoolean;
12622
- randomStartFrame: import("@sinclair/typebox").TBoolean;
12623
- }>]>;
12624
- alpha: import("@sinclair/typebox").TObject<{
12625
- start: import("@sinclair/typebox").TNumber;
12626
- end: import("@sinclair/typebox").TNumber;
12627
- }>;
12628
- scale: import("@sinclair/typebox").TObject<{
12629
- start: import("@sinclair/typebox").TObject<{
12630
- min: import("@sinclair/typebox").TNumber;
12631
- max: import("@sinclair/typebox").TNumber;
12632
- }>;
12633
- end: import("@sinclair/typebox").TObject<{
12634
- min: import("@sinclair/typebox").TNumber;
12635
- max: import("@sinclair/typebox").TNumber;
12636
- }>;
12637
- }>;
12638
- tint: import("@sinclair/typebox").TObject<{
12639
- start: import("@sinclair/typebox").TString;
12640
- end: import("@sinclair/typebox").TString;
12641
- }>;
12642
- rotation: import("@sinclair/typebox").TObject<{
12643
- initialDegrees: import("@sinclair/typebox").TObject<{
12644
- min: import("@sinclair/typebox").TNumber;
12645
- max: import("@sinclair/typebox").TNumber;
12646
- }>;
12647
- angularVelocityDegrees: import("@sinclair/typebox").TObject<{
12648
- min: import("@sinclair/typebox").TNumber;
12649
- max: import("@sinclair/typebox").TNumber;
12650
- }>;
12651
- }>;
12652
- blendMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"normal">, import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"multiply">, import("@sinclair/typebox").TLiteral<"screen">]>;
12653
- }>;
12654
- }>;
12655
- }>>;
13032
+ effects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>;
12656
13033
  prefabs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12657
13034
  id: import("@sinclair/typebox").TString;
12658
13035
  name: import("@sinclair/typebox").TString;
@@ -15826,7 +16203,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
15826
16203
  bindingKey?: string | undefined;
15827
16204
  children: string[];
15828
16205
  editorOnly?: boolean | undefined;
15829
- effectId: string;
15830
16206
  id: string;
15831
16207
  layoutItem?: {
15832
16208
  flexGrow: number;
@@ -15875,6 +16251,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
15875
16251
  locked?: boolean | undefined;
15876
16252
  name: string;
15877
16253
  parentId: string | null;
16254
+ particle: {
16255
+ maxParticles: number;
16256
+ seed: number;
16257
+ emission: {
16258
+ delay: number;
16259
+ duration: number;
16260
+ loop: boolean;
16261
+ rate: number;
16262
+ bursts: {
16263
+ time: number;
16264
+ count: number;
16265
+ }[];
16266
+ };
16267
+ particle: {
16268
+ lifetime: {
16269
+ min: number;
16270
+ max: number;
16271
+ };
16272
+ spawnShape: {
16273
+ type: "circle" | "point" | "rectangle";
16274
+ };
16275
+ movement: {
16276
+ speed: {
16277
+ min: number;
16278
+ max: number;
16279
+ };
16280
+ directionDegrees: number;
16281
+ spreadDegrees: number;
16282
+ accelerationX: number;
16283
+ accelerationY: number;
16284
+ drag: number;
16285
+ };
16286
+ visual: {
16287
+ source: {
16288
+ type: "single";
16289
+ assetId: string;
16290
+ } | {
16291
+ type: "random";
16292
+ assetIds: string[];
16293
+ } | {
16294
+ type: "sequence";
16295
+ assetIds: string[];
16296
+ fps: number;
16297
+ loop: boolean;
16298
+ randomStartFrame: boolean;
16299
+ };
16300
+ alpha: {
16301
+ start: number;
16302
+ end: number;
16303
+ };
16304
+ scale: {
16305
+ start: {
16306
+ min: number;
16307
+ max: number;
16308
+ };
16309
+ end: {
16310
+ min: number;
16311
+ max: number;
16312
+ };
16313
+ };
16314
+ tint: {
16315
+ start: string;
16316
+ end: string;
16317
+ };
16318
+ rotation: {
16319
+ initialDegrees: {
16320
+ min: number;
16321
+ max: number;
16322
+ };
16323
+ angularVelocityDegrees: {
16324
+ min: number;
16325
+ max: number;
16326
+ };
16327
+ };
16328
+ blendMode: "add" | "multiply" | "normal" | "screen";
16329
+ };
16330
+ };
16331
+ };
15878
16332
  simulationSpace: "local" | "world";
15879
16333
  transform: {
15880
16334
  x: number;
@@ -16465,7 +16919,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
16465
16919
  bindingKey?: string | undefined;
16466
16920
  children: string[];
16467
16921
  editorOnly?: boolean | undefined;
16468
- effectId: string;
16469
16922
  id: string;
16470
16923
  layoutItem?: {
16471
16924
  flexGrow: number;
@@ -16514,6 +16967,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
16514
16967
  locked?: boolean | undefined;
16515
16968
  name: string;
16516
16969
  parentId: string | null;
16970
+ particle: {
16971
+ maxParticles: number;
16972
+ seed: number;
16973
+ emission: {
16974
+ delay: number;
16975
+ duration: number;
16976
+ loop: boolean;
16977
+ rate: number;
16978
+ bursts: {
16979
+ time: number;
16980
+ count: number;
16981
+ }[];
16982
+ };
16983
+ particle: {
16984
+ lifetime: {
16985
+ min: number;
16986
+ max: number;
16987
+ };
16988
+ spawnShape: {
16989
+ type: "circle" | "point" | "rectangle";
16990
+ };
16991
+ movement: {
16992
+ speed: {
16993
+ min: number;
16994
+ max: number;
16995
+ };
16996
+ directionDegrees: number;
16997
+ spreadDegrees: number;
16998
+ accelerationX: number;
16999
+ accelerationY: number;
17000
+ drag: number;
17001
+ };
17002
+ visual: {
17003
+ source: {
17004
+ type: "single";
17005
+ assetId: string;
17006
+ } | {
17007
+ type: "random";
17008
+ assetIds: string[];
17009
+ } | {
17010
+ type: "sequence";
17011
+ assetIds: string[];
17012
+ fps: number;
17013
+ loop: boolean;
17014
+ randomStartFrame: boolean;
17015
+ };
17016
+ alpha: {
17017
+ start: number;
17018
+ end: number;
17019
+ };
17020
+ scale: {
17021
+ start: {
17022
+ min: number;
17023
+ max: number;
17024
+ };
17025
+ end: {
17026
+ min: number;
17027
+ max: number;
17028
+ };
17029
+ };
17030
+ tint: {
17031
+ start: string;
17032
+ end: string;
17033
+ };
17034
+ rotation: {
17035
+ initialDegrees: {
17036
+ min: number;
17037
+ max: number;
17038
+ };
17039
+ angularVelocityDegrees: {
17040
+ min: number;
17041
+ max: number;
17042
+ };
17043
+ };
17044
+ blendMode: "add" | "multiply" | "normal" | "screen";
17045
+ };
17046
+ };
17047
+ };
16517
17048
  simulationSpace: "local" | "world";
16518
17049
  transform: {
16519
17050
  x: number;
@@ -19815,7 +20346,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
19815
20346
  bindingKey?: string | undefined;
19816
20347
  children: string[];
19817
20348
  editorOnly?: boolean | undefined;
19818
- effectId: string;
19819
20349
  id: string;
19820
20350
  layoutItem?: {
19821
20351
  flexGrow: number;
@@ -19864,6 +20394,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
19864
20394
  locked?: boolean | undefined;
19865
20395
  name: string;
19866
20396
  parentId: string | null;
20397
+ particle: {
20398
+ maxParticles: number;
20399
+ seed: number;
20400
+ emission: {
20401
+ delay: number;
20402
+ duration: number;
20403
+ loop: boolean;
20404
+ rate: number;
20405
+ bursts: {
20406
+ time: number;
20407
+ count: number;
20408
+ }[];
20409
+ };
20410
+ particle: {
20411
+ lifetime: {
20412
+ min: number;
20413
+ max: number;
20414
+ };
20415
+ spawnShape: {
20416
+ type: "circle" | "point" | "rectangle";
20417
+ };
20418
+ movement: {
20419
+ speed: {
20420
+ min: number;
20421
+ max: number;
20422
+ };
20423
+ directionDegrees: number;
20424
+ spreadDegrees: number;
20425
+ accelerationX: number;
20426
+ accelerationY: number;
20427
+ drag: number;
20428
+ };
20429
+ visual: {
20430
+ source: {
20431
+ type: "single";
20432
+ assetId: string;
20433
+ } | {
20434
+ type: "random";
20435
+ assetIds: string[];
20436
+ } | {
20437
+ type: "sequence";
20438
+ assetIds: string[];
20439
+ fps: number;
20440
+ loop: boolean;
20441
+ randomStartFrame: boolean;
20442
+ };
20443
+ alpha: {
20444
+ start: number;
20445
+ end: number;
20446
+ };
20447
+ scale: {
20448
+ start: {
20449
+ min: number;
20450
+ max: number;
20451
+ };
20452
+ end: {
20453
+ min: number;
20454
+ max: number;
20455
+ };
20456
+ };
20457
+ tint: {
20458
+ start: string;
20459
+ end: string;
20460
+ };
20461
+ rotation: {
20462
+ initialDegrees: {
20463
+ min: number;
20464
+ max: number;
20465
+ };
20466
+ angularVelocityDegrees: {
20467
+ min: number;
20468
+ max: number;
20469
+ };
20470
+ };
20471
+ blendMode: "add" | "multiply" | "normal" | "screen";
20472
+ };
20473
+ };
20474
+ };
19867
20475
  simulationSpace: "local" | "world";
19868
20476
  transform: {
19869
20477
  x: number;
@@ -20454,7 +21062,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
20454
21062
  bindingKey?: string | undefined;
20455
21063
  children: string[];
20456
21064
  editorOnly?: boolean | undefined;
20457
- effectId: string;
20458
21065
  id: string;
20459
21066
  layoutItem?: {
20460
21067
  flexGrow: number;
@@ -20503,6 +21110,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
20503
21110
  locked?: boolean | undefined;
20504
21111
  name: string;
20505
21112
  parentId: string | null;
21113
+ particle: {
21114
+ maxParticles: number;
21115
+ seed: number;
21116
+ emission: {
21117
+ delay: number;
21118
+ duration: number;
21119
+ loop: boolean;
21120
+ rate: number;
21121
+ bursts: {
21122
+ time: number;
21123
+ count: number;
21124
+ }[];
21125
+ };
21126
+ particle: {
21127
+ lifetime: {
21128
+ min: number;
21129
+ max: number;
21130
+ };
21131
+ spawnShape: {
21132
+ type: "circle" | "point" | "rectangle";
21133
+ };
21134
+ movement: {
21135
+ speed: {
21136
+ min: number;
21137
+ max: number;
21138
+ };
21139
+ directionDegrees: number;
21140
+ spreadDegrees: number;
21141
+ accelerationX: number;
21142
+ accelerationY: number;
21143
+ drag: number;
21144
+ };
21145
+ visual: {
21146
+ source: {
21147
+ type: "single";
21148
+ assetId: string;
21149
+ } | {
21150
+ type: "random";
21151
+ assetIds: string[];
21152
+ } | {
21153
+ type: "sequence";
21154
+ assetIds: string[];
21155
+ fps: number;
21156
+ loop: boolean;
21157
+ randomStartFrame: boolean;
21158
+ };
21159
+ alpha: {
21160
+ start: number;
21161
+ end: number;
21162
+ };
21163
+ scale: {
21164
+ start: {
21165
+ min: number;
21166
+ max: number;
21167
+ };
21168
+ end: {
21169
+ min: number;
21170
+ max: number;
21171
+ };
21172
+ };
21173
+ tint: {
21174
+ start: string;
21175
+ end: string;
21176
+ };
21177
+ rotation: {
21178
+ initialDegrees: {
21179
+ min: number;
21180
+ max: number;
21181
+ };
21182
+ angularVelocityDegrees: {
21183
+ min: number;
21184
+ max: number;
21185
+ };
21186
+ };
21187
+ blendMode: "add" | "multiply" | "normal" | "screen";
21188
+ };
21189
+ };
21190
+ };
20506
21191
  simulationSpace: "local" | "world";
20507
21192
  transform: {
20508
21193
  x: number;
@@ -20671,7 +21356,7 @@ export declare class ProjectDocumentMigrationError extends Error {
20671
21356
  constructor(message: string);
20672
21357
  }
20673
21358
  export declare function createStableId(): string;
20674
- export declare function collectEffectAssetIds(effect: EffectDefinition): string[];
21359
+ export declare function collectParticleEmitterAssetIds(node: Pick<ParticleEmitterNode, "particle">): string[];
20675
21360
  export declare function validateProjectDocument(input: unknown): ValidationResult;
20676
21361
  export declare function assertProjectDocument(input: unknown): asserts input is ProjectDocument;
20677
21362
  export declare function migrateProjectDocument(input: unknown): ProjectDocument;