Чит крашит когда рендерю авто пик (иногда мигает)
Код:
void c_movement::draw_autopeek()
{
if (!g_interfaces->m_engine->is_connected() || !g_interfaces->m_engine->is_in_game() || !g_ctx->m_local_pawn)
return;
vec3_t position = vec3_t();
if (!m_quick_peek_data.m_old_origin.is_zero())
position = m_quick_peek_data.m_old_origin;
if (position.is_zero())
return;
if (g_key_handler->is_pressed(g_cfg->misc.m_override_quick_peek_assistant, g_cfg->misc.m_override_quick_peek_assistant_style))
{
vec3_t circle_pos = position;
circle_pos.z += 3.0f;
vec3_t screen_pos;
g_render->circle_3d(circle_pos, 30.0f, c_color(255, 255, 255, 255), 32);
static float m_last_time = 0.f;
float m_current_time = g_interfaces->m_global_vars->m_current_time;
if (m_current_time - m_last_time < 1.5f)
return;
m_last_time = m_current_time;
}
}
Код:
void c_render::circle_3d(const vec3_t& position, float radius, const c_color& color, int segments) {
float step = (2.0f * IM_PI) / segments;
for (int i = 0; i < segments; i++) {
float angle1 = step * i;
float angle2 = step * (i + 1);
vec3_t point1 = position + vec3_t{ cos(angle1) * radius, sin(angle1) * radius, 0 };
vec3_t point2 = position + vec3_t{ cos(angle2) * radius, sin(angle2) * radius, 0 };
vec3_t screen1, screen2;
if (world_to_screen(point1, screen1) && world_to_screen(point2, screen2)) {
line(screen1, screen2, color);
}
}
}