bevy_mod_speedup 0.2.0

bevy_mod_speedup is a collection of ways to increase the performance of your application.
Documentation
#[cfg(feature = "egui")]
pub mod egui;

#[cfg(feature = "exclusive_fullscreen")]
pub mod exclusive_fullscreen;

#[cfg(feature = "power")]
pub mod power;

#[cfg(feature = "request_fast_gpu")]
pub mod request_fast_gpu;

#[cfg(feature = "priority")]
pub mod priority;

#[cfg(feature = "unattended")]
pub mod unattended;

use bevy::prelude::*;

#[derive(Debug, SystemSet, Clone, PartialEq, Eq, Hash)]
pub enum SpeedupSet {
    PreStartup,
    Startup,
    PostStartup,
}

#[derive(Debug, Default, Resource, Reflect)]
#[reflect(Resource)]
pub struct SpeedupAdjustments {
    #[cfg(feature = "exclusive_fullscreen")]
    exclusive_fullscreen: crate::exclusive_fullscreen::ExclusiveFullscreenAdjustment,
    #[cfg(feature = "power")]
    power:                crate::power::PowerAdjustment,
    #[cfg(feature = "priority")]
    priority:             crate::priority::PriorityAdjustment,
    #[cfg(feature = "request_fast_gpu")]
    request_fast_gpu:     crate::request_fast_gpu::RequestFastGpuAdjustment,
    #[cfg(feature = "unattended")]
    unattended:           crate::unattended::UnattendedAdjustment,
}

#[derive(Debug)]
pub struct SpeedupPlugin;

impl Plugin for SpeedupPlugin {
    fn build(
        &self,
        app: &mut App,
    ) {
        app.register_type::<SpeedupAdjustments>();
        app.init_resource::<SpeedupAdjustments>();

        #[cfg(feature = "exclusive_fullscreen")]
        app.add_plugins(exclusive_fullscreen::ExclusiveFullscreenPlugin);

        #[cfg(feature = "power")]
        app.add_plugins(power::PowerPlugin);

        #[cfg(feature = "request_fast_gpu")]
        app.add_plugins(request_fast_gpu::RequestFastGpuPlugin);

        #[cfg(feature = "priority")]
        app.add_plugins(priority::PriorityPlugin);

        #[cfg(feature = "unattended")]
        app.add_plugins(unattended::UnattendedPlugin);
    }
}