//// Created by Zach Pomerantz on June 16, 2016.// Copyright 2016 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//var SERVER = Account.metaverseServerURL + '/api/v1';var OVERLAY = null;// Every time you enter a domain, display the domain's metadatalocation.hostChanged.connect(function(host) { print('Detected host change:', host); // Fetch the domain ID from the directory server var placeData = request(SERVER + '/places/' + host); if (!placeData) { print('Cannot find place name - abandoning metadata request for', host); return; } var domainID = placeData.data.place.domain.id; print('Domain ID:', domainID); // Fetch the domain metadata from the directory server var domainData = request(SERVER + '/domains/' + domainID); print(SERVER + '/domains/' + domainID); if (!domainData) { print('Cannot find domain data - abandoning metadata request for', domainID); return; } var metadata = domainData.domain; print('Domain metadata:', JSON.stringify(metadata)); // Display the fetched metadata in an overlay displayMetadata(host, metadata);});Script.scriptEnding.connect(clearMetadata);function displayMetadata(place, metadata) { clearMetadata(); var COLOR_TEXT = { red: 255, green: 255, blue: 255 }; var COLOR_BACKGROUND = { red: 0, green: 0, blue: 0 }; var MARGIN = 200; var STARTING_OPACITY = 0.8; var FADE_AFTER_SEC = 2; var FADE_FOR_SEC = 4; var fade_per_sec = STARTING_OPACITY / FADE_FOR_SEC; var properties = { color: COLOR_TEXT, alpha: STARTING_OPACITY, backgroundColor: COLOR_BACKGROUND, backgroundAlpha: STARTING_OPACITY, font: { size: 24 }, x: MARGIN, y: MARGIN }; // Center the overlay on the screen properties.width = Window.innerWidth - MARGIN*2; properties.height = Window.innerHeight - MARGIN*2; // Parse the metadata into text parsed = [ 'Welcome to ' + place + '!',, ]; if (metadata.description) { parsed.push(description); } if (metadata.tags && metadata.tags.length) { parsed.push('Tags: ' + metadata.tags.join(',')); } if (metadata.capacity) { parsed.push('Capacity (max users): ' + metadata.capacity); } if (metadata.maturity) { parsed.push('Maturity: ' + metadata.maturity); } if (metadata.hosts && metadata.hosts.length) { parsed.push('Hosts: ' + metadata.tags.join(',')); } if (metadata.online_users) { parsed.push('Users online: ' + metadata.online_users); } properties.text = parsed.join('\n\n'); // Display the overlay OVERLAY = Overlays.addOverlay('text', properties); // Fade out the overlay over 10 seconds !function() { var overlay = OVERLAY; var alpha = STARTING_OPACITY; var fade = function() { // Only fade so long as the same overlay is up if (overlay == OVERLAY) { alpha -= fade_per_sec / 10; if (alpha <= 0) { clearMetadata(); } else { Overlays.editOverlay(overlay, { alpha: alpha, backgroundAlpha: alpha }); Script.setTimeout(fade, 100); } } }; Script.setTimeout(fade, FADE_AFTER_SEC * 1000); }();}function clearMetadata() { if (OVERLAY) { Overlays.deleteOverlay(OVERLAY); }}// Request JSON from a url, synchronouslyfunction request(url) { var req = new XMLHttpRequest(); req.responseType = 'json'; req.open('GET', url, false); req.send(); return req.status == 200 ? req.response : null;}
//
// Created by Zach Pomerantz on June 16, 2016.
// Copyright 2016 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
//
var SERVER = Account.metaverseServerURL + '/api/v1';
var OVERLAY = null;
// Every time you enter a domain, display the domain's metadata
location.hostChanged.connect(function(host) {
print('Detected host change:', host);
// Fetch the domain ID from the directory server
var placeData = request(SERVER + '/places/' + host);
if (!placeData) {
print('Cannot find place name - abandoning metadata request for', host);
return;
}
var domainID = placeData.data.place.domain.id;
print('Domain ID:', domainID);
// Fetch the domain metadata from the directory server
var domainData = request(SERVER + '/domains/' + domainID);
print(SERVER + '/domains/' + domainID);
if (!domainData) {
print('Cannot find domain data - abandoning metadata request for', domainID);
return;
}
var metadata = domainData.domain;
print('Domain metadata:', JSON.stringify(metadata));
// Display the fetched metadata in an overlay
displayMetadata(host, metadata);
});
Script.scriptEnding.connect(clearMetadata);
function displayMetadata(place, metadata) {
clearMetadata();
var COLOR_TEXT = { red: 255, green: 255, blue: 255 };
var COLOR_BACKGROUND = { red: 0, green: 0, blue: 0 };
var MARGIN = 200;
var STARTING_OPACITY = 0.8;
var FADE_AFTER_SEC = 2;
var FADE_FOR_SEC = 4;
var fade_per_sec = STARTING_OPACITY / FADE_FOR_SEC;
var properties = {
color: COLOR_TEXT,
alpha: STARTING_OPACITY,
backgroundColor: COLOR_BACKGROUND,
backgroundAlpha: STARTING_OPACITY,
font: { size: 24 },
x: MARGIN,
y: MARGIN
};
// Center the overlay on the screen
properties.width = Window.innerWidth - MARGIN*2;
properties.height = Window.innerHeight - MARGIN*2;
// Parse the metadata into text
parsed = [ 'Welcome to ' + place + '!',, ];
if (metadata.description) {
parsed.push(description);
}
if (metadata.tags && metadata.tags.length) {
parsed.push('Tags: ' + metadata.tags.join(','));
}
if (metadata.capacity) {
parsed.push('Capacity (max users): ' + metadata.capacity);
}
if (metadata.maturity) {
parsed.push('Maturity: ' + metadata.maturity);
}
if (metadata.hosts && metadata.hosts.length) {
parsed.push('Hosts: ' + metadata.tags.join(','));
}
if (metadata.online_users) {
parsed.push('Users online: ' + metadata.online_users);
}
properties.text = parsed.join('\n\n');
// Display the overlay
OVERLAY = Overlays.addOverlay('text', properties);
// Fade out the overlay over 10 seconds
!function() {
var overlay = OVERLAY;
var alpha = STARTING_OPACITY;
var fade = function() {
// Only fade so long as the same overlay is up
if (overlay == OVERLAY) {
alpha -= fade_per_sec / 10;
if (alpha <= 0) {
clearMetadata();
} else {
Overlays.editOverlay(overlay, { alpha: alpha, backgroundAlpha: alpha });
Script.setTimeout(fade, 100);
}
}
};
Script.setTimeout(fade, FADE_AFTER_SEC * 1000);
}();
}
function clearMetadata() {
if (OVERLAY) {
Overlays.deleteOverlay(OVERLAY);
}
}
// Request JSON from a url, synchronously
function request(url) {
var req = new XMLHttpRequest();
req.responseType = 'json';
req.open('GET', url, false);
req.send();
return req.status == 200 ? req.response : null;
}