2020-07-26 19:10:18 +00:00
|
|
|
use crate::AppBuilder;
|
2020-01-21 04:10:40 +00:00
|
|
|
use std::any::Any;
|
|
|
|
|
2020-08-09 23:13:04 +00:00
|
|
|
/// A collection of Bevy App logic and configuration
|
|
|
|
///
|
2021-03-11 00:27:30 +00:00
|
|
|
/// Plugins use [AppBuilder] to configure an [App](crate::App). When an [App](crate::App) registers
|
|
|
|
/// a plugin, the plugin's [Plugin::build] function is run.
|
2020-08-08 03:22:17 +00:00
|
|
|
pub trait Plugin: Any + Send + Sync {
|
2020-04-06 03:19:02 +00:00
|
|
|
fn build(&self, app: &mut AppBuilder);
|
2020-04-05 21:12:14 +00:00
|
|
|
fn name(&self) -> &str {
|
2020-05-01 08:02:13 +00:00
|
|
|
std::any::type_name::<Self>()
|
2020-04-05 21:12:14 +00:00
|
|
|
}
|
2020-01-21 04:10:40 +00:00
|
|
|
}
|
|
|
|
|
2020-08-08 03:22:17 +00:00
|
|
|
pub type CreatePlugin = unsafe fn() -> *mut dyn Plugin;
|