1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
pub mod core {
    pub use hassium_core::*;
}
pub mod utils {
    pub use hassium_utils::*;
}
#[cfg(feature = "input")]
pub mod input {
    pub use hassium_input::*;
}
pub mod backend {
    #[cfg(feature = "web")]
    pub mod web {
        pub use hassium_backend_web::*;
        #[cfg(feature = "composite-renderer")]
        pub use hassium_composite_renderer_backend_web::*;
        #[cfg(feature = "input")]
        pub use hassium_input_device_web::*;
        #[cfg(feature = "network")]
        pub use hassium_network_backend_web::*;
    }
    #[cfg(feature = "desktop")]
    pub mod desktop {
        #[cfg(feature = "network")]
        pub use hassium_network_backend_desktop::*;
    }
    #[cfg(feature = "native")]
    pub mod desktop {
        #[cfg(feature = "network")]
        pub use hassium_network_backend_native::*;
    }
}
#[cfg(feature = "composite-renderer")]
pub mod composite_renderer {
    pub use hassium_composite_renderer::*;
}
#[cfg(feature = "network")]
pub mod network {
    pub use hassium_network::*;
}
#[cfg(feature = "procedural")]
pub mod procedural {
    pub use hassium_procedural::*;
}
#[cfg(feature = "navigation")]
pub mod navigation {
    pub use hassium_navigation::*;
}

pub mod prelude {
    #[cfg(feature = "web")]
    pub use hassium_backend_web::prelude::*;
    #[cfg(feature = "composite-renderer")]
    pub use hassium_composite_renderer::prelude::*;
    #[cfg(feature = "web")]
    #[cfg(feature = "composite-renderer")]
    pub use hassium_composite_renderer_backend_web::prelude::*;
    pub use hassium_core::prelude::*;
    #[cfg(feature = "input")]
    pub use hassium_input::prelude::*;
    #[cfg(feature = "web")]
    #[cfg(feature = "input")]
    pub use hassium_input_device_web::prelude::*;
    #[cfg(feature = "navigation")]
    pub use hassium_navigation::prelude::*;
    #[cfg(feature = "network")]
    pub use hassium_network::prelude::*;
    #[cfg(feature = "desktop")]
    #[cfg(feature = "network")]
    pub use hassium_network_backend_desktop::prelude::*;
    #[cfg(feature = "native")]
    #[cfg(feature = "network")]
    pub use hassium_network_backend_native::prelude::*;
    #[cfg(feature = "web")]
    #[cfg(feature = "network")]
    pub use hassium_network_backend_web::prelude::*;
    #[cfg(feature = "procedural")]
    pub use hassium_procedural::prelude::*;
    pub use hassium_utils::prelude::*;
}

#[macro_export]
macro_rules! log {
    ($lvl:expr, $($arg:tt)+) => ({
        $crate::core::log::logger_log($lvl, format!(
            "[{}: {} | {}]:\n{}",
            file!(),
            line!(),
            module_path!(),
            format_args!($($arg)+)
        ))
    })
}

#[macro_export]
macro_rules! info {
    ($($arg:tt)*) => (log!($crate::core::log::Log::Info, $($arg)*))
}

#[macro_export]
macro_rules! warn {
    ($($arg:tt)*) => (log!($crate::core::log::Log::Warning, $($arg)*))
}

#[macro_export]
macro_rules! error {
    ($($arg:tt)*) => (log!($crate::core::log::Log::Error, $($arg)*))
}