mirror of
https://github.com/overte-org/overte.git
synced 2025-04-26 18:56:24 +02:00
92 lines
No EOL
2.7 KiB
JavaScript
92 lines
No EOL
2.7 KiB
JavaScript
// Copyright 2016 High Fidelity, Inc.
|
|
//
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
(function() {
|
|
var teleport;
|
|
var portalDestination;
|
|
var animationURL;
|
|
var self = this;
|
|
|
|
this.entered = true;
|
|
|
|
this.preload = function(entityID) {
|
|
|
|
this.entityId = entityID;
|
|
|
|
var properties = Entities.getEntityProperties(entityID);
|
|
portalDestination = properties.userData;
|
|
animationURL = properties.modelURL;
|
|
this.soundOptions = {
|
|
stereo: true,
|
|
loop: false,
|
|
localOnly: false,
|
|
position: this.position,
|
|
volume: 0.5
|
|
};
|
|
this.teleportSound = SoundCache.getSound("https://hifi-content.s3.amazonaws.com/DomainContent/CellScience/Audio/whoosh.wav");
|
|
//print('Script.clearTimeout PRELOADING A ZOOM ENTITY')
|
|
print(" portal destination is " + portalDestination);
|
|
}
|
|
|
|
this.enterEntity = function(entityID) {
|
|
print('Script.clearTimeout ENTERED A BOUNDARY ENTITY, SHOULD ZOOM', entityID)
|
|
|
|
var data = JSON.parse(Entities.getEntityProperties(this.entityId).userData);
|
|
|
|
|
|
if (data != null) {
|
|
print("Teleporting to (" + data.location.x + ", " + data.location.y + ", " + data.location.z + ")");
|
|
if (self.teleportSound.downloaded) {
|
|
//print("play sound");
|
|
Audio.playSound(self.teleportSound, self.soundOptions);
|
|
} else {
|
|
//print("not downloaded");
|
|
}
|
|
|
|
this.lookAt(data.target, data.location);
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.lookAt = function(targetPosition, avatarPosition) {
|
|
var direction = Vec3.normalize(Vec3.subtract(MyAvatar.position, targetPosition));
|
|
|
|
var pitch = Quat.angleAxis(Math.asin(-direction.y) * 180.0 / Math.PI, {
|
|
x: 1,
|
|
y: 0,
|
|
z: 0
|
|
});
|
|
var yaw = Quat.angleAxis(Math.atan2(direction.x, direction.z) * 180.0 / Math.PI, {
|
|
x: 0,
|
|
y: 1,
|
|
z: 0
|
|
});
|
|
|
|
MyAvatar.goToLocation(avatarPosition, true, yaw);
|
|
MyAvatar.headYaw = 0;
|
|
}
|
|
|
|
|
|
|
|
this.leaveEntity = function(entityID) {
|
|
Entities.editEntity(entityID, {
|
|
animationURL: animationURL,
|
|
animationSettings: '{ "frameIndex": 1, "running": false }'
|
|
});
|
|
this.entered = false;
|
|
//playSound();
|
|
}
|
|
|
|
this.hoverEnterEntity = function(entityID) {
|
|
Entities.editEntity(entityID, {
|
|
animationURL: animationURL,
|
|
animationSettings: '{ "fps": 24, "firstFrame": 1, "lastFrame": 25, "frameIndex": 1, "running": true, "hold": true }'
|
|
});
|
|
}
|
|
}) |