Use bevy_app instead
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 25m2s
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 25m2s
This commit is contained in:
parent
8b0c59f7c0
commit
a295093c97
12 changed files with 98 additions and 79 deletions
63
Cargo.lock
generated
63
Cargo.lock
generated
|
@ -199,6 +199,36 @@ version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bevy_app"
|
||||||
|
version = "0.15.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a0ac033a388b8699d241499a43783a09e6a3bab2430f1297c6bd4974095efb3f"
|
||||||
|
dependencies = [
|
||||||
|
"bevy_derive",
|
||||||
|
"bevy_ecs",
|
||||||
|
"bevy_reflect",
|
||||||
|
"bevy_tasks",
|
||||||
|
"bevy_utils",
|
||||||
|
"console_error_panic_hook",
|
||||||
|
"ctrlc",
|
||||||
|
"derive_more",
|
||||||
|
"downcast-rs",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bevy_derive"
|
||||||
|
version = "0.15.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "57d94761ce947b0a2402fd949fe1e7a5b1535293130ba4cd9893be6295d4680a"
|
||||||
|
dependencies = [
|
||||||
|
"bevy_macro_utils",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bevy_ecs"
|
name = "bevy_ecs"
|
||||||
version = "0.15.3"
|
version = "0.15.3"
|
||||||
|
@ -462,6 +492,16 @@ dependencies = [
|
||||||
"crossbeam-utils",
|
"crossbeam-utils",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "console_error_panic_hook"
|
||||||
|
version = "0.1.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "const-random"
|
name = "const-random"
|
||||||
version = "0.1.18"
|
version = "0.1.18"
|
||||||
|
@ -543,6 +583,16 @@ version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
|
checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ctrlc"
|
||||||
|
version = "3.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c"
|
||||||
|
dependencies = [
|
||||||
|
"nix",
|
||||||
|
"windows-sys 0.59.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cursor-icon"
|
name = "cursor-icon"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
|
@ -993,6 +1043,18 @@ dependencies = [
|
||||||
"jni-sys",
|
"jni-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.29.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.9.0",
|
||||||
|
"cfg-if",
|
||||||
|
"cfg_aliases",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nom"
|
name = "nom"
|
||||||
version = "7.1.3"
|
version = "7.1.3"
|
||||||
|
@ -1533,6 +1595,7 @@ name = "rust_vulkan_test"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"bevy_app",
|
||||||
"bevy_ecs",
|
"bevy_ecs",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"glam",
|
"glam",
|
||||||
|
|
|
@ -17,8 +17,9 @@ vulkano-shaders = "0.35"
|
||||||
glam = { version = "0.30" }
|
glam = { version = "0.30" }
|
||||||
|
|
||||||
# ECS
|
# ECS
|
||||||
bevy_ecs = "0.15.3"
|
bevy_ecs = "0.15"
|
||||||
|
bevy_app = "0.15"
|
||||||
|
|
||||||
# Log and tracing
|
# Log and tracing
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
env_logger = "0.11.5"
|
env_logger = "0.11"
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
use std::error::Error;
|
|
||||||
|
|
||||||
use bevy_ecs::world::World;
|
|
||||||
|
|
||||||
pub enum AppExit {
|
|
||||||
Success,
|
|
||||||
Error(Box<dyn Error>),
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type RunnerFn = Box<dyn FnOnce(App) -> AppExit>;
|
|
||||||
|
|
||||||
#[derive(Debug, thiserror::Error)]
|
|
||||||
pub enum AppError {
|
|
||||||
#[error("Runner is not set")]
|
|
||||||
RunnerNotSet,
|
|
||||||
#[error("Runner returned an error : {0}")]
|
|
||||||
RunnerError(Box<dyn Error>),
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct App {
|
|
||||||
world: World,
|
|
||||||
runner: Option<RunnerFn>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for App {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self {
|
|
||||||
world: World::new(),
|
|
||||||
runner: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl App {
|
|
||||||
pub fn world_mut(&mut self) -> &mut World {
|
|
||||||
&mut self.world
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn world(&self) -> &World {
|
|
||||||
&self.world
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn run(mut self) -> Result<(), AppError> {
|
|
||||||
match self.runner.take() {
|
|
||||||
Some(runner) => match runner(self) {
|
|
||||||
AppExit::Success => Ok(()),
|
|
||||||
AppExit::Error(e) => Err(AppError::RunnerError(e)),
|
|
||||||
},
|
|
||||||
None => Err(AppError::RunnerNotSet),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_runner(&mut self, runner: RunnerFn) {
|
|
||||||
self.runner = Some(runner);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
mod app;
|
|
||||||
pub use app::*;
|
|
|
@ -1,4 +1,3 @@
|
||||||
pub mod app;
|
|
||||||
pub mod camera;
|
pub mod camera;
|
||||||
pub mod render;
|
pub mod render;
|
||||||
pub mod vulkan;
|
pub mod vulkan;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use vulkan_context::VulkanContext;
|
use vulkan_context::VulkanContext;
|
||||||
use window_render_context::WindowRenderContext;
|
use window_render_context::WindowRenderContext;
|
||||||
|
|
||||||
use super::app::App;
|
use bevy_app::App;
|
||||||
|
|
||||||
mod utils;
|
mod utils;
|
||||||
mod vulkan_context;
|
mod vulkan_context;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use std::{any::Any, sync::Arc};
|
use std::{any::Any, sync::Arc};
|
||||||
|
|
||||||
|
use bevy_app::App;
|
||||||
use bevy_ecs::system::Resource;
|
use bevy_ecs::system::Resource;
|
||||||
use vulkano::{
|
use vulkano::{
|
||||||
command_buffer::{
|
command_buffer::{
|
||||||
|
@ -14,7 +15,7 @@ use vulkano::{
|
||||||
};
|
};
|
||||||
use winit::raw_window_handle::{HasDisplayHandle, HasWindowHandle};
|
use winit::raw_window_handle::{HasDisplayHandle, HasWindowHandle};
|
||||||
|
|
||||||
use crate::core::{app::App, window::raw_handle::DisplayHandleWrapper};
|
use crate::core::window::raw_handle::DisplayHandleWrapper;
|
||||||
|
|
||||||
use super::utils;
|
use super::utils;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use bevy_app::App;
|
||||||
use bevy_ecs::system::Resource;
|
use bevy_ecs::system::Resource;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use vulkano::image::view::ImageView;
|
use vulkano::image::view::ImageView;
|
||||||
|
@ -8,7 +9,6 @@ use vulkano::sync::{self, GpuFuture};
|
||||||
use vulkano::{Validated, VulkanError};
|
use vulkano::{Validated, VulkanError};
|
||||||
use winit::window::Window;
|
use winit::window::Window;
|
||||||
|
|
||||||
use crate::core::app::App;
|
|
||||||
use crate::core::window::raw_handle::WindowWrapper;
|
use crate::core::window::raw_handle::WindowWrapper;
|
||||||
|
|
||||||
use super::vulkan_context::VulkanContext;
|
use super::vulkan_context::VulkanContext;
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
use bevy_app::{App, AppExit};
|
||||||
use config::WindowConfig;
|
use config::WindowConfig;
|
||||||
use raw_handle::{DisplayHandleWrapper, EventLoopProxyWrapper};
|
use raw_handle::{DisplayHandleWrapper, EventLoopProxyWrapper};
|
||||||
use state::WindowState;
|
use state::WindowState;
|
||||||
use winit::event_loop::EventLoop;
|
use winit::event_loop::EventLoop;
|
||||||
|
|
||||||
use super::app::{App, AppExit};
|
|
||||||
|
|
||||||
pub mod config;
|
pub mod config;
|
||||||
pub mod raw_handle;
|
pub mod raw_handle;
|
||||||
pub mod state;
|
pub mod state;
|
||||||
|
@ -43,6 +42,9 @@ fn runner(mut app: App, event_loop: EventLoop<()>) -> AppExit {
|
||||||
|
|
||||||
match event_loop.run_app(&mut window_state) {
|
match event_loop.run_app(&mut window_state) {
|
||||||
Ok(_) => AppExit::Success,
|
Ok(_) => AppExit::Success,
|
||||||
Err(e) => AppExit::Error(Box::new(e)),
|
Err(e) => {
|
||||||
|
log::error!("Error running window state: {e}");
|
||||||
|
AppExit::error()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use bevy_app::App;
|
||||||
use bevy_ecs::world::World;
|
use bevy_ecs::world::World;
|
||||||
use winit::{
|
use winit::{
|
||||||
application::ApplicationHandler, event::WindowEvent, event_loop::ActiveEventLoop,
|
application::ApplicationHandler, event::WindowEvent, event_loop::ActiveEventLoop,
|
||||||
window::WindowId,
|
window::WindowId,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::core::app::App;
|
|
||||||
|
|
||||||
use super::{config::WindowConfig, raw_handle::WindowWrapper};
|
use super::{config::WindowConfig, raw_handle::WindowWrapper};
|
||||||
|
|
||||||
pub struct WindowState {
|
pub struct WindowState {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
use bevy_app::App;
|
||||||
|
|
||||||
use crate::core::{
|
use crate::core::{
|
||||||
app::App,
|
|
||||||
vulkan::Vulkan,
|
vulkan::Vulkan,
|
||||||
window::{Window, config::WindowConfig},
|
window::{Window, config::WindowConfig},
|
||||||
};
|
};
|
||||||
|
|
29
src/main.rs
29
src/main.rs
|
@ -1,29 +1,40 @@
|
||||||
use std::error::Error;
|
|
||||||
use winit::event_loop::{ControlFlow, EventLoop};
|
use winit::event_loop::{ControlFlow, EventLoop};
|
||||||
|
|
||||||
|
use bevy_app::{App, AppExit};
|
||||||
|
|
||||||
pub mod core;
|
pub mod core;
|
||||||
pub mod game;
|
pub mod game;
|
||||||
pub mod old_app;
|
pub mod old_app;
|
||||||
|
|
||||||
fn main() -> Result<(), impl Error> {
|
fn main() {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
|
|
||||||
run_new_app()
|
run_new_app();
|
||||||
// run_old_app()
|
// run_old_app();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_new_app() -> Result<(), impl Error> {
|
fn run_new_app() {
|
||||||
let mut app = core::app::App::default();
|
let mut app = App::default();
|
||||||
game::init(&mut app);
|
game::init(&mut app);
|
||||||
app.run()
|
match app.run() {
|
||||||
|
AppExit::Success => {}
|
||||||
|
AppExit::Error(e) => {
|
||||||
|
log::error!("Error running new app: {e}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_old_app() -> Result<(), impl Error> {
|
fn run_old_app() {
|
||||||
let event_loop = EventLoop::new().unwrap();
|
let event_loop = EventLoop::new().unwrap();
|
||||||
event_loop.set_control_flow(ControlFlow::Poll);
|
event_loop.set_control_flow(ControlFlow::Poll);
|
||||||
|
|
||||||
let vulkan_context = old_app::vulkan_context::VulkanContext::from(&event_loop);
|
let vulkan_context = old_app::vulkan_context::VulkanContext::from(&event_loop);
|
||||||
let mut app = old_app::app::App::from(vulkan_context);
|
let mut app = old_app::app::App::from(vulkan_context);
|
||||||
|
|
||||||
event_loop.run_app(&mut app)
|
match event_loop.run_app(&mut app) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
log::error!("Error running old app: {e}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue