1use std::ops::{Deref, DerefMut};
2
3use crate::{gotham_state::GothamState, resource_table::ResourceTable};
4
5#[derive(Default, Debug)]
10pub struct GlobalResourceManager {
11 pub resource_table: ResourceTable,
12 pub gotham_state: GothamState,
13}
14
15unsafe impl Send for GlobalResourceManager {}
17unsafe impl Sync for GlobalResourceManager {}
18
19impl GlobalResourceManager {
20 pub fn new() -> Self {
22 Self {
23 resource_table: ResourceTable::default(),
24 gotham_state: GothamState::default(),
25 }
26 }
27
28 pub fn clear(&mut self) {
31 std::mem::take(&mut self.gotham_state);
32 std::mem::take(&mut self.resource_table);
33 }
34}
35impl Deref for GlobalResourceManager {
36 type Target = GothamState;
37
38 fn deref(&self) -> &Self::Target {
39 &self.gotham_state
40 }
41}
42
43impl DerefMut for GlobalResourceManager {
44 fn deref_mut(&mut self) -> &mut Self::Target {
45 &mut self.gotham_state
46 }
47}