@edv4h/usketch-plugin-character 0.3.1 → 0.5.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/README.md +67 -11
- package/dist/character-input.d.ts +11 -3
- package/dist/character-input.d.ts.map +1 -1
- package/dist/character-input.js +63 -18
- package/dist/character-input.js.map +1 -1
- package/dist/character-key-choices.d.ts +14 -0
- package/dist/character-key-choices.d.ts.map +1 -0
- package/dist/character-key-choices.js +23 -0
- package/dist/character-key-choices.js.map +1 -0
- package/dist/character-layer.d.ts +1 -1
- package/dist/character-layer.d.ts.map +1 -1
- package/dist/character-layer.js +45 -14
- package/dist/character-layer.js.map +1 -1
- package/dist/character-physics.d.ts +156 -2
- package/dist/character-physics.d.ts.map +1 -1
- package/dist/character-physics.js +270 -22
- package/dist/character-physics.js.map +1 -1
- package/dist/character-runtime.d.ts +8 -1
- package/dist/character-runtime.d.ts.map +1 -1
- package/dist/character-runtime.js +90 -8
- package/dist/character-runtime.js.map +1 -1
- package/dist/character-service.d.ts +23 -3
- package/dist/character-service.d.ts.map +1 -1
- package/dist/character-service.js +7 -0
- package/dist/character-service.js.map +1 -1
- package/dist/character-store.d.ts +34 -1
- package/dist/character-store.d.ts.map +1 -1
- package/dist/character-store.js +86 -4
- package/dist/character-store.js.map +1 -1
- package/dist/character-sync.d.ts +11 -1
- package/dist/character-sync.d.ts.map +1 -1
- package/dist/character-sync.js +23 -1
- package/dist/character-sync.js.map +1 -1
- package/dist/character-types.d.ts +31 -2
- package/dist/character-types.d.ts.map +1 -1
- package/dist/character-types.js +2 -1
- package/dist/character-types.js.map +1 -1
- package/dist/character-virtual-input.d.ts +36 -0
- package/dist/character-virtual-input.d.ts.map +1 -0
- package/dist/character-virtual-input.js +48 -0
- package/dist/character-virtual-input.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +13 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +2 -0
- package/dist/plugin.js.map +1 -1
- package/dist/register-character-hud.d.ts.map +1 -1
- package/dist/register-character-hud.js +88 -1
- package/dist/register-character-hud.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-runtime.d.ts","sourceRoot":"","sources":["../src/character-runtime.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,KAAK,EAIV,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"character-runtime.d.ts","sourceRoot":"","sources":["../src/character-runtime.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,KAAK,EAIV,MAAM,uBAAuB,CAAC;AAqB/B,OAAO,EAAE,KAAK,cAAc,EAAiC,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EACN,KAAK,kBAAkB,EAIvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAIN,KAAK,YAAY,EAEjB,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAG9C,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAiB9C;;;;GAIG;AACH,wBAAgB,UAAU,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB9D;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAChC,qEAAqE;IACrE,aAAa,IAAI,IAAI,CAAC;IACtB,iFAAiF;IACjF,WAAW,IAAI,KAAK,CAAC;IACrB,iFAAiF;IACjF,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,aAAa,CAAC;IACzB,iFAAiF;IACjF,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3D,eAAe,IAAI,YAAY,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,uBAAuB,GAC9B,gBAAgB,CA4PlB"}
|
|
@@ -6,8 +6,10 @@ import { groundHeightService, screenToWorld, viewportRotation, } from "@edv4h/us
|
|
|
6
6
|
import { anchorPx, easeFocus, followViewport, sameViewport, smoothingAlpha, targetRotation, } from "./character-camera.js";
|
|
7
7
|
import { createKeyInput } from "./character-input.js";
|
|
8
8
|
import { CharacterLayer } from "./character-layer.js";
|
|
9
|
-
import { constrainToGround, stepCharacter } from "./character-physics.js";
|
|
9
|
+
import { constrainToGround, holdDriftForHop, IDLE_JUMP, stepCharacter, stepVertical, } from "./character-physics.js";
|
|
10
|
+
import { driftHopHeight, effectiveJump } from "./character-store.js";
|
|
10
11
|
import { createCharacterSync, easeRemotes, } from "./character-sync.js";
|
|
12
|
+
import { combineInput, isVirtualInputActive, normalizeVirtualInput, virtualPresses, } from "./character-virtual-input.js";
|
|
11
13
|
export const CHARACTER_LAYER_ID = "character";
|
|
12
14
|
/** Above shapes and most overlays, below the HUD (9999). */
|
|
13
15
|
const CHARACTER_LAYER_ORDER = 700;
|
|
@@ -17,6 +19,8 @@ export const CHARACTER_VIEWPORT_PRIORITY = 20;
|
|
|
17
19
|
const REMOTE_SMOOTHING = 0.75;
|
|
18
20
|
/** Largest simulated step, so a background-tab pause doesn't teleport the character. */
|
|
19
21
|
const MAX_DT = 0.05;
|
|
22
|
+
/** How long a measured canvas size is reused (a window resize re-measures at once). */
|
|
23
|
+
const CANVAS_SIZE_TTL_MS = 500;
|
|
20
24
|
function scheduleFrame(fn) {
|
|
21
25
|
if (typeof requestAnimationFrame === "function")
|
|
22
26
|
return requestAnimationFrame(fn);
|
|
@@ -55,14 +59,40 @@ export function canvasSize() {
|
|
|
55
59
|
return { width: 0, height: 0 };
|
|
56
60
|
}
|
|
57
61
|
export function setupCharacterRuntime(ctx, store, options) {
|
|
58
|
-
const keys = createKeyInput(options.keys, () => store.getState().enabled, () => store.getState().controlScheme === "vehicle" && store.getState().drift !== null);
|
|
62
|
+
const keys = createKeyInput(options.keys, () => store.getState().enabled, () => store.getState().controlScheme === "vehicle" && store.getState().drift !== null, () => store.getState().jump !== null);
|
|
63
|
+
let jumpTimers = IDLE_JUMP;
|
|
64
|
+
// `jump()` from code: a press on the next frame, held until the apex (a full jump).
|
|
65
|
+
let pendingJump = false;
|
|
66
|
+
let holdJump = false;
|
|
67
|
+
// Cleared when the character turns off, so a control that never sent its release
|
|
68
|
+
// (unmounted mid-touch) can't leave the next ride driving on its own.
|
|
69
|
+
let virtual = null;
|
|
70
|
+
// Virtual button presses since the last frame (a tap may press and release in between).
|
|
71
|
+
let virtualJumpPressed = false;
|
|
72
|
+
let virtualDriftPressed = false;
|
|
59
73
|
let cam = null;
|
|
60
74
|
let display = new Map();
|
|
61
75
|
let rafId = null;
|
|
62
76
|
let lastFrame = null;
|
|
63
77
|
// Set while WE write the viewport, so our own writes don't read as a user pan.
|
|
64
78
|
let writing = false;
|
|
65
|
-
|
|
79
|
+
// The anchor is read every frame while following; measuring the canvas walks the layer
|
|
80
|
+
// wrappers and forces a layout, so the size is cached and refreshed on resize or after
|
|
81
|
+
// a short TTL (covers layout changes that aren't a window resize, e.g. a side panel).
|
|
82
|
+
let sizeCache = null;
|
|
83
|
+
const cachedCanvasSize = () => {
|
|
84
|
+
const now = Date.now();
|
|
85
|
+
if (!sizeCache || now - sizeCache.at > CANVAS_SIZE_TTL_MS) {
|
|
86
|
+
sizeCache = { ...canvasSize(), at: now };
|
|
87
|
+
}
|
|
88
|
+
return sizeCache;
|
|
89
|
+
};
|
|
90
|
+
const onResize = () => {
|
|
91
|
+
sizeCache = null;
|
|
92
|
+
};
|
|
93
|
+
if (typeof window !== "undefined")
|
|
94
|
+
window.addEventListener("resize", onResize);
|
|
95
|
+
const anchorPoint = () => anchorPx(store.getState().anchor, cachedCanvasSize());
|
|
66
96
|
// Ground height from whichever plugin provides it (e.g. the map's raised terrain), looked up
|
|
67
97
|
// per call so a provider registered later still counts. Absent = flat board.
|
|
68
98
|
const heightAt = (x, y) => groundHeightService.get(ctx.services)?.heightAt(x, y) ?? 0;
|
|
@@ -73,6 +103,7 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
73
103
|
const vp = ctx.store.getViewport();
|
|
74
104
|
const a = anchorPoint();
|
|
75
105
|
store.setPosition(screenToWorld(a.x, a.y, vp));
|
|
106
|
+
jumpTimers = IDLE_JUMP;
|
|
76
107
|
cam = null;
|
|
77
108
|
};
|
|
78
109
|
const writeViewport = (vp) => {
|
|
@@ -98,13 +129,32 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
98
129
|
store.setHeading(-viewportRotation(ctx.store.getViewport()));
|
|
99
130
|
s = store.getState();
|
|
100
131
|
}
|
|
101
|
-
const
|
|
102
|
-
|
|
132
|
+
const keyInput = combineInput(keys.read(), virtual);
|
|
133
|
+
const input = {
|
|
134
|
+
...keyInput,
|
|
135
|
+
jump: keyInput.jump || holdJump,
|
|
136
|
+
jumpPressed: keyInput.jumpPressed || pendingJump || virtualJumpPressed,
|
|
137
|
+
driftPressed: keyInput.driftPressed || virtualDriftPressed,
|
|
138
|
+
};
|
|
139
|
+
if (pendingJump)
|
|
140
|
+
holdJump = true;
|
|
141
|
+
pendingJump = false;
|
|
142
|
+
virtualJumpPressed = false;
|
|
143
|
+
virtualDriftPressed = false;
|
|
144
|
+
if (s.followSuspended && (keys.anyHeld() || isVirtualInputActive(virtual))) {
|
|
103
145
|
store.setFollowSuspended(false);
|
|
146
|
+
}
|
|
104
147
|
const vp = ctx.store.getViewport();
|
|
105
|
-
const
|
|
148
|
+
const hopHeight = driftHopHeight(s);
|
|
149
|
+
const stepped = stepCharacter(s.pose, holdDriftForHop(input, s.pose, hopHeight), dt, s.controlScheme, s.motion, viewportRotation(vp), s.drift);
|
|
106
150
|
// Cliffs taller than the climbable step block the move (slide along them).
|
|
107
|
-
const
|
|
151
|
+
const moved = constrainToGround(s.pose, stepped, heightAt, s.motion.maxStep);
|
|
152
|
+
// Then up and down: jumps, falls off cliffs, landings.
|
|
153
|
+
const vertical = stepVertical(moved, jumpTimers, input, dt, heightAt(moved.x, moved.y), s.motion.maxStep, effectiveJump(s), hopHeight);
|
|
154
|
+
jumpTimers = vertical.timers;
|
|
155
|
+
const pose = vertical.pose;
|
|
156
|
+
if (holdJump && (!pose.airborne || pose.vz <= 0))
|
|
157
|
+
holdJump = false;
|
|
108
158
|
store.setPose(pose);
|
|
109
159
|
s = store.getState();
|
|
110
160
|
if (s.cameraMode !== "free" && !s.followSuspended) {
|
|
@@ -158,6 +208,9 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
158
208
|
}
|
|
159
209
|
else {
|
|
160
210
|
cam = null;
|
|
211
|
+
virtual = null;
|
|
212
|
+
virtualJumpPressed = false;
|
|
213
|
+
virtualDriftPressed = false;
|
|
161
214
|
// Hand the camera back upright.
|
|
162
215
|
if (viewportRotation(ctx.store.getViewport()) !== 0) {
|
|
163
216
|
ctx.store.rotateTo(0, anchorPoint(), { animate: true });
|
|
@@ -175,7 +228,8 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
175
228
|
});
|
|
176
229
|
// A viewport change we didn't make: zoom (wheel / keys) is welcome — the follow
|
|
177
230
|
// keeps the character on its anchor at the new zoom. A pure pan means the user
|
|
178
|
-
// wants to look around, so pause following until a movement key
|
|
231
|
+
// wants to look around, so pause following until a movement key (or the virtual
|
|
232
|
+
// control) is pressed.
|
|
179
233
|
let lastZoom = ctx.store.getViewport().zoom;
|
|
180
234
|
const offViewport = ctx.store.onMutation((e) => {
|
|
181
235
|
if (e.type !== "viewport:changed")
|
|
@@ -200,7 +254,29 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
200
254
|
return {
|
|
201
255
|
placeAtAnchor,
|
|
202
256
|
anchorPoint,
|
|
257
|
+
jump() {
|
|
258
|
+
const s = store.getState();
|
|
259
|
+
if (!s.enabled || !s.jump)
|
|
260
|
+
return;
|
|
261
|
+
pendingJump = true;
|
|
262
|
+
ensureLoop();
|
|
263
|
+
},
|
|
203
264
|
setKeys: (k) => keys.setKeys(k),
|
|
265
|
+
getKeys: () => keys.getKeys(),
|
|
266
|
+
setVirtualInput(input) {
|
|
267
|
+
// Ignored while off (like the keys), so input sent before the character is
|
|
268
|
+
// turned on can't make it drive away on its own the moment it spawns.
|
|
269
|
+
const next = store.getState().enabled ? normalizeVirtualInput(input) : null;
|
|
270
|
+
const pressed = virtualPresses(virtual, next);
|
|
271
|
+
if (pressed.jump)
|
|
272
|
+
virtualJumpPressed = true;
|
|
273
|
+
if (pressed.drift)
|
|
274
|
+
virtualDriftPressed = true;
|
|
275
|
+
virtual = next;
|
|
276
|
+
if (pressed.jump || pressed.drift)
|
|
277
|
+
ensureLoop();
|
|
278
|
+
},
|
|
279
|
+
getVirtualInput: () => (virtual ? { ...virtual } : null),
|
|
204
280
|
dispose() {
|
|
205
281
|
if (rafId !== null)
|
|
206
282
|
cancelFrame(rafId);
|
|
@@ -209,6 +285,8 @@ export function setupCharacterRuntime(ctx, store, options) {
|
|
|
209
285
|
offViewport();
|
|
210
286
|
keys.dispose();
|
|
211
287
|
sync?.dispose();
|
|
288
|
+
if (typeof window !== "undefined")
|
|
289
|
+
window.removeEventListener("resize", onResize);
|
|
212
290
|
ctx.layers.unregister(CHARACTER_LAYER_ID);
|
|
213
291
|
},
|
|
214
292
|
};
|
|
@@ -227,6 +305,10 @@ function sameRemotes(a, b) {
|
|
|
227
305
|
o.steering !== r.steering ||
|
|
228
306
|
o.slip !== r.slip ||
|
|
229
307
|
o.drifting !== r.drifting ||
|
|
308
|
+
o.z !== r.z ||
|
|
309
|
+
o.airborne !== r.airborne ||
|
|
310
|
+
o.hovering !== r.hovering ||
|
|
311
|
+
o.hoverGauge !== r.hoverGauge ||
|
|
230
312
|
o.name !== r.name ||
|
|
231
313
|
o.appearance !== r.appearance) {
|
|
232
314
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-runtime.js","sourceRoot":"","sources":["../src/character-runtime.tsx"],"names":[],"mappings":";AAAA,kFAAkF;AAClF,mFAAmF;AACnF,mEAAmE;AACnE,OAAO,EACN,mBAAmB,EAGnB,aAAa,EAEb,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,QAAQ,EAER,SAAS,EACT,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAiB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAGN,mBAAmB,EACnB,WAAW,GACX,MAAM,qBAAqB,CAAC;AAG7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,sFAAsF;AACtF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,oDAAoD;AACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,wFAAwF;AACxF,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,SAAS,aAAa,CAAC,EAAyB;IAC/C,IAAI,OAAO,qBAAqB,KAAK,UAAU;QAAE,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAsB,CAAC;AAClE,CAAC;AACD,SAAS,WAAW,CAAC,MAAc;IAClC,IAAI,OAAO,oBAAoB,KAAK,UAAU;QAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;;QACxE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACzB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,GAA6C,IAAI,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC;YAChC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5D,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7C,CAAC;QACF,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW;QAChC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACjE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AAgBD,MAAM,UAAU,qBAAqB,CACpC,GAAkB,EAClB,KAAqB,EACrB,OAAgC;IAEhC,MAAM,IAAI,GAAG,cAAc,CAC1B,OAAO,CAAC,IAAI,EACZ,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAC9B,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,IAAI,CACrF,CAAC;IACF,IAAI,GAAG,GAAuB,IAAI,CAAC;IACnC,IAAI,OAAO,GAAyC,IAAI,GAAG,EAAE,CAAC;IAC9D,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,+EAA+E;IAC/E,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,WAAW,GAAG,GAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAEjF,6FAA6F;IAC7F,6EAA6E;IAC7E,MAAM,QAAQ,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAyB,OAAO,CAAC,SAAS;QACnD,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC;IAER,MAAM,aAAa,GAAG,GAAS,EAAE;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,GAAG,GAAG,IAAI,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,EAAY,EAAQ,EAAE;QAC5C,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACJ,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACV,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;IACF,CAAC,CAAC;IAEF,gFAAgF;IAChF,+DAA+D;IAC/D,SAAS,KAAK,CAAC,GAAW;QACzB,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC5F,SAAS,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEzB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChB,aAAa,EAAE,CAAC;gBAChB,iEAAiE;gBACjE,KAAK,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE;gBAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAEzE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,aAAa,CAC5B,CAAC,CAAC,IAAI,EACN,KAAK,EACL,EAAE,EACF,CAAC,CAAC,aAAa,EACf,CAAC,CAAC,MAAM,EACR,gBAAgB,CAAC,EAAE,CAAC,EACpB,CAAC,CAAC,KAAK,CACP,CAAC;YACF,2EAA2E;YAC3E,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAErB,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAgB;oBAC3B,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;oBAC/B,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;iBACpD,CAAC;gBACF,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC7B,sFAAsF;gBACtF,MAAM,IAAI,GAAG,GAAG,IAAI;oBACnB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC5C,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;iBAC9B,CAAC;gBACF,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC;oBAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,EAAE,OAAO,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YACzF,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;gBACrB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ;YAAE,UAAU,EAAE,CAAC;;YAClD,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,SAAS,UAAU;QAClB,IAAI,KAAK,KAAK,IAAI;YAAE,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,GAAG,GAAG,IAAI,CAAC;gBACX,mEAAmE;gBACnE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBACnC,MAAM,EAAE,WAAW;oBACnB,QAAQ,EAAE,2BAA2B;iBACrC,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,GAAG,GAAG,IAAI,CAAC;gBACX,gCAAgC;gBAChC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC;YACD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACpF,8EAA8E;YAC9E,GAAG,GAAG,IAAI,CAAC;QACZ,CAAC;QACD,IAAI,GAAG,CAAC,CAAC;QACT,IAAI,CAAC,CAAC,OAAO;YAAE,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,gFAAgF;IAChF,+EAA+E;IAC/E,4EAA4E;IAC5E,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;IAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO;QAC1C,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;QACxD,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC;QACnB,IAAI,OAAO,IAAI,WAAW;YAAE,OAAO;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM;YAAE,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI;KAC3F,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,IAAI;QAAE,UAAU,EAAE,CAAC;IAEnD,OAAO;QACN,aAAa;QACb,WAAW;QACX,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO;YACN,IAAI,KAAK,KAAK,IAAI;gBAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YACvC,KAAK,GAAG,IAAI,CAAC;YACb,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,EAAE,OAAO,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CACnB,CAAuC,EACvC,CAAuC;IAEvC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,IACC,CAAC,CAAC;YACF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YACvB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YACrB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YACnB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YACzB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YACjB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YACzB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YACjB,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAC5B,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"character-runtime.js","sourceRoot":"","sources":["../src/character-runtime.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type Point, type ServiceRegistry } from "@edv4h/usketch-shared";
|
|
2
2
|
import type { CameraMode } from "./character-camera.js";
|
|
3
|
-
import type { CharacterPose, ControlScheme, DriftParams, MotionParams } from "./character-physics.js";
|
|
3
|
+
import type { CharacterPose, ControlScheme, DriftParams, JumpParams, MotionParams } from "./character-physics.js";
|
|
4
4
|
import type { CharacterRuntime } from "./character-runtime.js";
|
|
5
|
-
import type { CharacterStore } from "./character-store.js";
|
|
5
|
+
import type { CharacterStore, JumpInit } from "./character-store.js";
|
|
6
6
|
import type { CharacterAppearance, CharacterKeys, CharacterRenderer, RemoteCharacter } from "./character-types.js";
|
|
7
|
+
import type { VirtualInput } from "./character-virtual-input.js";
|
|
7
8
|
export interface CharacterApi {
|
|
8
9
|
isEnabled(): boolean;
|
|
9
10
|
enable(): void;
|
|
@@ -27,16 +28,35 @@ export interface CharacterApi {
|
|
|
27
28
|
getDrift(): DriftParams | null;
|
|
28
29
|
/** `true` = on (current or default tuning), `false` = off, an object = tuning overrides. */
|
|
29
30
|
setDrift(drift: boolean | Partial<DriftParams>): void;
|
|
31
|
+
/** Jump tuning, or `null` when jumping is off. */
|
|
32
|
+
getJump(): JumpParams | null;
|
|
33
|
+
/** `true` = on (current or default tuning), `false` = off, an object = tuning overrides. */
|
|
34
|
+
setJump(jump: boolean | JumpInit): void;
|
|
35
|
+
/** Jump now, as if the jump key were pressed and held (no-op while off or disabled). */
|
|
36
|
+
jump(): void;
|
|
30
37
|
/** Screen anchor as canvas fractions (0..1). */
|
|
31
38
|
getAnchor(): Point;
|
|
32
39
|
setAnchor(anchor: Partial<Point>): void;
|
|
33
40
|
/** Follow smoothing (0 = rigid … 0.99 = heavy lag). */
|
|
34
41
|
getFollowSmoothing(): number;
|
|
35
42
|
setFollowSmoothing(value: number): void;
|
|
36
|
-
/** Replace the
|
|
43
|
+
/** Replace the key bindings (`KeyboardEvent.code` values; omitted `drift` / `jump` are kept). */
|
|
37
44
|
setKeys(keys: CharacterKeys): void;
|
|
45
|
+
/** The current key bindings. */
|
|
46
|
+
getKeys(): CharacterKeys;
|
|
47
|
+
/**
|
|
48
|
+
* Drive with a non-keyboard control (an on-screen stick, a gamepad …): analog
|
|
49
|
+
* `throttle` / `steer` (-1 … 1) and the `drift` button, combined with the held keys.
|
|
50
|
+
* Send the current state on every change and `null` (or all zero) on release.
|
|
51
|
+
* Ignored while the character is off, and turning it off releases it.
|
|
52
|
+
*/
|
|
53
|
+
setVirtualInput(input: Partial<VirtualInput> | null): void;
|
|
54
|
+
/** The virtual control's current input, or `null` when released. */
|
|
55
|
+
getVirtualInput(): VirtualInput | null;
|
|
38
56
|
/** Swap the character renderer (`undefined` = draw nothing). */
|
|
39
57
|
setRenderer(renderer: CharacterRenderer | undefined): void;
|
|
58
|
+
/** Swap the shadow renderer, drawn on the ground under each character (`undefined` = none). */
|
|
59
|
+
setShadowRenderer(renderer: CharacterRenderer | undefined): void;
|
|
40
60
|
/** Replace the broadcast appearance data. */
|
|
41
61
|
setAppearance(appearance: CharacterAppearance): void;
|
|
42
62
|
/** Other clients' live characters. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-service.d.ts","sourceRoot":"","sources":["../src/character-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"character-service.d.ts","sourceRoot":"","sources":["../src/character-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,12 +20,19 @@ export function createCharacterApi(store, runtime) {
|
|
|
20
20
|
setMotion: (motion) => store.setMotion(motion),
|
|
21
21
|
getDrift: () => store.getState().drift,
|
|
22
22
|
setDrift: (drift) => store.setDrift(drift),
|
|
23
|
+
getJump: () => store.getState().jump,
|
|
24
|
+
setJump: (jump) => store.setJump(jump),
|
|
25
|
+
jump: () => runtime.jump(),
|
|
23
26
|
getAnchor: () => store.getState().anchor,
|
|
24
27
|
setAnchor: (anchor) => store.setAnchor(anchor),
|
|
25
28
|
getFollowSmoothing: () => store.getState().followSmoothing,
|
|
26
29
|
setFollowSmoothing: (v) => store.setFollowSmoothing(v),
|
|
27
30
|
setKeys: (keys) => runtime.setKeys(keys),
|
|
31
|
+
getKeys: () => runtime.getKeys(),
|
|
32
|
+
setVirtualInput: (input) => runtime.setVirtualInput(input),
|
|
33
|
+
getVirtualInput: () => runtime.getVirtualInput(),
|
|
28
34
|
setRenderer: (r) => store.setRenderer(r),
|
|
35
|
+
setShadowRenderer: (r) => store.setShadowRenderer(r),
|
|
29
36
|
setAppearance: (a) => store.setAppearance(a),
|
|
30
37
|
getRemotes: () => store.getState().remotes,
|
|
31
38
|
onChange: (listener) => store.subscribe(listener),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-service.js","sourceRoot":"","sources":["../src/character-service.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"character-service.js","sourceRoot":"","sources":["../src/character-service.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;AA+ExF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAe,0BAA0B,CAAC,CAAC;AAExF,MAAM,UAAU,kBAAkB,CAAC,KAAqB,EAAE,OAAyB;IAClF,OAAO;QACN,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO;QACzC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACzD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI;QACpC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1C,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE;QAC5C,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU;QAChD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;QAClD,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;QACtD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;QACxC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9C,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK;QACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI;QACpC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE;QAC1B,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;QACxC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9C,kBAAkB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,eAAe;QAC1D,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACxC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;QAChC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;QAC1D,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE;QAChD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5C,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO;QAC1C,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;KACjD,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,QAAyB;IACxD,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Point } from "@edv4h/usketch-shared";
|
|
2
2
|
import type { CameraMode } from "./character-camera.js";
|
|
3
|
-
import { type CharacterPose, type ControlScheme, type DriftParams, type MotionParams } from "./character-physics.js";
|
|
3
|
+
import { type CharacterPose, type ControlScheme, type DriftParams, type HoverParams, type JumpParams, type MotionParams } from "./character-physics.js";
|
|
4
4
|
import type { CharacterAppearance, CharacterRenderer, RemoteCharacter } from "./character-types.js";
|
|
5
5
|
export interface CharacterState {
|
|
6
6
|
enabled: boolean;
|
|
@@ -12,6 +12,8 @@ export interface CharacterState {
|
|
|
12
12
|
motion: MotionParams;
|
|
13
13
|
/** Vehicle drift tuning, or `null` when drifting is off. */
|
|
14
14
|
drift: DriftParams | null;
|
|
15
|
+
/** Jump tuning, or `null` when jumping is off. */
|
|
16
|
+
jump: JumpParams | null;
|
|
15
17
|
/** Screen anchor as fractions of the canvas (0..1). */
|
|
16
18
|
anchor: Point;
|
|
17
19
|
/** 0 = rigid follow … 0.99 = heavy lag. */
|
|
@@ -29,19 +31,45 @@ export interface CharacterStoreInit {
|
|
|
29
31
|
controlScheme?: ControlScheme;
|
|
30
32
|
motion?: Partial<MotionParams>;
|
|
31
33
|
drift?: boolean | Partial<DriftParams>;
|
|
34
|
+
jump?: boolean | JumpInit;
|
|
32
35
|
anchor?: Partial<Point>;
|
|
33
36
|
followSmoothing?: number;
|
|
34
37
|
appearance?: CharacterAppearance;
|
|
35
38
|
name?: string;
|
|
36
39
|
renderer?: CharacterRenderer;
|
|
40
|
+
shadowRenderer?: CharacterRenderer;
|
|
37
41
|
}
|
|
38
42
|
/** `true` = defaults, `false` / omitted = off, an object = defaults overridden. */
|
|
39
43
|
export declare function sanitizeDrift(d: boolean | Partial<DriftParams> | undefined, base?: DriftParams): DriftParams | null;
|
|
44
|
+
/** Jump tuning as a caller passes it: `hover` also takes `true` / `false` / a partial. */
|
|
45
|
+
export type JumpInit = Omit<Partial<JumpParams>, "hover"> & {
|
|
46
|
+
hover?: boolean | Partial<HoverParams> | null;
|
|
47
|
+
};
|
|
48
|
+
/** The most air jumps accepted (beyond it a jump key held down is flying, not jumping). */
|
|
49
|
+
export declare const MAX_AIR_JUMPS = 99;
|
|
50
|
+
/**
|
|
51
|
+
* `true` = on with `tuning` (the last one used, else the defaults), `false` / `null` =
|
|
52
|
+
* off, an object = `tuning` overridden, omitted = `current` unchanged.
|
|
53
|
+
*/
|
|
54
|
+
export declare function sanitizeHover(h: boolean | Partial<HoverParams> | null | undefined, current: HoverParams | null, tuning?: HoverParams): HoverParams | null;
|
|
55
|
+
/**
|
|
56
|
+
* `true` = defaults, `false` / omitted = off, an object = defaults overridden. `hoverTuning`
|
|
57
|
+
* is what `hover: true` turns on (the last hover tuning, so off → on keeps it).
|
|
58
|
+
*/
|
|
59
|
+
export declare function sanitizeJump(j: boolean | JumpInit | undefined, base?: JumpParams, hoverTuning?: HoverParams): JumpParams | null;
|
|
60
|
+
/** The jump tuning in effect (the same for both control schemes). */
|
|
61
|
+
export declare function effectiveJump(state: CharacterState): JumpParams | null;
|
|
62
|
+
/** Height of the drift hop in effect: a vehicle with drift + hop on, else 0. */
|
|
63
|
+
export declare function driftHopHeight(state: CharacterState): number;
|
|
64
|
+
/** The hover gauge to show / broadcast: `null` while hovering is off (in effect). */
|
|
65
|
+
export declare function hoverGaugeOf(state: CharacterState): number | null;
|
|
40
66
|
export declare function createCharacterStore(init?: CharacterStoreInit): {
|
|
41
67
|
getState: () => CharacterState;
|
|
42
68
|
subscribe(listener: () => void): () => void;
|
|
43
69
|
getRenderer: () => CharacterRenderer | undefined;
|
|
44
70
|
setRenderer(fn: CharacterRenderer | undefined): void;
|
|
71
|
+
getShadowRenderer: () => CharacterRenderer | undefined;
|
|
72
|
+
setShadowRenderer(fn: CharacterRenderer | undefined): void;
|
|
45
73
|
setEnabled(enabled: boolean): void;
|
|
46
74
|
setPose(pose: CharacterPose): void;
|
|
47
75
|
setPosition(p: Point): void;
|
|
@@ -51,6 +79,11 @@ export declare function createCharacterStore(init?: CharacterStoreInit): {
|
|
|
51
79
|
setMotion(m: Partial<MotionParams>): void;
|
|
52
80
|
/** `true` = on (current or default tuning), `false` = off, an object = tuning overrides. */
|
|
53
81
|
setDrift(d: boolean | Partial<DriftParams>): void;
|
|
82
|
+
/**
|
|
83
|
+
* `true` = on (current or default tuning), `false` = off, an object = tuning
|
|
84
|
+
* overrides (its `hover`: `true` / `false` / a partial, as for the jump).
|
|
85
|
+
*/
|
|
86
|
+
setJump(j: boolean | JumpInit): void;
|
|
54
87
|
setAnchor(a: Partial<Point>): void;
|
|
55
88
|
setFollowSmoothing(v: number): void;
|
|
56
89
|
setFollowSuspended(followSuspended: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-store.d.ts","sourceRoot":"","sources":["../src/character-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"character-store.d.ts","sourceRoot":"","sources":["../src/character-store.ts"],"names":[],"mappings":"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"}
|
package/dist/character-store.js
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
// shared with others only through awareness). A tiny subscribe/notify store so the
|
|
3
3
|
// layer, HUD and service all read the same source of truth.
|
|
4
4
|
import { wrapDeg } from "@edv4h/usketch-shared";
|
|
5
|
-
import { DEFAULT_DRIFT, DEFAULT_MOTION, ORIGIN_POSE, } from "./character-physics.js";
|
|
6
|
-
/** Stopped, wheels straight, no drift (
|
|
5
|
+
import { DEFAULT_DRIFT, DEFAULT_HOVER, DEFAULT_JUMP, DEFAULT_MOTION, ORIGIN_POSE, } from "./character-physics.js";
|
|
6
|
+
/** Stopped, wheels straight, no drift (scheme switches). */
|
|
7
7
|
const AT_REST = { speed: 0, moving: false, steering: 0, slip: 0, drift: 0 };
|
|
8
|
+
/** At rest and grounded: a teleport lands on whatever ground is there (`z` snaps up to it). */
|
|
9
|
+
const LANDED = { ...AT_REST, z: 0, vz: 0, airborne: false, hovering: false };
|
|
8
10
|
const clamp01 = (v) => Math.min(1, Math.max(0, v));
|
|
9
11
|
const positive = (v, fallback) => (Number.isFinite(v) && v > 0 ? v : fallback);
|
|
10
12
|
const nonNegative = (v, fallback) => (Number.isFinite(v) && v >= 0 ? v : fallback);
|
|
@@ -38,8 +40,67 @@ export function sanitizeDrift(d, base = DEFAULT_DRIFT) {
|
|
|
38
40
|
slipAngle: Math.min(90, nonNegative(d.slipAngle, base.slipAngle)),
|
|
39
41
|
steerSlipAngle: Math.min(90, nonNegative(d.steerSlipAngle, base.steerSlipAngle)),
|
|
40
42
|
recoveryRate: positive(finite(d.recoveryRate, base.recoveryRate), base.recoveryRate),
|
|
43
|
+
hop: typeof d.hop === "boolean" ? d.hop : base.hop,
|
|
44
|
+
hopHeight: nonNegative(d.hopHeight, base.hopHeight),
|
|
41
45
|
};
|
|
42
46
|
}
|
|
47
|
+
/** The most air jumps accepted (beyond it a jump key held down is flying, not jumping). */
|
|
48
|
+
export const MAX_AIR_JUMPS = 99;
|
|
49
|
+
/**
|
|
50
|
+
* `true` = on with `tuning` (the last one used, else the defaults), `false` / `null` =
|
|
51
|
+
* off, an object = `tuning` overridden, omitted = `current` unchanged.
|
|
52
|
+
*/
|
|
53
|
+
export function sanitizeHover(h, current, tuning = current ?? DEFAULT_HOVER) {
|
|
54
|
+
if (h === undefined)
|
|
55
|
+
return current;
|
|
56
|
+
if (!h)
|
|
57
|
+
return null;
|
|
58
|
+
if (h === true)
|
|
59
|
+
return tuning;
|
|
60
|
+
return {
|
|
61
|
+
duration: positive(finite(h.duration, tuning.duration), tuning.duration),
|
|
62
|
+
fallSpeed: nonNegative(finite(h.fallSpeed, tuning.fallSpeed), tuning.fallSpeed),
|
|
63
|
+
rechargeTime: nonNegative(finite(h.rechargeTime, tuning.rechargeTime), tuning.rechargeTime),
|
|
64
|
+
thrust: nonNegative(finite(h.thrust, tuning.thrust), tuning.thrust),
|
|
65
|
+
riseSpeed: nonNegative(finite(h.riseSpeed, tuning.riseSpeed), tuning.riseSpeed),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* `true` = defaults, `false` / omitted = off, an object = defaults overridden. `hoverTuning`
|
|
70
|
+
* is what `hover: true` turns on (the last hover tuning, so off → on keeps it).
|
|
71
|
+
*/
|
|
72
|
+
export function sanitizeJump(j, base = DEFAULT_JUMP, hoverTuning = base.hover ?? DEFAULT_HOVER) {
|
|
73
|
+
if (!j)
|
|
74
|
+
return null;
|
|
75
|
+
if (j === true)
|
|
76
|
+
return base;
|
|
77
|
+
const seconds = (v, fallback) => Math.min(1, Math.max(0, finite(v, fallback)));
|
|
78
|
+
return {
|
|
79
|
+
height: positive(finite(j.height, base.height), base.height),
|
|
80
|
+
timeToApex: positive(finite(j.timeToApex, base.timeToApex), base.timeToApex),
|
|
81
|
+
// Falling slower than rising reads as floaty-wrong; never below 1.
|
|
82
|
+
fallGravity: Math.max(1, finite(j.fallGravity, base.fallGravity)),
|
|
83
|
+
releaseCut: clamp01(finite(j.releaseCut, base.releaseCut)),
|
|
84
|
+
coyoteTime: seconds(j.coyoteTime, base.coyoteTime),
|
|
85
|
+
bufferTime: seconds(j.bufferTime, base.bufferTime),
|
|
86
|
+
airJumps: Math.min(MAX_AIR_JUMPS, Math.floor(nonNegative(finite(j.airJumps, base.airJumps), base.airJumps))),
|
|
87
|
+
airJumpRatio: positive(finite(j.airJumpRatio, base.airJumpRatio), base.airJumpRatio),
|
|
88
|
+
hover: sanitizeHover(j.hover, base.hover, hoverTuning),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/** The jump tuning in effect (the same for both control schemes). */
|
|
92
|
+
export function effectiveJump(state) {
|
|
93
|
+
return state.jump;
|
|
94
|
+
}
|
|
95
|
+
/** Height of the drift hop in effect: a vehicle with drift + hop on, else 0. */
|
|
96
|
+
export function driftHopHeight(state) {
|
|
97
|
+
const d = state.drift;
|
|
98
|
+
return state.controlScheme === "vehicle" && d?.hop ? d.hopHeight : 0;
|
|
99
|
+
}
|
|
100
|
+
/** The hover gauge to show / broadcast: `null` while hovering is off (in effect). */
|
|
101
|
+
export function hoverGaugeOf(state) {
|
|
102
|
+
return effectiveJump(state)?.hover ? state.pose.hoverGauge : null;
|
|
103
|
+
}
|
|
43
104
|
export function createCharacterStore(init = {}) {
|
|
44
105
|
let state = {
|
|
45
106
|
enabled: init.enabled ?? false,
|
|
@@ -49,6 +110,7 @@ export function createCharacterStore(init = {}) {
|
|
|
49
110
|
controlScheme: init.controlScheme ?? "directional",
|
|
50
111
|
motion: sanitizeMotion(init.motion ?? {}, DEFAULT_MOTION),
|
|
51
112
|
drift: sanitizeDrift(init.drift),
|
|
113
|
+
jump: sanitizeJump(init.jump),
|
|
52
114
|
anchor: { x: clamp01(init.anchor?.x ?? 0.5), y: clamp01(init.anchor?.y ?? 0.5) },
|
|
53
115
|
followSmoothing: Math.min(0.99, Math.max(0, init.followSmoothing ?? 0)),
|
|
54
116
|
followSuspended: false,
|
|
@@ -57,8 +119,11 @@ export function createCharacterStore(init = {}) {
|
|
|
57
119
|
remotes: new Map(),
|
|
58
120
|
};
|
|
59
121
|
let renderer = init.renderer;
|
|
60
|
-
|
|
122
|
+
let shadowRenderer = init.shadowRenderer;
|
|
123
|
+
// The tunings survive turning drift / jump off, so turning them back on keeps them.
|
|
61
124
|
let driftTuning = state.drift ?? DEFAULT_DRIFT;
|
|
125
|
+
let jumpTuning = state.jump ?? DEFAULT_JUMP;
|
|
126
|
+
let hoverTuning = state.jump?.hover ?? DEFAULT_HOVER;
|
|
62
127
|
const listeners = new Set();
|
|
63
128
|
const set = (patch) => {
|
|
64
129
|
state = { ...state, ...patch };
|
|
@@ -76,6 +141,11 @@ export function createCharacterStore(init = {}) {
|
|
|
76
141
|
renderer = fn;
|
|
77
142
|
set({}); // re-render with the new look
|
|
78
143
|
},
|
|
144
|
+
getShadowRenderer: () => shadowRenderer,
|
|
145
|
+
setShadowRenderer(fn) {
|
|
146
|
+
shadowRenderer = fn;
|
|
147
|
+
set({});
|
|
148
|
+
},
|
|
79
149
|
setEnabled(enabled) {
|
|
80
150
|
if (enabled !== state.enabled)
|
|
81
151
|
set({ enabled, followSuspended: false });
|
|
@@ -85,7 +155,7 @@ export function createCharacterStore(init = {}) {
|
|
|
85
155
|
set({ pose, spawned: true });
|
|
86
156
|
},
|
|
87
157
|
setPosition(p) {
|
|
88
|
-
set({ pose: { ...state.pose, ...
|
|
158
|
+
set({ pose: { ...state.pose, ...LANDED, x: p.x, y: p.y }, spawned: true });
|
|
89
159
|
},
|
|
90
160
|
setHeading(deg) {
|
|
91
161
|
set({ pose: { ...state.pose, heading: wrapDeg(deg) } });
|
|
@@ -109,6 +179,18 @@ export function createCharacterStore(init = {}) {
|
|
|
109
179
|
driftTuning = drift;
|
|
110
180
|
set({ drift });
|
|
111
181
|
},
|
|
182
|
+
/**
|
|
183
|
+
* `true` = on (current or default tuning), `false` = off, an object = tuning
|
|
184
|
+
* overrides (its `hover`: `true` / `false` / a partial, as for the jump).
|
|
185
|
+
*/
|
|
186
|
+
setJump(j) {
|
|
187
|
+
const jump = sanitizeJump(j, jumpTuning, hoverTuning);
|
|
188
|
+
if (jump)
|
|
189
|
+
jumpTuning = jump;
|
|
190
|
+
if (jump?.hover)
|
|
191
|
+
hoverTuning = jump.hover;
|
|
192
|
+
set({ jump });
|
|
193
|
+
},
|
|
112
194
|
setAnchor(a) {
|
|
113
195
|
set({
|
|
114
196
|
anchor: { x: clamp01(a.x ?? state.anchor.x), y: clamp01(a.y ?? state.anchor.y) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-store.js","sourceRoot":"","sources":["../src/character-store.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,mFAAmF;AACnF,4DAA4D;AAC5D,OAAO,EAAc,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAGN,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"character-store.js","sourceRoot":"","sources":["../src/character-store.ts"],"names":[],"mappings":"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"}
|
package/dist/character-sync.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CharacterStore } from "./character-store.js";
|
|
2
2
|
import type { CharacterAppearance, RemoteCharacter } from "./character-types.js";
|
|
3
3
|
/** The slice of a y-protocols `Awareness` this plugin uses. */
|
|
4
4
|
export interface CharacterAwareness {
|
|
@@ -22,6 +22,16 @@ export interface CharacterWireState {
|
|
|
22
22
|
slip?: number;
|
|
23
23
|
/** Vehicle drift running (absent from older clients → false). */
|
|
24
24
|
drifting?: boolean;
|
|
25
|
+
/** Feet height, absolute world units (absent from older clients → on the ground). */
|
|
26
|
+
z?: number;
|
|
27
|
+
/** In the air (absent → false). */
|
|
28
|
+
airborne?: boolean;
|
|
29
|
+
/** Vertical speed (absent → 0). */
|
|
30
|
+
vz?: number;
|
|
31
|
+
/** Hovering (absent → false). */
|
|
32
|
+
hovering?: boolean;
|
|
33
|
+
/** Hover gauge 0 … 1, `null` with hovering off (absent → null). */
|
|
34
|
+
hoverGauge?: number | null;
|
|
25
35
|
appearance: CharacterAppearance;
|
|
26
36
|
name?: string;
|
|
27
37
|
}
|