@rydr/game-sdk 8.11.0 → 8.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +26 -2
  2. package/dist/client/PlatformClient.d.ts.map +1 -1
  3. package/dist/client/PlatformClient.js +14 -2
  4. package/dist/client/PlatformClient.js.map +1 -1
  5. package/dist/client/Room.d.ts +9 -4
  6. package/dist/client/Room.d.ts.map +1 -1
  7. package/dist/client/Room.js +8 -5
  8. package/dist/client/Room.js.map +1 -1
  9. package/dist/host/PlatformHost.d.ts +4 -2
  10. package/dist/host/PlatformHost.d.ts.map +1 -1
  11. package/dist/host/PlatformHost.js +5 -3
  12. package/dist/host/PlatformHost.js.map +1 -1
  13. package/dist/protocol/messages.d.ts +11 -4
  14. package/dist/protocol/messages.d.ts.map +1 -1
  15. package/dist/protocol/room.d.ts +26 -0
  16. package/dist/protocol/room.d.ts.map +1 -1
  17. package/dist/protocol/version.d.ts +2 -2
  18. package/dist/protocol/version.d.ts.map +1 -1
  19. package/dist/protocol/version.js +23 -2
  20. package/dist/protocol/version.js.map +1 -1
  21. package/dist/three/README.md +111 -0
  22. package/dist/three/character/index.d.ts +14 -0
  23. package/dist/three/character/index.d.ts.map +1 -0
  24. package/dist/three/character/index.js +14 -0
  25. package/dist/three/character/index.js.map +1 -0
  26. package/dist/three/character/kit.d.ts +74 -0
  27. package/dist/three/character/kit.d.ts.map +1 -0
  28. package/dist/three/character/kit.js +254 -0
  29. package/dist/three/character/kit.js.map +1 -0
  30. package/dist/three/character/riders.d.ts +20 -0
  31. package/dist/three/character/riders.d.ts.map +1 -0
  32. package/dist/three/character/riders.js +383 -0
  33. package/dist/three/character/riders.js.map +1 -0
  34. package/dist/three/character/skeleton.d.ts +105 -0
  35. package/dist/three/character/skeleton.d.ts.map +1 -0
  36. package/dist/three/character/skeleton.js +57 -0
  37. package/dist/three/character/skeleton.js.map +1 -0
  38. package/dist/three/controller/glyph-texture.d.ts +29 -0
  39. package/dist/three/controller/glyph-texture.d.ts.map +1 -0
  40. package/dist/three/controller/glyph-texture.js +68 -0
  41. package/dist/three/controller/glyph-texture.js.map +1 -0
  42. package/dist/three/controller/index.d.ts +12 -0
  43. package/dist/three/controller/index.d.ts.map +1 -0
  44. package/dist/three/controller/index.js +12 -0
  45. package/dist/three/controller/index.js.map +1 -0
  46. package/dist/three/controller/joycon-designs.d.ts +49 -0
  47. package/dist/three/controller/joycon-designs.d.ts.map +1 -0
  48. package/dist/three/controller/joycon-designs.js +742 -0
  49. package/dist/three/controller/joycon-designs.js.map +1 -0
  50. package/dist/three/controller/joycon-shoulder-mesh.d.ts +41 -0
  51. package/dist/three/controller/joycon-shoulder-mesh.d.ts.map +1 -0
  52. package/dist/three/controller/joycon-shoulder-mesh.js +527 -0
  53. package/dist/three/controller/joycon-shoulder-mesh.js.map +1 -0
  54. package/dist/three/controller/joycon-spec.d.ts +233 -0
  55. package/dist/three/controller/joycon-spec.d.ts.map +1 -0
  56. package/dist/three/controller/joycon-spec.js +285 -0
  57. package/dist/three/controller/joycon-spec.js.map +1 -0
  58. package/dist/three/controller/three-pad-renderer.d.ts +81 -0
  59. package/dist/three/controller/three-pad-renderer.d.ts.map +1 -0
  60. package/dist/three/controller/three-pad-renderer.js +433 -0
  61. package/dist/three/controller/three-pad-renderer.js.map +1 -0
  62. package/dist/three/index.d.ts +2 -0
  63. package/dist/three/index.d.ts.map +1 -1
  64. package/dist/three/index.js +2 -0
  65. package/dist/three/index.js.map +1 -1
  66. package/dist/three/rider/cyclist-pose.d.ts +62 -0
  67. package/dist/three/rider/cyclist-pose.d.ts.map +1 -0
  68. package/dist/three/rider/cyclist-pose.js +173 -0
  69. package/dist/three/rider/cyclist-pose.js.map +1 -0
  70. package/dist/three/rider/index.d.ts +8 -0
  71. package/dist/three/rider/index.d.ts.map +1 -0
  72. package/dist/three/rider/index.js +8 -0
  73. package/dist/three/rider/index.js.map +1 -0
  74. package/dist/three/rider/three-rider-rig.d.ts +80 -0
  75. package/dist/three/rider/three-rider-rig.d.ts.map +1 -0
  76. package/dist/three/rider/three-rider-rig.js +418 -0
  77. package/dist/three/rider/three-rider-rig.js.map +1 -0
  78. package/dist/ui/README.md +153 -1
  79. package/dist/ui/controller/combo-demo.d.ts +9 -0
  80. package/dist/ui/controller/combo-demo.d.ts.map +1 -1
  81. package/dist/ui/controller/combo-demo.js +1 -0
  82. package/dist/ui/controller/combo-demo.js.map +1 -1
  83. package/dist/ui/controller/control-spotlight.d.ts +10 -1
  84. package/dist/ui/controller/control-spotlight.d.ts.map +1 -1
  85. package/dist/ui/controller/control-spotlight.js +42 -42
  86. package/dist/ui/controller/control-spotlight.js.map +1 -1
  87. package/dist/ui/controller/control-trainer.d.ts +14 -0
  88. package/dist/ui/controller/control-trainer.d.ts.map +1 -1
  89. package/dist/ui/controller/control-trainer.js +6 -0
  90. package/dist/ui/controller/control-trainer.js.map +1 -1
  91. package/dist/ui/controller/controller-map.d.ts +9 -0
  92. package/dist/ui/controller/controller-map.d.ts.map +1 -1
  93. package/dist/ui/controller/controller-map.js +8 -6
  94. package/dist/ui/controller/controller-map.js.map +1 -1
  95. package/dist/ui/controller/controller-pad.d.ts +35 -2
  96. package/dist/ui/controller/controller-pad.d.ts.map +1 -1
  97. package/dist/ui/controller/controller-pad.js +47 -7
  98. package/dist/ui/controller/controller-pad.js.map +1 -1
  99. package/dist/ui/controller/index.d.ts +1 -0
  100. package/dist/ui/controller/index.d.ts.map +1 -1
  101. package/dist/ui/controller/index.js +1 -0
  102. package/dist/ui/controller/index.js.map +1 -1
  103. package/dist/ui/controller/renderer.d.ts +118 -0
  104. package/dist/ui/controller/renderer.d.ts.map +1 -0
  105. package/dist/ui/controller/renderer.js +93 -0
  106. package/dist/ui/controller/renderer.js.map +1 -0
  107. package/dist/ui/controller/styles.js +30 -0
  108. package/dist/ui/controller/styles.js.map +1 -1
  109. package/dist/ui/index.d.ts +6 -0
  110. package/dist/ui/index.d.ts.map +1 -1
  111. package/dist/ui/index.js +6 -0
  112. package/dist/ui/index.js.map +1 -1
  113. package/dist/ui/rider-rig.d.ts +315 -0
  114. package/dist/ui/rider-rig.d.ts.map +1 -0
  115. package/dist/ui/rider-rig.js +1000 -0
  116. package/dist/ui/rider-rig.js.map +1 -0
  117. package/dist/ui/showcase/index.d.ts +11 -0
  118. package/dist/ui/showcase/index.d.ts.map +1 -1
  119. package/dist/ui/showcase/index.js +109 -1
  120. package/dist/ui/showcase/index.js.map +1 -1
  121. package/package.json +8 -4
@@ -0,0 +1,68 @@
1
+ /**
2
+ * GLYPH TEXTURES — the letters printed on a 3D pad's buttons (`A`, `B`, `X`, `Y`, `−`, `+`, `ZL`…),
3
+ * drawn into a canvas at runtime and used as a texture.
4
+ *
5
+ * **Why not 3D text?** Because this SDK ships no non-TS assets (`files: ["dist"]`, every drawing in the
6
+ * kit is generated from code), and real 3D text means a font file — `TextGeometry` needs a typeface
7
+ * JSON, and an `SDF`/MSDF atlas is an image. Both would be the first binary in the package. A canvas
8
+ * texture keeps the rule intact, costs one small draw per distinct glyph, and looks the same as the
9
+ * flat pad's lettering because it *is* the same: `2d` canvas text in the host's own font stack.
10
+ *
11
+ * Textures are cached by their full appearance key, so the eight buttons of a Joy-Con pair cost eight
12
+ * canvases once and zero per frame — and a pad rebuilt on a controller swap reuses them.
13
+ */
14
+ import * as THREE from "three";
15
+ /** Texture edge, in pixels. Power-of-two keeps mipmapping happy; 128 is plenty for one or two chars. */
16
+ const SIZE = 128;
17
+ const CACHE = new Map();
18
+ /**
19
+ * A transparent texture with `text` centred on it, in `color`.
20
+ *
21
+ * Short strings only — one or two characters. A trigger's `ZL` is the longest thing that lands here,
22
+ * and the font shrinks for a second character so both stay inside the circle.
23
+ */
24
+ export function glyphTexture(text, color = "#eaf2ff") {
25
+ const key = `${text}|${color}`;
26
+ const hit = CACHE.get(key);
27
+ if (hit)
28
+ return hit;
29
+ // No DOM (a Node build step, an SSR pass, a test): hand back an empty texture rather than throwing.
30
+ // The pad still builds; it just carries no lettering, which is the right failure for a decoration.
31
+ if (typeof document === "undefined") {
32
+ const blank = new THREE.Texture();
33
+ CACHE.set(key, blank);
34
+ return blank;
35
+ }
36
+ const canvas = document.createElement("canvas");
37
+ canvas.width = SIZE;
38
+ canvas.height = SIZE;
39
+ const ctx = canvas.getContext("2d");
40
+ if (ctx) {
41
+ // Two characters ("ZL") need to fit the same circle one does, so the size steps down rather than
42
+ // letting the glyph run over the button's edge.
43
+ const px = text.length > 1 ? SIZE * 0.42 : SIZE * 0.62;
44
+ ctx.font = `600 ${px}px system-ui, -apple-system, "Segoe UI", sans-serif`;
45
+ ctx.fillStyle = color;
46
+ ctx.textAlign = "center";
47
+ ctx.textBaseline = "middle";
48
+ // Nudged down a hair: `textBaseline: middle` sits optically high for capitals and digits.
49
+ ctx.fillText(text, SIZE / 2, SIZE * 0.54);
50
+ }
51
+ const tex = new THREE.CanvasTexture(canvas);
52
+ tex.colorSpace = THREE.SRGBColorSpace;
53
+ tex.anisotropy = 4;
54
+ CACHE.set(key, tex);
55
+ return tex;
56
+ }
57
+ /**
58
+ * Drop every cached glyph texture and free its GPU memory.
59
+ *
60
+ * The cache is process-wide and tiny, so a pad renderer must NOT call this on dispose — a second pad on
61
+ * the page would lose the textures out from under it. It exists for a host tearing the whole kit down.
62
+ */
63
+ export function clearGlyphTextureCache() {
64
+ for (const tex of CACHE.values())
65
+ tex.dispose();
66
+ CACHE.clear();
67
+ }
68
+ //# sourceMappingURL=glyph-texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyph-texture.js","sourceRoot":"","sources":["../../../src/three/controller/glyph-texture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,wGAAwG;AACxG,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAK,GAAG,SAAS;IAC1D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAEpB,oGAAoG;IACpG,mGAAmG;IACnG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAA4B,CAAC,CAAC;QAC7C,OAAO,KAA4B,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,GAAG,EAAE,CAAC;QACR,iGAAiG;QACjG,gDAAgD;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACvD,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,qDAAqD,CAAC;QAC1E,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACzB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC5B,0FAA0F;QAC1F,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;IACtC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAChD,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The 3D controller — a Joy-Con pair drawn in three.js, usable anywhere the flat pad goes.
3
+ *
4
+ * See `three-pad-renderer.ts` for the entry point (`createThreePadRenderer`) and `joycon-model.ts` for
5
+ * how the model is derived from the same layout table the flat drawing uses.
6
+ */
7
+ export * from "./glyph-texture.js";
8
+ export * from "./three-pad-renderer.js";
9
+ export * from "./joycon-spec.js";
10
+ export * from "./joycon-shoulder-mesh.js";
11
+ export * from "./joycon-designs.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/three/controller/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The 3D controller — a Joy-Con pair drawn in three.js, usable anywhere the flat pad goes.
3
+ *
4
+ * See `three-pad-renderer.ts` for the entry point (`createThreePadRenderer`) and `joycon-model.ts` for
5
+ * how the model is derived from the same layout table the flat drawing uses.
6
+ */
7
+ export * from "./glyph-texture.js";
8
+ export * from "./three-pad-renderer.js";
9
+ export * from "./joycon-spec.js";
10
+ export * from "./joycon-shoulder-mesh.js";
11
+ export * from "./joycon-designs.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/three/controller/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * THREE ART DIRECTIONS for the 3D Joy-Con, to be chosen between by eye.
3
+ *
4
+ * All three are built from the same {@link joycon-spec} numbers — real hardware proportions, real
5
+ * control placement — so what differs between them is **only** the art direction: shape language,
6
+ * materials, lighting response, level of detail. Same model, three ways of drawing it.
7
+ *
8
+ * {@link buildProductJoycon} "Product" — what the hardware looks like. Neon red / neon blue,
9
+ * domed buttons, dished stick caps, visible rail. Most faithful.
10
+ * {@link buildToyJoycon} "Toy" — chunkier, flatter colour, oversized controls, matte. Built to
11
+ * be read from across a room, which is the actual use case.
12
+ * {@link buildHoloJoycon} "Holo" — translucent shell with lit edges and emissive controls, in
13
+ * the SDK's own accent language. Reads as UI rather than as an object.
14
+ *
15
+ * Each returns a `JoyconBuild`: the group to add to a scene, plus the per-control nodes a driver would
16
+ * later need, plus everything to dispose. None of them is wired to input yet — that comes once one is
17
+ * picked.
18
+ */
19
+ import * as THREE from "three";
20
+ export interface JoyconBuild {
21
+ group: THREE.Group;
22
+ /** Every pressable node, by a stable key — what a driver will light once a design is chosen. */
23
+ controls: Map<string, THREE.Object3D>;
24
+ /** Stick pivots, tilted to lean the cap. */
25
+ sticks: {
26
+ l?: THREE.Group;
27
+ r?: THREE.Group;
28
+ };
29
+ disposables: {
30
+ dispose(): void;
31
+ }[];
32
+ }
33
+ export type JoyconDesignId = "product" | "toy" | "holo";
34
+ export interface JoyconDesign {
35
+ id: JoyconDesignId;
36
+ name: string;
37
+ /** One line on what this direction is trying to be — shown under each pad in the showcase. */
38
+ note: string;
39
+ build(): JoyconBuild;
40
+ /** Lighting is part of the art direction, so each design brings its own. */
41
+ light(scene: THREE.Scene): void;
42
+ /** Backdrop behind the pad in the showcase, as a CSS colour. */
43
+ backdrop: string;
44
+ }
45
+ export declare function buildProductJoycon(): JoyconBuild;
46
+ export declare function buildToyJoycon(): JoyconBuild;
47
+ export declare function buildHoloJoycon(): JoyconBuild;
48
+ export declare const JOYCON_DESIGNS: readonly JoyconDesign[];
49
+ //# sourceMappingURL=joycon-designs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joycon-designs.d.ts","sourceRoot":"","sources":["../../../src/three/controller/joycon-designs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnB,gGAAgG;IAChG,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,4CAA4C;IAC5C,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;QAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;KAAE,CAAC;IAC7C,WAAW,EAAE;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,EAAE,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,cAAc,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,WAAW,CAAC;IACrB,4EAA4E;IAC5E,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAChC,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqpBD,wBAAgB,kBAAkB,IAAI,WAAW,CAgBhD;AAID,wBAAgB,cAAc,IAAI,WAAW,CA0B5C;AAMD,wBAAgB,eAAe,IAAI,WAAW,CA4C7C;AAID,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAgEjD,CAAC"}