mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 03:24:07 +02:00
working smooth arrival
This commit is contained in:
parent
5cb585aec3
commit
1728878982
1 changed files with 69 additions and 8 deletions
|
@ -16,6 +16,23 @@ var fadeSphereInterval = null;
|
|||
var FADE_IN_INTERVAL = 50;
|
||||
var FADE_OUT_INTERVAL = 50;
|
||||
|
||||
|
||||
//slow
|
||||
var SMOOTH_ARRIVAL_SPACING = 150;
|
||||
var NUMBER_OF_STEPS = 2;
|
||||
|
||||
//medium-slow
|
||||
var SMOOTH_ARRIVAL_SPACING = 100;
|
||||
var NUMBER_OF_STEPS = 4;
|
||||
|
||||
//medium-fast
|
||||
var SMOOTH_ARRIVAL_SPACING = 33;
|
||||
var NUMBER_OF_STEPS = 6;
|
||||
|
||||
//fast
|
||||
var SMOOTH_ARRIVAL_SPACING = 10;
|
||||
var NUMBER_OF_STEPS = 20;
|
||||
|
||||
var TARGET_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/james/teleporter/Tele-destiny.fbx';
|
||||
var TARGET_MODEL_DIMENSIONS = {
|
||||
x: 1.15,
|
||||
|
@ -101,8 +118,8 @@ function Teleporter() {
|
|||
|
||||
};
|
||||
|
||||
this.findMidpoint = function(handPosition, intersection) {
|
||||
var xy = Vec3.sum(handPosition, intersection.intersection);
|
||||
this.findMidpoint = function(start, end) {
|
||||
var xy = Vec3.sum(start, end);
|
||||
var midpoint = Vec3.multiply(0.5, xy);
|
||||
return midpoint
|
||||
};
|
||||
|
@ -196,7 +213,7 @@ function Teleporter() {
|
|||
this.updateConnected = null;
|
||||
this.disableMappings();
|
||||
this.turnOffOverlayBeams();
|
||||
this.deleteTargetOverlay();
|
||||
|
||||
this.enableGrab();
|
||||
Script.setTimeout(function() {
|
||||
inTeleportMode = false;
|
||||
|
@ -396,7 +413,7 @@ function Teleporter() {
|
|||
};
|
||||
|
||||
this.updateTargetOverlay = function(intersection) {
|
||||
this.intersection = intersection;
|
||||
_this.intersection = intersection;
|
||||
|
||||
var rotation = Quat.lookAt(intersection.intersection, MyAvatar.position, Vec3.UP)
|
||||
var euler = Quat.safeEulerAngles(rotation)
|
||||
|
@ -427,16 +444,60 @@ function Teleporter() {
|
|||
|
||||
this.teleport = function(value) {
|
||||
|
||||
|
||||
if (_this.intersection !== null) {
|
||||
|
||||
var offset = getAvatarFootOffset();
|
||||
_this.intersection.intersection.y += offset;
|
||||
MyAvatar.position = _this.intersection.intersection;
|
||||
// MyAvatar.position = _this.intersection.intersection;
|
||||
this.exitTeleportMode();
|
||||
this.smoothArrival();
|
||||
|
||||
}
|
||||
|
||||
this.triggerHaptics();
|
||||
this.exitTeleportMode();
|
||||
};
|
||||
|
||||
this.getArrivalPoints = function(startPoint, endPoint) {
|
||||
var arrivalPoints = [];
|
||||
|
||||
|
||||
var i;
|
||||
var lastPoint;
|
||||
|
||||
for (i = 0; i < NUMBER_OF_STEPS; i++) {
|
||||
if (i === 0) {
|
||||
lastPoint = startPoint;
|
||||
}
|
||||
var newPoint = _this.findMidpoint(lastPoint, endPoint);
|
||||
lastPoint = newPoint;
|
||||
arrivalPoints.push(newPoint);
|
||||
}
|
||||
|
||||
arrivalPoints.push(endPoint)
|
||||
|
||||
return arrivalPoints
|
||||
};
|
||||
|
||||
this.smoothArrival = function() {
|
||||
|
||||
_this.arrivalPoints = _this.getArrivalPoints(MyAvatar.position, _this.intersection.intersection);
|
||||
print('ARRIVAL POINTS: ' + JSON.stringify(_this.arrivalPoints));
|
||||
print('end point: ' + JSON.stringify(_this.intersection.intersection))
|
||||
_this.smoothArrivalInterval = Script.setInterval(function() {
|
||||
print(_this.arrivalPoints.length+" arrival points remaining")
|
||||
if (_this.arrivalPoints.length === 0) {
|
||||
Script.clearInterval(_this.smoothArrivalInterval);
|
||||
_this.triggerHaptics();
|
||||
_this.deleteTargetOverlay();
|
||||
return;
|
||||
}
|
||||
|
||||
var landingPoint = _this.arrivalPoints.shift();
|
||||
print('landing at: ' + JSON.stringify(landingPoint))
|
||||
MyAvatar.position =landingPoint;
|
||||
|
||||
|
||||
}, SMOOTH_ARRIVAL_SPACING)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue