#![doc(
html_logo_url = "https://raw.githubusercontent.com/nannou-org/nannou/master/assets/images/logo.png"
)]
use bevy::diagnostic::FrameTimeDiagnosticsPlugin;
use bevy::prelude::{App as BevyApp, IntoScheduleConfigs, Plugin, PostUpdate};
use bevy::winit::WinitSettings;
pub use find_folder;
pub use lyon;
#[doc(inline)]
pub use nannou_core::{glam, math, rand};
pub use self::context::App;
pub mod app;
mod camera;
pub mod context;
mod frame;
pub mod geom;
pub mod image;
#[cfg(feature = "serde")]
pub mod io;
mod light;
pub mod noise;
pub mod prelude;
mod render;
pub mod time;
mod window;
pub use nannou_wgpu as wgpu;
pub struct NannouPlugin;
impl Plugin for NannouPlugin {
fn build(&self, app: &mut BevyApp) {
app.add_plugins(nannou_draw::NannouDrawPlugin);
app.add_systems(
PostUpdate,
window::update_default_camera_z_range.before(bevy::camera::CameraUpdateSystems),
);
app.add_plugins(crate::frame::FramePlugin);
if !app.is_plugin_added::<FrameTimeDiagnosticsPlugin>() {
app.add_plugins(FrameTimeDiagnosticsPlugin::default());
}
app.init_resource::<WinitSettings>();
#[cfg(feature = "video")]
{
app.add_plugins(nannou_video::NannouVideoPlugin);
}
}
}
pub fn app<M: 'static + Send>(model: app::ModelFn<M>) -> app::Builder<M> {
app::Builder::new(model)
}
pub fn sketch(view: app::SketchViewFn) -> app::SketchBuilder {
app::Builder::sketch(view)
}