mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-05 14:05:27 +02:00
228 lines
5 KiB
JavaScript
228 lines
5 KiB
JavaScript
//
|
|
// controlPanel.js
|
|
// examples
|
|
//
|
|
// Created by Zander Otavka on 7/15/15.
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Shows a few common controls in a OverlayPanel on right click.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
Script.include([
|
|
"libraries/globals.js",
|
|
"libraries/overlayManager.js",
|
|
]);
|
|
|
|
var BG_IMAGE_URL = OVERTE_PUBLIC_CDN + "images/card-bg.svg";
|
|
var CLOSE_IMAGE_URL = OVERTE_PUBLIC_CDN + "images/tools/close.svg";
|
|
var MIC_IMAGE_URL = OVERTE_PUBLIC_CDN + "images/tools/mic-toggle.svg";
|
|
var FACE_IMAGE_URL = OVERTE_PUBLIC_CDN + "images/tools/face-toggle.svg";
|
|
var ADDRESS_BAR_IMAGE_URL = OVERTE_PUBLIC_CDN + "images/tools/address-bar-toggle.svg";
|
|
|
|
var panel = new OverlayPanel({
|
|
anchorPositionBinding: { avatar: "MyAvatar" },
|
|
offsetPosition: { x: 0, y: 0.4, z: -1 },
|
|
visible: false
|
|
});
|
|
|
|
var background = new Image3DOverlay({
|
|
url: BG_IMAGE_URL,
|
|
dimensions: {
|
|
x: 0.5,
|
|
y: 0.5,
|
|
},
|
|
isFacingAvatar: false,
|
|
alpha: 1.0,
|
|
ignoreRayIntersection: false,
|
|
visible: false
|
|
});
|
|
panel.addChild(background);
|
|
|
|
var closeButton = new Image3DOverlay({
|
|
url: CLOSE_IMAGE_URL,
|
|
dimensions: {
|
|
x: 0.15,
|
|
y: 0.15,
|
|
},
|
|
isFacingAvatar: false,
|
|
alpha: 1.0,
|
|
ignoreRayIntersection: false,
|
|
offsetPosition: {
|
|
x: 0.1,
|
|
y: 0.1,
|
|
z: 0.001
|
|
},
|
|
visible: false
|
|
});
|
|
closeButton.onClick = function(event) {
|
|
panel.visible = false;
|
|
};
|
|
panel.addChild(closeButton);
|
|
|
|
var micMuteButton = new Image3DOverlay({
|
|
url: MIC_IMAGE_URL,
|
|
subImage: {
|
|
x: 0,
|
|
y: 0,
|
|
width: 45,
|
|
height: 45
|
|
},
|
|
dimensions: {
|
|
x: 0.15,
|
|
y: 0.15,
|
|
},
|
|
isFacingAvatar: false,
|
|
alpha: 1.0,
|
|
ignoreRayIntersection: false,
|
|
offsetPosition: {
|
|
x: -0.1,
|
|
y: 0.1,
|
|
z: 0.001
|
|
},
|
|
visible: false
|
|
});
|
|
micMuteButton.onClick = function(event) {
|
|
AudioDevice.toggleMute();
|
|
};
|
|
panel.addChild(micMuteButton);
|
|
|
|
var faceMuteButton = new Image3DOverlay({
|
|
url: FACE_IMAGE_URL,
|
|
subImage: {
|
|
x: 0,
|
|
y: 0,
|
|
width: 45,
|
|
height: 45
|
|
},
|
|
dimensions: {
|
|
x: 0.15,
|
|
y: 0.15,
|
|
},
|
|
isFacingAvatar: false,
|
|
alpha: 1.0,
|
|
ignoreRayIntersection: false,
|
|
offsetPosition: {
|
|
x: -0.1,
|
|
y: -0.1,
|
|
z: 0.001
|
|
},
|
|
visible: false
|
|
});
|
|
faceMuteButton.onClick = function(event) {
|
|
FaceTracker.toggleMute();
|
|
};
|
|
panel.addChild(faceMuteButton);
|
|
|
|
var addressBarButton = new Image3DOverlay({
|
|
url: ADDRESS_BAR_IMAGE_URL,
|
|
subImage: {
|
|
x: 0,
|
|
y: 0,
|
|
width: 45,
|
|
height: 45
|
|
},
|
|
dimensions: {
|
|
x: 0.15,
|
|
y: 0.15,
|
|
},
|
|
isFacingAvatar: false,
|
|
alpha: 1.0,
|
|
ignoreRayIntersection: false,
|
|
offsetPosition: {
|
|
x: 0.1,
|
|
y: -0.1,
|
|
z: 0.001
|
|
},
|
|
visible: false
|
|
});
|
|
addressBarButton.onClick = function(event) {
|
|
DialogsManager.toggleAddressBar();
|
|
};
|
|
panel.addChild(addressBarButton);
|
|
|
|
panel.setChildrenVisible();
|
|
|
|
|
|
function onMicMuteToggled() {
|
|
var offset;
|
|
if (AudioDevice.getMuted()) {
|
|
offset = 45;
|
|
} else {
|
|
offset = 0;
|
|
}
|
|
micMuteButton.subImage = {
|
|
x: offset,
|
|
y: 0,
|
|
width: 45,
|
|
height: 45
|
|
};
|
|
}
|
|
onMicMuteToggled();
|
|
|
|
function onFaceMuteToggled() {
|
|
var offset;
|
|
if (FaceTracker.getMuted()) {
|
|
offset = 45;
|
|
} else {
|
|
offset = 0;
|
|
}
|
|
faceMuteButton.subImage = {
|
|
x: offset,
|
|
y: 0,
|
|
width: 45,
|
|
height: 45
|
|
};
|
|
}
|
|
onFaceMuteToggled();
|
|
|
|
var mouseDown = {};
|
|
|
|
function onMouseDown(event) {
|
|
if (event.isLeftButton) {
|
|
mouseDown.overlay = OverlayManager.findAtPoint({ x: event.x, y: event.y });
|
|
}
|
|
if (event.isRightButton) {
|
|
mouseDown.pos = { x: event.x, y: event.y };
|
|
}
|
|
mouseDown.maxDistance = 0;
|
|
}
|
|
|
|
function onMouseMove(event) {
|
|
if (mouseDown.maxDistance !== undefined) {
|
|
var dist = Vec3.distance(mouseDown.pos, { x: event.x, y: event.y });
|
|
if (dist > mouseDown.maxDistance) {
|
|
mouseDown.maxDistance = dist;
|
|
}
|
|
}
|
|
}
|
|
|
|
function onMouseUp(event) {
|
|
if (event.isLeftButton) {
|
|
var overlay = OverlayManager.findAtPoint({ x: event.x, y: event.y });
|
|
if (overlay && overlay === mouseDown.overlay && overlay.onClick) {
|
|
overlay.onClick(event);
|
|
}
|
|
}
|
|
if (event.isRightButton && mouseDown.maxDistance < 10) {
|
|
panel.setProperties({
|
|
visible: !panel.visible,
|
|
anchorRotation: MyAvatar.orientation
|
|
});
|
|
}
|
|
|
|
mouseDown = {};
|
|
}
|
|
|
|
function onScriptEnd(event) {
|
|
panel.destroy();
|
|
}
|
|
|
|
Controller.mousePressEvent.connect(onMouseDown);
|
|
Controller.mouseMoveEvent.connect(onMouseMove);
|
|
Controller.mouseReleaseEvent.connect(onMouseUp);
|
|
AudioDevice.muteToggled.connect(onMicMuteToggled);
|
|
FaceTracker.muteToggled.connect(onFaceMuteToggled);
|
|
Script.scriptEnding.connect(onScriptEnd);
|