peter-engine 0.1.2

A game engine I (Peter Schmidt-Nielsen) am writing for myself -- I don't recommend you use it
Documentation
use eframe::WebRunner;
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern "C" {
  #[wasm_bindgen(js_namespace = console)]
  pub fn log(s: &str);
}

#[derive(Clone)]
#[wasm_bindgen]
pub struct WebHandle {
  #[wasm_bindgen(skip)]
  pub runner: WebRunner,
}

pub fn clear_loading_message() {
  web_sys::window()
    .unwrap()
    .document()
    .unwrap()
    .get_element_by_id("loadingMessage")
    .unwrap()
    .set_attribute("style", "display: none")
    .unwrap();
  log("Launching app from WASM");
}

#[wasm_bindgen]
impl WebHandle {
  #[wasm_bindgen(constructor)]
  pub fn new() -> Self {
    Self {
      runner: WebRunner::new(),
    }
  }

  #[wasm_bindgen]
  pub fn destroy(&self) {
    self.runner.destroy();
  }

  #[wasm_bindgen]
  pub fn has_panicked(&self) -> bool {
    self.runner.has_panicked()
  }

  #[wasm_bindgen]
  pub fn panic_message(&self) -> Option<String> {
    self.runner.panic_summary().map(|s| s.message())
  }

  #[wasm_bindgen]
  pub fn panic_callstack(&self) -> Option<String> {
    self.runner.panic_summary().map(|s| s.callstack())
  }
}