import { useCallback, useEffect } from 'react' import React from 'react' import { BufferGeometry } from 'three' import { useHookstate } from '@xrengine/hyperflux' import DeleteIcon from '@mui/icons-material/DeleteForeverTwoTone' import { Box, Grid, Stack, Typography } from '@mui/material' import styles from '../layout/styles.module.scss' export default function GeometryEditor({ geometry }: { ['geometry']: BufferGeometry }) { if (geometry === undefined) return <>> const updateGeo = useHookstate(0) const updateGeoData = useCallback( () => ({ uuid: geometry.uuid, name: geometry.name, attributes: Object.entries(geometry.attributes).map(([attribName, attrib]) => ({ name: attribName, count: attrib.count, itemSize: attrib.itemSize, normalized: attrib.normalized })) }), [updateGeo] ) const geoData = useHookstate(updateGeoData()) useEffect(() => { geoData.set(updateGeoData()) }, [updateGeo]) const deleteBufferAttribute = useCallback( (attribName) => () => { geometry.deleteAttribute(attribName) updateGeo.set(updateGeo.get() + 1) }, [geoData.uuid] ) return (