﻿using UnityEngine;
using UnityEngine.Rendering;

namespace HorizonBasedAmbientOcclusion.Universal
{
    public class HBAOControl : MonoBehaviour
    {
        public VolumeProfile postProcessProfile;
        public UnityEngine.UI.Slider aoRadiusSlider;

        private bool m_HbaoDisplayed = true;

        public void Start()
        {
            HBAO hbao;
            postProcessProfile.TryGet(out hbao);

            if (hbao != null)
            {
                hbao.EnableHBAO(true);
                hbao.SetDebugMode(HBAO.DebugMode.Disabled);
                hbao.SetAoRadius(aoRadiusSlider.value);
            }
        }

        public void ToggleHBAO()
        {
            HBAO hbao;
            postProcessProfile.TryGet(out hbao);

            if (hbao != null)
            {
                m_HbaoDisplayed = !m_HbaoDisplayed;
                hbao.EnableHBAO(m_HbaoDisplayed);
            }
        }

        public void ToggleShowAO()
        {
            HBAO hbao;
            postProcessProfile.TryGet(out hbao);

            if (hbao != null)
            {
                if (hbao.GetDebugMode() != HBAO.DebugMode.Disabled)
                    hbao.SetDebugMode(HBAO.DebugMode.Disabled);
                else
                    hbao.SetDebugMode(HBAO.DebugMode.AOOnly);
            }
        }

        public void UpdateAoRadius()
        {
            HBAO hbao;
            postProcessProfile.TryGet(out hbao);

            if (hbao != null)
                hbao.SetAoRadius(aoRadiusSlider.value);
        }
    }
}
