#![feature(stmt_expr_attributes)]
#![allow(ambiguous_glob_reexports)]
#![allow(clippy::type_complexity)]

mod base_game;
mod debug;
mod loading;
mod parallax;
pub mod physics2d;
pub mod physics3d;
mod scheduling;
mod ui;
mod version;

// Rust stdlib
pub use std::{
    collections::VecDeque,
    f32::consts::PI,
    fmt::Display,
};
pub use core::time::Duration;

// Community libraries
pub use bevy::{
    time::common_conditions::*,
    asset::{
        AssetLoader, AssetMetaCheck, LoadContext, LoadState, LoadedFolder, RenderAssetUsages,
        io::Reader, uuid_handle,
    },
    camera::{primitives::*, visibility::*, *},
    color::palettes::css::*,
    gizmos::{aabb::AabbGizmoPlugin, light::LightGizmoPlugin},
    input::{
        ButtonState,
        common_conditions::{input_just_pressed, input_just_released, input_pressed},
        keyboard::KeyboardInput,
        mouse::MouseMotion,
        mouse::{MouseScrollUnit, MouseWheel},
    },
    math::FloatOrd,
    pbr::wireframe::{WireframeConfig, WireframePlugin},
    platform::{collections::HashMap, hash::RandomState},
    prelude::*,
    reflect::TypePath,
    render::render_resource::{Extent3d, TextureDimension, TextureFormat, TextureUsages},
    sprite_render::*,
    window::{WindowResized, WindowResolution},
};
pub use itertools::Itertools;
pub use serde::Deserialize;
pub use thiserror::Error;

// Internal modules
pub use base_game::*;
pub use debug::*;
pub use loading::*;
pub use parallax::*;
pub use scheduling::*;
pub use ui::*;
pub use version::*;
