mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'assets_manager-0.9' into 'master'
Update to `assets_manager 0.9 See merge request veloren/veloren!3723
This commit is contained in:
commit
b328377979
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -259,9 +259,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "assets_manager"
|
||||
version = "0.8.4"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "881c75fa0f271acf5440031d68d05398cea3e17dc8a418300839eaf0fed57cd2"
|
||||
checksum = "5cf9ce861ea14ebc2339372bafa6b7607adabfddd5679fee761956b3f76243eb"
|
||||
dependencies = [
|
||||
"ab_glyph",
|
||||
"ahash 0.8.0",
|
||||
|
@ -16,7 +16,7 @@ use hashbrown::HashMap;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{borrow::Cow, io};
|
||||
|
||||
use assets::{source::DirEntry, AssetExt, AssetGuard, AssetHandle, ReloadWatcher};
|
||||
use assets::{source::DirEntry, AssetExt, AssetGuard, AssetHandle, ReloadWatcher, SharedString};
|
||||
use tracing::warn;
|
||||
// Re-export because I don't like prefix
|
||||
use common_assets as assets;
|
||||
@ -148,7 +148,7 @@ impl Language {
|
||||
}
|
||||
|
||||
impl assets::Compound for Language {
|
||||
fn load(cache: assets::AnyCache, path: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(cache: assets::AnyCache, path: &SharedString) -> Result<Self, assets::BoxedError> {
|
||||
let manifest = cache
|
||||
.load::<raw::Manifest>(&[path, ".", "_manifest"].concat())?
|
||||
.cloned();
|
||||
@ -180,7 +180,7 @@ impl assets::Compound for Language {
|
||||
};
|
||||
|
||||
let resource = FluentResource::try_new(src).map_err(|(_ast, errs)| {
|
||||
ResourceErr::parsing_error(errs, id.to_owned(), &source.src)
|
||||
ResourceErr::parsing_error(errs, id.to_string(), &source.src)
|
||||
})?;
|
||||
|
||||
bundle
|
||||
@ -445,12 +445,15 @@ impl LocalizationHandle {
|
||||
struct FindManifests;
|
||||
|
||||
impl assets::DirLoadable for FindManifests {
|
||||
fn select_ids<S: assets::Source + ?Sized>(
|
||||
source: &S,
|
||||
specifier: &str,
|
||||
) -> io::Result<Vec<assets::SharedString>> {
|
||||
fn select_ids(
|
||||
cache: assets::AnyCache,
|
||||
specifier: &SharedString,
|
||||
) -> io::Result<Vec<SharedString>> {
|
||||
use assets::Source;
|
||||
|
||||
let mut specifiers = Vec::new();
|
||||
|
||||
let source = cache.source();
|
||||
source.read_dir(specifier, &mut |entry| {
|
||||
if let DirEntry::Directory(spec) = entry {
|
||||
let manifest_spec = [spec, ".", "_manifest"].concat();
|
||||
@ -469,7 +472,7 @@ impl assets::DirLoadable for FindManifests {
|
||||
struct LocalizationList(Vec<LanguageMetadata>);
|
||||
|
||||
impl assets::Compound for LocalizationList {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(cache: assets::AnyCache, specifier: &SharedString) -> Result<Self, assets::BoxedError> {
|
||||
// List language directories
|
||||
let languages = assets::load_dir::<FindManifests>(specifier, false)
|
||||
.unwrap_or_else(|e| panic!("Failed to get manifests from {}: {:?}", specifier, e))
|
||||
|
@ -7,7 +7,7 @@ version = "0.10.0"
|
||||
|
||||
[dependencies]
|
||||
lazy_static = "1.4.0"
|
||||
assets_manager = {version = "0.8.1", features = ["bincode", "ron", "json"]}
|
||||
assets_manager = {version = "0.9", features = ["bincode", "ron", "json"]}
|
||||
ron = { version = "0.8", default-features = false }
|
||||
dot_vox = "4.0"
|
||||
wavefront = "0.2" # TODO: Use vertex-colors branch when we have models that have them
|
||||
|
@ -206,7 +206,10 @@ pub mod figuredata {
|
||||
}
|
||||
|
||||
impl assets::Compound for ShipSpec {
|
||||
fn load(cache: assets::AnyCache, _: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
_: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
let manifest: AssetHandle<Ron<ShipCentralSpec>> =
|
||||
AssetExt::load("common.manifests.ship_manifest")?;
|
||||
let mut colliders = HashMap::new();
|
||||
|
@ -658,7 +658,7 @@ impl PartialEq for Item {
|
||||
}
|
||||
|
||||
impl assets::Compound for ItemDef {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, BoxedError> {
|
||||
fn load(cache: assets::AnyCache, specifier: &assets::SharedString) -> Result<Self, BoxedError> {
|
||||
if specifier.starts_with("veloren.core.") {
|
||||
return Err(format!(
|
||||
"Attempted to load an asset from a specifier reserved for core veloren functions. \
|
||||
@ -796,7 +796,7 @@ impl Item {
|
||||
pub fn new_from_asset_glob(asset_glob: &str) -> Result<Vec<Self>, Error> {
|
||||
let specifier = asset_glob.strip_suffix(".*").unwrap_or(asset_glob);
|
||||
let defs = assets::load_dir::<RawItemDef>(specifier, true)?;
|
||||
defs.ids().map(Item::new_from_asset).collect()
|
||||
defs.ids().map(|id| Item::new_from_asset(id)).collect()
|
||||
}
|
||||
|
||||
/// Creates a new instance of an `Item from the provided asset identifier if
|
||||
@ -1253,7 +1253,7 @@ pub fn all_item_defs_expect() -> Vec<String> {
|
||||
/// Returns all item asset specifiers
|
||||
pub fn try_all_item_defs() -> Result<Vec<String>, Error> {
|
||||
let defs = assets::load_dir::<RawItemDef>("common.items", true)?;
|
||||
Ok(defs.ids().map(|id| id.to_owned()).collect())
|
||||
Ok(defs.ids().map(|id| id.to_string()).collect())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -434,7 +434,10 @@ impl Asset for AbilityMap<String> {
|
||||
}
|
||||
|
||||
impl assets::Compound for AbilityMap {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
specifier: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
let manifest = cache.load::<AbilityMap<String>>(specifier)?.read();
|
||||
|
||||
Ok(AbilityMap(
|
||||
|
@ -1272,7 +1272,7 @@ mod tests {
|
||||
let loadout =
|
||||
LoadoutSpec::load_cloned(loadout_id).expect("failed to load loadout asset");
|
||||
loadout
|
||||
.validate(vec![loadout_id.to_owned()])
|
||||
.validate(vec![loadout_id.to_string()])
|
||||
.unwrap_or_else(|e| panic!("{loadout_id} is broken: {e:?}"));
|
||||
}
|
||||
}
|
||||
@ -1287,7 +1287,7 @@ mod tests {
|
||||
let loadout =
|
||||
LoadoutSpec::load_cloned(loadout_id).expect("failed to load loadout asset");
|
||||
loadout
|
||||
.validate(vec![loadout_id.to_owned()])
|
||||
.validate(vec![loadout_id.to_string()])
|
||||
.unwrap_or_else(|e| panic!("{loadout_id} is broken: {e:?}"));
|
||||
}
|
||||
}
|
||||
|
@ -466,7 +466,10 @@ impl EqualitySet {
|
||||
}
|
||||
|
||||
impl assets::Compound for EqualitySet {
|
||||
fn load(cache: assets::AnyCache, id: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
id: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
#[derive(Debug, Deserialize)]
|
||||
enum EqualitySpec {
|
||||
LootTable(String),
|
||||
|
@ -145,7 +145,7 @@ impl EntityConfig {
|
||||
/// Return all entity config specifiers
|
||||
pub fn try_all_entity_configs() -> Result<Vec<String>, Error> {
|
||||
let configs = assets::load_dir::<EntityConfig>("common.entity", true)?;
|
||||
Ok(configs.ids().map(|id| id.to_owned()).collect())
|
||||
Ok(configs.ids().map(|id| id.to_string()).collect())
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -473,7 +473,10 @@ impl assets::Asset for ItemList {
|
||||
}
|
||||
|
||||
impl assets::Compound for RecipeBook {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
specifier: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
#[inline]
|
||||
fn load_item_def(spec: &(String, u32)) -> Result<(Arc<ItemDef>, u32), assets::Error> {
|
||||
let def = Arc::<ItemDef>::load_cloned(&spec.0)?;
|
||||
@ -828,7 +831,10 @@ enum RawComponentOutput {
|
||||
}
|
||||
|
||||
impl assets::Compound for ComponentRecipeBook {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
specifier: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
#[inline]
|
||||
fn create_recipe_key(raw_recipe: &RawComponentRecipe) -> ComponentKey {
|
||||
match &raw_recipe.output {
|
||||
@ -903,7 +909,10 @@ pub fn default_component_recipe_book() -> AssetHandle<ComponentRecipeBook> {
|
||||
}
|
||||
|
||||
impl assets::Compound for ReverseComponentRecipeBook {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(
|
||||
cache: assets::AnyCache,
|
||||
specifier: &assets::SharedString,
|
||||
) -> Result<Self, assets::BoxedError> {
|
||||
let forward = cache.load::<ComponentRecipeBook>(specifier)?.cloned();
|
||||
let mut recipes = HashMap::new();
|
||||
for (_, recipe) in forward.iter() {
|
||||
|
@ -68,7 +68,7 @@ impl std::ops::Deref for StructuresGroup {
|
||||
}
|
||||
|
||||
impl assets::Compound for StructuresGroup {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, BoxedError> {
|
||||
fn load(cache: assets::AnyCache, specifier: &assets::SharedString) -> Result<Self, BoxedError> {
|
||||
let specs = cache.load::<StructuresGroupSpec>(specifier)?.read();
|
||||
|
||||
Ok(StructuresGroup(
|
||||
@ -136,7 +136,7 @@ impl ReadVol for Structure {
|
||||
}
|
||||
|
||||
impl assets::Compound for BaseStructure {
|
||||
fn load(cache: assets::AnyCache, specifier: &str) -> Result<Self, BoxedError> {
|
||||
fn load(cache: assets::AnyCache, specifier: &assets::SharedString) -> Result<Self, BoxedError> {
|
||||
let dot_vox_data = cache.load::<DotVoxAsset>(specifier)?.read();
|
||||
let dot_vox_data = &dot_vox_data.0;
|
||||
|
||||
|
@ -96,7 +96,7 @@ server = { package = "veloren-server", path = "../server", optional = true, defa
|
||||
clap = { version = "3.2.20", features = ["derive"] }
|
||||
|
||||
# Utility
|
||||
assets_manager = {version = "0.8", features = ["ab_glyph"]}
|
||||
assets_manager = {version = "0.9", features = ["ab_glyph"]}
|
||||
backtrace = "0.3.40"
|
||||
bincode = "1.3.1"
|
||||
chrono = { version = "0.4.22", features = ["serde"] }
|
||||
|
@ -552,7 +552,7 @@ impl assets::Asset for SoundtrackCollection<RawSoundtrackItem> {
|
||||
}
|
||||
|
||||
impl assets::Compound for SoundtrackCollection<SoundtrackItem> {
|
||||
fn load(_: assets::AnyCache, id: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(_: assets::AnyCache, id: &assets::SharedString) -> Result<Self, assets::BoxedError> {
|
||||
let manifest: AssetHandle<SoundtrackCollection<RawSoundtrackItem>> = AssetExt::load(id)?;
|
||||
let mut soundtrack = SoundtrackCollection::default();
|
||||
for item in manifest.read().tracks.iter().cloned() {
|
||||
|
@ -24,7 +24,7 @@ pub struct Shaders {
|
||||
impl assets::Compound for Shaders {
|
||||
// TODO: Taking the specifier argument as a base for shaders specifiers
|
||||
// would allow to use several shaders groups easily
|
||||
fn load(_: assets::AnyCache, _: &str) -> Result<Shaders, assets::BoxedError> {
|
||||
fn load(_: assets::AnyCache, _: &assets::SharedString) -> Result<Shaders, assets::BoxedError> {
|
||||
let shaders = [
|
||||
"include.constants",
|
||||
"include.globals",
|
||||
|
@ -125,7 +125,7 @@ macro_rules! make_vox_spec {
|
||||
}
|
||||
|
||||
impl assets::Compound for $Spec {
|
||||
fn load(_: assets::AnyCache, _: &str) -> Result<Self, assets::BoxedError> {
|
||||
fn load(_: assets::AnyCache, _: &assets::SharedString) -> Result<Self, assets::BoxedError> {
|
||||
Ok($Spec {
|
||||
$( $field: AssetExt::load($asset_path)?, )*
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user