 3c829d7f68
			
		
	
	
		3c829d7f68
		
			
		
	
	
	
	
		
			
			# Objective - Contributes to #11478 - Contributes to #16877 ## Solution - Removed everything except `Instant` from `bevy_utils::time` ## Testing - CI --- ## Migration Guide If you relied on any of the following from `bevy_utils::time`: - `Duration` - `TryFromFloatSecsError` Import these directly from `core::time` regardless of platform target (WASM, mobile, etc.) If you relied on any of the following from `bevy_utils::time`: - `SystemTime` - `SystemTimeError` Instead import these directly from either `std::time` or `web_time` as appropriate for your target platform. ## Notes `Duration` and `TryFromFloatSecsError` are both re-exports from `core::time` regardless of whether they are used from `web_time` or `std::time`, so there is no value gained from re-exporting them from `bevy_utils::time` as well. As for `SystemTime` and `SystemTimeError`, no Bevy internal crates or examples rely on these types. Since Bevy doesn't have a `Time<Wall>` resource for interacting with wall-time (and likely shouldn't need one), I think removing these from `bevy_utils` entirely and waiting for a use-case to justify inclusion is a reasonable path forward.
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! This example shows how to configure the `ScheduleRunnerPlugin` to run your
 | |
| //! application without windowing. You can completely remove rendering / windowing
 | |
| //! Plugin code from bevy by making your import look like this in your Cargo.toml.
 | |
| //!
 | |
| //! ```toml
 | |
| //! [dependencies]
 | |
| //! bevy = { version = "*", default-features = false }
 | |
| //! # replace "*" with the most recent version of bevy
 | |
| //! ```
 | |
| //!
 | |
| //! And then enabling the features you need.
 | |
| //! See the full list: <https://docs.rs/bevy/latest/bevy/#cargo-features>
 | |
| use bevy::{app::ScheduleRunnerPlugin, log::LogPlugin, prelude::*};
 | |
| use core::time::Duration;
 | |
| 
 | |
| fn main() {
 | |
|     if cfg!(feature = "bevy_window") {
 | |
|         println!("This example is running with the bevy_window feature enabled and will not run headless.");
 | |
|         println!("Disable the default features and rerun the example to run headless.");
 | |
|         println!("To do so, run:");
 | |
|         println!();
 | |
|         println!("    cargo run --example headless --no-default-features");
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     // This app runs once
 | |
|     App::new()
 | |
|         .add_plugins(DefaultPlugins.set(ScheduleRunnerPlugin::run_once()))
 | |
|         .add_systems(Update, hello_world_system)
 | |
|         .run();
 | |
| 
 | |
|     // This app loops forever at 60 fps
 | |
|     App::new()
 | |
|         .add_plugins(
 | |
|             DefaultPlugins
 | |
|                 .set(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(
 | |
|                     1.0 / 60.0,
 | |
|                 )))
 | |
|                 // The log and ctrl+c plugin can only be registered once globally,
 | |
|                 // which means we need to disable it here, because it was already registered with the
 | |
|                 // app that runs once.
 | |
|                 .disable::<LogPlugin>(),
 | |
|         )
 | |
|         .add_systems(Update, counter)
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| fn hello_world_system() {
 | |
|     println!("hello world");
 | |
| }
 | |
| 
 | |
| fn counter(mut state: Local<CounterState>) {
 | |
|     if state.count % 60 == 0 {
 | |
|         println!("{}", state.count);
 | |
|     }
 | |
|     state.count += 1;
 | |
| }
 | |
| 
 | |
| #[derive(Default)]
 | |
| struct CounterState {
 | |
|     count: u32,
 | |
| }
 |