mod state;
pub use state::*;
mod runtime;
pub use runtime::*;
mod entity_id;
pub use entity_id::*;
mod shapes;
pub use shapes::*;
mod procedurals;
pub use procedurals::*;
pub use ambient_shared_types::{CursorIcon, ModifiersState, MouseButton, VirtualKeyCode};
pub use futures::{Future, FutureExt};
pub use glam;
pub use glam::{f32::*, i32::*, u32::*, Vec2Swizzles, Vec3Swizzles, Vec4Swizzles};
pub use serde;
pub use std::time::Duration;
pub use ulid::Ulid;
pub type ResultEmpty = anyhow::Result<()>;
#[allow(non_upper_case_globals)]
pub const OkEmpty: ResultEmpty = Ok(());
#[inline]
pub fn default<T: Default>() -> T {
std::default::Default::default()
}
#[inline]
pub fn lerp<T: std::ops::Add + std::ops::Mul<f32>>(
a: T,
b: T,
t: f32,
) -> <<T as std::ops::Mul<f32>>::Output as std::ops::Add>::Output
where
<T as std::ops::Mul<f32>>::Output: std::ops::Add,
{
a * (1.0 - t) + b * t
}