+std::invocable

This commit is contained in:
NukeBird 2025-02-20 00:20:12 +03:00
parent 27cf20fac3
commit f313d64d4a

View file

@ -1,4 +1,5 @@
#pragma once #pragma once
#include <concepts>
#include <functional> #include <functional>
#include <vector> #include <vector>
@ -7,9 +8,9 @@ namespace zecsy
class system_scheduler final class system_scheduler final
{ {
public: public:
void add_system(float freq, auto&& func); void add_system(float freq, std::invocable<float> auto&& func);
void add_system(int freq, auto&& func); void add_system(int freq, std::invocable<float> auto&& func);
void update(float dt); void update(float dt);
@ -24,13 +25,15 @@ namespace zecsy
std::vector<system_handler> systems; std::vector<system_handler> systems;
}; };
inline void system_scheduler::add_system(float freq, auto&& func) inline void system_scheduler::add_system(float freq,
std::invocable<float> auto&& func)
{ {
systems.emplace_back(1.0f / freq, 0.0f, systems.emplace_back(1.0f / freq, 0.0f,
std::forward<decltype(func)>(func)); std::forward<decltype(func)>(func));
} }
inline void system_scheduler::add_system(int freq, auto&& func) inline void system_scheduler::add_system(int freq,
std::invocable<float> auto&& func)
{ {
add_system(float(freq), func); add_system(float(freq), func);
} }