#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub enum DebugMode
{
    #[default]
    None,
    Normals,
    Uv,
    Depth,
    Wireframe,
    Colliders,
    ShadowMap,
    SnowLight,
}

impl DebugMode
{
    pub fn cycle(self) -> Self
    {
        match self
        {
            DebugMode::None => DebugMode::Normals,
            DebugMode::Normals => DebugMode::Uv,
            DebugMode::Uv => DebugMode::Depth,
            DebugMode::Depth => DebugMode::Wireframe,
            DebugMode::Wireframe => DebugMode::Colliders,
            DebugMode::Colliders => DebugMode::ShadowMap,
            DebugMode::ShadowMap => DebugMode::SnowLight,
            DebugMode::SnowLight => DebugMode::None,
        }
    }

    pub fn as_u32(self) -> u32
    {
        match self
        {
            DebugMode::None => 0,
            DebugMode::Normals => 1,
            DebugMode::Uv => 2,
            DebugMode::Depth => 3,
            DebugMode::Wireframe => 4,
            DebugMode::Colliders => 5,
            DebugMode::ShadowMap => 6,
            DebugMode::SnowLight => 7,
        }
    }
}
