/* VS Code extension doesn't work well with template classes */ #pragma once #include #include "CVehicle.h" #include "Events.h" template class VehExtender { private: inline static std::vector> data; public: static void RemoveVehEntry(CVehicle *pVeh) { for (auto it = data.begin(); it < data.end(); ++it) { if (it->first == pVeh) data.erase(it); } } VehExtender() { plugin::Events::vehicleCtorEvent.after += RemoveVehEntry; } ~VehExtender() { plugin::Events::vehicleCtorEvent.after -= RemoveVehEntry; } VehExtender(const VehExtender&) = delete; T& Get(CVehicle *pVeh) { for (auto it = data.begin(); it < data.end(); ++it) { if (it->first == pVeh) return it->second; } data.push_back({pVeh, T(pVeh)}); return data.back().second; } };