From f98116f0f89b8aabd5ef3ce70d10dc2631fd37a6 Mon Sep 17 00:00:00 2001 From: Michael Hsu Date: Fri, 13 May 2022 17:53:24 -0700 Subject: [PATCH 01/14] send time from render to app through channels --- crates/bevy_core/Cargo.toml | 1 + crates/bevy_render/src/lib.rs | 6 ++++++ crates/bevy_render/src/renderer/mod.rs | 10 ++++++++++ crates/bevy_time/src/time.rs | 23 +++++++++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/crates/bevy_core/Cargo.toml b/crates/bevy_core/Cargo.toml index 7035d2fbc2235..add0c03275cb1 100644 --- a/crates/bevy_core/Cargo.toml +++ b/crates/bevy_core/Cargo.toml @@ -19,4 +19,5 @@ bevy_tasks = { path = "../bevy_tasks", version = "0.8.0-dev" } bevy_utils = { path = "../bevy_utils", version = "0.8.0-dev" } # other +async-channel = "1.4" bytemuck = "1.5" diff --git a/crates/bevy_render/src/lib.rs b/crates/bevy_render/src/lib.rs index 0caa1a75bc29c..087f88b150b24 100644 --- a/crates/bevy_render/src/lib.rs +++ b/crates/bevy_render/src/lib.rs @@ -183,6 +183,12 @@ impl Plugin for RenderPlugin { .insert_resource(asset_server) .init_resource::(); + let (sender, receiver) = bevy_core::create_time_channels(); + app.insert_resource(receiver); + render_app + .init_resource::() + .insert_resource(sender); + app.add_sub_app(RenderApp, render_app, move |app_world, render_app| { #[cfg(feature = "trace")] let _render_span = bevy_utils::tracing::info_span!("renderer subapp").entered(); diff --git a/crates/bevy_render/src/renderer/mod.rs b/crates/bevy_render/src/renderer/mod.rs index 07667096ac30b..6390291ea0228 100644 --- a/crates/bevy_render/src/renderer/mod.rs +++ b/crates/bevy_render/src/renderer/mod.rs @@ -10,6 +10,7 @@ use crate::{ settings::{WgpuSettings, WgpuSettingsPriority}, view::{ExtractedWindows, ViewTarget}, }; +use bevy_core::{Time, TimeSender}; use bevy_ecs::prelude::*; use std::sync::Arc; use wgpu::{AdapterInfo, CommandEncoder, Instance, Queue, RequestAdapterOptions}; @@ -73,6 +74,15 @@ pub fn render_system(world: &mut World) { tracy.frame_mark = true ); } + + // update the time and send it to the app world + world.resource_scope(|world, mut time: Mut