Skip to content

Commit ca77cbd

Browse files
committed
added exit pointer lock, jquery selector support
1 parent fbb0860 commit ca77cbd

File tree

4 files changed

+60
-16
lines changed

4 files changed

+60
-16
lines changed

README.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,37 @@
11
# jspointerlock
2-
[![NPM Version](http://img.shields.io/npm/v/jspointerlock.svg?style=flat)](https://www.npmjs.org/package/jspointerlock)
2+
[![NPM Version][npm-image]][npm-url]
3+
[![NPM Downloads][downloads-image]][downloads-url]
34

4-
HTML5 Pointerlock lib
5+
**HTML5 Pointer Lock Lib**
6+
7+
## Usage
8+
9+
```js
10+
import $ from "jquery";
11+
import PointerLock from "jspointerlock";
12+
13+
const element = document.body;
14+
const pointerlock = new PointerLock(element);
15+
16+
pointerlock.on("change", (isLocked) => {
17+
console.log(`pointer is ${isLocked ? 'locked' : 'not locked'}`);
18+
});
19+
20+
$(element).on("click", () => {
21+
pointerlock.requestPointerLock();
22+
23+
setTimeout(() => {
24+
pointerlock.exitPointerLock();
25+
}, 3000);
26+
});
27+
```
28+
29+
30+
## License
31+
32+
[MIT](LICENSE)
33+
34+
[npm-image]: https://img.shields.io/npm/v/jspointerlock.svg
35+
[npm-url]: https://npmjs.org/package/jspointerlock
36+
[downloads-image]: https://img.shields.io/npm/dm/jspointerlock.svg
37+
[downloads-url]: https://npmjs.org/package/jspointerlock

index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ import PointerLock from "./src/index";
44
const element = document.body;
55
const pointerlock = new PointerLock(element);
66

7-
pointerlock.on("change", (isOn) => {
8-
console.log("pointerlock is " + (isOn ? "on" : "off"));
7+
pointerlock.on("change", (isLocked) => {
8+
console.log(`pointer is ${isLocked ? 'locked' : 'not locked'}`);
99
});
1010

1111
$(element).on("click", () => {
1212
pointerlock.requestPointerLock();
13+
14+
setTimeout(() => {
15+
pointerlock.exitPointerLock();
16+
}, 3000);
1317
});

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "jspointerlock",
3-
"version": "0.1.3",
4-
"description": "HTML5 Pointerlock lib",
3+
"version": "0.2.0",
4+
"description": "HTML5 Pointer Lock Lib",
55
"main": "src/index.js",
66
"scripts": {
77
"start": "http-server ./",
@@ -18,8 +18,6 @@
1818
"jspm": "^0.16.47"
1919
},
2020
"jspm": {
21-
"jspmPackage": true,
22-
"main": "src/index.js",
2321
"dependencies": {
2422
"events": "github:jspm/nodelibs-events@^0.1.1",
2523
"jquery": "npm:jquery@^3.1.1"

src/index.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,20 @@ export default class PointerLock extends EventEmitter {
77
constructor(element) {
88
super();
99

10-
this.element = element;
10+
this.$element = $(element);
11+
this.element = this.$element.get(0);
12+
this.isLocked = this.getLockState();
1113

1214
$(document).on("pointerlockchange mozpointerlockchange, webkitpointerlockchange", this.pointerLockChange.bind(this));
1315
}
1416

17+
getLockState() {
18+
return this.getPointerLockElement() === this.element;
19+
}
20+
1521
pointerLockChange() {
16-
if (this.getPointerLockElement() === this.element) {
17-
this.isLocked = true;
18-
this.emit("change", this.isLocked);
19-
} else {
20-
this.isLocked = false;
21-
this.emit("change", this.isLocked);
22-
}
22+
this.isLocked = this.getLockState();
23+
this.emit("change", this.isLocked);
2324
}
2425

2526
requestPointerLock() {
@@ -32,6 +33,14 @@ export default class PointerLock extends EventEmitter {
3233
}
3334
}
3435

36+
exitPointerLock() {
37+
if (document.exitPointerLock) {
38+
document.exitPointerLock();
39+
} else if (document.mozExitPointerLock) {
40+
document.mozExitPointerLock();
41+
}
42+
}
43+
3544
getPointerLockElement() {
3645
return document.pointerLockElement ||
3746
document.mozPointerLockElement ||

0 commit comments

Comments
 (0)