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 (
Geometry
{geoData.attributes.map((attribData, idx) => { return (
{attribData.name.value}
{attribData.count.value}
{attribData.itemSize.value}
) })}
) }