Latest commit e6bce74

use bevy::{app::PluginGroupBuilder, prelude::*};

/// 这个示例用来演示自定义插件组如何被创建和注册
/// 需要同时注册多个插件时,用插件组(PluginGroups)
fn main() {
    App::new()
        // bevy中有两个内置插件组:DefaultPlugins 和 MinimalPlugins
        .add_plugins(DefaultPlugins)
        // 添加插件组时,默认添加组内所有的插件
        .add_plugins(HelloWorldPlugins)
        // 还可以像这样修改插件组(例如禁用插件):
        // .add_plugins_with(HelloWorldPlugins, |group| {
        //     group
        //        .disable::<PrintWorldPlugin>()
        //        .add_before::<PrintHelloPlugin, 
        // _>(bevy::diagnostic::LogDiagnosticsPlugin::default()) })
        .run();
}

/// 插件组,生成“hello world”
struct HelloWorldPlugins;

impl PluginGroup for HelloWorldPlugins {
    fn build(&mut self, group: &mut PluginGroupBuilder) {
        group.add(PrintHelloPlugin).add(PrintWorldPlugin);
    }
}

pub struct PrintHelloPlugin;

impl Plugin for PrintHelloPlugin {
    fn build(&self, app: &mut App) {
        app.add_system(print_hello_system);
    }
}

fn print_hello_system() {
    info!("hello");
}


pub struct PrintWorldPlugin;

impl Plugin for PrintWorldPlugin {
    fn build(&self, app: &mut App) {
        app.add_system(print_world_system);
    }
}

fn print_world_system() {
    info!("world");
}