Mirgrate to bevy 0.14.0

This commit is contained in:
2024-07-09 01:14:45 -04:00
parent ba2dcf7129
commit 0294ce6d24
20 changed files with 1189 additions and 981 deletions

1998
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,6 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
serde = "1.0.203"
serde_json = "1.0.115"
bevy = "0.13.2"
serde = "1.0.204"
serde_json = "1.0.120"
bevy = "0.14.0"

View File

@@ -12,7 +12,7 @@ pub mod macros {
$($string_array_name: ident -> $handle_array_name: ident)* ?
) => {
use bevy::prelude::*;
use bevy::asset::{AssetLoader, AssetEvent, LoadContext, AsyncReadExt, io::Reader};
use bevy::asset::{AssetLoader, AssetEvent, AssetEvents, LoadContext, LoadState, AsyncReadExt, io::Reader};
use bevy::utils::BoxedFuture;
pub struct $plugin_name;
impl Plugin for $plugin_name {
@@ -37,6 +37,7 @@ pub mod macros {
let asset = assets.get_mut(id.clone()).unwrap();
$(
asset.$handle_name = asset_server.load(&asset.$string_name);
)*
$(
@@ -76,25 +77,24 @@ pub mod macros {
type Error = String;
fn load<'a>(
async fn load<'a>(
&'a self,
reader: &'a mut Reader,
reader: &'a mut Reader<'_>,
_settings: &'a Self::Settings,
_load_context: &'a mut LoadContext,
) -> BoxedFuture<'a, Result<Self::Asset, Self::Error>> {
return Box::pin(async move {
let mut data: String = String::new();
let read_result = reader.read_to_string(&mut data).await;
if read_result.is_err() {
return Err(read_result.err().unwrap().to_string());
}
let serialized: Result<Self::Asset, serde_json::Error> =
serde_json::from_str(&data);
if serialized.is_err() {
return Err(serialized.err().unwrap().to_string());
}
return Ok(serialized.unwrap());
});
_load_context: &'a mut LoadContext<'_>,
) -> Result<Self::Asset, Self::Error> {
let mut data: String = String::new();
let read_result = reader.read_to_string(&mut data).await;
if read_result.is_err() {
return Err(read_result.err().unwrap().to_string());
}
let serialized: Result<Self::Asset, serde_json::Error> =
serde_json::from_str(&data);
if serialized.is_err() {
return Err(serialized.err().unwrap().to_string());
}
let r = serialized.unwrap();
return Ok(r);
}
fn extensions(&self) -> &[&str] {

View File

@@ -6,13 +6,13 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = "0.13.2"
bevy = "0.14.0"
noise = "0.9.0"
serde = {version="1.0.203", features=["derive"]}
serde = { version = "1.0.203", features = ["derive"] }
serde_json = "1.0.115"
asset_loader = {path = "../asset_loader"}
asset_loader = { path = "../asset_loader" }
rayon = "1.10.0"
bevy-inspector-egui = "0.24.0"
bevy-inspector-egui = "0.25.0"
[features]
tracing = ["bevy/trace_tracy"]
tracing = ["bevy/trace_tracy"]

View File

@@ -1,9 +1,5 @@
use asset_loader::create_asset_loader;
use bevy::{
asset::{Asset, Handle},
reflect::TypePath,
render::render_resource::encase::rts_array::Length,
};
use bevy::{asset::Asset, reflect::TypePath, render::render_resource::encase::rts_array::Length};
use serde::{Deserialize, Serialize};
use crate::{biome_asset::BiomeAsset, map::biome_map::BiomeData};
@@ -16,16 +12,16 @@ pub struct BiomePainterAsset {
}
impl BiomePainterAsset {
pub fn sample_biome(&self, assets: &Assets<BiomeAsset>, data: &BiomeData) -> Handle<BiomeAsset> {
pub fn sample_biome(&self, assets: &Assets<BiomeAsset>, data: &BiomeData) -> AssetId<BiomeAsset> {
assert!(self.biomes.length() != 0, "There are no biomes");
let mut biome = self.biomes.first().unwrap().clone();
let mut biome = self.biomes.first().unwrap().id();
let mut dist = f32::INFINITY;
for b in &self.biomes {
let asset = assets.get(b).unwrap();
let asset = assets.get(b.id()).unwrap();
let d = asset.distance(data.into());
if d < dist {
biome = b.clone();
biome = b.id();
dist = d;
}
}
@@ -36,7 +32,7 @@ impl BiomePainterAsset {
pub fn build(&self, assets: &Assets<BiomeAsset>) -> BiomePainter {
let mut biomes = Vec::with_capacity(self.biomes.len());
for b in &self.biomes {
let asset = assets.get(b.clone()).unwrap();
let asset = assets.get(b.id()).unwrap();
biomes.push(asset.clone());
}
return BiomePainter { biomes };

View File

@@ -33,7 +33,7 @@ pub fn generate_packed_chunk_mesh(
let n = map.get_neighbors(&coord);
let biome = biomes.get(painter.sample_biome(biomes, &data)).unwrap();
let mapper = mappers.get(biome.tile_mapper.clone());
let mapper = mappers.get(biome.tile_mapper.id());
let tile_handle = mapper.unwrap().sample_tile(height);
let tile = tiles.get(tile_handle).unwrap();

View File

@@ -1,12 +1,11 @@
use bevy::math::{IVec2, UVec2};
use bevy::prelude::{FloatExt, Vec2};
use bevy::utils::default;
use bevy::utils::petgraph::data;
use noise::{NoiseFn, SuperSimplex};
use rayon::iter::{IntoParallelIterator, ParallelIterator};
use crate::biome_painter::{self, BiomePainter};
use crate::map::biome_map::{self, BiomeChunk, BiomeData, BiomeMap};
use crate::biome_painter::BiomePainter;
use crate::map::biome_map::{BiomeChunk, BiomeData, BiomeMap};
use crate::prelude::*;
pub fn generate_heightmap(cfg: &GenerationConfig, seed: u32, painter: &BiomePainter) -> Map {

View File

@@ -35,7 +35,7 @@ impl BiomeMap {
pub fn new(size: UVec2, biome_count: usize) -> Self {
let len = size.x as usize * size.y as usize * Chunk::AREA;
return BiomeMap {
size: size,
size,
height: size.y as usize * Chunk::SIZE,
width: size.x as usize * Chunk::SIZE,
biome_count,

View File

@@ -1,4 +1,4 @@
use bevy::ecs::schedule::States;
use bevy::prelude::*;
#[derive(States, Debug, Clone, PartialEq, Eq, Hash)]
pub enum GeneratorState {

View File

@@ -1,9 +1,5 @@
use asset_loader::create_asset_loader;
use bevy::{
asset::{Asset, Handle},
ecs::system::Resource,
reflect::TypePath,
};
use bevy::{asset::Asset, ecs::system::Resource, reflect::TypePath};
use serde::{Deserialize, Serialize};
#[derive(Resource, Debug)]
pub struct TileManager {

View File

@@ -1,12 +1,8 @@
use asset_loader::create_asset_loader;
use bevy::prelude::*;
use bevy::{
asset::{Asset, Handle},
reflect::TypePath,
};
use bevy::{asset::Asset, reflect::TypePath};
use serde::{Deserialize, Serialize};
use crate::prelude::GeneratorLayer;
use crate::tile_manager::TileAsset;
pub struct TileMapper;
@@ -20,14 +16,14 @@ pub struct TileMapperAsset {
}
impl TileMapperAsset {
pub fn sample_tile(&self, height: f32) -> Handle<TileAsset> {
pub fn sample_tile(&self, height: f32) -> AssetId<TileAsset> {
for i in 0..self.thresholds.len() {
let t = self.thresholds[i];
if t >= height {
return self.tiles[i].clone();
return self.tiles[i].id();
}
}
return self.tiles.last().unwrap().clone();
return self.tiles.last().unwrap().id();
}
}

View File

@@ -6,13 +6,13 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = "0.13.2"
world_generation = {path = "../../engine/world_generation"}
shared = {path = "../shared"}
bevy_rapier3d = "0.26.0"
serde = {version="1.0.203", features=["derive"]}
asset_loader = {path = "../../engine/asset_loader"}
serde_json = "1.0.115"
bevy = "0.14.0"
world_generation = { path = "../../engine/world_generation" }
shared = { path = "../shared" }
bevy_rapier3d = "0.27.0"
serde = { version = "1.0.204", features = ["derive"] }
asset_loader = { path = "../../engine/asset_loader" }
serde_json = "1.0.120"
[features]

View File

@@ -1,13 +1,9 @@
use bevy::{prelude::*, window::PrimaryWindow};
use bevy_rapier3d::{pipeline::QueryFilter, plugin::RapierContext};
use shared::{
despawn::Despawn,
states::{GameplayState, MenuState},
tags::MainCamera,
};
use shared::{despawn::Despawn, states::GameplayState, tags::MainCamera};
use world_generation::{hex_utils::HexCoord, map::map::Map};
use crate::build_queue::{self, BuildQueue, QueueEntry};
use crate::build_queue::{BuildQueue, QueueEntry};
pub struct BuildingPugin;

View File

@@ -7,15 +7,15 @@ build = "build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = "0.13.2"
bevy-inspector-egui = "0.23.4"
iyes_perf_ui = "0.2.3"
bevy = "0.14.0"
bevy-inspector-egui = "0.25.0"
iyes_perf_ui = "0.3.0"
noise = "0.8.2"
world_generation ={path="../../engine/world_generation"}
bevy_rapier3d = { version = "0.26.0", features = [ "simd-stable","parallel" ] }
world_generation = { path = "../../engine/world_generation" }
bevy_rapier3d = { version = "0.27.0", features = ["simd-stable", "parallel"] }
rayon = "1.10.0"
buildings = {path="../buildings"}
shared = {path="../shared"}
buildings = { path = "../buildings" }
shared = { path = "../shared" }
[features]
tracing = ["bevy/trace_tracy", "world_generation/tracing", "buildings/tracing"]
tracing = ["bevy/trace_tracy", "world_generation/tracing", "buildings/tracing"]

View File

@@ -1,4 +1,4 @@
use bevy::ecs::system::CommandQueue;
use bevy::ecs::world::CommandQueue;
use bevy::prelude::*;
use bevy::tasks::*;
use bevy::utils::futures;

View File

@@ -1,7 +1,7 @@
#[cfg(feature = "tracing")]
use bevy::log::*;
use bevy::{
asset::LoadState,
asset::{AssetEvents, LoadState},
pbr::{ExtendedMaterial, NotShadowCaster},
prelude::*,
};
@@ -97,7 +97,7 @@ fn load_textures(
let water_material = water_materials.add(ExtendedMaterial {
base: StandardMaterial {
base_color: Color::CYAN.with_a(0.8),
base_color: Color::srgba(0., 0.5, 1., 0.8),
alpha_mode: AlphaMode::Blend,
..Default::default()
},
@@ -112,10 +112,10 @@ fn load_textures(
});
commands.insert_resource(WaterInspect(water_material.clone()));
commands.insert_resource(ChunkAtlas {
handle: main_tex.clone(),
handle: main_tex,
is_loaded: false,
chunk_material_handle: Handle::default(),
water_material: water_material,
water_material,
});
}
@@ -147,13 +147,12 @@ fn check_asset_load(
return;
}
if asset_server.load_state(atlas.handle.clone()) != LoadState::Loaded {
if asset_server.load_state(atlas.handle.id()) != LoadState::Loaded {
return;
}
if asset_server.load_state(painter.handle.clone()) != LoadState::Loaded {
if asset_server.load_state(painter.handle.id()) != LoadState::Loaded {
return;
}
next_state.set(AssetLoadState::FinalizeAssets);
}
@@ -170,7 +169,7 @@ fn finalize_biome_painter(
return;
}
let painter_asset = biome_painters.get(painter.handle.clone()).unwrap();
let painter_asset = biome_painters.get(painter.handle.id()).unwrap();
let biome_painter = painter_asset.build(&biome_assets);
commands.insert_resource(biome_painter);
next_generator_state.set(GeneratorState::GenerateHeightmap);
@@ -182,7 +181,7 @@ fn finalize_texture(
mut chunk_materials: ResMut<Assets<ExtendedMaterial<StandardMaterial, ChunkMaterial>>>,
mut next_load_state: ResMut<NextState<AssetLoadState>>,
) {
let image = images.get_mut(&atlas.handle).unwrap();
let image = images.get_mut(atlas.handle.id()).unwrap();
let array_layers = image.height() / image.width();
image.reinterpret_stacked_2d_as_array(array_layers);
@@ -264,7 +263,6 @@ fn create_heightmap(
cam_t.translation = heightmap.get_center();
commands.entity(cam_entity).insert(CameraBounds::from_size(config.size));
commands.insert_resource(heightmap);
commands.insert_resource(config);
next_state.set(GeneratorState::SpawnMap);

View File

@@ -55,7 +55,7 @@ impl Plugin for PhosGamePlugin {
app.insert_resource(WireframeConfig {
global: false,
default_color: Color::hex("FF0064").unwrap(),
default_color: Srgba::hex("FF0064").unwrap().into(),
});
}
}
@@ -83,7 +83,7 @@ fn init_game(mut commands: Commands, mut materials: ResMut<Assets<StandardMateri
});
let sphere_mat = StandardMaterial {
base_color: Color::CYAN,
base_color: Color::srgb(1., 1., 0.),
..default()
};
let handle = materials.add(sphere_mat);

View File

@@ -1,7 +1,8 @@
use bevy::asset::Asset;
use bevy::math::VectorSpace;
use bevy::pbr::MaterialExtension;
use bevy::prelude::*;
use bevy::reflect::Reflect;
use bevy::render::color::Color;
use bevy::render::render_resource::{AsBindGroup, ShaderRef, ShaderType};
#[derive(Asset, Reflect, AsBindGroup, Debug, Clone, Default)]
@@ -14,7 +15,7 @@ pub struct WaterMaterial {
pub struct WaterSettings {
pub offset: f32,
pub scale: f32,
pub deep_color: Color,
pub deep_color: Vec3,
}
impl Default for WaterSettings {
@@ -22,7 +23,7 @@ impl Default for WaterSettings {
Self {
offset: 0.0,
scale: 1.0,
deep_color: Color::BLACK,
deep_color: Vec3::ZERO,
}
}
}

View File

@@ -40,7 +40,7 @@ pub fn paint_chunk(
let height = chunk.heights[idx];
let biome_id = chunk.biome_id[idx];
let biome = &painter.biomes[biome_id];
let mapper = mappers.get(biome.tile_mapper.clone());
let mapper = mappers.get(biome.tile_mapper.id());
let tile_handle = mapper.unwrap().sample_tile(height);
let tile = tiles.get(tile_handle).unwrap();
chunk.textures[idx] = [tile.texture_id, tile.side_texture_id];

View File

@@ -6,8 +6,8 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = "0.13.2"
serde = {version="1.0.203", features=["derive"]}
bevy = "0.14.0"
serde = { version = "1.0.204", features = ["derive"] }
[features]