overte-lubosz/scripts/developer/utilities/tools/testEars.js

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);
}());