UNPKG

cube-parameters

Version:

A sophisticated 3D model viewer built with React, TypeScript, and Three.js, featuring advanced visualization tools, measurement capabilities, and lighting controls.

36 lines (29 loc) 1.03 kB
import { useState, useRef, useCallback } from 'react'; import * as THREE from 'three'; import { MaterialManager } from '../utils/materialManager'; export const useMouseInteractionState = () => { const [hoveredObject, setHoveredObject] = useState<THREE.Object3D | null>(null); const materialManagerRef = useRef<MaterialManager | null>(null); const initializeMaterialManager = useCallback(() => { if (!materialManagerRef.current) { materialManagerRef.current = new MaterialManager(); } return materialManagerRef.current; }, []); const cleanupMaterialManager = useCallback(() => { if (materialManagerRef.current) { materialManagerRef.current.dispose(); materialManagerRef.current = null; } }, []); const setHoveredObjectSafe = useCallback((object: THREE.Object3D | null) => { setHoveredObject(object); }, []); return { hoveredObject, setHoveredObject: setHoveredObjectSafe, materialManagerRef, initializeMaterialManager, cleanupMaterialManager }; };