84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
|
|
namespace("Mouse");
|
|
|
|
|
|
Mouse.State =(function()
|
|
{
|
|
function State(event)
|
|
{
|
|
// Get button press states
|
|
if (typeof event.buttons != "undefined")
|
|
{
|
|
// Firefox
|
|
this.Left = (event.buttons & 1) != 0;
|
|
this.Right = (event.buttons & 2) != 0;
|
|
this.Middle = (event.buttons & 4) != 0;
|
|
}
|
|
else
|
|
{
|
|
// Chrome
|
|
this.Left = (event.button == 0);
|
|
this.Middle = (event.button == 1);
|
|
this.Right = (event.button == 2);
|
|
}
|
|
|
|
// Get page-relative mouse position
|
|
this.Position = DOM.Event.GetMousePosition(event);
|
|
|
|
// Get wheel delta
|
|
var delta = 0;
|
|
if (event.wheelDelta)
|
|
delta = event.wheelDelta / 120; // IE/Opera
|
|
else if (event.detail)
|
|
delta = -event.detail / 3; // Mozilla
|
|
this.WheelDelta = delta;
|
|
|
|
// Get the mouse position delta
|
|
// Requires Pointer Lock API support
|
|
this.PositionDelta = [
|
|
event.movementX || event.mozMovementX || event.webkitMovementX || 0,
|
|
event.movementY || event.mozMovementY || event.webkitMovementY || 0
|
|
];
|
|
}
|
|
|
|
return State;
|
|
})();
|
|
|
|
|
|
//
|
|
// Basic Pointer Lock API support
|
|
// https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock
|
|
// http://www.chromium.org/developers/design-documents/mouse-lock
|
|
//
|
|
// Note that API has not been standardised yet so browsers can implement functions with prefixes
|
|
//
|
|
|
|
|
|
Mouse.PointerLockSupported = function()
|
|
{
|
|
return 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document;
|
|
}
|
|
|
|
|
|
Mouse.RequestPointerLock = function(element)
|
|
{
|
|
element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
|
|
if (element.requestPointerLock)
|
|
element.requestPointerLock();
|
|
}
|
|
|
|
|
|
Mouse.ExitPointerLock = function()
|
|
{
|
|
document.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
|
|
if (document.exitPointerLock)
|
|
document.exitPointerLock();
|
|
}
|
|
|
|
|
|
// Can use this element to detect whether pointer lock is enabled (returns non-null)
|
|
Mouse.PointerLockElement = function()
|
|
{
|
|
return document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement;
|
|
}
|