From 856c78f706fb56e3ca8f0dffac27b0789d4de0e4 Mon Sep 17 00:00:00 2001 From: LemonNeko Date: Tue, 25 Feb 2025 18:19:12 +0800 Subject: [PATCH] perf(stage-web): pause render when settings open (#34) --- .../src/components/Layouts/MobileInteractiveArea.vue | 10 +++++++++- apps/stage-web/src/pages/index.vue | 10 ++++++++-- packages/stage-ui/src/components/Live2D/Model.vue | 5 +++++ packages/stage-ui/src/components/Scenes/Live2D.vue | 3 ++- packages/stage-ui/src/components/Scenes/VRM.vue | 2 ++ packages/stage-ui/src/components/VRM/Model.vue | 7 +++++++ packages/stage-ui/src/components/Widgets/Stage.vue | 8 ++++++++ 7 files changed, 41 insertions(+), 4 deletions(-) diff --git a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue index 797eeaf4a..613ab7d80 100644 --- a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue +++ b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue @@ -10,6 +10,10 @@ import { useI18n } from 'vue-i18n' import MobileChatHistory from '../Widgets/MobileChatHistory.vue' import MobileSettings from '../Widgets/MobileSettings.vue' +const emit = defineEmits<{ + (e: 'settingsOpen', open: boolean): void +}>() + const messageInput = ref('') const listening = ref(false) @@ -69,6 +73,10 @@ function handleTranscription(_buffer: Float32Array) { // selectedAudioDevice.value = found // } +function handleSettingsOpen(open: boolean) { + emit('settingsOpen', open) +} + watch(isAudioInputOn, async (value) => { if (value === 'false') { destroy() @@ -100,7 +108,7 @@ onMounted(() => { @submit="handleSend" /> - + import { WidgetStage } from '@proj-airi/stage-ui/components' import { useDark } from '@vueuse/core' +import { ref } from 'vue' import Cross from '../components/Backgrounds/Cross.vue' import AnimatedBackground from '../components/Layouts/AnimatedBackground.vue' @@ -10,6 +11,11 @@ import MobileHeader from '../components/Layouts/MobileHeader.vue' import MobileInteractiveArea from '../components/Layouts/MobileInteractiveArea.vue' const dark = useDark() +const paused = ref(false) + +function handleSettingsOpen(open: boolean) { + paused.value = open +}