C++ Вопрос Не работает Tick функция

Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,178
Реакции[?]
314
Поинты[?]
152K
есть функция которая вызывает нативы движка rage, решил написать сюда потому что тред по гташке мертвый.
заранее извиняюсь за шапку, не знаю как можно было понятнее описать.
ее вызов выглядит примерно так:
C++:
if (ImGui::Button("clear ped tasks"))
{
    tick::thread_invoker::queue([]
        {
            auto ped = player::player_ped_id();
            ped::clear_ped_tasks_immediatly(ped)
        }
    );
}
сама она выглядит вот так:
tick.hpp:
#pragma once
#include <vector>
#include <sysinfoapi.h>
#include <functional>

namespace tick
{
    class thread_invoker
    {
    public:

        inline static void queue(std::function<void()> func)
        {
            funcs_to_invoke.emplace_back(std::make_pair(func, GetTickCount64()));
        }

        void on_tick()
        {
            auto current_tick = GetTickCount64();
            for (auto& funcs : funcs_to_invoke)
            {
                if (current_tick - funcs.second < 1000)
                {
                    funcs.first();
                }
            }

            funcs_to_invoke.clear();
        }
    private:
        inline static std::vector<std::pair<std::function<void()>, uintptr_t>> funcs_to_invoke;
    };

    inline thread_invoker pnative;
}
проблема состоит в том, что во время простого вызова этих нативов игру фризит на секунду за вызов одного натива.
дабы эта тема работала адекватно в сурсе валялась эта функция, и оно почему то на отрез отказывается их вызывать. при ее вызове ничего не происходит, все стопится на 14-ой строчке
я вообще от слова совсем не понимаю ее код, за исключением пары строк, и причину проблемы найти не могу.
буду очень благодарен если кто-то обьяснит как оно работает и что надо сделать чтобы оно работало.

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
anonymous
Забаненный
Статус
Оффлайн
Регистрация
18 Окт 2022
Сообщения
609
Реакции[?]
216
Поинты[?]
144K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
inline static std::vector<std::pair<std::function<void()>, uintptr_t>> funcs_to_invoke;
 
Сверху Снизу