diff --git a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx index d28bce5fa2..8f1627e715 100644 --- a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx @@ -7,15 +7,37 @@ import { } from "@fortawesome/pro-solid-svg-icons"; import { Button, ButtonIconSelect, Tooltip } from "~/components"; import { EngineContext } from "../../contexts/EngineContext"; -import { useContext } from "react"; +import { useContext, useEffect, useState } from "react"; import { assetModalVisibleDuringDrag, assetModalVisible } from "../../signals"; import { AssetModal } from "../AssetMenu/AssetModal"; import { selectedMode } from "../../signals/selectedMode"; import { useSignals } from "@preact/signals-react/runtime"; +import { outlinerState } from "../../signals/outliner/outliner"; +import { twMerge } from "tailwind-merge"; export const Controls3D = () => { useSignals(); const editorEngine = useContext(EngineContext); + const [showEmptySceneTooltip, setShowEmptySceneTooltip] = useState(false); + + useEffect(() => { + // Check if scene is empty and onboarding helper is not visible + const checkSceneEmpty = () => { + const isSceneEmpty = outlinerState.items.value.length === 0; + + setShowEmptySceneTooltip(isSceneEmpty); + }; + + // Initial check + checkSceneEmpty(); + + // Subscribe to outliner state changes + const unsubscribe = outlinerState.items.subscribe(checkSceneEmpty); + + return () => { + unsubscribe(); + }; + }, []); const handleModeChange = (value: string) => { selectedMode.value = value; @@ -80,23 +102,40 @@ export const Controls3D = () => { }; return ( -