diff options
Diffstat (limited to 'stockton-skeleton/src/session.rs')
-rw-r--r-- | stockton-skeleton/src/session.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/stockton-skeleton/src/session.rs b/stockton-skeleton/src/session.rs new file mode 100644 index 0000000..5b91739 --- /dev/null +++ b/stockton-skeleton/src/session.rs @@ -0,0 +1,33 @@ +//! The thing you play on and all the associated state. + +use legion::systems::Builder; +use legion::*; + +/// A loaded world. +pub struct Session { + pub world: World, + pub resources: Resources, + schedule: Schedule, +} + +impl Session { + /// The level can be any format, as long as it has the required features of a bsp. + pub fn new<S: FnOnce(&mut Builder)>(add_systems: S) -> Session { + let world = World::default(); + + let resources = Resources::default(); + let mut schedule = Schedule::builder(); + add_systems(&mut schedule); + let schedule = schedule.build(); + + Session { + world, + resources, + schedule, + } + } + + pub fn do_update(&mut self) { + self.schedule.execute(&mut self.world, &mut self.resources); + } +} |