@@ -23,6 +23,12 @@ Phaser.Mouse.prototype = {
2323 */
2424 disabled : false ,
2525
26+ /**
27+ * If the mouse has been Pointer Locked successfully this will be set to true.
28+ * @type {bool }
29+ */
30+ locked : false ,
31+
2632 /**
2733 * Starts the event listeners running
2834 * @method start
@@ -115,6 +121,58 @@ Phaser.Mouse.prototype = {
115121
116122 this . game . input . mousePointer . stop ( event ) ;
117123
124+ } ,
125+
126+ requestPointerLock : function ( ) {
127+
128+ if ( this . game . device . pointerLock )
129+ {
130+ var element = this . game . stage . canvas ;
131+
132+ element . requestPointerLock = element . requestPointerLock || element . mozRequestPointerLock || element . webkitRequestPointerLock ;
133+
134+ element . requestPointerLock ( ) ;
135+
136+ var _this = this ;
137+
138+ this . _pointerLockChange = function ( event ) {
139+ return _this . pointerLockChange ( event ) ;
140+ } ;
141+
142+ document . addEventListener ( 'pointerlockchange' , this . _pointerLockChange , false ) ;
143+ document . addEventListener ( 'mozpointerlockchange' , this . _pointerLockChange , false ) ;
144+ document . addEventListener ( 'webkitpointerlockchange' , this . _pointerLockChange , false ) ;
145+ }
146+
147+ } ,
148+
149+ pointerLockChange : function ( event ) {
150+
151+ var element = this . game . stage . canvas ;
152+
153+ if ( document . pointerLockElement === element || document . mozPointerLockElement === element || document . webkitPointerLockElement === element )
154+ {
155+ // Pointer was successfully locked
156+ this . locked = true ;
157+ }
158+ else
159+ {
160+ // Pointer was unlocked
161+ this . locked = false ;
162+ }
163+
164+ } ,
165+
166+ releasePointerLock : function ( ) {
167+
168+ document . exitPointerLock = document . exitPointerLock || document . mozExitPointerLock || document . webkitExitPointerLock ;
169+
170+ document . exitPointerLock ( ) ;
171+
172+ document . removeEventListener ( 'pointerlockchange' , this . _pointerLockChange ) ;
173+ document . removeEventListener ( 'mozpointerlockchange' , this . _pointerLockChange ) ;
174+ document . removeEventListener ( 'webkitpointerlockchange' , this . _pointerLockChange ) ;
175+
118176 } ,
119177
120178 /**
0 commit comments