diff options
author | tcmal <me@aria.rip> | 2024-08-25 17:44:24 +0100 |
---|---|---|
committer | tcmal <me@aria.rip> | 2024-08-25 17:44:24 +0100 |
commit | 6367a9ba5a549b62f01da61fb50323877b9f52ff (patch) | |
tree | eb83ed6487f2ec35f9ea1e97124c9a173b8ceef0 /stockton-skeleton/src/session.rs | |
parent | f84ec1a3e077fa0f2e9cd310b6e32e81f1bc1129 (diff) |
refactor(all): move types to -skeleton
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); + } +} |