7 Commits

Author SHA1 Message Date
Drew DeVault
6fb8ee7ba5 Many more optimizations and bugfixes
Again, sorry for the huge commit. Just taking on performance issues as I
see them. Changes in this:

- Deadlocks in region code finally fixed
- Chunk packet preparation optimized (saves ~10-20ms per packet, since
  we're sending these like 30 at a time that's pretty important) by
  storing chunks pre-encoded in memory (basically just using a single
  big array for IDs, metadata, and light)
- Move chunk generation and compression to the thread pool
- Move client chunk updates to the scheduler
- Improve profiler coverage
- Add knob to disable scheduling chunk events on chunk load
- Make it possible to disable specific scheduled events in config.yml
2017-05-23 18:17:44 -04:00
Drew DeVault
08c313a651 Add names to events for profiling puproses 2015-09-07 16:13:18 -04:00
Drew DeVault
14661c7110 Add profiler, improve event scheduler performance 2015-09-07 16:07:39 -04:00
Drew DeVault
7da2ca5a27 Track the subject of each scheduled event
This allows us to cancel events when the subject is no longer around.
For example, if a chunk is unloaded due to inactivity, the events within
it are cancelled (growth of wheat, propegation of fluids, etc). When a
client disconnects, events associated with it are cancelled.

To use this for your own scheduled events, pick a subject. If your
subject does not implement IEventSubject, implement it. Then, you can
pass the subject into ScheduleEvent and that's it. When the subject
dies, your events will die with it. So long as the subject remains
alive, your events still fire.

`null` is a valid subject for events that should happen regardless of
any subject expiring.

Closes #1
2015-07-01 14:02:41 -06:00
Drew DeVault
0bf8f75c5a Revert "Merge pull request #174 from Mitch528/events"
This reverts commit 43d2840171a83e8b8260f981d1918d7ad1c5ed1f, reversing
changes made to 186efa270795abefbef2b5745656fda2ae11610a.
2015-06-26 16:51:28 -06:00
Mitchell Kutchuk
2db4df9b5d Expanded upon EventScheduler
- Events are now sorted
- Thread waits until either a new event is scheduled or an existing
event is ready before continuing.
2015-06-26 10:43:52 -07:00
Drew DeVault
05e132850c Implement scheduled events 2014-12-27 18:19:41 -07:00