mns-mini-zabor/components/model/updateRenderMode.vue

58 lines
1.6 KiB
Vue

<!-- RenderModeController.vue -->
<script setup lang="ts">
import { watch, onMounted } from 'vue';
import { useTresContext } from '@tresjs/core';
// Пропсы для управления render-mode
const props = defineProps({
renderMode: {
type: String,
default: 'always', // Значение по умолчанию
validator: (value: string) => ['always', 'never'].includes(value),
},
});
// Получаем контекст TresJS
const { renderer, scene, camera } = useTresContext();
// Функция для обновления render-mode
const updateRenderMode = () => {
if (!renderer.value || !scene.value || !camera.value) {
console.warn('Tres context is not ready');
return;
}
console.log(scene)
console.log(renderer)
switch (props.renderMode) {
case 'always':
// Рендерим постоянно
scene.value.visible = true
break;
case 'manual':
// Полностью останавливаем рендеринг
scene.value.visible = false
break;
default:
console.warn(`Unsupported render mode: ${props.renderMode}`);
}
};
// Наблюдаем за изменением renderMode
watch(
() => props.renderMode,
() => {
updateRenderMode();
}
);
// Инициализация при монтировании
onMounted(() => {
updateRenderMode();
});
</script>
<template>
<!-- Компонент не требует шаблона, так как он управляет логикой -->
</template>