arcanumcube 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +48 -0
- package/dist/cjs/arcanumcube.cjs +1824 -0
- package/dist/esm/arcanumcube.module.js +1760 -0
- package/dist/esm/arcanumcube.module.min.js +19 -0
- package/dist/index.html +90 -0
- package/dist/types/arcanumcube.d.ts +3 -0
- package/dist/types/core.d.ts +126 -0
- package/dist/types/materials.d.ts +7 -0
- package/dist/types/skins.d.ts +23 -0
- package/dist/types/webgl.d.ts +106 -0
- package/package.json +58 -0
package/dist/index.html
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<title>Arcanum Cube</title>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta
|
|
6
|
+
name="viewport"
|
|
7
|
+
content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
|
|
8
|
+
<script type="importmap">
|
|
9
|
+
{
|
|
10
|
+
"imports": {
|
|
11
|
+
"arcanumcube": "./esm/arcanumcube.module.min.js",
|
|
12
|
+
"three": "https://cdn.jsdelivr.net/npm/three@0.173.0/build/three.module.min.js",
|
|
13
|
+
"three/examples/jsm/": "https://cdn.jsdelivr.net/npm/three@0.173.0/examples/jsm/",
|
|
14
|
+
"@tweenjs/tween.js": "https://cdn.jsdelivr.net/npm/@tweenjs/tween.js@25.0.0/+esm"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
</script>
|
|
18
|
+
<script type="module">
|
|
19
|
+
import * as THREE from 'three';
|
|
20
|
+
import * as ARCCUBE from 'arcanumcube';
|
|
21
|
+
|
|
22
|
+
async function onLoad() {
|
|
23
|
+
const w = viewarea.clientWidth;
|
|
24
|
+
const h = viewarea.clientHeight;
|
|
25
|
+
const renderer = new THREE.WebGLRenderer({
|
|
26
|
+
antialias: true,
|
|
27
|
+
alpha: true,
|
|
28
|
+
});
|
|
29
|
+
renderer.setSize(w, h);
|
|
30
|
+
renderer.setPixelRatio(window.devicePixelRatio);
|
|
31
|
+
renderer.setClearColor('#222');
|
|
32
|
+
|
|
33
|
+
const canvas = renderer.domElement;
|
|
34
|
+
viewarea.appendChild(canvas);
|
|
35
|
+
|
|
36
|
+
const scene = new THREE.Scene();
|
|
37
|
+
|
|
38
|
+
const camera = new THREE.PerspectiveCamera(45, w / h);
|
|
39
|
+
camera.position.set(0, 0, 30);
|
|
40
|
+
|
|
41
|
+
// ambient light
|
|
42
|
+
const light = new THREE.AmbientLight('#fff', 1.0);
|
|
43
|
+
scene.add(light);
|
|
44
|
+
|
|
45
|
+
// spot light
|
|
46
|
+
const spotLight = new THREE.SpotLight('#fff', 2.0, 20, Math.PI / 4, 0.6, 0.01);
|
|
47
|
+
spotLight.position.set(4, 8, 4);
|
|
48
|
+
spotLight.target.position.set(0, 0, 0);
|
|
49
|
+
scene.add(spotLight);
|
|
50
|
+
|
|
51
|
+
// arcanum cube
|
|
52
|
+
const arccube = new ARCCUBE.WebGLArcanumCube();
|
|
53
|
+
await arccube.init();
|
|
54
|
+
const arccubeGroup = arccube.getGroup();
|
|
55
|
+
arccubeGroup.position.set(0, 0, 0);
|
|
56
|
+
scene.add(arccubeGroup);
|
|
57
|
+
|
|
58
|
+
renderer.setAnimationLoop((time) => {
|
|
59
|
+
// rotate cube
|
|
60
|
+
arccubeGroup.rotation.x -= 0.005;
|
|
61
|
+
arccubeGroup.rotation.y += 0.005;
|
|
62
|
+
|
|
63
|
+
// animate twisting
|
|
64
|
+
arccube.updateTweens();
|
|
65
|
+
|
|
66
|
+
renderer.render(scene, camera);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// scramble(steps, duration);
|
|
70
|
+
arccube.scramble(60, 12000);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
window.addEventListener('load', onLoad);
|
|
74
|
+
</script>
|
|
75
|
+
<style>
|
|
76
|
+
body {
|
|
77
|
+
margin: 0px;
|
|
78
|
+
}
|
|
79
|
+
div#viewarea {
|
|
80
|
+
margin: 0px;
|
|
81
|
+
width: 100dvw;
|
|
82
|
+
height: 100dvh;
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
85
|
+
</head>
|
|
86
|
+
|
|
87
|
+
<body>
|
|
88
|
+
<div id="viewarea"></div>
|
|
89
|
+
</body>
|
|
90
|
+
</html>
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export declare const CUBE_SIZE = 3;
|
|
2
|
+
export declare const SIDE_MAX: number;
|
|
3
|
+
export declare const SIDE_MIN = 0;
|
|
4
|
+
export declare const SIDE_MIDDLE: number;
|
|
5
|
+
export declare const STICKER_COLOR: {
|
|
6
|
+
UP: number;
|
|
7
|
+
FRONT: number;
|
|
8
|
+
RIGHT: number;
|
|
9
|
+
DOWN: number;
|
|
10
|
+
BACK: number;
|
|
11
|
+
LEFT: number;
|
|
12
|
+
PLAIN: number;
|
|
13
|
+
};
|
|
14
|
+
export type StickerColor = (typeof STICKER_COLOR)[keyof typeof STICKER_COLOR];
|
|
15
|
+
export declare const CUBE: {
|
|
16
|
+
readonly AXIS: "axis";
|
|
17
|
+
readonly CENTER: "center";
|
|
18
|
+
readonly EDGE: "edge";
|
|
19
|
+
readonly CORNER: "corner";
|
|
20
|
+
readonly STICKER: "sticker";
|
|
21
|
+
};
|
|
22
|
+
export type CubeType = (typeof CUBE)[keyof typeof CUBE];
|
|
23
|
+
export declare const FACE: Record<string, number>;
|
|
24
|
+
export type Face = (typeof FACE)[keyof typeof FACE];
|
|
25
|
+
export declare const TWIST: {
|
|
26
|
+
readonly U: "U";
|
|
27
|
+
readonly UR: "U'";
|
|
28
|
+
readonly F: "F";
|
|
29
|
+
readonly FR: "F'";
|
|
30
|
+
readonly R: "R";
|
|
31
|
+
readonly RR: "R'";
|
|
32
|
+
readonly D: "D";
|
|
33
|
+
readonly DR: "D'";
|
|
34
|
+
readonly B: "B";
|
|
35
|
+
readonly BR: "B'";
|
|
36
|
+
readonly L: "L";
|
|
37
|
+
readonly LR: "L'";
|
|
38
|
+
readonly M: "M";
|
|
39
|
+
readonly MR: "M'";
|
|
40
|
+
readonly E: "E";
|
|
41
|
+
readonly ER: "E'";
|
|
42
|
+
readonly S: "S";
|
|
43
|
+
readonly SR: "S'";
|
|
44
|
+
readonly U2: "U2";
|
|
45
|
+
readonly F2: "F2";
|
|
46
|
+
readonly R2: "R2";
|
|
47
|
+
readonly D2: "D2";
|
|
48
|
+
readonly B2: "B2";
|
|
49
|
+
readonly L2: "L2";
|
|
50
|
+
readonly M2: "M2";
|
|
51
|
+
readonly E2: "E2";
|
|
52
|
+
readonly S2: "S2";
|
|
53
|
+
};
|
|
54
|
+
export type Twist = (typeof TWIST)[keyof typeof TWIST];
|
|
55
|
+
export declare const SINGLE_TWIST_LIST: readonly ["U", "U'", "F", "F'", "R", "R'", "D", "D'", "B", "B'", "L", "L'", "M", "M'", "E", "E'", "S", "S'"];
|
|
56
|
+
export declare const DOUBLE_TWIST_LIST: readonly ["U2", "F2", "R2", "D2", "B2", "L2", "M2", "E2", "S2"];
|
|
57
|
+
export declare const TWIST_LIST: ("U" | "F" | "R" | "D" | "B" | "L" | "U'" | "F'" | "R'" | "D'" | "B'" | "L'" | "M" | "M'" | "E" | "E'" | "S" | "S'" | "U2" | "F2" | "R2" | "D2" | "B2" | "L2" | "M2" | "E2" | "S2")[];
|
|
58
|
+
export declare const CUBE_ANGLES: Twist[][][][];
|
|
59
|
+
export declare const TWIST_RULE: Record<Twist, {
|
|
60
|
+
axis: [x: number, y: number, z: number];
|
|
61
|
+
levels: number[];
|
|
62
|
+
steps: number;
|
|
63
|
+
}>;
|
|
64
|
+
export declare function getStickerIndex(x: number, y: number, z: number, face: Face): number;
|
|
65
|
+
export declare function getCubeFromStickerIndex(index: number): [x: number, y: number, z: number, face: Face];
|
|
66
|
+
export declare function getRandomTwistList(steps?: number): Twist[];
|
|
67
|
+
export type Sticker = {
|
|
68
|
+
face: Face;
|
|
69
|
+
color: StickerColor;
|
|
70
|
+
};
|
|
71
|
+
export declare class Cube {
|
|
72
|
+
type: string;
|
|
73
|
+
position: {
|
|
74
|
+
x: number;
|
|
75
|
+
y: number;
|
|
76
|
+
z: number;
|
|
77
|
+
};
|
|
78
|
+
protected _stickers: Sticker[];
|
|
79
|
+
protected _initialPosition: {
|
|
80
|
+
x: number;
|
|
81
|
+
y: number;
|
|
82
|
+
z: number;
|
|
83
|
+
};
|
|
84
|
+
constructor(x: number, y: number, z: number);
|
|
85
|
+
getStickers(): Sticker[];
|
|
86
|
+
init(): void;
|
|
87
|
+
reset(): void;
|
|
88
|
+
rotateStickerFace(twists: Twist[], reverse?: boolean, init?: boolean): void;
|
|
89
|
+
}
|
|
90
|
+
/** Arcanum Cube object class */
|
|
91
|
+
export declare class ArcanumCube {
|
|
92
|
+
/** output debug information to console */
|
|
93
|
+
debug: boolean;
|
|
94
|
+
/** history of twisting */
|
|
95
|
+
protected _history: Twist[];
|
|
96
|
+
/** cube objects matrix */
|
|
97
|
+
protected _matrix: Cube[][][];
|
|
98
|
+
constructor(options?: {
|
|
99
|
+
debug?: boolean;
|
|
100
|
+
});
|
|
101
|
+
init(): void;
|
|
102
|
+
reset(): void;
|
|
103
|
+
scramble(steps?: number): void;
|
|
104
|
+
undo(steps?: number): void;
|
|
105
|
+
getHistory(): Twist[];
|
|
106
|
+
getUndoList(steps?: number): Twist[];
|
|
107
|
+
twist(twist: Twist | Twist[], reverse?: boolean): void;
|
|
108
|
+
private _twist;
|
|
109
|
+
rotateMatrix(twist: Twist, reverse?: boolean): void;
|
|
110
|
+
getStickerColors(): StickerColor[];
|
|
111
|
+
dumpStickers(): void;
|
|
112
|
+
}
|
|
113
|
+
export declare function getNextStickerColors(stickers: StickerColor[], twist: Twist): StickerColor[];
|
|
114
|
+
export declare function getArrayForTensor(stickers: StickerColor[]): number[][][];
|
|
115
|
+
export declare function getCubePermutationGroup(twist: Twist, reverse?: boolean): {
|
|
116
|
+
before: number[][];
|
|
117
|
+
after: number[][];
|
|
118
|
+
stickers: {
|
|
119
|
+
before: number[];
|
|
120
|
+
after: number[];
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
export declare function getStickerPermutationGroup(position: [x: number, y: number, z: number], position2: [x: number, y: number, z: number], twists: Twist[], reverse?: boolean): {
|
|
124
|
+
before: number[];
|
|
125
|
+
after: number[];
|
|
126
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import * as ARCCUBE from './core.js';
|
|
3
|
+
export type Skin = {
|
|
4
|
+
name: string;
|
|
5
|
+
enableEnvMap: boolean;
|
|
6
|
+
modelFiles: Record<ARCCUBE.CubeType, string>;
|
|
7
|
+
modelLoading: boolean;
|
|
8
|
+
models: Record<string, THREE.Mesh>;
|
|
9
|
+
cube: {
|
|
10
|
+
material: () => THREE.Material;
|
|
11
|
+
activate: (mesh: THREE.Mesh) => void;
|
|
12
|
+
deactivate: (mesh: THREE.Mesh) => void;
|
|
13
|
+
};
|
|
14
|
+
sticker: {
|
|
15
|
+
material: (x: number, y: number, z: number, color: ARCCUBE.StickerColor) => THREE.Material;
|
|
16
|
+
activate: (mesh: THREE.Mesh) => void;
|
|
17
|
+
deactivate: (mesh: THREE.Mesh) => void;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare const DefaultSkin: Skin;
|
|
21
|
+
export declare const SkinMap: Record<string, Skin>;
|
|
22
|
+
export declare const DefaultModel: Record<string, string>;
|
|
23
|
+
export declare const DefaultLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAADwf7zUAAAF0GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMTAyNCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjEwMjQiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTAyNCIKICAgdGlmZjpJbWFnZVdpZHRoPSIxMDI0IgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI3Mi8xIgogICB0aWZmOllSZXNvbHV0aW9uPSI3Mi8xIgogICB4bXA6TWV0YWRhdGFEYXRl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AAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAAALAQAgAAAABgIQQAAAAAwEIIAAAAAICFEAAAAAAACyEAAAAAABZCAAAAAAAshAAAAAAAWAgBAAAA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zTenT59udyEAAKiLAAD0ZO+9995NN91kdxXdJCsr6/XXXx86dKjdhQAAoDRagICe7MYbb1yxYoXdVXSHX/7yl3/729+4+wcA4Kp4AwD0fKtXr547d67dVVjlX/7lX/7zP/8zKSnJ7kIAAPAOvAEAer45c+Zs3rw5PT3d7kI8LCcnp6SkZNmyZdz9AwAgjjcAgC6am5ufe+65J554wu5CPCA2Nvapp5666aabevfubXctAAB4GQIAoJft27f/5Cc/2b59u92FmBQbG/vAAw/cfffdYWFhdtcCAIBXIgAA2jl79uySJUseffRRuwuRc/vtt992222TJ0/29/e3uxYAALwYAQDQ1IEDB15//fUlS5a0tLTYXcuVpKSk/Ou//uucOXPi4uLsrgUAgJ6AAABo7fjx4ytXrvz973+/f/9+u2vp7N5777355psnTJjgdDrtrgUAgJ6DAADAaG1tLSoqWrp06cqVK+2tZP78+Xl5eWPHjk1NTQ0ODra3GAAAeiQCAID/19HRUVFRUVpaumnTplWrVh0/frwbvtTPz2/OnDmTJ08eM2ZMampqUFBQN3wpAAA6IwAAuIzz589XVVXt3r1706ZNq1evbmxs9NQnjx07duTIkUOGDBk8eHBiYmJKSkpgYKCnPhwAAFwVAQDAVVy4cMHlcn322WcnT548ceLEZ5991tjYeOTIEZfLVVlZeenKgICAfv36BQUFBQYGBgQEBAQExMbGJiQkxMbGRkdHR0VFRUZG9unTx65fCAAAMAgAALqitbW1paXF19fX6XQ6nc5evXo5HA67iwIAAFdCAAAAAAA00svuAgAAAAB0HwIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgCNGpvDAAACq0lEQVQAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgEQIAAAAAoBECAAAAAKARAgAAAACgkf8DrRPtrJpx5YsAAAAASUVORK5CYII=";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { Cube, ArcanumCube } from './core.js';
|
|
3
|
+
import type { Twist, Sticker } from './core.js';
|
|
4
|
+
export declare const CUBE_SIDE_LEN = 1.9;
|
|
5
|
+
type WebGLSticker = Sticker & {
|
|
6
|
+
mesh?: THREE.Mesh;
|
|
7
|
+
};
|
|
8
|
+
export type WebGLCubeConfig = {
|
|
9
|
+
scale: number;
|
|
10
|
+
stickerScale: number;
|
|
11
|
+
gap: number;
|
|
12
|
+
enableShadow: boolean;
|
|
13
|
+
skin: string;
|
|
14
|
+
envMap?: THREE.Texture;
|
|
15
|
+
};
|
|
16
|
+
declare class WebGLCube extends Cube {
|
|
17
|
+
protected _stickers: WebGLSticker[];
|
|
18
|
+
private _config;
|
|
19
|
+
private _skin;
|
|
20
|
+
private _group;
|
|
21
|
+
private _entityGroup;
|
|
22
|
+
private _outlineGroup;
|
|
23
|
+
constructor(x: number, y: number, z: number, opts?: Partial<WebGLCubeConfig>);
|
|
24
|
+
getGroup(): THREE.Group;
|
|
25
|
+
setStickerScale(scale: number): void;
|
|
26
|
+
setGap(gap: number): void;
|
|
27
|
+
getStickers(): WebGLSticker[];
|
|
28
|
+
getEntityGroup(): THREE.Group;
|
|
29
|
+
getOutlineGroup(): THREE.Group;
|
|
30
|
+
init(): void;
|
|
31
|
+
stretch(strength: number): void;
|
|
32
|
+
enableShadow(flag: boolean): void;
|
|
33
|
+
select(flag?: boolean): void;
|
|
34
|
+
activate(): void;
|
|
35
|
+
deactivate(): void;
|
|
36
|
+
}
|
|
37
|
+
export type WebGLArcanumCubeConfig = {
|
|
38
|
+
debug: boolean;
|
|
39
|
+
scale: number;
|
|
40
|
+
stickerScale: number;
|
|
41
|
+
gap: number;
|
|
42
|
+
enableShadow: boolean;
|
|
43
|
+
skin: string;
|
|
44
|
+
envMap?: THREE.Texture;
|
|
45
|
+
showSelectedCube: boolean;
|
|
46
|
+
showTwistGroup: boolean;
|
|
47
|
+
enableLight: boolean;
|
|
48
|
+
};
|
|
49
|
+
/** Arcanum Cube object for WebGL class */
|
|
50
|
+
declare class WebGLArcanumCube extends ArcanumCube {
|
|
51
|
+
/** config */
|
|
52
|
+
private _config;
|
|
53
|
+
/** cube objects matrix */
|
|
54
|
+
protected _matrix: WebGLCube[][][];
|
|
55
|
+
/** WebGL THREE.js Group */
|
|
56
|
+
private _group;
|
|
57
|
+
/** cube meshes */
|
|
58
|
+
private _cubeObjectList;
|
|
59
|
+
/** cube map */
|
|
60
|
+
private _cubeMap;
|
|
61
|
+
/** selected cube */
|
|
62
|
+
private _selectedCube?;
|
|
63
|
+
/** selected sticker */
|
|
64
|
+
private _selectedSticker?;
|
|
65
|
+
/** current rotating group */
|
|
66
|
+
private _twistGroup?;
|
|
67
|
+
/** dragging state */
|
|
68
|
+
private _draggingTwist?;
|
|
69
|
+
/** max degree to cancel the dragging */
|
|
70
|
+
private _cancelDragDeg;
|
|
71
|
+
/** tween group */
|
|
72
|
+
private _tweens;
|
|
73
|
+
/** light at the center of cube */
|
|
74
|
+
private _pointLights;
|
|
75
|
+
constructor(options?: Partial<WebGLArcanumCubeConfig>);
|
|
76
|
+
getGroup(): THREE.Group;
|
|
77
|
+
getCubeObjectList(): THREE.Group[];
|
|
78
|
+
static getSkinNameList(): string[];
|
|
79
|
+
init(): Promise<void>;
|
|
80
|
+
private _init;
|
|
81
|
+
setSkin(name: string): Promise<void>;
|
|
82
|
+
reset(duration?: number): void;
|
|
83
|
+
selectedCube(): WebGLCube | undefined;
|
|
84
|
+
selectedSticker(): WebGLSticker | undefined;
|
|
85
|
+
getCubeFromObject(object: THREE.Object3D): WebGLCube | undefined;
|
|
86
|
+
getStickerFromMesh(mesh: THREE.Object3D, cube?: WebGLCube): WebGLSticker | undefined;
|
|
87
|
+
selectCube(cube?: WebGLCube): void;
|
|
88
|
+
deselectCube(): void;
|
|
89
|
+
selectSticker(mesh: THREE.Object3D): void;
|
|
90
|
+
deselectSticker(): void;
|
|
91
|
+
getMovementList(sticker: WebGLSticker, position: [x: number, y: number, z: number]): {
|
|
92
|
+
twist: Twist;
|
|
93
|
+
normal: [number, number, number];
|
|
94
|
+
}[];
|
|
95
|
+
private _reconstructGroups;
|
|
96
|
+
dragTwist(twist: Twist, rad: number): void;
|
|
97
|
+
dragTwistEnd(): void;
|
|
98
|
+
scramble(steps?: number, duration?: number): void;
|
|
99
|
+
undo(steps?: number, duration?: number): void;
|
|
100
|
+
tweenTwist(twist: Twist | Twist[], reverse?: boolean, duration?: number, cancel?: boolean): void;
|
|
101
|
+
private _immediatelyTwist;
|
|
102
|
+
private _tweenTwist;
|
|
103
|
+
updateTweens(): void;
|
|
104
|
+
}
|
|
105
|
+
export * from './core.js';
|
|
106
|
+
export { WebGLArcanumCube };
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "arcanumcube",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Arcanum Cube",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "mawxiwtz",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/mawxiwtz/arcanumcube"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/cjs/arcanumcube.cjs",
|
|
18
|
+
"module": "./dist/esm/arcanumcube.module.js",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/types/arcanumcube.d.ts",
|
|
22
|
+
"import": "./dist/esm/arcanumcube.module.js",
|
|
23
|
+
"require": "./dist/cjs/arcanumcube.cjs"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"lint": "prettier --check . && eslint .",
|
|
28
|
+
"format": "prettier --write .",
|
|
29
|
+
"build": "node ./esbuild.js",
|
|
30
|
+
"postbuild": "tsc --allowJs --declaration --emitDeclarationOnly --outDir ./dist/types",
|
|
31
|
+
"start": "node ./esbuild.js --serve",
|
|
32
|
+
"doc": "typedoc --entryPointStrategy expand ./src --out ./docs --disableSources",
|
|
33
|
+
"test": "jest"
|
|
34
|
+
},
|
|
35
|
+
"overrides": {
|
|
36
|
+
"glob": "^11.0.1"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@tweenjs/tween.js": "^25.0.0",
|
|
40
|
+
"@types/eslint": "^9.6.1",
|
|
41
|
+
"@types/jest": "^29.5.14",
|
|
42
|
+
"@types/node": "^22.13.0",
|
|
43
|
+
"@types/three": "^0.173.0",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^8.22.0",
|
|
45
|
+
"@typescript-eslint/parser": "^8.22.0",
|
|
46
|
+
"chalk": "^5.4.1",
|
|
47
|
+
"esbuild": "^0.25.0",
|
|
48
|
+
"eslint": "^9.18.0",
|
|
49
|
+
"eslint-config-prettier": "^10.0.1",
|
|
50
|
+
"fs-extra": "^11.3.0",
|
|
51
|
+
"jest": "^29.7.0",
|
|
52
|
+
"prettier": "^3.4.2",
|
|
53
|
+
"three": "^0.173.0",
|
|
54
|
+
"ts-jest": "^29.2.5",
|
|
55
|
+
"typedoc": "^0.27.6",
|
|
56
|
+
"typescript": "^5.7.3"
|
|
57
|
+
}
|
|
58
|
+
}
|