I guess the main thing is the use case of this breakneck type is quite complicated. It needs to sleep for 1/UpdatesPerSecond, 1/FramesPerSecond, or 1/MaxThrottle, and needs to be able to resume sleeping for the next event. e.g. if we resume for render but update is not due yet, then we just need to sleep for the remaining time until update is due or the max throttle (whichever is smaller)
from a readability perspective it would help to understand that none of these if blocks can be entered at the same time at runtime and it would also help if that had to be changed in the future
I mean really all of this out of scope of this type, this is basically just a wrapper over a sleep function, so really it needs to sleep for TimeSpan and maybe return how long we actually slept for. Any further time tracking is out of scope of this type.
in any case its 1am for me so i aint doing the actual limiter part now, but breaknecksleep now takes a duration like any self-respecting sleep function should
whoops, turns out my pr from last night doesnt build still because i didnt have the lab sample thing in my .gen.sln and didnt notice it needed changing