From 95b75ca24a8b2362d754931e989cca21fe66fceb Mon Sep 17 00:00:00 2001 From: David Gordon Date: Thu, 7 Dec 2023 17:16:59 -0800 Subject: [PATCH 1/2] Fix hierarchy panel react to root entity creation --- .../hierarchy/HierarchyPanelContainer.tsx | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx b/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx index 57ad9b3469..e74ed26f86 100644 --- a/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx +++ b/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx @@ -41,6 +41,7 @@ import { NO_PROXY, getMutableState, getState, none, useHookstate } from '@ethere import MenuItem from '@mui/material/MenuItem' import { PopoverPosition } from '@mui/material/Popover' +import { EntityUUID } from '@etherealengine/common/src/interfaces/EntityUUID' import { Engine } from '@etherealengine/engine/src/ecs/classes/Engine' import { entityExists } from '@etherealengine/engine/src/ecs/functions/EntityFunctions' import { UUIDComponent } from '@etherealengine/engine/src/scene/components/UUIDComponent' @@ -76,7 +77,7 @@ const uploadOptions = { * * @constructor */ -export default function HierarchyPanel() { +function HierarchyPanelContents({ rootEntityUUID }: { rootEntityUUID: EntityUUID }) { const { t } = useTranslation() const [contextSelectedItem, setContextSelectedItem] = React.useState(undefined) const [anchorPosition, setAnchorPosition] = React.useState(undefined) @@ -94,6 +95,7 @@ export default function HierarchyPanel() { const activeScene = useHookstate(getMutableState(SceneState).activeScene) const entities = useHookstate(UUIDComponent.entitiesByUUIDState) + const rootEntity = useHookstate(UUIDComponent.entitiesByUUIDState[rootEntityUUID]) const MemoTreeNode = useCallback( (props: HierarchyTreeNodeProps) => ( @@ -111,15 +113,10 @@ export default function HierarchyPanel() { } useEffect(() => { - if (!activeScene.value) return - - const rootUUID = SceneState.getScene(activeScene.value)!.root! - const rootEntity = UUIDComponent.entitiesByUUID[rootUUID] - - if (!expandedNodes.value[activeScene.value] && rootEntity) { - expandedNodes.set({ [activeScene.value]: { [rootEntity]: true } }) + if (!expandedNodes.value[activeScene.value!]) { + expandedNodes.set({ [activeScene.value!]: { [rootEntity.value]: true } }) } - }, [activeScene]) + }, [rootEntity]) useEffect(() => { if (!activeScene.value) return @@ -500,3 +497,13 @@ export default function HierarchyPanel() { ) } + +export default function HierarchyPanel() { + const editorState = useHookstate(getMutableState(EditorState)) + const sceneState = useHookstate(getMutableState(SceneState)) + + const sceneJson = SceneState.getScene(editorState.sceneID.value!) + + if (!editorState.sceneID.value || !sceneState.scenes[editorState.sceneID.value] || !sceneJson) return null + return +} From 2bd8136a765ba540ad6ada42e2e3ef1509da6033 Mon Sep 17 00:00:00 2001 From: HexaField Date: Fri, 8 Dec 2023 12:43:24 +1100 Subject: [PATCH 2/2] fix --- .../editor/src/components/hierarchy/HierarchyPanelContainer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx b/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx index e74ed26f86..c510e5008e 100644 --- a/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx +++ b/packages/editor/src/components/hierarchy/HierarchyPanelContainer.tsx @@ -505,5 +505,5 @@ export default function HierarchyPanel() { const sceneJson = SceneState.getScene(editorState.sceneID.value!) if (!editorState.sceneID.value || !sceneState.scenes[editorState.sceneID.value] || !sceneJson) return null - return + return }