 68d419d40f
			
		
	
	
		68d419d40f
		
			
		
	
	
	
	
		
			
			Repeating timers will reset themselves upon finishing, carrying over any excess time during the last tick. This fixes timer drift upon resetting.
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use bevy::prelude::*;
 | |
| use std::time::Duration;
 | |
| 
 | |
| /// Plugins are the foundation of Bevy. They are scoped sets of components, resources, and systems
 | |
| /// that provide a specific piece of functionality (generally the smaller the scope, the better).
 | |
| /// This example illustrates how to create a simple plugin that prints out a message.
 | |
| fn main() {
 | |
|     App::build()
 | |
|         .add_default_plugins()
 | |
|         // plugins are registered as part of the "app building" process
 | |
|         .add_plugin(PrintMessagePlugin {
 | |
|             wait_duration: Duration::from_secs(1),
 | |
|             message: "This is an example plugin".to_string(),
 | |
|         })
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| // This "print message plugin" prints a `message` every `wait_duration`
 | |
| pub struct PrintMessagePlugin {
 | |
|     // Put your plugin configuration here
 | |
|     wait_duration: Duration,
 | |
|     message: String,
 | |
| }
 | |
| 
 | |
| impl Plugin for PrintMessagePlugin {
 | |
|     // this is where we set up our plugin
 | |
|     fn build(&self, app: &mut AppBuilder) {
 | |
|         let state = PrintMessageState {
 | |
|             message: self.message.clone(),
 | |
|             timer: Timer::new(self.wait_duration, true),
 | |
|         };
 | |
|         app.add_resource(state)
 | |
|             .add_system(print_message_system.system());
 | |
|     }
 | |
| }
 | |
| 
 | |
| struct PrintMessageState {
 | |
|     message: String,
 | |
|     timer: Timer,
 | |
| }
 | |
| 
 | |
| fn print_message_system(mut state: ResMut<PrintMessageState>, time: Res<Time>) {
 | |
|     state.timer.tick(time.delta_seconds);
 | |
|     if state.timer.finished {
 | |
|         println!("{}", state.message);
 | |
|     }
 | |
| }
 |