summaryrefslogtreecommitdiff
path: root/WebInterface/wasm/webhogg/src/lib.rs
blob: 6d9fca9dd9a6388517d5f35f0a69bfaa481459da (plain)
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
mod client_logger;
mod webhogg_exception;
mod canvas;

use wasm_bindgen::prelude::*;
use web_sys::Worker;
use web_sys::OffscreenCanvas as ECanvas;

#[macro_use]
extern crate log;

#[wasm_bindgen]
pub fn game_logic_entry(worker: web_sys::Worker) {
    client_logger::init_logger();

    info!("hello from game logic wasm");
    worker.post_message(&wasm_bindgen::JsValue::from_str("premsg frm wasm_gLe"))
        .unwrap();
    info!("game logic terminated");
}

#[wasm_bindgen]
pub fn graphics_entry(worker: web_sys::DedicatedWorkerGlobalScope,
                      ecanvas: JsValue) {
    client_logger::init_logger();

    let ecanvas: ECanvas = js_sys::Reflect::get(&ecanvas,
                      &wasm_bindgen::JsValue::from_str("canvas"))
                        .map_err(|e| error!("could not load canvas"))
                        .unwrap().into();

    info!("hello from graphics wasm {:?}", ecanvas);
    let handler = wasm_bindgen::closure::Closure::once_into_js(
                    (|e: web_sys::MessageEvent| {
        info!("things are getting wired: {:?}", e.data());
    }));
    worker.set_onmessage(Some(&js_sys::Function::from(handler)));

    let canvas = canvas::Canvas::from_existing(&ecanvas)
        .map_err(|e| error!("{}", e))
        .unwrap();

    info!("graphics terminated");
}