UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

32 lines (27 loc) 933 B
import { useMemo } from 'react' import { CylinderShape } from '../types/Shapes' import { BulletAPI } from '../bulletApi' import { Float3 } from '../../types' type CylinderShapeProps = { half: Float3 localScaling?: Float3 } export function useCylinderShape(props: CylinderShapeProps | undefined): CylinderShape | undefined { const { half, localScaling } = props ?? {} const scaleX = localScaling?.[0] const scaleY = localScaling?.[1] const scaleZ = localScaling?.[2] const halfX = half?.[0] const halfY = half?.[1] const halfZ = half?.[2] return useMemo(() => { if (halfX == null || halfY == null || halfZ == null) { return undefined } const shape = BulletAPI.createCylinderShape(halfX, halfY, halfZ) if (scaleX != null && scaleY != null && scaleZ != null) { shape.localScaling = [scaleX, scaleY, scaleZ] } return shape }, [halfX, halfY, halfZ, scaleX, scaleY, scaleZ]) }