render_plugin: Add first SubApp and default schedules
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m49s

This commit is contained in:
Florian RICHER 2025-05-18 18:02:54 +02:00
parent f585ba78e7
commit 0ee29a3649
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77
7 changed files with 164 additions and 2 deletions

View 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");
}