C++ Smooth Shadows

Забаненный
Статус
Оффлайн
Регистрация
1 Фев 2022
Сообщения
32
Реакции[?]
26
Поинты[?]
6K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Смотрю, в одном чите добавили плавное появление теней на карте. Собственно, вот как это делается (знаю, можно было добавить просто параметры границ и клемпа и сделать таким образом функцию универсальной, но это как-то сами справитесь)

C++:
void visuals::custom_shadows()
{
    static auto override_mode = g_interfaces.m_cvar->FindVar(_S("cl_csm_rot_override"));
    static auto cl_csm_rot_x = g_interfaces.m_cvar->FindVar(_S("cl_csm_rot_x"));
    static auto cl_csm_rot_y = g_interfaces.m_cvar->FindVar(_S("cl_csm_rot_y"));
    static auto cl_csm_rot_z = g_interfaces.m_cvar->FindVar(_S("cl_csm_rot_z"));

    static float x = cl_csm_rot_x->GetFloat();
    static float y = cl_csm_rot_y->GetFloat();
    static float z = cl_csm_rot_z->GetFloat();

    if (config.m_custom_shadows && !config.remove_shadows)
    {
        override_mode->SetValue(1);
        utils::modern_clamp_shadows(x, config.m_sunset_x, g_interfaces.m_globals->m_frame_time * 48.f);
        utils::modern_clamp_shadows(y, config.m_sunset_y, g_interfaces.m_globals->m_frame_time * 48.f);
        utils::modern_clamp_shadows(z, config.m_sunset_z, g_interfaces.m_globals->m_frame_time * 48.f);

        cl_csm_rot_x->SetValue(x);
        cl_csm_rot_y->SetValue(y);
        cl_csm_rot_z->SetValue(z);

    }
    else
    {
        override_mode->SetValue(0);
        utils::modern_clamp_shadows(x, 0, g_interfaces.m_globals->m_frame_time * 48.f);
        utils::modern_clamp_shadows(y, 0, g_interfaces.m_globals->m_frame_time * 48.f);
        utils::modern_clamp_shadows(z, 0, g_interfaces.m_globals->m_frame_time * 48.f);
    }
    
}
И, собственно, modern_clamp_shadows
C++:
inline void modern_clamp_shadows(float& target, float to, float step)
    {
        if (target > to)
        {
            target = clamp(target-step, to, 100.f);
            
        }
        else if (target < to)
        {
            target = clamp(target+step, -100.f, to);
            
        }
    }
Поясняю за числа 100 и -100: это просто границы ползунков в меню. По факту там может стоять что угодно. Я поставил 100 для примера.

При желании можно сделать и плавное исчезновение, но это если будет кому-то не лень :)
 
Сверху Снизу