@rydr/game-sdk 8.16.0 → 8.18.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.
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/three/README.md +47 -0
- package/dist/three/controller/joycon-object.d.ts +2 -0
- package/dist/three/controller/joycon-object.d.ts.map +1 -1
- package/dist/three/controller/joycon-object.js +5 -1
- package/dist/three/controller/joycon-object.js.map +1 -1
- package/dist/three/glb-cache.d.ts +87 -0
- package/dist/three/glb-cache.d.ts.map +1 -0
- package/dist/three/glb-cache.js +272 -0
- package/dist/three/glb-cache.js.map +1 -0
- package/dist/three/index.d.ts +1 -0
- package/dist/three/index.d.ts.map +1 -1
- package/dist/three/index.js +1 -0
- package/dist/three/index.js.map +1 -1
- package/dist/three/world-loader.d.ts +22 -3
- package/dist/three/world-loader.d.ts.map +1 -1
- package/dist/three/world-loader.js +33 -4
- package/dist/three/world-loader.js.map +1 -1
- package/dist/ui/README.md +17 -2
- package/dist/ui/controller/controller-pad.d.ts +5 -0
- package/dist/ui/controller/controller-pad.d.ts.map +1 -1
- package/dist/ui/controller/controller-pad.js +55 -7
- package/dist/ui/controller/controller-pad.js.map +1 -1
- package/dist/ui/controller/renderer.d.ts +8 -0
- package/dist/ui/controller/renderer.d.ts.map +1 -1
- package/dist/ui/controller/renderer.js.map +1 -1
- package/dist/ui/controller/styles.js +3 -0
- package/dist/ui/controller/styles.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
export declare const RYDR_PROTOCOL_VERSION: 32;
|
|
10
10
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
11
11
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
12
|
-
export declare const RYDR_SDK_VERSION = "8.
|
|
12
|
+
export declare const RYDR_SDK_VERSION = "8.18.0";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/protocol/version.js
CHANGED
|
@@ -217,5 +217,5 @@
|
|
|
217
217
|
export const RYDR_PROTOCOL_VERSION = 32;
|
|
218
218
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
219
219
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
220
|
-
export const RYDR_SDK_VERSION = "8.
|
|
220
|
+
export const RYDR_SDK_VERSION = "8.18.0";
|
|
221
221
|
//# sourceMappingURL=version.js.map
|
package/dist/three/README.md
CHANGED
|
@@ -22,6 +22,8 @@ import { loadWorld, mergeByMaterial, PerfOverlay, ScreenAnchor } from "@rydr/gam
|
|
|
22
22
|
| `createGlbLoader` | fn | A configured GLB→`Object3D` loader (DRACO, caching) when you load assets yourself. |
|
|
23
23
|
| `applyPlacement` | fn | Apply a `WorldPlacement` (position/rotation/scale) to a group. |
|
|
24
24
|
| `clearWorldCache` | fn | Drop cached loaded worlds (by id, or all). |
|
|
25
|
+
| `createGlbCache` | fn | The **persistent** GLB byte store (Cache Storage) that survives the shell destroying the game's iframe. On by default inside `loadWorld`/`createGlbLoader`; call it directly to show or clear the store. |
|
|
26
|
+
| `requestPersistentStorage` | fn | Ask the browser to exempt this origin's storage from eviction. For the **shell** to call, not a guest game. |
|
|
25
27
|
| `mergeByMaterial` | fn | Merge a subtree's meshes by shared material → far fewer draw calls. |
|
|
26
28
|
| `ScreenAnchor` | class | Hover a DOM UI element a fixed height above the **top** of a 3D object, projected to screen px. |
|
|
27
29
|
| `WaypointBeacon` | class | A "go here" glow beacon (column + base + expanding ground waves) that gracefully fades out when reached. |
|
|
@@ -35,6 +37,51 @@ import { loadWorld, mergeByMaterial, PerfOverlay, ScreenAnchor } from "@rydr/gam
|
|
|
35
37
|
|
|
36
38
|
---
|
|
37
39
|
|
|
40
|
+
## Worlds are cached across the iframe being destroyed
|
|
41
|
+
|
|
42
|
+
`loadWorld` already keeps a world in memory (GPU resources by `CoreWorld.id`, decoded GLBs by URL
|
|
43
|
+
path), but the shell **destroys the game's iframe** when the rider leaves — and every in-memory cache
|
|
44
|
+
goes with it. Under those two sits a third: the raw GLB bytes in Cache Storage, which survives the
|
|
45
|
+
document. A rider who comes back re-decodes the map instead of re-downloading it.
|
|
46
|
+
|
|
47
|
+
It is **on by default** and there is nothing to wire up:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
const world = await loadWorld(coreWorld, { mergeStatics: true });
|
|
51
|
+
// first ever visit: downloads the map (a base map is 3-73 MB today)
|
|
52
|
+
// after the iframe is killed: same call, no download
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Measured on a real platform world (73 MB base map, HTTP cache disabled so only Cache Storage can
|
|
56
|
+
serve it): **2889 ms → 41 ms, 0 bytes over the wire** in a fresh document.
|
|
57
|
+
|
|
58
|
+
The store is keyed by the asset URL's **path**, which is safe because a world upload mints a fresh
|
|
59
|
+
uuid per object key (`worlds/<kind>/<uuid>-<file>.glb`) — re-uploading a map produces a new path,
|
|
60
|
+
never new bytes at an old one. It holds 512 MB by default and evicts **least-recently-used** past
|
|
61
|
+
that.
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { createGlbCache, requestPersistentStorage } from "@rydr/game-sdk/three";
|
|
65
|
+
|
|
66
|
+
await loadWorld(coreWorld, { cache: { maxBytes: 256 * 1024 * 1024 } }); // smaller budget
|
|
67
|
+
await loadWorld(coreWorld, { cache: false }); // off (a cold-load bench)
|
|
68
|
+
|
|
69
|
+
const store = createGlbCache();
|
|
70
|
+
await store.stats(); // { entries, bytes } — for a dev panel
|
|
71
|
+
await store.clear(); // drop the lot
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Two things worth knowing:
|
|
75
|
+
|
|
76
|
+
- **The HTTP cache is not a substitute.** Platform assets are served with no `Cache-Control` at all,
|
|
77
|
+
so a browser is free to re-fetch whenever it likes; what it does instead is apply *heuristic*
|
|
78
|
+
freshness, and a 73 MB entry is the first thing evicted when a real profile fills up.
|
|
79
|
+
- **`requestPersistentStorage()` is the shell's to call,** not a guest game's — some browsers prompt,
|
|
80
|
+
and the decision is scored against the first-party origin. Without it the store is merely
|
|
81
|
+
best-effort (still evicted long after the HTTP cache would be).
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
38
85
|
## `ScreenAnchor` — float UI above a 3D object
|
|
39
86
|
|
|
40
87
|
The canonical "name tag / button prompt / health bar hovering over a thing" placement. **Do not
|
|
@@ -89,6 +89,8 @@ export interface JoyconObjectOptions extends PadDriverOptions {
|
|
|
89
89
|
* `PadRendererOptions.hintColor`, where that trade-off is spelt out.
|
|
90
90
|
*/
|
|
91
91
|
hintColor?: string;
|
|
92
|
+
/** Colour of the `done` state — "that one was right". Default: the kit's green. */
|
|
93
|
+
doneColor?: string;
|
|
92
94
|
/**
|
|
93
95
|
* Extra forward tilt applied while a TRIGGER is being shown, radians. Default 0.38 (~22°).
|
|
94
96
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joycon-object.d.ts","sourceRoot":"","sources":["../../../src/three/controller/joycon-object.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"joycon-object.d.ts","sourceRoot":"","sources":["../../../src/three/controller/joycon-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,13 +156,17 @@ export function createJoyconObject(opts = {}) {
|
|
|
156
156
|
group.add(tiltGroup);
|
|
157
157
|
const accent = opts.accent ? new THREE.Color(opts.accent).getHex() : PAD_STATE_COLOR.on;
|
|
158
158
|
const hintColor = opts.hintColor ? new THREE.Color(opts.hintColor).getHex() : PAD_STATE_COLOR.hint;
|
|
159
|
+
const doneColor = opts.doneColor ? new THREE.Color(opts.doneColor).getHex() : PAD_STATE_COLOR.done;
|
|
159
160
|
/**
|
|
160
161
|
* The colour a state paints in.
|
|
161
162
|
*
|
|
162
163
|
* `off` is the part's OWN build colour, which is why this takes one — a single hard-coded rest
|
|
163
164
|
* colour repaints every art direction into the same pad the moment a driver touches it.
|
|
164
165
|
*/
|
|
165
|
-
const colorFor = (state, rest) => state === "on" ? accent
|
|
166
|
+
const colorFor = (state, rest) => state === "on" ? accent
|
|
167
|
+
: state === "hint" ? hintColor
|
|
168
|
+
: state === "done" ? doneColor
|
|
169
|
+
: rest;
|
|
166
170
|
/** Every part this model actually draws. */
|
|
167
171
|
const ALL_PARTS = [...model.controls.keys()];
|
|
168
172
|
const changeCbs = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joycon-object.js","sourceRoot":"","sources":["../../../src/three/controller/joycon-object.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"joycon-object.js","sourceRoot":"","sources":["../../../src/three/controller/joycon-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glb-cache — a **persistent** byte cache for GLB assets, in the browser's Cache Storage.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* A game runs in a cross-origin iframe that the shell **destroys** when the rider leaves it. Every
|
|
7
|
+
* in-memory cache dies with it: the per-world handle cache in {@link import("./world-loader.js").loadWorld}
|
|
8
|
+
* and the per-URL dedup inside {@link import("./world-loader.js").createGlbLoader} both start empty on
|
|
9
|
+
* the next visit. So a rider who plays, leaves, and comes back downloads the whole map again — and a
|
|
10
|
+
* platform world's base map is 3–73 MB today.
|
|
11
|
+
*
|
|
12
|
+
* The HTTP cache is not an answer to this. Platform assets are served from R2 with **no
|
|
13
|
+
* `Cache-Control` header at all**, so a browser is free to re-fetch at will; what it does instead is
|
|
14
|
+
* apply *heuristic* freshness, which happens to work on an empty profile and is exactly what gets
|
|
15
|
+
* evicted first on a full one (a 73 MB entry is the cheapest thing a browser can throw away). Cache
|
|
16
|
+
* Storage is a promise rather than a hint: it is origin-scoped, survives the document, and is only
|
|
17
|
+
* cleared under real storage pressure — and never before the HTTP cache (see
|
|
18
|
+
* {@link requestPersistentStorage} to take it off the eviction list entirely).
|
|
19
|
+
*
|
|
20
|
+
* ## The key is the URL PATH
|
|
21
|
+
*
|
|
22
|
+
* Same rule as the in-memory dedup in `createGlbLoader`: platform assets can arrive with per-request
|
|
23
|
+
* query strings, so the path is the asset's identity. That is safe *because* a world upload mints a
|
|
24
|
+
* fresh uuid per object key (`worlds/<kind>/<uuid>-<filename>.glb`) — re-uploading a map produces a
|
|
25
|
+
* new path, never new bytes at an old one. A cached path can therefore never be stale.
|
|
26
|
+
*
|
|
27
|
+
* ## Degrading
|
|
28
|
+
*
|
|
29
|
+
* Everything here is best-effort by construction: no Cache Storage (an insecure context, a browser
|
|
30
|
+
* with storage disabled, a quota refusal) means {@link GlbCache.bytes} still fetches and still
|
|
31
|
+
* resolves — it just doesn't remember. A caller never needs to branch on availability.
|
|
32
|
+
*/
|
|
33
|
+
export interface GlbCacheOptions {
|
|
34
|
+
/** Cache Storage bucket name. Default `"rydr-glb-v1"`. */
|
|
35
|
+
name?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Byte budget. Once a write takes the store past it, least-recently-USED entries are deleted
|
|
38
|
+
* until it fits again. Default 512 MB.
|
|
39
|
+
*/
|
|
40
|
+
maxBytes?: number;
|
|
41
|
+
}
|
|
42
|
+
/** What the store currently holds. */
|
|
43
|
+
export interface GlbCacheStats {
|
|
44
|
+
entries: number;
|
|
45
|
+
bytes: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A persistent GLB byte store. Created by {@link createGlbCache}; wired into
|
|
49
|
+
* {@link import("./world-loader.js").createGlbLoader} by default, so most games never touch it
|
|
50
|
+
* directly — reach for it when you load GLBs yourself, or to show/clear the store in a dev panel.
|
|
51
|
+
*/
|
|
52
|
+
export interface GlbCache {
|
|
53
|
+
/**
|
|
54
|
+
* The bytes for `url` — from the store when it has them, otherwise fetched and stored.
|
|
55
|
+
*
|
|
56
|
+
* Rejects exactly when a plain `fetch` would: a network failure or a non-2xx response. A storage
|
|
57
|
+
* failure never rejects (the bytes are returned uncached).
|
|
58
|
+
*/
|
|
59
|
+
bytes(url: string): Promise<ArrayBuffer>;
|
|
60
|
+
/** Entry count + total bytes held. `{ entries: 0, bytes: 0 }` where Cache Storage is unavailable. */
|
|
61
|
+
stats(): Promise<GlbCacheStats>;
|
|
62
|
+
/** Delete every entry in this bucket. */
|
|
63
|
+
clear(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
/** Whether this context can persist anything at all (Cache Storage needs a secure context). */
|
|
66
|
+
export declare function glbCacheAvailable(): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The cache key for an asset URL: its origin + path, with the query string and fragment dropped.
|
|
69
|
+
* Exported because it is the identity the whole store is keyed on — a dev panel listing entries
|
|
70
|
+
* wants the same answer.
|
|
71
|
+
*/
|
|
72
|
+
export declare function glbCacheKey(url: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Ask the browser to make this origin's storage **persistent** — exempt from eviction under disk
|
|
75
|
+
* pressure, instead of merely best-effort.
|
|
76
|
+
*
|
|
77
|
+
* Not called automatically, and deliberately: some browsers surface a permission prompt, which is
|
|
78
|
+
* the shell's call to make (and the shell is the first-party origin whose engagement the decision is
|
|
79
|
+
* scored on), not a guest game's. Resolves `false` when the browser declines or doesn't support it.
|
|
80
|
+
*/
|
|
81
|
+
export declare function requestPersistentStorage(): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Open (lazily) a persistent GLB byte store. Cheap to call — nothing touches storage until the first
|
|
84
|
+
* {@link GlbCache.bytes}.
|
|
85
|
+
*/
|
|
86
|
+
export declare function createGlbCache(opts?: GlbCacheOptions): GlbCache;
|
|
87
|
+
//# sourceMappingURL=glb-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb-cache.d.ts","sourceRoot":"","sources":["../../src/three/glb-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAcH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,qGAAqG;IACrG,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,yCAAyC;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAoB,GAAG,QAAQ,CA6FnE"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glb-cache — a **persistent** byte cache for GLB assets, in the browser's Cache Storage.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* A game runs in a cross-origin iframe that the shell **destroys** when the rider leaves it. Every
|
|
7
|
+
* in-memory cache dies with it: the per-world handle cache in {@link import("./world-loader.js").loadWorld}
|
|
8
|
+
* and the per-URL dedup inside {@link import("./world-loader.js").createGlbLoader} both start empty on
|
|
9
|
+
* the next visit. So a rider who plays, leaves, and comes back downloads the whole map again — and a
|
|
10
|
+
* platform world's base map is 3–73 MB today.
|
|
11
|
+
*
|
|
12
|
+
* The HTTP cache is not an answer to this. Platform assets are served from R2 with **no
|
|
13
|
+
* `Cache-Control` header at all**, so a browser is free to re-fetch at will; what it does instead is
|
|
14
|
+
* apply *heuristic* freshness, which happens to work on an empty profile and is exactly what gets
|
|
15
|
+
* evicted first on a full one (a 73 MB entry is the cheapest thing a browser can throw away). Cache
|
|
16
|
+
* Storage is a promise rather than a hint: it is origin-scoped, survives the document, and is only
|
|
17
|
+
* cleared under real storage pressure — and never before the HTTP cache (see
|
|
18
|
+
* {@link requestPersistentStorage} to take it off the eviction list entirely).
|
|
19
|
+
*
|
|
20
|
+
* ## The key is the URL PATH
|
|
21
|
+
*
|
|
22
|
+
* Same rule as the in-memory dedup in `createGlbLoader`: platform assets can arrive with per-request
|
|
23
|
+
* query strings, so the path is the asset's identity. That is safe *because* a world upload mints a
|
|
24
|
+
* fresh uuid per object key (`worlds/<kind>/<uuid>-<filename>.glb`) — re-uploading a map produces a
|
|
25
|
+
* new path, never new bytes at an old one. A cached path can therefore never be stale.
|
|
26
|
+
*
|
|
27
|
+
* ## Degrading
|
|
28
|
+
*
|
|
29
|
+
* Everything here is best-effort by construction: no Cache Storage (an insecure context, a browser
|
|
30
|
+
* with storage disabled, a quota refusal) means {@link GlbCache.bytes} still fetches and still
|
|
31
|
+
* resolves — it just doesn't remember. A caller never needs to branch on availability.
|
|
32
|
+
*/
|
|
33
|
+
/** Cache Storage bucket name. Bump the suffix to orphan every previous entry at once. */
|
|
34
|
+
const DEFAULT_CACHE_NAME = "rydr-glb-v1";
|
|
35
|
+
/** Default byte budget for the store — a handful of maps, at 3–73 MB each. */
|
|
36
|
+
const DEFAULT_MAX_BYTES = 512 * 1024 * 1024;
|
|
37
|
+
/** Where the recency index is parked. Never fetched — it is a Cache Storage key, not a real URL. */
|
|
38
|
+
const INDEX_URL = "https://rydr-glb-cache.invalid/index.json";
|
|
39
|
+
/** Response header carrying an entry's byte length, so a trim needn't read bodies. */
|
|
40
|
+
const BYTES_HEADER = "x-rydr-bytes";
|
|
41
|
+
/** Whether this context can persist anything at all (Cache Storage needs a secure context). */
|
|
42
|
+
export function glbCacheAvailable() {
|
|
43
|
+
// `!== false` rather than a truthiness test: a runtime that doesn't define `isSecureContext` at all
|
|
44
|
+
// (a worker in an older browser) still has a usable `caches`.
|
|
45
|
+
return typeof caches !== "undefined" && globalThis.isSecureContext !== false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The cache key for an asset URL: its origin + path, with the query string and fragment dropped.
|
|
49
|
+
* Exported because it is the identity the whole store is keyed on — a dev panel listing entries
|
|
50
|
+
* wants the same answer.
|
|
51
|
+
*/
|
|
52
|
+
export function glbCacheKey(url) {
|
|
53
|
+
const cut = url.search(/[?#]/);
|
|
54
|
+
return cut === -1 ? url : url.slice(0, cut);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Ask the browser to make this origin's storage **persistent** — exempt from eviction under disk
|
|
58
|
+
* pressure, instead of merely best-effort.
|
|
59
|
+
*
|
|
60
|
+
* Not called automatically, and deliberately: some browsers surface a permission prompt, which is
|
|
61
|
+
* the shell's call to make (and the shell is the first-party origin whose engagement the decision is
|
|
62
|
+
* scored on), not a guest game's. Resolves `false` when the browser declines or doesn't support it.
|
|
63
|
+
*/
|
|
64
|
+
export async function requestPersistentStorage() {
|
|
65
|
+
try {
|
|
66
|
+
if (!navigator.storage?.persist)
|
|
67
|
+
return false;
|
|
68
|
+
if (await navigator.storage.persisted())
|
|
69
|
+
return true;
|
|
70
|
+
return await navigator.storage.persist();
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Open (lazily) a persistent GLB byte store. Cheap to call — nothing touches storage until the first
|
|
78
|
+
* {@link GlbCache.bytes}.
|
|
79
|
+
*/
|
|
80
|
+
export function createGlbCache(opts = {}) {
|
|
81
|
+
const name = opts.name ?? DEFAULT_CACHE_NAME;
|
|
82
|
+
const maxBytes = opts.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
83
|
+
/**
|
|
84
|
+
* Fetches in flight, by key, so two loaders in one document can't both pull 73 MB.
|
|
85
|
+
*
|
|
86
|
+
* `taken` is which caller gets the buffer ITSELF: the first one. A second caller awaiting the same
|
|
87
|
+
* load is handed a copy, because a consumer is free to detach the buffer it is given (transferring
|
|
88
|
+
* it to a worker), which would empty the one the other is holding. Copying for everyone would mean
|
|
89
|
+
* a 73 MB allocation on the common path, where there is only ever one caller.
|
|
90
|
+
*/
|
|
91
|
+
const inFlight = new Map();
|
|
92
|
+
let opened = null;
|
|
93
|
+
/**
|
|
94
|
+
* Every mutation runs on ONE chain.
|
|
95
|
+
*
|
|
96
|
+
* The recency index is a read-modify-write of a single cache entry, and world loads are
|
|
97
|
+
* concurrent by nature (a map plus its props, two screens booting). Interleaved writes lose each
|
|
98
|
+
* other's timestamps, and a trim running on a stale index evicts the entry that was just used —
|
|
99
|
+
* which is precisely the case the cache exists for. Serializing costs nothing: writes are already
|
|
100
|
+
* off the critical path (`bytes` resolves before them).
|
|
101
|
+
*/
|
|
102
|
+
let writes = Promise.resolve();
|
|
103
|
+
const enqueue = (task) => {
|
|
104
|
+
const next = writes.then(task, task).catch(() => { });
|
|
105
|
+
writes = next;
|
|
106
|
+
return next;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Uses recorded the INSTANT they happen, flushed to the persisted index by the write queue.
|
|
110
|
+
*
|
|
111
|
+
* A read is not queued (it must not wait behind a 73 MB write), so a hit can land while a trim is
|
|
112
|
+
* already queued behind it. Stamping only on the queue would let that trim evict the entry the
|
|
113
|
+
* rider is using right now — the one thing an LRU must never do. Recording here, synchronously,
|
|
114
|
+
* is what makes the use visible to a trim that has not run yet.
|
|
115
|
+
*/
|
|
116
|
+
const recent = new Map();
|
|
117
|
+
const open = () => {
|
|
118
|
+
if (!opened) {
|
|
119
|
+
opened = glbCacheAvailable()
|
|
120
|
+
? caches.open(name).catch(() => null)
|
|
121
|
+
: Promise.resolve(null);
|
|
122
|
+
}
|
|
123
|
+
return opened;
|
|
124
|
+
};
|
|
125
|
+
const load = async (url, key) => {
|
|
126
|
+
const cache = await open();
|
|
127
|
+
if (cache) {
|
|
128
|
+
const hit = await cache.match(key).catch(() => undefined);
|
|
129
|
+
if (hit) {
|
|
130
|
+
recent.set(key, Date.now());
|
|
131
|
+
void enqueue(() => stamp(cache, recent, maxBytes));
|
|
132
|
+
return await hit.arrayBuffer();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const res = await fetch(url);
|
|
136
|
+
if (!res.ok)
|
|
137
|
+
throw new Error(`[rydr-sdk] glb fetch failed (${res.status}) — ${key}`);
|
|
138
|
+
const buf = await res.arrayBuffer();
|
|
139
|
+
if (cache) {
|
|
140
|
+
recent.set(key, Date.now());
|
|
141
|
+
void enqueue(() => store(cache, recent, key, buf, res.headers.get("content-type"), maxBytes));
|
|
142
|
+
}
|
|
143
|
+
return buf;
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
bytes(url) {
|
|
147
|
+
const key = glbCacheKey(url);
|
|
148
|
+
let entry = inFlight.get(key);
|
|
149
|
+
if (!entry) {
|
|
150
|
+
entry = { bytes: load(url, key).finally(() => inFlight.delete(key)), taken: false };
|
|
151
|
+
inFlight.set(key, entry);
|
|
152
|
+
}
|
|
153
|
+
const mine = entry;
|
|
154
|
+
const first = !mine.taken;
|
|
155
|
+
mine.taken = true;
|
|
156
|
+
return mine.bytes.then((buf) => (first ? buf : buf.slice(0)));
|
|
157
|
+
},
|
|
158
|
+
async stats() {
|
|
159
|
+
const cache = await open();
|
|
160
|
+
if (!cache)
|
|
161
|
+
return { entries: 0, bytes: 0 };
|
|
162
|
+
const entries = await assetEntries(cache);
|
|
163
|
+
return { entries: entries.length, bytes: entries.reduce((n, e) => n + e.bytes, 0) };
|
|
164
|
+
},
|
|
165
|
+
async clear() {
|
|
166
|
+
opened = null;
|
|
167
|
+
if (glbCacheAvailable())
|
|
168
|
+
await caches.delete(name).catch(() => { });
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// ==================== storage ====================
|
|
173
|
+
/**
|
|
174
|
+
* Write `buf` under `key`, then bring the bucket back inside its budget. Never throws.
|
|
175
|
+
*
|
|
176
|
+
* Always run through the caller's write queue — see `enqueue` in {@link createGlbCache}.
|
|
177
|
+
*/
|
|
178
|
+
async function store(cache, recent, key, buf, contentType, maxBytes) {
|
|
179
|
+
try {
|
|
180
|
+
await cache.put(key, new Response(buf, {
|
|
181
|
+
headers: {
|
|
182
|
+
"content-type": contentType || "model/gltf-binary",
|
|
183
|
+
[BYTES_HEADER]: String(buf.byteLength),
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
186
|
+
await stamp(cache, recent, maxBytes);
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Quota refusal, a private-mode browser, a storage policy — the bytes are already in hand and
|
|
190
|
+
// the load succeeds either way. Trim so the next write has a chance of landing.
|
|
191
|
+
await stamp(cache, recent, maxBytes).catch(() => { });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Flush the uses recorded since the last flush into the persisted index, then trim. Never throws.
|
|
196
|
+
*
|
|
197
|
+
* Always run through the caller's write queue — see `enqueue` in {@link createGlbCache}.
|
|
198
|
+
*/
|
|
199
|
+
async function stamp(cache, recent, maxBytes) {
|
|
200
|
+
try {
|
|
201
|
+
const used = await readIndex(cache);
|
|
202
|
+
for (const [key, at] of recent)
|
|
203
|
+
used[key] = at;
|
|
204
|
+
await trim(cache, used, maxBytes);
|
|
205
|
+
await writeIndex(cache, used);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
/* recency is a hint; losing it costs eviction ORDER, never correctness */
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Delete least-recently-used entries until the bucket fits `maxBytes`.
|
|
213
|
+
*
|
|
214
|
+
* The index is reconciled against what the cache actually holds first, so it is self-healing: an
|
|
215
|
+
* entry with no timestamp (written by an older build, or a lost index) is stamped now and survives
|
|
216
|
+
* this round rather than being evicted as "oldest".
|
|
217
|
+
*/
|
|
218
|
+
async function trim(cache, used, maxBytes) {
|
|
219
|
+
const entries = await assetEntries(cache);
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
let total = 0;
|
|
222
|
+
for (const e of entries) {
|
|
223
|
+
if (used[e.key] === undefined)
|
|
224
|
+
used[e.key] = now;
|
|
225
|
+
total += e.bytes;
|
|
226
|
+
}
|
|
227
|
+
for (const key of Object.keys(used)) {
|
|
228
|
+
if (!entries.some((e) => e.key === key))
|
|
229
|
+
delete used[key];
|
|
230
|
+
}
|
|
231
|
+
if (total > maxBytes) {
|
|
232
|
+
for (const e of [...entries].sort((a, b) => (used[a.key] ?? 0) - (used[b.key] ?? 0))) {
|
|
233
|
+
if (total <= maxBytes)
|
|
234
|
+
break;
|
|
235
|
+
if (await cache.delete(e.key)) {
|
|
236
|
+
total -= e.bytes;
|
|
237
|
+
delete used[e.key];
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/** Every ASSET entry (the recency index itself excluded) with its stored byte length. */
|
|
243
|
+
async function assetEntries(cache) {
|
|
244
|
+
const out = [];
|
|
245
|
+
for (const req of await cache.keys()) {
|
|
246
|
+
if (req.url === INDEX_URL)
|
|
247
|
+
continue;
|
|
248
|
+
const res = await cache.match(req);
|
|
249
|
+
if (!res)
|
|
250
|
+
continue;
|
|
251
|
+
const stamped = Number(res.headers.get(BYTES_HEADER) ?? res.headers.get("content-length"));
|
|
252
|
+
out.push({ key: req.url, bytes: Number.isFinite(stamped) ? stamped : 0 });
|
|
253
|
+
}
|
|
254
|
+
return out;
|
|
255
|
+
}
|
|
256
|
+
/** The recency index: cache key → last-used epoch ms. `{}` when absent or unreadable. */
|
|
257
|
+
async function readIndex(cache) {
|
|
258
|
+
try {
|
|
259
|
+
const res = await cache.match(INDEX_URL);
|
|
260
|
+
if (!res)
|
|
261
|
+
return {};
|
|
262
|
+
const parsed = await res.json();
|
|
263
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return {};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async function writeIndex(cache, used) {
|
|
270
|
+
await cache.put(INDEX_URL, new Response(JSON.stringify(used), { headers: { "content-type": "application/json" } }));
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=glb-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb-cache.js","sourceRoot":"","sources":["../../src/three/glb-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/three/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/three/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/three/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
package/dist/three/index.js
CHANGED
package/dist/three/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/three/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/three/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
@@ -11,9 +11,14 @@
|
|
|
11
11
|
*
|
|
12
12
|
* A platform world is a static environment, so it is fetched, DRACO-decoded, uploaded to the GPU and
|
|
13
13
|
* shader-compiled **once** ({@link loadWorld}, cached by {@link CoreWorld.id}) and then reused — a game
|
|
14
|
-
* that tears down and rebuilds gameplay on every restart still gets an instant world.
|
|
15
|
-
* this
|
|
16
|
-
*
|
|
14
|
+
* that tears down and rebuilds gameplay on every restart still gets an instant world. THREE caches back
|
|
15
|
+
* this, and they survive different things:
|
|
16
|
+
* - the per-world {@link LoadedWorld} handle cache — GPU resources, per document;
|
|
17
|
+
* - a per-URL GLB decode dedup inside {@link createGlbLoader} — repeated props clone shared
|
|
18
|
+
* geometry/material instead of re-downloading, per document;
|
|
19
|
+
* - the raw bytes in Cache Storage ({@link import("./glb-cache.js").createGlbCache}) — which
|
|
20
|
+
* **outlives the document**, so a rider returning to a game the shell already tore down re-decodes
|
|
21
|
+
* its map instead of re-downloading 3–73 MB of it.
|
|
17
22
|
*
|
|
18
23
|
* ## The handle owns the GPU resources — disposal is safe
|
|
19
24
|
*
|
|
@@ -23,12 +28,19 @@
|
|
|
23
28
|
* no "remember to detach, never dispose the shared group" rule to get wrong.
|
|
24
29
|
*/
|
|
25
30
|
import * as THREE from "three";
|
|
31
|
+
import type { GlbCacheOptions } from "./glb-cache.js";
|
|
26
32
|
import type { CoreWorld } from "../protocol/worlds.js";
|
|
27
33
|
/** DRACO decoder — pinned to the same version the platform world editor uses. */
|
|
28
34
|
export declare const DRACO_DECODER_PATH = "https://www.gstatic.com/draco/versioned/decoders/1.5.6/";
|
|
29
35
|
export interface GlbLoaderOptions {
|
|
30
36
|
/** Override the DRACO decoder directory (defaults to {@link DRACO_DECODER_PATH}). */
|
|
31
37
|
dracoDecoderPath?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The **persistent** byte cache (see {@link import("./glb-cache.js").GlbCache}), which is what
|
|
40
|
+
* makes a world survive the shell destroying the game's iframe. On by default; pass options to
|
|
41
|
+
* size it, or `false` to fetch every time (a bench measuring cold loads, say).
|
|
42
|
+
*/
|
|
43
|
+
cache?: GlbCacheOptions | false;
|
|
32
44
|
}
|
|
33
45
|
/** A transform applied to a loaded world group: translate · Y-rotation · uniform scale. */
|
|
34
46
|
export interface WorldPlacement {
|
|
@@ -85,6 +97,13 @@ export interface LoadedWorld {
|
|
|
85
97
|
* R2 URLs whose signature/expiry query string varies per request, so the same prop placed N times
|
|
86
98
|
* arrives as N distinct full URLs. Keying by path (the R2 object identity) collapses them to one
|
|
87
99
|
* decode; without it every placement re-fetches and re-DRACO-decodes the same glb (slow level loads).
|
|
100
|
+
*
|
|
101
|
+
* **Two caches, and they answer different questions.** The decode map above is per-document and dies
|
|
102
|
+
* with the iframe; under it, {@link import("./glb-cache.js").createGlbCache} keeps the raw BYTES in
|
|
103
|
+
* Cache Storage, which does not — so a rider who leaves the game and comes back re-decodes a map
|
|
104
|
+
* instead of re-downloading it. That is why this fetches and calls `parse` itself rather than
|
|
105
|
+
* `loader.loadAsync(url)`: the bytes have to pass through our hands to be stored. Disable it with
|
|
106
|
+
* `cache: false`.
|
|
88
107
|
*/
|
|
89
108
|
export declare function createGlbLoader(opts?: GlbLoaderOptions): (url: string) => Promise<THREE.Object3D>;
|
|
90
109
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-loader.d.ts","sourceRoot":"","sources":["../../src/three/world-loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"world-loader.d.ts","sourceRoot":"","sources":["../../src/three/world-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,4DAA4D,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;CACjC;AAED,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,kGAAkG;IAClG,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IAC5B,6GAA6G;IAC7G,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrC,2GAA2G;IAC3G,MAAM,IAAI,IAAI,CAAC;IACf,iGAAiG;IACjG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAmBrG;AAmBD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAcjG;AAwBD,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,CAIrF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAWjD"}
|
|
@@ -11,9 +11,14 @@
|
|
|
11
11
|
*
|
|
12
12
|
* A platform world is a static environment, so it is fetched, DRACO-decoded, uploaded to the GPU and
|
|
13
13
|
* shader-compiled **once** ({@link loadWorld}, cached by {@link CoreWorld.id}) and then reused — a game
|
|
14
|
-
* that tears down and rebuilds gameplay on every restart still gets an instant world.
|
|
15
|
-
* this
|
|
16
|
-
*
|
|
14
|
+
* that tears down and rebuilds gameplay on every restart still gets an instant world. THREE caches back
|
|
15
|
+
* this, and they survive different things:
|
|
16
|
+
* - the per-world {@link LoadedWorld} handle cache — GPU resources, per document;
|
|
17
|
+
* - a per-URL GLB decode dedup inside {@link createGlbLoader} — repeated props clone shared
|
|
18
|
+
* geometry/material instead of re-downloading, per document;
|
|
19
|
+
* - the raw bytes in Cache Storage ({@link import("./glb-cache.js").createGlbCache}) — which
|
|
20
|
+
* **outlives the document**, so a rider returning to a game the shell already tore down re-decodes
|
|
21
|
+
* its map instead of re-downloading 3–73 MB of it.
|
|
17
22
|
*
|
|
18
23
|
* ## The handle owns the GPU resources — disposal is safe
|
|
19
24
|
*
|
|
@@ -27,6 +32,7 @@ import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
|
|
27
32
|
import { DRACOLoader } from "three/addons/loaders/DRACOLoader.js";
|
|
28
33
|
import { applyWorld } from "../world-runtime.js";
|
|
29
34
|
import { mergeByMaterial } from "./merge.js";
|
|
35
|
+
import { createGlbCache } from "./glb-cache.js";
|
|
30
36
|
/** DRACO decoder — pinned to the same version the platform world editor uses. */
|
|
31
37
|
export const DRACO_DECODER_PATH = "https://www.gstatic.com/draco/versioned/decoders/1.5.6/";
|
|
32
38
|
/**
|
|
@@ -42,6 +48,13 @@ export const DRACO_DECODER_PATH = "https://www.gstatic.com/draco/versioned/decod
|
|
|
42
48
|
* R2 URLs whose signature/expiry query string varies per request, so the same prop placed N times
|
|
43
49
|
* arrives as N distinct full URLs. Keying by path (the R2 object identity) collapses them to one
|
|
44
50
|
* decode; without it every placement re-fetches and re-DRACO-decodes the same glb (slow level loads).
|
|
51
|
+
*
|
|
52
|
+
* **Two caches, and they answer different questions.** The decode map above is per-document and dies
|
|
53
|
+
* with the iframe; under it, {@link import("./glb-cache.js").createGlbCache} keeps the raw BYTES in
|
|
54
|
+
* Cache Storage, which does not — so a rider who leaves the game and comes back re-decodes a map
|
|
55
|
+
* instead of re-downloading it. That is why this fetches and calls `parse` itself rather than
|
|
56
|
+
* `loader.loadAsync(url)`: the bytes have to pass through our hands to be stored. Disable it with
|
|
57
|
+
* `cache: false`.
|
|
45
58
|
*/
|
|
46
59
|
export function createGlbLoader(opts = {}) {
|
|
47
60
|
const loader = new GLTFLoader();
|
|
@@ -49,17 +62,33 @@ export function createGlbLoader(opts = {}) {
|
|
|
49
62
|
draco.setDecoderPath(opts.dracoDecoderPath ?? DRACO_DECODER_PATH);
|
|
50
63
|
loader.setDRACOLoader(draco);
|
|
51
64
|
const decoded = new Map();
|
|
65
|
+
const bytes = opts.cache === false ? null : createGlbCache(opts.cache);
|
|
52
66
|
return (url) => {
|
|
53
67
|
const cut = url.search(/[?#]/); // dedup by asset path; presigned query strings vary per placement
|
|
54
68
|
const key = cut === -1 ? url : url.slice(0, cut);
|
|
55
69
|
let p = decoded.get(key);
|
|
56
70
|
if (!p) {
|
|
57
|
-
p =
|
|
71
|
+
p = bytes
|
|
72
|
+
? bytes.bytes(url).then((buf) => parseGlb(loader, buf, key))
|
|
73
|
+
: loader.loadAsync(url).then((g) => g.scene);
|
|
58
74
|
decoded.set(key, p);
|
|
59
75
|
}
|
|
60
76
|
return p.then((scene) => scene.clone());
|
|
61
77
|
};
|
|
62
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Decode glb bytes with the shared loader, resolving to the asset's root scene.
|
|
81
|
+
*
|
|
82
|
+
* `path` is the asset's own directory, which is what a `.gltf` referencing a sibling `.bin` or a
|
|
83
|
+
* texture resolves against. Platform assets are self-contained `.glb`s, so nothing is fetched
|
|
84
|
+
* through it today — passing it anyway costs nothing and keeps a non-embedded asset working.
|
|
85
|
+
*/
|
|
86
|
+
function parseGlb(loader, buf, url) {
|
|
87
|
+
const path = url.slice(0, url.lastIndexOf("/") + 1);
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
loader.parse(buf, path, (gltf) => resolve(gltf.scene), reject);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
63
92
|
/** Loaded worlds, keyed by {@link CoreWorld.id}. See the module doc for the lifecycle contract. */
|
|
64
93
|
const worldCache = new Map();
|
|
65
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-loader.js","sourceRoot":"","sources":["../../src/three/world-loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"world-loader.js","sourceRoot":"","sources":["../../src/three/world-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/README.md
CHANGED
|
@@ -302,8 +302,23 @@ hint.setVisible(false); // the ask is over
|
|
|
302
302
|
are bare shadowed type rather than an opaque chip, which would read as a sticker and cover the very
|
|
303
303
|
control it names.
|
|
304
304
|
|
|
305
|
-
**
|
|
306
|
-
|
|
305
|
+
**A press that answers the ask goes GREEN.** With a `highlight` standing, the pad stops being a plain
|
|
306
|
+
mirror: a key the rider presses that is one of the ones asked for reads `done` (green, "that one was
|
|
307
|
+
right"), while a press of anything else stays `on` (the accent, "a key is down"). A stick is judged on
|
|
308
|
+
direction — `["LSTICK:left"]` goes green when pushed left and stays neutral when pushed right. With no
|
|
309
|
+
`highlight`, nothing has been asked, so nothing can be right and every press is the neutral accent,
|
|
310
|
+
exactly as this component has always behaved.
|
|
311
|
+
|
|
312
|
+
It is the same sentence `mountControlSpotlight` and `mountComboDemo` already speak, where green
|
|
313
|
+
separates the rider's own presses from the ones a demo is performing — now on the bare pad too.
|
|
314
|
+
|
|
315
|
+
Deliberately **not** a lesson: a sequence combo turns each of its keys green as it is held, without
|
|
316
|
+
tracking progress through the order. Gating on the rider actually performing a combination is
|
|
317
|
+
`mountControlTrainer`'s job, and half a copy of it here would look like the lesson without behaving
|
|
318
|
+
like one.
|
|
319
|
+
|
|
320
|
+
**Colours.** `accent` themes a pressed key, `hintColor` the "press this" indication, and `doneColor`
|
|
321
|
+
the "that one was right"; all three reach the flat drawing and the 3D one. Keep them different — white-vs-accent is how the drawing
|
|
307
322
|
separates *do this* from *you are doing it*, and setting them equal makes a key the pad is asking for
|
|
308
323
|
and a key the rider is holding the same picture.
|
|
309
324
|
|
|
@@ -189,6 +189,11 @@ export interface ControllerPadOptions {
|
|
|
189
189
|
* difference in glow would be left, which is not enough to read at a distance.
|
|
190
190
|
*/
|
|
191
191
|
hintColor?: string;
|
|
192
|
+
/**
|
|
193
|
+
* Colour of "that one was right" — the `done` state {@link highlight} paints on a matching press.
|
|
194
|
+
* Default: the kit's green. Reaches both renderers, like the other two.
|
|
195
|
+
*/
|
|
196
|
+
doneColor?: string;
|
|
192
197
|
/**
|
|
193
198
|
* Buttons the rider's device actually has; everything else is drawn faint.
|
|
194
199
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-pad.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"controller-pad.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,6 +152,8 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
152
152
|
root.style.setProperty("--pad-hint", opts.hintColor);
|
|
153
153
|
root.style.setProperty("--pad-hint-stroke", opts.hintColor);
|
|
154
154
|
}
|
|
155
|
+
if (opts.doneColor)
|
|
156
|
+
root.style.setProperty("--pad-ok", opts.doneColor);
|
|
155
157
|
host.appendChild(root);
|
|
156
158
|
/** Free width wins over the preset class, which is a `max-width`. Both are written so it can't lose. */
|
|
157
159
|
function applyWidth(px) {
|
|
@@ -220,6 +222,7 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
220
222
|
labels: opts.labels ?? true,
|
|
221
223
|
accent: opts.accent,
|
|
222
224
|
hintColor: opts.hintColor,
|
|
225
|
+
doneColor: opts.doneColor,
|
|
223
226
|
// A highlight naming `LB`/`RB`/`MENU` implies permission to light it: asking for a control to be
|
|
224
227
|
// pointed at and forbidding it from lighting is not a coherent request. Read off the CURRENT
|
|
225
228
|
// highlight rather than the initial option, so `setHighlight` can introduce one.
|
|
@@ -246,6 +249,41 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
246
249
|
* cancel the very thing the pad was asking for.
|
|
247
250
|
*/
|
|
248
251
|
const restStateOf = (part) => (highlight.parts.has(part) ? "hint" : "off");
|
|
252
|
+
/**
|
|
253
|
+
* What a part should read as while it IS pressed — and this is where the pad stops being a mirror.
|
|
254
|
+
*
|
|
255
|
+
* `on` (the accent) means "a key is down". `done` (green) means "that one was RIGHT". The difference
|
|
256
|
+
* only exists when the pad is ASKING for something: with no {@link ControllerPadOptions.highlight}
|
|
257
|
+
* standing, nothing has been asked, so nothing can be right and every press is the neutral `on` —
|
|
258
|
+
* which is exactly how this component behaved before, and still does for every caller that doesn't
|
|
259
|
+
* highlight.
|
|
260
|
+
*
|
|
261
|
+
* Note what is deliberately NOT here: any notion of order. A sequence combo (`RT` *then* `B`) turns
|
|
262
|
+
* each of its keys green as it is held, without tracking progress through the sequence. Gating on
|
|
263
|
+
* the rider actually performing a combination in order is `mountControlTrainer`'s job, and half a
|
|
264
|
+
* copy of it living here would be worse than not having it — it would look like the lesson and not
|
|
265
|
+
* behave like one.
|
|
266
|
+
*
|
|
267
|
+
* The green itself is not new: `mountControlSpotlight` and `mountComboDemo` already paint the
|
|
268
|
+
* rider's own presses `done` to separate them from the presses a demo is performing. This is that
|
|
269
|
+
* same sentence, on the bare pad.
|
|
270
|
+
*/
|
|
271
|
+
const pressStateOf = (part) => (highlight.parts.has(part) ? "done" : "on");
|
|
272
|
+
/**
|
|
273
|
+
* Is the rider pushing this stick the way the pad ASKED?
|
|
274
|
+
*
|
|
275
|
+
* A bare `"LSTICK"` asks for movement in any direction, so any deflection answers it. A directional
|
|
276
|
+
* `"LSTICK:left"` asks for one, so the answer is the projection onto it — pushing right while the
|
|
277
|
+
* pad asks for left is a press, not a correct press.
|
|
278
|
+
*/
|
|
279
|
+
function stickMatchesAsk(side, x, y) {
|
|
280
|
+
if (!highlight.sticks.has(side))
|
|
281
|
+
return false;
|
|
282
|
+
const dir = highlight.sticks.get(side);
|
|
283
|
+
if (!dir)
|
|
284
|
+
return true;
|
|
285
|
+
return x * dir[0] + y * dir[1] > STICK_LIT_DEADZONE;
|
|
286
|
+
}
|
|
249
287
|
/** The parts behind everything the rider is holding right now. */
|
|
250
288
|
function heldParts() {
|
|
251
289
|
const parts = new Set();
|
|
@@ -267,8 +305,11 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
267
305
|
function applyHighlight() {
|
|
268
306
|
const down = heldParts();
|
|
269
307
|
for (const part of highlight.parts) {
|
|
270
|
-
|
|
271
|
-
|
|
308
|
+
// A key the rider is ALREADY holding when the ask arrives is right by definition, so it goes
|
|
309
|
+
// straight to `done` — never through `hint`, which would be an `on → hint → on` round trip and
|
|
310
|
+
// would fire a second press pulse on a key nobody pressed again. `on → done` is not an edge
|
|
311
|
+
// into a pressed state, so no pulse fires and the colour simply moves.
|
|
312
|
+
driver.setPartState(part, down.has(part) ? "done" : "hint");
|
|
272
313
|
}
|
|
273
314
|
// Only the COLOUR is seeded here; the position is the loop's, which starts below. A hinted stick
|
|
274
315
|
// has to move to mean anything — see `hintStickAt`.
|
|
@@ -361,8 +402,9 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
361
402
|
const part = litPartOfControl(name);
|
|
362
403
|
if (!part)
|
|
363
404
|
return;
|
|
364
|
-
// `restStateOf`, not `off`:
|
|
365
|
-
|
|
405
|
+
// `pressStateOf` / `restStateOf`, not `on` / `off`: a press that answers what the pad asked reads
|
|
406
|
+
// as "that one was right", and releasing it must leave the ask standing rather than go dark.
|
|
407
|
+
driver.setPartState(part, down ? pressStateOf(part) : restStateOf(part));
|
|
366
408
|
const meter = triggerSideOfPart(part);
|
|
367
409
|
if (meter)
|
|
368
410
|
driver.setMeter(meter, down ? 1 : 0);
|
|
@@ -402,7 +444,12 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
402
444
|
* inside its deadzone, which is also exactly when it becomes readable again.
|
|
403
445
|
*/
|
|
404
446
|
function driveStick(side, x, y) {
|
|
405
|
-
if (Math.hypot(x, y) > STICK_LIT_DEADZONE
|
|
447
|
+
if (Math.hypot(x, y) > STICK_LIT_DEADZONE) {
|
|
448
|
+
// Moving for real. Green only if it is the movement that was ASKED for — see `stickMatchesAsk`.
|
|
449
|
+
driver.setStick(side, x, y, stickMatchesAsk(side, x, y) ? "done" : "auto");
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
if (!highlight.sticks.has(side)) {
|
|
406
453
|
driver.setStick(side, x, y, "auto");
|
|
407
454
|
return;
|
|
408
455
|
}
|
|
@@ -424,8 +471,9 @@ export function mountControllerPad(host, opts = {}) {
|
|
|
424
471
|
const [vx, vy] = DPAD_DIRECTIONS[name];
|
|
425
472
|
const explained = lx * vx + ly * vy > STICK_LIT_DEADZONE;
|
|
426
473
|
const part = litPartOfButton(name);
|
|
427
|
-
if (part)
|
|
428
|
-
driver.setPartState(part, held.has(name) && !explained ?
|
|
474
|
+
if (part) {
|
|
475
|
+
driver.setPartState(part, held.has(name) && !explained ? pressStateOf(part) : restStateOf(part));
|
|
476
|
+
}
|
|
429
477
|
}
|
|
430
478
|
}
|
|
431
479
|
/** Is there anything to animate? Real axes to poll, or a stick the pad is asking the rider to move. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-pad.js","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controller-pad.js","sourceRoot":"","sources":["../../../src/ui/controller/controller-pad.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,14 @@ export interface PadRendererOptions extends PadDriverOptions {
|
|
|
112
112
|
* them on the flat pad, and on the 3D pad only a difference in glow would be left.
|
|
113
113
|
*/
|
|
114
114
|
hintColor?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Colour of the `done` state — "that one was right". Default: the kit's green.
|
|
117
|
+
*
|
|
118
|
+
* The third themable state, for the same reason as the other two: a HUD sits in the game's palette.
|
|
119
|
+
* Keep it distinct from {@link accent} — the pair is what lets a pad say *you pressed something* and
|
|
120
|
+
* *you pressed the RIGHT something* as two different sentences.
|
|
121
|
+
*/
|
|
122
|
+
doneColor?: string;
|
|
115
123
|
}
|
|
116
124
|
/**
|
|
117
125
|
* Builds a renderer for one layout. `mountControllerPad` calls this on every (re-)draw, so a factory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAE7F;AAED,MAAM,WAAW,WAAW;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,4FAA4F;IAC5F,MAAM,IAAI,IAAI,CAAC;IACf;;;;;;;OAOG;IACH,kBAAkB,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wGAAwG;IACxG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,KAAK,WAAW,CAAC;AAE9F;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,kBAAuB,GAAG,WAAW,CA6DlG"}
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/ui/controller/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAE7F;AAED,MAAM,WAAW,WAAW;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,4FAA4F;IAC5F,MAAM,IAAI,IAAI,CAAC;IACf;;;;;;;OAOG;IACH,kBAAkB,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wGAAwG;IACxG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,KAAK,WAAW,CAAC;AAE9F;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,kBAAuB,GAAG,WAAW,CA6DlG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/ui/controller/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAyB,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAgC,MAAM,YAAY,CAAC;AAoBtE,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc;IACjF,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC;AACjF,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/ui/controller/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,9 @@ const CSS = `
|
|
|
49
49
|
overriding this from outside. */
|
|
50
50
|
--pad-hint: rgba(255, 255, 255, 0.92);
|
|
51
51
|
--pad-hint-stroke: #ffffff;
|
|
52
|
+
/* "That one was right". Referenced all over the sheet but never declared until now, so it lived as a
|
|
53
|
+
hard-coded fallback that no game could theme. Set through the doneColor option. */
|
|
54
|
+
--pad-ok: #22c55e;
|
|
52
55
|
display: block;
|
|
53
56
|
width: 100%;
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ui/controller/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,wFAAwF;AACxF,MAAM,UAAU,YAAY;IAC1B,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;IACpB,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,qGAAqG;AACrG,mGAAmG;AACnG,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ui/controller/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,wFAAwF;AACxF,MAAM,UAAU,YAAY;IAC1B,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;IACpB,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,qGAAqG;AACrG,mGAAmG;AACnG,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DA8E+C,WAAW;;;;;;;;;;;;;;;;;uBAiB/C,WAAW;uBACX,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAsKjB,iBAAiB,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyV9C,CAAC"}
|