render_plugin: Add first SubApp and default schedules
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m49s
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m49s
This commit is contained in:
parent
f585ba78e7
commit
0ee29a3649
7 changed files with 164 additions and 2 deletions
9
crates/engine_render/Cargo.toml
Normal file
9
crates/engine_render/Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "engine_render"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
log = { workspace = true }
|
||||
bevy_app = { workspace = true }
|
||||
bevy_ecs = { workspace = true }
|
65
crates/engine_render/src/lib.rs
Normal file
65
crates/engine_render/src/lib.rs
Normal file
|
@ -0,0 +1,65 @@
|
|||
use bevy_app::{App, AppLabel, Last, Plugin, SubApp};
|
||||
use bevy_ecs::{
|
||||
schedule::{IntoScheduleConfigs, Schedule, ScheduleLabel, SystemSet},
|
||||
system::Commands,
|
||||
};
|
||||
|
||||
#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)]
|
||||
pub enum RenderSystems {
|
||||
Prepare,
|
||||
Queue,
|
||||
Render,
|
||||
Present,
|
||||
}
|
||||
|
||||
#[derive(ScheduleLabel, Debug, Hash, PartialEq, Eq, Clone, Default)]
|
||||
pub struct Render;
|
||||
|
||||
impl Render {
|
||||
pub fn base_schedule() -> Schedule {
|
||||
use RenderSystems::*;
|
||||
|
||||
let mut schedule = Schedule::new(Self);
|
||||
|
||||
schedule.configure_sets((Prepare, Queue, Render, Present).chain());
|
||||
|
||||
schedule
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, AppLabel)]
|
||||
pub struct RenderApp;
|
||||
|
||||
pub struct RenderPlugin;
|
||||
|
||||
impl Plugin for RenderPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
let mut render_app = SubApp::new();
|
||||
render_app.update_schedule = Some(Render.intern());
|
||||
|
||||
render_app.add_schedule(Render::base_schedule());
|
||||
|
||||
render_app.add_systems(Render, test_prepare.in_set(RenderSystems::Prepare));
|
||||
render_app.add_systems(Render, test_queue.in_set(RenderSystems::Queue));
|
||||
render_app.add_systems(Render, test_render.in_set(RenderSystems::Render));
|
||||
render_app.add_systems(Render, test_present.in_set(RenderSystems::Present));
|
||||
|
||||
app.insert_sub_app(RenderApp, render_app);
|
||||
}
|
||||
}
|
||||
|
||||
fn test_prepare(mut commands: Commands) {
|
||||
log::info!("test_prepare");
|
||||
}
|
||||
|
||||
fn test_queue(mut commands: Commands) {
|
||||
log::info!("test_queue");
|
||||
}
|
||||
|
||||
fn test_render(mut commands: Commands) {
|
||||
log::info!("test_render");
|
||||
}
|
||||
|
||||
fn test_present(mut commands: Commands) {
|
||||
log::info!("test_present");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue