@@ -37,58 +37,70 @@ suite('camera', function () {
3737 el . setAttribute ( 'camera' , 'fov: 65' ) ;
3838 assert . equal ( el . object3D . children [ 0 ] . uuid , cameraId ) ;
3939 } ) ;
40+
41+ test ( 'can update userHeight' , function ( ) {
42+ var el = this . el ;
43+ assert . shallowDeepEqual ( el . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
44+ el . setAttribute ( 'camera' , 'userHeight' , 2.5 ) ;
45+ assert . shallowDeepEqual ( el . getAttribute ( 'position' ) , { x : 0 , y : 2.5 , z : 0 } ) ;
46+ } ) ;
4047 } ) ;
4148
42- suite ( 'restoreCameraPose' , function ( ) {
43- test ( 'restore camera pose when exiting VR with a headset' , function ( ) {
44- var sceneEl = this . el . sceneEl ;
49+ suite ( 'saveCameraPose' , function ( ) {
50+ test ( 'saves camera pose when entering VR with headset' , function ( ) {
4551 var cameraEl = this . el ;
52+ var sceneEl = cameraEl . sceneEl ;
4653 cameraEl . components . camera . headsetConnected = true ;
4754 sceneEl . emit ( 'enter-vr' ) ;
48- cameraEl . setAttribute ( 'position' , { x : 6 , y : 6 , z : 6 } ) ;
49- sceneEl . emit ( 'exit-vr' ) ;
50- assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
55+ assert . shallowDeepEqual ( cameraEl . components . camera . savedPose . position ,
56+ { x : 0 , y : 1.6 , z : 0 } ) ;
5157 } ) ;
5258
53- test ( 'does not restore camera pose with no headset' , function ( ) {
54- var sceneEl = this . el . sceneEl ;
59+ test ( 'does not save camera pose when entering VR without headset' , function ( ) {
5560 var cameraEl = this . el ;
61+ var sceneEl = cameraEl . sceneEl ;
62+ cameraEl . components . camera . headsetConnected = false ;
5663 sceneEl . emit ( 'enter-vr' ) ;
57- cameraEl . setAttribute ( 'position' , { x : 6 , y : 6 , z : 6 } ) ;
58- sceneEl . emit ( 'exit-vr' ) ;
59- assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 6 , y : 6 , z : 6 } ) ;
64+ assert . notOk ( cameraEl . components . camera . savedPose ) ;
6065 } ) ;
6166 } ) ;
6267
6368 suite ( 'addHeightOffset' , function ( ) {
64- test ( 'add userHeight offset' , function ( ) {
69+ test ( 'adds userHeight offset' , function ( ) {
70+ var cameraEl = this . el ;
71+ assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
72+ } ) ;
73+
74+ test ( 'adds userHeight offset on mobile' , function ( ) {
6575 var cameraEl = this . el ;
76+ var sceneEl = cameraEl . sceneEl ;
77+ sceneEl . isMobile = true ;
6678 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
6779 } ) ;
6880 } ) ;
6981
70- suite ( 'removeHeightOffset' , function ( ) {
71- test ( 'removes the default offset when entering VR with a headset' , function ( ) {
72- var sceneEl = this . el . sceneEl ;
82+ suite ( 'removeCameraPose (enter VR)' , function ( ) {
83+ test ( 'removes the default offset with headset' , function ( ) {
7384 var cameraEl = this . el ;
85+ var sceneEl = cameraEl . sceneEl ;
7486 cameraEl . components . camera . headsetConnected = true ;
7587 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
7688 sceneEl . emit ( 'enter-vr' ) ;
7789 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 0 , z : 0 } ) ;
7890 } ) ;
7991
80- test ( 'does not remove the default offset when entering VR with no headset' , function ( ) {
81- var sceneEl = this . el . sceneEl ;
92+ test ( 'does not remove the default offset without headset' , function ( ) {
8293 var cameraEl = this . el ;
94+ var sceneEl = cameraEl . sceneEl ;
8395 cameraEl . components . camera . headsetConnected = false ;
8496 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
8597 sceneEl . emit ( 'enter-vr' ) ;
8698 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
8799 } ) ;
88100
89- test ( 'does not remove the default offset when entering VR on mobile' , function ( ) {
90- var sceneEl = this . el . sceneEl ;
101+ test ( 'does not remove the default offset on mobile' , function ( ) {
91102 var cameraEl = this . el ;
103+ var sceneEl = cameraEl . sceneEl ;
92104 sceneEl . isMobile = true ;
93105 cameraEl . components . camera . headsetConnected = true ;
94106 assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
@@ -97,12 +109,25 @@ suite('camera', function () {
97109 } ) ;
98110 } ) ;
99111
100- suite ( 'updateHeightOffset' , function ( ) {
101- test ( 'updates userHeight' , function ( ) {
102- var el = this . el ;
103- assert . shallowDeepEqual ( el . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
104- el . setAttribute ( 'camera' , 'userHeight' , 2.5 ) ;
105- assert . shallowDeepEqual ( el . getAttribute ( 'position' ) , { x : 0 , y : 2.5 , z : 0 } ) ;
112+ suite ( 'restoreCameraPose (exit VR)' , function ( ) {
113+ test ( 'restores camera pose with headset' , function ( ) {
114+ var cameraEl = this . el ;
115+ var sceneEl = cameraEl . sceneEl ;
116+ cameraEl . components . camera . headsetConnected = true ;
117+ sceneEl . emit ( 'enter-vr' ) ;
118+ cameraEl . setAttribute ( 'position' , { x : 6 , y : 6 , z : 6 } ) ;
119+ sceneEl . emit ( 'exit-vr' ) ;
120+ assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 0 , y : 1.6 , z : 0 } ) ;
121+ } ) ;
122+
123+ test ( 'does not restore camera pose without headset' , function ( ) {
124+ var sceneEl = this . el . sceneEl ;
125+ var cameraEl = this . el ;
126+ cameraEl . components . camera . headsetConnected = false ;
127+ sceneEl . emit ( 'enter-vr' ) ;
128+ cameraEl . setAttribute ( 'position' , { x : 6 , y : 6 , z : 6 } ) ;
129+ sceneEl . emit ( 'exit-vr' ) ;
130+ assert . shallowDeepEqual ( cameraEl . getAttribute ( 'position' ) , { x : 6 , y : 6 , z : 6 } ) ;
106131 } ) ;
107132 } ) ;
108133} ) ;
0 commit comments