aboutsummaryrefslogtreecommitdiff
path: root/src/components/chatbubble.jsx
blob: b3f4ad5f9292e6100cf40798437676199fe69a55 (plain)
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
import { useRef, useState } from 'react'
import * as everforest from '../_everforest.module.scss'
import { useGLTF } from '@react-three/drei';
import { useFrame } from '@react-three/fiber';

export default function ChatBubble(props) {
    const meshRef = useRef();
    const [hovered, setHovered] = useState(false);
    const [active, setActive] = useState(false);
    useFrame((_, delta) => (meshRef.current.rotation.y += delta));
    const {nodes} = useGLTF('../assets/message-bubble.glb');

    return (
        <mesh
            {...props}
            ref={meshRef}
            scale={active ? 3 : 2}
            onClick={(_) => setActive(!active)}
            geometry={nodes.Curve.geometry}
            onPointerOver={(_) => setHovered(true)}
            onPointerOut={(_) => setHovered(false)}>
            <meshStandardMaterial color={active ? everforest.blue : everforest.orange} />
        </mesh>
    )
}