@vulfram/engine 0.14.8-alpha → 0.19.2-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.
- package/README.md +106 -0
- package/package.json +60 -4
- package/src/core.ts +14 -0
- package/src/ecs.ts +1 -0
- package/src/engine/api.ts +222 -24
- package/src/engine/bridge/dispatch.ts +260 -40
- package/src/engine/bridge/guards.ts +4 -1
- package/src/engine/bridge/protocol.ts +69 -52
- package/src/engine/ecs/components.ts +340 -0
- package/src/engine/ecs/index.ts +3 -518
- package/src/engine/ecs/intents.ts +184 -0
- package/src/engine/ecs/systems.ts +26 -0
- package/src/engine/intents/store.ts +72 -0
- package/src/engine/state.ts +136 -5
- package/src/engine/systems/command-intent.ts +159 -14
- package/src/engine/systems/constraint-solve.ts +167 -0
- package/src/engine/systems/core-command-builder.ts +9 -268
- package/src/engine/systems/diagnostics.ts +20 -29
- package/src/engine/systems/index.ts +3 -1
- package/src/engine/systems/input-mirror.ts +257 -21
- package/src/engine/systems/resource-upload.ts +108 -58
- package/src/engine/systems/response-decode.ts +86 -15
- package/src/engine/systems/scene-sync.ts +305 -0
- package/src/engine/systems/ui-bridge.ts +381 -0
- package/src/engine/systems/utils.ts +86 -1
- package/src/engine/systems/world-lifecycle.ts +43 -114
- package/src/engine/window/manager.ts +168 -0
- package/src/engine/world/entities.ts +998 -91
- package/src/engine/world/mount.ts +195 -0
- package/src/engine/world/types.ts +71 -0
- package/src/engine/world/world-ui.ts +313 -0
- package/src/engine/world/world3d.ts +529 -0
- package/src/helpers/collision.ts +487 -0
- package/src/helpers/index.ts +2 -0
- package/src/helpers/raycast.ts +442 -0
- package/src/index.ts +30 -1
- package/src/mount.ts +2 -0
- package/src/types/cmds/audio.ts +73 -48
- package/src/types/cmds/camera.ts +12 -8
- package/src/types/cmds/environment.ts +9 -3
- package/src/types/cmds/geometry.ts +15 -16
- package/src/types/cmds/index.ts +234 -162
- package/src/types/cmds/input.ts +39 -0
- package/src/types/cmds/light.ts +12 -11
- package/src/types/cmds/material.ts +19 -21
- package/src/types/cmds/model.ts +17 -15
- package/src/types/cmds/realm.ts +23 -0
- package/src/types/cmds/system.ts +29 -0
- package/src/types/cmds/target.ts +96 -0
- package/src/types/cmds/texture.ts +13 -3
- package/src/types/cmds/ui.ts +220 -0
- package/src/types/cmds/window.ts +41 -204
- package/src/types/events/index.ts +4 -1
- package/src/types/events/keyboard.ts +2 -2
- package/src/types/events/pointer.ts +85 -13
- package/src/types/events/system.ts +188 -30
- package/src/types/events/ui.ts +21 -0
- package/src/types/index.ts +1 -0
- package/src/types/json.ts +15 -0
- package/src/window.ts +8 -0
- package/src/world-ui.ts +2 -0
- package/src/world3d.ts +10 -0
- package/tsconfig.json +0 -29
|
@@ -1,42 +1,200 @@
|
|
|
1
|
-
|
|
2
|
-
export interface SystemEventOnNotificationData {
|
|
3
|
-
id: string;
|
|
4
|
-
}
|
|
1
|
+
import type { CursorGrabMode } from '../kinds';
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
export interface SystemEventTextureReadyData {
|
|
8
|
-
window_id: number;
|
|
9
|
-
texture_id: number;
|
|
10
|
-
success: boolean;
|
|
11
|
-
message: string;
|
|
12
|
-
}
|
|
3
|
+
export type PointerTraceLevel = 'off' | 'errors' | 'basic' | 'full';
|
|
13
4
|
|
|
14
|
-
|
|
15
|
-
export interface SystemEventAudioReadyData {
|
|
16
|
-
resource_id: number;
|
|
17
|
-
success: boolean;
|
|
18
|
-
message: string;
|
|
19
|
-
}
|
|
5
|
+
export type UiViewportClass = 'root' | 'deferred' | 'immediate' | 'embedded';
|
|
20
6
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
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
|
+
};
|
|
28
26
|
|
|
29
|
-
/** Discriminated union of system-level events. */
|
|
30
27
|
export type SystemEvent =
|
|
28
|
+
| {
|
|
29
|
+
event: 'error';
|
|
30
|
+
data: {
|
|
31
|
+
scope: string;
|
|
32
|
+
message: string;
|
|
33
|
+
commandId?: number;
|
|
34
|
+
commandType?: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
| {
|
|
38
|
+
event: 'command-deferred';
|
|
39
|
+
data: {
|
|
40
|
+
commandId: number;
|
|
41
|
+
commandType: string;
|
|
42
|
+
attempts: number;
|
|
43
|
+
reason: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
| {
|
|
47
|
+
event: 'command-applied';
|
|
48
|
+
data: {
|
|
49
|
+
commandId: number;
|
|
50
|
+
commandType: string;
|
|
51
|
+
attempts: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
| {
|
|
55
|
+
event: 'command-dropped';
|
|
56
|
+
data: {
|
|
57
|
+
commandId: number;
|
|
58
|
+
commandType: string;
|
|
59
|
+
attempts: number;
|
|
60
|
+
reason: string;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
31
63
|
| { event: 'on-resume' }
|
|
32
64
|
| { event: 'on-suspend' }
|
|
33
65
|
| { event: 'on-memory-warning' }
|
|
34
66
|
| { event: 'on-exit' }
|
|
35
|
-
| { event: 'on-notification-clicked'; data:
|
|
36
|
-
| { event: 'on-notification-dismissed'; data:
|
|
37
|
-
| {
|
|
38
|
-
|
|
67
|
+
| { event: 'on-notification-clicked'; data: { id: string } }
|
|
68
|
+
| { event: 'on-notification-dismissed'; data: { id: string } }
|
|
69
|
+
| {
|
|
70
|
+
event: 'texture-ready';
|
|
71
|
+
data: { windowId: number; textureId: number; success: boolean; message: string };
|
|
72
|
+
}
|
|
73
|
+
| {
|
|
74
|
+
event: 'texture-processing-started';
|
|
75
|
+
data: { windowId: number; textureId: number; totalBytes: number };
|
|
76
|
+
}
|
|
77
|
+
| {
|
|
78
|
+
event: 'texture-processing-progress';
|
|
79
|
+
data: {
|
|
80
|
+
windowId: number;
|
|
81
|
+
textureId: number;
|
|
82
|
+
processedBytes: number;
|
|
83
|
+
totalBytes: number;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
| {
|
|
87
|
+
event: 'texture-processing-finished';
|
|
88
|
+
data: {
|
|
89
|
+
windowId: number;
|
|
90
|
+
textureId: number;
|
|
91
|
+
success: boolean;
|
|
92
|
+
message: string;
|
|
93
|
+
totalBytes: number;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
| {
|
|
97
|
+
event: 'ui-image-ready';
|
|
98
|
+
data: { imageId: number; success: boolean; message: string };
|
|
99
|
+
}
|
|
100
|
+
| {
|
|
101
|
+
event: 'ui-image-processing-started';
|
|
102
|
+
data: { imageId: number; totalBytes: number };
|
|
103
|
+
}
|
|
104
|
+
| {
|
|
105
|
+
event: 'ui-image-processing-progress';
|
|
106
|
+
data: { imageId: number; processedBytes: number; totalBytes: number };
|
|
107
|
+
}
|
|
108
|
+
| {
|
|
109
|
+
event: 'ui-image-processing-finished';
|
|
110
|
+
data: {
|
|
111
|
+
imageId: number;
|
|
112
|
+
success: boolean;
|
|
113
|
+
message: string;
|
|
114
|
+
totalBytes: number;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
| {
|
|
118
|
+
event: 'audio-ready';
|
|
119
|
+
data: { resourceId: number; success: boolean; message: string };
|
|
120
|
+
}
|
|
39
121
|
| {
|
|
40
122
|
event: 'audio-stream-progress';
|
|
41
|
-
data:
|
|
123
|
+
data: {
|
|
124
|
+
resourceId: number;
|
|
125
|
+
receivedBytes: number;
|
|
126
|
+
totalBytes: number;
|
|
127
|
+
complete: boolean;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
| {
|
|
131
|
+
event: 'ui-open-url';
|
|
132
|
+
data: { windowId: number; realmId: number; url: string; newTab: boolean };
|
|
133
|
+
}
|
|
134
|
+
| {
|
|
135
|
+
event: 'ui-clipboard-set-text';
|
|
136
|
+
data: { windowId: number; realmId: number; text: string };
|
|
137
|
+
}
|
|
138
|
+
| {
|
|
139
|
+
event: 'ui-clipboard-request-copy';
|
|
140
|
+
data: { windowId: number; realmId: number };
|
|
141
|
+
}
|
|
142
|
+
| {
|
|
143
|
+
event: 'ui-clipboard-request-cut';
|
|
144
|
+
data: { windowId: number; realmId: number };
|
|
145
|
+
}
|
|
146
|
+
| {
|
|
147
|
+
event: 'ui-clipboard-request-paste';
|
|
148
|
+
data: { windowId: number; realmId: number };
|
|
149
|
+
}
|
|
150
|
+
| {
|
|
151
|
+
event: 'ui-screenshot-request';
|
|
152
|
+
data: { windowId: number; realmId: number };
|
|
153
|
+
}
|
|
154
|
+
| {
|
|
155
|
+
event: 'ui-viewport-sync';
|
|
156
|
+
data: {
|
|
157
|
+
windowId: number;
|
|
158
|
+
realmId: number;
|
|
159
|
+
viewportId: number;
|
|
160
|
+
parentViewportId?: number;
|
|
161
|
+
class: UiViewportClass;
|
|
162
|
+
title?: string;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
| {
|
|
166
|
+
event: 'ui-viewport-command';
|
|
167
|
+
data: {
|
|
168
|
+
windowId: number;
|
|
169
|
+
realmId: number;
|
|
170
|
+
viewportId: number;
|
|
171
|
+
command: UiViewportCommand;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
| {
|
|
175
|
+
event: 'ui-viewport-fallback-embedded';
|
|
176
|
+
data: {
|
|
177
|
+
windowId: number;
|
|
178
|
+
realmId: number;
|
|
179
|
+
viewportId: number;
|
|
180
|
+
parentViewportId?: number;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
| {
|
|
184
|
+
event: 'input-target-listener-event';
|
|
185
|
+
data: {
|
|
186
|
+
listenerId: number;
|
|
187
|
+
targetId: number;
|
|
188
|
+
eventType: string;
|
|
189
|
+
windowId?: number;
|
|
190
|
+
windowWidth?: number;
|
|
191
|
+
windowHeight?: number;
|
|
192
|
+
pointerId?: number;
|
|
193
|
+
positionGlobal?: [number, number];
|
|
194
|
+
positionTarget?: [number, number];
|
|
195
|
+
targetWidth?: number;
|
|
196
|
+
targetHeight?: number;
|
|
197
|
+
keyCode?: number;
|
|
198
|
+
keyState?: 'pressed' | 'released';
|
|
199
|
+
};
|
|
42
200
|
};
|
|
@@ -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
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -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 };
|
package/src/window.ts
ADDED
package/src/world-ui.ts
ADDED
package/src/world3d.ts
ADDED
package/tsconfig.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
// Environment setup & latest features
|
|
4
|
-
"lib": ["ESNext"],
|
|
5
|
-
"target": "ESNext",
|
|
6
|
-
"module": "Preserve",
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"jsx": "react-jsx",
|
|
9
|
-
"allowJs": true,
|
|
10
|
-
|
|
11
|
-
// Bundler mode
|
|
12
|
-
"moduleResolution": "bundler",
|
|
13
|
-
"allowImportingTsExtensions": true,
|
|
14
|
-
"verbatimModuleSyntax": true,
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
|
|
17
|
-
// Best practices
|
|
18
|
-
"strict": true,
|
|
19
|
-
"skipLibCheck": true,
|
|
20
|
-
"noFallthroughCasesInSwitch": true,
|
|
21
|
-
"noUncheckedIndexedAccess": true,
|
|
22
|
-
"noImplicitOverride": true,
|
|
23
|
-
|
|
24
|
-
// Some stricter flags (disabled by default)
|
|
25
|
-
"noUnusedLocals": false,
|
|
26
|
-
"noUnusedParameters": false,
|
|
27
|
-
"noPropertyAccessFromIndexSignature": false
|
|
28
|
-
}
|
|
29
|
-
}
|