From 15348f7b0ebf8107cb7a3166756a007515e66cf3 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Mon, 5 May 2025 22:08:16 +0700 Subject: [PATCH] draw attention to add 3d object with bouncing tooltip --- .../comps/Controls3D/Controls3D.tsx | 69 +++++++++++++++---- 1 file changed, 54 insertions(+), 15 deletions(-) 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 ( -
+ <>
- -
{
-
+ ); };