Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Гайд Simple speedometer

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Апр 2025
Сообщения
60
Реакции
2
C++:
Expand Collapse Copy
inline bool Speedometer = false;
inline float localSpeed;
inline float localSpeed_m[100];
inline int CurrentSpeedIndex = 0;


C++:
Expand Collapse Copy
float x = stLocalBaseEntity.m_vecAbsVelocity[0];
float y = stLocalBaseEntity.m_vecAbsVelocity[1];
float z = stLocalBaseEntity.m_vecAbsVelocity[2];

localSpeed = sqrt(x * x + y * y + z * z);


Функция для обновления данных в массиве
C++:
Expand Collapse Copy
void UpdateSpeedData(float newSpeed)
{
    localSpeed = newSpeed;

    localSpeed_m[CurrentSpeedIndex] = localSpeed;
    CurrentSpeedIndex++;

    if (CurrentSpeedIndex >= 100)
        CurrentSpeedIndex = 0;
}

Отрисовка в имгуе

C++:
Expand Collapse Copy
if (Speedometer)
{
    ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
    ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 5.0f, 5.0f });
    ImGui::PushStyleColor(ImGuiCol_WindowBg, { 0.0f, 0.0f, 0.0f, 0.3f });

    ImGui::Begin("SpeedWidget", nullptr,
        ImGuiWindowFlags_NoTitleBar |
        ImGuiWindowFlags_NoResize |
        ImGuiWindowFlags_AlwaysAutoResize);

    UpdateSpeedData(localSpeed);

    ImGui::PushStyleColor(ImGuiCol_PlotLines, ImVec4(1.0f, 0.5f, 0.0f, 1.0f));
    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.0f, 0.0f, 0.0f, 0.2f));

    ImGui::PlotLines("##speed",
        localSpeed_m,
        100,
        CurrentSpeedIndex,
        NULL,
        0.0f,
        500.0f,
        ImVec2(0, 120.0f));

    ImGui::PopStyleColor(2);

    ImGui::Text("Speed: %.1f", localSpeed);

    ImGui::End();
    ImGui::PopStyleColor();
    ImGui::PopStyleVar(2);
}

Результат

1761976060633.png
 
это покруче будет
 
это покруче будет
там просто скорость а у меня график, мне интереснее видеть где идет потеря скорости чем просто скорость
 
а зачем спидометр вообще нужен?
ну типа кому вообще не похуй на значение своей скорости?
Чтобы отслеживать спайки на БХОПе?
Вообще тутору идеальное название подходит: Velocity Graph
Код:
Expand Collapse Copy
if (Speedometer)
{
    ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
    ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 5.0f, 5.0f });
    ImGui::PushStyleColor(ImGuiCol_WindowBg, { 0.0f, 0.0f, 0.0f, 0.3f });

    ImGui::Begin("SpeedWidget", nullptr,
        ImGuiWindowFlags_NoTitleBar |
        ImGuiWindowFlags_NoResize |
        ImGuiWindowFlags_AlwaysAutoResize);

    UpdateSpeedData(localSpeed);

    ImGui::PushStyleColor(ImGuiCol_PlotLines, ImVec4(1.0f, 0.5f, 0.0f, 1.0f));
    ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.0f, 0.0f, 0.0f, 0.2f));

    ImGui::PlotLines("##speed",
        localSpeed_m,
        100,
        CurrentSpeedIndex,
        NULL,
        0.0f,
        500.0f,
        ImVec2(0, 120.0f));

    ImGui::PopStyleColor(2);

    ImGui::Text("Speed: %.1f", localSpeed);

    ImGui::End();
    ImGui::PopStyleColor();
    ImGui::PopStyleVar(2);
}
круто конечно, но нахуя? если ВАК детектит процес Imguя ? Ну автоматически вакает
 
Чтобы отслеживать спайки на БХОПе?
Вообще тутору идеальное название подходит: Velocity Graph

круто конечно, но нахуя? если ВАК детектит процес Imguя ? Ну автоматически вакает
как ты к оформлению стиля привязал вак? Если руки не из жопы детекта не будет
 
друг взгляни где тема опубликовала - source2

он видимо отдельно имгуй запускает как ехе, вот процесс и детектит) а про потоки он не знает
наверное я понимаю что движок сурс2, и я имел ввиду какой у тебя двигатель
 
Назад
Сверху Снизу