effect-motion 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +2 -2
  2. package/dist/Camera.d.ts +186 -49
  3. package/dist/Camera.js +343 -76
  4. package/dist/Color.d.ts +101 -1
  5. package/dist/Color.js +101 -1
  6. package/dist/EffectMotionError.d.ts +17 -0
  7. package/dist/EffectMotionError.js +17 -0
  8. package/dist/Entity.d.ts +682 -38
  9. package/dist/Entity.js +271 -27
  10. package/dist/Font.d.ts +108 -0
  11. package/dist/Font.js +95 -0
  12. package/dist/Image.d.ts +71 -0
  13. package/dist/Image.js +50 -0
  14. package/dist/Instance.d.ts +73 -11
  15. package/dist/Instance.js +44 -11
  16. package/dist/Motion.d.ts +328 -53
  17. package/dist/Motion.js +278 -46
  18. package/dist/Physics.d.ts +154 -20
  19. package/dist/Physics.js +92 -11
  20. package/dist/Projection.d.ts +37 -132
  21. package/dist/Projection.js +33 -292
  22. package/dist/Resource.d.ts +26 -0
  23. package/dist/Resource.js +41 -0
  24. package/dist/Runner.d.ts +653 -330
  25. package/dist/Runner.js +208 -158
  26. package/dist/Scene.d.ts +621 -171
  27. package/dist/Scene.js +620 -89
  28. package/dist/Timing.d.ts +170 -13
  29. package/dist/Timing.js +124 -6
  30. package/dist/Tree.d.ts +39 -0
  31. package/dist/Tree.js +127 -0
  32. package/dist/index.d.ts +54 -5
  33. package/dist/index.js +56 -5
  34. package/dist/particles/Particle.d.ts +2 -2
  35. package/dist/particles/ParticleField.d.ts +8 -6
  36. package/dist/particles/ParticleField.js +8 -9
  37. package/dist/particles/constructors.d.ts +5 -6
  38. package/dist/particles/constructors.js +8 -3
  39. package/dist/particles/legacy.d.ts +58 -0
  40. package/dist/particles/legacy.js +46 -0
  41. package/dist/particles/simulate.js +13 -5
  42. package/dist/particles/step.js +14 -10
  43. package/dist/types.d.ts +5 -0
  44. package/dist/types.js +1 -0
  45. package/package.json +2 -4
  46. package/dist/CameraHelpers.d.ts +0 -70
  47. package/dist/CameraHelpers.js +0 -239
  48. package/dist/CanvasExporter.d.ts +0 -12
  49. package/dist/CanvasExporter.js +0 -40
  50. package/dist/Fonts.d.ts +0 -41
  51. package/dist/Fonts.js +0 -27
  52. package/dist/Images.d.ts +0 -33
  53. package/dist/Images.js +0 -24
  54. package/dist/PngExporter.d.ts +0 -6
  55. package/dist/PngExporter.js +0 -85
  56. package/dist/Renderer.d.ts +0 -118
  57. package/dist/Renderer.js +0 -381
  58. package/dist/Shapes.d.ts +0 -11
  59. package/dist/Shapes.js +0 -11
  60. package/dist/demo.d.ts +0 -3
  61. package/dist/demo.js +0 -65
  62. package/dist/render/dof.d.ts +0 -27
  63. package/dist/render/dof.js +0 -37
  64. package/dist/render/paint.d.ts +0 -30
  65. package/dist/render/paint.js +0 -36
  66. package/dist/render/shapes.d.ts +0 -42
  67. package/dist/render/shapes.js +0 -310
  68. package/dist/shapes/Circle.d.ts +0 -32
  69. package/dist/shapes/Circle.js +0 -9
  70. package/dist/shapes/Ellipse.d.ts +0 -35
  71. package/dist/shapes/Ellipse.js +0 -10
  72. package/dist/shapes/Group.d.ts +0 -116
  73. package/dist/shapes/Group.js +0 -82
  74. package/dist/shapes/Hud.d.ts +0 -38
  75. package/dist/shapes/Hud.js +0 -35
  76. package/dist/shapes/Image.d.ts +0 -45
  77. package/dist/shapes/Image.js +0 -28
  78. package/dist/shapes/Line.d.ts +0 -47
  79. package/dist/shapes/Line.js +0 -35
  80. package/dist/shapes/Path.d.ts +0 -107
  81. package/dist/shapes/Path.js +0 -32
  82. package/dist/shapes/Rect.d.ts +0 -51
  83. package/dist/shapes/Rect.js +0 -22
  84. package/dist/shapes/Shape2D.d.ts +0 -49
  85. package/dist/shapes/Shape2D.js +0 -52
  86. package/dist/shapes/Shapes.d.ts +0 -11
  87. package/dist/shapes/Shapes.js +0 -11
  88. package/dist/shapes/Square.d.ts +0 -32
  89. package/dist/shapes/Square.js +0 -11
  90. package/dist/shapes/Text.d.ts +0 -51
  91. package/dist/shapes/Text.js +0 -24
package/dist/Runner.d.ts CHANGED
@@ -3,41 +3,91 @@ import type * as Cause from "effect/Cause";
3
3
  import * as Context from "effect/Context";
4
4
  import * as Effect from "effect/Effect";
5
5
  import type * as Fiber from "effect/Fiber";
6
- import type * as Schema from "effect/Schema";
7
- import { type CameraState } from "./Camera.js";
8
6
  import * as Color from "./Color.js";
9
- import type * as Entity from "./Entity.js";
7
+ import * as Entity from "./Entity.js";
10
8
  import * as Instance from "./Instance.js";
11
- import { Group } from "./shapes/Group.js";
9
+ import * as Projection from "./Projection.js";
10
+ import { ROOT_ID } from "./Tree.js";
12
11
  export declare const TypeId: "~motion/SceneRunner";
13
- /** conventional id of the implicit root group every instance attaches to */
14
- export declare const ROOT_ID = "root";
12
+ export { ROOT_ID };
15
13
  export type Seed = number | string;
16
- /** the fixed default: scenes are deterministic even with no seed set */
14
+ /**
15
+ * The seed used when none is given.
16
+ *
17
+ * @remarks
18
+ * Fixed rather than random on purpose: a scene using randomness still
19
+ * produces identical frames on every run unless you deliberately vary the
20
+ * seed.
21
+ */
17
22
  export declare const defaultSeed: Seed;
23
+ /**
24
+ * Playback settings — how a scene RUNS, as opposed to what it IS.
25
+ *
26
+ * @remarks
27
+ * Passed to `Scene.run` / `Scene.stream`, so the same scene can be played
28
+ * back at different rates or seeds without being rewritten. Resolution and
29
+ * background are NOT here: those are the composition's own identity, fixed
30
+ * at `Scene.make`.
31
+ */
18
32
  export type Settings = {
33
+ /**
34
+ * Frames produced per second of scene time.
35
+ *
36
+ * @remarks
37
+ * Determines how many frames a given duration becomes: a one-second
38
+ * animation is 30 frames at 30fps and 60 at 60fps. It changes the
39
+ * sampling, never the motion — the same scene looks the same, just
40
+ * smoother.
41
+ *
42
+ * @defaultValue `60`
43
+ */
19
44
  frameRate: number;
20
- /** output resolution — carried on every frame so renderers can size themselves */
21
- width: number;
22
- height: number;
23
- /** canvas background — carried on every frame so renderers can paint it (default a near-black, not pure #000) */
24
- backgroundColor: Color.Color;
25
45
  /**
26
- * seeds the scene's pseudo-random service (effect's Random via
27
- * withSeed); the fixed default keeps default-constructed scenes
28
- * byte-identical across runs. Note: the generator algorithm belongs
29
- * to effect, so upgrading effect may change seeded sequences.
46
+ * Seeds the scene's random number generator.
47
+ *
48
+ * @remarks
49
+ * Randomness in a scene comes from this seed rather than
50
+ * `Math.random()`, so the "random" scatter of a particle field is
51
+ * identical on every run. Change the seed to get a different arrangement
52
+ * that is itself reproducible.
53
+ *
54
+ * Note the generator belongs to `effect`, so upgrading it can change the
55
+ * sequence a given seed produces.
56
+ *
57
+ * @defaultValue `"effect-motion"`
30
58
  */
31
59
  seed: Seed;
32
60
  /**
33
- * hard cap on frames a scene may produce (default 36_000 — 10 minutes
34
- * at 60fps): a scene that exceeds it dies instead of hanging the
35
- * consumer. Set to `Infinity` to declare an intentionally infinite
36
- * scene.
61
+ * Hard cap on how many frames a scene may produce.
62
+ *
63
+ * @remarks
64
+ * A safety net: a scene that exceeds it fails with a message naming the
65
+ * limit instead of hanging whatever is consuming it. The usual cause is
66
+ * an unbounded loop with nothing to end it.
67
+ *
68
+ * Set it to `Infinity` to declare a deliberately endless scene.
69
+ *
70
+ * @defaultValue `36_000` — ten minutes at 60fps
37
71
  */
38
72
  maxFrames: number;
39
73
  };
40
- export type GroupInstance = Instance.Of<typeof Group>;
74
+ /**
75
+ * What a composition IS: its pixel dimensions and background.
76
+ *
77
+ * @remarks
78
+ * Set at `Scene.make` and carried on every frame, so a frame is
79
+ * self-describing. A nested scene keeps its own config as its bounds — that
80
+ * is what a played scene clips and paints within.
81
+ */
82
+ export type CompConfig = {
83
+ width: number;
84
+ height: number;
85
+ /** carried on every frame so renderers can paint it; transparent = nothing painted */
86
+ backgroundColor: Color.Color;
87
+ };
88
+ export declare const defaultComp: CompConfig;
89
+ /** A handle to a container (`Group` or `Hud`) — the only mountable parents. */
90
+ export type GroupInstance = Instance.Instance<Entity.ContainerTag>;
41
91
  /**
42
92
  * A child in a polymorphic `children` list: a plain string (→ a `Text`),
43
93
  * an already-created `Instance`, or an `Effect` that resolves to one (a
@@ -46,72 +96,19 @@ export type GroupInstance = Instance.Of<typeof Group>;
46
96
  */
47
97
  export type Child = string | Instance.Instance | Effect.Effect<Instance.Instance, never, Runner>;
48
98
  /**
49
- * Builtin, engine-owned instance properties — namespaced with `$` and
50
- * held BESIDE entity data, never in the entity schema. Every entity gets
51
- * them uniformly. `$visible` defaults to `true`.
52
- */
53
- export interface BuiltinProps {
54
- readonly $visible?: boolean;
55
- }
56
- /**
57
- * The input accepted by `instantiate`: an entity's own make-input, plus
58
- * builtin props ($visible), plus — when the entity has a `children` field
59
- * — a polymorphic `children` list (strings/instances/effects) in place of
60
- * the stored `Array<string>` of ids.
99
+ * The input `instantiate` accepts: the entity's own make-input, except that
100
+ * a `children` field (stored as `Array<string>` of ids) is authored as the
101
+ * polymorphic {@link Child} list — the runner normalizes it to ids in list
102
+ * order.
61
103
  */
62
- export type InstantiateProps<MakeInput> = Omit<MakeInput, "children"> & BuiltinProps & ("children" extends keyof MakeInput ? {
104
+ export type InstantiateProps<Tag extends Entity.EntityTag> = Omit<Entity.MakeInput<Tag>, "children"> & (Tag extends Entity.ContainerTag ? {
63
105
  readonly children?: ReadonlyArray<Child>;
64
106
  } : Record<never, never>);
65
107
  /**
66
108
  * The ambient mount parent for `instantiate` — provided per scene
67
109
  * evaluation (`Scene.play({ parent })`); `null` means the runner root.
68
110
  */
69
- export declare const CurrentParent: Context.Reference<Instance.Instance<"shapes/Group", Schema.Struct<{
70
- x: Schema.withConstructorDefault<Schema.Number>;
71
- y: Schema.withConstructorDefault<Schema.Number>;
72
- z: Schema.withConstructorDefault<Schema.Number>;
73
- opacity: Schema.withConstructorDefault<Schema.Number>;
74
- transform: Schema.withConstructorDefault<Schema.Struct<{
75
- readonly a: Schema.Number;
76
- readonly b: Schema.Number;
77
- readonly c: Schema.Number;
78
- readonly d: Schema.Number;
79
- readonly e: Schema.Number;
80
- readonly f: Schema.Number;
81
- }>>;
82
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
83
- }>, {
84
- "~position": Entity.TraitLens<Schema.Struct.ReadonlySide<{
85
- x: Schema.withConstructorDefault<Schema.Number>;
86
- y: Schema.withConstructorDefault<Schema.Number>;
87
- z: Schema.withConstructorDefault<Schema.Number>;
88
- opacity: Schema.withConstructorDefault<Schema.Number>;
89
- transform: Schema.withConstructorDefault<Schema.Struct<{
90
- readonly a: Schema.Number;
91
- readonly b: Schema.Number;
92
- readonly c: Schema.Number;
93
- readonly d: Schema.Number;
94
- readonly e: Schema.Number;
95
- readonly f: Schema.Number;
96
- }>>;
97
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
98
- }, "Type">, Entity.Position>;
99
- "~opacity": Entity.TraitLens<Schema.Struct.ReadonlySide<{
100
- x: Schema.withConstructorDefault<Schema.Number>;
101
- y: Schema.withConstructorDefault<Schema.Number>;
102
- z: Schema.withConstructorDefault<Schema.Number>;
103
- opacity: Schema.withConstructorDefault<Schema.Number>;
104
- transform: Schema.withConstructorDefault<Schema.Struct<{
105
- readonly a: Schema.Number;
106
- readonly b: Schema.Number;
107
- readonly c: Schema.Number;
108
- readonly d: Schema.Number;
109
- readonly e: Schema.Number;
110
- readonly f: Schema.Number;
111
- }>>;
112
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
113
- }, "Type">, number>;
114
- }> | null>;
111
+ export declare const CurrentParent: Context.Reference<GroupInstance | null>;
115
112
  /**
116
113
  * A branch of animation as the runner tracks it: its fiber and its
117
114
  * SEMANTIC end (`finished` resolves at `Scene.finish` or completion,
@@ -121,145 +118,307 @@ export interface BranchEntry {
121
118
  readonly fiber: Fiber.Fiber<unknown, unknown>;
122
119
  readonly finished: Effect.Effect<void>;
123
120
  }
121
+ /**
122
+ * The resting camera for a comp of the given width: width-relative focal
123
+ * length (AE's 50mm equivalent), positioned so the z=0 plane projects at
124
+ * scale 1 and is in focus.
125
+ */
126
+ export declare const identityCameraView: (width: number) => Projection.CameraView & Projection.PointOfInterest;
127
+ export declare const identityCamera: (width: number) => Entity.EntityByTag<"Camera">;
124
128
  declare const Runner_base: Context.ServiceClass<Runner, "Runner", {
125
- root: Instance.Instance<"shapes/Group", Schema.Struct<{
126
- x: Schema.withConstructorDefault<Schema.Number>;
127
- y: Schema.withConstructorDefault<Schema.Number>;
128
- z: Schema.withConstructorDefault<Schema.Number>;
129
- opacity: Schema.withConstructorDefault<Schema.Number>;
130
- transform: Schema.withConstructorDefault<Schema.Struct<{
131
- readonly a: Schema.Number;
132
- readonly b: Schema.Number;
133
- readonly c: Schema.Number;
134
- readonly d: Schema.Number;
135
- readonly e: Schema.Number;
136
- readonly f: Schema.Number;
137
- }>>;
138
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
139
- }>, {
140
- "~position": Entity.TraitLens<Schema.Struct.ReadonlySide<{
141
- x: Schema.withConstructorDefault<Schema.Number>;
142
- y: Schema.withConstructorDefault<Schema.Number>;
143
- z: Schema.withConstructorDefault<Schema.Number>;
144
- opacity: Schema.withConstructorDefault<Schema.Number>;
145
- transform: Schema.withConstructorDefault<Schema.Struct<{
146
- readonly a: Schema.Number;
147
- readonly b: Schema.Number;
148
- readonly c: Schema.Number;
149
- readonly d: Schema.Number;
150
- readonly e: Schema.Number;
151
- readonly f: Schema.Number;
152
- }>>;
153
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
154
- }, "Type">, Entity.Position>;
155
- "~opacity": Entity.TraitLens<Schema.Struct.ReadonlySide<{
156
- x: Schema.withConstructorDefault<Schema.Number>;
157
- y: Schema.withConstructorDefault<Schema.Number>;
158
- z: Schema.withConstructorDefault<Schema.Number>;
159
- opacity: Schema.withConstructorDefault<Schema.Number>;
160
- transform: Schema.withConstructorDefault<Schema.Struct<{
161
- readonly a: Schema.Number;
162
- readonly b: Schema.Number;
163
- readonly c: Schema.Number;
164
- readonly d: Schema.Number;
165
- readonly e: Schema.Number;
166
- readonly f: Schema.Number;
167
- }>>;
168
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
169
- }, "Type">, number>;
170
- }>;
171
- instantiate: <Name extends string, Data extends Schema.Top, Traits extends Partial<Entity.EntityTraits<Data["Type"]>>>(entity: Entity.Entity<Name, Data, Traits>, props: InstantiateProps<Data["~type.make.in"]>) => Effect.Effect<Instance.Instance<Name, Data, Traits>, never, Runner>;
129
+ root: GroupInstance;
130
+ instantiate: <Tag extends Entity.EntityTag>(kind: Tag, props: InstantiateProps<Tag>) => Effect.Effect<Instance.Instance<Tag>, never, Runner>;
172
131
  appendChild: (parent: GroupInstance, child: Instance.Instance) => void;
173
132
  removeChild: (parent: GroupInstance, child: Instance.Instance) => void;
174
133
  settings: {
175
134
  frameRate: number;
176
- width: number;
177
- height: number;
178
- backgroundColor: Color.Color;
179
135
  seed: Seed;
180
136
  maxFrames: number;
181
137
  };
182
- getDataUnsafe: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>) => Data["Type"] | null;
183
- setDataUnsafe: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>, data: unknown) => void;
138
+ comp: CompConfig;
139
+ getDataUnsafe: <Tag extends Entity.EntityTag>(instance: Instance.Instance<Tag>) => Entity.EntityByTag<Tag> | null;
140
+ setDataUnsafe: <Tag extends Entity.EntityTag>(instance: Instance.Instance<Tag>, state: Entity.EntityByTag<Tag>) => void;
184
141
  state: Effect.Effect<{
185
- instances: {
186
- [x: string]: {
187
- data: unknown;
188
- entity: Entity.AnyEntity;
189
- $visible: boolean;
190
- };
191
- };
142
+ instances: Record<string, {
143
+ data: Entity.Entity;
144
+ }>;
192
145
  root: string;
193
146
  frameRate: number;
194
147
  width: number;
195
148
  height: number;
196
149
  backgroundColor: Color.Color;
197
- camera: CameraState;
198
- }, never, never>;
199
- camera: Instance.Instance<"Camera", Schema.Struct<{
200
- x: Schema.withConstructorDefault<Schema.Number>;
201
- y: Schema.withConstructorDefault<Schema.Number>;
202
- z: Schema.withConstructorDefault<Schema.Number>;
203
- rotX: Schema.withConstructorDefault<Schema.Number>;
204
- rotY: Schema.withConstructorDefault<Schema.Number>;
205
- rotZ: Schema.withConstructorDefault<Schema.Number>;
206
- focalLength: Schema.withConstructorDefault<Schema.Number>;
207
- focusDistance: Schema.withConstructorDefault<Schema.Number>;
208
- aperture: Schema.withConstructorDefault<Schema.Number>;
209
- poiX: Schema.optionalKey<Schema.Number>;
210
- poiY: Schema.optionalKey<Schema.Number>;
211
- poiZ: Schema.optionalKey<Schema.Number>;
212
- }>, {
213
- readonly "~position": {
214
- get: (data: {
215
- readonly x: number;
216
- readonly y: number;
217
- readonly z: number;
218
- readonly rotX: number;
219
- readonly rotY: number;
220
- readonly rotZ: number;
221
- readonly focalLength: number;
222
- readonly focusDistance: number;
223
- readonly aperture: number;
224
- readonly poiX?: number;
225
- readonly poiY?: number;
226
- readonly poiZ?: number;
227
- }) => {
228
- x: number;
229
- y: number;
230
- z: number;
231
- };
232
- set: (data: {
233
- readonly x: number;
234
- readonly y: number;
235
- readonly z: number;
236
- readonly rotX: number;
237
- readonly rotY: number;
238
- readonly rotZ: number;
239
- readonly focalLength: number;
240
- readonly focusDistance: number;
241
- readonly aperture: number;
242
- readonly poiX?: number;
243
- readonly poiY?: number;
244
- readonly poiZ?: number;
245
- }, value: Entity.Position) => {
246
- readonly x: number;
247
- readonly y: number;
248
- readonly z: number;
249
- readonly rotX: number;
250
- readonly rotY: number;
251
- readonly rotZ: number;
252
- readonly focalLength: number;
253
- readonly focusDistance: number;
254
- readonly aperture: number;
255
- readonly poiX?: number;
256
- readonly poiY?: number;
257
- readonly poiZ?: number;
258
- };
150
+ camera: Projection.CameraView & Projection.PointOfInterest;
151
+ comps: {
152
+ [k: string]: CompConfig;
259
153
  };
260
- }>;
261
- setCamera: (instance: Instance.Instance) => void;
262
- destroy: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>) => void;
154
+ }, never, never>;
155
+ /**
156
+ * ponytail: create a tree node for an entity that is NOT in the
157
+ * union — the particle system only (design D10). Mounts under the
158
+ * ambient parent like any instance. Delete with the particles
159
+ * rewrite; see `particlesEscapeInstantiate`.
160
+ */
161
+ instantiateEscape: (state: import("effect/Schema").Struct.ReadonlySide<{
162
+ readonly _tag: import("effect/Schema").tag<"Camera">;
163
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
164
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
165
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
166
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
167
+ }>>;
168
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
169
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
170
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
171
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
172
+ }>>;
173
+ readonly focalLength: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
174
+ readonly focusDistance: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
175
+ readonly aperture: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
176
+ readonly poi: import("effect/Schema").withConstructorDefault<import("effect/Schema").NullOr<import("effect/Schema").TaggedStruct<"Vec3", {
177
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
178
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
179
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
180
+ }>>>;
181
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
182
+ readonly _tag: import("effect/Schema").tag<"Circle">;
183
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
184
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
185
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
186
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
187
+ }>>;
188
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
189
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
190
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
191
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
192
+ }>>;
193
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
194
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
195
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
196
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
197
+ }>>;
198
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
199
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
200
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
201
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
202
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
203
+ readonly radius: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
204
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
205
+ readonly _tag: import("effect/Schema").tag<"Ellipse">;
206
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
207
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
208
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
209
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
210
+ }>>;
211
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
212
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
213
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
214
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
215
+ }>>;
216
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
217
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
218
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
219
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
220
+ }>>;
221
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
222
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
223
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
224
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
225
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
226
+ readonly radiusX: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
227
+ readonly radiusY: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
228
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
229
+ readonly _tag: import("effect/Schema").tag<"Group">;
230
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
231
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
232
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
233
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
234
+ }>>;
235
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
236
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
237
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
238
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
239
+ }>>;
240
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
241
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
242
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
243
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
244
+ }>>;
245
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
246
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
247
+ readonly children: import("effect/Schema").withConstructorDefault<import("effect/Schema").$Array<import("effect/Schema").String>>;
248
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
249
+ readonly _tag: import("effect/Schema").tag<"Hud">;
250
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
251
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
252
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
253
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
254
+ }>>;
255
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
256
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
257
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
258
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
259
+ }>>;
260
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
261
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
262
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
263
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
264
+ }>>;
265
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
266
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
267
+ readonly children: import("effect/Schema").withConstructorDefault<import("effect/Schema").$Array<import("effect/Schema").String>>;
268
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
269
+ readonly _tag: import("effect/Schema").tag<"Line">;
270
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
271
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
272
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
273
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
274
+ }>>;
275
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
276
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
277
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
278
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
279
+ }>>;
280
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
281
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
282
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
283
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
284
+ }>>;
285
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
286
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
287
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
288
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
289
+ readonly start: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
290
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
291
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
292
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
293
+ }>>;
294
+ readonly end: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
295
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
296
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
297
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
298
+ }>>;
299
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
300
+ readonly _tag: import("effect/Schema").tag<"Path">;
301
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
302
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
303
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
304
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
305
+ }>>;
306
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
307
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
308
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
309
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
310
+ }>>;
311
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
312
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
313
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
314
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
315
+ }>>;
316
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
317
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
318
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
319
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
320
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
321
+ readonly commands: import("effect/Schema").NonEmptyArray<import("effect/Schema").TaggedUnion<{
322
+ readonly L: import("effect/Schema").TaggedStruct<"L", {
323
+ x: import("effect/Schema").Number;
324
+ y: import("effect/Schema").Number;
325
+ z: import("effect/Schema").optionalKey<import("effect/Schema").Number>;
326
+ }>;
327
+ readonly M: import("effect/Schema").TaggedStruct<"M", {
328
+ x: import("effect/Schema").Number;
329
+ y: import("effect/Schema").Number;
330
+ z: import("effect/Schema").optionalKey<import("effect/Schema").Number>;
331
+ }>;
332
+ readonly Z: import("effect/Schema").TaggedStruct<"Z", {}>;
333
+ }>>;
334
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
335
+ readonly _tag: import("effect/Schema").tag<"Rect">;
336
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
337
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
338
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
339
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
340
+ }>>;
341
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
342
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
343
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
344
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
345
+ }>>;
346
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
347
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
348
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
349
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
350
+ }>>;
351
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
352
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
353
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
354
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
355
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
356
+ readonly width: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
357
+ readonly height: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
358
+ }, "Type"> | {
359
+ readonly _tag: "Image";
360
+ readonly position: import("effect/Schema").Struct.ReadonlySide<{
361
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
362
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
363
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
364
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
365
+ }, "Type">;
366
+ readonly rotation: import("effect/Schema").Struct.ReadonlySide<{
367
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
368
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
369
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
370
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
371
+ }, "Type">;
372
+ readonly scale: import("effect/Schema").Struct.ReadonlySide<{
373
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
374
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
375
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
376
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
377
+ }, "Type">;
378
+ readonly opacity: number;
379
+ readonly visible: boolean;
380
+ readonly image: import("effect/Schema").Struct.ReadonlySide<{
381
+ readonly _tag: import("effect/Schema").tag<"effect-motion/Resources/Image">;
382
+ readonly id: import("effect/Schema").String;
383
+ }, "Type">;
384
+ readonly width?: number;
385
+ readonly height?: number;
386
+ } | {
387
+ readonly _tag: "Text";
388
+ readonly position: import("effect/Schema").Struct.ReadonlySide<{
389
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
390
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
391
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
392
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
393
+ }, "Type">;
394
+ readonly rotation: import("effect/Schema").Struct.ReadonlySide<{
395
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
396
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
397
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
398
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
399
+ }, "Type">;
400
+ readonly scale: import("effect/Schema").Struct.ReadonlySide<{
401
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
402
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
403
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
404
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
405
+ }, "Type">;
406
+ readonly opacity: number;
407
+ readonly visible: boolean;
408
+ readonly fillColor: Color.Color;
409
+ readonly text: string;
410
+ readonly fontSize: number;
411
+ readonly fontFamily: import("effect/Schema").Struct.ReadonlySide<{
412
+ readonly _tag: import("effect/Schema").tag<"effect-motion/Resources/Font">;
413
+ readonly id: import("effect/Schema").String;
414
+ }, "Type">;
415
+ readonly textAnchor?: "end" | "middle" | "start";
416
+ readonly baseline?: "auto" | "hanging" | "middle";
417
+ }) => Effect.Effect<Instance.Instance<"Camera" | "Circle" | "Ellipse" | "Group" | "Hud" | "Image" | "Line" | "Path" | "Rect" | "Text">, never, never>;
418
+ registerComp: (id: string, config: CompConfig) => void;
419
+ camera: Instance.Instance<"Camera">;
420
+ setCamera: (instance: Instance.Instance<"Camera">) => void;
421
+ destroy: (instance: Instance.Instance) => void;
263
422
  phaser: {
264
423
  register: (n: number) => void;
265
424
  deregister: (n: number) => void;
@@ -279,145 +438,300 @@ declare const Runner_base: Context.ServiceClass<Runner, "Runner", {
279
438
  recordFailure: (cause: Cause.Cause<unknown>) => void;
280
439
  failureCause: () => Cause.Cause<unknown> | undefined;
281
440
  }> & {
282
- readonly make: (settings?: Partial<Settings> | undefined) => Effect.Effect<{
283
- root: Instance.Instance<"shapes/Group", Schema.Struct<{
284
- x: Schema.withConstructorDefault<Schema.Number>;
285
- y: Schema.withConstructorDefault<Schema.Number>;
286
- z: Schema.withConstructorDefault<Schema.Number>;
287
- opacity: Schema.withConstructorDefault<Schema.Number>;
288
- transform: Schema.withConstructorDefault<Schema.Struct<{
289
- readonly a: Schema.Number;
290
- readonly b: Schema.Number;
291
- readonly c: Schema.Number;
292
- readonly d: Schema.Number;
293
- readonly e: Schema.Number;
294
- readonly f: Schema.Number;
295
- }>>;
296
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
297
- }>, {
298
- "~position": Entity.TraitLens<Schema.Struct.ReadonlySide<{
299
- x: Schema.withConstructorDefault<Schema.Number>;
300
- y: Schema.withConstructorDefault<Schema.Number>;
301
- z: Schema.withConstructorDefault<Schema.Number>;
302
- opacity: Schema.withConstructorDefault<Schema.Number>;
303
- transform: Schema.withConstructorDefault<Schema.Struct<{
304
- readonly a: Schema.Number;
305
- readonly b: Schema.Number;
306
- readonly c: Schema.Number;
307
- readonly d: Schema.Number;
308
- readonly e: Schema.Number;
309
- readonly f: Schema.Number;
310
- }>>;
311
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
312
- }, "Type">, Entity.Position>;
313
- "~opacity": Entity.TraitLens<Schema.Struct.ReadonlySide<{
314
- x: Schema.withConstructorDefault<Schema.Number>;
315
- y: Schema.withConstructorDefault<Schema.Number>;
316
- z: Schema.withConstructorDefault<Schema.Number>;
317
- opacity: Schema.withConstructorDefault<Schema.Number>;
318
- transform: Schema.withConstructorDefault<Schema.Struct<{
319
- readonly a: Schema.Number;
320
- readonly b: Schema.Number;
321
- readonly c: Schema.Number;
322
- readonly d: Schema.Number;
323
- readonly e: Schema.Number;
324
- readonly f: Schema.Number;
325
- }>>;
326
- children: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
327
- }, "Type">, number>;
328
- }>;
329
- instantiate: <Name extends string, Data extends Schema.Top, Traits extends Partial<Entity.EntityTraits<Data["Type"]>>>(entity: Entity.Entity<Name, Data, Traits>, props: InstantiateProps<Data["~type.make.in"]>) => Effect.Effect<Instance.Instance<Name, Data, Traits>, never, Runner>;
441
+ readonly make: (settings?: Partial<Settings> | undefined, comp?: CompConfig | undefined) => Effect.Effect<{
442
+ root: GroupInstance;
443
+ instantiate: <Tag extends Entity.EntityTag>(kind: Tag, props: InstantiateProps<Tag>) => Effect.Effect<Instance.Instance<Tag>, never, Runner>;
330
444
  appendChild: (parent: GroupInstance, child: Instance.Instance) => void;
331
445
  removeChild: (parent: GroupInstance, child: Instance.Instance) => void;
332
446
  settings: {
333
447
  frameRate: number;
334
- width: number;
335
- height: number;
336
- backgroundColor: Color.Color;
337
448
  seed: Seed;
338
449
  maxFrames: number;
339
450
  };
340
- getDataUnsafe: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>) => Data["Type"] | null;
341
- setDataUnsafe: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>, data: unknown) => void;
451
+ comp: CompConfig;
452
+ getDataUnsafe: <Tag extends Entity.EntityTag>(instance: Instance.Instance<Tag>) => Entity.EntityByTag<Tag> | null;
453
+ setDataUnsafe: <Tag extends Entity.EntityTag>(instance: Instance.Instance<Tag>, state: Entity.EntityByTag<Tag>) => void;
342
454
  state: Effect.Effect<{
343
- instances: {
344
- [x: string]: {
345
- data: unknown;
346
- entity: Entity.AnyEntity;
347
- $visible: boolean;
348
- };
349
- };
455
+ instances: Record<string, {
456
+ data: Entity.Entity;
457
+ }>;
350
458
  root: string;
351
459
  frameRate: number;
352
460
  width: number;
353
461
  height: number;
354
462
  backgroundColor: Color.Color;
355
- camera: CameraState;
356
- }, never, never>;
357
- camera: Instance.Instance<"Camera", Schema.Struct<{
358
- x: Schema.withConstructorDefault<Schema.Number>;
359
- y: Schema.withConstructorDefault<Schema.Number>;
360
- z: Schema.withConstructorDefault<Schema.Number>;
361
- rotX: Schema.withConstructorDefault<Schema.Number>;
362
- rotY: Schema.withConstructorDefault<Schema.Number>;
363
- rotZ: Schema.withConstructorDefault<Schema.Number>;
364
- focalLength: Schema.withConstructorDefault<Schema.Number>;
365
- focusDistance: Schema.withConstructorDefault<Schema.Number>;
366
- aperture: Schema.withConstructorDefault<Schema.Number>;
367
- poiX: Schema.optionalKey<Schema.Number>;
368
- poiY: Schema.optionalKey<Schema.Number>;
369
- poiZ: Schema.optionalKey<Schema.Number>;
370
- }>, {
371
- readonly "~position": {
372
- get: (data: {
373
- readonly x: number;
374
- readonly y: number;
375
- readonly z: number;
376
- readonly rotX: number;
377
- readonly rotY: number;
378
- readonly rotZ: number;
379
- readonly focalLength: number;
380
- readonly focusDistance: number;
381
- readonly aperture: number;
382
- readonly poiX?: number;
383
- readonly poiY?: number;
384
- readonly poiZ?: number;
385
- }) => {
386
- x: number;
387
- y: number;
388
- z: number;
389
- };
390
- set: (data: {
391
- readonly x: number;
392
- readonly y: number;
393
- readonly z: number;
394
- readonly rotX: number;
395
- readonly rotY: number;
396
- readonly rotZ: number;
397
- readonly focalLength: number;
398
- readonly focusDistance: number;
399
- readonly aperture: number;
400
- readonly poiX?: number;
401
- readonly poiY?: number;
402
- readonly poiZ?: number;
403
- }, value: Entity.Position) => {
404
- readonly x: number;
405
- readonly y: number;
406
- readonly z: number;
407
- readonly rotX: number;
408
- readonly rotY: number;
409
- readonly rotZ: number;
410
- readonly focalLength: number;
411
- readonly focusDistance: number;
412
- readonly aperture: number;
413
- readonly poiX?: number;
414
- readonly poiY?: number;
415
- readonly poiZ?: number;
416
- };
463
+ camera: Projection.CameraView & Projection.PointOfInterest;
464
+ comps: {
465
+ [k: string]: CompConfig;
417
466
  };
418
- }>;
419
- setCamera: (instance: Instance.Instance) => void;
420
- destroy: <Name extends string, Data extends Schema.Top>(instance: Instance.Instance<Name, Data>) => void;
467
+ }, never, never>;
468
+ /**
469
+ * ponytail: create a tree node for an entity that is NOT in the
470
+ * union — the particle system only (design D10). Mounts under the
471
+ * ambient parent like any instance. Delete with the particles
472
+ * rewrite; see `particlesEscapeInstantiate`.
473
+ */
474
+ instantiateEscape: (state: import("effect/Schema").Struct.ReadonlySide<{
475
+ readonly _tag: import("effect/Schema").tag<"Camera">;
476
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
477
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
478
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
479
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
480
+ }>>;
481
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
482
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
483
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
484
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
485
+ }>>;
486
+ readonly focalLength: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
487
+ readonly focusDistance: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
488
+ readonly aperture: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
489
+ readonly poi: import("effect/Schema").withConstructorDefault<import("effect/Schema").NullOr<import("effect/Schema").TaggedStruct<"Vec3", {
490
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
491
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
492
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
493
+ }>>>;
494
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
495
+ readonly _tag: import("effect/Schema").tag<"Circle">;
496
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
497
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
498
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
499
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
500
+ }>>;
501
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
502
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
503
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
504
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
505
+ }>>;
506
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
507
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
508
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
509
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
510
+ }>>;
511
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
512
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
513
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
514
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
515
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
516
+ readonly radius: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
517
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
518
+ readonly _tag: import("effect/Schema").tag<"Ellipse">;
519
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
520
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
521
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
522
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
523
+ }>>;
524
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
525
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
526
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
527
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
528
+ }>>;
529
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
530
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
531
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
532
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
533
+ }>>;
534
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
535
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
536
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
537
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
538
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
539
+ readonly radiusX: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
540
+ readonly radiusY: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
541
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
542
+ readonly _tag: import("effect/Schema").tag<"Group">;
543
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
544
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
545
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
546
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
547
+ }>>;
548
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
549
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
550
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
551
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
552
+ }>>;
553
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
554
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
555
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
556
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
557
+ }>>;
558
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
559
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
560
+ readonly children: import("effect/Schema").withConstructorDefault<import("effect/Schema").$Array<import("effect/Schema").String>>;
561
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
562
+ readonly _tag: import("effect/Schema").tag<"Hud">;
563
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
564
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
565
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
566
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
567
+ }>>;
568
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
569
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
570
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
571
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
572
+ }>>;
573
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
574
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
575
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
576
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
577
+ }>>;
578
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
579
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
580
+ readonly children: import("effect/Schema").withConstructorDefault<import("effect/Schema").$Array<import("effect/Schema").String>>;
581
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
582
+ readonly _tag: import("effect/Schema").tag<"Line">;
583
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
584
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
585
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
586
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
587
+ }>>;
588
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
589
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
590
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
591
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
592
+ }>>;
593
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
594
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
595
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
596
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
597
+ }>>;
598
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
599
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
600
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
601
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
602
+ readonly start: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
603
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
604
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
605
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
606
+ }>>;
607
+ readonly end: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
608
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
609
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
610
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
611
+ }>>;
612
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
613
+ readonly _tag: import("effect/Schema").tag<"Path">;
614
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
615
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
616
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
617
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
618
+ }>>;
619
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
620
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
621
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
622
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
623
+ }>>;
624
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
625
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
626
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
627
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
628
+ }>>;
629
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
630
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
631
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
632
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
633
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
634
+ readonly commands: import("effect/Schema").NonEmptyArray<import("effect/Schema").TaggedUnion<{
635
+ readonly L: import("effect/Schema").TaggedStruct<"L", {
636
+ x: import("effect/Schema").Number;
637
+ y: import("effect/Schema").Number;
638
+ z: import("effect/Schema").optionalKey<import("effect/Schema").Number>;
639
+ }>;
640
+ readonly M: import("effect/Schema").TaggedStruct<"M", {
641
+ x: import("effect/Schema").Number;
642
+ y: import("effect/Schema").Number;
643
+ z: import("effect/Schema").optionalKey<import("effect/Schema").Number>;
644
+ }>;
645
+ readonly Z: import("effect/Schema").TaggedStruct<"Z", {}>;
646
+ }>>;
647
+ }, "Type"> | import("effect/Schema").Struct.ReadonlySide<{
648
+ readonly _tag: import("effect/Schema").tag<"Rect">;
649
+ readonly position: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
650
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
651
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
652
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
653
+ }>>;
654
+ readonly rotation: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
655
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
656
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
657
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
658
+ }>>;
659
+ readonly scale: import("effect/Schema").withConstructorDefault<import("effect/Schema").TaggedStruct<"Vec3", {
660
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
661
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
662
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
663
+ }>>;
664
+ readonly opacity: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
665
+ readonly visible: import("effect/Schema").withConstructorDefault<import("effect/Schema").Boolean>;
666
+ readonly strokeWidth: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
667
+ readonly strokeColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
668
+ readonly fillColor: import("effect/Schema").withConstructorDefault<typeof Color.Color>;
669
+ readonly width: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
670
+ readonly height: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
671
+ }, "Type"> | {
672
+ readonly _tag: "Image";
673
+ readonly position: import("effect/Schema").Struct.ReadonlySide<{
674
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
675
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
676
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
677
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
678
+ }, "Type">;
679
+ readonly rotation: import("effect/Schema").Struct.ReadonlySide<{
680
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
681
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
682
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
683
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
684
+ }, "Type">;
685
+ readonly scale: import("effect/Schema").Struct.ReadonlySide<{
686
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
687
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
688
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
689
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
690
+ }, "Type">;
691
+ readonly opacity: number;
692
+ readonly visible: boolean;
693
+ readonly image: import("effect/Schema").Struct.ReadonlySide<{
694
+ readonly _tag: import("effect/Schema").tag<"effect-motion/Resources/Image">;
695
+ readonly id: import("effect/Schema").String;
696
+ }, "Type">;
697
+ readonly width?: number;
698
+ readonly height?: number;
699
+ } | {
700
+ readonly _tag: "Text";
701
+ readonly position: import("effect/Schema").Struct.ReadonlySide<{
702
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
703
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
704
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
705
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
706
+ }, "Type">;
707
+ readonly rotation: import("effect/Schema").Struct.ReadonlySide<{
708
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
709
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
710
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
711
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
712
+ }, "Type">;
713
+ readonly scale: import("effect/Schema").Struct.ReadonlySide<{
714
+ readonly _tag: import("effect/Schema").tag<"Vec3">;
715
+ readonly x: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
716
+ readonly y: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
717
+ readonly z: import("effect/Schema").withConstructorDefault<import("effect/Schema").Number>;
718
+ }, "Type">;
719
+ readonly opacity: number;
720
+ readonly visible: boolean;
721
+ readonly fillColor: Color.Color;
722
+ readonly text: string;
723
+ readonly fontSize: number;
724
+ readonly fontFamily: import("effect/Schema").Struct.ReadonlySide<{
725
+ readonly _tag: import("effect/Schema").tag<"effect-motion/Resources/Font">;
726
+ readonly id: import("effect/Schema").String;
727
+ }, "Type">;
728
+ readonly textAnchor?: "end" | "middle" | "start";
729
+ readonly baseline?: "auto" | "hanging" | "middle";
730
+ }) => Effect.Effect<Instance.Instance<"Camera" | "Circle" | "Ellipse" | "Group" | "Hud" | "Image" | "Line" | "Path" | "Rect" | "Text">, never, never>;
731
+ registerComp: (id: string, config: CompConfig) => void;
732
+ camera: Instance.Instance<"Camera">;
733
+ setCamera: (instance: Instance.Instance<"Camera">) => void;
734
+ destroy: (instance: Instance.Instance) => void;
421
735
  phaser: {
422
736
  register: (n: number) => void;
423
737
  deregister: (n: number) => void;
@@ -441,4 +755,13 @@ declare const Runner_base: Context.ServiceClass<Runner, "Runner", {
441
755
  export declare class Runner extends Runner_base {
442
756
  }
443
757
  export declare const layer: Layer.Layer<Runner, never, never>;
444
- export {};
758
+ /** the shape particles store — opaque, as far as the union is concerned */
759
+ type ParticlesState = Record<string, unknown>;
760
+ /** the tag particle fields are stored under; never a union member */
761
+ export declare const PARTICLE_FIELD_TAG = "particles/ParticleField";
762
+ /** instantiate a non-union entity. Particles only. */
763
+ export declare const particlesEscapeInstantiate: (runner: Runner["Service"], state: ParticlesState) => Effect.Effect<Instance.Instance, never, Runner>;
764
+ /** read a non-union entity's state. Particles only. */
765
+ export declare const particlesEscapeRead: <T>(runner: Runner["Service"], instance: Instance.Instance) => T | null;
766
+ /** write a non-union entity's state. Particles only. */
767
+ export declare const particlesEscapeWrite: <T>(runner: Runner["Service"], instance: Instance.Instance, state: T) => void;