45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
|
|
import { useEffect, useCallback } from 'react';
|
||
|
|
import { useAnimationHandler } from './actionHandler/useAnimationHandler';
|
||
|
|
import { useAnimatedTravelHandler } from './actionHandler/useAnimatedTravelHandler';
|
||
|
|
|
||
|
|
export function useHumanActions() {
|
||
|
|
const { handleAnimation } = useAnimationHandler();
|
||
|
|
const { handleAnimatedTravel } = useAnimatedTravelHandler();
|
||
|
|
|
||
|
|
const handleAnimationAction = useCallback((action: HumanAction, materialId: string) => {
|
||
|
|
handleAnimation(action, materialId);
|
||
|
|
}, [handleAnimation]);
|
||
|
|
|
||
|
|
const handleAnimatedTravelAction = useCallback((action: HumanAction) => {
|
||
|
|
handleAnimatedTravel(action);
|
||
|
|
}, [handleAnimatedTravel]);
|
||
|
|
|
||
|
|
const handleHumanAction = useCallback((action: HumanAction, materialId: string) => {
|
||
|
|
if (!action) return;
|
||
|
|
|
||
|
|
switch (action.actionType) {
|
||
|
|
case 'animation':
|
||
|
|
handleAnimationAction(action, materialId);
|
||
|
|
break;
|
||
|
|
case 'animatedTravel':
|
||
|
|
handleAnimatedTravelAction(action);
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
console.warn(`Unknown Human action type: ${action.actionType}`);
|
||
|
|
}
|
||
|
|
}, [handleAnimationAction, handleAnimatedTravelAction]);
|
||
|
|
|
||
|
|
const cleanup = useCallback(() => {
|
||
|
|
}, []);
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
return () => {
|
||
|
|
cleanup();
|
||
|
|
};
|
||
|
|
}, [cleanup]);
|
||
|
|
|
||
|
|
return {
|
||
|
|
handleHumanAction,
|
||
|
|
cleanup
|
||
|
|
};
|
||
|
|
}
|