mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
checkpoint
This commit is contained in:
parent
712543a39a
commit
7c92ad5ced
2 changed files with 97 additions and 18 deletions
|
@ -15,9 +15,8 @@ import "../styles-uit"
|
|||
|
||||
|
||||
Column {
|
||||
visible: !isCheckBox;
|
||||
property string displayName: styleData.value;
|
||||
property string userName: model.userName;
|
||||
property string displayName: "";
|
||||
property string userName: "";
|
||||
property int displayTextHeight: 18;
|
||||
property int usernameTextHeight: 12;
|
||||
|
||||
|
@ -28,7 +27,7 @@ Column {
|
|||
width: parent.width;
|
||||
}
|
||||
RalewayLight {
|
||||
visible: styleData.value;
|
||||
visible: parent.displayName;
|
||||
text: parent.userName;
|
||||
size: parent.usernameTextHeight;
|
||||
elide: Text.ElideRight;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
"use strict";
|
||||
/*jslint vars: true, plusplus: true, forin: true*/
|
||||
/*globals Script, AvatarList, Camera, Overlays, OverlayWindow, Toolbars, Vec3, Controller, print */
|
||||
//
|
||||
// pal.js
|
||||
//
|
||||
|
@ -10,22 +13,74 @@
|
|||
|
||||
// FIXME: (function() { // BEGIN LOCAL_SCOPE
|
||||
|
||||
// Overlays
|
||||
var overlays = {}; // Keeps track of all our extended overlay data objects, keyed by target identifier.
|
||||
function ExtendedOverlay(key, type, properties) { // A wrapper around overlays to store the key it is associated with.
|
||||
overlays[key] = this;
|
||||
this.key = key;
|
||||
this.unselectedOverlay = Overlays.addOverlay(type, properties);
|
||||
}
|
||||
// Instance methods:
|
||||
ExtendedOverlay.prototype.deleteOverlay = function () { // remove display and data of this overlay
|
||||
Overlays.deleteOverlay(this.unselectedOverlay);
|
||||
if (this.selected) {
|
||||
Overlays.deleteOverlay(this.selectedOverlay);
|
||||
}
|
||||
delete overlays[this.key];
|
||||
};
|
||||
ExtendedOverlay.prototype.editOverlay = function (properties) { // change display of this overlay
|
||||
Overlays.editOverlay(this.selected ? this.selectedOverlay : this.unselectedOverlay, properties);
|
||||
};
|
||||
ExtendedOverlay.prototype.select = function (selected, type, initialProperties) {
|
||||
if (selected && !this.selectedOverlay) {
|
||||
this.selectedOverlay = Overlays.addOverlay(type, initialProperties);
|
||||
}
|
||||
this.selected = selected;
|
||||
Overlays.editOverlay(this.unselectedOverlay, {visible: !selected});
|
||||
Overlays.editOverlay(this.selectedOverlay, {visible: selected});
|
||||
};
|
||||
// Class methods:
|
||||
ExtendedOverlay.get = function (key) { // answer the extended overlay data object associated with the given avatar identifier
|
||||
return overlays[key];
|
||||
};
|
||||
ExtendedOverlay.some = function (iterator) { // Bails early as soon as iterator returns truthy.
|
||||
var key;
|
||||
for (key in overlays) {
|
||||
if (iterator(ExtendedOverlay.get(key))) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
};
|
||||
ExtendedOverlay.applyPickRay = function (pickRay, cb) { // cb(overlay) on the one overlay intersected by pickRay, if any.
|
||||
var pickedOverlay = Overlays.findRayIntersection(pickRay); // Depends on nearer coverOverlays to extend closer to us than farther ones.
|
||||
if (!pickedOverlay.intersects) {
|
||||
return;
|
||||
}
|
||||
ExtendedOverlay.some(function (overlay) { // See if pickedOverlay is one of ours.
|
||||
if ((overlay.selected ? overlay.selectedOverlay : overlay.unselectedOverlay) === pickedOverlay.overlayID) {
|
||||
cb(overlay);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
var pal = new OverlayWindow({
|
||||
title: 'People Action List',
|
||||
source: Script.resolvePath('../../resources/qml/hifi/Pal.qml'),
|
||||
title: 'People Action List',
|
||||
source: Script.resolvePath('../../qml/hifi/Pal.qml'),
|
||||
width: 480,
|
||||
height: 640,
|
||||
height: 640,
|
||||
visible: false
|
||||
});
|
||||
|
||||
var AVATAR_OVERLAY = Script.resolvePath("assets/images/grabsprite-3.png");
|
||||
function populateUserList() {
|
||||
var data = [
|
||||
{
|
||||
displayName: "Dummy Debugging User",
|
||||
userName: "foo.bar",
|
||||
sessionId: 'XXX'
|
||||
}
|
||||
];
|
||||
var data = [];
|
||||
/*data.push({ // Create an extra user for debugging.
|
||||
displayName: "Dummy Debugging User",
|
||||
userName: "foo.bar",
|
||||
sessionId: 'XXX'
|
||||
})*/
|
||||
var counter = 1;
|
||||
AvatarList.getAvatarIdentifiers().forEach(function (id) {
|
||||
var avatar = AvatarList.getAvatar(id);
|
||||
|
@ -34,13 +89,36 @@ function populateUserList() {
|
|||
userName: "fakeAcct" + (id || "Me"),
|
||||
sessionId: id
|
||||
});
|
||||
if (id) { // No overlay for us
|
||||
new ExtendedOverlay(id, "image3d", { // 3d so we don't go cross-eyed looking at it, but on top of everything
|
||||
imageURL: AVATAR_OVERLAY,
|
||||
drawInFront: true
|
||||
});
|
||||
}
|
||||
});
|
||||
pal.sendToQml(data);
|
||||
}
|
||||
function updateOverlays() {
|
||||
//var eye = Camera.position;
|
||||
AvatarList.getAvatarIdentifiers().forEach(function (id) {
|
||||
if (!id) {
|
||||
return; // don't update ourself
|
||||
}
|
||||
var avatar = AvatarList.getAvatar(id);
|
||||
var target = avatar.position;
|
||||
//var distance = Vec3.distance(target, eye);
|
||||
ExtendedOverlay.get(id).editOverlay({
|
||||
position: target
|
||||
});
|
||||
});
|
||||
}
|
||||
function removeOverlays() {
|
||||
ExtendedOverlay.some(function (overlay) { overlay.deleteOverlay(); });
|
||||
}
|
||||
|
||||
|
||||
// Manage the connection between the button and the window.
|
||||
var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
|
||||
var buttonName = "pal";
|
||||
var buttonName = "pal";
|
||||
var button = toolBar.addButton({
|
||||
objectName: buttonName,
|
||||
imageURL: Script.resolvePath("assets/images/tools/ignore.svg"),
|
||||
|
@ -50,11 +128,14 @@ var button = toolBar.addButton({
|
|||
buttonState: 1,
|
||||
alpha: 0.9
|
||||
});
|
||||
|
||||
function onClicked() {
|
||||
if (!pal.visible) {
|
||||
populateUserList();
|
||||
pal.raise();
|
||||
Script.update.connect(updateOverlays);
|
||||
} else {
|
||||
Script.update.disconnect(updateOverlays);
|
||||
removeOverlays();
|
||||
}
|
||||
pal.setVisible(!pal.visible);
|
||||
}
|
||||
|
@ -63,7 +144,6 @@ function onVisibileChanged() {
|
|||
button.writeProperty('defaultState', pal.visible ? 0 : 1);
|
||||
button.writeProperty('hoverState', pal.visible ? 2 : 3);
|
||||
}
|
||||
|
||||
button.clicked.connect(onClicked);
|
||||
pal.visibleChanged.connect(onVisibileChanged);
|
||||
|
||||
|
|
Loading…
Reference in a new issue