//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
public void Initialize(CanvasElement canvas, int screenX, int screenY)
{
this._screenX = screenX;
this._screenY = screenY;
/*no functions to minimize delegate creation*/
JsInputProvider that = this;
canvas.AddEventListener("keydown", delegate(ElementEvent e) {
that._keys[e.KeyCode] = true;
}, true);
canvas.AddEventListener("keyup", delegate(ElementEvent e) {
that._keys[e.KeyCode] = false;
}, true);
canvas.AddEventListener("mousedown", delegate(ElementEvent e) {
that._keys[Keys.MouseLeft] = true;
}, true);
canvas.AddEventListener("mouseup", delegate(ElementEvent e) {
that._keys[Keys.MouseRight] = true;
}, true);
canvas.AddEventListener("mousemove", delegate(ElementEvent e) {
/*convert to screen space*/
that._mouseX = (((float)(((MouseEvent)(Object)e).PageX - e.Target.OffsetLeft) / this._screenX) - 0.5f) * 2.0f;
that._mouseY = (((float)(((MouseEvent)(Object)e).PageY - e.Target.OffsetTop) / this._screenY) - 0.5f) * 2.0f;
}, true);
}