|
@@ -1,4 +1,4 @@
|
|
|
-var __extends = (this && this.__extends) || function (d, b) {
|
|
|
+var __extends = this.__extends || function (d, b) {
|
|
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
|
function __() { this.constructor = d; }
|
|
|
__.prototype = b.prototype;
|
|
@@ -55,13 +55,17 @@ var BABYLON;
|
|
|
_this.position.copyFrom(_this._newPosition);
|
|
|
}
|
|
|
else {
|
|
|
- _this.setPosition(_this._previousPosition);
|
|
|
- _this.position.copyFrom(_this._previousPosition);
|
|
|
+ _this.setPosition(_this.position);
|
|
|
if (_this.onCollide) {
|
|
|
_this.onCollide(collidedMesh);
|
|
|
}
|
|
|
}
|
|
|
- BABYLON.Matrix.LookAtLHToRef(_this.position, _this._getTargetPosition(), _this.upVector, _this._viewMatrix);
|
|
|
+ var up = _this.upVector;
|
|
|
+ if (_this.allowUpsideDown && _this.beta < 0) {
|
|
|
+ var up = up.clone();
|
|
|
+ up = up.negate();
|
|
|
+ }
|
|
|
+ BABYLON.Matrix.LookAtLHToRef(_this.position, _this._getTargetPosition(), up, _this._viewMatrix);
|
|
|
_this._viewMatrix.m[12] += _this.targetScreenOffset.x;
|
|
|
_this._viewMatrix.m[13] += _this.targetScreenOffset.y;
|
|
|
_this._collisionTriggered = false;
|
|
@@ -97,11 +101,7 @@ var BABYLON;
|
|
|
ArcRotateCamera.prototype._isSynchronizedViewMatrix = function () {
|
|
|
if (!_super.prototype._isSynchronizedViewMatrix.call(this))
|
|
|
return false;
|
|
|
- return this._cache.target.equals(this._getTargetPosition())
|
|
|
- && this._cache.alpha === this.alpha
|
|
|
- && this._cache.beta === this.beta
|
|
|
- && this._cache.radius === this.radius
|
|
|
- && this._cache.targetScreenOffset.equals(this.targetScreenOffset);
|
|
|
+ return this._cache.target.equals(this._getTargetPosition()) && this._cache.alpha === this.alpha && this._cache.beta === this.beta && this._cache.radius === this.radius && this._cache.targetScreenOffset.equals(this.targetScreenOffset);
|
|
|
};
|
|
|
// Methods
|
|
|
ArcRotateCamera.prototype.attachControl = function (element, noPreventDefault) {
|
|
@@ -196,10 +196,7 @@ var BABYLON;
|
|
|
}
|
|
|
};
|
|
|
this._onKeyDown = function (evt) {
|
|
|
- if (_this.keysUp.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysDown.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysLeft.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysRight.indexOf(evt.keyCode) !== -1) {
|
|
|
+ if (_this.keysUp.indexOf(evt.keyCode) !== -1 || _this.keysDown.indexOf(evt.keyCode) !== -1 || _this.keysLeft.indexOf(evt.keyCode) !== -1 || _this.keysRight.indexOf(evt.keyCode) !== -1) {
|
|
|
var index = _this._keys.indexOf(evt.keyCode);
|
|
|
if (index === -1) {
|
|
|
_this._keys.push(evt.keyCode);
|
|
@@ -212,10 +209,7 @@ var BABYLON;
|
|
|
}
|
|
|
};
|
|
|
this._onKeyUp = function (evt) {
|
|
|
- if (_this.keysUp.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysDown.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysLeft.indexOf(evt.keyCode) !== -1 ||
|
|
|
- _this.keysRight.indexOf(evt.keyCode) !== -1) {
|
|
|
+ if (_this.keysUp.indexOf(evt.keyCode) !== -1 || _this.keysDown.indexOf(evt.keyCode) !== -1 || _this.keysLeft.indexOf(evt.keyCode) !== -1 || _this.keysRight.indexOf(evt.keyCode) !== -1) {
|
|
|
var index = _this._keys.indexOf(evt.keyCode);
|
|
|
if (index >= 0) {
|
|
|
_this._keys.splice(index, 1);
|
|
@@ -306,7 +300,6 @@ var BABYLON;
|
|
|
if (this._collisionTriggered) {
|
|
|
return;
|
|
|
}
|
|
|
- // Keyboard
|
|
|
for (var index = 0; index < this._keys.length; index++) {
|
|
|
var keyCode = this._keys[index];
|
|
|
if (this.keysLeft.indexOf(keyCode) !== -1) {
|
|
@@ -390,25 +383,24 @@ var BABYLON;
|
|
|
var cosb = Math.cos(this.beta);
|
|
|
var sinb = Math.sin(this.beta);
|
|
|
var target = this._getTargetPosition();
|
|
|
- target.addToRef(new BABYLON.Vector3(this.radius * cosa * sinb, this.radius * cosb, this.radius * sina * sinb), this.position);
|
|
|
- if (this.checkCollisions) {
|
|
|
+ target.addToRef(new BABYLON.Vector3(this.radius * cosa * sinb, this.radius * cosb, this.radius * sina * sinb), this._newPosition);
|
|
|
+ if (this.getScene().collisionsEnabled && this.checkCollisions) {
|
|
|
this._collider.radius = this.collisionRadius;
|
|
|
- this.position.subtractToRef(this._previousPosition, this._collisionVelocity);
|
|
|
+ this._newPosition.subtractToRef(this.position, this._collisionVelocity);
|
|
|
this._collisionTriggered = true;
|
|
|
- this.getScene().collisionCoordinator.getNewPosition(this._previousPosition, this._collisionVelocity, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);
|
|
|
+ this.getScene().collisionCoordinator.getNewPosition(this.position, this._collisionVelocity, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);
|
|
|
}
|
|
|
- var up = this.upVector;
|
|
|
- if (this.allowUpsideDown && this.beta < 0) {
|
|
|
- var up = up.clone();
|
|
|
- up = up.negate();
|
|
|
+ else {
|
|
|
+ this.position.copyFrom(this._newPosition);
|
|
|
+ var up = this.upVector;
|
|
|
+ if (this.allowUpsideDown && this.beta < 0) {
|
|
|
+ var up = up.clone();
|
|
|
+ up = up.negate();
|
|
|
+ }
|
|
|
+ BABYLON.Matrix.LookAtLHToRef(this.position, target, this.upVector, this._viewMatrix);
|
|
|
+ this._viewMatrix.m[12] += this.targetScreenOffset.x;
|
|
|
+ this._viewMatrix.m[13] += this.targetScreenOffset.y;
|
|
|
}
|
|
|
- BABYLON.Matrix.LookAtLHToRef(this.position, target, up, this._viewMatrix);
|
|
|
- this._previousAlpha = this.alpha;
|
|
|
- this._previousBeta = this.beta;
|
|
|
- this._previousRadius = this.radius;
|
|
|
- this._previousPosition.copyFrom(this.position);
|
|
|
- this._viewMatrix.m[12] += this.targetScreenOffset.x;
|
|
|
- this._viewMatrix.m[13] += this.targetScreenOffset.y;
|
|
|
return this._viewMatrix;
|
|
|
};
|
|
|
ArcRotateCamera.prototype.zoomOn = function (meshes) {
|
|
@@ -458,4 +450,3 @@ var BABYLON;
|
|
|
})(BABYLON.Camera);
|
|
|
BABYLON.ArcRotateCamera = ArcRotateCamera;
|
|
|
})(BABYLON || (BABYLON = {}));
|
|
|
-//# sourceMappingURL=babylon.arcRotateCamera.js.map
|