+ if(pending_reschedule)
+ {
+ scheduler.schedule();
+ pending_reschedule = false;
+ }
+
+ {
+#ifdef DEBUG
+ AccessGuard::BlockForScope _block;
+#endif
+ for(const SystemScheduler::Group &g: scheduler.get_groups())
+ for(System *s: g.systems)
+ {
+ System::Activator act(*s);
+ try
+ {
+ s->tick(dt);
+ }
+ catch(const invalid_access &exc)
+ {
+ throw invalid_access(format("%s by %s", exc.what(), Debug::demangle(typeid(*s).name())));
+ }
+ }
+ }
+