@zylem/game-lib 0.6.4 → 0.8.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 (156) hide show
  1. package/README.md +18 -2
  2. package/dist/actions.d.ts +321 -11
  3. package/dist/actions.js +1 -936
  4. package/dist/api/game-lib.api.json +54074 -0
  5. package/dist/api/game-lib.api.md +4544 -0
  6. package/dist/api/game-lib.d.ts +8258 -0
  7. package/dist/api/game-lib.typedoc.json +345421 -0
  8. package/dist/audio.d.ts +13 -0
  9. package/dist/audio.js +1 -0
  10. package/dist/base-node-life-cycle-D2NuN1VB.d.ts +151 -0
  11. package/dist/behavior.d.ts +2 -0
  12. package/dist/behavior.js +1 -0
  13. package/dist/blueprints-TbGY-h53.d.ts +162 -0
  14. package/dist/chunk-4QLJUQSJ.js +1 -0
  15. package/dist/chunk-7FR5JSQ2.js +1 -0
  16. package/dist/chunk-7GYFZKK7.js +1 -0
  17. package/dist/chunk-7WRQ2UAN.js +1 -0
  18. package/dist/chunk-BH53MBAZ.js +1 -0
  19. package/dist/chunk-BIGH6D34.js +0 -0
  20. package/dist/chunk-CM5YRNBJ.js +19 -0
  21. package/dist/chunk-COM6HJ2L.js +1 -0
  22. package/dist/chunk-D2PATZCC.js +1 -0
  23. package/dist/chunk-DFLI7ICU.js +0 -0
  24. package/dist/chunk-E3UBSUPX.js +1 -0
  25. package/dist/chunk-FKIKN7RP.js +24 -0
  26. package/dist/chunk-G4HONLWC.js +1 -0
  27. package/dist/chunk-IKWE2W6L.js +1 -0
  28. package/dist/chunk-IPWUDOV5.js +1 -0
  29. package/dist/chunk-JEHFHUH4.js +0 -0
  30. package/dist/chunk-JNKPTL77.js +1 -0
  31. package/dist/chunk-JQKS42G4.js +1 -0
  32. package/dist/chunk-M3XNO56P.js +1 -0
  33. package/dist/chunk-MSC2BEO5.js +1 -0
  34. package/dist/chunk-ORIDWL3T.js +0 -0
  35. package/dist/chunk-QB3NL7VQ.js +1 -0
  36. package/dist/chunk-QXVH6POE.js +1 -0
  37. package/dist/chunk-RXDTAWI2.js +29 -0
  38. package/dist/chunk-TAUWDQZF.js +9 -0
  39. package/dist/chunk-VS2D4B3W.js +1 -0
  40. package/dist/chunk-WQ3WMMZD.js +1 -0
  41. package/dist/chunk-XK63E4SX.js +1 -0
  42. package/dist/chunk-XNDS4YFR.js +1 -0
  43. package/dist/chunk-XNHVRFAK.js +1 -0
  44. package/dist/chunk-XRP4JJXL.js +1 -0
  45. package/dist/chunk-YHEWKN7N.js +1 -0
  46. package/dist/chunk-ZRT3ZQVH.js +1 -0
  47. package/dist/collision-builder-jF-toPIl.d.ts +38 -0
  48. package/dist/core.d.ts +223 -16
  49. package/dist/core.js +1 -12424
  50. package/dist/debug-state-BPT6jEog.d.ts +17 -0
  51. package/dist/debug.d.ts +76 -0
  52. package/dist/debug.js +1 -0
  53. package/dist/default-controls-0-vCnli7.d.ts +111 -0
  54. package/dist/{entity-vj-HTjzU.d.ts → entity-BdSI8CL3.d.ts} +119 -626
  55. package/dist/{entity-Bq_eNEDI.d.ts → entity-DZbFQ1Wg.d.ts} +4 -4
  56. package/dist/entity-type-map-Bd69SpAS.d.ts +928 -0
  57. package/dist/entity.d.ts +268 -0
  58. package/dist/entity.js +1 -0
  59. package/dist/events.d.ts +181 -0
  60. package/dist/events.js +1 -0
  61. package/dist/game-C1FHVqXl.d.ts +1886 -0
  62. package/dist/game-default-QHROHW2O.js +1 -0
  63. package/dist/game-interfaces-mchNYSZE.d.ts +90 -0
  64. package/dist/globals.d.ts +115 -0
  65. package/dist/globals.js +1 -0
  66. package/dist/graphics.d.ts +53 -0
  67. package/dist/graphics.js +1 -0
  68. package/dist/input-ui.d.ts +35 -0
  69. package/dist/input-ui.js +1 -0
  70. package/dist/input.d.ts +73 -0
  71. package/dist/input.js +1 -0
  72. package/dist/material-9vJ6SZaI.d.ts +126 -0
  73. package/dist/public.d.ts +38 -0
  74. package/dist/public.js +1 -0
  75. package/dist/runtime.d.ts +59 -0
  76. package/dist/runtime.js +1 -0
  77. package/dist/schema/entity.schema.json +244 -0
  78. package/dist/schema/game-config.schema.json +625 -0
  79. package/dist/schema/input-config.schema.json +499 -0
  80. package/dist/schema/stage-config.schema.json +93 -0
  81. package/dist/schema/stage.schema.json +271 -0
  82. package/dist/schema.d.ts +538 -0
  83. package/dist/schema.js +1 -0
  84. package/dist/stage-transition-CmGpV4tc.d.ts +46 -0
  85. package/dist/vector-CiSHbivc.d.ts +133 -0
  86. package/dist/web-components.d.ts +70 -0
  87. package/dist/web-components.js +1 -0
  88. package/dist/zylem-camera-C3bn6BTI.d.ts +575 -0
  89. package/package.json +70 -73
  90. package/dist/actions.js.map +0 -1
  91. package/dist/behavior/jumper-2d.d.ts +0 -114
  92. package/dist/behavior/jumper-2d.js +0 -711
  93. package/dist/behavior/jumper-2d.js.map +0 -1
  94. package/dist/behavior/platformer-3d.d.ts +0 -296
  95. package/dist/behavior/platformer-3d.js +0 -761
  96. package/dist/behavior/platformer-3d.js.map +0 -1
  97. package/dist/behavior/ricochet-2d.d.ts +0 -275
  98. package/dist/behavior/ricochet-2d.js +0 -425
  99. package/dist/behavior/ricochet-2d.js.map +0 -1
  100. package/dist/behavior/ricochet-3d.d.ts +0 -117
  101. package/dist/behavior/ricochet-3d.js +0 -443
  102. package/dist/behavior/ricochet-3d.js.map +0 -1
  103. package/dist/behavior/screen-visibility.d.ts +0 -79
  104. package/dist/behavior/screen-visibility.js +0 -358
  105. package/dist/behavior/screen-visibility.js.map +0 -1
  106. package/dist/behavior/screen-wrap.d.ts +0 -87
  107. package/dist/behavior/screen-wrap.js +0 -246
  108. package/dist/behavior/screen-wrap.js.map +0 -1
  109. package/dist/behavior/shooter-2d.d.ts +0 -79
  110. package/dist/behavior/shooter-2d.js +0 -180
  111. package/dist/behavior/shooter-2d.js.map +0 -1
  112. package/dist/behavior/thruster.d.ts +0 -11
  113. package/dist/behavior/thruster.js +0 -292
  114. package/dist/behavior/thruster.js.map +0 -1
  115. package/dist/behavior/top-down-movement.d.ts +0 -56
  116. package/dist/behavior/top-down-movement.js +0 -125
  117. package/dist/behavior/top-down-movement.js.map +0 -1
  118. package/dist/behavior/world-boundary-2d.d.ts +0 -142
  119. package/dist/behavior/world-boundary-2d.js +0 -235
  120. package/dist/behavior/world-boundary-2d.js.map +0 -1
  121. package/dist/behavior/world-boundary-3d.d.ts +0 -76
  122. package/dist/behavior/world-boundary-3d.js +0 -274
  123. package/dist/behavior/world-boundary-3d.js.map +0 -1
  124. package/dist/behavior-descriptor-BXnVR8Ki.d.ts +0 -159
  125. package/dist/blueprints-DmbK2dki.d.ts +0 -26
  126. package/dist/camera-4XO5gbQH.d.ts +0 -905
  127. package/dist/camera.d.ts +0 -6
  128. package/dist/camera.js +0 -1993
  129. package/dist/camera.js.map +0 -1
  130. package/dist/composition-BASvMKrW.d.ts +0 -218
  131. package/dist/core-CARRaS55.d.ts +0 -541
  132. package/dist/core.js.map +0 -1
  133. package/dist/entities-ChFirVL9.d.ts +0 -410
  134. package/dist/entities.d.ts +0 -9
  135. package/dist/entities.js +0 -4986
  136. package/dist/entities.js.map +0 -1
  137. package/dist/entity-types-DAu8sGJH.d.ts +0 -26
  138. package/dist/global-change-2JvMaz44.d.ts +0 -25
  139. package/dist/main.d.ts +0 -1353
  140. package/dist/main.js +0 -19525
  141. package/dist/main.js.map +0 -1
  142. package/dist/physics-pose-DCc4oE44.d.ts +0 -25
  143. package/dist/physics-protocol-BDD3P5W2.d.ts +0 -200
  144. package/dist/physics-worker.d.ts +0 -21
  145. package/dist/physics-worker.js +0 -306
  146. package/dist/physics-worker.js.map +0 -1
  147. package/dist/physics.d.ts +0 -205
  148. package/dist/physics.js +0 -577
  149. package/dist/physics.js.map +0 -1
  150. package/dist/stage-types-C19IhuzA.d.ts +0 -731
  151. package/dist/stage.d.ts +0 -52
  152. package/dist/stage.js +0 -8479
  153. package/dist/stage.js.map +0 -1
  154. package/dist/sync-state-machine-CZyspBpj.d.ts +0 -16
  155. package/dist/thruster-23lzoPZd.d.ts +0 -180
  156. package/dist/world-DfgxoNMt.d.ts +0 -105
@@ -0,0 +1,17 @@
1
+ import { G as GameEntity } from './entity-BdSI8CL3.js';
2
+
3
+ type DebugTools = 'select' | 'translate' | 'rotate' | 'scale' | 'delete' | 'none';
4
+ interface DebugState {
5
+ enabled: boolean;
6
+ paused: boolean;
7
+ tool: DebugTools;
8
+ selectedEntity: GameEntity<any> | null;
9
+ hoveredEntity: GameEntity<any> | null;
10
+ flags: Set<string>;
11
+ }
12
+ declare const debugState: DebugState;
13
+ declare function setPaused(paused: boolean): void;
14
+ declare function setDebugTool(tool: DebugTools): void;
15
+ declare function setSelectedEntity(entity: GameEntity<any> | null): void;
16
+
17
+ export { type DebugTools as D, setPaused as a, setSelectedEntity as b, debugState as d, setDebugTool as s };
@@ -0,0 +1,76 @@
1
+ export { D as DebugTools, d as debugState, s as setDebugTool, a as setPaused, b as setSelectedEntity } from './debug-state-BPT6jEog.js';
2
+ import { Object3D, Vector3 } from 'three';
3
+ import { G as GameEntity } from './entity-BdSI8CL3.js';
4
+ import { WebGPURenderer } from 'three/webgpu';
5
+ import '@zylem/behaviors/core';
6
+ import './vector-CiSHbivc.js';
7
+ import './material-9vJ6SZaI.js';
8
+ import './collision-builder-jF-toPIl.js';
9
+ import './base-node-life-cycle-D2NuN1VB.js';
10
+ import './stage-transition-CmGpV4tc.js';
11
+ import './events.js';
12
+ import 'mitt';
13
+
14
+ /**
15
+ * Context registered by the active stage so the editor can focus entities
16
+ * without importing stage internals.
17
+ */
18
+ interface EntityFocusContext {
19
+ /** Resolve a live entity by UUID from the current stage. */
20
+ resolveEntity(uuid: string): GameEntity<any> | null;
21
+ /** Frame the debug camera on an Object3D (group/mesh). */
22
+ frameObject(object: Object3D): void;
23
+ /** Ensure debugMap / orbit wiring is ready (e.g. enable debug visuals). */
24
+ ensureDebugReady?(): void;
25
+ }
26
+ /**
27
+ * Register the active stage's focus context. Returns an unregister function.
28
+ */
29
+ declare function registerEntityFocusContext(context: EntityFocusContext): () => void;
30
+ /**
31
+ * Select an entity by UUID and frame the debug camera to fit it.
32
+ * Enables debug mode so orbit controls are active.
33
+ *
34
+ * @returns true if the entity was found and framed
35
+ */
36
+ declare function focusEntity(uuid: string): boolean;
37
+
38
+ interface ObjectBounds {
39
+ width: number;
40
+ height: number;
41
+ depth: number;
42
+ center: Vector3;
43
+ maxDim: number;
44
+ }
45
+
46
+ interface EntityThumbnailResult {
47
+ dataUrl: string;
48
+ bounds: Pick<ObjectBounds, 'width' | 'height' | 'depth'>;
49
+ }
50
+ interface EntityThumbnailCacheEntry extends EntityThumbnailResult {
51
+ uuid: string;
52
+ }
53
+ /**
54
+ * Generates and caches entity thumbnail previews for the editor entity list.
55
+ * Renders a cloned Object3D into an offscreen RenderTarget on the shared WebGPU renderer.
56
+ */
57
+ declare class EntityThumbnailCache {
58
+ private cache;
59
+ private inFlight;
60
+ private renderer;
61
+ private size;
62
+ constructor(size?: number);
63
+ setRenderer(renderer: WebGPURenderer | null): void;
64
+ get(uuid: string): EntityThumbnailCacheEntry | null;
65
+ invalidate(uuid: string): void;
66
+ clear(): void;
67
+ /**
68
+ * Return a cached thumbnail or generate one asynchronously.
69
+ */
70
+ ensure(uuid: string, object: Object3D | null | undefined): Promise<EntityThumbnailCacheEntry | null>;
71
+ private render;
72
+ }
73
+ /** Shared cache used by the running game to feed editor entity payloads. */
74
+ declare const entityThumbnailCache: EntityThumbnailCache;
75
+
76
+ export { type EntityFocusContext, EntityThumbnailCache, type EntityThumbnailCacheEntry, type EntityThumbnailResult, entityThumbnailCache, focusEntity, registerEntityFocusContext };
package/dist/debug.js ADDED
@@ -0,0 +1 @@
1
+ import"./chunk-DFLI7ICU.js";import{a as e,b as f}from"./chunk-COM6HJ2L.js";import{c as g,d as h}from"./chunk-VS2D4B3W.js";import{a,c as b,e as c,f as d}from"./chunk-JQKS42G4.js";export{e as EntityThumbnailCache,a as debugState,f as entityThumbnailCache,h as focusEntity,g as registerEntityFocusContext,c as setDebugTool,b as setPaused,d as setSelectedEntity};
@@ -0,0 +1,111 @@
1
+ import { b as InputPlayer } from './base-node-life-cycle-D2NuN1VB.js';
2
+ import { d as VirtualTouchButtonSlot, e as VirtualTouchConfig, G as GameInputConfig } from './game-interfaces-mchNYSZE.js';
3
+
4
+ /**
5
+ * Color tokens consumed by the SVG factories in `svg-assets.ts` and the
6
+ * `defaultTouchControls(...)` preset. All fields are CSS color strings; the
7
+ * factories compose them into static SVG markup.
8
+ */
9
+ interface TouchTheme {
10
+ /** Inner fill of joystick base & button bodies (usually translucent dark). */
11
+ baseFill: string;
12
+ /** Outer ring stroke on joystick base. */
13
+ joystickStroke: string;
14
+ /** Inner ring stroke on joystick base (subtle highlight). */
15
+ joystickInnerStroke: string;
16
+ /** Inner ring fill on joystick base (translucent accent). */
17
+ joystickAccentFill: string;
18
+ /** Direction tab fill on the joystick base (the four arrows). */
19
+ joystickTabFill: string;
20
+ /** Filled joystick thumb color. */
21
+ thumbFill: string;
22
+ /** Joystick thumb border. */
23
+ thumbStroke: string;
24
+ /** Inner highlight ring on the thumb. */
25
+ thumbInnerFill: string;
26
+ /** Stroke/text accent for buttons when no per-slot accent is provided. */
27
+ defaultButtonAccent: string;
28
+ /** Optional per-button accent overrides. */
29
+ buttonAccents?: Partial<Record<VirtualTouchButtonSlot, string>>;
30
+ }
31
+ /**
32
+ * Built-in named themes. Pass a key (e.g. `'lagoon'`) anywhere a `TouchTheme`
33
+ * is accepted. Use {@link resolveTouchTheme} to turn a key or partial input
34
+ * into a fully-populated theme.
35
+ */
36
+ declare const touchThemes: {
37
+ readonly default: TouchTheme;
38
+ readonly lagoon: TouchTheme;
39
+ };
40
+ type TouchThemeName = keyof typeof touchThemes;
41
+ /**
42
+ * Normalize a theme input to a fully populated {@link TouchTheme}.
43
+ *
44
+ * @param input Either a built-in theme name (e.g. `'lagoon'`) or a
45
+ * full `TouchTheme` object. When omitted, returns the
46
+ * `'default'` theme.
47
+ */
48
+ declare function resolveTouchTheme(input?: TouchTheme | TouchThemeName): TouchTheme;
49
+ /**
50
+ * Returns the theme accent for a given button slot. Per-slot overrides win
51
+ * over `theme.defaultButtonAccent`; a caller-provided `accentOverride`
52
+ * trumps everything.
53
+ */
54
+ declare function resolveButtonAccent(theme: TouchTheme, slot: VirtualTouchButtonSlot, accentOverride?: string): string;
55
+
56
+ type JoystickSelection = 'left' | 'right' | 'both' | 'none';
57
+ interface DefaultTouchControlsOptions {
58
+ /**
59
+ * Controls whether the touch UI mounts. `'auto'` (default) lets the
60
+ * provider show controls only on touch/mobile devices. `true` forces it
61
+ * on (useful for testing on desktop), `false` disables the UI entirely.
62
+ */
63
+ enabled?: boolean | 'auto';
64
+ /** Theme name (`'default'` / `'lagoon'`) or a custom {@link TouchTheme}. */
65
+ theme?: TouchTheme | TouchThemeName;
66
+ /**
67
+ * Buttons to render. Default `['A', 'B']`. Buttons not listed here are
68
+ * disabled. Pass `[]` to render no buttons.
69
+ */
70
+ buttons?: VirtualTouchButtonSlot[];
71
+ /** Per-button accent color overrides (override theme `buttonAccents`). */
72
+ buttonAccents?: Partial<Record<VirtualTouchButtonSlot, string>>;
73
+ /** Custom labels for buttons (default uses the slot name, e.g. `'A'`). */
74
+ buttonLabels?: Partial<Record<VirtualTouchButtonSlot, string>>;
75
+ /**
76
+ * Which joysticks to render. Default `'left'`.
77
+ * - `'left'` : analog left only
78
+ * - `'right'` : analog right only
79
+ * - `'both'` : both sticks
80
+ * - `'none'` : disable all joysticks
81
+ */
82
+ joysticks?: JoystickSelection;
83
+ /**
84
+ * Escape hatch — a raw {@link VirtualTouchConfig} merged on top of the
85
+ * generated config. Use this when you need fine-grained tweaks
86
+ * (custom positions, sizes, raw SVG) without reaching for the lower-level
87
+ * `useVirtualControls(...)` preset.
88
+ */
89
+ override?: VirtualTouchConfig;
90
+ }
91
+ /**
92
+ * Builds a ready-to-use {@link GameInputConfig} that wires up themed
93
+ * virtual touch controls for a player. Internally composes
94
+ * {@link useVirtualControls} with theme-aware SVGs from `svg-assets.ts`.
95
+ *
96
+ * On desktop runtimes the provider stays dormant (with the default
97
+ * `enabled: 'auto'`), so it's safe to add this to any game's input
98
+ * configuration unconditionally.
99
+ *
100
+ * @example
101
+ * stage.setInputConfiguration(
102
+ * defaultTouchControls('p1', {
103
+ * theme: 'lagoon',
104
+ * joysticks: 'left',
105
+ * buttons: ['A', 'B'],
106
+ * }),
107
+ * );
108
+ */
109
+ declare function defaultTouchControls(player?: InputPlayer, options?: DefaultTouchControlsOptions): GameInputConfig;
110
+
111
+ export { type DefaultTouchControlsOptions as D, type JoystickSelection as J, type TouchTheme as T, resolveButtonAccent as a, type TouchThemeName as b, defaultTouchControls as d, resolveTouchTheme as r, touchThemes as t };