mirror of
https://github.com/lubosz/overte.git
synced 2025-04-14 18:06:13 +02:00
164 lines
6.7 KiB
JavaScript
164 lines
6.7 KiB
JavaScript
//
|
|
// developerMenuItems.js
|
|
// examples
|
|
//
|
|
// Created by Brad Hefta-Gaub on 2/24/14
|
|
// Copyright 2013 High Fidelity, Inc.
|
|
//
|
|
// Adds a bunch of developer and debugging menu items
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
var createdRenderMenu = false;
|
|
var createdGeneratedAudioMenu = false;
|
|
var createdAudioListenerModeMenu = false;
|
|
var createdStereoInputMenuItem = false;
|
|
|
|
var DEVELOPER_MENU = "Developer";
|
|
|
|
var ENTITIES_MENU = DEVELOPER_MENU + " > Entities";
|
|
|
|
var RENDER_MENU = DEVELOPER_MENU + " > Render";
|
|
var ENTITIES_ITEM = "Entities";
|
|
var AVATARS_ITEM = "Avatars";
|
|
|
|
var AUDIO_MENU = DEVELOPER_MENU + " > Audio";
|
|
var AUDIO_SOURCE_INJECT = "Generated Audio";
|
|
var AUDIO_SOURCE_MENU = AUDIO_MENU + " > Generated Audio Source";
|
|
var AUDIO_SOURCE_PINK_NOISE = "Pink Noise";
|
|
var AUDIO_SOURCE_SINE_440 = "Sine 440hz";
|
|
var AUDIO_LISTENER_MODE_MENU = AUDIO_MENU + " > Audio Listener Mode"
|
|
var AUDIO_LISTENER_MODE_FROM_HEAD = "Audio from head";
|
|
var AUDIO_LISTENER_MODE_FROM_CAMERA = "Audio from camera";
|
|
var AUDIO_LISTENER_MODE_CUSTOM = "Audio from custom position";
|
|
|
|
// be sure that the audio listener options are in the right order (same as the enumerator)
|
|
var AUDIO_LISTENER_OPTIONS = [
|
|
// MyAvatar.audioListenerModeHead (0)
|
|
AUDIO_LISTENER_MODE_FROM_HEAD,
|
|
// MyAvatar.audioListenerModeCamera (1)
|
|
AUDIO_LISTENER_MODE_FROM_CAMERA,
|
|
// MyAvatar.audioListenerCustom (2)
|
|
AUDIO_LISTENER_MODE_CUSTOM
|
|
];
|
|
var AUDIO_STEREO_INPUT = "Stereo Input";
|
|
|
|
|
|
function setupMenus() {
|
|
if (!Menu.menuExists(DEVELOPER_MENU)) {
|
|
Menu.addMenu(DEVELOPER_MENU);
|
|
}
|
|
if (!Menu.menuExists(ENTITIES_MENU)) {
|
|
Menu.addMenu(ENTITIES_MENU);
|
|
|
|
// NOTE: these menu items aren't currently working. I've temporarily removed them. Will add them back once we
|
|
// rewire these to work
|
|
/*
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Display Model Bounds", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Display Model Triangles", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Display Model Element Bounds", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Display Model Element Children", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Don't Do Precision Picking", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Don't Attempt Render Entities as Scene", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Don't Do Precision Picking", isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Disable Light Entities", isCheckable: true, isChecked: false });
|
|
*/
|
|
}
|
|
|
|
if (!Menu.menuExists(RENDER_MENU)) {
|
|
Menu.addMenu(RENDER_MENU);
|
|
createdRenderMenu = true;
|
|
}
|
|
|
|
if (!Menu.menuItemExists(RENDER_MENU, ENTITIES_ITEM)) {
|
|
Menu.addMenuItem({ menuName: RENDER_MENU, menuItemName: ENTITIES_ITEM, isCheckable: true, isChecked: Scene.shouldRenderEntities })
|
|
}
|
|
|
|
if (!Menu.menuItemExists(RENDER_MENU, AVATARS_ITEM)) {
|
|
Menu.addMenuItem({ menuName: RENDER_MENU, menuItemName: AVATARS_ITEM, isCheckable: true, isChecked: Scene.shouldRenderAvatars })
|
|
}
|
|
|
|
if (!Menu.menuExists(AUDIO_MENU)) {
|
|
Menu.addMenu(AUDIO_MENU);
|
|
}
|
|
if (!Menu.menuItemExists(AUDIO_MENU, AUDIO_SOURCE_INJECT)) {
|
|
Menu.addMenuItem({ menuName: AUDIO_MENU, menuItemName: AUDIO_SOURCE_INJECT, isCheckable: true, isChecked: false });
|
|
Menu.addMenu(AUDIO_SOURCE_MENU);
|
|
Menu.addMenuItem({ menuName: AUDIO_SOURCE_MENU, menuItemName: AUDIO_SOURCE_PINK_NOISE, isCheckable: true, isChecked: false });
|
|
Menu.addMenuItem({ menuName: AUDIO_SOURCE_MENU, menuItemName: AUDIO_SOURCE_SINE_440, isCheckable: true, isChecked: false });
|
|
Menu.setIsOptionChecked(AUDIO_SOURCE_PINK_NOISE, true);
|
|
Audio.selectPinkNoise();
|
|
createdGeneratedAudioMenu = true;
|
|
}
|
|
|
|
if (!Menu.menuExists(AUDIO_LISTENER_MODE_MENU)) {
|
|
Menu.addMenu(AUDIO_LISTENER_MODE_MENU);
|
|
for (var i = 0; i < AUDIO_LISTENER_OPTIONS.length; i++) {
|
|
Menu.addMenuItem({ menuName: AUDIO_LISTENER_MODE_MENU, menuItemName: AUDIO_LISTENER_OPTIONS[i], isCheckable: true, isChecked: (MyAvatar.audioListenerMode === i) });
|
|
}
|
|
createdAudioListenerModeMenu = true;
|
|
}
|
|
|
|
if (!Menu.menuItemExists(AUDIO_MENU, AUDIO_STEREO_INPUT)) {
|
|
Menu.addMenuItem({ menuName: AUDIO_MENU, menuItemName: AUDIO_STEREO_INPUT, isCheckable: true, isChecked: false });
|
|
createdStereoInputMenuItem = true;
|
|
}
|
|
}
|
|
|
|
Menu.menuItemEvent.connect(function (menuItem) {
|
|
print("menuItemEvent() in JS... menuItem=" + menuItem);
|
|
|
|
if (menuItem == ENTITIES_ITEM) {
|
|
Scene.shouldRenderEntities = Menu.isOptionChecked(ENTITIES_ITEM);
|
|
} else if (menuItem == AVATARS_ITEM) {
|
|
Scene.shouldRenderAvatars = Menu.isOptionChecked(AVATARS_ITEM);
|
|
} else if (menuItem == AUDIO_STEREO_INPUT) {
|
|
Audio.setStereoInput(Menu.isOptionChecked(AUDIO_STEREO_INPUT))
|
|
} else if (AUDIO_LISTENER_OPTIONS.indexOf(menuItem) !== -1) {
|
|
MyAvatar.audioListenerMode = AUDIO_LISTENER_OPTIONS.indexOf(menuItem);
|
|
}
|
|
});
|
|
|
|
MyAvatar.audioListenerModeChanged.connect(function() {
|
|
for (var i = 0; i < AUDIO_LISTENER_OPTIONS.length; i++) {
|
|
Menu.setIsOptionChecked(AUDIO_LISTENER_OPTIONS[i], (MyAvatar.audioListenerMode === i));
|
|
}
|
|
});
|
|
|
|
Scene.shouldRenderAvatarsChanged.connect(function(shouldRenderAvatars) {
|
|
Menu.setIsOptionChecked(AVATARS_ITEM, shouldRenderAvatars)
|
|
});
|
|
|
|
Scene.shouldRenderEntitiesChanged.connect(function(shouldRenderEntities) {
|
|
Menu.setIsOptionChecked(ENTITIES_ITEM, shouldRenderEntities)
|
|
});
|
|
|
|
function scriptEnding() {
|
|
Menu.removeMenu(ENTITIES_MENU);
|
|
|
|
if (createdRenderMenu) {
|
|
Menu.removeMenu(RENDER_MENU);
|
|
} else {
|
|
Menu.removeMenuItem(RENDER_MENU, ENTITIES_ITEM);
|
|
Menu.removeMenuItem(RENDER_MENU, AVATARS_ITEM);
|
|
}
|
|
|
|
if (createdGeneratedAudioMenu) {
|
|
Audio.injectGeneratedNoise(false);
|
|
Menu.removeMenuItem(AUDIO_MENU, AUDIO_SOURCE_INJECT);
|
|
Menu.removeMenu(AUDIO_SOURCE_MENU);
|
|
}
|
|
|
|
if (createdAudioListenerModeMenu) {
|
|
Menu.removeMenu(AUDIO_LISTENER_MODE_MENU);
|
|
}
|
|
|
|
if (createdStereoInputMenuItem) {
|
|
Menu.removeMenuItem(AUDIO_MENU, AUDIO_STEREO_INPUT);
|
|
}
|
|
}
|
|
|
|
setupMenus();
|
|
Script.scriptEnding.connect(scriptEnding);
|