@vibes.diy/vibe-runtime 14.3.168 → 14.3.173

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.
@@ -0,0 +1,511 @@
1
+ import { exception2Result } from "@adviser/cement";
2
+ import { attachDesktopControls, onOwnControl } from "./world-controls-desktop.js";
3
+ export const WORLD_CONTROLS_TUNE = {
4
+ tapPx: 12,
5
+ holdMs: 450,
6
+ flickPx: 34,
7
+ flickMaxPx: 220,
8
+ flickMs: 250,
9
+ flickSpeed: 0.5,
10
+ flickWindowMs: 80,
11
+ axisRatio: 1.35,
12
+ pitchEaseMs: 120,
13
+ lookSpeed: 0.006,
14
+ orbitSpeed: 0.008,
15
+ mouseSpeed: 0.0025,
16
+ mouseSpikePx: 200,
17
+ pinchSpeed: 1,
18
+ wheelStep: 0.08,
19
+ trailMs: 260,
20
+ stickFadeMs: 170,
21
+ edgeBand: 0.14,
22
+ edgeBandY: 0.08,
23
+ edgeRate: 2.6,
24
+ edgeCurve: 1.6,
25
+ stickDeadZone: 8,
26
+ stickFullAt: 60,
27
+ stickLeash: 74,
28
+ stickCurve: 1.35,
29
+ };
30
+ function clamp(v, lo, hi) {
31
+ return Math.min(hi, Math.max(lo, v));
32
+ }
33
+ function clamp01(v) {
34
+ return clamp(v, 0, 1);
35
+ }
36
+ export function fovFor(size) {
37
+ const t = clamp((1.2 - size.width / size.height) / 0.7, 0, 1);
38
+ return Math.max(60 + t * 25, size.width < 500 ? 75 : 0);
39
+ }
40
+ export function tuneOf(options) {
41
+ return { ...WORLD_CONTROLS_TUNE, ...options.tune };
42
+ }
43
+ function cameraOf(options) {
44
+ const c = options.camera;
45
+ if (c === undefined)
46
+ return undefined;
47
+ if ("updateProjectionMatrix" in c)
48
+ return c;
49
+ return c.current ?? undefined;
50
+ }
51
+ function readStick(args) {
52
+ const { stick, tune } = args;
53
+ let dx = args.x - stick.cx;
54
+ let dy = args.y - stick.cy;
55
+ let d = Math.hypot(dx, dy);
56
+ if (d > tune.stickLeash) {
57
+ const k = (d - tune.stickLeash) / d;
58
+ stick.cx += dx * k;
59
+ stick.cy += dy * k;
60
+ dx = args.x - stick.cx;
61
+ dy = args.y - stick.cy;
62
+ d = tune.stickLeash;
63
+ }
64
+ if (d < tune.stickDeadZone)
65
+ return { x: 0, y: 0 };
66
+ const lin = Math.min(1, (d - tune.stickDeadZone) / (tune.stickFullAt - tune.stickDeadZone));
67
+ const power = Math.pow(lin, tune.stickCurve);
68
+ return { x: (dx / d) * power, y: (dy / d) * power };
69
+ }
70
+ function vibrate(ms) {
71
+ if (typeof navigator !== "undefined" && typeof navigator.vibrate === "function")
72
+ navigator.vibrate(ms);
73
+ }
74
+ function attachTouchControls(args) {
75
+ const { el } = args;
76
+ function opts() {
77
+ return args.options.current;
78
+ }
79
+ function tune() {
80
+ return tuneOf(opts());
81
+ }
82
+ function isPlayer() {
83
+ return opts().mode !== "free";
84
+ }
85
+ const active = new Map();
86
+ const fx = { trail: [], pulses: [], stickGhost: undefined };
87
+ let pinch;
88
+ const tweens = [];
89
+ function at(e) {
90
+ const r = el.getBoundingClientRect();
91
+ return { x: e.clientX - r.left, y: e.clientY - r.top, w: r.width };
92
+ }
93
+ function setStick(x, y) {
94
+ opts().onMove?.(x, y);
95
+ }
96
+ function aim(x, y) {
97
+ opts().onAim?.(x, y);
98
+ }
99
+ function look(dx, dy) {
100
+ if (dx === 0 && dy === 0)
101
+ return;
102
+ const t = tune();
103
+ const k = isPlayer() ? t.lookSpeed : t.orbitSpeed;
104
+ opts().onLook?.(dx * k, dy * k);
105
+ }
106
+ function sideTaken(side) {
107
+ return [...active.values()].some((g) => g.side === side);
108
+ }
109
+ function fireHold(g) {
110
+ g.kind = "hold";
111
+ opts().onHold?.(g.cx, g.cy);
112
+ aim(null, null);
113
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), color: "255,77,109" });
114
+ vibrate(15);
115
+ }
116
+ function down(e) {
117
+ if (e.pointerType === "mouse")
118
+ return;
119
+ if (onOwnControl(el, e.target))
120
+ return;
121
+ e.preventDefault();
122
+ args.firstTouch();
123
+ const p = at(e);
124
+ const freeCam = isPlayer() === false;
125
+ if (freeCam && active.size === 1) {
126
+ const [other] = active.values();
127
+ other.kind = "pinch";
128
+ aim(null, null);
129
+ setStick(0, 0);
130
+ pinch = { a: other.id, b: e.pointerId, d: Math.hypot(p.x - other.x, p.y - other.y) || 1 };
131
+ }
132
+ else if (active.size >= 2)
133
+ return;
134
+ const side = p.x < p.w / 2 ? "stick" : "look";
135
+ if (freeCam === false && sideTaken(side))
136
+ return;
137
+ exception2Result(() => el.setPointerCapture(e.pointerId));
138
+ const g = {
139
+ id: e.pointerId,
140
+ side,
141
+ kind: pinch !== undefined && pinch.b === e.pointerId ? "pinch" : undefined,
142
+ x0: p.x,
143
+ y0: p.y,
144
+ x: p.x,
145
+ y: p.y,
146
+ cx: e.clientX,
147
+ cy: e.clientY,
148
+ t0: e.timeStamp,
149
+ lastT: undefined,
150
+ travel: 0,
151
+ stick: { cx: p.x, cy: p.y },
152
+ vert: [{ y: p.y, t: e.timeStamp }],
153
+ seenAt: performance.now(),
154
+ pitchBuf: 0,
155
+ pitchLive: false,
156
+ };
157
+ active.set(e.pointerId, g);
158
+ fx.trail.push({ x: p.x, y: p.y, t: performance.now() });
159
+ if (g.kind === undefined)
160
+ aim(e.clientX, e.clientY);
161
+ }
162
+ function couldFlick(g, now) {
163
+ const t = tune();
164
+ const up = g.y0 - g.y;
165
+ const side = Math.abs(g.x - g.x0);
166
+ if (now - g.t0 > t.flickMs)
167
+ return false;
168
+ if (Math.abs(up) > t.flickMaxPx)
169
+ return false;
170
+ if (side > t.flickPx && Math.abs(up) < side * t.axisRatio)
171
+ return false;
172
+ if (up < -t.tapPx && opts().flying !== true)
173
+ return false;
174
+ return true;
175
+ }
176
+ function releasePitch(g) {
177
+ g.pitchLive = true;
178
+ if (g.pitchBuf !== 0)
179
+ tweens.push({ left: g.pitchBuf, ms: tune().pitchEaseMs });
180
+ g.pitchBuf = 0;
181
+ }
182
+ function move(e) {
183
+ const g = active.get(e.pointerId);
184
+ if (g === undefined)
185
+ return;
186
+ const t = tune();
187
+ const p = at(e);
188
+ const dx = p.x - g.x;
189
+ const dy = p.y - g.y;
190
+ g.x = p.x;
191
+ g.y = p.y;
192
+ g.cx = e.clientX;
193
+ g.cy = e.clientY;
194
+ g.travel = Math.max(g.travel, Math.hypot(p.x - g.x0, p.y - g.y0));
195
+ g.vert.push({ y: p.y, t: e.timeStamp });
196
+ g.lastT = e.timeStamp;
197
+ g.seenAt = performance.now();
198
+ if (g.vert.length > 12)
199
+ g.vert.shift();
200
+ fx.trail.push({ x: p.x, y: p.y, t: performance.now() });
201
+ if (g.kind === "pinch") {
202
+ const a = pinch === undefined ? undefined : active.get(pinch.a);
203
+ const b = pinch === undefined ? undefined : active.get(pinch.b);
204
+ if (pinch === undefined || a === undefined || b === undefined)
205
+ return;
206
+ const d = Math.hypot(a.x - b.x, a.y - b.y) || 1;
207
+ opts().onPinch?.(Math.pow(pinch.d / d, t.pinchSpeed));
208
+ pinch.d = d;
209
+ return;
210
+ }
211
+ if (g.kind === "hold" || g.kind === "done")
212
+ return;
213
+ if (g.travel < t.tapPx && g.kind === undefined)
214
+ return;
215
+ if (g.kind === undefined) {
216
+ aim(null, null);
217
+ g.kind = g.side;
218
+ }
219
+ if (g.kind === "stick") {
220
+ const s = readStick({ stick: g.stick, x: p.x, y: p.y, tune: t });
221
+ setStick(s.x, s.y);
222
+ return;
223
+ }
224
+ look(dx, 0);
225
+ if (g.pitchLive)
226
+ look(0, dy);
227
+ else {
228
+ g.pitchBuf += dy;
229
+ if (couldFlick(g, e.timeStamp) === false)
230
+ releasePitch(g);
231
+ }
232
+ }
233
+ function flickOf(g, now) {
234
+ const t = tune();
235
+ const v = g.vert;
236
+ const up = g.y0 - g.y;
237
+ if (now - g.t0 > t.flickMs)
238
+ return undefined;
239
+ if (Math.abs(up) < t.flickPx || Math.abs(up) > t.flickMaxPx)
240
+ return undefined;
241
+ if (Math.abs(up) < Math.abs(g.x - g.x0) * t.axisRatio)
242
+ return undefined;
243
+ const recent = v.filter((s) => now - s.t <= t.flickWindowMs);
244
+ const first = recent[0] ?? v[v.length - 1];
245
+ if (first === undefined)
246
+ return undefined;
247
+ const speed = (first.y - g.y) / Math.max(1, now - first.t);
248
+ if (Math.sign(speed) !== Math.sign(up) || Math.abs(speed) < t.flickSpeed)
249
+ return undefined;
250
+ return up > 0 ? "up" : "down";
251
+ }
252
+ function up(e) {
253
+ const g = active.get(e.pointerId);
254
+ if (g === undefined)
255
+ return;
256
+ const t = tune();
257
+ active.delete(e.pointerId);
258
+ if (pinch !== undefined && (pinch.a === g.id || pinch.b === g.id)) {
259
+ pinch = undefined;
260
+ for (const o of active.values())
261
+ o.kind = "done";
262
+ }
263
+ if (g.kind === "stick") {
264
+ setStick(0, 0);
265
+ fx.stickGhost = { cx: g.stick.cx, cy: g.stick.cy, x: g.x, y: g.y, t: performance.now() };
266
+ }
267
+ aim(null, null);
268
+ const judged = e.type === "pointerup" && g.kind === "look" && g.pitchLive === false ? flickOf(g, e.timeStamp) : undefined;
269
+ const flick = judged === "down" && opts().flying !== true ? undefined : judged;
270
+ if (flick !== undefined)
271
+ g.pitchBuf = 0;
272
+ if (flick !== undefined && isPlayer()) {
273
+ opts().onFlick?.(flick);
274
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), arrow: flick === "up" ? -1 : 1, color: "255,255,255" });
275
+ vibrate(10);
276
+ }
277
+ if (g.kind === "look" && g.pitchLive === false)
278
+ releasePitch(g);
279
+ const still = e.type === "pointerup" && g.kind === undefined && g.travel < t.tapPx;
280
+ if (still && e.timeStamp - g.t0 >= t.holdMs)
281
+ fireHold(g);
282
+ else if (still) {
283
+ opts().onTap?.(g.cx, g.cy);
284
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), color: "255,255,255" });
285
+ vibrate(8);
286
+ }
287
+ }
288
+ function reset() {
289
+ active.clear();
290
+ pinch = undefined;
291
+ tweens.length = 0;
292
+ setStick(0, 0);
293
+ aim(null, null);
294
+ }
295
+ el.addEventListener("pointerdown", down);
296
+ el.addEventListener("pointermove", move);
297
+ el.addEventListener("pointerup", up);
298
+ el.addEventListener("pointercancel", up);
299
+ window.addEventListener("blur", reset);
300
+ function edgeTick(dt) {
301
+ const t = tune();
302
+ const r = el.getBoundingClientRect();
303
+ const w = r.width;
304
+ const hgt = r.height;
305
+ const bx = w * t.edgeBand;
306
+ const by = hgt * t.edgeBandY;
307
+ function ramp(d) {
308
+ return Math.pow(clamp01(d), t.edgeCurve);
309
+ }
310
+ for (let i = tweens.length - 1; i >= 0; i--) {
311
+ const tw = tweens[i];
312
+ const k = Math.min(1, (dt * 1000) / tw.ms);
313
+ const step = tw.left * k;
314
+ look(0, step);
315
+ tw.left -= step;
316
+ tw.ms -= dt * 1000;
317
+ if (tw.ms <= 0 || Math.abs(tw.left) < 0.01)
318
+ tweens.splice(i, 1);
319
+ }
320
+ for (const g of active.values()) {
321
+ const now = (g.lastT ?? g.t0) + (performance.now() - g.seenAt);
322
+ if (g.kind === undefined && g.travel < t.tapPx && now - g.t0 >= t.holdMs)
323
+ fireHold(g);
324
+ if (g.kind !== "look")
325
+ continue;
326
+ if (g.pitchLive === false && couldFlick(g, now) === false)
327
+ releasePitch(g);
328
+ const ex = ramp((g.x - (w - bx)) / bx) - ramp((bx - g.x) / bx);
329
+ let ey = 0;
330
+ if (g.pitchLive === false)
331
+ ey = 0;
332
+ else if (g.y < g.y0 - t.tapPx)
333
+ ey = -ramp((by - g.y) / by);
334
+ else if (g.y > g.y0 + t.tapPx)
335
+ ey = ramp((g.y - (hgt - by)) / by);
336
+ if (ex === 0 && ey === 0)
337
+ continue;
338
+ opts().onTurn?.(ex * t.edgeRate * dt, ey * t.edgeRate * 0.6 * dt);
339
+ }
340
+ }
341
+ function draw(d) {
342
+ const { ctx, now } = d;
343
+ const t = tune();
344
+ ctx.clearRect(0, 0, d.width, d.height);
345
+ fx.trail = fx.trail.filter((p) => now - p.t < t.trailMs);
346
+ ctx.fillStyle = "#ffffff";
347
+ fx.trail.forEach((p, i) => {
348
+ ctx.globalAlpha = 0.5 * (1 - (now - p.t) / t.trailMs);
349
+ ctx.beginPath();
350
+ ctx.arc(p.x, p.y, 3 + Math.min(i, 12) * 0.25, 0, Math.PI * 2);
351
+ ctx.fill();
352
+ });
353
+ function stickAt(s) {
354
+ const dist = Math.hypot(s.x - s.cx, s.y - s.cy);
355
+ const k = dist > t.stickLeash ? t.stickLeash / dist : 1;
356
+ ctx.globalAlpha = 0.35 * s.alpha;
357
+ ctx.strokeStyle = "#ffffff";
358
+ ctx.lineWidth = 3;
359
+ ctx.beginPath();
360
+ ctx.arc(s.cx, s.cy, t.stickFullAt, 0, Math.PI * 2);
361
+ ctx.stroke();
362
+ if (dist >= t.stickFullAt) {
363
+ ctx.globalAlpha = 0.8 * s.alpha;
364
+ const a = Math.atan2(s.y - s.cy, s.x - s.cx);
365
+ ctx.beginPath();
366
+ ctx.arc(s.cx, s.cy, t.stickFullAt, a - 0.5, a + 0.5);
367
+ ctx.stroke();
368
+ }
369
+ ctx.globalAlpha = 0.7 * s.alpha;
370
+ ctx.fillStyle = "#ffffff";
371
+ ctx.beginPath();
372
+ ctx.arc(s.cx + (s.x - s.cx) * k, s.cy + (s.y - s.cy) * k, 22, 0, Math.PI * 2);
373
+ ctx.fill();
374
+ }
375
+ for (const g of active.values()) {
376
+ if (g.kind === "stick")
377
+ stickAt({ cx: g.stick.cx, cy: g.stick.cy, x: g.x, y: g.y, alpha: 1 });
378
+ if (g.kind === undefined) {
379
+ const q = Math.min(1, ((g.lastT ?? g.t0) + (now - g.seenAt) - g.t0) / t.holdMs);
380
+ if (q > 0.15) {
381
+ ctx.globalAlpha = 0.9;
382
+ ctx.strokeStyle = "#ff4d6d";
383
+ ctx.lineWidth = 4;
384
+ ctx.beginPath();
385
+ ctx.arc(g.x, g.y, 30, -Math.PI / 2, -Math.PI / 2 + q * Math.PI * 2);
386
+ ctx.stroke();
387
+ }
388
+ }
389
+ }
390
+ const sg = fx.stickGhost;
391
+ if (sg !== undefined) {
392
+ const a = 1 - (now - sg.t) / t.stickFadeMs;
393
+ if (a > 0)
394
+ stickAt({ cx: sg.cx, cy: sg.cy, x: sg.x, y: sg.y, alpha: a });
395
+ else
396
+ fx.stickGhost = undefined;
397
+ }
398
+ fx.pulses = fx.pulses.filter((p) => now - p.t < 320);
399
+ for (const p of fx.pulses) {
400
+ const q = (now - p.t) / 320;
401
+ ctx.globalAlpha = 1 - q;
402
+ ctx.strokeStyle = `rgb(${p.color})`;
403
+ ctx.lineWidth = 3;
404
+ ctx.beginPath();
405
+ if (p.arrow !== undefined) {
406
+ const y = p.y + p.arrow * q * 30;
407
+ ctx.moveTo(p.x - 14, y - p.arrow * 12);
408
+ ctx.lineTo(p.x, y);
409
+ ctx.lineTo(p.x + 14, y - p.arrow * 12);
410
+ }
411
+ else
412
+ ctx.arc(p.x, p.y, 10 + q * 26, 0, Math.PI * 2);
413
+ ctx.stroke();
414
+ }
415
+ ctx.globalAlpha = 1;
416
+ }
417
+ return {
418
+ edgeTick,
419
+ draw,
420
+ detach() {
421
+ reset();
422
+ el.removeEventListener("pointerdown", down);
423
+ el.removeEventListener("pointermove", move);
424
+ el.removeEventListener("pointerup", up);
425
+ el.removeEventListener("pointercancel", up);
426
+ window.removeEventListener("blur", reset);
427
+ },
428
+ };
429
+ }
430
+ const ROOT_STYLE = [
431
+ ["touch-action", "none"],
432
+ ["user-select", "none"],
433
+ ["-webkit-user-select", "none"],
434
+ ["-webkit-touch-callout", "none"],
435
+ ];
436
+ function claimRootStyle(el) {
437
+ const style = el.style;
438
+ const claims = getComputedStyle(el).position === "static" ? [...ROOT_STYLE, ["position", "relative"]] : ROOT_STYLE;
439
+ const before = claims.map(([name]) => style.getPropertyValue(name));
440
+ for (const [name, value] of claims)
441
+ style.setProperty(name, value);
442
+ return function restore() {
443
+ claims.forEach(([name], i) => {
444
+ if (before[i] === "")
445
+ style.removeProperty(name);
446
+ else
447
+ style.setProperty(name, before[i]);
448
+ });
449
+ };
450
+ }
451
+ export function attachWorldControls(args) {
452
+ const { el, options, sink } = args;
453
+ const restoreStyle = claimRootStyle(el);
454
+ let touched = false;
455
+ const touch = attachTouchControls({
456
+ ...args,
457
+ firstTouch() {
458
+ if (touched)
459
+ return;
460
+ touched = true;
461
+ sink.setTouch(true);
462
+ options.current.onFirstTouch?.();
463
+ },
464
+ });
465
+ const desktop = attachDesktopControls({ ...args, defaults: WORLD_CONTROLS_TUNE });
466
+ const canvas = document.createElement("canvas");
467
+ canvas.setAttribute("aria-hidden", "true");
468
+ canvas.dataset.worldControls = "fx";
469
+ Object.assign(canvas.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none" });
470
+ el.appendChild(canvas);
471
+ const ctx = canvas.getContext("2d") ?? undefined;
472
+ let lensCamera;
473
+ function applyLens() {
474
+ const width = Math.max(1, el.clientWidth);
475
+ const height = Math.max(1, el.clientHeight);
476
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
477
+ canvas.width = Math.round(width * dpr);
478
+ canvas.height = Math.round(height * dpr);
479
+ ctx?.setTransform(dpr, 0, 0, dpr, 0, 0);
480
+ lensCamera = cameraOf(options.current);
481
+ if (lensCamera === undefined)
482
+ return;
483
+ lensCamera.aspect = width / height;
484
+ lensCamera.fov = fovFor({ width, height });
485
+ lensCamera.updateProjectionMatrix();
486
+ }
487
+ applyLens();
488
+ window.addEventListener("resize", applyLens);
489
+ window.addEventListener("orientationchange", applyLens);
490
+ const ro = typeof ResizeObserver === "undefined" ? undefined : new ResizeObserver(applyLens);
491
+ ro?.observe(el);
492
+ return {
493
+ tick(dt) {
494
+ if (cameraOf(options.current) !== lensCamera)
495
+ applyLens();
496
+ touch.edgeTick(dt);
497
+ if (ctx !== undefined)
498
+ touch.draw({ ctx, width: el.clientWidth, height: el.clientHeight, now: performance.now() });
499
+ },
500
+ detach() {
501
+ touch.detach();
502
+ desktop.detach();
503
+ window.removeEventListener("resize", applyLens);
504
+ window.removeEventListener("orientationchange", applyLens);
505
+ ro?.disconnect();
506
+ canvas.remove();
507
+ restoreStyle();
508
+ },
509
+ };
510
+ }
511
+ //# sourceMappingURL=world-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-controls.js","sourceRoot":"","sources":["../jsr/world-controls.ts"],"names":[],"mappings":"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"}