pub mod application;
#[macro_use]
pub mod messenger;
#[macro_use]
pub mod props;
pub mod renderer;
pub mod state;
#[macro_use]
pub mod widget;
pub mod animator;
pub mod interactive;
pub mod layout;
pub mod signals;
pub mod tester;
pub mod view_model;
pub type Scalar = f32;
pub type Integer = i32;
pub type UnsignedInteger = u32;
pub use intuicio_data::{lifetime::*, managed::*, type_hash::*};
pub use raui_derive::*;
use serde::{Serialize, de::DeserializeOwned};
#[doc(inline)]
pub use serde_json::{Number as PrefabNumber, Value as PrefabValue};
#[derive(Debug, Clone)]
pub enum PrefabError {
CouldNotSerialize(String),
CouldNotDeserialize(String),
}
pub trait Prefab: Serialize + DeserializeOwned {
fn from_prefab(data: PrefabValue) -> Result<Self, PrefabError> {
match serde_json::from_value(data) {
Ok(result) => Ok(result),
Err(error) => Err(PrefabError::CouldNotDeserialize(error.to_string())),
}
}
fn to_prefab(&self) -> Result<PrefabValue, PrefabError> {
match serde_json::to_value(self) {
Ok(result) => Ok(result),
Err(error) => Err(PrefabError::CouldNotSerialize(error.to_string())),
}
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum LogKind {
Info,
Warning,
Error,
}
pub trait Logger {
fn log(&mut self, _kind: LogKind, _message: &str) {}
}
impl Logger for () {}
pub struct PrintLogger;
impl Logger for PrintLogger {
fn log(&mut self, kind: LogKind, message: &str) {
println!("{kind:?} | {message}");
}
}