@@ -12,6 +12,7 @@ import {
1212} from 'react-icons/fi' ;
1313import { TbCube } from 'react-icons/tb' ;
1414
15+ import { useEvent } from '@/core/hooks/useEvent' ;
1516import { KnownComponentTypes } from '@/core/lib/ecs/IComponent' ;
1617import { isValidEntityId } from '@/core/lib/ecs/utils' ;
1718import { useComponentManager } from '@/editor/hooks/useComponentManager' ;
@@ -229,21 +230,24 @@ export const AddComponentMenu: React.FC<IAddComponentMenuProps> = ({
229230 updateEntityComponents ( ) ;
230231 } , [ updateEntityComponents ] ) ;
231232
232- // Listen for component events using the new event system
233- useEffect ( ( ) => {
234- if ( ! isValidEntityId ( entityId ) ) return ;
235-
236- const handleComponentEvent = ( event : any ) => {
237- if ( event . entityId === entityId ) {
238- updateEntityComponents ( ) ;
239- }
240- } ;
233+ // Listen for component events using the global event system
234+ useEvent ( 'component:added' , ( event ) => {
235+ if ( event . entityId === entityId ) {
236+ updateEntityComponents ( ) ;
237+ }
238+ } ) ;
241239
242- // Listen to component events from the ComponentManager
243- const unsubscribe = componentManager . addEventListener ( handleComponentEvent ) ;
240+ useEvent ( 'component:removed' , ( event ) => {
241+ if ( event . entityId === entityId ) {
242+ updateEntityComponents ( ) ;
243+ }
244+ } ) ;
244245
245- return unsubscribe ;
246- } , [ entityId , componentManager , updateEntityComponents ] ) ;
246+ useEvent ( 'component:updated' , ( event ) => {
247+ if ( event . entityId === entityId ) {
248+ updateEntityComponents ( ) ;
249+ }
250+ } ) ;
247251
248252 // Get available components from KnownComponentTypes
249253 const availableComponents = useMemo ( ( ) => {
@@ -694,21 +698,24 @@ export const CompactAddComponentMenu: React.FC<ICompactAddComponentMenuProps> =
694698 updateEntityComponents ( ) ;
695699 } , [ updateEntityComponents ] ) ;
696700
697- // Listen for component events using the new event system
698- useEffect ( ( ) => {
699- if ( ! isValidEntityId ( entityId ) ) return ;
700-
701- const handleComponentEvent = ( event : any ) => {
702- if ( event . entityId === entityId ) {
703- updateEntityComponents ( ) ;
704- }
705- } ;
701+ // Listen for component events using the global event system
702+ useEvent ( 'component:added' , ( event ) => {
703+ if ( event . entityId === entityId ) {
704+ updateEntityComponents ( ) ;
705+ }
706+ } ) ;
706707
707- // Listen to component events from the ComponentManager
708- const unsubscribe = componentManager . addEventListener ( handleComponentEvent ) ;
708+ useEvent ( 'component:removed' , ( event ) => {
709+ if ( event . entityId === entityId ) {
710+ updateEntityComponents ( ) ;
711+ }
712+ } ) ;
709713
710- return unsubscribe ;
711- } , [ entityId , componentManager , updateEntityComponents ] ) ;
714+ useEvent ( 'component:updated' , ( event ) => {
715+ if ( event . entityId === entityId ) {
716+ updateEntityComponents ( ) ;
717+ }
718+ } ) ;
712719
713720 // Get available components and packs
714721 const availableComponents = useMemo ( ( ) => {
0 commit comments