Repository navigation
v3.0 - Pulse Event Scheduling
What's New
- Pulse-based events — sub-second scheduling driven by server tick via
AddPulseEvent. Callback returns next delay (> 0reschedule,<= 0stop). - Rewritten internals — integer-ID flat vector + free list, dual priority queues (seconds + pulses), generation-based stale detection. O(log n) scheduling, designed for 10k+ events.
- New query API —
GetPulseDelay,IsPulseEventfor pulse event introspection. - 40+ tests — pulse basics, safety (self-remove, cross-remove, re-add from callback), query API, mixed scenarios, edge cases, Destroy-during-callback, 1200-event scale test.
int32_treturn type — pulse callbacks use fixed-widthint32_tinstead oflongfor consistent behavior across 32-bit and 64-bit platforms.- Updated README — CI badge, pulse usage examples, API reference table.
Breaking Changes
None. All existing AddEvent signatures are unchanged. New API is additive only.
New API
| Method | Description |
|---|---|
AddPulseEvent(func, name, pulseDelay) |
Add pulse-based event. Callback returns next delay. |
GetPulseDelay(name) |
Remaining pulses. Returns 0 for seconds/missing events. |
IsPulseEvent(name) |
True if active pulse event. |