diff --git a/src/framework/xr/xr-manager.js b/src/framework/xr/xr-manager.js index 6bbad5507fc..d882b20e509 100644 --- a/src/framework/xr/xr-manager.js +++ b/src/framework/xr/xr-manager.js @@ -694,32 +694,28 @@ class XrManager extends EventHandler { const lengthOld = this.views.length; const lengthNew = pose.views.length; - if (lengthNew > this.views.length) { - // add new views into list - for (let i = 0; i <= (lengthNew - this.views.length); i++) { - let view = this.viewsPool.pop(); - if (!view) { - view = { - viewport: new Vec4(), - projMat: new Mat4(), - viewMat: new Mat4(), - viewOffMat: new Mat4(), - viewInvMat: new Mat4(), - viewInvOffMat: new Mat4(), - projViewOffMat: new Mat4(), - viewMat3: new Mat3(), - position: new Float32Array(3), - rotation: new Quat() - }; - } - - this.views.push(view); - } - } else if (lengthNew <= this.views.length) { - // remove views from list into pool - for (let i = 0; i < (this.views.length - lengthNew); i++) { - this.viewsPool.push(this.views.pop()); + while (lengthNew > this.views.length) { + let view = this.viewsPool.pop(); + if (!view) { + view = { + viewport: new Vec4(), + projMat: new Mat4(), + viewMat: new Mat4(), + viewOffMat: new Mat4(), + viewInvMat: new Mat4(), + viewInvOffMat: new Mat4(), + projViewOffMat: new Mat4(), + viewMat3: new Mat3(), + position: new Float32Array(3), + rotation: new Quat() + }; } + + this.views.push(view); + } + // remove views from list into pool + while (lengthNew < this.views.length) { + this.viewsPool.push(this.views.pop()); } // reset position