import { useState } from '@hookstate/core' import React from 'react' import { useTranslation } from 'react-i18next' import { EntityUUID } from '@xrengine/common/src/interfaces/EntityUUID' import { Engine } from '@xrengine/engine/src/ecs/classes/Engine' import { defineQuery, getComponent, useComponent, useQuery } from '@xrengine/engine/src/ecs/functions/ComponentFunctions' import { MediaComponent } from '@xrengine/engine/src/scene/components/MediaComponent' import { NameComponent } from '@xrengine/engine/src/scene/components/NameComponent' import { UUIDComponent } from '@xrengine/engine/src/scene/components/UUIDComponent' import { VideoComponent } from '@xrengine/engine/src/scene/components/VideoComponent' import VideocamIcon from '@mui/icons-material/Videocam' import InputGroup from '../inputs/InputGroup' import SelectInput from '../inputs/SelectInput' import { Vector2Input } from '../inputs/Vector2Input' import NodeEditor from './NodeEditor' import { EditorComponentType, updateProperty } from './Util' const fitOptions = [ { label: 'Cover', value: 'cover' }, { label: 'Contain', value: 'contain' }, { label: 'Vertical', value: 'vertical' }, { label: 'Horizontal', value: 'horizontal' } ] /** * VideoNodeEditor used to render editor view for property customization. * * @param {any} props * @constructor */ export const VideoNodeEditor: EditorComponentType = (props) => { const { t } = useTranslation() const video = useComponent(props.entity, VideoComponent) const mediaEntities = useQuery([MediaComponent]) const mediaOptions = mediaEntities.map((entity) => { return { label: getComponent(entity, NameComponent), value: getComponent(entity, UUIDComponent) } }) mediaOptions.unshift({ label: 'Self', value: '' as EntityUUID }) return ( ) } // setting iconComponent with icon name VideoNodeEditor.iconComponent = VideocamIcon export default VideoNodeEditor