58 lines
1.6 KiB
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> |