using UnityEngine;

[ExecuteInEditMode]
public class SkyboxRotator : MonoBehaviour
{
    // Skybox의 회전 속도를 설정할 수 있는 공개 변수
    [Range(0f, 360f)] public float rotationSpeed = 10f;

    // Skybox 재질을 직접 지정할 수 있는 옵션
    public Material customSkyboxMaterial;

    // 현재 씬에서 적용된 Skybox의 회전 각도
    private float skyboxRotation;

    void Start()
    {
        // 씬에 적용된 Skybox가 없고, 사용자 정의 Skybox가 설정되어 있으면 적용
        if (RenderSettings.skybox == null && customSkyboxMaterial != null)
        {
            RenderSettings.skybox = customSkyboxMaterial;
        }
    }

    // Skybox 회전을 위한 함수
    void Update()
    {
        // Skybox를 회전시키는 로직
        skyboxRotation += rotationSpeed * Time.deltaTime;
        if (skyboxRotation > 360f)
        {
            skyboxRotation -= 360f;
        }

        // Skybox 회전 값 적용
        RenderSettings.skybox.SetFloat("_Rotation", skyboxRotation);
    }

    // 외부에서 Skybox 회전 값을 수동으로 설정하는 함수 (예: Timeline에서 사용)
    public void SetSkyboxRotation(float rotation)
    {
        skyboxRotation = rotation;
        RenderSettings.skybox.SetFloat("_Rotation", skyboxRotation);
    }
}
