Created
June 2, 2025 18:20
-
-
Save IceSentry/57cac87f21b2daf677c48286380d597f to your computer and use it in GitHub Desktop.
Extract events from main world to render world
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use bevy::{ | |
prelude::*, | |
render::{Extract, RenderApp}, | |
}; | |
fn main() { | |
App::new() | |
.add_plugins(DefaultPlugins) | |
.add_event::<FooEvent>() | |
.add_plugins(ExractEventPlugin) | |
.add_systems(Update, update) | |
.run(); | |
} | |
#[derive(Event, Clone, Copy)] | |
struct FooEvent; | |
fn update(mut events: EventWriter<FooEvent>, time: Res<Time>, mut event_written: Local<bool>) { | |
if !*event_written && time.elapsed_secs() > 1.0 { | |
println!("write event in main world"); | |
events.write(FooEvent); | |
*event_written = true; | |
} | |
} | |
struct ExractEventPlugin; | |
impl Plugin for ExractEventPlugin { | |
fn build(&self, app: &mut App) { | |
if let Some(render_app) = app.get_sub_app_mut(RenderApp) { | |
render_app.add_systems(ExtractSchedule, extract_event); | |
} | |
} | |
} | |
fn extract_event(mut extracted_events: Extract<EventReader<FooEvent>>) { | |
for _ev in extracted_events.read() { | |
println!("event received in render world"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment