Skip to main content

HotReloadWatcher

Struct HotReloadWatcher 

Source
pub struct HotReloadWatcher { /* private fields */ }
Expand description

Watches asset files for changes and triggers reloads.

§Thread Safety

HotReloadWatcher is Send but NOT Sync. It should be accessed from the main thread and used with AssetServer in the game loop.

§Example

use goud_engine::assets::{AssetServer, HotReloadWatcher, HotReloadConfig};
use std::time::Duration;

let mut server = AssetServer::new();
let config = HotReloadConfig::new()
    .with_debounce(Duration::from_millis(200))
    .watch_extension("png")
    .watch_extension("json");

let mut watcher = HotReloadWatcher::with_config(&server, config).unwrap();

// In game loop
loop {
    watcher.process_events(&mut server);
    // ... render, update, etc.
}

Implementations§

Source§

impl HotReloadWatcher

Source

pub fn new(server: &AssetServer) -> NotifyResult<Self>

Creates a new hot reload watcher for the given asset server.

Uses default configuration (enabled in debug builds).

§Errors

Returns an error if the file watcher cannot be initialized.

§Example
use goud_engine::assets::{AssetServer, HotReloadWatcher};

let server = AssetServer::new();
let watcher = HotReloadWatcher::new(&server).unwrap();
Source

pub fn with_config( server: &AssetServer, config: HotReloadConfig, ) -> NotifyResult<Self>

Creates a new hot reload watcher with custom configuration.

§Errors

Returns an error if the file watcher cannot be initialized.

Source

pub fn watch(&mut self, path: impl AsRef<Path>) -> NotifyResult<()>

Starts watching a directory for changes.

§Arguments
  • path - Directory to watch (typically the asset root)
§Errors

Returns an error if the path cannot be watched.

§Example
watcher.watch("assets").unwrap();
Source

pub fn unwatch(&mut self, path: impl AsRef<Path>) -> NotifyResult<()>

Stops watching a directory.

§Errors

Returns an error if the path cannot be unwatched.

Source

pub fn is_watching(&self, path: &Path) -> bool

Returns whether a path is currently being watched.

Source

pub fn watched_paths(&self) -> &HashSet<PathBuf>

Returns the set of watched paths.

Source

pub fn config(&self) -> &HotReloadConfig

Returns the configuration.

Source

pub fn config_mut(&mut self) -> &mut HotReloadConfig

Returns a mutable reference to the configuration.

Note: Changing the configuration does not affect already-watched paths.

Source

pub fn process_events(&mut self, server: &mut AssetServer) -> usize

Processes pending file system events and reloads changed assets.

Call this once per frame in your game loop.

§Returns

The number of assets that were reloaded.

§Example
loop {
    let reloaded = watcher.process_events(&mut server);
    if reloaded > 0 {
        println!("Reloaded {} assets", reloaded);
    }
    // ... rest of game loop
}
Source

pub fn clear_debounce(&mut self)

Clears the debounce map.

Useful for testing or forcing immediate reloads.

Trait Implementations§

Source§

impl Debug for HotReloadWatcher

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,