mirror of
https://github.com/lubosz/overte.git
synced 2025-04-09 12:52:35 +02:00
101 lines
3.6 KiB
JavaScript
101 lines
3.6 KiB
JavaScript
//
|
|
// testEars.js
|
|
//
|
|
// Positions and orients your listening position at a virtual head created in front of you.
|
|
//
|
|
// Created by David Rowe on 7 Oct 2017.
|
|
// Copyright 2017 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 () {
|
|
|
|
"use strict";
|
|
|
|
var overlays = [
|
|
{
|
|
// Head
|
|
type: "sphere",
|
|
properties: {
|
|
dimensions: { x: 0.2, y: 0.3, z: 0.25 },
|
|
position: { x: 0, y: 0, z: -2 },
|
|
rotation: Quat.fromVec3Degrees({ x: 0, y: 180, z: 0 }),
|
|
color: { red: 128, green: 128, blue: 128 },
|
|
alpha: 1.0,
|
|
solid: true
|
|
}
|
|
},
|
|
{
|
|
// Left ear
|
|
type: "sphere",
|
|
properties: {
|
|
dimensions: { x: 0.04, y: 0.10, z: 0.08 },
|
|
localPosition: { x: -0.1, y: 0, z: 0.05 },
|
|
localRotation: Quat.fromVec3Degrees({ x: 0, y: 0, z: 0 }),
|
|
color: { red: 255, green: 0, blue: 0 }, // Red for "port".
|
|
alpha: 1.0,
|
|
solid: true
|
|
}
|
|
},
|
|
{
|
|
// Right ear
|
|
type: "sphere",
|
|
properties: {
|
|
dimensions: { x: 0.04, y: 0.10, z: 0.08 },
|
|
localPosition: { x: 0.1, y: 0, z: 0.05 },
|
|
localRotation: Quat.fromVec3Degrees({ x: 0, y: 0, z: 0 }),
|
|
color: { red: 0, green: 255, blue: 0 }, // Green for "starboard".
|
|
alpha: 1.0,
|
|
solid: true
|
|
}
|
|
},
|
|
{
|
|
// Nose
|
|
type: "sphere",
|
|
properties: {
|
|
dimensions: { x: 0.04, y: 0.04, z: 0.04 },
|
|
localPosition: { x: 0, y: 0, z: -0.125 },
|
|
localRotation: Quat.fromVec3Degrees({ x: 0, y: -0.08, z: 0 }),
|
|
color: { red: 160, green: 160, blue: 160 },
|
|
alpha: 1.0,
|
|
solid: true
|
|
}
|
|
}
|
|
],
|
|
originalListenerMode;
|
|
|
|
function setUp() {
|
|
var i, length;
|
|
|
|
originalListenerMode = MyAvatar.audioListenerMode;
|
|
|
|
for (i = 0, length = overlays.length; i < length; i++) {
|
|
if (i === 0) {
|
|
overlays[i].properties.position = Vec3.sum(MyAvatar.getHeadPosition(),
|
|
Vec3.multiplyQbyV(MyAvatar.orientation, overlays[i].properties.position));
|
|
overlays[i].properties.rotation = Quat.multiply(MyAvatar.orientation, overlays[i].properties.rotation);
|
|
} else {
|
|
overlays[i].properties.parentID = overlays[0].id;
|
|
}
|
|
overlays[i].id = Overlays.addOverlay(overlays[i].type, overlays[i].properties);
|
|
}
|
|
|
|
MyAvatar.audioListenerMode = MyAvatar.audioListenerModeCustom;
|
|
MyAvatar.customListenPosition = overlays[0].properties.position;
|
|
MyAvatar.customListenOrientation = overlays[0].properties.orientation;
|
|
}
|
|
|
|
function tearDown() {
|
|
var i, length;
|
|
for (i = 0, length = overlays.length; i < length; i++) {
|
|
Overlays.deleteOverlay(overlays[i].id);
|
|
}
|
|
|
|
MyAvatar.audioListenerMode = originalListenerMode;
|
|
}
|
|
|
|
Script.setTimeout(setUp, 2000); // Delay so that overlays display if script runs at Interface start.
|
|
Script.scriptEnding.connect(tearDown);
|
|
}());
|