//// ControlledAC.js// examples//// Created by Clément Brisset on 8/28/14.// Copyright 2014 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//// Set the following variables to the values neededvar clip_url = null;var playFromCurrentLocation = true;var useDisplayName = true;var useAttachments = true;var useAvatarModel = true;// ID of the agent. Two agents can't have the same ID.var id = 0;// Set position/orientation/scale here if playFromCurrentLocation is trueAvatar.position = { x:1, y: 1, z: 1 };Avatar.orientation = Quat.fromPitchYawRollDegrees(0, 0, 0);Avatar.scale = 1.0;// Those variables MUST be common to every scriptsvar controlEntitySize = 0.25;var controlEntityPosition = { x: 0, y: 0, z: 0 };// Script. DO NOT MODIFY BEYOND THIS LINE.var DO_NOTHING = 0;var PLAY = 1;var PLAY_LOOP = 2;var STOP = 3;var SHOW = 4;var HIDE = 5;var LOAD = 6;Recording.setPlayFromCurrentLocation(playFromCurrentLocation);Recording.setPlayerUseDisplayName(useDisplayName);Recording.setPlayerUseAttachments(useAttachments);Recording.setPlayerUseHeadModel(false);Recording.setPlayerUseSkeletonModel(useAvatarModel);function setupEntityViewer() { var entityViewerOffset = 10; var entityViewerPosition = { x: controlEntityPosition.x - entityViewerOffset, y: controlEntityPosition.y, z: controlEntityPosition.z }; var entityViewerOrientation = Quat.fromPitchYawRollDegrees(0, -90, 0); EntityViewer.setPosition(entityViewerPosition); EntityViewer.setOrientation(entityViewerOrientation); EntityViewer.queryOctree();}function getAction(controlEntity) { if (controlEntity === null) { return DO_NOTHING; } var userData = JSON.parse(Entities.getEntityProperties(controlEntity, ["userData"]).userData); var uD_id = userData.idKey.uD_id; var uD_action = userData.actionKey.uD_action; var uD_url = userData.clipKey.uD_url; Entities.deleteEntity((Entities.getEntityProperties(controlEntity)).id); if (uD_id === id || uD_id === -1) { if (uD_action === 6) clip_url = uD_url; return uD_action; } else { return DO_NOTHING; } }count = 100; // This is necessary to wait for the audio mixer to connectfunction update(event) { EntityViewer.queryOctree(); if (count > 0) { count--; return; } var controlEntity = Entities.findClosestEntity(controlEntityPosition, controlEntitySize); var action = getAction(controlEntity); switch(action) { case PLAY: print("Play"); if (!Agent.isAvatar) { Agent.isAvatar = true; } if (!Recording.isPlaying()) { Recording.startPlaying(); } Recording.setPlayerLoop(false); break; case PLAY_LOOP: print("Play loop"); if (!Agent.isAvatar) { Agent.isAvatar = true; } if (!Recording.isPlaying()) { Recording.startPlaying(); } Recording.setPlayerLoop(true); break; case STOP: print("Stop"); if (Recording.isPlaying()) { Recording.stopPlaying(); } break; case SHOW: print("Show"); if (!Agent.isAvatar) { Agent.isAvatar = true; } break; case HIDE: print("Hide"); if (Recording.isPlaying()) { Recording.stopPlaying(); } Agent.isAvatar = false; break; case LOAD: print("Load"); if(clip_url !== null) { Recording.loadRecording(clip_url); } break; case DO_NOTHING: break; default: print("Unknown action: " + action); break; } if (Recording.isPlaying()) { Recording.play(); }}Script.update.connect(update);setupEntityViewer();
//
// ControlledAC.js
// examples
//
// Created by Clément Brisset on 8/28/14.
// Copyright 2014 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
//
// Set the following variables to the values needed
var clip_url = null;
var playFromCurrentLocation = true;
var useDisplayName = true;
var useAttachments = true;
var useAvatarModel = true;
// ID of the agent. Two agents can't have the same ID.
var id = 0;
// Set position/orientation/scale here if playFromCurrentLocation is true
Avatar.position = { x:1, y: 1, z: 1 };
Avatar.orientation = Quat.fromPitchYawRollDegrees(0, 0, 0);
Avatar.scale = 1.0;
// Those variables MUST be common to every scripts
var controlEntitySize = 0.25;
var controlEntityPosition = { x: 0, y: 0, z: 0 };
// Script. DO NOT MODIFY BEYOND THIS LINE.
var DO_NOTHING = 0;
var PLAY = 1;
var PLAY_LOOP = 2;
var STOP = 3;
var SHOW = 4;
var HIDE = 5;
var LOAD = 6;
Recording.setPlayFromCurrentLocation(playFromCurrentLocation);
Recording.setPlayerUseDisplayName(useDisplayName);
Recording.setPlayerUseAttachments(useAttachments);
Recording.setPlayerUseHeadModel(false);
Recording.setPlayerUseSkeletonModel(useAvatarModel);
function setupEntityViewer() {
var entityViewerOffset = 10;
var entityViewerPosition = { x: controlEntityPosition.x - entityViewerOffset,
y: controlEntityPosition.y, z: controlEntityPosition.z };
var entityViewerOrientation = Quat.fromPitchYawRollDegrees(0, -90, 0);
EntityViewer.setPosition(entityViewerPosition);
EntityViewer.setOrientation(entityViewerOrientation);
EntityViewer.queryOctree();
}
function getAction(controlEntity) {
if (controlEntity === null) {
return DO_NOTHING;
}
var userData = JSON.parse(Entities.getEntityProperties(controlEntity, ["userData"]).userData);
var uD_id = userData.idKey.uD_id;
var uD_action = userData.actionKey.uD_action;
var uD_url = userData.clipKey.uD_url;
Entities.deleteEntity((Entities.getEntityProperties(controlEntity)).id);
if (uD_id === id || uD_id === -1) {
if (uD_action === 6)
clip_url = uD_url;
return uD_action;
} else {
return DO_NOTHING;
}
}
count = 100; // This is necessary to wait for the audio mixer to connect
function update(event) {
EntityViewer.queryOctree();
if (count > 0) {
count--;
return;
}
var controlEntity = Entities.findClosestEntity(controlEntityPosition, controlEntitySize);
var action = getAction(controlEntity);
switch(action) {
case PLAY:
print("Play");
if (!Agent.isAvatar) {
Agent.isAvatar = true;
}
if (!Recording.isPlaying()) {
Recording.startPlaying();
}
Recording.setPlayerLoop(false);
break;
case PLAY_LOOP:
print("Play loop");
if (!Agent.isAvatar) {
Agent.isAvatar = true;
}
if (!Recording.isPlaying()) {
Recording.startPlaying();
}
Recording.setPlayerLoop(true);
break;
case STOP:
print("Stop");
if (Recording.isPlaying()) {
Recording.stopPlaying();
}
break;
case SHOW:
print("Show");
if (!Agent.isAvatar) {
Agent.isAvatar = true;
}
break;
case HIDE:
print("Hide");
if (Recording.isPlaying()) {
Recording.stopPlaying();
}
Agent.isAvatar = false;
break;
case LOAD:
print("Load");
if(clip_url !== null) {
Recording.loadRecording(clip_url);
}
break;
case DO_NOTHING:
break;
default:
print("Unknown action: " + action);
break;
}
if (Recording.isPlaying()) {
Recording.play();
}
}
Script.update.connect(update);
setupEntityViewer();