1#![doc = include_str!("../README.md")]
2
3#[macro_use]
4extern crate static_assertions;
5
6use gloss_utils::string::float2string;
7use log::log;
8
9use re_memory::MemoryUse;
11
12pub mod actor;
20pub mod builders;
21pub mod camera;
22pub mod components;
23pub mod config;
24pub mod forward_renderer;
25#[cfg(feature = "with-gui")]
26pub mod gui;
27pub mod light;
28pub mod logger;
29pub mod plugin_manager;
30pub mod scene;
31pub mod selector;
32pub mod viewer;
33pub mod viewer_dummy;
34pub mod viewer_headless;
35
36pub use logger::{gloss_setup_logger, gloss_setup_logger_from_config, gloss_setup_logger_from_config_file};
37
38pub fn print_memory_usage_info(mem_use: MemoryUse, verbosity: log::Level) {
39 if let Some(mem_resident) = mem_use.resident {
40 log!(verbosity, "MB resident total: {}", (mem_resident / (1024 * 1024)));
41 }
42 if let Some(mem_counted) = mem_use.counted {
43 log!(verbosity, "MB counted total: {}", (mem_counted / (1024 * 1024)));
44 }
45}
46
47pub fn aa_print_memory_usage_info(show_backtrace: bool, verbosity: log::Level) {
48 if let Some(tracks) = re_memory::accounting_allocator::tracking_stats() {
49 #[allow(clippy::cast_precision_loss)]
50 for cb in tracks.top_callstacks.iter() {
51 let mb_cb = cb.extant.size as f32 / (1024.0 * 1024.0);
52 if show_backtrace {
53 log!(verbosity, "MB: {} Callstack: {}", float2string(mb_cb, 1), cb.readable_backtrace);
54 } else {
55 log!(verbosity, "MB: {} Func: {}", float2string(mb_cb, 1), cb.readable_backtrace,);
56 }
57 }
58 }
59}
60
61fn set_panic_hook() {
62 cfg_if::cfg_if! {
63 if #[cfg(target_arch = "wasm32")] {
64 std::panic::set_hook(Box::new(move |info| {
65 console_error_panic_hook::hook(info);
71 }));
72 }else{
73 let default_panic = std::panic::take_hook();
74 std::panic::set_hook(Box::new(move |info| {
75 default_panic(info);
80 }));
81 }
82 }
83}