Spaces:
Running
Running
File size: 1,135 Bytes
40a6d5e a6e23da ed482ba 7f7b2cc a6e23da ca23eb9 a6e23da 40a6d5e 7f7b2cc 40a6d5e 7f7b2cc 40a6d5e a6e23da |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import { Fragment } from "react";
import { CubePiece } from "./cube-piece";
import { RotationPanel } from "./rotation-panel";
import { FacingDirection } from "./consts";
const CUBE_POSITIONS: Array<[number, number, number]> = [];
for (let x = -0.5; x <= 0.5; x++) {
for (let y = -0.5; y <= 0.5; y++) {
for (let z = -0.5; z <= 0.5; z++) {
CUBE_POSITIONS.push([x, y, z]);
}
}
}
type RubiksCubeProps = {
roughness: number;
};
export const RubiksCube = ({ roughness }: RubiksCubeProps) => {
return (
<group>
{CUBE_POSITIONS.map((position) => (
<CubePiece
key={position.join(",")}
initialPosition={position}
roughness={roughness}
/>
))}
{["front", "back", "left", "right", "top", "bottom"].map((face) => (
<Fragment key={face}>
<RotationPanel
direction="clockwise"
facingDirection={face as FacingDirection}
/>
<RotationPanel
direction="counter-clockwise"
facingDirection={face as FacingDirection}
/>
</Fragment>
))}
</group>
);
};
|