pub struct ResourceManager {
pub resources: HashMap<String, Box<dyn LoadableResource>>,
}Expand description
Manages a collection of loadable resources indexed by their name
Fields§
§resources: HashMap<String, Box<dyn LoadableResource>>Map resource name to a type that implements LoadableResource trait
Implementations§
Source§impl ResourceManager
impl ResourceManager
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new manager with empty resources field
Examples found in repository?
examples/hello.rs (line 60)
59async fn main() {
60 let resource_manager = Arc::new(Mutex::new(ResourceManager::new()));
61 let graphics = graphics::GraphicsBuilder::new()
62 .window_name(String::from("game"))
63 .dimensions((500, 500))
64 .resource_manager(resource_manager.clone())
65 // we bulk load resources here because either we'll have to deal with
66 // ownership of `graphics` (the actual `let graphics`, not the closure
67 // argument)
68 // you may think of it like about just some initialization func
69 .initializer(|graphics| {
70 resource_manager.lock().unwrap().load_dir(PathBuf::from("assets"), graphics).unwrap();
71 })
72 .build();
73 let mut window = Window::new(graphics.unwrap(), resource_manager);
74
75 // because events::run takes a `&'static mut dyn WindowEventHandler` as a second argument we
76 // need to do this seemingly weird thing (while `app.rs` in fennel-engine has an ass solution
77 // with raw pointers lmfao)
78 let handler: &'static mut dyn WindowEventHandler = {
79 let boxed = Box::new(State);
80 Box::leak(boxed) as &'static mut dyn WindowEventHandler
81 };
82 events::run(&mut window, handler).await;
83}Sourcepub fn load_dir(&mut self, path: PathBuf, graphics: &mut Graphics) -> Result<()>
pub fn load_dir(&mut self, path: PathBuf, graphics: &mut Graphics) -> Result<()>
Loads assets from a directory, which must contain a manifest
§Errors
Returns an error if manifest does not exist in the target directory
Examples found in repository?
examples/hello.rs (line 70)
59async fn main() {
60 let resource_manager = Arc::new(Mutex::new(ResourceManager::new()));
61 let graphics = graphics::GraphicsBuilder::new()
62 .window_name(String::from("game"))
63 .dimensions((500, 500))
64 .resource_manager(resource_manager.clone())
65 // we bulk load resources here because either we'll have to deal with
66 // ownership of `graphics` (the actual `let graphics`, not the closure
67 // argument)
68 // you may think of it like about just some initialization func
69 .initializer(|graphics| {
70 resource_manager.lock().unwrap().load_dir(PathBuf::from("assets"), graphics).unwrap();
71 })
72 .build();
73 let mut window = Window::new(graphics.unwrap(), resource_manager);
74
75 // because events::run takes a `&'static mut dyn WindowEventHandler` as a second argument we
76 // need to do this seemingly weird thing (while `app.rs` in fennel-engine has an ass solution
77 // with raw pointers lmfao)
78 let handler: &'static mut dyn WindowEventHandler = {
79 let boxed = Box::new(State);
80 Box::leak(boxed) as &'static mut dyn WindowEventHandler
81 };
82 events::run(&mut window, handler).await;
83}Sourcepub fn cache_asset(&mut self, asset: Box<dyn LoadableResource>) -> Result<()>
pub fn cache_asset(&mut self, asset: Box<dyn LoadableResource>) -> Result<()>
Insert a loaded asset into the cache
The asset is stored under the key returned by asset.name()
pub fn get_asset(&self, name: String) -> Result<&Box<dyn LoadableResource>>
Trait Implementations§
Source§impl Default for ResourceManager
impl Default for ResourceManager
impl Send for ResourceManager
impl Sync for ResourceManager
Auto Trait Implementations§
impl Freeze for ResourceManager
impl !RefUnwindSafe for ResourceManager
impl Unpin for ResourceManager
impl !UnwindSafe for ResourceManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().