@pixi-ui-editor/schema 0.21.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: 44;
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">]>;
@@ -81,22 +81,8 @@ export declare const SpineConnectorSchema: import("@sinclair/typebox").TObject<{
81
81
  partType: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bone">, import("@sinclair/typebox").TLiteral<"slot">]>;
82
82
  partName: import("@sinclair/typebox").TString;
83
83
  targetNodeId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>;
84
- positionMultiplier: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
85
- x: import("@sinclair/typebox").TNumber;
86
- y: import("@sinclair/typebox").TNumber;
87
- }>>;
88
- positionMultiplierOverrides: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
89
- mobile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
90
- x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
91
- y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
92
- }>>;
93
- }>>;
94
84
  }>;
95
85
  export type SpineConnector = Static<typeof SpineConnectorSchema>;
96
- export declare function resolveSpineConnectorPositionMultiplier(connector: Pick<SpineConnector, "positionMultiplier" | "positionMultiplierOverrides">, profile: LayoutProfileId): {
97
- x: number;
98
- y: number;
99
- };
100
86
  declare const BitmapTextStyle: import("@sinclair/typebox").TObject<{
101
87
  assetId: import("@sinclair/typebox").TString;
102
88
  fontSize: import("@sinclair/typebox").TNumber;
@@ -150,10 +136,7 @@ declare const PaginationDirection: import("@sinclair/typebox").TUnion<[import("@
150
136
  export type PaginationDirection = Static<typeof PaginationDirection>;
151
137
  declare const PaginationItemStyle: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"dots">, import("@sinclair/typebox").TLiteral<"numbers">]>;
152
138
  export type PaginationItemStyle = Static<typeof PaginationItemStyle>;
153
- export declare const EffectDefinitionSchema: import("@sinclair/typebox").TObject<{
154
- id: import("@sinclair/typebox").TString;
155
- name: import("@sinclair/typebox").TString;
156
- type: import("@sinclair/typebox").TLiteral<"particles">;
139
+ export declare const ParticleEmitterSettingsSchema: import("@sinclair/typebox").TObject<{
157
140
  maxParticles: import("@sinclair/typebox").TInteger;
158
141
  seed: import("@sinclair/typebox").TInteger;
159
142
  emission: import("@sinclair/typebox").TObject<{
@@ -231,11 +214,9 @@ export declare const EffectDefinitionSchema: import("@sinclair/typebox").TObject
231
214
  }>;
232
215
  }>;
233
216
  }>;
234
- export type EffectDefinition = Static<typeof EffectDefinitionSchema>;
235
- export type ParticleEffectDefinition = Extract<EffectDefinition, {
236
- type: "particles";
237
- }>;
238
- 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;
239
220
  export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
240
221
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
241
222
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
@@ -1201,16 +1182,6 @@ export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import
1201
1182
  partType: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bone">, import("@sinclair/typebox").TLiteral<"slot">]>;
1202
1183
  partName: import("@sinclair/typebox").TString;
1203
1184
  targetNodeId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>;
1204
- positionMultiplier: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
1205
- x: import("@sinclair/typebox").TNumber;
1206
- y: import("@sinclair/typebox").TNumber;
1207
- }>>;
1208
- positionMultiplierOverrides: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
1209
- mobile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
1210
- x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
1211
- y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
1212
- }>>;
1213
- }>>;
1214
1185
  }>>>;
1215
1186
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
1216
1187
  id: import("@sinclair/typebox").TString;
@@ -2106,7 +2077,6 @@ export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import
2106
2077
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
2107
2078
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2108
2079
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
2109
- effectId: import("@sinclair/typebox").TString;
2110
2080
  id: import("@sinclair/typebox").TString;
2111
2081
  layoutItem: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
2112
2082
  flexGrow: import("@sinclair/typebox").TNumber;
@@ -2155,6 +2125,84 @@ export declare const UINodeSchema: import("@sinclair/typebox").TRecursive<import
2155
2125
  locked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
2156
2126
  name: import("@sinclair/typebox").TString;
2157
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
+ }>;
2158
2206
  simulationSpace: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"local">, import("@sinclair/typebox").TLiteral<"world">]>;
2159
2207
  transform: import("@sinclair/typebox").TObject<{
2160
2208
  x: import("@sinclair/typebox").TNumber;
@@ -3245,16 +3293,6 @@ export declare const LocallyAddedNodeSchema: import("@sinclair/typebox").TRecurs
3245
3293
  partType: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bone">, import("@sinclair/typebox").TLiteral<"slot">]>;
3246
3294
  partName: import("@sinclair/typebox").TString;
3247
3295
  targetNodeId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>;
3248
- positionMultiplier: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
3249
- x: import("@sinclair/typebox").TNumber;
3250
- y: import("@sinclair/typebox").TNumber;
3251
- }>>;
3252
- positionMultiplierOverrides: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
3253
- mobile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
3254
- x: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
3255
- y: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
3256
- }>>;
3257
- }>>;
3258
3296
  }>>>;
3259
3297
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
3260
3298
  id: import("@sinclair/typebox").TString;
@@ -4150,7 +4188,6 @@ export declare const LocallyAddedNodeSchema: import("@sinclair/typebox").TRecurs
4150
4188
  bindingKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
4151
4189
  children: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
4152
4190
  editorOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
4153
- effectId: import("@sinclair/typebox").TString;
4154
4191
  id: import("@sinclair/typebox").TString;
4155
4192
  layoutItem: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
4156
4193
  flexGrow: import("@sinclair/typebox").TNumber;
@@ -4199,6 +4236,84 @@ export declare const LocallyAddedNodeSchema: import("@sinclair/typebox").TRecurs
4199
4236
  locked: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
4200
4237
  name: import("@sinclair/typebox").TString;
4201
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
+ }>;
4202
4317
  simulationSpace: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"local">, import("@sinclair/typebox").TLiteral<"world">]>;
4203
4318
  transform: import("@sinclair/typebox").TObject<{
4204
4319
  x: import("@sinclair/typebox").TNumber;
@@ -5355,16 +5470,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
5355
5470
  partType: "bone" | "slot";
5356
5471
  partName: string;
5357
5472
  targetNodeId: string;
5358
- positionMultiplier?: {
5359
- x: number;
5360
- y: number;
5361
- } | undefined;
5362
- positionMultiplierOverrides?: {
5363
- mobile?: {
5364
- x?: number | undefined;
5365
- y?: number | undefined;
5366
- } | undefined;
5367
- } | undefined;
5368
5473
  }[] | undefined;
5369
5474
  editorOnly?: boolean | undefined;
5370
5475
  id: string;
@@ -6754,16 +6859,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
6754
6859
  partType: "bone" | "slot";
6755
6860
  partName: string;
6756
6861
  targetNodeId: string;
6757
- positionMultiplier?: {
6758
- x: number;
6759
- y: number;
6760
- } | undefined;
6761
- positionMultiplierOverrides?: {
6762
- mobile?: {
6763
- x?: number | undefined;
6764
- y?: number | undefined;
6765
- } | undefined;
6766
- } | undefined;
6767
6862
  }[] | undefined;
6768
6863
  editorOnly?: boolean | undefined;
6769
6864
  id: string;
@@ -7579,7 +7674,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
7579
7674
  bindingKey?: string | undefined;
7580
7675
  children: string[];
7581
7676
  editorOnly?: boolean | undefined;
7582
- effectId: string;
7583
7677
  id: string;
7584
7678
  layoutItem?: {
7585
7679
  flexGrow: number;
@@ -7628,6 +7722,84 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
7628
7722
  locked?: boolean | undefined;
7629
7723
  name: string;
7630
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
+ };
7631
7803
  simulationSpace: "local" | "world";
7632
7804
  transform: {
7633
7805
  x: number;
@@ -8218,7 +8390,6 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
8218
8390
  bindingKey?: string | undefined;
8219
8391
  children: string[];
8220
8392
  editorOnly?: boolean | undefined;
8221
- effectId: string;
8222
8393
  id: string;
8223
8394
  layoutItem?: {
8224
8395
  flexGrow: number;
@@ -8267,6 +8438,84 @@ export declare const SceneSchema: import("@sinclair/typebox").TObject<{
8267
8438
  locked?: boolean | undefined;
8268
8439
  name: string;
8269
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
+ };
8270
8519
  simulationSpace: "local" | "world";
8271
8520
  transform: {
8272
8521
  x: number;
@@ -9493,16 +9742,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
9493
9742
  partType: "bone" | "slot";
9494
9743
  partName: string;
9495
9744
  targetNodeId: string;
9496
- positionMultiplier?: {
9497
- x: number;
9498
- y: number;
9499
- } | undefined;
9500
- positionMultiplierOverrides?: {
9501
- mobile?: {
9502
- x?: number | undefined;
9503
- y?: number | undefined;
9504
- } | undefined;
9505
- } | undefined;
9506
9745
  }[] | undefined;
9507
9746
  editorOnly?: boolean | undefined;
9508
9747
  id: string;
@@ -10892,16 +11131,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
10892
11131
  partType: "bone" | "slot";
10893
11132
  partName: string;
10894
11133
  targetNodeId: string;
10895
- positionMultiplier?: {
10896
- x: number;
10897
- y: number;
10898
- } | undefined;
10899
- positionMultiplierOverrides?: {
10900
- mobile?: {
10901
- x?: number | undefined;
10902
- y?: number | undefined;
10903
- } | undefined;
10904
- } | undefined;
10905
11134
  }[] | undefined;
10906
11135
  editorOnly?: boolean | undefined;
10907
11136
  id: string;
@@ -11717,7 +11946,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
11717
11946
  bindingKey?: string | undefined;
11718
11947
  children: string[];
11719
11948
  editorOnly?: boolean | undefined;
11720
- effectId: string;
11721
11949
  id: string;
11722
11950
  layoutItem?: {
11723
11951
  flexGrow: number;
@@ -11766,6 +11994,84 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
11766
11994
  locked?: boolean | undefined;
11767
11995
  name: string;
11768
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
+ };
11769
12075
  simulationSpace: "local" | "world";
11770
12076
  transform: {
11771
12077
  x: number;
@@ -12356,7 +12662,6 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12356
12662
  bindingKey?: string | undefined;
12357
12663
  children: string[];
12358
12664
  editorOnly?: boolean | undefined;
12359
- effectId: string;
12360
12665
  id: string;
12361
12666
  layoutItem?: {
12362
12667
  flexGrow: number;
@@ -12405,6 +12710,84 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12405
12710
  locked?: boolean | undefined;
12406
12711
  name: string;
12407
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
+ };
12408
12791
  simulationSpace: "local" | "world";
12409
12792
  transform: {
12410
12793
  x: number;
@@ -12535,7 +12918,7 @@ export declare const PrefabDefinitionSchema: import("@sinclair/typebox").TObject
12535
12918
  }>;
12536
12919
  export type PrefabDefinition = Static<typeof PrefabDefinitionSchema>;
12537
12920
  export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<{
12538
- schemaVersion: import("@sinclair/typebox").TLiteral<44>;
12921
+ schemaVersion: import("@sinclair/typebox").TLiteral<46>;
12539
12922
  project: import("@sinclair/typebox").TObject<{
12540
12923
  id: import("@sinclair/typebox").TString;
12541
12924
  name: import("@sinclair/typebox").TString;
@@ -12646,87 +13029,7 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
12646
13029
  }>;
12647
13030
  frames: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
12648
13031
  }>]>>;
12649
- effects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12650
- id: import("@sinclair/typebox").TString;
12651
- name: import("@sinclair/typebox").TString;
12652
- type: import("@sinclair/typebox").TLiteral<"particles">;
12653
- maxParticles: import("@sinclair/typebox").TInteger;
12654
- seed: import("@sinclair/typebox").TInteger;
12655
- emission: import("@sinclair/typebox").TObject<{
12656
- delay: import("@sinclair/typebox").TNumber;
12657
- duration: import("@sinclair/typebox").TNumber;
12658
- loop: import("@sinclair/typebox").TBoolean;
12659
- rate: import("@sinclair/typebox").TNumber;
12660
- bursts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12661
- time: import("@sinclair/typebox").TNumber;
12662
- count: import("@sinclair/typebox").TInteger;
12663
- }>>;
12664
- }>;
12665
- particle: import("@sinclair/typebox").TObject<{
12666
- lifetime: import("@sinclair/typebox").TObject<{
12667
- min: import("@sinclair/typebox").TNumber;
12668
- max: import("@sinclair/typebox").TNumber;
12669
- }>;
12670
- spawnShape: import("@sinclair/typebox").TObject<{
12671
- type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"point">, import("@sinclair/typebox").TLiteral<"rectangle">, import("@sinclair/typebox").TLiteral<"circle">]>;
12672
- }>;
12673
- movement: import("@sinclair/typebox").TObject<{
12674
- speed: import("@sinclair/typebox").TObject<{
12675
- min: import("@sinclair/typebox").TNumber;
12676
- max: import("@sinclair/typebox").TNumber;
12677
- }>;
12678
- directionDegrees: import("@sinclair/typebox").TNumber;
12679
- spreadDegrees: import("@sinclair/typebox").TNumber;
12680
- accelerationX: import("@sinclair/typebox").TNumber;
12681
- accelerationY: import("@sinclair/typebox").TNumber;
12682
- drag: import("@sinclair/typebox").TNumber;
12683
- }>;
12684
- visual: import("@sinclair/typebox").TObject<{
12685
- source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
12686
- type: import("@sinclair/typebox").TLiteral<"single">;
12687
- assetId: import("@sinclair/typebox").TString;
12688
- }>, import("@sinclair/typebox").TObject<{
12689
- type: import("@sinclair/typebox").TLiteral<"random">;
12690
- assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
12691
- }>, import("@sinclair/typebox").TObject<{
12692
- type: import("@sinclair/typebox").TLiteral<"sequence">;
12693
- assetIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
12694
- fps: import("@sinclair/typebox").TNumber;
12695
- loop: import("@sinclair/typebox").TBoolean;
12696
- randomStartFrame: import("@sinclair/typebox").TBoolean;
12697
- }>]>;
12698
- alpha: import("@sinclair/typebox").TObject<{
12699
- start: import("@sinclair/typebox").TNumber;
12700
- end: import("@sinclair/typebox").TNumber;
12701
- }>;
12702
- scale: import("@sinclair/typebox").TObject<{
12703
- start: import("@sinclair/typebox").TObject<{
12704
- min: import("@sinclair/typebox").TNumber;
12705
- max: import("@sinclair/typebox").TNumber;
12706
- }>;
12707
- end: import("@sinclair/typebox").TObject<{
12708
- min: import("@sinclair/typebox").TNumber;
12709
- max: import("@sinclair/typebox").TNumber;
12710
- }>;
12711
- }>;
12712
- tint: import("@sinclair/typebox").TObject<{
12713
- start: import("@sinclair/typebox").TString;
12714
- end: import("@sinclair/typebox").TString;
12715
- }>;
12716
- rotation: import("@sinclair/typebox").TObject<{
12717
- initialDegrees: import("@sinclair/typebox").TObject<{
12718
- min: import("@sinclair/typebox").TNumber;
12719
- max: import("@sinclair/typebox").TNumber;
12720
- }>;
12721
- angularVelocityDegrees: import("@sinclair/typebox").TObject<{
12722
- min: import("@sinclair/typebox").TNumber;
12723
- max: import("@sinclair/typebox").TNumber;
12724
- }>;
12725
- }>;
12726
- 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">]>;
12727
- }>;
12728
- }>;
12729
- }>>;
13032
+ effects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>;
12730
13033
  prefabs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12731
13034
  id: import("@sinclair/typebox").TString;
12732
13035
  name: import("@sinclair/typebox").TString;
@@ -13696,16 +13999,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
13696
13999
  partType: "bone" | "slot";
13697
14000
  partName: string;
13698
14001
  targetNodeId: string;
13699
- positionMultiplier?: {
13700
- x: number;
13701
- y: number;
13702
- } | undefined;
13703
- positionMultiplierOverrides?: {
13704
- mobile?: {
13705
- x?: number | undefined;
13706
- y?: number | undefined;
13707
- } | undefined;
13708
- } | undefined;
13709
14002
  }[] | undefined;
13710
14003
  editorOnly?: boolean | undefined;
13711
14004
  id: string;
@@ -15095,16 +15388,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
15095
15388
  partType: "bone" | "slot";
15096
15389
  partName: string;
15097
15390
  targetNodeId: string;
15098
- positionMultiplier?: {
15099
- x: number;
15100
- y: number;
15101
- } | undefined;
15102
- positionMultiplierOverrides?: {
15103
- mobile?: {
15104
- x?: number | undefined;
15105
- y?: number | undefined;
15106
- } | undefined;
15107
- } | undefined;
15108
15391
  }[] | undefined;
15109
15392
  editorOnly?: boolean | undefined;
15110
15393
  id: string;
@@ -15920,7 +16203,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
15920
16203
  bindingKey?: string | undefined;
15921
16204
  children: string[];
15922
16205
  editorOnly?: boolean | undefined;
15923
- effectId: string;
15924
16206
  id: string;
15925
16207
  layoutItem?: {
15926
16208
  flexGrow: number;
@@ -15969,6 +16251,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
15969
16251
  locked?: boolean | undefined;
15970
16252
  name: string;
15971
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
+ };
15972
16332
  simulationSpace: "local" | "world";
15973
16333
  transform: {
15974
16334
  x: number;
@@ -16559,7 +16919,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
16559
16919
  bindingKey?: string | undefined;
16560
16920
  children: string[];
16561
16921
  editorOnly?: boolean | undefined;
16562
- effectId: string;
16563
16922
  id: string;
16564
16923
  layoutItem?: {
16565
16924
  flexGrow: number;
@@ -16608,6 +16967,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
16608
16967
  locked?: boolean | undefined;
16609
16968
  name: string;
16610
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
+ };
16611
17048
  simulationSpace: "local" | "world";
16612
17049
  transform: {
16613
17050
  x: number;
@@ -17705,16 +18142,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
17705
18142
  partType: "bone" | "slot";
17706
18143
  partName: string;
17707
18144
  targetNodeId: string;
17708
- positionMultiplier?: {
17709
- x: number;
17710
- y: number;
17711
- } | undefined;
17712
- positionMultiplierOverrides?: {
17713
- mobile?: {
17714
- x?: number | undefined;
17715
- y?: number | undefined;
17716
- } | undefined;
17717
- } | undefined;
17718
18145
  }[] | undefined;
17719
18146
  editorOnly?: boolean | undefined;
17720
18147
  id: string;
@@ -19104,16 +19531,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
19104
19531
  partType: "bone" | "slot";
19105
19532
  partName: string;
19106
19533
  targetNodeId: string;
19107
- positionMultiplier?: {
19108
- x: number;
19109
- y: number;
19110
- } | undefined;
19111
- positionMultiplierOverrides?: {
19112
- mobile?: {
19113
- x?: number | undefined;
19114
- y?: number | undefined;
19115
- } | undefined;
19116
- } | undefined;
19117
19534
  }[] | undefined;
19118
19535
  editorOnly?: boolean | undefined;
19119
19536
  id: string;
@@ -19929,7 +20346,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
19929
20346
  bindingKey?: string | undefined;
19930
20347
  children: string[];
19931
20348
  editorOnly?: boolean | undefined;
19932
- effectId: string;
19933
20349
  id: string;
19934
20350
  layoutItem?: {
19935
20351
  flexGrow: number;
@@ -19978,6 +20394,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
19978
20394
  locked?: boolean | undefined;
19979
20395
  name: string;
19980
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
+ };
19981
20475
  simulationSpace: "local" | "world";
19982
20476
  transform: {
19983
20477
  x: number;
@@ -20568,7 +21062,6 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
20568
21062
  bindingKey?: string | undefined;
20569
21063
  children: string[];
20570
21064
  editorOnly?: boolean | undefined;
20571
- effectId: string;
20572
21065
  id: string;
20573
21066
  layoutItem?: {
20574
21067
  flexGrow: number;
@@ -20617,6 +21110,84 @@ export declare const ProjectDocumentSchema: import("@sinclair/typebox").TObject<
20617
21110
  locked?: boolean | undefined;
20618
21111
  name: string;
20619
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
+ };
20620
21191
  simulationSpace: "local" | "world";
20621
21192
  transform: {
20622
21193
  x: number;
@@ -20785,7 +21356,7 @@ export declare class ProjectDocumentMigrationError extends Error {
20785
21356
  constructor(message: string);
20786
21357
  }
20787
21358
  export declare function createStableId(): string;
20788
- export declare function collectEffectAssetIds(effect: EffectDefinition): string[];
21359
+ export declare function collectParticleEmitterAssetIds(node: Pick<ParticleEmitterNode, "particle">): string[];
20789
21360
  export declare function validateProjectDocument(input: unknown): ValidationResult;
20790
21361
  export declare function assertProjectDocument(input: unknown): asserts input is ProjectDocument;
20791
21362
  export declare function migrateProjectDocument(input: unknown): ProjectDocument;