@vulfram/engine 0.5.8-alpha → 0.17.1-alpha

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 (58) hide show
  1. package/README.md +106 -0
  2. package/package.json +55 -4
  3. package/src/core.ts +14 -0
  4. package/src/ecs.ts +1 -0
  5. package/src/engine/api.ts +234 -23
  6. package/src/engine/bridge/dispatch.ts +265 -40
  7. package/src/engine/bridge/guards.ts +4 -1
  8. package/src/engine/bridge/protocol.ts +72 -54
  9. package/src/engine/ecs/index.ts +187 -42
  10. package/src/engine/state.ts +133 -2
  11. package/src/engine/systems/command-intent.ts +153 -3
  12. package/src/engine/systems/constraint-solve.ts +167 -0
  13. package/src/engine/systems/core-command-builder.ts +9 -265
  14. package/src/engine/systems/diagnostics.ts +20 -19
  15. package/src/engine/systems/index.ts +3 -1
  16. package/src/engine/systems/input-mirror.ts +101 -3
  17. package/src/engine/systems/resource-upload.ts +96 -44
  18. package/src/engine/systems/response-decode.ts +69 -15
  19. package/src/engine/systems/scene-sync.ts +306 -0
  20. package/src/engine/systems/ui-bridge.ts +360 -0
  21. package/src/engine/systems/utils.ts +43 -1
  22. package/src/engine/systems/world-lifecycle.ts +72 -103
  23. package/src/engine/window/manager.ts +168 -0
  24. package/src/engine/world/entities.ts +931 -33
  25. package/src/engine/world/mount.ts +174 -0
  26. package/src/engine/world/types.ts +71 -0
  27. package/src/engine/world/world-ui.ts +266 -0
  28. package/src/engine/world/world3d.ts +280 -0
  29. package/src/index.ts +30 -1
  30. package/src/mount.ts +2 -0
  31. package/src/types/cmds/audio.ts +189 -0
  32. package/src/types/cmds/camera.ts +18 -13
  33. package/src/types/cmds/environment.ts +47 -4
  34. package/src/types/cmds/geometry.ts +18 -16
  35. package/src/types/cmds/index.ts +203 -132
  36. package/src/types/cmds/light.ts +17 -13
  37. package/src/types/cmds/material.ts +14 -13
  38. package/src/types/cmds/model.ts +40 -16
  39. package/src/types/cmds/realm.ts +25 -0
  40. package/src/types/cmds/render-graph.ts +49 -0
  41. package/src/types/cmds/resources.ts +4 -0
  42. package/src/types/cmds/shadow.ts +7 -7
  43. package/src/types/cmds/system.ts +29 -0
  44. package/src/types/cmds/target.ts +82 -0
  45. package/src/types/cmds/texture.ts +19 -5
  46. package/src/types/cmds/ui.ts +220 -0
  47. package/src/types/cmds/window.ts +41 -204
  48. package/src/types/events/index.ts +4 -1
  49. package/src/types/events/pointer.ts +42 -13
  50. package/src/types/events/system.ts +150 -7
  51. package/src/types/events/ui.ts +21 -0
  52. package/src/types/index.ts +1 -0
  53. package/src/types/json.ts +15 -0
  54. package/src/types/kinds.ts +3 -0
  55. package/src/window.ts +8 -0
  56. package/src/world-ui.ts +2 -0
  57. package/src/world3d.ts +10 -0
  58. package/tsconfig.json +0 -29
@@ -22,6 +22,9 @@ export interface CmdWindowCreateArgs {
22
22
  export interface CmdResultWindowCreate {
23
23
  success: boolean;
24
24
  message: string;
25
+ realmId?: number;
26
+ surfaceId?: number;
27
+ presentId?: number;
25
28
  }
26
29
 
27
30
  /** Command payload for closing a window. */
@@ -35,229 +38,63 @@ export interface CmdResultWindowClose {
35
38
  message: string;
36
39
  }
37
40
 
38
- /** Command payload for setting window title. */
39
- export interface CmdWindowSetTitleArgs {
41
+ /** Command payload for changing and/or querying window measurements. */
42
+ export interface CmdWindowMeasurementArgs {
40
43
  windowId: number;
41
- title: string;
44
+ position?: [number, number];
45
+ size?: [number, number];
46
+ getPosition?: boolean;
47
+ getSize?: boolean;
48
+ getOuterSize?: boolean;
49
+ getSurfaceSize?: boolean;
42
50
  }
43
51
 
44
- /** Result payload for window title update. */
45
- export interface CmdResultWindowSetTitle {
52
+ /** Result payload for window measurement command. */
53
+ export interface CmdResultWindowMeasurement {
46
54
  success: boolean;
47
55
  message: string;
56
+ position?: [number, number];
57
+ size?: [number, number];
58
+ outerSize?: [number, number];
59
+ surfaceSize?: [number, number];
48
60
  }
49
61
 
50
- /** Command payload for setting window position. */
51
- export interface CmdWindowSetPositionArgs {
62
+ /** Command payload for cursor updates. */
63
+ export interface CmdWindowCursorArgs {
52
64
  windowId: number;
53
- position: [number, number];
65
+ visible?: boolean;
66
+ mode?: CursorGrabMode;
67
+ icon?: CursorIcon;
54
68
  }
55
69
 
56
- /** Result payload for window position update. */
57
- export interface CmdResultWindowSetPosition {
70
+ /** Result payload for cursor command. */
71
+ export interface CmdResultWindowCursor {
58
72
  success: boolean;
59
73
  message: string;
60
74
  }
61
75
 
62
- /** Command payload for querying window position. */
63
- export interface CmdWindowGetPositionArgs {
64
- windowId: number;
65
- }
66
-
67
- /** Result payload for window position query. */
68
- export interface CmdResultWindowGetPosition {
69
- success: boolean;
70
- message: string;
71
- content: [number, number];
72
- }
73
-
74
- /** Command payload for setting window size. */
75
- export interface CmdWindowSetSizeArgs {
76
- windowId: number;
77
- size: [number, number];
78
- }
79
-
80
- /** Result payload for window size update. */
81
- export interface CmdResultWindowSetSize {
82
- success: boolean;
83
- message: string;
84
- }
85
-
86
- /** Command payload for querying window size. */
87
- export interface CmdWindowGetSizeArgs {
88
- windowId: number;
89
- }
90
-
91
- /** Result payload for window size query. */
92
- export interface CmdResultWindowGetSize {
93
- success: boolean;
94
- message: string;
95
- content: [number, number];
96
- }
97
-
98
- /** Command payload for querying outer window size. */
99
- export interface CmdWindowGetOuterSizeArgs {
100
- windowId: number;
101
- }
102
-
103
- /** Result payload for outer window size query. */
104
- export interface CmdResultWindowGetOuterSize {
105
- success: boolean;
106
- message: string;
107
- content: [number, number];
108
- }
109
-
110
- /** Command payload for querying surface size. */
111
- export interface CmdWindowGetSurfaceSizeArgs {
112
- windowId: number;
113
- }
114
-
115
- /** Result payload for surface size query. */
116
- export interface CmdResultWindowGetSurfaceSize {
117
- success: boolean;
118
- message: string;
119
- content: [number, number];
120
- }
121
-
122
- /** Command payload for setting window state. */
123
- export interface CmdWindowSetStateArgs {
124
- windowId: number;
125
- state: WindowState;
126
- }
127
-
128
- /** Result payload for window state update. */
129
- export interface CmdResultWindowSetState {
130
- success: boolean;
131
- message: string;
132
- }
133
-
134
- /** Command payload for querying window state. */
135
- export interface CmdWindowGetStateArgs {
136
- windowId: number;
137
- }
138
-
139
- /** Result payload for window state query. */
140
- export interface CmdResultWindowGetState {
141
- success: boolean;
142
- message: string;
143
- content: WindowState;
144
- }
145
-
146
- /** Command payload for setting window icon. */
147
- export interface CmdWindowSetIconArgs {
148
- windowId: number;
149
- icon: string; // Buffer ID pointing to an image
150
- }
151
-
152
- /** Result payload for window icon update. */
153
- export interface CmdResultWindowSetIcon {
154
- success: boolean;
155
- message: string;
156
- }
157
-
158
- /** Command payload for toggling window decorations. */
159
- export interface CmdWindowSetDecorationsArgs {
160
- windowId: number;
161
- decorations: boolean;
162
- }
163
-
164
- /** Result payload for window decoration update. */
165
- export interface CmdResultWindowSetDecorations {
166
- success: boolean;
167
- message: string;
168
- }
76
+ export type WindowStateAction = 'focus' | 'request-attention';
169
77
 
170
- /** Command payload for querying window decorations. */
171
- export interface CmdWindowHasDecorationsArgs {
172
- windowId: number;
173
- }
174
-
175
- /** Result payload for window decoration query. */
176
- export interface CmdResultWindowHasDecorations {
177
- success: boolean;
178
- message: string;
179
- content: boolean;
180
- }
181
-
182
- /** Command payload for toggling window resizable state. */
183
- export interface CmdWindowSetResizableArgs {
184
- windowId: number;
185
- resizable: boolean;
186
- }
187
-
188
- /** Result payload for window resizable update. */
189
- export interface CmdResultWindowSetResizable {
190
- success: boolean;
191
- message: string;
192
- }
193
-
194
- /** Command payload for querying resizable state. */
195
- export interface CmdWindowIsResizableArgs {
196
- windowId: number;
197
- }
198
-
199
- /** Result payload for resizable query. */
200
- export interface CmdResultWindowIsResizable {
201
- success: boolean;
202
- message: string;
203
- content: boolean;
204
- }
205
-
206
- /** Command payload for requesting user attention. */
207
- export interface CmdWindowRequestAttentionArgs {
78
+ /** Command payload for state updates/queries. */
79
+ export interface CmdWindowStateArgs {
208
80
  windowId: number;
81
+ title?: string;
82
+ state?: WindowState;
83
+ iconBufferId?: number;
84
+ decorations?: boolean;
85
+ resizable?: boolean;
86
+ action?: WindowStateAction;
209
87
  attentionType?: UserAttentionType;
88
+ getState?: boolean;
89
+ getDecorations?: boolean;
90
+ getResizable?: boolean;
210
91
  }
211
92
 
212
- /** Result payload for attention request. */
213
- export interface CmdResultWindowRequestAttention {
214
- success: boolean;
215
- message: string;
216
- }
217
-
218
- /** Command payload for focusing a window. */
219
- export interface CmdWindowFocusArgs {
220
- windowId: number;
221
- }
222
-
223
- /** Result payload for window focus. */
224
- export interface CmdResultWindowFocus {
225
- success: boolean;
226
- message: string;
227
- }
228
-
229
- /** Command payload for toggling cursor visibility. */
230
- export interface CmdWindowSetCursorVisibleArgs {
231
- windowId: number;
232
- visible: boolean;
233
- }
234
-
235
- /** Result payload for cursor visibility update. */
236
- export interface CmdResultWindowSetCursorVisible {
237
- success: boolean;
238
- message: string;
239
- }
240
-
241
- /** Command payload for setting cursor grab mode. */
242
- export interface CmdWindowSetCursorGrabArgs {
243
- windowId: number;
244
- mode: CursorGrabMode;
245
- }
246
-
247
- /** Result payload for cursor grab update. */
248
- export interface CmdResultWindowSetCursorGrab {
249
- success: boolean;
250
- message: string;
251
- }
252
-
253
- /** Command payload for setting cursor icon. */
254
- export interface CmdWindowSetCursorIconArgs {
255
- windowId: number;
256
- icon: CursorIcon;
257
- }
258
-
259
- /** Result payload for cursor icon update. */
260
- export interface CmdResultWindowSetCursorIcon {
93
+ /** Result payload for state command. */
94
+ export interface CmdResultWindowState {
261
95
  success: boolean;
262
96
  message: string;
97
+ state?: WindowState;
98
+ decorations?: boolean;
99
+ resizable?: boolean;
263
100
  }
@@ -3,12 +3,14 @@ import type { PointerEvent } from './pointer';
3
3
  import type { KeyboardEvent } from './keyboard';
4
4
  import type { GamepadEvent } from './gamepad';
5
5
  import type { SystemEvent } from './system';
6
+ import type { UiEvent } from './ui';
6
7
 
7
8
  export * from './window';
8
9
  export * from './pointer';
9
10
  export * from './keyboard';
10
11
  export * from './gamepad';
11
12
  export * from './system';
13
+ export * from './ui';
12
14
 
13
15
  /** Discriminated union of all engine events. */
14
16
  export type EngineEvent =
@@ -16,4 +18,5 @@ export type EngineEvent =
16
18
  | { type: 'pointer'; content: PointerEvent }
17
19
  | { type: 'keyboard'; content: KeyboardEvent }
18
20
  | { type: 'gamepad'; content: GamepadEvent }
19
- | { type: 'system'; content: SystemEvent };
21
+ | { type: 'system'; content: SystemEvent }
22
+ | { type: 'ui'; content: UiEvent };
@@ -1,33 +1,63 @@
1
1
  import type { ElementState, TouchPhase } from '../kinds';
2
2
 
3
- /** Scroll delta reported in line or pixel units. */
4
3
  export type ScrollDelta =
5
4
  | { type: 'line'; value: [number, number] }
6
5
  | { type: 'pixel'; value: [number, number] };
7
6
 
8
- /** Payload for pointer move event. */
7
+ export type PointerTraceStage =
8
+ | 'root-window'
9
+ | 'capture'
10
+ | 'focus-fallback'
11
+ | 'connector-hit'
12
+ | 'realm-plane-hit'
13
+ | 'hop-forward'
14
+ | 'stop-no-hit'
15
+ | 'stop-cycle'
16
+ | 'stop-step-budget';
17
+
18
+ export interface PointerTraceHop {
19
+ stage: PointerTraceStage;
20
+ realmId?: number;
21
+ targetId?: number;
22
+ layerRealmId?: number;
23
+ connectorId?: number;
24
+ surfaceId?: number;
25
+ cameraId?: number;
26
+ uv?: [number, number];
27
+ }
28
+
29
+ export interface PointerEventTrace {
30
+ windowId: number;
31
+ realmId: number;
32
+ targetId?: number;
33
+ connectorId?: number;
34
+ sourceRealmId?: number;
35
+ uv?: [number, number];
36
+ hops: PointerTraceHop[];
37
+ }
38
+
9
39
  export interface PointerEventOnMoveData {
10
40
  windowId: number;
11
41
  pointerType: number;
12
42
  pointerId: number;
13
43
  position: [number, number];
44
+ trace?: PointerEventTrace;
14
45
  }
15
46
 
16
- /** Payload for pointer enter event. */
17
47
  export interface PointerEventOnEnterData {
18
48
  windowId: number;
19
49
  pointerType: number;
20
50
  pointerId: number;
51
+ trace?: PointerEventTrace;
21
52
  }
22
53
 
23
- /** Payload for pointer leave event. */
24
54
  export interface PointerEventOnLeaveData {
25
55
  windowId: number;
26
56
  pointerType: number;
27
57
  pointerId: number;
58
+ trace?: PointerEventTrace;
28
59
  }
29
60
 
30
- /** Payload for pointer button event. */
31
61
  export interface PointerEventOnButtonData {
32
62
  windowId: number;
33
63
  pointerType: number;
@@ -35,51 +65,51 @@ export interface PointerEventOnButtonData {
35
65
  button: MouseButton;
36
66
  state: ElementState;
37
67
  position: [number, number];
68
+ trace?: PointerEventTrace;
38
69
  }
39
70
 
40
- /** Payload for pointer scroll event. */
41
71
  export interface PointerEventOnScrollData {
42
72
  windowId: number;
43
73
  delta: ScrollDelta;
44
74
  phase: TouchPhase;
75
+ trace?: PointerEventTrace;
45
76
  }
46
77
 
47
- /** Payload for touch event. */
48
78
  export interface PointerEventOnTouchData {
49
79
  windowId: number;
50
80
  pointerId: number;
51
81
  phase: TouchPhase;
52
82
  position: [number, number];
53
83
  pressure?: number;
84
+ trace?: PointerEventTrace;
54
85
  }
55
86
 
56
- /** Payload for pinch gesture event. */
57
87
  export interface PointerEventOnPinchGestureData {
58
88
  windowId: number;
59
89
  delta: number;
60
90
  phase: TouchPhase;
91
+ trace?: PointerEventTrace;
61
92
  }
62
93
 
63
- /** Payload for pan gesture event. */
64
94
  export interface PointerEventOnPanGestureData {
65
95
  windowId: number;
66
96
  delta: [number, number];
67
97
  phase: TouchPhase;
98
+ trace?: PointerEventTrace;
68
99
  }
69
100
 
70
- /** Payload for rotation gesture event. */
71
101
  export interface PointerEventOnRotationGestureData {
72
102
  windowId: number;
73
103
  delta: number;
74
104
  phase: TouchPhase;
105
+ trace?: PointerEventTrace;
75
106
  }
76
107
 
77
- /** Payload for double tap gesture event. */
78
108
  export interface PointerEventOnDoubleTapGestureData {
79
109
  windowId: number;
110
+ trace?: PointerEventTrace;
80
111
  }
81
112
 
82
- /** Discriminated union of pointer events. */
83
113
  export type PointerEvent =
84
114
  | { event: 'on-move'; data: PointerEventOnMoveData }
85
115
  | { event: 'on-enter'; data: PointerEventOnEnterData }
@@ -95,7 +125,6 @@ export type PointerEvent =
95
125
  data: PointerEventOnDoubleTapGestureData;
96
126
  };
97
127
 
98
- /** Mouse button identifiers. */
99
128
  export enum MouseButton {
100
129
  Left = 0,
101
130
  Right = 1,
@@ -1,13 +1,156 @@
1
- /** Payload for notification system events. */
2
- export interface SystemEventOnNotificationData {
3
- id: string;
4
- }
1
+ import type { CursorGrabMode } from '../kinds';
2
+
3
+ export type PointerTraceLevel = 'off' | 'errors' | 'basic' | 'full';
4
+
5
+ export type UiViewportClass = 'root' | 'deferred' | 'immediate' | 'embedded';
6
+
7
+ export type UiViewportCommand =
8
+ | { type: 'close' }
9
+ | { type: 'title'; content: { title: string } }
10
+ | { type: 'inner-size'; content: { width: number; height: number } }
11
+ | { type: 'outer-position'; content: { x: number; y: number } }
12
+ | { type: 'resizable'; content: { value: boolean } }
13
+ | { type: 'decorations'; content: { value: boolean } }
14
+ | { type: 'fullscreen'; content: { value: boolean } }
15
+ | { type: 'minimized'; content: { value: boolean } }
16
+ | { type: 'maximized'; content: { value: boolean } }
17
+ | { type: 'focus' }
18
+ | { type: 'screenshot' }
19
+ | { type: 'cursor-visible'; content: { value: boolean } }
20
+ | { type: 'cursor-grab'; content: { mode: CursorGrabMode } }
21
+ | { type: 'ime-allowed'; content: { value: boolean } }
22
+ | {
23
+ type: 'ime-rect';
24
+ content: { minX: number; minY: number; maxX: number; maxY: number };
25
+ };
5
26
 
6
- /** Discriminated union of system-level events. */
7
27
  export type SystemEvent =
28
+ | {
29
+ event: 'error';
30
+ data: {
31
+ scope: string;
32
+ message: string;
33
+ commandId?: number;
34
+ commandType?: string;
35
+ };
36
+ }
8
37
  | { event: 'on-resume' }
9
38
  | { event: 'on-suspend' }
10
39
  | { event: 'on-memory-warning' }
11
40
  | { event: 'on-exit' }
12
- | { event: 'on-notification-clicked'; data: SystemEventOnNotificationData }
13
- | { event: 'on-notification-dismissed'; data: SystemEventOnNotificationData };
41
+ | { event: 'on-notification-clicked'; data: { id: string } }
42
+ | { event: 'on-notification-dismissed'; data: { id: string } }
43
+ | {
44
+ event: 'texture-ready';
45
+ data: { windowId: number; textureId: number; success: boolean; message: string };
46
+ }
47
+ | {
48
+ event: 'texture-processing-started';
49
+ data: { windowId: number; textureId: number; totalBytes: number };
50
+ }
51
+ | {
52
+ event: 'texture-processing-progress';
53
+ data: {
54
+ windowId: number;
55
+ textureId: number;
56
+ processedBytes: number;
57
+ totalBytes: number;
58
+ };
59
+ }
60
+ | {
61
+ event: 'texture-processing-finished';
62
+ data: {
63
+ windowId: number;
64
+ textureId: number;
65
+ success: boolean;
66
+ message: string;
67
+ totalBytes: number;
68
+ };
69
+ }
70
+ | {
71
+ event: 'ui-image-ready';
72
+ data: { imageId: number; success: boolean; message: string };
73
+ }
74
+ | {
75
+ event: 'ui-image-processing-started';
76
+ data: { imageId: number; totalBytes: number };
77
+ }
78
+ | {
79
+ event: 'ui-image-processing-progress';
80
+ data: { imageId: number; processedBytes: number; totalBytes: number };
81
+ }
82
+ | {
83
+ event: 'ui-image-processing-finished';
84
+ data: {
85
+ imageId: number;
86
+ success: boolean;
87
+ message: string;
88
+ totalBytes: number;
89
+ };
90
+ }
91
+ | {
92
+ event: 'audio-ready';
93
+ data: { resourceId: number; success: boolean; message: string };
94
+ }
95
+ | {
96
+ event: 'audio-stream-progress';
97
+ data: {
98
+ resourceId: number;
99
+ receivedBytes: number;
100
+ totalBytes: number;
101
+ complete: boolean;
102
+ };
103
+ }
104
+ | {
105
+ event: 'ui-open-url';
106
+ data: { windowId: number; realmId: number; url: string; newTab: boolean };
107
+ }
108
+ | {
109
+ event: 'ui-clipboard-set-text';
110
+ data: { windowId: number; realmId: number; text: string };
111
+ }
112
+ | {
113
+ event: 'ui-clipboard-request-copy';
114
+ data: { windowId: number; realmId: number };
115
+ }
116
+ | {
117
+ event: 'ui-clipboard-request-cut';
118
+ data: { windowId: number; realmId: number };
119
+ }
120
+ | {
121
+ event: 'ui-clipboard-request-paste';
122
+ data: { windowId: number; realmId: number };
123
+ }
124
+ | {
125
+ event: 'ui-screenshot-request';
126
+ data: { windowId: number; realmId: number };
127
+ }
128
+ | {
129
+ event: 'ui-viewport-sync';
130
+ data: {
131
+ windowId: number;
132
+ realmId: number;
133
+ viewportId: number;
134
+ parentViewportId?: number;
135
+ class: UiViewportClass;
136
+ title?: string;
137
+ };
138
+ }
139
+ | {
140
+ event: 'ui-viewport-command';
141
+ data: {
142
+ windowId: number;
143
+ realmId: number;
144
+ viewportId: number;
145
+ command: UiViewportCommand;
146
+ };
147
+ }
148
+ | {
149
+ event: 'ui-viewport-fallback-embedded';
150
+ data: {
151
+ windowId: number;
152
+ realmId: number;
153
+ viewportId: number;
154
+ parentViewportId?: number;
155
+ };
156
+ };
@@ -0,0 +1,21 @@
1
+ export type UiEventKind =
2
+ | 'click'
3
+ | 'double-click'
4
+ | 'pressed'
5
+ | 'released'
6
+ | 'hover-enter'
7
+ | 'hover-leave'
8
+ | 'changed'
9
+ | 'change-commit'
10
+ | 'focus'
11
+ | 'blur'
12
+ | 'submit'
13
+ | 'anim-complete';
14
+
15
+ export interface UiEvent {
16
+ realmId: number;
17
+ documentId: number;
18
+ nodeId: number;
19
+ kind: UiEventKind;
20
+ label?: string;
21
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './kinds';
2
+ export * from './json';
2
3
  export * from './cmds';
3
4
  export * from './events';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * JSON-like values that are safe to serialize across the host/core boundary.
3
+ */
4
+ export type JsonValue =
5
+ | null
6
+ | boolean
7
+ | number
8
+ | string
9
+ | JsonValue[]
10
+ | { [key: string]: JsonValue };
11
+
12
+ /**
13
+ * Convenience alias for object-shaped JSON payloads.
14
+ */
15
+ export type JsonObject = { [key: string]: JsonValue };
@@ -1,6 +1,9 @@
1
1
  /** Camera projection mode. */
2
2
  export type CameraKind = 'perspective' | 'orthographic';
3
3
 
4
+ /** Audio playback mode. */
5
+ export type AudioPlayMode = 'once' | 'loop';
6
+
4
7
  /** Standard cursor icons. */
5
8
  export type CursorIcon =
6
9
  | 'default'
package/src/window.ts ADDED
@@ -0,0 +1,8 @@
1
+ export {
2
+ closeWindow,
3
+ createWindow,
4
+ focusWindow,
5
+ requestAttention,
6
+ updateWindow,
7
+ } from './engine/window/manager';
8
+ export type { WindowId } from './engine/world/types';
@@ -0,0 +1,2 @@
1
+ export * from './engine/world/world-ui';
2
+ export type { EntityId, TargetId, WorldId, WorldUIId } from './engine/world/types';
package/src/world3d.ts ADDED
@@ -0,0 +1,10 @@
1
+ export * from './engine/world/world3d';
2
+ export type {
3
+ EntityId,
4
+ GeometryId,
5
+ MaterialId,
6
+ TargetId,
7
+ TextureId,
8
+ World3DId,
9
+ WorldId,
10
+ } from './engine/world/types';