Files
factory-hole-core/include/Components/Tick.hpp
2026-02-09 00:53:38 +09:00

44 lines
842 B
C++

#pragma once
#include <cstdint>
#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<TickAccumulator>()
.member<uint16_t>("MaxTick")
.member<uint16_t>("AccumulatedTick")
.add(flecs::Inheritable);
world.component<Freezes>();
world.system<TickAccumulator>("Tick Increase")
.kind(flecs::PreUpdate)
.without<Freezes, TickAccumulator>()
.each([] (TickAccumulator& tick)
{
++tick.AccumulatedTick;
});
world.system<TickAccumulator>("Tick Reset")
.kind(flecs::PostUpdate)
.without<Freezes, TickAccumulator>()
.each([] (TickAccumulator& tick)
{
tick.AccumulatedTick -= tick.MaxTick * tick.Finished();
});
}