From b2375a150cf43f7cfb3d06ac947e8f88f3bbeeef Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Sun, 16 Feb 2025 20:15:49 -0500 Subject: [PATCH] [3d] fully convert load 3d nodes into vue (#2590) --- src/components/load3d/Load3D.vue | 140 +++++++++++++ src/components/load3d/Load3DAnimation.vue | 180 ++++++++++++++++ .../load3d/Load3DAnimationControls.vue | 151 +++----------- .../load3d/Load3DAnimationScene.vue | 162 ++++++++++++++ src/components/load3d/Load3DControls.vue | 92 ++++++-- src/components/load3d/Load3DScene.vue | 96 +++++++++ src/extensions/core/load3d.ts | 197 +++++++++--------- .../core/load3d/Load3DConfiguration.ts | 9 +- src/extensions/core/load3d/Load3d.ts | 112 ++++------ src/extensions/core/load3d/Load3dAnimation.ts | 73 ++----- src/services/load3dService.ts | 38 +++- 11 files changed, 877 insertions(+), 373 deletions(-) create mode 100644 src/components/load3d/Load3D.vue create mode 100644 src/components/load3d/Load3DAnimation.vue create mode 100644 src/components/load3d/Load3DAnimationScene.vue create mode 100644 src/components/load3d/Load3DScene.vue diff --git a/src/components/load3d/Load3D.vue b/src/components/load3d/Load3D.vue new file mode 100644 index 000000000..b4161578c --- /dev/null +++ b/src/components/load3d/Load3D.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/components/load3d/Load3DAnimation.vue b/src/components/load3d/Load3DAnimation.vue new file mode 100644 index 000000000..6fca8de2f --- /dev/null +++ b/src/components/load3d/Load3DAnimation.vue @@ -0,0 +1,180 @@ + + + diff --git a/src/components/load3d/Load3DAnimationControls.vue b/src/components/load3d/Load3DAnimationControls.vue index cda246c15..809068e62 100644 --- a/src/components/load3d/Load3DAnimationControls.vue +++ b/src/components/load3d/Load3DAnimationControls.vue @@ -1,55 +1,31 @@ @@ -58,46 +34,21 @@ import Button from 'primevue/button' import Select from 'primevue/select' import { ref, watch } from 'vue' -import Load3DControls from '@/components/load3d/Load3DControls.vue' - const props = defineProps<{ animations: Array<{ name: string; index: number }> playing: boolean - backgroundColor: string - showGrid: boolean - showPreview: boolean - lightIntensity: number - showLightIntensityButton: boolean - fov: number - showFOVButton: boolean - showPreviewButton: boolean }>() const emit = defineEmits<{ - (e: 'toggleCamera'): void - (e: 'toggleGrid', value: boolean): void - (e: 'togglePreview', value: boolean): void - (e: 'updateBackgroundColor', color: string): void (e: 'togglePlay', value: boolean): void (e: 'speedChange', value: number): void (e: 'animationChange', value: number): void - (e: 'updateLightIntensity', value: number): void - (e: 'updateFOV', value: number): void }>() const animations = ref(props.animations) const playing = ref(props.playing) const selectedSpeed = ref(1) const selectedAnimation = ref(0) -const backgroundColor = ref(props.backgroundColor) -const showGrid = ref(props.showGrid) -const showPreview = ref(props.showPreview) -const lightIntensity = ref(props.lightIntensity) -const showLightIntensityButton = ref(props.showLightIntensityButton) -const fov = ref(props.fov) -const showFOVButton = ref(props.showFOVButton) -const showPreviewButton = ref(props.showPreviewButton) -const load3dControlsRef = ref(null) const speedOptions = [ { name: '0.1x', value: 0.1 }, @@ -107,42 +58,16 @@ const speedOptions = [ { name: '2x', value: 2 } ] -watch(backgroundColor, (newValue) => { - load3dControlsRef.value.backgroundColor = newValue -}) - -watch(showLightIntensityButton, (newValue) => { - load3dControlsRef.value.showLightIntensityButton = newValue -}) - -watch(showFOVButton, (newValue) => { - load3dControlsRef.value.showFOVButton = newValue -}) - -watch(showPreviewButton, (newValue) => { - load3dControlsRef.value.showPreviewButton = newValue -}) - -const onToggleCamera = () => { - emit('toggleCamera') -} -const onToggleGrid = (value: boolean) => emit('toggleGrid', value) -const onTogglePreview = (value: boolean) => { - emit('togglePreview', value) -} -const onUpdateBackgroundColor = (color: string) => - emit('updateBackgroundColor', color) - -const onUpdateLightIntensity = (lightIntensity: number) => { - emit('updateLightIntensity', lightIntensity) -} - -const onUpdateFOV = (fov: number) => { - emit('updateFOV', fov) -} +watch( + () => props.animations, + (newVal) => { + animations.value = newVal + } +) const togglePlay = () => { playing.value = !playing.value + emit('togglePlay', playing.value) } @@ -153,16 +78,4 @@ const speedChange = () => { const animationChange = () => { emit('animationChange', selectedAnimation.value) } - -defineExpose({ - animations, - selectedAnimation, - playing, - backgroundColor, - showGrid, - lightIntensity, - showLightIntensityButton, - fov, - showFOVButton -}) diff --git a/src/components/load3d/Load3DAnimationScene.vue b/src/components/load3d/Load3DAnimationScene.vue new file mode 100644 index 000000000..fa50235a4 --- /dev/null +++ b/src/components/load3d/Load3DAnimationScene.vue @@ -0,0 +1,162 @@ + + diff --git a/src/components/load3d/Load3DControls.vue b/src/components/load3d/Load3DControls.vue index 6d3dcdc0f..407a263d2 100644 --- a/src/components/load3d/Load3DControls.vue +++ b/src/components/load3d/Load3DControls.vue @@ -2,9 +2,9 @@
- @@ -13,9 +13,11 @@ class="p-button-rounded p-button-text" :class="{ 'p-button-outlined': showGrid }" @click="toggleGrid" - v-tooltip.right="{ value: t('load3d.showGrid'), showDelay: 300 }" > - + -
+
-
+