From 91caca2d4166a8956bff9069517e4b3d0b759a4e Mon Sep 17 00:00:00 2001 From: ad044 Date: Mon, 25 Jul 2022 19:08:23 +0400 Subject: [PATCH] dont animate hud when entering main scene from another --- .../canvas/objects/MainScene/HUD.tsx | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/canvas/objects/MainScene/HUD.tsx b/src/components/canvas/objects/MainScene/HUD.tsx index 35b7717..4a1ed54 100644 --- a/src/components/canvas/objects/MainScene/HUD.tsx +++ b/src/components/canvas/objects/MainScene/HUD.tsx @@ -3,12 +3,19 @@ import { useFrame } from "@react-three/fiber"; import { useStore } from "@/store"; import usePrevious from "@/hooks/usePrevious"; import { getNodeHud, isNodeVisible } from "@/utils/node"; -import { HUDData, MainSubscene, Position, TextType } from "@/types"; +import { + GameScene, + GameSite, + HUDData, + MainSubscene, + Position, + TextType, +} from "@/types"; import { useTexture } from "@react-three/drei"; import TextRenderer from "../TextRenderer/TextRenderer"; import AnimatedBigTextRenderer from "../TextRenderer/AnimatedBigTextRenderer"; import { MathUtils } from "three"; -import {logError} from "@/utils/log"; +import { logError } from "@/utils/log"; // the hud is an imperative mess. unfortunately this seems to perform by far the best out of all the approaches i've tried. @@ -161,6 +168,14 @@ const HUD = () => { const hud = getNodeHud(nodeMatrixIndex); + if (prev?.scene !== GameScene.Main) { + setHud(hud, false); + + currentHudRef.current = hud; + activeRef.current = true; + return; + } + const wasHidden = !activeRef.current; activeRef.current = false; @@ -179,7 +194,7 @@ const HUD = () => { }, wasHidden ? 0 : 500 ); - }, [nodeMatrixIndex, subscene]); + }, [nodeMatrixIndex, prev?.scene, subscene]); // changing node useEffect(() => {