ruffle/web/src/lib.rs

34 lines
944 B
Rust
Raw Normal View History

2019-04-28 06:08:59 +00:00
use fluster_core::backend::render::web_canvas::WebCanvasRenderBackend;
2019-04-28 01:15:43 +00:00
use js_sys::Uint8Array;
use wasm_bindgen::{prelude::*, JsValue};
2019-04-28 06:08:59 +00:00
use web_sys::HtmlCanvasElement;
2019-04-28 01:15:43 +00:00
#[wasm_bindgen]
pub struct Player(fluster_core::Player);
#[wasm_bindgen]
impl Player {
2019-04-28 06:08:59 +00:00
pub fn new(canvas: HtmlCanvasElement, swf_data: Uint8Array) -> Result<Player, JsValue> {
Player::new_internal(canvas, swf_data).map_err(|_| "Error creating player".into())
2019-04-28 01:15:43 +00:00
}
pub fn tick(&mut self, dt: f64) {
self.0.tick(dt);
}
}
2019-04-28 06:08:59 +00:00
impl Player {
fn new_internal(
canvas: HtmlCanvasElement,
swf_data: Uint8Array,
) -> Result<Player, Box<std::error::Error>> {
let mut data = vec![0; swf_data.length() as usize];
swf_data.copy_to(&mut data[..]);
let renderer = WebCanvasRenderBackend::new(canvas)?;
let player = fluster_core::Player::new(Box::new(renderer), data)?;
Ok(Player(player))
}
}