Struct bevy::asset::io::file::FileAssetReader
pub struct FileAssetReader { /* private fields */ }
Available on non-WebAssembly only.
Expand description
I/O implementation for the local filesystem.
This asset I/O is fully featured but it’s not available on android
and wasm
targets.
Implementations§
§impl FileAssetReader
impl FileAssetReader
pub fn new<P>(path: P) -> FileAssetReader
pub fn new<P>(path: P) -> FileAssetReader
Creates a new FileAssetIo
at a path relative to the executable’s directory, optionally
watching for changes.
See get_base_path
below.
pub fn get_base_path() -> PathBuf
pub fn get_base_path() -> PathBuf
Returns the base path of the assets directory, which is normally the executable’s parent directory.
If the CARGO_MANIFEST_DIR
environment variable is set, then its value will be used
instead. It’s set by cargo when running with cargo run
.
Examples found in repository?
examples/animation/animation_graph.rs (line 186)
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
fn setup_assets_programmatically(
commands: &mut Commands,
asset_server: &mut AssetServer,
animation_graphs: &mut Assets<AnimationGraph>,
_save: bool,
) {
// Create the nodes.
let mut animation_graph = AnimationGraph::new();
let blend_node = animation_graph.add_blend(0.5, animation_graph.root);
animation_graph.add_clip(
asset_server.load("models/animated/Fox.glb#Animation0"),
1.0,
animation_graph.root,
);
animation_graph.add_clip(
asset_server.load("models/animated/Fox.glb#Animation1"),
1.0,
blend_node,
);
animation_graph.add_clip(
asset_server.load("models/animated/Fox.glb#Animation2"),
1.0,
blend_node,
);
// If asked to save, do so.
#[cfg(not(target_arch = "wasm32"))]
if _save {
let animation_graph = animation_graph.clone();
IoTaskPool::get()
.spawn(async move {
let mut animation_graph_writer = File::create(Path::join(
&FileAssetReader::get_base_path(),
Path::join(Path::new("assets"), Path::new(ANIMATION_GRAPH_PATH)),
))
.expect("Failed to open the animation graph asset");
ron::ser::to_writer_pretty(
&mut animation_graph_writer,
&animation_graph,
PrettyConfig::default(),
)
.expect("Failed to serialize the animation graph");
})
.detach();
}
// Add the graph.
let handle = animation_graphs.add(animation_graph);
// Save the assets in a resource.
commands.insert_resource(ExampleAnimationGraph(handle));
}
Trait Implementations§
§impl AssetReader for FileAssetReader
impl AssetReader for FileAssetReader
§async fn read<'a>(
&'a self,
path: &'a Path
) -> Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>
async fn read<'a>( &'a self, path: &'a Path ) -> Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>
Returns a future to load the full file data at the provided path.
§async fn read_meta<'a>(
&'a self,
path: &'a Path
) -> Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>
async fn read_meta<'a>( &'a self, path: &'a Path ) -> Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>
Returns a future to load the full file data at the provided path.
§async fn read_directory<'a>(
&'a self,
path: &'a Path
) -> Result<Box<dyn Stream<Item = PathBuf> + Unpin + Send>, AssetReaderError>
async fn read_directory<'a>( &'a self, path: &'a Path ) -> Result<Box<dyn Stream<Item = PathBuf> + Unpin + Send>, AssetReaderError>
Returns an iterator of directory entry names at the provided path.
§async fn is_directory<'a>(
&'a self,
path: &'a Path
) -> Result<bool, AssetReaderError>
async fn is_directory<'a>( &'a self, path: &'a Path ) -> Result<bool, AssetReaderError>
Returns true if the provided path points to a directory.
§fn read_meta_bytes<'a>(&'a self, path: &'a Path) -> impl ConditionalSendFuture
fn read_meta_bytes<'a>(&'a self, path: &'a Path) -> impl ConditionalSendFuture
Reads asset metadata bytes at the given
path
into a Vec<u8>
. This is a convenience
function that wraps AssetReader::read_meta
by default.Auto Trait Implementations§
impl Freeze for FileAssetReader
impl RefUnwindSafe for FileAssetReader
impl Send for FileAssetReader
impl Sync for FileAssetReader
impl Unpin for FileAssetReader
impl UnwindSafe for FileAssetReader
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> ErasedAssetReader for Twhere
T: AssetReader,
impl<T> ErasedAssetReader for Twhere
T: AssetReader,
§fn read<'a>(
&'a self,
path: &'a Path
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>> + 'a>>
fn read<'a>( &'a self, path: &'a Path ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>> + 'a>>
Returns a future to load the full file data at the provided path.
§fn read_meta<'a>(
&'a self,
path: &'a Path
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>> + 'a>>
fn read_meta<'a>( &'a self, path: &'a Path ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn AsyncReadAndSeek + Unpin + Sync + Send + 'a>, AssetReaderError>> + 'a>>
Returns a future to load the full file data at the provided path.
§fn read_directory<'a>(
&'a self,
path: &'a Path
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn Stream<Item = PathBuf> + Unpin + Send>, AssetReaderError>> + 'a>>
fn read_directory<'a>( &'a self, path: &'a Path ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Box<dyn Stream<Item = PathBuf> + Unpin + Send>, AssetReaderError>> + 'a>>
Returns an iterator of directory entry names at the provided path.
§fn is_directory<'a>(
&'a self,
path: &'a Path
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<bool, AssetReaderError>> + 'a>>
fn is_directory<'a>( &'a self, path: &'a Path ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<bool, AssetReaderError>> + 'a>>
Returns true if the provided path points to a directory.
§fn read_meta_bytes<'a>(
&'a self,
path: &'a Path
) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Vec<u8>, AssetReaderError>> + 'a>>
fn read_meta_bytes<'a>( &'a self, path: &'a Path ) -> Pin<Box<dyn ConditionalSendFuture<Output = Result<Vec<u8>, AssetReaderError>> + 'a>>
Reads asset metadata bytes at the given
path
into a Vec<u8>
. This is a convenience
function that wraps ErasedAssetReader::read_meta
by default.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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 more