未验证 提交 b293519b 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #14438 from mrdoob/revert-14393-dev2

Revert "AudioListener: Use linearRampToValueAtTime()"
......@@ -11,7 +11,6 @@ function Audio( listener ) {
this.type = 'Audio';
this.listener = listener;
this.context = listener.context;
this.gain = this.context.createGain();
......
......@@ -4,7 +4,6 @@
import { Vector3 } from '../math/Vector3.js';
import { Quaternion } from '../math/Quaternion.js';
import { Clock } from '../core/Clock.js';
import { Object3D } from '../core/Object3D.js';
import { AudioContext } from './AudioContext.js';
......@@ -21,8 +20,6 @@ function AudioListener() {
this.filter = null;
this.timeDelta = 0;
}
AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
......@@ -98,7 +95,6 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
var scale = new Vector3();
var orientation = new Vector3();
var clock = new Clock();
return function updateMatrixWorld( force ) {
......@@ -107,27 +103,21 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
var listener = this.context.listener;
var up = this.up;
this.timeDelta = clock.getDelta();
this.matrixWorld.decompose( position, quaternion, scale );
orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );
if ( listener.positionX ) {
// code path for Chrome (see #14393)
var endTime = this.context.currentTime + this.timeDelta;
listener.positionX.linearRampToValueAtTime( position.x, endTime );
listener.positionY.linearRampToValueAtTime( position.y, endTime );
listener.positionZ.linearRampToValueAtTime( position.z, endTime );
listener.forwardX.linearRampToValueAtTime( orientation.x, endTime );
listener.forwardY.linearRampToValueAtTime( orientation.y, endTime );
listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime );
listener.upX.linearRampToValueAtTime( up.x, endTime );
listener.upY.linearRampToValueAtTime( up.y, endTime );
listener.upZ.linearRampToValueAtTime( up.z, endTime );
listener.positionX.setValueAtTime( position.x, this.context.currentTime );
listener.positionY.setValueAtTime( position.y, this.context.currentTime );
listener.positionZ.setValueAtTime( position.z, this.context.currentTime );
listener.forwardX.setValueAtTime( orientation.x, this.context.currentTime );
listener.forwardY.setValueAtTime( orientation.y, this.context.currentTime );
listener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime );
listener.upX.setValueAtTime( up.x, this.context.currentTime );
listener.upY.setValueAtTime( up.y, this.context.currentTime );
listener.upZ.setValueAtTime( up.z, this.context.currentTime );
} else {
......
......@@ -109,25 +109,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
orientation.set( 0, 0, 1 ).applyQuaternion( quaternion );
if ( panner.positionX ) {
// code path for Chrome and Firefox (see #14393)
var endTime = this.context.currentTime + this.listener.timeDelta;
panner.positionX.linearRampToValueAtTime( position.x, endTime );
panner.positionY.linearRampToValueAtTime( position.y, endTime );
panner.positionZ.linearRampToValueAtTime( position.z, endTime );
panner.orientationX.linearRampToValueAtTime( orientation.x, endTime );
panner.orientationY.linearRampToValueAtTime( orientation.y, endTime );
panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime );
} else {
panner.setPosition( position.x, position.y, position.z );
panner.setOrientation( orientation.x, orientation.y, orientation.z );
}
panner.setPosition( position.x, position.y, position.z );
panner.setOrientation( orientation.x, orientation.y, orientation.z );
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册