#pragma once #include #include "flecs.h" struct TickAccumulator { uint16_t MaxTick{1}; uint16_t AccumulatedTick; constexpr bool Finished() const { return AccumulatedTick >= MaxTick; } }; struct Freezes {}; inline void Flecs_Tick(flecs::world& world) { world.component() .member("MaxTick") .member("AccumulatedTick") .add(flecs::Inheritable); world.component(); world.system("Tick Increase") .kind(flecs::PreUpdate) .without() .each([] (TickAccumulator& tick) { ++tick.AccumulatedTick; }); world.system("Tick Reset") .kind(flecs::PostUpdate) .without() .each([] (TickAccumulator& tick) { tick.AccumulatedTick -= tick.MaxTick * tick.Finished(); }); }