Skip to content

Commit 44af369

Browse files
committed
Update for Bevy 0.15
1 parent f3fb688 commit 44af369

File tree

6 files changed

+65
-25
lines changed

6 files changed

+65
-25
lines changed

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bevy_embedded_assets"
3-
version = "0.11.0"
3+
version = "0.12.0-rc.1"
44
authors = ["François Mockers <[email protected]>"]
55
edition = "2021"
66
license = "MIT OR Apache-2.0"
@@ -18,7 +18,7 @@ default = ["default-source"]
1818
default-source = ["futures-io", "futures-lite"]
1919

2020
[dependencies.bevy]
21-
version = "0.14.0"
21+
version = "0.15.0-rc.3"
2222
default-features = false
2323
features = ["bevy_asset"]
2424

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ fn main() {
2828
|Bevy|bevy_embedded_assets|
2929
|---|---|
3030
|main|main|
31+
|0.15|0.12|
3132
|0.14|0.11|
3233
|0.13|0.10|
3334
|0.12|0.9|

src/asset_reader.rs

+35-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ use std::{
66
};
77

88
use bevy::{
9-
asset::io::{AssetReader, AssetReaderError, ErasedAssetReader, PathStream, Reader},
9+
asset::io::{
10+
AssetReader, AssetReaderError, AsyncSeekForward, ErasedAssetReader, PathStream, Reader,
11+
},
1012
utils::HashMap,
1113
};
1214
use futures_io::{AsyncRead, AsyncSeek};
@@ -147,6 +149,20 @@ impl EmbeddedAssetReader {
147149
#[derive(Default, Debug, Clone, Copy)]
148150
pub struct DataReader(pub &'static [u8]);
149151

152+
impl Reader for DataReader {
153+
fn read_to_end<'a>(
154+
&'a mut self,
155+
buf: &'a mut Vec<u8>,
156+
) -> bevy::asset::io::StackFuture<
157+
'a,
158+
std::io::Result<usize>,
159+
{ bevy::asset::io::STACK_FUTURE_SIZE },
160+
> {
161+
let future = futures_lite::AsyncReadExt::read_to_end(self, buf);
162+
bevy::asset::io::StackFuture::from(future)
163+
}
164+
}
165+
150166
impl AsyncRead for DataReader {
151167
fn poll_read(
152168
self: Pin<&mut Self>,
@@ -171,6 +187,19 @@ impl AsyncSeek for DataReader {
171187
}
172188
}
173189

190+
impl AsyncSeekForward for DataReader {
191+
fn poll_seek_forward(
192+
self: Pin<&mut Self>,
193+
_: &mut std::task::Context<'_>,
194+
_offset: u64,
195+
) -> Poll<futures_io::Result<u64>> {
196+
Poll::Ready(Err(futures_io::Error::new(
197+
futures_io::ErrorKind::Other,
198+
EmbeddedDataReaderError::SeekNotSupported,
199+
)))
200+
}
201+
}
202+
174203
#[derive(Error, Debug)]
175204
enum EmbeddedDataReaderError {
176205
#[error("Seek is not supported when embeded")]
@@ -203,10 +232,11 @@ pub(crate) fn get_meta_path(path: &Path) -> PathBuf {
203232
}
204233

205234
impl AssetReader for EmbeddedAssetReader {
206-
async fn read<'a>(&'a self, path: &'a Path) -> Result<Box<Reader<'a>>, AssetReaderError> {
235+
// async fn read<'a>(&'a self, path: &'a Path) -> Result<Box<dyn Reader>, AssetReaderError> {
236+
async fn read<'a>(&'a self, path: &'a Path) -> Result<impl Reader + 'a, AssetReaderError> {
207237
if self.has_file_sync(path) {
208238
self.load_path_sync(path).map(|reader| {
209-
let boxed: Box<Reader> = Box::new(reader);
239+
let boxed: Box<dyn Reader> = Box::new(reader);
210240
boxed
211241
})
212242
} else if let Some(fallback) = self.fallback.as_ref() {
@@ -216,11 +246,11 @@ impl AssetReader for EmbeddedAssetReader {
216246
}
217247
}
218248

219-
async fn read_meta<'a>(&'a self, path: &'a Path) -> Result<Box<Reader<'a>>, AssetReaderError> {
249+
async fn read_meta<'a>(&'a self, path: &'a Path) -> Result<impl Reader + 'a, AssetReaderError> {
220250
let meta_path = get_meta_path(path);
221251
if self.has_file_sync(&meta_path) {
222252
self.load_path_sync(&meta_path).map(|reader| {
223-
let boxed: Box<Reader> = Box::new(reader);
253+
let boxed: Box<dyn Reader> = Box::new(reader);
224254
boxed
225255
})
226256
} else if let Some(fallback) = self.fallback.as_ref() {

tests/as_default.rs

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
use std::fmt::Display;
44

5-
use bevy::prelude::*;
5+
use bevy::{
6+
asset::{io::Reader, LoadContext},
7+
prelude::*,
8+
};
69
use bevy_embedded_assets::{EmbeddedAssetPlugin, PluginMode};
710
use thiserror::Error;
811

@@ -27,11 +30,11 @@ impl bevy::asset::AssetLoader for TestAssetLoader {
2730
type Asset = TestAsset;
2831
type Settings = ();
2932
type Error = TestError;
30-
async fn load<'a>(
31-
&'a self,
32-
reader: &'a mut bevy::asset::io::Reader<'_>,
33-
_: &'a (),
34-
_: &'a mut bevy::asset::LoadContext<'_>,
33+
async fn load(
34+
&self,
35+
reader: &mut dyn Reader,
36+
_: &(),
37+
_: &mut LoadContext<'_>,
3538
) -> Result<Self::Asset, Self::Error> {
3639
let mut bytes = Vec::new();
3740
bevy::asset::AsyncReadExt::read_to_end(reader, &mut bytes)

tests/as_default_with_fallback.rs

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
use std::fmt::Display;
44

5-
use bevy::prelude::*;
5+
use bevy::{
6+
asset::{io::Reader, LoadContext},
7+
prelude::*,
8+
};
69
use bevy_embedded_assets::{EmbeddedAssetPlugin, PluginMode};
710
use thiserror::Error;
811

@@ -27,11 +30,11 @@ impl bevy::asset::AssetLoader for TestAssetLoader {
2730
type Asset = TestAsset;
2831
type Settings = ();
2932
type Error = TestError;
30-
async fn load<'a>(
31-
&'a self,
32-
reader: &'a mut bevy::asset::io::Reader<'_>,
33-
_: &'a (),
34-
_: &'a mut bevy::asset::LoadContext<'_>,
33+
async fn load(
34+
&self,
35+
reader: &mut dyn Reader,
36+
_: &(),
37+
_: &mut LoadContext<'_>,
3538
) -> Result<Self::Asset, Self::Error> {
3639
let mut bytes = Vec::new();
3740
bevy::asset::AsyncReadExt::read_to_end(reader, &mut bytes)

tests/embedded.rs

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use std::fmt::Display;
22

3-
use bevy::prelude::*;
3+
use bevy::{
4+
asset::{io::Reader, LoadContext},
5+
prelude::*,
6+
};
47
use bevy_embedded_assets::EmbeddedAssetPlugin;
58
use thiserror::Error;
69

@@ -25,11 +28,11 @@ impl bevy::asset::AssetLoader for TestAssetLoader {
2528
type Asset = TestAsset;
2629
type Settings = ();
2730
type Error = TestError;
28-
async fn load<'a>(
29-
&'a self,
30-
reader: &'a mut bevy::asset::io::Reader<'_>,
31-
_: &'a (),
32-
_: &'a mut bevy::asset::LoadContext<'_>,
31+
async fn load(
32+
&self,
33+
reader: &mut dyn Reader,
34+
_: &(),
35+
_: &mut LoadContext<'_>,
3336
) -> Result<Self::Asset, Self::Error> {
3437
let mut bytes = Vec::new();
3538
bevy::asset::AsyncReadExt::read_to_end(reader, &mut bytes)

0 commit comments

Comments
 (0)