cubing 0.34.6 → 0.35.1

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 (109) hide show
  1. package/dist/esm/alg/index.js +1 -1
  2. package/dist/esm/bluetooth/index.js +6 -6
  3. package/dist/esm/bluetooth/index.js.map +3 -3
  4. package/dist/esm/{chunk-YUBK6NHL.js → chunk-ALNR2DLK.js} +34 -18
  5. package/dist/esm/chunk-ALNR2DLK.js.map +7 -0
  6. package/dist/esm/{chunk-KJUHIZ2G.js → chunk-EV25IJFC.js} +2 -2
  7. package/dist/esm/{chunk-KJUHIZ2G.js.map → chunk-EV25IJFC.js.map} +1 -1
  8. package/dist/esm/{chunk-P6GSDAYY.js → chunk-IN66QSRW.js} +2 -2
  9. package/dist/esm/{chunk-P6GSDAYY.js.map → chunk-IN66QSRW.js.map} +0 -0
  10. package/dist/esm/{chunk-HBJNS3VF.js → chunk-KLI2E737.js} +2 -2
  11. package/dist/esm/{chunk-HBJNS3VF.js.map → chunk-KLI2E737.js.map} +0 -0
  12. package/dist/esm/{chunk-XNFY5XVP.js → chunk-LS3POB3Y.js} +8 -12
  13. package/dist/esm/chunk-LS3POB3Y.js.map +7 -0
  14. package/dist/esm/{chunk-WN53PIUG.js → chunk-M4VSKPYT.js} +6 -6
  15. package/dist/esm/{chunk-WN53PIUG.js.map → chunk-M4VSKPYT.js.map} +1 -1
  16. package/dist/esm/{chunk-P7STLPTG.js → chunk-NHLJDRPU.js} +3 -3
  17. package/dist/esm/{chunk-P7STLPTG.js.map → chunk-NHLJDRPU.js.map} +0 -0
  18. package/dist/esm/{chunk-STXBFKP7.js → chunk-UMKR43AG.js} +2 -2
  19. package/dist/esm/{chunk-STXBFKP7.js.map → chunk-UMKR43AG.js.map} +0 -0
  20. package/dist/esm/{chunk-RMIAXF22.js → chunk-VDU7G35J.js} +52 -10
  21. package/dist/esm/chunk-VDU7G35J.js.map +7 -0
  22. package/dist/esm/{chunk-ELZ5WICP.js → chunk-VZP3KFTU.js} +6 -6
  23. package/dist/esm/chunk-VZP3KFTU.js.map +7 -0
  24. package/dist/esm/{chunk-JXIKYWF4.js → chunk-YNKPRDB4.js} +16 -16
  25. package/dist/esm/chunk-YNKPRDB4.js.map +7 -0
  26. package/dist/esm/{chunk-DFZ2CYSE.js → chunk-Z6WT2ASL.js} +4 -7
  27. package/dist/esm/{chunk-DFZ2CYSE.js.map → chunk-Z6WT2ASL.js.map} +2 -2
  28. package/dist/esm/{chunk-SXI3BVQT.js → chunk-ZMT2VR3H.js} +4 -4
  29. package/dist/esm/chunk-ZMT2VR3H.js.map +7 -0
  30. package/dist/esm/kpuzzle/index.js +2 -2
  31. package/dist/esm/notation/index.js +2 -2
  32. package/dist/esm/protocol/index.js +4 -4
  33. package/dist/esm/puzzle-geometry/index.js +1 -1
  34. package/dist/esm/puzzle-geometry/index.js.map +1 -1
  35. package/dist/esm/puzzles/index.js +4 -4
  36. package/dist/esm/puzzles-dynamic-megaminx-QPQBRZVY.js +224 -0
  37. package/dist/esm/puzzles-dynamic-megaminx-QPQBRZVY.js.map +7 -0
  38. package/dist/esm/{puzzles-dynamic-side-events-T2YVO2CD.js → puzzles-dynamic-side-events-D2VNVUXH.js} +62 -60
  39. package/dist/esm/puzzles-dynamic-side-events-D2VNVUXH.js.map +7 -0
  40. package/dist/esm/scramble/index.js +9 -9
  41. package/dist/esm/search/index.js +9 -9
  42. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js → search-dynamic-sgs-side-events-RABA64EP.js} +6 -6
  43. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js.map → search-dynamic-sgs-side-events-RABA64EP.js.map} +0 -0
  44. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js → search-dynamic-sgs-unofficial-MQH2M2GS.js} +7 -7
  45. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js.map → search-dynamic-sgs-unofficial-MQH2M2GS.js.map} +2 -2
  46. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js → search-dynamic-solve-3x3x3-VY7R3CDP.js} +2 -2
  47. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js.map → search-dynamic-solve-3x3x3-VY7R3CDP.js.map} +2 -2
  48. package/dist/esm/{search-dynamic-solve-4x4x4-6D3X6JPU.js → search-dynamic-solve-4x4x4-LWU4NFY4.js} +8 -8
  49. package/dist/esm/search-dynamic-solve-4x4x4-LWU4NFY4.js.map +7 -0
  50. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js → search-dynamic-solve-fto-JJ32OJVM.js} +2 -2
  51. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js.map → search-dynamic-solve-fto-JJ32OJVM.js.map} +1 -1
  52. package/dist/esm/{search-dynamic-solve-kilominx-ACTR53H2.js → search-dynamic-solve-kilominx-5GTXKEAX.js} +3 -3
  53. package/dist/esm/search-dynamic-solve-kilominx-5GTXKEAX.js.map +7 -0
  54. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js → search-dynamic-solve-master_tetraminx-UF5FKJW6.js} +2 -2
  55. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js.map → search-dynamic-solve-master_tetraminx-UF5FKJW6.js.map} +1 -1
  56. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js → search-dynamic-solve-sq1-S6V3FTO2.js} +2 -2
  57. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js.map → search-dynamic-solve-sq1-S6V3FTO2.js.map} +1 -1
  58. package/dist/esm/search-worker-inside-generated-string-PTO7TGLZ.js +4328 -0
  59. package/dist/esm/search-worker-inside-generated-string-PTO7TGLZ.js.map +7 -0
  60. package/dist/esm/search-worker-js-entry-GOZHBDMZ.js +17 -0
  61. package/dist/esm/search-worker-js-entry-GOZHBDMZ.js.map +7 -0
  62. package/dist/esm/{search-worker-ts-entry-JODGBUUR.js → search-worker-ts-entry-GRGPJCWU.js} +4 -4
  63. package/dist/esm/search-worker-ts-entry-GRGPJCWU.js.map +7 -0
  64. package/dist/esm/stream/index.js +1 -1
  65. package/dist/esm/twisty/index.js +17 -28
  66. package/dist/esm/twisty/index.js.map +2 -2
  67. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js → twisty-dynamic-3d-G5CFOW3T.js} +6 -6
  68. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js.map → twisty-dynamic-3d-G5CFOW3T.js.map} +1 -1
  69. package/dist/esm/{twsearch-T6KOUE6W.js → twsearch-H72D4ZDN.js} +6 -5
  70. package/dist/esm/twsearch-H72D4ZDN.js.map +7 -0
  71. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js +3155 -0
  72. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js.map +7 -0
  73. package/dist/types/{Alg-8b4e9255.d.ts → Alg-c6770822.d.ts} +6 -6
  74. package/dist/types/{KState-0da22515.d.ts → KState-fa1880c8.d.ts} +17 -17
  75. package/dist/types/{TwizzleLink-f790571d.d.ts → TwizzleLink-9873b9f1.d.ts} +82 -61
  76. package/dist/types/alg/index.d.ts +5 -5
  77. package/dist/types/bluetooth/index.d.ts +6 -6
  78. package/dist/types/{bluetooth-puzzle-62e2b423.d.ts → bluetooth-puzzle-1cb7db76.d.ts} +2 -2
  79. package/dist/types/kpuzzle/index.d.ts +2 -2
  80. package/dist/types/notation/index.d.ts +1 -1
  81. package/dist/types/{outside-074a0f79.d.ts → outside-f29a27bc.d.ts} +2 -2
  82. package/dist/types/parseAlg-d2c83795.d.ts +9 -0
  83. package/dist/types/protocol/index.d.ts +3 -3
  84. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  85. package/dist/types/puzzles/index.d.ts +5 -5
  86. package/dist/types/scramble/index.d.ts +3 -3
  87. package/dist/types/search/index.d.ts +3 -3
  88. package/dist/types/stream/index.d.ts +5 -5
  89. package/dist/types/twisty/index.d.ts +5 -5
  90. package/package.json +23 -23
  91. package/src/README.md +10 -0
  92. package/dist/esm/chunk-ELZ5WICP.js.map +0 -7
  93. package/dist/esm/chunk-JXIKYWF4.js.map +0 -7
  94. package/dist/esm/chunk-RMIAXF22.js.map +0 -7
  95. package/dist/esm/chunk-SXI3BVQT.js.map +0 -7
  96. package/dist/esm/chunk-XNFY5XVP.js.map +0 -7
  97. package/dist/esm/chunk-YUBK6NHL.js.map +0 -7
  98. package/dist/esm/puzzles-dynamic-side-events-T2YVO2CD.js.map +0 -7
  99. package/dist/esm/search-dynamic-solve-4x4x4-6D3X6JPU.js.map +0 -7
  100. package/dist/esm/search-dynamic-solve-kilominx-ACTR53H2.js.map +0 -7
  101. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js +0 -4068
  102. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js.map +0 -7
  103. package/dist/esm/search-worker-js-entry-6JKK757U.js +0 -17
  104. package/dist/esm/search-worker-js-entry-6JKK757U.js.map +0 -7
  105. package/dist/esm/search-worker-ts-entry-JODGBUUR.js.map +0 -7
  106. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js +0 -3163
  107. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js.map +0 -7
  108. package/dist/esm/twsearch-T6KOUE6W.js.map +0 -7
  109. package/dist/types/parseAlg-2dd4194b.d.ts +0 -9
@@ -3,17 +3,17 @@ import {
3
3
  THREEJS,
4
4
  haveStartedSharingRenderers,
5
5
  hintFaceletStyles
6
- } from "./chunk-SXI3BVQT.js";
6
+ } from "./chunk-ZMT2VR3H.js";
7
7
  import {
8
8
  cube3x3x3
9
- } from "./chunk-YUBK6NHL.js";
9
+ } from "./chunk-ALNR2DLK.js";
10
10
  import {
11
11
  getFaceletStickeringMask
12
- } from "./chunk-RMIAXF22.js";
13
- import "./chunk-HBJNS3VF.js";
12
+ } from "./chunk-VDU7G35J.js";
13
+ import "./chunk-KLI2E737.js";
14
14
  import {
15
15
  Move
16
- } from "./chunk-ELZ5WICP.js";
16
+ } from "./chunk-VZP3KFTU.js";
17
17
 
18
18
  // src/cubing/twisty/views/3D/puzzles/Cube3D.ts
19
19
  import {
@@ -1758,4 +1758,4 @@ export {
1758
1758
  cube3DShim,
1759
1759
  pg3dShim
1760
1760
  };
1761
- //# sourceMappingURL=twisty-dynamic-3d-ANH7V4CU.js.map
1761
+ //# sourceMappingURL=twisty-dynamic-3d-G5CFOW3T.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/twisty/views/3D/puzzles/Cube3D.ts", "../../src/cubing/twisty/controllers/easing.ts", "../../src/cubing/twisty/views/3D/puzzles/PG3D.ts", "../../src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.ts", "../../src/cubing/twisty/views/3D/Twisty3DScene.ts"],
4
4
  "sourcesContent": ["import {\n BackSide,\n BoxGeometry,\n BufferAttribute,\n BufferGeometry,\n DoubleSide,\n Euler,\n FrontSide,\n Group,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Quaternion,\n Texture,\n TextureLoader,\n Vector2,\n Vector3,\n} from \"three\";\nimport type { KPuzzle } from \"../../../../kpuzzle\";\nimport type { ExperimentalStickeringMask } from \"../../../../puzzles/cubing-private\";\nimport type {\n FaceletMeshStickeringMask,\n StickeringMask,\n} from \"../../../../puzzles/stickerings/mask\";\nimport type {\n MillisecondTimestamp,\n PuzzlePosition,\n} from \"../../../controllers/AnimationTypes\";\nimport { smootherStep } from \"../../../controllers/easing\";\nimport {\n HintFaceletStyle,\n hintFaceletStyles,\n} from \"../../../model/props/puzzle/display/HintFaceletProp\";\nimport type { InitialHintFaceletsAnimation } from \"../../../model/props/puzzle/display/InitialHintFaceletsAnimationProp\";\nimport type { FaceletScale } from \"../../../model/props/puzzle/display/FaceletScaleProp\";\nimport { TAU } from \"../TAU\";\nimport { haveStartedSharingRenderers } from \"../Twisty3DVantage\";\nimport type { Twisty3DPuzzle } from \"./Twisty3DPuzzle\";\n\nconst svgLoader = new TextureLoader();\n\nconst ignoredMaterial = new MeshBasicMaterial({\n color: 0x444444,\n side: DoubleSide,\n});\n\nconst ignoredMaterialHint = new MeshBasicMaterial({\n color: 0xcccccc,\n side: BackSide,\n transparent: true,\n opacity: 0.75,\n});\n\nconst invisibleMaterial = new MeshBasicMaterial({\n visible: false,\n});\n\nconst orientedMaterial = new MeshBasicMaterial({\n color: 0x44ddcc,\n});\n\nconst orientedMaterialHint = new MeshBasicMaterial({\n color: 0x44ddcc,\n side: BackSide,\n transparent: true,\n opacity: 0.5,\n});\n\ninterface MaterialMap\n extends Record<FaceletMeshStickeringMask, MeshBasicMaterial> {\n regular: MeshBasicMaterial;\n dim: MeshBasicMaterial;\n ignored: MeshBasicMaterial;\n invisible: MeshBasicMaterial;\n}\n\nclass AxisInfo {\n public stickerMaterial: MaterialMap;\n public hintStickerMaterial: MaterialMap;\n constructor(\n public vector: Vector3,\n public fromZ: Euler,\n public color: number,\n public dimColor: number,\n public hintOpacityScale: number, // TODO: make this work better across bright *and* dark backgrounds. Maybe tweak sticker compositing settings?\n options?: { hintColor?: number; hintDimColor?: number },\n ) {\n // TODO: Make sticker material single-sided when cubie foundation is opaque?\n this.stickerMaterial = {\n regular: new MeshBasicMaterial({\n color,\n side: FrontSide, // TODO: set to `DoubleSide` when hint facelets are disabled.\n }),\n dim: new MeshBasicMaterial({\n color: dimColor,\n side: FrontSide, // TODO: set to `DoubleSide` when hint facelets are disabled.\n }),\n oriented: orientedMaterial,\n ignored: ignoredMaterial,\n invisible: invisibleMaterial,\n };\n this.hintStickerMaterial = {\n regular: new MeshBasicMaterial({\n color: options?.hintColor ?? color,\n side: BackSide,\n transparent: true,\n opacity: 0.5 * hintOpacityScale,\n }),\n dim: new MeshBasicMaterial({\n color: options?.hintDimColor ?? dimColor,\n side: BackSide,\n transparent: true,\n opacity: 0.5 * hintOpacityScale,\n }),\n oriented: orientedMaterialHint,\n ignored: ignoredMaterialHint,\n invisible: invisibleMaterial,\n };\n }\n}\n\nconst axesInfo: AxisInfo[] = [\n new AxisInfo(\n new Vector3(0, 1, 0),\n new Euler(-TAU / 4, 0, 0),\n 0xffffff,\n 0xdddddd,\n 1.25,\n ),\n new AxisInfo(\n new Vector3(-1, 0, 0),\n new Euler(0, -TAU / 4, 0),\n 0xff8800,\n 0x884400,\n 1,\n { hintDimColor: 0x996600 },\n ),\n new AxisInfo(\n new Vector3(0, 0, 1),\n new Euler(0, 0, 0),\n 0x00ff00,\n 0x008800,\n 1,\n { hintDimColor: 0x009900 },\n ),\n new AxisInfo(\n new Vector3(1, 0, 0),\n new Euler(0, TAU / 4, 0),\n 0xff0000,\n 0x660000,\n 1,\n { hintDimColor: 0x990000 },\n ),\n new AxisInfo(\n new Vector3(0, 0, -1),\n new Euler(0, TAU / 2, 0),\n 0x2266ff,\n 0x113388,\n 0.75,\n { hintDimColor: 0x001866 },\n ),\n new AxisInfo(\n new Vector3(0, -1, 0),\n new Euler(TAU / 4, 0, 0),\n 0xffff00,\n 0x888800,\n 1.25,\n { hintDimColor: 0xbbbb00 },\n ),\n];\n\nconst face: { [s: string]: number } = {\n U: 0,\n L: 1,\n F: 2,\n R: 3,\n B: 4,\n D: 5,\n};\n\nconst familyToAxis: { [s: string]: number } = {\n U: face.U,\n u: face.U,\n Uw: face.U,\n Uv: face.U,\n y: face.U,\n L: face.L,\n l: face.L,\n Lw: face.L,\n Lv: face.L,\n M: face.L,\n F: face.F,\n f: face.F,\n Fw: face.F,\n Fv: face.F,\n S: face.F,\n z: face.F,\n R: face.R,\n r: face.R,\n Rw: face.R,\n Rv: face.R,\n x: face.R,\n B: face.B,\n b: face.B,\n Bw: face.B,\n Bv: face.B,\n D: face.D,\n d: face.D,\n Dw: face.D,\n Dv: face.D,\n E: face.D,\n};\n\nconst cubieDimensions = {\n // stickerWidth: 0.85, // Now `faceletScale` in options.\n stickerElevation: 0.503,\n foundationWidth: 1,\n hintStickerElevation: 1.45,\n};\nconst EXPERIMENTAL_PICTURE_CUBE_HINT_ELEVATION = 2;\n\n/** @deprecated */\nexport function experimentalSetDefaultStickerElevation(\n stickerElevation: number,\n): void {\n cubieDimensions.stickerElevation = stickerElevation;\n}\n\nexport interface Cube3DOptions {\n showMainStickers?: boolean;\n hintFacelets?: HintFaceletStyle;\n showFoundation?: boolean; // TODO: better name\n experimentalStickeringMask?: ExperimentalStickeringMask;\n foundationSprite?: Texture | null;\n hintSprite?: Texture | null;\n initialHintFaceletsAnimation?: InitialHintFaceletsAnimation;\n faceletScale?: \"auto\" | number;\n}\n\nconst cube3DOptionsDefaults: Cube3DOptions = {\n showMainStickers: true,\n hintFacelets: \"floating\",\n showFoundation: true,\n experimentalStickeringMask: undefined,\n foundationSprite: null,\n hintSprite: null,\n initialHintFaceletsAnimation: \"auto\",\n faceletScale: \"auto\",\n};\n\nconst DEFAULT_STICKER_SCALE = 0.85;\nfunction getFaceletScale(options: Cube3DOptions): number {\n if (\n typeof options.faceletScale === \"undefined\" ||\n options.faceletScale === \"auto\"\n ) {\n return DEFAULT_STICKER_SCALE;\n }\n return options.faceletScale;\n}\n\n// TODO: Make internal foundation faces one-sided, facing to the outside of the cube.\nconst blackMesh = new MeshBasicMaterial({\n color: 0x000000,\n opacity: 1,\n transparent: true,\n});\n\nconst blackTranslucentMesh = new MeshBasicMaterial({\n color: 0x000000,\n opacity: 0.3,\n transparent: true,\n});\n\nclass CubieDef {\n public matrix: Matrix4;\n public stickerFaces: number[];\n // stickerFaceNames can be e.g. [\"U\", \"F\", \"R\"], \"UFR\" if every face is a single letter.\n constructor(\n public orbit: string,\n stickerFaceNames: string[] | string,\n q: Quaternion,\n ) {\n const individualStickerFaceNames =\n typeof stickerFaceNames === \"string\"\n ? stickerFaceNames.split(\"\")\n : stickerFaceNames;\n this.stickerFaces = individualStickerFaceNames.map((s) => face[s]);\n this.matrix = new Matrix4();\n this.matrix.setPosition(firstPiecePosition[orbit]);\n this.matrix.premultiply(new Matrix4().makeRotationFromQuaternion(q));\n }\n}\n\nfunction t(v: Vector3, t4: number): Quaternion {\n return new Quaternion().setFromAxisAngle(v, (TAU * t4) / 4);\n}\n\nconst r = {\n O: new Vector3(0, 0, 0),\n U: new Vector3(0, -1, 0),\n L: new Vector3(1, 0, 0),\n F: new Vector3(0, 0, -1),\n R: new Vector3(-1, 0, 0),\n B: new Vector3(0, 0, 1),\n D: new Vector3(0, 1, 0),\n};\n\ninterface OrbitIndexed<T> {\n [s: string]: T;\n}\ntype PieceIndexed<T> = OrbitIndexed<T[]>;\n\nconst firstPiecePosition: OrbitIndexed<Vector3> = {\n EDGES: new Vector3(0, 1, 1),\n CORNERS: new Vector3(1, 1, 1),\n CENTERS: new Vector3(0, 1, 0),\n};\nconst orientationRotation: OrbitIndexed<Matrix4[]> = {\n EDGES: [0, 1].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.EDGES.clone().normalize(),\n (-i * TAU) / 2,\n ),\n ),\n CORNERS: [0, 1, 2].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.CORNERS.clone().normalize(),\n (-i * TAU) / 3,\n ),\n ),\n CENTERS: [0, 1, 2, 3].map((i) =>\n new Matrix4().makeRotationAxis(\n firstPiecePosition.CENTERS.clone().normalize(),\n (-i * TAU) / 4,\n ),\n ),\n};\nconst cubieStickerOrder = [face.U, face.F, face.R];\n\nconst pieceDefs: PieceIndexed<CubieDef> = {\n EDGES: [\n new CubieDef(\"EDGES\", \"UF\", t(r.O, 0)),\n new CubieDef(\"EDGES\", \"UR\", t(r.U, 3)),\n new CubieDef(\"EDGES\", \"UB\", t(r.U, 2)),\n new CubieDef(\"EDGES\", \"UL\", t(r.U, 1)),\n new CubieDef(\"EDGES\", \"DF\", t(r.F, 2)),\n new CubieDef(\"EDGES\", \"DR\", t(r.F, 2).premultiply(t(r.D, 1))),\n new CubieDef(\"EDGES\", \"DB\", t(r.F, 2).premultiply(t(r.D, 2))),\n new CubieDef(\"EDGES\", \"DL\", t(r.F, 2).premultiply(t(r.D, 3))),\n new CubieDef(\"EDGES\", \"FR\", t(r.U, 3).premultiply(t(r.R, 3))),\n new CubieDef(\"EDGES\", \"FL\", t(r.U, 1).premultiply(t(r.R, 3))),\n new CubieDef(\"EDGES\", \"BR\", t(r.U, 3).premultiply(t(r.R, 1))),\n new CubieDef(\"EDGES\", \"BL\", t(r.U, 1).premultiply(t(r.R, 1))),\n ],\n CORNERS: [\n new CubieDef(\"CORNERS\", \"UFR\", t(r.O, 0)),\n new CubieDef(\"CORNERS\", \"URB\", t(r.U, 3)),\n new CubieDef(\"CORNERS\", \"UBL\", t(r.U, 2)),\n new CubieDef(\"CORNERS\", \"ULF\", t(r.U, 1)),\n new CubieDef(\"CORNERS\", \"DRF\", t(r.F, 2).premultiply(t(r.D, 1))),\n new CubieDef(\"CORNERS\", \"DFL\", t(r.F, 2).premultiply(t(r.D, 0))),\n new CubieDef(\"CORNERS\", \"DLB\", t(r.F, 2).premultiply(t(r.D, 3))),\n new CubieDef(\"CORNERS\", \"DBR\", t(r.F, 2).premultiply(t(r.D, 2))),\n ],\n CENTERS: [\n new CubieDef(\"CENTERS\", \"U\", t(r.O, 0)),\n new CubieDef(\"CENTERS\", \"L\", t(r.R, 3).premultiply(t(r.U, 1))),\n new CubieDef(\"CENTERS\", \"F\", t(r.R, 3)),\n new CubieDef(\"CENTERS\", \"R\", t(r.R, 3).premultiply(t(r.D, 1))),\n new CubieDef(\"CENTERS\", \"B\", t(r.R, 3).premultiply(t(r.D, 2))),\n new CubieDef(\"CENTERS\", \"D\", t(r.R, 2)),\n ],\n};\n\nconst CUBE_SCALE = 1 / 3;\n\ninterface FaceletInfo {\n faceIdx: number;\n facelet: Mesh;\n hintFacelet?: Mesh;\n}\n\n// TODO: Compatibility with Randelshofer or standard net layout? Offer a\n// conversion function?\nconst pictureStickerCoords: Record<string, number[][][]> = {\n EDGES: [\n [\n [0, 4, 6],\n [0, 4, 5],\n ],\n [\n [3, 5, 7],\n [0, 7, 5],\n ],\n [\n [2, 4, 8],\n [0, 10, 5],\n ],\n [\n [1, 3, 7],\n [0, 1, 5],\n ],\n [\n [2, 4, 2],\n [2, 4, 3],\n ],\n [\n [3, 5, 1],\n [2, 7, 3],\n ],\n [\n [0, 4, 0],\n [2, 10, 3],\n ],\n [\n [1, 3, 1],\n [2, 1, 3],\n ],\n [\n [3, 5, 4],\n [3, 6, 4],\n ],\n [\n [1, 3, 4],\n [1, 2, 4],\n ],\n [\n [1, 9, 4],\n [1, 8, 4],\n ],\n [\n [3, 11, 4],\n [3, 0, 4],\n ],\n ],\n CORNERS: [\n [\n [0, 5, 6],\n [0, 5, 5],\n [0, 6, 5],\n ],\n [\n [3, 5, 8],\n [0, 8, 5],\n [0, 9, 5],\n ],\n [\n [2, 3, 8],\n [0, 11, 5],\n [0, 0, 5],\n ],\n [\n [1, 3, 6],\n [0, 2, 5],\n [0, 3, 5],\n ],\n [\n [3, 5, 2],\n [2, 6, 3],\n [2, 5, 3],\n ],\n [\n [2, 3, 2],\n [2, 3, 3],\n [2, 2, 3],\n ],\n [\n [1, 3, 0],\n [2, 0, 3],\n [2, 11, 3],\n ],\n [\n [0, 5, 0],\n [2, 9, 3],\n [2, 8, 3],\n ],\n ],\n CENTERS: [\n [[0, 4, 7]],\n [[0, 1, 4]],\n [[0, 4, 4]],\n [[0, 7, 4]],\n [[0, 10, 4]],\n [[0, 4, 1]],\n ],\n};\n\nlet sharedCubieFoundationGeometryCache: BoxGeometry | null = null;\nfunction sharedCubieFoundationGeometry(): BoxGeometry {\n return (\n sharedCubieFoundationGeometryCache ??\n (sharedCubieFoundationGeometryCache = new BoxGeometry(\n cubieDimensions.foundationWidth,\n cubieDimensions.foundationWidth,\n cubieDimensions.foundationWidth,\n ))\n );\n}\n\nfunction newStickerGeometry(): BufferGeometry {\n const r = new BufferGeometry();\n const half = 0.5;\n r.setAttribute(\n \"position\",\n new BufferAttribute(\n new Float32Array([\n half,\n half,\n 0,\n -half,\n half,\n 0,\n half,\n -half,\n 0,\n -half,\n half,\n 0,\n -half,\n -half,\n 0,\n half,\n -half,\n 0,\n ]),\n 3,\n ),\n );\n r.setAttribute(\n \"uv\",\n new BufferAttribute(\n new Float32Array([\n 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1,\n ]),\n 2,\n ),\n );\n // r.setAttribute('normals', new BufferAttribute(new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]), 3));\n return r;\n}\n\nlet sharedStickerGeometryCache: BufferGeometry | null = null;\nfunction sharedStickerGeometry(): BufferGeometry {\n return (\n sharedStickerGeometryCache ??\n (sharedStickerGeometryCache = newStickerGeometry())\n );\n}\n\n// TODO: Split into \"scene model\" and \"view\".\nexport class Cube3D extends Object3D implements Twisty3DPuzzle {\n kpuzzleFaceletInfo: Record<string, FaceletInfo[][]>;\n private pieces: PieceIndexed<Object3D> = {};\n private options: Cube3DOptions;\n // TODO: Keep track of option-based meshes better.\n private experimentalHintStickerMeshes: Mesh[] = [];\n private experimentalFoundationMeshes: Mesh[] = [];\n\n private setSpriteURL: (url: string) => void;\n private sprite: Texture | Promise<Texture> = new Promise((resolve) => {\n this.setSpriteURL = (url: string): void => {\n svgLoader.load(url, resolve);\n };\n });\n\n // TODO: Don't overwrite the static function.\n // TODO: This doesn't work dynamically yet.\n setSprite(texture: Texture): void {\n this.sprite = texture;\n }\n\n private setHintSpriteURL: (url: string) => void;\n private hintSprite: Texture | Promise<Texture> = new Promise((resolve) => {\n this.setHintSpriteURL = (url: string): void => {\n svgLoader.load(url, resolve);\n };\n });\n\n // TODO: Don't overwrite the static function.\n // TODO: This doesn't work dynamically yet.\n setHintSprite(texture: Texture): void {\n this.hintSprite = texture;\n }\n\n constructor(\n private kpuzzle: KPuzzle,\n private scheduleRenderCallback?: () => void,\n options: Cube3DOptions = {},\n ) {\n super();\n\n this.options = { ...cube3DOptionsDefaults };\n Object.assign(this.options, options); // TODO: check if this works\n\n if (this.kpuzzle.name() !== \"3x3x3\") {\n throw new Error(\n `Invalid puzzle for this Cube3D implementation: ${this.kpuzzle.name()}`,\n );\n }\n\n if (options.foundationSprite) {\n this.setSprite(options.foundationSprite);\n }\n if (options.hintSprite) {\n this.setHintSprite(options.hintSprite);\n }\n\n this.kpuzzleFaceletInfo = {};\n for (const orbit in pieceDefs) {\n const orbitFaceletInfo: FaceletInfo[][] = [];\n this.kpuzzleFaceletInfo[orbit] = orbitFaceletInfo;\n this.pieces[orbit] = pieceDefs[orbit].map(\n this.createCubie.bind(this, orbit, orbitFaceletInfo),\n );\n }\n this.scale.set(CUBE_SCALE, CUBE_SCALE, CUBE_SCALE);\n\n // TODO: Can we construct this directly instead of applying it later? Would that be more code-efficient?\n if (this.options.experimentalStickeringMask) {\n this.setStickeringMask(this.options.experimentalStickeringMask);\n }\n this.#animateRaiseHintFacelets();\n\n if (this.options.faceletScale) {\n this.experimentalSetFaceletScale(this.options.faceletScale);\n }\n }\n\n #sharedHintStickerGeometryCache: BufferGeometry | null = null;\n #sharedHintStickerGeometry(): BufferGeometry {\n return (this.#sharedHintStickerGeometryCache ??= newStickerGeometry());\n }\n\n // TODO: Generalize this into an animation mechanism.\n #animateRaiseHintFacelets(): void {\n if (\n this.options.initialHintFaceletsAnimation === \"none\" ||\n (this.options.initialHintFaceletsAnimation !== \"always\" &&\n haveStartedSharingRenderers())\n ) {\n return;\n }\n const translationRange =\n cubieDimensions.hintStickerElevation - cubieDimensions.stickerElevation;\n this.#sharedHintStickerGeometry().translate(0, 0, -translationRange);\n setTimeout(() => {\n const hintStartTime = performance.now();\n let lastTranslation = 0;\n const translationDuration: MillisecondTimestamp = 1000;\n function ease(x: number) {\n return x * (2 - x);\n }\n const animateRaiseHintSticker = () => {\n const elapsed = performance.now() - hintStartTime;\n const newTranslation =\n ease(elapsed / translationDuration) * translationRange;\n this.#sharedHintStickerGeometry().translate(\n 0,\n 0,\n newTranslation - lastTranslation,\n );\n lastTranslation = newTranslation;\n if (elapsed < translationDuration) {\n requestAnimationFrame(animateRaiseHintSticker);\n this.scheduleRenderCallback?.();\n }\n };\n animateRaiseHintSticker();\n }, 500);\n }\n\n // Can only be called once.\n /** @deprecated */\n experimentalSetStickerSpriteURL(stickerSpriteURL: string): void {\n this.setSpriteURL(stickerSpriteURL);\n }\n\n // Can only be called once.\n /** @deprecated */\n experimentalSetHintStickerSpriteURL(hintStickerSpriteURL: string): void {\n this.setHintSpriteURL(hintStickerSpriteURL);\n }\n\n setStickeringMask(stickeringMask: StickeringMask): void {\n if (stickeringMask.specialBehaviour === \"picture\") {\n // TODO: if the latest stickering mask was already \"picture\", don't redo work.\n for (const pieceInfos of Object.values(this.kpuzzleFaceletInfo)) {\n for (const faceletInfos of pieceInfos) {\n for (const faceletInfo of faceletInfos) {\n faceletInfo.facelet.material = invisibleMaterial;\n const { hintFacelet } = faceletInfo;\n if (hintFacelet) {\n hintFacelet.material = invisibleMaterial;\n }\n }\n }\n }\n return;\n }\n this.options.experimentalStickeringMask = stickeringMask;\n for (const [orbitName, orbitStickeringMask] of Object.entries(\n stickeringMask.orbits,\n )) {\n for (\n let pieceIdx = 0;\n pieceIdx < orbitStickeringMask.pieces.length;\n pieceIdx++\n ) {\n const pieceStickeringMask = orbitStickeringMask.pieces[pieceIdx];\n if (pieceStickeringMask) {\n const pieceInfo = this.kpuzzleFaceletInfo[orbitName][pieceIdx];\n for (\n let faceletIdx = 0;\n faceletIdx < pieceInfo.length;\n faceletIdx++\n ) {\n const faceletStickeringMask =\n pieceStickeringMask.facelets[faceletIdx];\n if (faceletStickeringMask) {\n const faceletInfo = pieceInfo[faceletIdx];\n\n const stickeringMask =\n typeof faceletStickeringMask === \"string\"\n ? faceletStickeringMask\n : faceletStickeringMask?.mask;\n\n faceletInfo.facelet.material =\n axesInfo[faceletInfo.faceIdx].stickerMaterial[stickeringMask];\n // TODO\n const hintStickeringMask =\n typeof faceletStickeringMask === \"string\"\n ? stickeringMask\n : faceletStickeringMask.hintMask ?? stickeringMask;\n if (faceletInfo.hintFacelet) {\n faceletInfo.hintFacelet.material =\n axesInfo[faceletInfo.faceIdx].hintStickerMaterial[\n hintStickeringMask\n ];\n }\n }\n }\n }\n }\n }\n if (this.scheduleRenderCallback) {\n this.scheduleRenderCallback();\n }\n }\n\n /** @deprecated */\n public experimentalUpdateOptions(options: Cube3DOptions): void {\n if (\"showMainStickers\" in options) {\n throw new Error(\"Unimplemented\");\n }\n\n const showFoundation = options.showFoundation;\n if (\n typeof showFoundation !== \"undefined\" &&\n this.options.showFoundation !== showFoundation\n ) {\n this.options.showFoundation = showFoundation;\n for (const foundation of this.experimentalFoundationMeshes) {\n foundation.visible = showFoundation;\n }\n }\n\n const hintFacelets = options.hintFacelets;\n if (\n typeof hintFacelets !== \"undefined\" &&\n this.options.hintFacelets !== hintFacelets &&\n hintFaceletStyles[hintFacelets] // TODO: test this\n ) {\n this.options.hintFacelets = hintFacelets;\n for (const hintSticker of this.experimentalHintStickerMeshes) {\n hintSticker.visible = hintFacelets === \"floating\";\n }\n this.scheduleRenderCallback!(); // TODO\n }\n\n const { experimentalStickeringMask } = options;\n if (typeof experimentalStickeringMask !== \"undefined\") {\n this.options.experimentalStickeringMask = experimentalStickeringMask;\n this.setStickeringMask(experimentalStickeringMask);\n this.scheduleRenderCallback!(); // TODO\n }\n\n const { faceletScale } = options;\n if (typeof faceletScale !== \"undefined\") {\n this.experimentalSetFaceletScale(faceletScale);\n }\n }\n\n public onPositionChange(p: PuzzlePosition): void {\n const reid333 = p.state;\n for (const orbit in pieceDefs) {\n const pieces = pieceDefs[orbit];\n for (let i = 0; i < pieces.length; i++) {\n const j = reid333.stateData[orbit].pieces[i];\n this.pieces[orbit][j].matrix.copy(pieceDefs[orbit][i].matrix);\n this.pieces[orbit][j].matrix.multiply(\n orientationRotation[orbit][reid333.stateData[orbit].orientation[i]],\n );\n }\n for (const moveProgress of p.movesInProgress) {\n const move = moveProgress.move;\n const turnNormal = axesInfo[familyToAxis[move.family]].vector;\n const moveMatrix = new Matrix4().makeRotationAxis(\n turnNormal,\n (-this.ease(moveProgress.fraction) *\n moveProgress.direction *\n move.amount *\n TAU) /\n 4,\n );\n for (let i = 0; i < pieces.length; i++) {\n const quantumTransformation = this.kpuzzle.moveToTransformation(\n move.modified({ amount: 1 }),\n );\n const k =\n quantumTransformation.transformationData[orbit].permutation[i];\n if (\n i !== k ||\n quantumTransformation.transformationData[orbit].orientation[i] !== 0\n ) {\n const j = reid333.stateData[orbit].pieces[i];\n this.pieces[orbit][j].matrix.premultiply(moveMatrix);\n }\n }\n }\n }\n this.scheduleRenderCallback!();\n }\n\n // TODO: Always create (but sometimes hide parts) so we can show them later,\n // or (better) support creating puzzle parts on demand.\n private createCubie(\n orbit: string,\n orbitFacelets: FaceletInfo[][],\n piece: CubieDef,\n orbitPieceIdx: number,\n ): Object3D {\n const cubieFaceletInfo: FaceletInfo[] = [];\n orbitFacelets.push(cubieFaceletInfo);\n const cubie = new Group();\n if (this.options.showFoundation) {\n const foundation = this.createCubieFoundation();\n cubie.add(foundation);\n this.experimentalFoundationMeshes.push(foundation);\n }\n for (let i = 0; i < piece.stickerFaces.length; i++) {\n const sticker = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n false,\n );\n const faceletInfo: FaceletInfo = {\n faceIdx: piece.stickerFaces[i],\n facelet: sticker,\n };\n cubie.add(sticker);\n if (this.options.hintFacelets === \"floating\") {\n const hintSticker = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n true,\n );\n cubie.add(hintSticker);\n faceletInfo.hintFacelet = hintSticker;\n this.experimentalHintStickerMeshes.push(hintSticker);\n }\n\n if (\n this.options.experimentalStickeringMask?.specialBehaviour ===\n \"picture\" &&\n pictureStickerCoords[orbit] &&\n pictureStickerCoords[orbit][orbitPieceIdx] &&\n pictureStickerCoords[orbit][orbitPieceIdx][i]\n ) {\n const [rotate, offsetX, offsetY] =\n pictureStickerCoords[orbit][orbitPieceIdx][i];\n (async () => {\n const addImageSticker = async (hint: boolean) => {\n const texture: Texture = await (hint\n ? this.hintSprite\n : this.sprite);\n\n const mesh = this.createSticker(\n axesInfo[cubieStickerOrder[i]],\n axesInfo[piece.stickerFaces[i]],\n hint,\n );\n mesh.material = new MeshBasicMaterial({\n map: texture,\n side: hint ? BackSide : DoubleSide,\n transparent: true,\n });\n\n const x1 = offsetX / 12;\n const x2 = (offsetX + 1) / 12;\n const y1 = offsetY / 9;\n const y2 = (offsetY + 1) / 9;\n\n let v1 = new Vector2(x1, y1);\n let v2 = new Vector2(x1, y2);\n let v3 = new Vector2(x2, y2);\n let v4 = new Vector2(x2, y1);\n\n switch (rotate) {\n case 1: {\n [v1, v2, v3, v4] = [v2, v3, v4, v1];\n break;\n }\n case 2: {\n [v1, v2, v3, v4] = [v3, v4, v1, v2];\n break;\n }\n case 3: {\n [v1, v2, v3, v4] = [v4, v1, v2, v3];\n break;\n }\n }\n mesh.geometry.setAttribute(\n \"uv\",\n new BufferAttribute(\n new Float32Array([\n v3.x,\n v3.y,\n v2.x,\n v2.y,\n v4.x,\n v4.y,\n v2.x,\n v2.y,\n v1.x,\n v1.y,\n v4.x,\n v4.y,\n ]),\n 2,\n ),\n );\n cubie.add(mesh);\n };\n // const delay: number = ({\n // CENTERS: 1000,\n // EDGES: 2000,\n // CORNERS: 3500,\n // } as Record<string, number>)[orbit];\n // if (orbit === \"CENTERS\" && orbitPieceIdx === 5) {\n addImageSticker(true);\n addImageSticker(false);\n // } else {\n // await this.sprite;\n // await this.hintSprite;\n // setTimeout(\n // () => addImageSticker(true),\n // delay + orbitPieceIdx * 100,\n // );\n // setTimeout(\n // () => addImageSticker(false),\n // delay + orbitPieceIdx * 100,\n // );\n // }\n })();\n }\n\n cubieFaceletInfo.push(faceletInfo);\n }\n cubie.matrix.copy(piece.matrix);\n cubie.matrixAutoUpdate = false;\n this.add(cubie);\n return cubie;\n }\n\n // TODO: Support creating only the outward-facing parts?\n private createCubieFoundation(): Mesh {\n const box = sharedCubieFoundationGeometry();\n return new Mesh(\n box,\n this.options.experimentalStickeringMask?.specialBehaviour === \"picture\"\n ? blackMesh\n : blackTranslucentMesh,\n );\n }\n\n private createSticker(\n posAxisInfo: AxisInfo,\n materialAxisInfo: AxisInfo,\n isHint: boolean,\n ): Mesh {\n const geo =\n this.options.experimentalStickeringMask?.specialBehaviour === \"picture\"\n ? newStickerGeometry()\n : isHint\n ? this.#sharedHintStickerGeometry()\n : sharedStickerGeometry();\n const stickerMesh = new Mesh(\n geo,\n isHint\n ? materialAxisInfo.hintStickerMaterial.regular\n : materialAxisInfo.stickerMaterial.regular,\n );\n stickerMesh.setRotationFromEuler(posAxisInfo.fromZ);\n stickerMesh.position.copy(posAxisInfo.vector);\n stickerMesh.position.multiplyScalar(\n isHint\n ? this.options.experimentalStickeringMask?.specialBehaviour ===\n \"picture\"\n ? EXPERIMENTAL_PICTURE_CUBE_HINT_ELEVATION\n : cubieDimensions.hintStickerElevation\n : cubieDimensions.stickerElevation,\n );\n return stickerMesh;\n }\n\n /** @deprecated */\n experimentalSetFoundationOpacity(opacity: number): void {\n (\n this.experimentalFoundationMeshes[0].material as MeshBasicMaterial\n ).opacity = opacity;\n }\n\n /** @deprecated */\n experimentalSetFaceletScale(faceletScale: FaceletScale): void {\n this.options.faceletScale = faceletScale;\n for (const orbitInfo of Object.values(this.kpuzzleFaceletInfo)) {\n for (const pieceInfo of orbitInfo) {\n for (const faceletInfo of pieceInfo) {\n faceletInfo.facelet.scale.setScalar(getFaceletScale(this.options));\n faceletInfo.hintFacelet?.scale.setScalar(\n getFaceletScale(this.options),\n );\n // faceletInfo.facelet.setRotationFromAxisAngle(new Vector3(0, 1, 0), 0);\n // faceletInfo.facelet.rotateOnAxis(new Vector3(1, 0, 1), TAU / 6);\n }\n }\n }\n }\n\n // /** @deprecated */\n // experimentalSetCenterStickerWidth(width: number): void {\n // for (const orbitInfo of [this.kpuzzleFaceletInfo[\"CENTERS\"]]) {\n // for (const pieceInfo of orbitInfo) {\n // for (const faceletInfo of pieceInfo) {\n // faceletInfo.facelet.scale.setScalar(\n // width / getStickerScale(this.options),\n // );\n // // faceletInfo.facelet.setRotationFromAxisAngle(new Vector3(0, 1, 0), 0);\n // // faceletInfo.facelet.rotateOnAxis(new Vector3(1, 0, 1), TAU / 6);\n // }\n // }\n // }\n // }\n\n private ease(fraction: number): number {\n return smootherStep(fraction);\n }\n}\n", "export function smootherStep(x: number): number {\n return x * x * x * (10 - x * (15 - 6 * x));\n}\n", "import {\n BufferAttribute,\n BufferGeometry,\n Color,\n DoubleSide,\n Euler,\n FrontSide,\n Group,\n Material,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n Texture,\n Vector3,\n} from \"three\";\nimport { Move } from \"../../../../alg\";\nimport type { KPuzzle, KTransformation } from \"../../../../kpuzzle\";\nimport type {\n StickerDat,\n StickerDatAxis,\n StickerDatSticker,\n} from \"../../../../puzzle-geometry\";\nimport type { TextureMapper } from \"../../../../puzzle-geometry/PuzzleGeometry\";\nimport {\n ExperimentalFaceletMeshStickeringMask,\n experimentalGetFaceletStickeringMask,\n ExperimentalStickeringMask,\n} from \"../../../../puzzles/cubing-private\";\nimport type { PuzzlePosition } from \"../../../controllers/AnimationTypes\";\nimport { smootherStep } from \"../../../controllers/easing\";\nimport type { HintFaceletStyle } from \"../../../model/props/puzzle/display/HintFaceletProp\";\nimport { TAU } from \"../TAU\";\nimport type { Twisty3DPuzzle } from \"./Twisty3DPuzzle\";\n\nconst foundationMaterial = new MeshBasicMaterial({\n side: DoubleSide,\n color: 0x000000,\n});\nconst invisMaterial = new MeshBasicMaterial({\n visible: false,\n});\nconst basicStickerMaterial = new MeshBasicMaterial({\n vertexColors: true,\n});\n\nfunction dist(coords: number[], a: number, b: number): number {\n return Math.hypot(\n coords[3 * a] - coords[3 * b],\n coords[3 * a + 1] - coords[3 * b + 1],\n coords[3 * a + 2] - coords[3 * b + 2],\n );\n}\n\nfunction triarea(coords: number[], a: number, b: number, c: number): number {\n const ab = dist(coords, a, b);\n const bc = dist(coords, b, c);\n const ac = dist(coords, a, c);\n const p = (ab + bc + ac) / 2;\n return Math.sqrt(p * (p - ab) * (p - bc) * (p - ac));\n}\n\nfunction polyarea(coords: number[]): number {\n let sum = 0;\n for (let i = 2; 3 * i < coords.length; i++) {\n sum += triarea(coords, 0, 1, i);\n }\n return sum;\n}\n\nfunction normalize(r: number[]): number[] {\n const m = Math.hypot(r[0], r[1], r[2]);\n r[0] /= m;\n r[1] /= m;\n r[2] /= m;\n return r;\n}\n\nfunction cross(a: number[], b: number[]): number[] {\n const r = new Array<number>(3);\n r[0] = a[1] * b[2] - a[2] * b[1];\n r[1] = a[2] * b[0] - a[0] * b[2];\n r[2] = a[0] * b[1] - a[1] * b[0];\n return r;\n}\n\nfunction normal(c: number[]): number[] {\n const a: number[] = [c[3] - c[0], c[4] - c[1], c[5] - c[2]];\n const b: number[] = [c[6] - c[3], c[7] - c[4], c[8] - c[5]];\n const r = cross(a, b);\n return normalize(r);\n}\n\nfunction trimEdges(face: number[], tr: number): number[] {\n const r: number[] = [];\n const A: number[] = new Array(3);\n const B: number[] = new Array(3);\n for (let iter = 1; iter < 10; iter++) {\n for (let i = 0; i < face.length; i += 3) {\n const pi = (i + face.length - 3) % face.length;\n const ni = (i + 3) % face.length;\n for (let k = 0; k < 3; k++) {\n A[k] = face[pi + k] - face[i + k];\n B[k] = face[ni + k] - face[i + k];\n }\n const alen = Math.hypot(A[0], A[1], A[2]);\n const blen = Math.hypot(B[0], B[1], B[2]);\n for (let k = 0; k < 3; k++) {\n A[k] /= alen;\n B[k] /= blen;\n }\n const d = A[0] * B[0] + A[1] * B[1] + A[2] * B[2];\n const m = tr / Math.sqrt(1 - d * d);\n for (let k = 0; k < 3; k++) {\n r[i + k] = face[i + k] + (A[k] + B[k]) * m;\n }\n }\n let good = true;\n for (let i = 0; good && i < r.length; i += 3) {\n const ni = (i + 3) % face.length;\n let t = 0;\n for (let k = 0; k < 3; k++) {\n const a = face[ni + k] - face[i + k];\n const b = r[ni + k] - r[i + k];\n t += a * b;\n }\n if (t <= 0) {\n good = false;\n }\n }\n if (good) {\n return r;\n }\n tr /= 2;\n }\n return face;\n}\n\nclass Filler {\n pos: number;\n ipos: number;\n vertices: Float32Array;\n colors: Uint8Array;\n uvs?: Float32Array;\n ind: Uint8Array;\n constructor(public sz: number, public tm: TextureMapper) {\n this.vertices = new Float32Array(9 * sz);\n this.uvs = undefined;\n this.colors = new Uint8Array(18 * sz);\n this.ind = new Uint8Array(sz);\n this.pos = 0;\n this.ipos = 0;\n }\n\n add(pt: number[], i: number, c: number) {\n this.vertices[this.pos] = pt[3 * i + 0];\n this.vertices[this.pos + 1] = pt[3 * i + 1];\n this.vertices[this.pos + 2] = pt[3 * i + 2];\n this.colors[this.pos] = c >> 16;\n this.colors[this.pos + 1] = (c >> 8) & 255;\n this.colors[this.pos + 2] = c & 255;\n this.pos += 3;\n }\n\n addUncolored(pt: number[], i: number) {\n this.vertices[this.pos] = pt[3 * i + 0];\n this.vertices[this.pos + 1] = pt[3 * i + 1];\n this.vertices[this.pos + 2] = pt[3 * i + 2];\n this.pos += 3;\n }\n\n setind(i: number) {\n this.ind[this.ipos++] = i;\n }\n\n makePoly(coords: number[], color: number, ind: number): void {\n const ncoords: number[] = coords;\n for (let g = 1; 3 * (g + 1) < ncoords.length; g++) {\n this.add(ncoords, 0, color);\n this.add(ncoords, g, color);\n this.add(ncoords, g + 1, color);\n this.setind(ind);\n }\n }\n\n setAttributes(geo: BufferGeometry) {\n geo.setAttribute(\"position\", new BufferAttribute(this.vertices, 3));\n // the geometry only needs the first half of the array\n const sa2 = this.colors.subarray(0, 9 * this.sz);\n geo.setAttribute(\"color\", new BufferAttribute(sa2, 3, true));\n }\n\n makeGroups(geo: BufferGeometry) {\n geo.clearGroups();\n for (let i = 0; i < this.ipos; ) {\n const si = i++;\n const iv = this.ind[si];\n while (this.ind[i] === iv) {\n i++;\n }\n geo.addGroup(3 * si, 3 * (i - si), iv);\n }\n }\n\n saveOriginalColors() {\n this.colors.copyWithin(this.pos, 0, this.pos);\n }\n}\n\nclass StickerDef {\n private origColor: number;\n private origColorStickeringMask: number;\n private faceColor: number;\n private texturePtr?: StickerDef = undefined;\n public twistVal: number = -1;\n public stickerStart: number;\n public stickerEnd: number;\n public hintStart: number;\n public hintEnd: number;\n public foundationStart: number;\n public foundationEnd: number;\n private isDup: boolean;\n private faceNum: number;\n constructor(\n filler: Filler,\n stickerDat: StickerDatSticker,\n trim: number,\n options?: {\n stickeringMask?: ExperimentalFaceletMeshStickeringMask;\n },\n ) {\n this.isDup = !!stickerDat.isDup;\n this.faceNum = stickerDat.face;\n this.stickerStart = filler.ipos;\n const sdColor = new Color(stickerDat.color).getHex();\n this.origColor = sdColor;\n this.origColorStickeringMask = sdColor;\n if (options?.stickeringMask) {\n this.setStickeringMask(filler, options.stickeringMask);\n }\n this.faceColor = sdColor;\n const coords = this.stickerCoords(stickerDat.coords, trim);\n filler.makePoly(coords, this.faceColor, this.isDup ? 4 : 0);\n this.stickerEnd = filler.ipos;\n }\n\n private stickerCoords(coords: number[], trim: number): number[] {\n return trimEdges(coords.slice(), trim);\n }\n\n private hintCoords(\n coords: number[],\n hintStickerHeightScale: number,\n trim: number,\n normal: number[],\n ): number[] {\n coords = this.stickerCoords(coords, trim); // pick up trim from stickers\n normal = normal.slice();\n for (let i = 0; i < 3; i++) {\n normal[i] *= 0.5 * hintStickerHeightScale;\n }\n const hCoords = new Array<number>(coords.length);\n for (let i = 0; 3 * i < coords.length; i++) {\n const j = coords.length / 3 - 1 - i;\n hCoords[3 * i] = coords[3 * j] + normal[0];\n hCoords[3 * i + 1] = coords[3 * j + 1] + normal[1];\n hCoords[3 * i + 2] = coords[3 * j + 2] + normal[2];\n }\n return hCoords;\n }\n\n private foundationCoords(coords: number[]): number[] {\n const ncoords = coords.slice();\n for (let i = 0; i < coords.length; i++) {\n ncoords[i] = coords[i] * 0.999;\n }\n return ncoords;\n }\n\n addHint(\n filler: Filler,\n stickerDat: StickerDatSticker,\n hintStickers: boolean,\n hintStickerHeightScale: number,\n trim: number,\n normal: number[],\n ): void {\n this.hintStart = filler.ipos;\n const coords = this.hintCoords(\n stickerDat.coords,\n hintStickerHeightScale,\n trim,\n normal,\n );\n filler.makePoly(\n coords,\n this.faceColor,\n hintStickers && !this.isDup ? 2 : 4,\n );\n this.hintEnd = filler.ipos;\n }\n\n public addFoundation(\n filler: Filler,\n stickerDat: StickerDatSticker,\n black: number,\n ) {\n this.foundationStart = filler.ipos;\n const coords = this.foundationCoords(stickerDat.coords);\n filler.makePoly(coords, black, this.isDup ? 4 : 6);\n this.foundationEnd = filler.ipos;\n }\n\n private setHintStickers(filler: Filler, hintStickers: boolean): void {\n const indv = this.isDup || !hintStickers ? 4 : 2;\n for (let i = this.hintStart; i < this.hintEnd; i++) {\n filler.ind[i] = indv | (filler.ind[i] & 1);\n }\n }\n\n setStickeringMask(\n filler: Filler,\n faceletMeshStickeringMask: ExperimentalFaceletMeshStickeringMask,\n ): void {\n let c = 0;\n switch (faceletMeshStickeringMask) {\n case \"regular\": {\n c = this.origColor;\n break;\n }\n case \"dim\": {\n if (this.origColor === 0xffffff) {\n c = 0xdddddd;\n } else {\n c = new Color(this.origColor).multiplyScalar(0.5).getHex();\n }\n break;\n }\n case \"oriented\": {\n c = 0xff88ff;\n break;\n }\n case \"ignored\": {\n c = 0x444444;\n break;\n }\n case \"invisible\":\n c = this.origColor;\n }\n this.origColorStickeringMask = c;\n for (let i = 9 * this.stickerStart; i < 9 * this.stickerEnd; i += 3) {\n filler.colors[filler.pos + i] = c >> 16;\n filler.colors[filler.pos + i + 1] = (c >> 8) & 255;\n filler.colors[filler.pos + i + 2] = c & 255;\n }\n for (let i = 9 * this.hintStart; i < 9 * this.hintEnd; i += 3) {\n filler.colors[filler.pos + i] = c >> 16;\n filler.colors[filler.pos + i + 1] = (c >> 8) & 255;\n filler.colors[filler.pos + i + 2] = c & 255;\n }\n this.setHintStickers(\n filler,\n faceletMeshStickeringMask !== \"invisible\" && !this.isDup,\n );\n }\n\n public addUVs(filler: Filler): void {\n const uvs = filler.uvs!;\n const vert = filler.vertices;\n const coords = new Array(3);\n for (let i = 3 * this.stickerStart; i < 3 * this.stickerEnd; i++) {\n coords[0] = vert[3 * i];\n coords[1] = vert[3 * i + 1];\n coords[2] = vert[3 * i + 2];\n const uv = filler.tm.getuv(this.faceNum, coords);\n uvs[2 * i] = uv[0];\n uvs[2 * i + 1] = uv[1];\n }\n for (let i = 3 * this.hintStart; i < 3 * this.hintEnd; i++) {\n coords[0] = vert[3 * i];\n coords[1] = vert[3 * i + 1];\n coords[2] = vert[3 * i + 2];\n const uv = filler.tm.getuv(this.faceNum, coords);\n uvs[2 * i] = uv[0];\n uvs[2 * i + 1] = uv[1];\n }\n }\n\n public setTexture(filler: Filler, sd: StickerDef): number {\n if (this.texturePtr === sd) {\n return 0;\n }\n this.texturePtr = sd;\n const sz = 6 * filler.sz;\n filler.uvs!.copyWithin(\n 6 * this.stickerStart,\n 6 * sd.stickerStart + sz,\n 6 * sd.stickerEnd + sz,\n );\n filler.uvs!.copyWithin(\n 6 * this.hintStart,\n 6 * sd.hintStart + sz,\n 6 * sd.hintEnd + sz,\n );\n return 1;\n }\n\n public setColor(filler: Filler, sd: StickerDef): number {\n const c = sd.origColorStickeringMask;\n if (this.faceColor !== c) {\n this.faceColor = c;\n const sz = filler.pos;\n filler.colors.copyWithin(\n 9 * this.stickerStart,\n 9 * sd.stickerStart + sz,\n 9 * sd.stickerEnd + sz,\n );\n filler.colors.copyWithin(\n 9 * this.hintStart,\n 9 * sd.hintStart + sz,\n 9 * sd.hintEnd + sz,\n );\n return 1;\n } else {\n return 0;\n }\n }\n}\n\nclass HitPlaneDef {\n public cubie: Group;\n private geo: BufferGeometry;\n constructor(hitface: any, tm: TextureMapper, stickerDat: StickerDat) {\n this.cubie = new Group();\n const coords = hitface.coords as number[];\n const filler = new Filler(coords.length / 3 - 2, tm);\n for (let g = 1; 3 * g + 3 < coords.length; g++) {\n filler.addUncolored(coords, 0);\n filler.addUncolored(coords, g);\n filler.addUncolored(coords, g + 1);\n }\n this.geo = new BufferGeometry();\n filler.setAttributes(this.geo);\n const obj = new Mesh(this.geo, invisMaterial);\n obj.userData.quantumMove = stickerDat.notationMapper.notationToExternal(\n new Move(hitface.name),\n );\n this.cubie.scale.setScalar(0.99);\n this.cubie.add(obj);\n }\n}\n\nclass AxisInfo {\n public axis: Vector3;\n public order: number;\n constructor(axisDat: StickerDatAxis) {\n const vec = axisDat.coordinates;\n this.axis = new Vector3(vec[0], vec[1], vec[2]);\n this.order = axisDat.order;\n }\n}\n\nexport interface PG3DOptions {\n stickeringMask?: ExperimentalStickeringMask;\n}\n\nconst DEFAULT_COLOR_FRACTION = 0.71;\nconst PG_SCALE = 0.5;\n\n// TODO: Split into \"scene model\" and \"view\".\n/*\n * PG3D uses a single geometry for the puzzle, with all the faces for\n * each sticker (including the foundation stickers) in a single\n * geometry. We use the materialIndex in the face to point to a\n * specific entry, which is either a colored sticker, invisible, or\n * black (foundation).\n *\n * To support general twisting of a subset of the puzzle, we then\n * instantiate this same geometry in two different meshes with two\n * distinct material arrays. One, the fixed mesh, has the material\n * array set up like: [colored, invisible, black, invisible].\n * The twisting mesh has the material array set up as\n * [invisible, colored, invislble, black]. When not twisted, the\n * two meshes are directly coincident, and the (shared) materialIndex\n * in each face points to a non-invisible material in exactly one of\n * the two meshes. When we decide to twist some cubies, we make\n * the cubies that move point to visible materials in the moving\n * mesh (which makes them point to invisible materials in the static\n * mesh). This way, we only need to rotate the moving mesh as a\n * single object---this should be very fast, and occur entirely in\n * the GPU. Unfortunately this doesn't quite work as fast as we'd\n * like because three.js makes a draw call every time we have a change\n * in the material index. By moving the foundation triangles separate\n * from the sticker triangles, we enhance the probability that many\n * triangles can be rendered in one call speeding up the render.\n * We also get some assistance from puzzleGeometry to try to keep\n * nearby stickers close to each other.\n */\nexport class PG3D extends Object3D implements Twisty3DPuzzle {\n private stickers: { [key: string]: StickerDef[][] };\n private axesInfo: { [key: string]: AxisInfo };\n\n private stickerTargets: Object3D[] = [];\n private controlTargets: Object3D[] = [];\n\n private movingObj: Object3D;\n private filler: Filler;\n private foundationBound: number; // before this: colored; after: black\n private fixedGeo: BufferGeometry;\n private lastPos: PuzzlePosition;\n private lastMoveTransformation: KTransformation;\n private hintMaterial: Material;\n private stickerMaterial: Material;\n private materialArray1: Material[];\n private materialArray2: Material[];\n private textured: boolean = false;\n private showHintStickers: boolean = false;\n private showFoundations: boolean = false;\n private hintMaterialDisposable: boolean;\n private stickerMaterialDisposable: boolean;\n\n #pendingStickeringUpdate: boolean = false;\n\n public isPG3DForTwisty3DPuzzleWrapper: true;\n\n constructor(\n private scheduleRenderCallback: () => void,\n private kpuzzle: KPuzzle,\n private stickerDat: StickerDat,\n enableFoundationOpt: boolean = false,\n enableHintStickersOpt: boolean = false,\n hintStickerHeightScale: number = 1,\n private faceletScale: \"auto\" | number = 1,\n private params: PG3DOptions = {},\n ) {\n super();\n if (stickerDat.stickers.length === 0) {\n throw Error(\"Reuse of stickerdat from pg; please don't do that.\");\n }\n this.hintMaterial = new MeshBasicMaterial({\n vertexColors: true,\n transparent: true,\n opacity: 0.5,\n });\n this.hintMaterialDisposable = true;\n this.stickerMaterial = basicStickerMaterial;\n this.stickerMaterialDisposable = false;\n this.axesInfo = {};\n const axesDef = this.stickerDat.axis;\n for (const axis of axesDef) {\n this.axesInfo[axis.quantumMove.family] = new AxisInfo(axis);\n }\n const stickers = this.stickerDat.stickers as any[];\n this.stickers = {};\n this.materialArray1 = new Array(8);\n this.materialArray2 = new Array(8);\n // TODO: the argument enableFoundationOpt really means, do we ever want to display\n // foundations. But it is presently *used* to mean, show foundations initially\n // (and maybe setStickeringMask changes this). So for now we set up the\n // show flag from the enable flag, and turn on the enable flag so later when it's\n // used we will get the foundations. What this means is the geometry always \"pays\"\n // for foundations, even if they aren't displayed.\n this.showFoundation(enableFoundationOpt);\n enableFoundationOpt = true;\n let triangleCount = 0;\n const multiplier = 3;\n for (const sticker of stickers) {\n const sides = sticker.coords.length / 3;\n triangleCount += multiplier * (sides - 2);\n }\n const filler = new Filler(triangleCount, stickerDat.textureMapper);\n const black = 0;\n const normals: number[][] = [];\n let totArea = 0;\n for (const f of stickerDat.faces) {\n normals.push(normal(f.coords));\n totArea += polyarea(f.coords);\n }\n const colorfrac =\n faceletScale !== \"auto\"\n ? faceletScale * faceletScale\n : DEFAULT_COLOR_FRACTION;\n let nonDupStickers = 0;\n for (const sticker of stickers) {\n if (!sticker.isDup) {\n nonDupStickers++;\n }\n }\n const trim =\n (Math.sqrt(totArea / nonDupStickers) * (1 - Math.sqrt(colorfrac))) / 2;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n if (!this.stickers[orbit]) {\n this.stickers[orbit] = [];\n }\n if (!this.stickers[orbit][ori]) {\n this.stickers[orbit][ori] = [];\n }\n const options: {\n stickeringMask?: ExperimentalFaceletMeshStickeringMask;\n } = {};\n if (params.stickeringMask) {\n options.stickeringMask = experimentalGetFaceletStickeringMask(\n params.stickeringMask,\n orbit,\n ord,\n ori,\n false,\n );\n }\n const stickerdef = new StickerDef(filler, sticker, trim, options);\n this.stickers[orbit][ori][ord] = stickerdef;\n }\n // TODO: the argument enableHintStickersOpt really means, do we ever want to display\n // hint stickers. But it is presently *used* to mean, show hint stickers initially\n // (and maybe setStickeringMask changes this). So for now we set up the\n // show flag from the enable flag, and turn on the enable flag so later when it's\n // used we will get the hint stickers. What this means is the geometry always \"pays\"\n // for hint stickers, even if they aren't displayed.\n this.showHintStickers = enableHintStickersOpt;\n enableHintStickersOpt = true;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n this.stickers[orbit][ori][ord].addHint(\n filler,\n sticker,\n enableHintStickersOpt,\n hintStickerHeightScale,\n trim,\n normals[sticker.face],\n );\n }\n this.foundationBound = filler.ipos;\n for (const sticker of stickers) {\n const orbit = sticker.orbit;\n const ord = sticker.ord;\n const ori = sticker.ori;\n if (enableFoundationOpt) {\n this.stickers[orbit][ori][ord].addFoundation(filler, sticker, black);\n }\n }\n const fixedGeo = new BufferGeometry();\n filler.setAttributes(fixedGeo);\n filler.makeGroups(fixedGeo);\n const obj = new Mesh(fixedGeo, this.materialArray1);\n obj.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(obj);\n const obj2 = new Mesh(fixedGeo, this.materialArray2);\n obj2.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(obj2);\n const hitfaces = this.stickerDat.faces as any[];\n this.movingObj = obj2;\n this.fixedGeo = fixedGeo;\n this.filler = filler;\n for (const hitface of hitfaces) {\n const facedef = new HitPlaneDef(\n hitface,\n stickerDat.textureMapper,\n this.stickerDat,\n );\n facedef.cubie.scale.set(PG_SCALE, PG_SCALE, PG_SCALE);\n this.add(facedef.cubie);\n this.controlTargets.push(facedef.cubie.children[0]);\n }\n filler.saveOriginalColors();\n stickerDat.stickers = []; // don't need these anymore\n this.updateMaterialArrays();\n /*\n this.experimentalUpdateTexture(\n true,\n new TextureLoader().load(\n \"/experiments.cubing.net/cubing.js/twisty/mkbhd-sprite-red.png\",\n ),\n new TextureLoader().load(\n \"/experiments.cubing.net/cubing.js/twisty/mkbhd-sprite-red-hint.png\",\n ),\n );\n */\n }\n\n public dispose(): void {\n if (this.fixedGeo) {\n this.fixedGeo.dispose();\n }\n if (this.stickerMaterialDisposable) {\n this.stickerMaterial.dispose();\n this.stickerMaterial = basicStickerMaterial;\n this.stickerMaterialDisposable = false;\n }\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterial = basicStickerMaterial;\n this.hintMaterialDisposable = false;\n }\n }\n\n public experimentalGetStickerTargets(): Object3D[] {\n return this.stickerTargets;\n }\n\n public experimentalGetControlTargets(): Object3D[] {\n return this.controlTargets;\n }\n\n #isValidMove(move: Move): boolean {\n try {\n this.kpuzzle.moveToTransformation(move);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n getClosestMoveToAxis(\n point: Vector3,\n transformations: {\n invert: boolean;\n depth?: \"secondSlice\" | \"rotation\" | \"none\";\n },\n ): { move: Move; order: number } | null {\n let closestMove: Move | null = null;\n let closestMoveDotProduct: number = 0;\n\n let modify: (move: Move) => Move = (m) => m;\n switch (transformations.depth) {\n case \"secondSlice\": {\n modify = (m: Move) => m.modified({ innerLayer: 2 });\n break;\n }\n case \"rotation\": {\n modify = (m: Move) => m.modified({ family: `${m.family}v` });\n break;\n }\n }\n\n for (const axis of this.stickerDat.axis) {\n const product = point.dot(new Vector3(...axis.coordinates));\n if (product > closestMoveDotProduct) {\n const modified = this.stickerDat.notationMapper.notationToExternal(\n modify(axis.quantumMove),\n );\n if (!modified) {\n continue;\n }\n if (this.#isValidMove(modified)) {\n closestMoveDotProduct = product;\n closestMove = modified;\n }\n }\n }\n\n if (!closestMove) {\n return null;\n }\n\n if (transformations.invert) {\n closestMove = closestMove.invert();\n }\n const order = this.kpuzzle\n .moveToTransformation(closestMove)\n .repetitionOrder();\n return { move: closestMove, order }; // TODO: push this down\n }\n\n setStickeringMask(stickeringMask: ExperimentalStickeringMask): void {\n this.params.stickeringMask = stickeringMask;\n if (stickeringMask.specialBehaviour !== \"picture\") {\n for (const orbitName in this.kpuzzle.definition.orbits) {\n const { numPieces, numOrientations: orientations } =\n this.kpuzzle.definition.orbits[orbitName];\n for (let pieceIdx = 0; pieceIdx < numPieces; pieceIdx++) {\n for (let faceletIdx = 0; faceletIdx < orientations; faceletIdx++) {\n const faceletStickeringMask = experimentalGetFaceletStickeringMask(\n stickeringMask,\n orbitName,\n pieceIdx,\n faceletIdx,\n false,\n );\n const stickerDef = this.stickers[orbitName][faceletIdx][pieceIdx];\n if (\n this.textured &&\n this.hintMaterialDisposable &&\n faceletStickeringMask === \"invisible\"\n ) {\n // ignore \"invisible\" if textured hints\n } else {\n stickerDef.setStickeringMask(this.filler, faceletStickeringMask);\n }\n }\n }\n }\n }\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n }\n\n public onPositionChange(p: PuzzlePosition): void {\n const transformation = p.state.experimentalToTransformation();\n if (!transformation) {\n throw new Error(\"indistinguishable pieces are not supported by PG3D yet\");\n }\n const noRotation = new Euler();\n this.movingObj.rotation.copy(noRotation);\n let colormods = 0;\n const filler = this.filler;\n const ind = filler.ind;\n if (\n !this.lastPos ||\n this.#pendingStickeringUpdate ||\n !this.lastPos.state\n .experimentalToTransformation()!\n .isIdentical(transformation)\n ) {\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const pos2 = transformation.transformationData[orbit];\n const orin = pieces.length;\n if (orin === 1) {\n const pieces2 = pieces[0];\n for (let i = 0; i < pieces2.length; i++) {\n const ni = pos2.permutation[i];\n if (this.textured) {\n colormods += pieces2[i].setTexture(filler, pieces2[ni]);\n } else {\n colormods += pieces2[i].setColor(filler, pieces2[ni]);\n }\n }\n } else {\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (let i = 0; i < pieces2.length; i++) {\n const nori = (ori + orin - pos2.orientation[i]) % orin;\n const ni = pos2.permutation[i];\n if (this.textured) {\n colormods += pieces2[i].setTexture(filler, pieces[nori][ni]);\n } else {\n colormods += pieces2[i].setColor(filler, pieces[nori][ni]);\n }\n }\n }\n }\n }\n this.lastPos = p;\n }\n let vismods = 0;\n for (const moveProgress of p.movesInProgress) {\n const externalMove = moveProgress.move;\n // TODO: unswizzle goes external to internal, and so does the call after that\n // and so does the stateForBlockMove call\n const unswizzled = this.stickerDat.unswizzle(externalMove);\n if (!unswizzled) {\n // bad times, but let's not throw.\n return;\n }\n\n const move = externalMove;\n let quantumTransformation;\n try {\n quantumTransformation = this.kpuzzle.moveToTransformation(\n move.modified({ amount: 1 }),\n );\n } catch (e) {\n // couldn't get it from a quantum of the external move. Let's try\n // getting it from a quantum of the internal move, translated back\n // to external so we can get the transformation. This happens for\n // instance when working with \"x2\" on megaminx.\n const move1 = this.stickerDat.notationMapper.notationToInternal(move);\n if (move1) {\n const move2 = this.stickerDat.notationMapper.notationToExternal(\n move1.modified({ amount: 1 }),\n );\n if (move2) {\n quantumTransformation = this.kpuzzle.moveToTransformation(move2);\n }\n }\n if (!quantumTransformation) {\n console.log(e);\n throw e;\n }\n }\n const ax = this.axesInfo[unswizzled.family];\n const turnNormal = ax.axis;\n const angle =\n (-this.ease(moveProgress.fraction) *\n moveProgress.direction *\n unswizzled.amount *\n TAU) /\n ax.order;\n this.movingObj.rotateOnAxis(turnNormal, angle);\n if (this.lastMoveTransformation !== quantumTransformation) {\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const orin = pieces.length;\n const bmv = quantumTransformation.transformationData[orbit];\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (let i = 0; i < pieces2.length; i++) {\n const p2 = pieces2[i];\n const ni = bmv.permutation[i];\n let tv = 0;\n if (ni !== i || bmv.orientation[i] !== 0) {\n tv = 1;\n }\n if (tv !== p2.twistVal) {\n if (tv) {\n for (let j = p2.stickerStart; j < p2.stickerEnd; j++) {\n ind[j] |= 1;\n }\n for (let j = p2.hintStart; j < p2.hintEnd; j++) {\n ind[j] |= 1;\n }\n for (let j = p2.foundationStart; j < p2.foundationEnd; j++) {\n ind[j] |= 1;\n }\n } else {\n for (let j = p2.stickerStart; j < p2.stickerEnd; j++) {\n ind[j] &= ~1;\n }\n for (let j = p2.hintStart; j < p2.hintEnd; j++) {\n ind[j] &= ~1;\n }\n for (let j = p2.foundationStart; j < p2.foundationEnd; j++) {\n ind[j] &= ~1;\n }\n }\n p2.twistVal = tv;\n vismods++;\n }\n }\n }\n }\n this.lastMoveTransformation = quantumTransformation;\n }\n }\n if (this.#pendingStickeringUpdate || vismods) {\n this.filler.makeGroups(this.fixedGeo);\n }\n if (this.#pendingStickeringUpdate || colormods) {\n if (this.textured) {\n (this.fixedGeo.getAttribute(\"uv\") as BufferAttribute).updateRange = {\n offset: 0,\n count: 6 * this.foundationBound,\n };\n (\n this.fixedGeo.getAttribute(\"uv\") as BufferAttribute\n ).needsUpdate = true;\n }\n if (this.#pendingStickeringUpdate || !this.textured) {\n (this.fixedGeo.getAttribute(\"color\") as BufferAttribute).updateRange = {\n offset: 0,\n count: 9 * this.foundationBound,\n };\n (\n this.fixedGeo.getAttribute(\"color\") as BufferAttribute\n ).needsUpdate = true;\n }\n }\n this.scheduleRenderCallback();\n this.#pendingStickeringUpdate = false;\n }\n\n private ease(fraction: number): number {\n return smootherStep(fraction);\n }\n\n private showHintFacelets(v: boolean) {\n this.showHintStickers = v;\n }\n\n private updateMaterialArrays() {\n for (let i = 0; i < 8; i++) {\n this.materialArray1[i] = invisMaterial;\n this.materialArray2[i] = invisMaterial;\n }\n this.materialArray1[0] = this.stickerMaterial;\n this.materialArray2[1] = this.stickerMaterial;\n if (this.showHintStickers) {\n this.materialArray1[2] = this.hintMaterial;\n this.materialArray2[3] = this.hintMaterial;\n } else {\n this.materialArray1[2] = invisMaterial;\n this.materialArray2[3] = invisMaterial;\n }\n if (this.showFoundations) {\n this.materialArray1[6] = foundationMaterial;\n this.materialArray2[7] = foundationMaterial;\n } else {\n this.materialArray1[6] = invisMaterial;\n this.materialArray2[7] = invisMaterial;\n }\n }\n\n private showFoundation(v: boolean) {\n this.showFoundations = v;\n }\n\n private setHintStickerOpacity(v: number): void {\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterialDisposable = false;\n }\n if (v === 0) {\n this.hintMaterial = invisMaterial;\n } else if (v === 1) {\n this.hintMaterial = this.stickerMaterial;\n } else {\n this.hintMaterial = new MeshBasicMaterial({\n vertexColors: true,\n transparent: true,\n opacity: v,\n });\n this.hintMaterialDisposable = true;\n }\n }\n\n public experimentalUpdateOptions(options: {\n showMainStickers?: boolean;\n hintFacelets?: HintFaceletStyle;\n showFoundation?: boolean; // TODO: better name\n hintStickerOpacity?: number;\n faceletScale?: \"auto\" | number;\n }): void {\n if (options.hintFacelets !== undefined) {\n this.showHintFacelets(options.hintFacelets !== \"none\");\n }\n if (options.showFoundation !== undefined) {\n this.showFoundation(options.showFoundation);\n }\n if (options.hintStickerOpacity !== undefined) {\n this.setHintStickerOpacity(options.hintStickerOpacity);\n }\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n if (\n typeof options.faceletScale !== \"undefined\" &&\n options.faceletScale !== this.faceletScale\n ) {\n console.warn(\n \"Dynamic facelet scale is not yet supported for PG3D. For now, re-create the TwistyPlayer to change the facelet scale.\",\n );\n }\n this.updateMaterialArrays();\n this.scheduleRenderCallback();\n }\n\n private adduvs() {\n const filler = this.filler;\n if (filler.uvs) {\n return;\n }\n this.filler.uvs = new Float32Array(12 * filler.sz);\n for (const orbit in this.stickers) {\n const pieces = this.stickers[orbit];\n const orin = pieces.length;\n for (let ori = 0; ori < orin; ori++) {\n const pieces2 = pieces[ori];\n for (const piece2 of pieces2) {\n piece2.addUVs(this.filler);\n }\n }\n }\n filler.uvs!.copyWithin(6 * filler.sz, 0, 6 * filler.sz);\n const sa1 = filler.uvs!.subarray(0, 6 * filler.sz);\n this.fixedGeo.setAttribute(\"uv\", new BufferAttribute(sa1, 2, true));\n }\n\n public experimentalUpdateTexture(\n enabled: boolean,\n stickerTexture?: Texture | null,\n hintTexture?: Texture | null,\n ) {\n if (!stickerTexture) {\n enabled = false;\n }\n if (enabled && !this.filler.uvs) {\n this.adduvs();\n }\n this.textured = enabled;\n if (this.stickerMaterialDisposable) {\n this.stickerMaterial.dispose();\n this.stickerMaterialDisposable = false;\n }\n if (enabled) {\n this.stickerMaterial = new MeshBasicMaterial({\n map: stickerTexture,\n side: FrontSide,\n transparent: false,\n });\n this.stickerMaterialDisposable = true;\n } else {\n this.stickerMaterial = basicStickerMaterial;\n }\n if (this.hintMaterialDisposable) {\n this.hintMaterial.dispose();\n this.hintMaterialDisposable = false;\n }\n if (enabled) {\n this.hintMaterial = new MeshBasicMaterial({\n map: hintTexture,\n side: FrontSide,\n transparent: true,\n });\n this.hintMaterialDisposable = true;\n } else {\n this.hintMaterial = basicStickerMaterial;\n }\n if (enabled) {\n this.showHintFacelets(hintTexture !== null);\n }\n this.updateMaterialArrays();\n this.#pendingStickeringUpdate = true;\n if (this.lastPos) {\n this.onPositionChange(this.lastPos);\n }\n this.scheduleRenderCallback();\n }\n}\n", "import { cube3x3x3, PuzzleLoader } from \"../../../puzzles\";\nimport type { HintFaceletStyle } from \"../../model/props/puzzle/display/HintFaceletProp\";\nimport type { FaceletScale } from \"../../model/props/puzzle/display/FaceletScaleProp\";\nimport { Cube3D, Cube3DOptions } from \"../../views/3D/puzzles/Cube3D\";\nimport { PG3D } from \"../../views/3D/puzzles/PG3D\";\n\n// Mangled to avoid autocompleting.\n// This must not be imported directly.\nexport * as T3I from \"three\";\nexport { Cube3D } from \"../../views/3D/puzzles/Cube3D\";\nexport { PG3D } from \"../../views/3D/puzzles/PG3D\";\nexport { Twisty3DScene } from \"../../views/3D/Twisty3DScene\";\n\nexport async function cube3DShim(\n renderCallback: () => void,\n options?: Cube3DOptions,\n): Promise<Cube3D> {\n return new Cube3D(await cube3x3x3.kpuzzle(), renderCallback, options);\n}\n\n// TODO: take loader?\nexport async function pg3dShim(\n renderCallback: () => void,\n puzzleLoader: PuzzleLoader,\n hintFacelets: HintFaceletStyle,\n faceletScale: FaceletScale,\n): Promise<PG3D> {\n return new PG3D(\n renderCallback,\n await puzzleLoader.kpuzzle(),\n (await puzzleLoader.pg!()).get3d(),\n true,\n hintFacelets === \"floating\",\n undefined,\n faceletScale,\n );\n}\n", "import type { Scene as ThreeScene } from \"three\";\nimport { THREEJS } from \"../../heavy-code-imports/3d\";\nimport type { Twisty3DPuzzle } from \"./puzzles/Twisty3DPuzzle\";\nimport type { Twisty3DRenderTarget } from \"./Twisty3DRenderTarget\";\n\nexport class Twisty3DScene implements Twisty3DRenderTarget {\n private renderTargets: Set<Twisty3DRenderTarget> = new Set();\n public twisty3Ds: Set<Twisty3DPuzzle> = new Set();\n\n threeJSScene: Promise<ThreeScene> = (async () =>\n new (await THREEJS).Scene())();\n constructor() {}\n\n addRenderTarget(renderTarget: Twisty3DRenderTarget): void {\n this.renderTargets.add(renderTarget);\n }\n\n scheduleRender(): void {\n for (const renderTarget of this.renderTargets) {\n renderTarget.scheduleRender();\n }\n }\n\n async addTwisty3DPuzzle(twisty3DPuzzle: Twisty3DPuzzle): Promise<void> {\n this.twisty3Ds.add(twisty3DPuzzle);\n (await this.threeJSScene).add(twisty3DPuzzle);\n // TODO: scheduleRender?\n }\n\n async removeTwisty3DPuzzle(twisty3DPuzzle: Twisty3DPuzzle): Promise<void> {\n this.twisty3Ds.delete(twisty3DPuzzle);\n (await this.threeJSScene).remove(twisty3DPuzzle);\n // TODO: scheduleRender?\n }\n\n async clearPuzzles(): Promise<void> {\n for (const puz of this.twisty3Ds) {\n (await this.threeJSScene).remove(puz);\n }\n this.twisty3Ds.clear();\n // TODO: scheduleRender?\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["r", "stickeringMask", "BufferAttribute", "BufferGeometry", "DoubleSide", "Euler", "FrontSide", "Group", "Mesh", "MeshBasicMaterial", "Object3D", "Vector3", "MeshBasicMaterial", "DoubleSide", "r", "face", "t", "BufferAttribute", "normal", "Group", "BufferGeometry", "Mesh", "AxisInfo", "Vector3", "Object3D", "Euler", "FrontSide"]
7
7
  }
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  Alg
3
- } from "./chunk-ELZ5WICP.js";
3
+ } from "./chunk-VZP3KFTU.js";
4
4
 
5
- // src/cubing/vendor/twsearch/index.js
6
- console.info("Loading twsearch v0.3.2-1-g8985a950");
5
+ // src/cubing/vendor/mpl/twsearch/index.js
6
+ console.info("Loading twsearch v0.4.0");
7
7
  async function importOnce() {
8
- const fn = (await import("./twsearch-PTN3QM26-XSTDBYFP.js")).default;
8
+ const fn = (await import("./twsearch-VUC3P72V-BNSTYRDR.js")).default;
9
9
  return await fn();
10
10
  }
11
11
  var cachedEmscriptenModule = null;
@@ -116,6 +116,7 @@ function serializeDefToTws(kpuzzle, options) {
116
116
  );
117
117
  }
118
118
  }
119
+ console.log(outputLines.join("\n"));
119
120
  return outputLines.join("\n");
120
121
  }
121
122
  export {
@@ -127,4 +128,4 @@ export {
127
128
  solveScramble,
128
129
  solveState
129
130
  };
130
- //# sourceMappingURL=twsearch-T6KOUE6W.js.map
131
+ //# sourceMappingURL=twsearch-H72D4ZDN.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/vendor/mpl/twsearch/index.js"],
4
+ "sourcesContent": ["console.info(\"Loading twsearch v0.4.0\");\n// src/js/api.ts\nimport { Alg } from \"../../../alg\";\nasync function importOnce() {\n const fn = (await import(\"./twsearch-VUC3P72V.js\")).default;\n return await fn();\n}\nvar cachedEmscriptenModule = null;\nasync function emscriptenModule() {\n return cachedEmscriptenModule ?? (cachedEmscriptenModule = importOnce());\n}\nfunction cwrap(fn, returnType, argTypes, processReturnValue = (v) => v) {\n const wrapped = (async () => (await emscriptenModule()).cwrap(fn, returnType, argTypes))();\n return async (...args) => {\n return processReturnValue((await wrapped)(...args));\n };\n}\nvar NoSolutionError = class extends Error {\n};\nfunction parseResult(s) {\n if (s === \"--no solution--\") {\n throw new NoSolutionError(\"\");\n }\n return Alg.fromString(s);\n}\nvar stringArg = [\"string\"];\nvar setArg = cwrap(\n \"w_arg\",\n \"void\",\n stringArg\n);\nvar setKPuzzleDefString = cwrap(\n \"w_setksolve\",\n \"void\",\n stringArg\n);\nvar solveScramble = cwrap(\n \"w_solvescramble\",\n \"string\",\n stringArg,\n parseResult\n);\nvar solveState = cwrap(\n \"w_solveposition\",\n \"string\",\n stringArg,\n parseResult\n);\n\n// src/js/serialize.ts\nvar BLANK_LINE = \"\";\nvar END = \"End\";\nfunction sanitize(s) {\n return s.replaceAll(/[^A-Za-z0-9]/g, \"_\");\n}\nfunction serializeKTransformationDataToTws(name, t, forScramble = false) {\n const outputLines = [];\n outputLines.push(\n `${forScramble ? \"ScrambleState\" : \"MoveTransformation\"} ${sanitize(name)}`\n );\n for (const [orbitName, orbitData] of Object.entries(t)) {\n outputLines.push(sanitize(orbitName));\n outputLines.push(orbitData.permutation.join(\" \"));\n outputLines.push(orbitData.orientation.join(\" \"));\n }\n outputLines.push(END);\n outputLines.push(BLANK_LINE);\n return outputLines.join(\"\\n\");\n}\nfunction serializeDefToTws(kpuzzle, options) {\n let outputLines = [];\n const def = kpuzzle.definition;\n outputLines.push(`Name ${sanitize(def.name ?? \"CustomPuzzle\")}`);\n outputLines.push(BLANK_LINE);\n for (const [orbitName, orbitInfo] of Object.entries(def.orbits)) {\n outputLines.push(\n `Set ${sanitize(orbitName)} ${orbitInfo.numPieces} ${orbitInfo.numOrientations}`\n );\n }\n outputLines.push(BLANK_LINE);\n outputLines.push(\"StartState\");\n if (options?.startState) {\n outputLines.push(options?.startState);\n } else {\n for (const [orbitName, orbitDef] of Object.entries(def.startStateData)) {\n outputLines.push(sanitize(orbitName));\n outputLines.push(orbitDef.pieces.join(\" \"));\n outputLines.push(orbitDef.orientation.join(\" \"));\n }\n }\n outputLines.push(END);\n outputLines.push(BLANK_LINE);\n function include(moveName) {\n if (options?.moveSubset) {\n return options.moveSubset.includes(moveName);\n } else {\n return true;\n }\n }\n for (const [moveName, moveDef] of Object.entries(def.moves)) {\n if (include(moveName)) {\n outputLines.push(serializeKTransformationDataToTws(moveName, moveDef));\n }\n }\n for (const [moveName, moveAlgDef] of Object.entries(\n def.experimentalDerivedMoves ?? {}\n )) {\n if (include(moveName)) {\n const transformation = kpuzzle.algToTransformation(moveAlgDef);\n outputLines.push(\n serializeKTransformationDataToTws(\n moveName,\n transformation.transformationData\n )\n );\n }\n }\n console.log(outputLines.join(\"\\n\"))\n return outputLines.join(\"\\n\");\n}\nexport {\n NoSolutionError,\n serializeDefToTws,\n serializeKTransformationDataToTws,\n setArg,\n setKPuzzleDefString,\n solveScramble,\n solveState\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }