From 754eb807defa5d47ca7a75fadda66c05c44b37aa Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Tue, 6 May 2025 22:03:12 -0400 Subject: [PATCH] [3d] some improvement for load3d recording video (#3794) --- src/components/load3d/Load3D.vue | 10 +++ src/components/load3d/Load3DScene.vue | 5 +- .../load3d/controls/RecordingControls.vue | 82 +++++++++---------- src/extensions/core/load3d/Load3d.ts | 2 + 4 files changed, 54 insertions(+), 45 deletions(-) diff --git a/src/components/load3d/Load3D.vue b/src/components/load3d/Load3D.vue index 00d5f8c5c..f269108fe 100644 --- a/src/components/load3d/Load3D.vue +++ b/src/components/load3d/Load3D.vue @@ -28,6 +28,7 @@ @background-image-change="listenBackgroundImageChange" @up-direction-change="listenUpDirectionChange" @edge-threshold-change="listenEdgeThresholdChange" + @recording-status-change="listenRecordingStatusChange" /> { edgeThreshold.value = value } +const listenRecordingStatusChange = (value: boolean) => { + isRecording.value = value + + if (!value && load3DSceneRef.value?.load3d) { + hasRecording.value = true + recordingDuration.value = load3DSceneRef.value.load3d.getRecordingDuration() + } +} + const listenBackgroundColorChange = (value: string) => { backgroundColor.value = value } diff --git a/src/components/load3d/Load3DScene.vue b/src/components/load3d/Load3DScene.vue index 556451c0d..47a729786 100644 --- a/src/components/load3d/Load3DScene.vue +++ b/src/components/load3d/Load3DScene.vue @@ -68,7 +68,9 @@ const eventConfig = { }, textureLoadingStart: () => loadingOverlayRef.value?.startLoading(t('load3d.applyingTexture')), - textureLoadingEnd: () => loadingOverlayRef.value?.endLoading() + textureLoadingEnd: () => loadingOverlayRef.value?.endLoading(), + recordingStatusChange: (value: boolean) => + emit('recordingStatusChange', value) } as const watchEffect(async () => { @@ -120,6 +122,7 @@ const emit = defineEmits<{ (e: 'backgroundImageChange', backgroundImage: string): void (e: 'upDirectionChange', upDirection: string): void (e: 'edgeThresholdChange', threshold: number): void + (e: 'recordingStatusChange', status: boolean): void }>() const handleEvents = (action: 'add' | 'remove') => { diff --git a/src/components/load3d/controls/RecordingControls.vue b/src/components/load3d/controls/RecordingControls.vue index a0b4501f3..3e044e413 100644 --- a/src/components/load3d/controls/RecordingControls.vue +++ b/src/components/load3d/controls/RecordingControls.vue @@ -15,7 +15,10 @@