mirror of
https://github.com/overte-org/overte.git
synced 2025-04-08 08:14:48 +02:00
Added files to zone folder and made change to jstreamplayerdomain-zone.js to allow for zone entity data field to load a stream url rather than have it hard coded in the js file. This allows for many zones to be created and simply having to put a new stream url in each data field in each zone to work.
This commit is contained in:
parent
7966f8c708
commit
ca8d0d5420
3 changed files with 251 additions and 0 deletions
33
examples/zones/jsstreamplayerdomain-zone-entity.js
Normal file
33
examples/zones/jsstreamplayerdomain-zone-entity.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
//
|
||||
// #20628: JS Stream Player Domain-Zone-Entity
|
||||
// ********************************************
|
||||
//
|
||||
// Created by Kevin M. Thomas and Thoys 07/20/15.
|
||||
// Copyright 2015 High Fidelity, Inc.
|
||||
// kevintown.net
|
||||
//
|
||||
// JavaScript for the High Fidelity interface that is an entity script to be placed in a chosen entity inside a domain-zone.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
|
||||
// Function which exists inside of an entity which triggers as a user approches it.
|
||||
(function() {
|
||||
const SCRIPT_NAME = "https://dl.dropboxusercontent.com/u/17344741/jsstreamplayer/jsstreamplayerdomain-zone.js";
|
||||
function isScriptRunning(script) {
|
||||
script = script.toLowerCase().trim();
|
||||
var runningScripts = ScriptDiscoveryService.getRunning();
|
||||
for (i in runningScripts) {
|
||||
if (runningScripts[i].url.toLowerCase().trim() == script) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
if (!isScriptRunning(SCRIPT_NAME)) {
|
||||
Script.load(SCRIPT_NAME);
|
||||
}
|
||||
})
|
42
examples/zones/jsstreamplayerdomain-zone.html
Normal file
42
examples/zones/jsstreamplayerdomain-zone.html
Normal file
|
@ -0,0 +1,42 @@
|
|||
<!-- -->
|
||||
<!-- #20628: JS Stream Player Domain-Zone -->
|
||||
<!-- ************************************* -->
|
||||
<!-- -->
|
||||
<!-- Created by Kevin M. Thomas and Thoys 07/20/15. -->
|
||||
<!-- Copyright 2015 High Fidelity, Inc. -->
|
||||
<!-- kevintown.net -->
|
||||
<!-- -->
|
||||
<!-- JavaScript for the High Fidelity interface that creates a stream player with a UI for playing a domain-zone specificed stream URL in addition to play, stop and volume functionality which is resident only in the domain-zone. -->
|
||||
<!-- -->
|
||||
<!-- Distributed under the Apache License, Version 2.0. -->
|
||||
<!-- See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -->
|
||||
<!-- -->
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
if (window.EventBridge !== undefined) {
|
||||
EventBridge.scriptEventReceived.connect(function(data) {
|
||||
var myData = JSON.parse(data);
|
||||
if (myData.action == "changeStream") {
|
||||
$('body > audio').attr("src", myData.stream);
|
||||
}
|
||||
if (myData.action == "changeVolume") {
|
||||
$('body > audio').prop("volume", myData.volume);
|
||||
}
|
||||
});
|
||||
}
|
||||
EventBridge.emitWebEvent("loaded");
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<audio controls src="" controls autoplay></audio>
|
||||
</body>
|
||||
</html>
|
176
examples/zones/jsstreamplayerdomain-zone.js
Normal file
176
examples/zones/jsstreamplayerdomain-zone.js
Normal file
|
@ -0,0 +1,176 @@
|
|||
//
|
||||
// #20628: JS Stream Player Domain-Zone
|
||||
// *************************************
|
||||
//
|
||||
// Created by Kevin M. Thomas, Thoys and Konstantin 07/24/15.
|
||||
// Copyright 2015 High Fidelity, Inc.
|
||||
// kevintown.net
|
||||
//
|
||||
// JavaScript for the High Fidelity interface that creates a stream player with a UI for playing a domain-zone specificed stream URL in addition to play, stop and volume functionality which is resident only in the domain-zone.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
|
||||
// Declare variables and set up new WebWindow.
|
||||
var lastZone = "";
|
||||
var volume = 0.5;
|
||||
var stream = "";
|
||||
var streamWindow = new WebWindow('Stream', "https://dl.dropboxusercontent.com/u/17344741/jsstreamplayer/jsstreamplayerdomain-zone.html", 0, 0, false);
|
||||
var visible = false;
|
||||
|
||||
// Set up toggleStreamPlayButton overlay.
|
||||
var toggleStreamPlayButton = Overlays.addOverlay("text", {
|
||||
x: 122,
|
||||
y: 310,
|
||||
width: 38,
|
||||
height: 28,
|
||||
backgroundColor: { red: 0, green: 0, blue: 0},
|
||||
color: { red: 255, green: 255, blue: 0},
|
||||
font: {size: 15},
|
||||
topMargin: 8,
|
||||
visible: false,
|
||||
text: " Play"
|
||||
});
|
||||
|
||||
// Set up toggleStreamStopButton overlay.
|
||||
var toggleStreamStopButton = Overlays.addOverlay("text", {
|
||||
x: 166,
|
||||
y: 310,
|
||||
width: 40,
|
||||
height: 28,
|
||||
backgroundColor: { red: 0, green: 0, blue: 0},
|
||||
color: { red: 255, green: 255, blue: 0},
|
||||
font: {size: 15},
|
||||
topMargin: 8,
|
||||
visible: false,
|
||||
text: " Stop"
|
||||
});
|
||||
|
||||
// Set up increaseVolumeButton overlay.
|
||||
var toggleIncreaseVolumeButton = Overlays.addOverlay("text", {
|
||||
x: 211,
|
||||
y: 310,
|
||||
width: 18,
|
||||
height: 28,
|
||||
backgroundColor: { red: 0, green: 0, blue: 0},
|
||||
color: { red: 255, green: 255, blue: 0},
|
||||
font: {size: 15},
|
||||
topMargin: 8,
|
||||
visible: false,
|
||||
text: " +"
|
||||
});
|
||||
|
||||
// Set up decreaseVolumeButton overlay.
|
||||
var toggleDecreaseVolumeButton = Overlays.addOverlay("text", {
|
||||
x: 234,
|
||||
y: 310,
|
||||
width: 15,
|
||||
height: 28,
|
||||
backgroundColor: { red: 0, green: 0, blue: 0},
|
||||
color: { red: 255, green: 255, blue: 0},
|
||||
font: {size: 15},
|
||||
topMargin: 8,
|
||||
visible: false,
|
||||
text: " -"
|
||||
});
|
||||
|
||||
// Function to change JSON object stream.
|
||||
function changeStream(stream) {
|
||||
var streamJSON = {
|
||||
action: "changeStream",
|
||||
stream: stream
|
||||
}
|
||||
streamWindow.eventBridge.emitScriptEvent(JSON.stringify(streamJSON));
|
||||
}
|
||||
|
||||
// Function to change JSON object volume.
|
||||
function changeVolume(volume) {
|
||||
var volumeJSON = {
|
||||
action: "changeVolume",
|
||||
volume: volume
|
||||
}
|
||||
streamWindow.eventBridge.emitScriptEvent(JSON.stringify(volumeJSON));
|
||||
}
|
||||
|
||||
// Function that adds mousePressEvent functionality to connect UI to enter stream URL, play and stop stream.
|
||||
function mousePressEvent(event) {
|
||||
if (Overlays.getOverlayAtPoint({x: event.x, y: event.y}) == toggleStreamPlayButton) {
|
||||
changeStream(stream);
|
||||
volume = 0.25;
|
||||
changeVolume(volume);
|
||||
}
|
||||
if (Overlays.getOverlayAtPoint({x: event.x, y: event.y}) == toggleStreamStopButton) {
|
||||
changeStream("");
|
||||
}
|
||||
if (Overlays.getOverlayAtPoint({x: event.x, y: event.y}) == toggleIncreaseVolumeButton) {
|
||||
volume += 0.25;
|
||||
changeVolume(volume);
|
||||
}
|
||||
if (Overlays.getOverlayAtPoint({x: event.x, y: event.y}) == toggleDecreaseVolumeButton) {
|
||||
volume -= 0.25;
|
||||
changeVolume(volume);
|
||||
}
|
||||
}
|
||||
|
||||
// Function checking bool if in proper zone.
|
||||
function isOurZone(properties) {
|
||||
return stream != "" && properties.type == "Zone";
|
||||
}
|
||||
|
||||
// Function to toggle visibile the overlay.
|
||||
function toggleVisible(newVisibility) {
|
||||
if (newVisibility != visible) {
|
||||
visible = newVisibility;
|
||||
Overlays.editOverlay(toggleStreamPlayButton, {visible: visible});
|
||||
Overlays.editOverlay(toggleStreamStopButton, {visible: visible});
|
||||
Overlays.editOverlay(toggleIncreaseVolumeButton, {visible: visible});
|
||||
Overlays.editOverlay(toggleDecreaseVolumeButton, {visible: visible});
|
||||
}
|
||||
}
|
||||
|
||||
// Function to check if avatar is in proper domain.
|
||||
Window.domainChanged.connect(function() {
|
||||
Script.stop();
|
||||
});
|
||||
|
||||
// Function to check if avatar is within zone.
|
||||
Entities.enterEntity.connect(function(entityID) {
|
||||
print("Entered..." + JSON.stringify(entityID));
|
||||
var properties = Entities.getEntityProperties(entityID);
|
||||
stream = properties.userData;
|
||||
if(isOurZone(properties))
|
||||
{
|
||||
lastZone = properties.name;
|
||||
toggleVisible(true);
|
||||
}
|
||||
})
|
||||
|
||||
// Function to check if avatar is leaving zone.
|
||||
Entities.leaveEntity.connect(function(entityID) {
|
||||
print("Left..." + JSON.stringify(entityID));
|
||||
var properties = Entities.getEntityProperties(entityID);
|
||||
if (properties.name == lastZone && properties.type == "Zone") {
|
||||
print("Leaving Zone!");
|
||||
toggleVisible(false);
|
||||
changeStream("");
|
||||
}
|
||||
})
|
||||
|
||||
// Function to delete overlays upon exit.
|
||||
function onScriptEnding() {
|
||||
Overlays.deleteOverlay(toggleStreamPlayButton);
|
||||
Overlays.deleteOverlay(toggleStreamStopButton);
|
||||
Overlays.deleteOverlay(toggleIncreaseVolumeButton);
|
||||
Overlays.deleteOverlay(toggleDecreaseVolumeButton);
|
||||
changeStream("");
|
||||
streamWindow.deleteLater();
|
||||
}
|
||||
|
||||
// Connect mouse and hide WebWindow.
|
||||
Controller.mousePressEvent.connect(mousePressEvent);
|
||||
streamWindow.setVisible(false);
|
||||
|
||||
// Call function upon ending script.
|
||||
Script.scriptEnding.connect(onScriptEnding);
|
Loading…
Reference in a new issue