this refactor includes changes to TClient:
- all member fields are now public, but protected with Sync (an alias
for boost::synchronized_value
- removed all (now) obsolete getters and setters
changes to TServer and TNetwork:
- thread-safe ID generation, previously it was possible for there to be
ID duplicates. this is now solved by moving id generation and
assignment into the same mutex locked context.
- deprecated ForEachClientWeak and replaced some usages of it with
ForEachClient, getting rid of the weak_ptr shit in most places
- implemented a bunch of new functions for getting rid of more weak_ptr
everywhere
The event loop tries to run no faster than every 10ms. If it detects
that it goes faster, it would incorrectly calculate the difference, and
then wait (what I assume was) way too long or too short.
Either way, now it's fixed and it correctly works, even when introducing
new lua states.
this gets rid of a bunch of unclear cases which I mistakenly created
while refactoring for this rewrite. One example is having to call into
TTCPServer to do UDP sending in some cases.