File size: 794 Bytes
1afe868
e95d66b
1afe868
6bb08c4
 
 
e95d66b
1afe868
 
e95d66b
 
7cefe36
6bb08c4
7cefe36
6bb08c4
e95d66b
 
f3bc628
 
1afe868
f3bc628
 
 
e95d66b
 
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
'use client';

import { Canvas as ThreeCanvas } from '@react-three/fiber';
import { useEffect, useRef } from 'react';

import { useControlContext } from '@/contexts/control-context';

import { Env } from '../components/env';
import { RubiksCube, RubiksCubeRef } from './rubiks-cube';

export const Canvas = () => {
  const rubiksCubeRef = useRef<RubiksCubeRef>(null);
  const { cubeRoughness, cubeSpeed, background, setRubiksCubeRef } = useControlContext();

  useEffect(() => setRubiksCubeRef(rubiksCubeRef), [setRubiksCubeRef]);

  return (
    <>
      <ThreeCanvas shadows camera={{ position: [0, 0, 4.5], fov: 50 }}>
        <RubiksCube ref={rubiksCubeRef} cubeRoughness={cubeRoughness} cubeSpeed={cubeSpeed} />
        <Env background={background} />
      </ThreeCanvas>
    </>
  );
};