Browse Source

Added squeeze* for WebXR Managers

Fernando Serrano 5 years ago
parent
commit
e4c82b657b
2 changed files with 27 additions and 0 deletions
  1. 24 0
      src/renderers/webvr/WebVRManager.js
  2. 3 0
      src/renderers/webvr/WebXRManager.js

+ 24 - 0
src/renderers/webvr/WebVRManager.js

@@ -104,6 +104,7 @@ function WebVRManager( renderer ) {
 	//
 	//
 
 
 	var triggers = [];
 	var triggers = [];
+	var grips = [];
 
 
 	function findGamepad( id ) {
 	function findGamepad( id ) {
 
 
@@ -179,6 +180,29 @@ function WebVRManager( renderer ) {
 
 
 				}
 				}
 
 
+				// Grip
+
+				buttonId = gamepad.buttons.length > 2 ? 2 : 0;
+
+				if ( grips[ i ] === undefined ) grips[ i ] = false;
+
+				if ( grips[ i ] !== gamepad.buttons[ buttonId ].pressed ) {
+
+					grips[ i ] = gamepad.buttons[ buttonId ].pressed;
+
+					if ( grips[ i ] === true ) {
+
+						controller.dispatchEvent( { type: 'squeezestart' } );
+
+					} else {
+
+						controller.dispatchEvent( { type: 'squeezeend' } );
+						controller.dispatchEvent( { type: 'squeeze' } );
+
+					}
+
+				}
+
 			} else {
 			} else {
 
 
 				controller.visible = false;
 				controller.visible = false;

+ 3 - 0
src/renderers/webvr/WebXRManager.js

@@ -133,6 +133,9 @@ function WebXRManager( renderer, gl ) {
 			session.addEventListener( 'select', onSessionEvent );
 			session.addEventListener( 'select', onSessionEvent );
 			session.addEventListener( 'selectstart', onSessionEvent );
 			session.addEventListener( 'selectstart', onSessionEvent );
 			session.addEventListener( 'selectend', onSessionEvent );
 			session.addEventListener( 'selectend', onSessionEvent );
+			session.addEventListener( 'squeeze', onSessionEvent );
+			session.addEventListener( 'squeezestart', onSessionEvent );
+			session.addEventListener( 'squeezeend', onSessionEvent );
 			session.addEventListener( 'end', onSessionEnd );
 			session.addEventListener( 'end', onSessionEnd );
 
 
 			// eslint-disable-next-line no-undef
 			// eslint-disable-next-line no-undef