1234567891011121314151617181920212223242526272829303132333435363738394041 |
- "use strict";
- var BABYLON = BABYLON || {};
- (function () {
- BABYLON.InputCollisionFilter = function (scene, target, ellipsoid) {
- BABYLON.inputFilter.call(this, scene, target);
- this._transformedDirection = new BABYLON.Vector3();
- this._tempNewPosition = new BABYLON.Vector3();
- this._tempNewPosition2 = new BABYLON.Vector3();
- this._ellipsoid = ellipsoid || new BABYLON.Vector3(.2,.855,.2);
- this._collider = new BABYLON.Collider();
- this._collidedPosition = new BABYLON.Vector3(0, 0, 0);
- this._cameraHeight = 1.7;
- this._positionBottom = new BABYLON.Vector3(0, 0, 0);
- };
- BABYLON.InputCollisionFilter.prototype = Object.create(BABYLON.inputFilter.prototype);
- BABYLON.InputCollisionFilter.prototype.moveRelative = function (relativeMovement) {
- var rotation = this.getOrientation();
- BABYLON.Vector3.TransformNormalToRef(relativeMovement, this.getOrientationMatrix(), this._transformedDirection);
- this.getPosition().addToRef(this._transformedDirection, this._tempNewPosition);
- //this._tempNewPosition.y -= this._ellipsoid.y;
- this._collider.radius = this._ellipsoid;
- var p = this.getPosition();
- this._positionBottom.x = p.x;
- this._positionBottom.y = p.y;
- this._positionBottom.z = p.z;
- this._positionBottom.y += this._ellipsoid.y - this._cameraHeight;
- this.scene._getNewPosition(this._positionBottom, this._transformedDirection, this._collider, 3, this._collidedPosition);
- this._collidedPosition.subtractToRef(this._positionBottom, this._tempNewPosition2);
- if (this._tempNewPosition2.length() > BABYLON.Engine.collisionsEpsilon * 2) {
- BABYLON.Vector3.TransformNormalToRef(this._tempNewPosition2, this.getInvertOrientationMatrix(), this._tempNewPosition);
- this.target.moveRelative(this._tempNewPosition);
- }
- };
- })();
|