cfg_if::cfg_if! {
if #[cfg(not(target_arch = "wasm32"))] {
use crate::config::Config;
use crate::logger::gloss_setup_logger_from_config;
use crate::plugin_manager::plugins::{Plugin, Plugins};
use crate::scene::Scene;
use crate::set_panic_hook;
use crate::{camera::Camera, scene::GLOSS_CAM_NAME};
}
}
use core::time::Duration;
#[allow(unused_imports)]
use log::{error, info, Level};
#[cfg(target_arch = "wasm32")]
#[allow(unused_imports)]
use wasm_bindgen::prelude::*;
use wasm_timer::Instant;
#[derive(Debug)]
#[repr(C)]
pub struct RunnerDummy {
pub is_running: bool,
pub first_time: bool,
time_init: Instant, }
impl Default for RunnerDummy {
fn default() -> Self {
let time_init = Instant::now();
Self {
is_running: false,
first_time: true,
time_init,
}
}
}
#[allow(unused)]
impl RunnerDummy {
pub fn time_since_init(&self) -> Duration {
if self.first_time {
Duration::ZERO
} else {
self.time_init.elapsed()
}
}
}
#[cfg(not(target_arch = "wasm32"))] pub struct ViewerDummy {
pub camera: Camera,
pub scene: Scene,
pub plugins: Plugins,
pub config: Config,
pub runner: RunnerDummy,
}
#[cfg(not(target_arch = "wasm32"))]
impl ViewerDummy {
pub fn new(config_path: Option<&str>) -> Self {
let config = Config::new(config_path);
Self::new_with_config(&config)
}
#[allow(clippy::too_many_lines)]
#[allow(clippy::missing_panics_doc)]
pub fn new_with_config(config: &Config) -> Self {
set_panic_hook();
if config.core.auto_create_logger {
gloss_setup_logger_from_config(config);
}
re_memory::accounting_allocator::set_tracking_callstacks(config.core.enable_memory_profiling_callstacks);
let runner = RunnerDummy::default();
let mut scene = Scene::new();
let camera = Camera::new(GLOSS_CAM_NAME, &mut scene, false);
Self {
camera,
scene,
plugins: Plugins::new(),
config: config.clone(),
runner,
}
}
pub fn insert_plugin<T: Plugin + 'static>(&mut self, plugin: &T) {
self.plugins.insert_plugin(plugin, &mut self.scene);
}
#[allow(clippy::missing_panics_doc)]
pub fn run_manual_plugins(&mut self) {
self.plugins.run_logic_systems_dummy(&mut self.scene, &mut self.runner, false);
}
pub fn reset_for_first_time(&mut self) {
self.runner.first_time = true;
}
pub fn start_batch_net_sending(&mut self) {
if let Ok(mut sender) = self.scene.get_resource::<&mut crate::network::SceneSender>() {
sender.start_frame();
}
}
pub fn end_batch_net_sending(&mut self) {
if let Ok(mut sender) = self.scene.get_resource::<&mut crate::network::SceneSender>() {
sender.end_frame();
}
}
}