handler-playable-sdk 0.1.0 → 0.1.2
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/dist/chunk-HFNWDPEC.mjs +17 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/pixi/index.js +1 -1
- package/dist/pixi/index.mjs +1 -1
- package/dist/three/index.d.mts +493 -0
- package/dist/three/index.d.ts +493 -0
- package/dist/three/index.js +109 -0
- package/dist/three/index.mjs +93 -0
- package/package.json +14 -3
- package/dist/chunk-CJIYY5BP.mjs +0 -17
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Handler SDK - Three.js Base Context
|
|
5
|
+
*
|
|
6
|
+
* Creates the base Three.js scene with Handler SDK lifecycle integration.
|
|
7
|
+
* Handles resize, pause/resume, and provides the overlay for UI elements.
|
|
8
|
+
*
|
|
9
|
+
* DO NOT EDIT - Handler SDK Core
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Theme configuration for Three.js base
|
|
14
|
+
*/
|
|
15
|
+
type ThreeTheme = {
|
|
16
|
+
background?: string;
|
|
17
|
+
text?: string;
|
|
18
|
+
text_muted?: string;
|
|
19
|
+
primary?: string;
|
|
20
|
+
cta_text?: string;
|
|
21
|
+
surface_shadow?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Context returned by createThreeBase
|
|
25
|
+
*/
|
|
26
|
+
type ThreeBaseContext = {
|
|
27
|
+
scene: THREE.Scene;
|
|
28
|
+
camera: THREE.OrthographicCamera;
|
|
29
|
+
renderer: THREE.WebGLRenderer;
|
|
30
|
+
overlay: HTMLElement;
|
|
31
|
+
applySize: (size?: {
|
|
32
|
+
width?: number;
|
|
33
|
+
height?: number;
|
|
34
|
+
}) => void;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Create the base Three.js context with Handler SDK integration
|
|
38
|
+
*
|
|
39
|
+
* @param root - The root HTML element to render into (from Handler.getRoot())
|
|
40
|
+
* @param theme - Optional theme configuration
|
|
41
|
+
* @returns Three.js scene context with overlay
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const root = Handler.getRoot();
|
|
46
|
+
* const { scene, camera, renderer, overlay } = await createThreeBase(root, {
|
|
47
|
+
* background: '#160a17',
|
|
48
|
+
* text: '#fef4dd',
|
|
49
|
+
* primary: '#ffb43b'
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function createThreeBase(root: HTMLElement, theme?: ThreeTheme): Promise<ThreeBaseContext>;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Handler SDK - GameObject System for Three.js
|
|
57
|
+
*
|
|
58
|
+
* Unity-style component-based architecture for Three.js objects.
|
|
59
|
+
* Automatically syncs config values to Three.js objects and enables hot-reload.
|
|
60
|
+
*
|
|
61
|
+
* DO NOT EDIT - Handler SDK Core
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Transform Component - Position, scale, rotation
|
|
66
|
+
*/
|
|
67
|
+
declare class Transform {
|
|
68
|
+
position: {
|
|
69
|
+
x: number;
|
|
70
|
+
y: number;
|
|
71
|
+
};
|
|
72
|
+
scale: number;
|
|
73
|
+
rotation: number;
|
|
74
|
+
constructor(config?: {
|
|
75
|
+
position?: {
|
|
76
|
+
x: number;
|
|
77
|
+
y: number;
|
|
78
|
+
};
|
|
79
|
+
scale?: number;
|
|
80
|
+
rotation?: number;
|
|
81
|
+
});
|
|
82
|
+
update(config: {
|
|
83
|
+
position?: {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
};
|
|
87
|
+
scale?: number;
|
|
88
|
+
rotation?: number;
|
|
89
|
+
}): void;
|
|
90
|
+
syncToThree(threeObject: THREE.Object3D): void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Renderer Component - Visual properties
|
|
94
|
+
*/
|
|
95
|
+
declare class Renderer {
|
|
96
|
+
z_index: number;
|
|
97
|
+
alpha: number;
|
|
98
|
+
visible: boolean;
|
|
99
|
+
tint: number | null;
|
|
100
|
+
constructor(config?: {
|
|
101
|
+
z_index?: number;
|
|
102
|
+
alpha?: number;
|
|
103
|
+
visible?: boolean;
|
|
104
|
+
tint?: number | null;
|
|
105
|
+
});
|
|
106
|
+
update(config: {
|
|
107
|
+
z_index?: number;
|
|
108
|
+
alpha?: number;
|
|
109
|
+
visible?: boolean;
|
|
110
|
+
tint?: number | null;
|
|
111
|
+
}): void;
|
|
112
|
+
syncToThree(threeObject: THREE.Object3D): void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Base GameObject class - Unity-style entity with components
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const characterGO = gameObjectManager.create('character_1', characterMesh);
|
|
120
|
+
* characterGO.setPosition(100, 200);
|
|
121
|
+
* characterGO.setAlpha(0.8);
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
declare class GameObject {
|
|
125
|
+
instanceId: string;
|
|
126
|
+
objectConfig: string;
|
|
127
|
+
threeObject: THREE.Object3D;
|
|
128
|
+
transform: Transform;
|
|
129
|
+
renderer: Renderer;
|
|
130
|
+
private _config;
|
|
131
|
+
constructor(instanceId: string, objectConfig: string, threeObject: THREE.Object3D, config: any);
|
|
132
|
+
/**
|
|
133
|
+
* Sync all components to Three.js object
|
|
134
|
+
*/
|
|
135
|
+
sync(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Update config and sync (for hot-reload)
|
|
138
|
+
*/
|
|
139
|
+
updateConfig(newConfig: any): void;
|
|
140
|
+
/**
|
|
141
|
+
* Get component value
|
|
142
|
+
*/
|
|
143
|
+
getComponent<T>(componentName: string): T | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Get transform position
|
|
146
|
+
*/
|
|
147
|
+
getPosition(): {
|
|
148
|
+
x: number;
|
|
149
|
+
y: number;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Set transform position
|
|
153
|
+
*/
|
|
154
|
+
setPosition(x: number, y: number): void;
|
|
155
|
+
/**
|
|
156
|
+
* Get renderer alpha
|
|
157
|
+
*/
|
|
158
|
+
getAlpha(): number;
|
|
159
|
+
/**
|
|
160
|
+
* Set renderer alpha
|
|
161
|
+
*/
|
|
162
|
+
setAlpha(alpha: number): void;
|
|
163
|
+
/**
|
|
164
|
+
* Get renderer visible
|
|
165
|
+
*/
|
|
166
|
+
getVisible(): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Set renderer visible
|
|
169
|
+
*/
|
|
170
|
+
setVisible(visible: boolean): void;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* GameObject Manager - Manages all game objects and enables hot-reload
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const gameObjectManager = new GameObjectManager(config);
|
|
178
|
+
* const characterGO = gameObjectManager.create('character_1', characterMesh);
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
declare class GameObjectManager {
|
|
182
|
+
private objects;
|
|
183
|
+
private config;
|
|
184
|
+
constructor(config: any);
|
|
185
|
+
/**
|
|
186
|
+
* Create a GameObject from config
|
|
187
|
+
*/
|
|
188
|
+
create(instanceId: string, threeObject: THREE.Object3D): GameObject;
|
|
189
|
+
/**
|
|
190
|
+
* Get GameObject by instance ID
|
|
191
|
+
*/
|
|
192
|
+
get(instanceId: string): GameObject | undefined;
|
|
193
|
+
/**
|
|
194
|
+
* Update config and sync all objects (for hot-reload)
|
|
195
|
+
*/
|
|
196
|
+
updateConfig(newConfig: any): void;
|
|
197
|
+
/**
|
|
198
|
+
* Get all GameObjects
|
|
199
|
+
*/
|
|
200
|
+
getAll(): GameObject[];
|
|
201
|
+
/**
|
|
202
|
+
* Remove GameObject
|
|
203
|
+
*/
|
|
204
|
+
remove(instanceId: string): void;
|
|
205
|
+
/**
|
|
206
|
+
* Clear all GameObjects
|
|
207
|
+
*/
|
|
208
|
+
clear(): void;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Handler SDK - Font Registry
|
|
213
|
+
*
|
|
214
|
+
* Maps font IDs to actual font families/paths.
|
|
215
|
+
* UI config references fonts by ID only (e.g., "brand.primary").
|
|
216
|
+
* This registry resolves IDs to actual font values.
|
|
217
|
+
*
|
|
218
|
+
* Font paths and platform differences are handled here, NOT in config.
|
|
219
|
+
*
|
|
220
|
+
* DO NOT EDIT - Handler SDK Core
|
|
221
|
+
*/
|
|
222
|
+
type FontDefinition = {
|
|
223
|
+
family: string;
|
|
224
|
+
weight?: string | number;
|
|
225
|
+
style?: string;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Resolve font ID to font family string
|
|
229
|
+
* @param fontId Font ID from UI config (e.g., "brand.primary")
|
|
230
|
+
* @returns CSS font-family string
|
|
231
|
+
*/
|
|
232
|
+
declare function resolveFont(fontId: string): string;
|
|
233
|
+
/**
|
|
234
|
+
* Resolve font ID to font weight
|
|
235
|
+
* @param fontId Font ID from UI config
|
|
236
|
+
* @returns Font weight (string or number)
|
|
237
|
+
*/
|
|
238
|
+
declare function resolveFontWeight(fontId: string): string | number;
|
|
239
|
+
/**
|
|
240
|
+
* Register a new font (for engine initialization)
|
|
241
|
+
* @param fontId Font ID
|
|
242
|
+
* @param definition Font definition
|
|
243
|
+
*/
|
|
244
|
+
declare function registerFont(fontId: string, definition: FontDefinition): void;
|
|
245
|
+
/**
|
|
246
|
+
* Get all registered font IDs
|
|
247
|
+
*/
|
|
248
|
+
declare function getRegisteredFontIds(): string[];
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Handler SDK - Type Definitions for Three.js Integration
|
|
252
|
+
*
|
|
253
|
+
* DO NOT EDIT - Handler SDK Core
|
|
254
|
+
*/
|
|
255
|
+
/**
|
|
256
|
+
* Object configuration from JSON files
|
|
257
|
+
*/
|
|
258
|
+
interface ObjectConfig {
|
|
259
|
+
object_config?: string;
|
|
260
|
+
transform?: {
|
|
261
|
+
position?: {
|
|
262
|
+
x: number;
|
|
263
|
+
y: number;
|
|
264
|
+
};
|
|
265
|
+
scale?: number;
|
|
266
|
+
rotation?: number;
|
|
267
|
+
offset?: {
|
|
268
|
+
x?: number;
|
|
269
|
+
y?: number;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
render?: {
|
|
273
|
+
z_index?: number;
|
|
274
|
+
alpha?: number;
|
|
275
|
+
visible?: boolean;
|
|
276
|
+
tint?: number | string | null;
|
|
277
|
+
background_color?: string;
|
|
278
|
+
background_alpha?: number;
|
|
279
|
+
border_color?: string;
|
|
280
|
+
};
|
|
281
|
+
gameplay?: {
|
|
282
|
+
rules?: Record<string, unknown>;
|
|
283
|
+
tuning?: Record<string, unknown>;
|
|
284
|
+
};
|
|
285
|
+
ui?: {
|
|
286
|
+
text?: string;
|
|
287
|
+
font?: string;
|
|
288
|
+
fontSize?: number;
|
|
289
|
+
letterSpacing?: number;
|
|
290
|
+
align?: string;
|
|
291
|
+
};
|
|
292
|
+
effects?: Record<string, unknown>;
|
|
293
|
+
audio?: Record<string, unknown>;
|
|
294
|
+
physics?: Record<string, unknown>;
|
|
295
|
+
interaction?: Record<string, unknown>;
|
|
296
|
+
identity?: Record<string, unknown>;
|
|
297
|
+
visibility?: Record<string, unknown>;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Engine configuration
|
|
301
|
+
*/
|
|
302
|
+
interface EngineConfig {
|
|
303
|
+
assets?: Record<string, string>;
|
|
304
|
+
runtime?: {
|
|
305
|
+
ui?: Record<string, unknown>;
|
|
306
|
+
theme?: Record<string, unknown>;
|
|
307
|
+
ui_styles?: Record<string, unknown>;
|
|
308
|
+
timeline?: Record<string, number>;
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Theme configuration
|
|
313
|
+
*/
|
|
314
|
+
interface ThemeConfig {
|
|
315
|
+
background_color?: string;
|
|
316
|
+
text_color?: string;
|
|
317
|
+
square_color?: string;
|
|
318
|
+
cta_background?: string;
|
|
319
|
+
cta_text?: string;
|
|
320
|
+
melt_color?: string;
|
|
321
|
+
danger_color?: string;
|
|
322
|
+
brush_color?: string;
|
|
323
|
+
success_color?: string;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Gameplay configuration
|
|
327
|
+
*/
|
|
328
|
+
interface GameplayConfig {
|
|
329
|
+
[key: string]: unknown;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Object-centric configuration
|
|
333
|
+
* This is the main config type that students work with
|
|
334
|
+
*/
|
|
335
|
+
interface ObjectCentricConfig {
|
|
336
|
+
/** Map of object instance IDs to their configurations */
|
|
337
|
+
objects: Map<string, ObjectConfig>;
|
|
338
|
+
/** Engine configuration (assets, runtime settings) */
|
|
339
|
+
engine: EngineConfig;
|
|
340
|
+
/** Theme configuration */
|
|
341
|
+
theme: ThemeConfig;
|
|
342
|
+
/** Gameplay configuration */
|
|
343
|
+
gameplay: GameplayConfig;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Handler SDK - EndGame UI Panel for Three.js
|
|
348
|
+
*
|
|
349
|
+
* Success screen with logo, text, CTA button, and tutorial hand.
|
|
350
|
+
* Fully configurable via UI config system.
|
|
351
|
+
* Uses HTML overlay elements for UI, Three.js sprites for images.
|
|
352
|
+
*
|
|
353
|
+
* DO NOT EDIT - Handler SDK Core
|
|
354
|
+
*/
|
|
355
|
+
|
|
356
|
+
declare function createHTMLElementWrapper(element: HTMLElement): {
|
|
357
|
+
element: HTMLElement;
|
|
358
|
+
alpha: number;
|
|
359
|
+
visible: boolean;
|
|
360
|
+
position: {
|
|
361
|
+
set(x: number, y: number): void;
|
|
362
|
+
readonly x: number;
|
|
363
|
+
readonly y: number;
|
|
364
|
+
};
|
|
365
|
+
scale: {
|
|
366
|
+
set(x: number, y?: number): void;
|
|
367
|
+
readonly x: number;
|
|
368
|
+
};
|
|
369
|
+
};
|
|
370
|
+
interface EndGamePanelElements {
|
|
371
|
+
panel: ReturnType<typeof createHTMLElementWrapper> & {
|
|
372
|
+
element: HTMLElement;
|
|
373
|
+
};
|
|
374
|
+
logo: THREE.Sprite;
|
|
375
|
+
title: ReturnType<typeof createHTMLElementWrapper> & {
|
|
376
|
+
element: HTMLElement;
|
|
377
|
+
};
|
|
378
|
+
subtitle: ReturnType<typeof createHTMLElementWrapper> & {
|
|
379
|
+
element: HTMLElement;
|
|
380
|
+
};
|
|
381
|
+
footer: ReturnType<typeof createHTMLElementWrapper> & {
|
|
382
|
+
element: HTMLElement;
|
|
383
|
+
};
|
|
384
|
+
ctaButton: ReturnType<typeof createHTMLElementWrapper> & {
|
|
385
|
+
element: HTMLElement;
|
|
386
|
+
addEventListener: HTMLElement['addEventListener'];
|
|
387
|
+
};
|
|
388
|
+
ctaText: ReturnType<typeof createHTMLElementWrapper> & {
|
|
389
|
+
element: HTMLElement;
|
|
390
|
+
};
|
|
391
|
+
ctaHint: ReturnType<typeof createHTMLElementWrapper> & {
|
|
392
|
+
element: HTMLElement;
|
|
393
|
+
};
|
|
394
|
+
hand: THREE.Sprite;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Create EndGame success panel with all UI elements
|
|
398
|
+
*/
|
|
399
|
+
declare function createEndGamePanel(config: ObjectCentricConfig, handTexture: THREE.Texture | null, logoTexture: THREE.Texture | null): EndGamePanelElements;
|
|
400
|
+
/**
|
|
401
|
+
* Animate panel entrance with staggered animations
|
|
402
|
+
*/
|
|
403
|
+
declare function animatePanelEntrance(elements: EndGamePanelElements, config: ObjectCentricConfig, onComplete?: () => void): void;
|
|
404
|
+
/**
|
|
405
|
+
* Animate tutorial hand clicking CTA button
|
|
406
|
+
*/
|
|
407
|
+
declare function animateHandClick(hand: THREE.Sprite, ctaButton: ReturnType<typeof createHTMLElementWrapper> & {
|
|
408
|
+
element: HTMLElement;
|
|
409
|
+
}, config: ObjectCentricConfig, onClick: () => void): void;
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Handler SDK - Tutorial UI Components for Three.js
|
|
413
|
+
*
|
|
414
|
+
* Tutorial hand and label components for game tutorials.
|
|
415
|
+
* Config requirement: All UI properties from object-centric config.
|
|
416
|
+
*
|
|
417
|
+
* DO NOT EDIT - Handler SDK Core
|
|
418
|
+
*/
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Create hand tutorial sprite (Three.js Sprite)
|
|
422
|
+
* Hand properties from object-centric config (hand_tutorial_1)
|
|
423
|
+
*
|
|
424
|
+
* @param handTexture - Texture for the hand sprite
|
|
425
|
+
* @param config - Object-centric configuration
|
|
426
|
+
* @param baseCharacterPos - Base position of the character for animation reference
|
|
427
|
+
*/
|
|
428
|
+
declare function createHandTutorial(handTexture: THREE.Texture | null, config: ObjectCentricConfig, baseCharacterPos: {
|
|
429
|
+
x: number;
|
|
430
|
+
y: number;
|
|
431
|
+
}): THREE.Sprite;
|
|
432
|
+
/**
|
|
433
|
+
* Create tutorial label text (HTML overlay)
|
|
434
|
+
* Uses ui.tutorial config object with UI component schema
|
|
435
|
+
*
|
|
436
|
+
* @param config - Object-centric configuration
|
|
437
|
+
*/
|
|
438
|
+
declare function createTutorialLabel(config: ObjectCentricConfig): HTMLElement;
|
|
439
|
+
/**
|
|
440
|
+
* Update hand animation
|
|
441
|
+
* Animation parameters from object-centric config (hand_tutorial_1)
|
|
442
|
+
*
|
|
443
|
+
* @param hand - The hand sprite
|
|
444
|
+
* @param baseCharacterPos - Base character position
|
|
445
|
+
* @param time - Current time for animation
|
|
446
|
+
* @param isDragging - Whether the user is currently dragging
|
|
447
|
+
* @param config - Object-centric configuration
|
|
448
|
+
*/
|
|
449
|
+
declare function updateHandAnimation(hand: THREE.Sprite, baseCharacterPos: {
|
|
450
|
+
x: number;
|
|
451
|
+
y: number;
|
|
452
|
+
}, time: number, isDragging: boolean, config: ObjectCentricConfig): void;
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Handler SDK - Asset Loader Utilities for Three.js
|
|
456
|
+
*
|
|
457
|
+
* Asset loading and texture creation utilities for Three.js.
|
|
458
|
+
* Config requirement: All asset paths from config.assets, colors from config.theme.
|
|
459
|
+
*
|
|
460
|
+
* DO NOT EDIT - Handler SDK Core
|
|
461
|
+
*/
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Load an asset with fallback placeholder
|
|
465
|
+
* Asset path comes from config.assets
|
|
466
|
+
*
|
|
467
|
+
* @param path - Asset path
|
|
468
|
+
* @param renderer - Three.js renderer instance (for context if needed)
|
|
469
|
+
* @param fallbackColor - Color for fallback placeholder
|
|
470
|
+
* @param isChar - Whether this is a character sprite (affects placeholder shape)
|
|
471
|
+
*/
|
|
472
|
+
declare function loadAsset(path: string, renderer: THREE.WebGLRenderer, fallbackColor?: number, isChar?: boolean): Promise<THREE.Texture | null>;
|
|
473
|
+
/**
|
|
474
|
+
* Load character frames from sprite sheet
|
|
475
|
+
* Uses config.assets.character_sprite for path
|
|
476
|
+
* Character sheet dimensions come from config (cols: 3, rows: 2)
|
|
477
|
+
*
|
|
478
|
+
* @param path - Path to the sprite sheet
|
|
479
|
+
* @param renderer - Three.js renderer instance
|
|
480
|
+
* @param config - Object-centric configuration
|
|
481
|
+
*/
|
|
482
|
+
declare function loadCharacterFrames(path: string, renderer: THREE.WebGLRenderer, config: ObjectCentricConfig): Promise<THREE.Texture[]>;
|
|
483
|
+
/**
|
|
484
|
+
* Create brush texture
|
|
485
|
+
* Uses config.theme.brush_color for color
|
|
486
|
+
* Brush size comes from config.gameplay.brush
|
|
487
|
+
*
|
|
488
|
+
* @param renderer - Three.js renderer instance
|
|
489
|
+
* @param config - Object-centric configuration
|
|
490
|
+
*/
|
|
491
|
+
declare function createBrushTexture(renderer: THREE.WebGLRenderer, config: ObjectCentricConfig): THREE.Texture;
|
|
492
|
+
|
|
493
|
+
export { type EndGamePanelElements, GameObject, GameObjectManager, type ObjectCentricConfig, Renderer, type ThreeBaseContext, type ThreeTheme, Transform, animateHandClick, animatePanelEntrance, createBrushTexture, createEndGamePanel, createHandTutorial, createThreeBase, createTutorialLabel, getRegisteredFontIds, loadAsset, loadCharacterFrames, registerFont, resolveFont, resolveFontWeight, updateHandAnimation };
|