Вопрос Crashing Bullet Tracer

Начинающий
Статус
Оффлайн
Регистрация
18 Июн 2017
Сообщения
30
Реакции[?]
32
Поинты[?]
0
Can someone help it crashing

Код:
class CBulletListener
{
    class BulletListener : IGameEventListener2
    {
    public:
        void start()
        {
            if (!Interfaces::EventManager->AddListener(this, "bullet_impact", false))
            {
                throw std::exception("Failed to register the event");
            }
        }
        void stop()
        {
            Interfaces::EventManager->RemoveListener(this);
        }
        void FireGameEvent(IGameEvent* event) override
        {
            CBulletListener::singleton()->OnFireEvent(event);
        }
        int GetEventDebugID(void) override
        {
            return 0x2A;
        }
    };
public:
    static CBulletListener* singleton()
    {
        static CBulletListener* instance = new CBulletListener();
        return instance;
    }

    void init()
    {
        _listener.start();
    }

    void OnFireEvent(IGameEvent* event)
    {
        if (!strcmp(event->GetName(), "bullet_impact"))
        {
            auto index = Interfaces::Engine->GetPlayerForUserID(event->GetInt("userid"));

            if (index != Interfaces::Engine->GetLocalPlayer())
                return;

            auto local = (IClientEntity*)Interfaces::EntList->GetClientEntity(index);

            if (!local)
                return;

            Vector position(event->GetFloat("x"), event->GetFloat("y"), event->GetFloat("z"));

            Ray_t ray;
            ray.Init(local->GetEyePosition(), position);

            CTraceFilter filter;
            filter.pSkip = local;

            trace_t tr;
            Interfaces::Trace->TraceRay(ray, MASK_SHOT, &filter, &tr);

            logs.push_back(cbullet_tracer_info(local->GetEyePosition(), position, Interfaces::Globals->curtime, Color(140, 29, 29, 255)));
        }
    }

    void OnStudioRender()
    {
        if (!Menu::Window.VisualsTab.BulletTracers.GetState())
            return;

        auto local = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());

        if (!local)
            return;

        for (size_t i = 0; i < logs.size(); i++)
        {
            auto current = logs.at(i);

            Interfaces::DebugOverlay->AddLineOverlay(current.src, current.dst, current.color.r(), current.color.g(), current.color.b(), true, -1.f);

            if (fabs(Interfaces::Globals->curtime - current.time) > 3.f)
                logs.erase(logs.begin() + i);
        }
    }

private:
    BulletListener _listener;

    class cbullet_tracer_info
    {
    public:
        cbullet_tracer_info(Vector src, Vector dst, float time, Color color)
        {
            this->src = src;
            this->dst = dst;
            this->time = time;
            this->color = color;
        }

        Vector src, dst;
        float time;
        Color color;
    };

    std::vector<cbullet_tracer_info> logs;
};
 
Сверху Снизу