|
@@ -5178,7 +5178,8 @@ var BABYLON;
|
|
|
case 3: // FresnelParameters
|
|
|
case 4: // Vector2
|
|
|
case 5: // Vector3
|
|
|
- case 7:// Color Curves
|
|
|
+ case 7: // Color Curves
|
|
|
+ case 10:// Quaternion
|
|
|
destination[property] = instanciate ? sourceProperty : sourceProperty.clone();
|
|
|
break;
|
|
|
}
|
|
@@ -5305,6 +5306,10 @@ var BABYLON;
|
|
|
return generateSerializableMember(9, sourceName); // image processing
|
|
|
}
|
|
|
BABYLON.serializeAsImageProcessingConfiguration = serializeAsImageProcessingConfiguration;
|
|
|
+ function serializeAsQuaternion(sourceName) {
|
|
|
+ return generateSerializableMember(10, sourceName); // quaternion member
|
|
|
+ }
|
|
|
+ BABYLON.serializeAsQuaternion = serializeAsQuaternion;
|
|
|
var SerializationHelper = /** @class */ (function () {
|
|
|
function SerializationHelper() {
|
|
|
}
|
|
@@ -13047,6 +13052,7 @@ var BABYLON;
|
|
|
//# sourceMappingURL=babylon.boundingInfo.js.map
|
|
|
|
|
|
|
|
|
+
|
|
|
var BABYLON;
|
|
|
(function (BABYLON) {
|
|
|
var TransformNode = /** @class */ (function (_super) {
|
|
@@ -13917,6 +13923,27 @@ var BABYLON;
|
|
|
TransformNode.BILLBOARDMODE_ALL = 7;
|
|
|
TransformNode._lookAtVectorCache = new BABYLON.Vector3(0, 0, 0);
|
|
|
TransformNode._rotationAxisCache = new BABYLON.Quaternion();
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serializeAsVector3()
|
|
|
+ ], TransformNode.prototype, "_rotation", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serializeAsQuaternion()
|
|
|
+ ], TransformNode.prototype, "_rotationQuaternion", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serializeAsVector3()
|
|
|
+ ], TransformNode.prototype, "_scaling", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serialize()
|
|
|
+ ], TransformNode.prototype, "billboardMode", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serialize()
|
|
|
+ ], TransformNode.prototype, "scalingDeterminant", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serialize()
|
|
|
+ ], TransformNode.prototype, "infiniteDistance", void 0);
|
|
|
+ __decorate([
|
|
|
+ BABYLON.serializeAsVector3()
|
|
|
+ ], TransformNode.prototype, "position", void 0);
|
|
|
return TransformNode;
|
|
|
}(BABYLON.Node));
|
|
|
BABYLON.TransformNode = TransformNode;
|
|
@@ -15635,6 +15662,10 @@ var BABYLON;
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var BABYLON;
|
|
|
(function (BABYLON) {
|
|
|
var Light = /** @class */ (function (_super) {
|
|
@@ -71523,7 +71554,7 @@ var BABYLON;
|
|
|
this._teleportationAllowed = false;
|
|
|
this._rotationAllowed = true;
|
|
|
this._teleportationRequestInitiated = false;
|
|
|
- this._xboxGamepadTeleportationRequestInitiated = false;
|
|
|
+ //private _classicGamepadTeleportationRequestInitiated = false;
|
|
|
this._rotationRightAsked = false;
|
|
|
this._rotationLeftAsked = false;
|
|
|
this._teleportationFillColor = "#444444";
|
|
@@ -71826,14 +71857,18 @@ var BABYLON;
|
|
|
if (this._rightControllerReady && this._webVRCamera.rightController) {
|
|
|
this._enableTeleportationOnController(this._webVRCamera.rightController);
|
|
|
}
|
|
|
+ this._scene.gamepadManager.onGamepadConnectedObservable.add(function (pad) { return _this._onNewGamepadConnected(pad); });
|
|
|
this._postProcessMove = new BABYLON.ImageProcessingPostProcess("postProcessMove", 1.0, this._webVRCamera);
|
|
|
this._passProcessMove = new BABYLON.PassPostProcess("pass", 1.0, this._webVRCamera);
|
|
|
this._scene.imageProcessingConfiguration.vignetteColor = new BABYLON.Color4(0, 0, 0, 0);
|
|
|
this._scene.imageProcessingConfiguration.vignetteEnabled = true;
|
|
|
this._scene.imageProcessingConfiguration.isEnabled = false;
|
|
|
+ this._createGazeTracker();
|
|
|
this._createTeleportationCircles();
|
|
|
this.meshSelectionPredicate = function (mesh) {
|
|
|
- if (mesh.name.indexOf(_this._floorMeshName) !== -1) {
|
|
|
+ if (mesh.isVisible && mesh.name.indexOf("gazeTracker") === -1
|
|
|
+ && mesh.name.indexOf("teleportationCircle") === -1
|
|
|
+ && mesh.name.indexOf("torusTeleportation") === -1) {
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
@@ -71842,6 +71877,56 @@ var BABYLON;
|
|
|
_this._castRayAndSelectObject();
|
|
|
});
|
|
|
};
|
|
|
+ VRExperienceHelper.prototype._onNewGamepadConnected = function (gamepad) {
|
|
|
+ var _this = this;
|
|
|
+ if (gamepad.leftStick) {
|
|
|
+ gamepad.onleftstickchanged(function (stickValues) {
|
|
|
+ if (!_this._teleportationRequestInitiated) {
|
|
|
+ if (stickValues.y < -0.6) {
|
|
|
+ _this._teleportationRequestInitiated = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (stickValues.y > -0.4) {
|
|
|
+ if (_this._teleportationAllowed) {
|
|
|
+ _this._teleportCamera();
|
|
|
+ }
|
|
|
+ _this._teleportationRequestInitiated = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (gamepad.rightStick) {
|
|
|
+ gamepad.onrightstickchanged(function (stickValues) {
|
|
|
+ if (!_this._rotationLeftAsked) {
|
|
|
+ if (stickValues.x < -0.6) {
|
|
|
+ _this._rotationLeftAsked = true;
|
|
|
+ if (_this._rotationAllowed) {
|
|
|
+ _this._rotateCamera(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (stickValues.x > -0.4) {
|
|
|
+ _this._rotationLeftAsked = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!_this._rotationRightAsked) {
|
|
|
+ if (stickValues.x > 0.6) {
|
|
|
+ _this._rotationRightAsked = true;
|
|
|
+ if (_this._rotationAllowed) {
|
|
|
+ _this._rotateCamera(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (stickValues.x < 0.4) {
|
|
|
+ _this._rotationRightAsked = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
VRExperienceHelper.prototype._enableTeleportationOnController = function (webVRController) {
|
|
|
var _this = this;
|
|
|
var controllerMesh = webVRController.mesh;
|
|
@@ -71915,6 +72000,18 @@ var BABYLON;
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
+ // Little white circle attached to the camera
|
|
|
+ // That will act as the target to look on the floor where to teleport
|
|
|
+ VRExperienceHelper.prototype._createGazeTracker = function () {
|
|
|
+ this._gazeTracker = BABYLON.Mesh.CreateTorus("gazeTracker", 0.0050, 0.0020, 25, this._scene, false);
|
|
|
+ this._gazeTracker.bakeCurrentTransformIntoVertices();
|
|
|
+ this._gazeTracker.isPickable = false;
|
|
|
+ var targetMat = new BABYLON.StandardMaterial("targetMat", this._scene);
|
|
|
+ targetMat.specularColor = BABYLON.Color3.Black();
|
|
|
+ targetMat.emissiveColor = BABYLON.Color3.White();
|
|
|
+ targetMat.backFaceCulling = false;
|
|
|
+ this._gazeTracker.material = targetMat;
|
|
|
+ };
|
|
|
VRExperienceHelper.prototype._createTeleportationCircles = function () {
|
|
|
this._teleportationCircle = BABYLON.Mesh.CreateGround("teleportationCircle", 2, 2, 2, this._scene);
|
|
|
var length = 512;
|
|
@@ -71936,7 +72033,7 @@ var BABYLON;
|
|
|
var teleportationCircleMaterial = new BABYLON.StandardMaterial("TextPlaneMaterial", this._scene);
|
|
|
teleportationCircleMaterial.diffuseTexture = dynamicTexture;
|
|
|
this._teleportationCircle.material = teleportationCircleMaterial;
|
|
|
- var torus = BABYLON.Mesh.CreateTorus("torus", 0.75, 0.1, 25, this._scene, false);
|
|
|
+ var torus = BABYLON.Mesh.CreateTorus("torusTeleportation", 0.75, 0.1, 25, this._scene, false);
|
|
|
torus.parent = this._teleportationCircle;
|
|
|
var animationInnerCircle = new BABYLON.Animation("animationInnerCircle", "position.y", 30, BABYLON.Animation.ANIMATIONTYPE_FLOAT, BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE);
|
|
|
var keys = [];
|
|
@@ -72039,7 +72136,7 @@ var BABYLON;
|
|
|
};
|
|
|
VRExperienceHelper.prototype._moveTeleportationSelectorTo = function (coordinates) {
|
|
|
this._teleportationAllowed = true;
|
|
|
- if (this._teleportationRequestInitiated || this._xboxGamepadTeleportationRequestInitiated) {
|
|
|
+ if (this._teleportationRequestInitiated) {
|
|
|
this._displayTeleportationCircle();
|
|
|
}
|
|
|
else {
|
|
@@ -72130,11 +72227,41 @@ var BABYLON;
|
|
|
ray = this.currentVRCamera.rightController.getForwardRay();
|
|
|
}
|
|
|
var hit = this._scene.pickWithRay(ray, this.meshSelectionPredicate);
|
|
|
+ if (hit && hit.pickedPoint) {
|
|
|
+ this._gazeTracker.scaling.x = hit.distance;
|
|
|
+ this._gazeTracker.scaling.y = hit.distance;
|
|
|
+ this._gazeTracker.scaling.z = hit.distance;
|
|
|
+ var pickNormal = hit.getNormal();
|
|
|
+ var deltaFighting = 0.002;
|
|
|
+ if (pickNormal) {
|
|
|
+ var axis1 = BABYLON.Vector3.Cross(BABYLON.Axis.Y, pickNormal);
|
|
|
+ var axis2 = BABYLON.Vector3.Cross(pickNormal, axis1);
|
|
|
+ BABYLON.Vector3.RotationFromAxisToRef(axis2, pickNormal, axis1, this._gazeTracker.rotation);
|
|
|
+ }
|
|
|
+ this._gazeTracker.position.copyFrom(hit.pickedPoint);
|
|
|
+ if (this._gazeTracker.position.x < 0) {
|
|
|
+ this._gazeTracker.position.x += deltaFighting;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this._gazeTracker.position.x -= deltaFighting;
|
|
|
+ }
|
|
|
+ if (this._gazeTracker.position.y < 0) {
|
|
|
+ this._gazeTracker.position.y += deltaFighting;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this._gazeTracker.position.y -= deltaFighting;
|
|
|
+ }
|
|
|
+ if (this._gazeTracker.position.z < 0) {
|
|
|
+ this._gazeTracker.position.z += deltaFighting;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this._gazeTracker.position.z -= deltaFighting;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this._rayHelper) {
|
|
|
this._rayHelper.dispose();
|
|
|
}
|
|
|
if (this.currentVRCamera.rightController) {
|
|
|
- //if (target) target.isVisible = false;
|
|
|
this._rayHelper = BABYLON.RayHelper.CreateAndShow(ray, this._scene, new BABYLON.Color3(0.7, 0.7, 0.7));
|
|
|
}
|
|
|
if (hit && hit.pickedMesh) {
|