goudengine 0.0.828 → 0.0.830

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 (68) hide show
  1. package/README.md +116 -0
  2. package/dist/generated/diagnostic.g.d.ts +15 -0
  3. package/dist/generated/diagnostic.g.d.ts.map +1 -0
  4. package/dist/generated/diagnostic.g.js +50 -0
  5. package/dist/generated/diagnostic.g.js.map +1 -0
  6. package/dist/generated/index.g.d.ts +4 -2
  7. package/dist/generated/index.g.d.ts.map +1 -1
  8. package/dist/generated/index.g.js +8 -1
  9. package/dist/generated/index.g.js.map +1 -1
  10. package/dist/generated/node/index.g.d.ts +443 -3
  11. package/dist/generated/node/index.g.d.ts.map +1 -1
  12. package/dist/generated/node/index.g.js +985 -17
  13. package/dist/generated/node/index.g.js.map +1 -1
  14. package/dist/generated/types/engine.g.d.ts +541 -0
  15. package/dist/generated/types/engine.g.d.ts.map +1 -1
  16. package/dist/generated/types/input.g.d.ts +43 -1
  17. package/dist/generated/types/input.g.d.ts.map +1 -1
  18. package/dist/generated/types/input.g.js +50 -1
  19. package/dist/generated/types/input.g.js.map +1 -1
  20. package/dist/index.d.ts +6 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +28 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/node/index.d.ts +6 -0
  25. package/dist/node/index.d.ts.map +1 -0
  26. package/dist/node/index.js +28 -0
  27. package/dist/node/index.js.map +1 -0
  28. package/dist/shared/debugger.d.ts +9 -0
  29. package/dist/shared/debugger.d.ts.map +1 -0
  30. package/dist/shared/debugger.js +11 -0
  31. package/dist/shared/debugger.js.map +1 -0
  32. package/dist/shared/network.d.ts +39 -0
  33. package/dist/shared/network.d.ts.map +1 -0
  34. package/dist/shared/network.js +66 -0
  35. package/dist/shared/network.js.map +1 -0
  36. package/dist/web/generated/types/engine.g.d.ts +541 -0
  37. package/dist/web/generated/types/engine.g.d.ts.map +1 -1
  38. package/dist/web/generated/types/input.g.d.ts +43 -1
  39. package/dist/web/generated/types/input.g.d.ts.map +1 -1
  40. package/dist/web/generated/types/input.g.js +49 -0
  41. package/dist/web/generated/types/input.g.js.map +1 -1
  42. package/dist/web/generated/web/index.g.d.ts +175 -3
  43. package/dist/web/generated/web/index.g.d.ts.map +1 -1
  44. package/dist/web/generated/web/index.g.js +497 -6
  45. package/dist/web/generated/web/index.g.js.map +1 -1
  46. package/dist/web/shared/debugger.d.ts +9 -0
  47. package/dist/web/shared/debugger.d.ts.map +1 -0
  48. package/dist/web/shared/debugger.js +7 -0
  49. package/dist/web/shared/debugger.js.map +1 -0
  50. package/dist/web/shared/network.d.ts +39 -0
  51. package/dist/web/shared/network.d.ts.map +1 -0
  52. package/dist/web/shared/network.js +61 -0
  53. package/dist/web/shared/network.js.map +1 -0
  54. package/dist/web/web/index.d.ts +6 -0
  55. package/dist/web/web/index.d.ts.map +1 -0
  56. package/dist/web/web/index.js +6 -0
  57. package/dist/web/web/index.js.map +1 -0
  58. package/goud-engine-node.darwin-arm64.node +0 -0
  59. package/goud-engine-node.darwin-x64.node +0 -0
  60. package/goud-engine-node.linux-x64-gnu.node +0 -0
  61. package/goud-engine-node.win32-x64-msvc.node +0 -0
  62. package/index.d.ts +381 -0
  63. package/index.js +56 -52
  64. package/package.json +25 -19
  65. package/wasm/goud_engine.d.ts +720 -74
  66. package/wasm/goud_engine.js +1401 -20
  67. package/wasm/goud_engine_bg.wasm +0 -0
  68. package/wasm/goud_engine_bg.wasm.d.ts +184 -74
package/index.d.ts CHANGED
@@ -11,7 +11,101 @@ export declare class Entity {
11
11
  display(): string
12
12
  }
13
13
 
14
+ export declare class GoudContext {
15
+ constructor(config?: NapiContextConfig | undefined | null)
16
+ destroy(): boolean
17
+ isValid(): boolean
18
+ getNetworkCapabilities(): NapiNetworkCapabilities
19
+ networkHost(protocol: number, port: number): number
20
+ networkConnect(protocol: number, address: string, port: number): number
21
+ networkConnectWithPeer(protocol: number, address: string, port: number): NapiNetworkConnectResult
22
+ networkDisconnect(handle: number): number
23
+ networkSend(handle: number, peerId: number, data: Buffer, channel: number): number
24
+ networkReceive(handle: number): Buffer
25
+ networkReceivePacket(handle: number): NapiNetworkPacket | null
26
+ networkPoll(handle: number): number
27
+ getNetworkStats(handle: number): NapiNetworkStats
28
+ networkPeerCount(handle: number): number
29
+ setNetworkSimulation(handle: number, config: NapiNetworkSimulationConfig): number
30
+ clearNetworkSimulation(handle: number): number
31
+ setNetworkOverlayHandle(handle: number): number
32
+ clearNetworkOverlayHandle(): number
33
+ getDebuggerSnapshotJson(): string
34
+ getDebuggerManifestJson(): string
35
+ setDebuggerPaused(paused: boolean): void
36
+ stepDebugger(kind: number, count: number): void
37
+ setDebuggerTimeScale(scale: number): void
38
+ setDebuggerDebugDrawEnabled(enabled: boolean): void
39
+ injectDebuggerKeyEvent(key: number, pressed: boolean): void
40
+ injectDebuggerMouseButton(button: number, pressed: boolean): void
41
+ injectDebuggerMousePosition(position: Vec2): void
42
+ injectDebuggerScroll(delta: Vec2): void
43
+ setDebuggerProfilingEnabled(enabled: boolean): void
44
+ setDebuggerSelectedEntity(entityId: number): void
45
+ clearDebuggerSelectedEntity(): void
46
+ getMemorySummary(): NapiMemorySummary
47
+ captureDebuggerFrame(): string
48
+ startDebuggerRecording(): void
49
+ stopDebuggerRecording(): string
50
+ startDebuggerReplay(recording: Buffer): void
51
+ stopDebuggerReplay(): void
52
+ getDebuggerReplayStatusJson(): string
53
+ getDebuggerMetricsTraceJson(): string
54
+ }
55
+
14
56
  export declare class GoudGame {
57
+ /** Plays audio from raw bytes on the default channel */
58
+ audioPlay(data: Buffer): number
59
+ /** Plays audio from raw bytes on the given channel */
60
+ audioPlayOnChannel(data: Buffer, channel: number): number
61
+ /** Plays audio with explicit volume, speed, looping, and channel settings */
62
+ audioPlayWithSettings(data: Buffer, volume: number, speed: number, looping: boolean, channel: number): number
63
+ /** Stops a playing audio player */
64
+ audioStop(playerId: number): number
65
+ /** Pauses a playing audio player */
66
+ audioPause(playerId: number): number
67
+ /** Resumes a paused audio player */
68
+ audioResume(playerId: number): number
69
+ /** Stops all active audio players */
70
+ audioStopAll(): number
71
+ /** Sets the global audio volume */
72
+ audioSetGlobalVolume(volume: number): number
73
+ /** Gets the global audio volume */
74
+ audioGetGlobalVolume(): number
75
+ /** Sets the volume for a specific channel */
76
+ audioSetChannelVolume(channel: number, volume: number): number
77
+ /** Gets the volume for a specific channel */
78
+ audioGetChannelVolume(channel: number): number
79
+ /** Returns non-zero when the player is still playing */
80
+ audioIsPlaying(playerId: number): number
81
+ /** Returns the number of active audio players */
82
+ audioActiveCount(): number
83
+ /** Cleans up finished audio players */
84
+ audioCleanupFinished(): number
85
+ /** Plays audio with 3D spatial attenuation */
86
+ audioPlaySpatial3d(data: Buffer, sourceX: number, sourceY: number, sourceZ: number, listenerX: number, listenerY: number, listenerZ: number, maxDistance: number, rolloff: number): number
87
+ /** Updates 3D spatial attenuation for an active player */
88
+ audioUpdateSpatial3d(playerId: number, sourceX: number, sourceY: number, sourceZ: number, listenerX: number, listenerY: number, listenerZ: number, maxDistance: number, rolloff: number): number
89
+ /** Sets the 3D listener position */
90
+ audioSetListenerPosition3d(x: number, y: number, z: number): number
91
+ /** Sets the 3D source position for an active player */
92
+ audioSetSourcePosition3d(playerId: number, x: number, y: number, z: number, maxDistance: number, rolloff: number): number
93
+ /** Sets the volume for an active player */
94
+ audioSetPlayerVolume(playerId: number, volume: number): number
95
+ /** Sets the playback speed for an active player */
96
+ audioSetPlayerSpeed(playerId: number, speed: number): number
97
+ /** Applies an immediate crossfade mix between two active players */
98
+ audioCrossfade(fromPlayerId: number, toPlayerId: number, mix: number): number
99
+ /** Starts a timed crossfade from one player to a new audio asset */
100
+ audioCrossfadeTo(fromPlayerId: number, data: Buffer, durationSec: number, channel: number): number
101
+ /** Mixes a secondary audio asset with a primary player */
102
+ audioMixWith(primaryPlayerId: number, data: Buffer, secondaryVolume: number, secondaryChannel: number): number
103
+ /** Advances all active timed crossfades */
104
+ audioUpdateCrossfades(deltaSec: number): number
105
+ /** Returns the number of active timed crossfades */
106
+ audioActiveCrossfadeCount(): number
107
+ /** Activates audio playback on platforms that require user gesture initialization */
108
+ audioActivate(): number
15
109
  constructor(config?: GameConfig | undefined | null)
16
110
  shouldClose(): boolean
17
111
  close(): void
@@ -20,6 +114,9 @@ export declare class GoudGame {
20
114
  endFrame(): void
21
115
  loadTexture(path: string): number
22
116
  destroyTexture(handle: number): boolean
117
+ loadFont(path: string): number
118
+ destroyFont(handle: number): boolean
119
+ drawText(fontHandle: number, text: string, x: number, y: number, fontSize?: number | undefined | null, alignment?: number | undefined | null, maxWidth?: number | undefined | null, lineSpacing?: number | undefined | null, direction?: number | undefined | null, r?: number | undefined | null, g?: number | undefined | null, b?: number | undefined | null, a?: number | undefined | null): boolean
23
120
  drawSprite(texture: number, x: number, y: number, w: number, h: number, rotation?: number | undefined | null, r?: number | undefined | null, g?: number | undefined | null, b?: number | undefined | null, a?: number | undefined | null): boolean
24
121
  drawSpriteRect(texture: number, x: number, y: number, w: number, h: number, rotation: number | undefined | null, srcX: number, srcY: number, srcW: number, srcH: number, r?: number | undefined | null, g?: number | undefined | null, b?: number | undefined | null, a?: number | undefined | null): boolean
25
122
  drawQuad(x: number, y: number, w: number, h: number, r?: number | undefined | null, g?: number | undefined | null, b?: number | undefined | null, a?: number | undefined | null): boolean
@@ -33,6 +130,48 @@ export declare class GoudGame {
33
130
  setFpsOverlayEnabled(enabled: boolean): void
34
131
  setFpsUpdateInterval(interval: number): void
35
132
  setFpsOverlayCorner(corner: number): void
133
+ getDebuggerSnapshotJson(): string
134
+ getDebuggerManifestJson(): string
135
+ setDebuggerPaused(paused: boolean): void
136
+ stepDebugger(kind: number, count: number): void
137
+ setDebuggerTimeScale(scale: number): void
138
+ setDebuggerDebugDrawEnabled(enabled: boolean): void
139
+ injectDebuggerKeyEvent(key: number, pressed: boolean): void
140
+ injectDebuggerMouseButton(button: number, pressed: boolean): void
141
+ injectDebuggerMousePosition(position: Vec2): void
142
+ injectDebuggerScroll(delta: Vec2): void
143
+ setDebuggerProfilingEnabled(enabled: boolean): void
144
+ setDebuggerSelectedEntity(entityId: number): void
145
+ clearDebuggerSelectedEntity(): void
146
+ getMemorySummary(): NapiMemorySummary
147
+ captureDebuggerFrame(): string
148
+ startDebuggerRecording(): void
149
+ stopDebuggerRecording(): string
150
+ startDebuggerReplay(recording: Buffer): void
151
+ stopDebuggerReplay(): void
152
+ getDebuggerReplayStatusJson(): string
153
+ getDebuggerMetricsTraceJson(): string
154
+ getRenderCapabilities(): NapiRenderCapabilities
155
+ getPhysicsCapabilities(): NapiPhysicsCapabilities
156
+ getAudioCapabilities(): NapiAudioCapabilities
157
+ getInputCapabilities(): NapiInputCapabilities
158
+ getNetworkCapabilities(): NapiNetworkCapabilities
159
+ /** Checks if the hot-swap shortcut (F5) was pressed and cycles render provider. Debug builds only. */
160
+ checkHotSwapShortcut(): boolean
161
+ networkHost(protocol: number, port: number): number
162
+ networkConnect(protocol: number, address: string, port: number): number
163
+ networkConnectWithPeer(protocol: number, address: string, port: number): NapiNetworkConnectResult
164
+ networkDisconnect(handle: number): number
165
+ networkSend(handle: number, peerId: number, data: Buffer, channel: number): number
166
+ networkReceive(handle: number): Buffer
167
+ networkReceivePacket(handle: number): NapiNetworkPacket | null
168
+ networkPoll(handle: number): number
169
+ getNetworkStats(handle: number): NapiNetworkStats
170
+ networkPeerCount(handle: number): number
171
+ setNetworkSimulation(handle: number, config: NapiNetworkSimulationConfig): number
172
+ clearNetworkSimulation(handle: number): number
173
+ setNetworkOverlayHandle(handle: number): number
174
+ clearNetworkOverlayHandle(): number
36
175
  isKeyPressed(key: number): boolean
37
176
  isKeyJustPressed(key: number): boolean
38
177
  isKeyJustReleased(key: number): boolean
@@ -51,6 +190,9 @@ export declare class GoudGame {
51
190
  despawn(entity: Entity): boolean
52
191
  entityCount(): number
53
192
  isAlive(entity: Entity): boolean
193
+ loadScene(name: string, json: string): number
194
+ unloadScene(name: string): boolean
195
+ setActiveScene(sceneId: number, active: boolean): boolean
54
196
  addTransform2D(entity: Entity, data: Transform2DData): void
55
197
  getTransform2D(entity: Entity): Transform2DData | null
56
198
  setTransform2D(entity: Entity, data: Transform2DData): void
@@ -65,6 +207,10 @@ export declare class GoudGame {
65
207
  getName(entity: Entity): string | null
66
208
  hasName(entity: Entity): boolean
67
209
  removeName(entity: Entity): boolean
210
+ physicsRaycastEx(originX: number, originY: number, dirX: number, dirY: number, maxDist: number, layerMask: number): NapiPhysicsRaycastHit2D | null
211
+ physicsCollisionEventsCount(): number
212
+ physicsCollisionEventsRead(index: number): NapiPhysicsCollisionEvent2D | null
213
+ physicsSetCollisionCallback(callbackPtr: number, userData: number): number
68
214
  collisionAabbAabb(caX: number, caY: number, hwA: number, hhA: number, cbX: number, cbY: number, hwB: number, hhB: number): NapiContact | null
69
215
  collisionCircleCircle(caX: number, caY: number, ra: number, cbX: number, cbY: number, rb: number): NapiContact | null
70
216
  collisionCircleAabb(cx: number, cy: number, cr: number, bx: number, by: number, bhw: number, bhh: number): NapiContact | null
@@ -104,6 +250,16 @@ export declare class GoudGame {
104
250
  get contextValid(): boolean
105
251
  /** Returns the raw FFI delta time from the last poll_events call. */
106
252
  get ffiDeltaTime(): number
253
+ animationLayerStackCreate(entity: Entity): number
254
+ animationLayerAdd(entity: Entity, name: string, blendMode: number): number
255
+ animationLayerSetWeight(entity: Entity, layerIndex: number, weight: number): number
256
+ animationLayerPlay(entity: Entity, layerIndex: number): number
257
+ animationLayerSetClip(entity: Entity, layerIndex: number, frameCount: number, frameDuration: number, mode: number): number
258
+ animationLayerAddFrame(entity: Entity, layerIndex: number, x: number, y: number, w: number, h: number): number
259
+ animationLayerReset(entity: Entity, layerIndex: number): number
260
+ animationClipAddEvent(entity: Entity, frameIndex: number, name: string, payloadType: number, payloadInt: number, payloadFloat: number, payloadString?: string | undefined | null): number
261
+ animationEventsCount(): number
262
+ animationEventsRead(index: number): NapiAnimationEventData
107
263
  }
108
264
 
109
265
  export declare class NativeEngineConfig {
@@ -114,10 +270,95 @@ export declare class NativeEngineConfig {
114
270
  setFullscreen(enabled: boolean): boolean
115
271
  setTargetFps(fps: number): boolean
116
272
  setFpsOverlay(enabled: boolean): boolean
273
+ setPhysicsBackend2D(backend: number): boolean
274
+ setDebugger(debugger: NapiDebuggerConfig): boolean
117
275
  build(): GoudGame
118
276
  destroy(): void
119
277
  }
120
278
 
279
+ export declare class NativePhysicsWorld2D {
280
+ constructor(gravityX: number, gravityY: number, backend?: number | undefined | null)
281
+ create(gravityX: number, gravityY: number): number
282
+ createWithBackend(gravityX: number, gravityY: number, backend: number): number
283
+ destroy(): number
284
+ setGravity(x: number, y: number): number
285
+ addRigidBody(bodyType: number, x: number, y: number, gravityScale: number): number
286
+ addRigidBodyEx(bodyType: number, x: number, y: number, gravityScale: number, ccdEnabled: boolean): number
287
+ addCollider(bodyHandle: number, shapeType: number, width: number, height: number, radius: number, friction: number, restitution: number): number
288
+ addColliderEx(bodyHandle: number, shapeType: number, width: number, height: number, radius: number, friction: number, restitution: number, isSensor: boolean, layer: number, mask: number): number
289
+ removeBody(handle: number): number
290
+ createJoint(bodyA: number, bodyB: number, kind: number, anchorAx: number, anchorAy: number, anchorBx: number, anchorBy: number, axisX: number, axisY: number, hasLimits: boolean, limitMin: number, limitMax: number, hasMotor: boolean, motorTargetVelocity: number, motorMaxForce: number): number
291
+ removeJoint(handle: number): number
292
+ step(dt: number): number
293
+ getPosition(handle: number): Vec2
294
+ getVelocity(handle: number): Vec2
295
+ setVelocity(handle: number, vx: number, vy: number): number
296
+ applyForce(handle: number, fx: number, fy: number): number
297
+ applyImpulse(handle: number, ix: number, iy: number): number
298
+ raycast(originX: number, originY: number, dirX: number, dirY: number, maxDist: number): Vec2
299
+ raycastEx(originX: number, originY: number, dirX: number, dirY: number, maxDist: number, layerMask: number): NapiPhysicsRaycastHit2D
300
+ collisionEventsCount(): number
301
+ collisionEventsRead(index: number): NapiPhysicsCollisionEvent2D
302
+ collisionEventCount(): number
303
+ collisionEventRead(index: number): NapiPhysicsCollisionEvent2D
304
+ setCollisionCallback(callbackPtr: number, userData: number): number
305
+ getGravity(): Vec2
306
+ setBodyGravityScale(handle: number, scale: number): number
307
+ getBodyGravityScale(handle: number): number
308
+ setColliderFriction(handle: number, friction: number): number
309
+ getColliderFriction(handle: number): number
310
+ setColliderRestitution(handle: number, restitution: number): number
311
+ getColliderRestitution(handle: number): number
312
+ setTimestep(dt: number): number
313
+ getTimestep(): number
314
+ }
315
+
316
+ export declare class NativePhysicsWorld3D {
317
+ constructor(gravityX: number, gravityY: number, gravityZ: number)
318
+ create(gravityX: number, gravityY: number, gravityZ: number): number
319
+ destroy(): number
320
+ setGravity(x: number, y: number, z: number): number
321
+ addRigidBody(bodyType: number, x: number, y: number, z: number, gravityScale: number): number
322
+ addCollider(bodyHandle: number, shapeType: number, width: number, height: number, depth: number, radius: number, friction: number, restitution: number): number
323
+ removeBody(handle: number): number
324
+ step(dt: number): number
325
+ getPosition(handle: number): Vec3
326
+ setVelocity(handle: number, vx: number, vy: number, vz: number): number
327
+ applyForce(handle: number, fx: number, fy: number, fz: number): number
328
+ applyImpulse(handle: number, ix: number, iy: number, iz: number): number
329
+ getGravity(): Vec3
330
+ setBodyGravityScale(handle: number, scale: number): number
331
+ getBodyGravityScale(handle: number): number
332
+ setColliderFriction(handle: number, friction: number): number
333
+ getColliderFriction(handle: number): number
334
+ setColliderRestitution(handle: number, restitution: number): number
335
+ getColliderRestitution(handle: number): number
336
+ setTimestep(dt: number): number
337
+ getTimestep(): number
338
+ }
339
+
340
+ export declare class UiManager {
341
+ constructor()
342
+ destroy(): void
343
+ update(): void
344
+ render(): void
345
+ nodeCount(): number
346
+ createNode(componentType: number): number
347
+ removeNode(nodeId: number): number
348
+ setParent(childId: number, parentId: number): number
349
+ getParent(nodeId: number): number
350
+ getChildCount(nodeId: number): number
351
+ getChildAt(nodeId: number, index: number): number
352
+ setWidget(nodeId: number, widgetKind: number): number
353
+ setStyle(nodeId: number, style: NapiUiStyle): number
354
+ setLabelText(nodeId: number, text: string): number
355
+ setButtonEnabled(nodeId: number, enabled: boolean): number
356
+ setImageTexturePath(nodeId: number, path: string): number
357
+ setSlider(nodeId: number, min: number, max: number, value: number, enabled: boolean): number
358
+ eventCount(): number
359
+ eventRead(index: number): NapiUiEvent | null
360
+ }
361
+
121
362
  export interface Color {
122
363
  r: number
123
364
  g: number
@@ -157,6 +398,21 @@ export interface GameConfig {
157
398
  height?: number
158
399
  }
159
400
 
401
+ export interface NapiAnimationEventData {
402
+ entity: number
403
+ name: string
404
+ frameIndex: number
405
+ payloadType: number
406
+ payloadInt: number
407
+ payloadFloat: number
408
+ payloadString: string
409
+ }
410
+
411
+ export interface NapiAudioCapabilities {
412
+ supportsSpatial: boolean
413
+ maxChannels: number
414
+ }
415
+
160
416
  export interface NapiContact {
161
417
  pointX: number
162
418
  pointY: number
@@ -165,6 +421,16 @@ export interface NapiContact {
165
421
  penetration: number
166
422
  }
167
423
 
424
+ export interface NapiContextConfig {
425
+ debugger: NapiDebuggerConfig
426
+ }
427
+
428
+ export interface NapiDebuggerConfig {
429
+ enabled: boolean
430
+ publishLocalAttach: boolean
431
+ routeLabel: string
432
+ }
433
+
168
434
  export interface NapiFpsStats {
169
435
  currentFps: number
170
436
  minFps: number
@@ -173,6 +439,96 @@ export interface NapiFpsStats {
173
439
  frameTimeMs: number
174
440
  }
175
441
 
442
+ export interface NapiInputCapabilities {
443
+ supportsGamepad: boolean
444
+ supportsTouch: boolean
445
+ maxGamepads: number
446
+ }
447
+
448
+ export interface NapiMemoryCategoryStats {
449
+ currentBytes: number
450
+ peakBytes: number
451
+ }
452
+
453
+ export interface NapiMemorySummary {
454
+ rendering: NapiMemoryCategoryStats
455
+ assets: NapiMemoryCategoryStats
456
+ ecs: NapiMemoryCategoryStats
457
+ ui: NapiMemoryCategoryStats
458
+ audio: NapiMemoryCategoryStats
459
+ network: NapiMemoryCategoryStats
460
+ debugger: NapiMemoryCategoryStats
461
+ other: NapiMemoryCategoryStats
462
+ totalCurrentBytes: number
463
+ totalPeakBytes: number
464
+ }
465
+
466
+ export interface NapiNetworkCapabilities {
467
+ supportsHosting: boolean
468
+ maxConnections: number
469
+ maxChannels: number
470
+ maxMessageSize: number
471
+ }
472
+
473
+ export interface NapiNetworkConnectResult {
474
+ handle: number
475
+ peerId: number
476
+ }
477
+
478
+ export interface NapiNetworkPacket {
479
+ peerId: number
480
+ data: Buffer
481
+ }
482
+
483
+ export interface NapiNetworkSimulationConfig {
484
+ oneWayLatencyMs: number
485
+ jitterMs: number
486
+ packetLossPercent: number
487
+ }
488
+
489
+ export interface NapiNetworkStats {
490
+ bytesSent: number
491
+ bytesReceived: number
492
+ packetsSent: number
493
+ packetsReceived: number
494
+ packetsLost: number
495
+ rttMs: number
496
+ sendBandwidthBytesPerSec: number
497
+ receiveBandwidthBytesPerSec: number
498
+ packetLossPercent: number
499
+ jitterMs: number
500
+ }
501
+
502
+ export interface NapiPhysicsCapabilities {
503
+ supportsContinuousCollision: boolean
504
+ supportsJoints: boolean
505
+ maxBodies: number
506
+ }
507
+
508
+ export interface NapiPhysicsCollisionEvent2D {
509
+ bodyA: number
510
+ bodyB: number
511
+ kind: number
512
+ }
513
+
514
+ export interface NapiPhysicsRaycastHit2D {
515
+ bodyHandle: number
516
+ colliderHandle: number
517
+ pointX: number
518
+ pointY: number
519
+ normalX: number
520
+ normalY: number
521
+ distance: number
522
+ }
523
+
524
+ export interface NapiRenderCapabilities {
525
+ maxTextureUnits: number
526
+ maxTextureSize: number
527
+ supportsInstancing: boolean
528
+ supportsCompute: boolean
529
+ supportsMsaa: boolean
530
+ }
531
+
176
532
  export interface NapiRenderStats {
177
533
  drawCalls: number
178
534
  triangles: number
@@ -180,6 +536,31 @@ export interface NapiRenderStats {
180
536
  shaderBinds: number
181
537
  }
182
538
 
539
+ export interface NapiUiColor {
540
+ r: number
541
+ g: number
542
+ b: number
543
+ a: number
544
+ }
545
+
546
+ export interface NapiUiEvent {
547
+ eventKind: number
548
+ nodeId: number
549
+ previousNodeId: number
550
+ currentNodeId: number
551
+ }
552
+
553
+ export interface NapiUiStyle {
554
+ backgroundColor?: NapiUiColor
555
+ foregroundColor?: NapiUiColor
556
+ borderColor?: NapiUiColor
557
+ borderWidth?: number
558
+ fontFamily?: string
559
+ fontSize?: number
560
+ texturePath?: string
561
+ widgetSpacing?: number
562
+ }
563
+
183
564
  export interface Rect {
184
565
  x: number
185
566
  y: number