@@ -91,10 +91,7 @@ setTimeout(function () {
91
91
}
92
92
93
93
function XRHitPoseData ( ) {
94
- this . frame = 0 ;
95
- this . available = 0 ;
96
- this . position = [ 0 , 0 , 0 ] ;
97
- this . rotation = [ 0 , 0 , 0 , 1 ] ;
94
+ this . bufferIndex = 0 ;
98
95
}
99
96
100
97
function lerp ( start , end , percentage )
@@ -764,12 +761,15 @@ setTimeout(function () {
764
761
this . xrData . controllerB . bufferIndex = Module . ControllersArrayOffset + 28 ;
765
762
this . xrData . handLeft . bufferIndex = Module . HandsArrayOffset ;
766
763
this . xrData . handRight . bufferIndex = Module . HandsArrayOffset + 205 ;
764
+ this . xrData . viewerHitTestPose . bufferIndex = Module . ViewerHitTestPoseArrayOffset ;
767
765
this . xrData . controllerA . updatedProfiles = 0 ;
768
766
this . xrData . controllerB . updatedProfiles = 0 ;
769
767
this . xrData . controllerA . profiles = [ ] ;
770
768
this . xrData . controllerB . profiles = [ ] ;
771
769
Module . HEAPF32 [ this . xrData . controllerA . bufferIndex + 20 ] = 0 ; // XRControllerData.updatedGrip
772
770
Module . HEAPF32 [ this . xrData . controllerB . bufferIndex + 20 ] = 0 ; // XRControllerData.updatedGrip
771
+ Module . HEAPF32 [ this . xrData . viewerHitTestPose . bufferIndex ] = - 1 ; // XRHitPoseData.frame
772
+ Module . HEAPF32 [ this . xrData . viewerHitTestPose . bufferIndex + 1 ] = 0 ; // XRHitPoseData.available
773
773
}
774
774
var thisXRMananger = this ;
775
775
session . requestReferenceSpace ( refSpaceType ) . then ( function ( refSpace ) {
@@ -852,25 +852,22 @@ setTimeout(function () {
852
852
this . getXRControllersData ( frame , session . inputSources , session . refSpace , xrData ) ;
853
853
854
854
if ( session . isAR && this . viewerHitTestSource ) {
855
- xrData . viewerHitTestPose . frame = xrData . frameNumber ;
855
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex ] = xrData . frameNumber ; // XRHitPoseData.frame
856
856
var viewerHitTestResults = frame . getHitTestResults ( this . viewerHitTestSource ) ;
857
857
if ( viewerHitTestResults . length > 0 ) {
858
858
var hitTestPose = viewerHitTestResults [ 0 ] . getPose ( session . localRefSpace ) ;
859
- xrData . viewerHitTestPose . available = 1 ;
860
- xrData . viewerHitTestPose . position [ 0 ] = hitTestPose . transform . position . x ;
859
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 1 ] = 1 ; // XRHitPoseData.available
860
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 2 ] = hitTestPose . transform . position . x ; // XRHitPoseData.position[0]
861
861
var hitTestPoseBase = viewerHitTestResults [ 0 ] . getPose ( session . refSpace ) ; // Ugly hack for y position on Samsung Internet
862
- xrData . viewerHitTestPose . position [ 1 ] = hitTestPose . transform . position . y + Math . abs ( hitTestPose . transform . position . y - hitTestPoseBase . transform . position . y ) ;
863
- xrData . viewerHitTestPose . position [ 2 ] = - hitTestPose . transform . position . z ;
864
- xrData . viewerHitTestPose . rotation [ 0 ] = - hitTestPose . transform . orientation . x ;
865
- xrData . viewerHitTestPose . rotation [ 1 ] = - hitTestPose . transform . orientation . y ;
866
- xrData . viewerHitTestPose . rotation [ 2 ] = hitTestPose . transform . orientation . z ;
867
- xrData . viewerHitTestPose . rotation [ 3 ] = hitTestPose . transform . orientation . w ;
862
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 3 ] = hitTestPose . transform . position . y + Math . abs ( hitTestPose . transform . position . y - hitTestPoseBase . transform . position . y ) ; // XRHitPoseData.position[1]
863
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 4 ] = - hitTestPose . transform . position . z ; // XRHitPoseData.position[2]
864
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 5 ] = - hitTestPose . transform . orientation . x ; // XRHitPoseData.rotation[0]
865
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 6 ] = - hitTestPose . transform . orientation . y ; // XRHitPoseData.rotation[1]
866
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 7 ] = hitTestPose . transform . orientation . z ; // XRHitPoseData.rotation[2]
867
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 8 ] = hitTestPose . transform . orientation . w ; // XRHitPoseData.rotation[3]
868
868
} else {
869
- xrData . viewerHitTestPose . available = 0 ;
869
+ Module . HEAPF32 [ xrData . viewerHitTestPose . bufferIndex + 1 ] = 0 ; // XRHitPoseData.available
870
870
}
871
- this . updateUnityXRViewerHitTestPose ( {
872
- viewerHitTestPose : xrData . viewerHitTestPose
873
- } ) ;
874
871
}
875
872
876
873
if ( xrData . controllerA . updatedProfiles == 1 || xrData . controllerB . updatedProfiles == 1 )
@@ -961,22 +958,6 @@ setTimeout(function () {
961
958
} ) ;
962
959
}
963
960
964
- XRManager . prototype . updateUnityXRViewerHitTestPose = function ( data ) {
965
- var index = 0 ;
966
- if ( Module . ViewerHitTestPoseArray . byteLength == 0 ) {
967
- Module . ViewerHitTestPoseArray = new Float32Array ( buffer , Module . ViewerHitTestPoseArrayOffset , Module . ViewerHitTestPoseArrayLength ) ;
968
- }
969
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . frame ;
970
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . available ;
971
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . position [ 0 ] ;
972
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . position [ 1 ] ;
973
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . position [ 2 ] ;
974
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . rotation [ 0 ] ;
975
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . rotation [ 1 ] ;
976
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . rotation [ 2 ] ;
977
- Module . ViewerHitTestPoseArray [ index ++ ] = data . viewerHitTestPose . rotation [ 3 ] ;
978
- }
979
-
980
961
function initWebXRManager ( ) {
981
962
var xrManager = window . xrManager = new XRManager ( ) ;
982
963
return xrManager ;
0 commit comments