@@ -182,18 +182,26 @@ export function updateCameraAngle(transform: mat4): void {
182182 const listener = audioContext . listener ;
183183
184184 const translation = mat4 . getTranslation ( vec3 . create ( ) , transform ) ;
185- listener . positionX . value = translation [ 0 ] ;
186- listener . positionY . value = translation [ 1 ] ;
187- listener . positionZ . value = translation [ 2 ] ;
185+ if ( "positionX" in audioContext . listener /* typescript hack needed here */ ) {
186+ listener . positionX . value = translation [ 0 ] ;
187+ listener . positionY . value = translation [ 1 ] ;
188+ listener . positionZ . value = translation [ 2 ] ;
189+ } else {
190+ listener . setPosition ( translation [ 0 ] , translation [ 1 ] , translation [ 2 ] ) ;
191+ }
188192
189193 // Update listener orientation
190194 const forward = vec3 . transformMat4 ( vec3 . create ( ) , [ 0 , 0 , - 1 ] , transform ) ;
191195 const up = vec3 . transformMat4 ( vec3 . create ( ) , [ 0 , 1 , 0 ] , transform ) ;
192196
193- listener . forwardX . value = forward [ 0 ] ;
194- listener . forwardY . value = forward [ 1 ] ;
195- listener . forwardZ . value = forward [ 2 ] ;
196- listener . upX . value = up [ 0 ] ;
197- listener . upY . value = up [ 1 ] ;
198- listener . upZ . value = up [ 2 ] ;
197+ if ( "forwardX" in audioContext . listener ) {
198+ listener . forwardX . value = forward [ 0 ] ;
199+ listener . forwardY . value = forward [ 1 ] ;
200+ listener . forwardZ . value = forward [ 2 ] ;
201+ listener . upX . value = up [ 0 ] ;
202+ listener . upY . value = up [ 1 ] ;
203+ listener . upZ . value = up [ 2 ] ;
204+ } else {
205+ listener . setOrientation ( forward [ 0 ] , forward [ 1 ] , forward [ 2 ] , up [ 0 ] , up [ 1 ] , up [ 2 ] ) ;
206+ }
199207}
0 commit comments