<!-- 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>