mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 11:45:36 +02:00
Merge pull request #11543 from ctrlaltdavid/21496
Add script that tests setting your listening position and orientation
This commit is contained in:
commit
bd74386997
1 changed files with 101 additions and 0 deletions
101
scripts/developer/utilities/tools/testEars.js
Normal file
101
scripts/developer/utilities/tools/testEars.js
Normal file
|
@ -0,0 +1,101 @@
|
|||
//
|
||||
// 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);
|
||||
}());
|
Loading…
Reference in a new issue