Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
161 lines
4.5 KiB
JavaScript
161 lines
4.5 KiB
JavaScript
//
|
|
// 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 filename = "https://s3-us-west-1.amazonaws.com/highfidelity-public/ozan/recordings/emily_comedy_reaction_mono.hfr";
|
|
var playFromCurrentLocation = true;
|
|
var useDisplayName = false;
|
|
var useAttachments = false;
|
|
var useHeadModel = false;
|
|
var useSkeletonModel = false;
|
|
|
|
// ID of the agent. Two agents can't have the same ID.
|
|
var id = 1;
|
|
|
|
// Set head and skeleton models
|
|
Avatar.faceModelURL = "http://highfidelity-public.s3.amazonaws.com/models/heads/StndAvatarHead_LuLu_v2-forAmberBody.fst";
|
|
Avatar.skeletonModelURL = "http://public.highfidelity.io/models/skeletons/StndAvatarBody_Amber_vLulu.fst";
|
|
// Set position/orientation/scale here if playFromCurrentLocation is true
|
|
Avatar.position = { x:199.4, y: 0.6, z: 258.3};
|
|
Avatar.orientation = Quat.fromPitchYawRollDegrees(0, 70.1, 0);
|
|
Avatar.scale = 1.0;
|
|
|
|
// Those variables MUST be common to every scripts
|
|
var controlVoxelSize = 0.25;
|
|
var controlVoxelPosition = { x: 2000 , y: 1, 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 COLORS = [];
|
|
COLORS[PLAY] = { red: PLAY, green: 0, blue: 0 };
|
|
COLORS[PLAY_LOOP] = { red: PLAY_LOOP, green: 0, blue: 0 };
|
|
COLORS[STOP] = { red: STOP, green: 0, blue: 0 };
|
|
COLORS[SHOW] = { red: SHOW, green: 0, blue: 0 };
|
|
COLORS[HIDE] = { red: HIDE, green: 0, blue: 0 };
|
|
|
|
controlVoxelPosition.x += id * controlVoxelSize;
|
|
|
|
Avatar.loadRecording(filename);
|
|
|
|
Avatar.setPlayFromCurrentLocation(playFromCurrentLocation);
|
|
Avatar.setPlayerUseDisplayName(useDisplayName);
|
|
Avatar.setPlayerUseAttachments(useAttachments);
|
|
Avatar.setPlayerUseHeadModel(useHeadModel);
|
|
Avatar.setPlayerUseSkeletonModel(useSkeletonModel);
|
|
|
|
function setupVoxelViewer() {
|
|
var voxelViewerOffset = 10;
|
|
var voxelViewerPosition = JSON.parse(JSON.stringify(controlVoxelPosition));
|
|
voxelViewerPosition.x -= voxelViewerOffset;
|
|
var voxelViewerOrientation = Quat.fromPitchYawRollDegrees(0, -90, 0);
|
|
|
|
VoxelViewer.setPosition(voxelViewerPosition);
|
|
VoxelViewer.setOrientation(voxelViewerOrientation);
|
|
VoxelViewer.queryOctree();
|
|
}
|
|
|
|
function getAction(controlVoxel) {
|
|
if (controlVoxel.x != controlVoxelPosition.x ||
|
|
controlVoxel.y != controlVoxelPosition.y ||
|
|
controlVoxel.z != controlVoxelPosition.z ||
|
|
controlVoxel.s != controlVoxelSize) {
|
|
return DO_NOTHING;
|
|
}
|
|
|
|
for (i in COLORS) {
|
|
if (controlVoxel.red === COLORS[i].red &&
|
|
controlVoxel.green === COLORS[i].green &&
|
|
controlVoxel.blue === COLORS[i].blue) {
|
|
Voxels.eraseVoxel(controlVoxelPosition.x,
|
|
controlVoxelPosition.y,
|
|
controlVoxelPosition.z,
|
|
controlVoxelSize);
|
|
return parseInt(i);
|
|
}
|
|
}
|
|
|
|
return DO_NOTHING;
|
|
}
|
|
|
|
count = 300; // This is necessary to wait for the audio mixer to connect
|
|
function update(event) {
|
|
VoxelViewer.queryOctree();
|
|
if (count > 0) {
|
|
count--;
|
|
return;
|
|
}
|
|
|
|
var controlVoxel = Voxels.getVoxelAt(controlVoxelPosition.x,
|
|
controlVoxelPosition.y,
|
|
controlVoxelPosition.z,
|
|
controlVoxelSize);
|
|
var action = getAction(controlVoxel);
|
|
|
|
switch(action) {
|
|
case PLAY:
|
|
print("Play");
|
|
if (!Agent.isAvatar) {
|
|
Agent.isAvatar = true;
|
|
}
|
|
if (!Avatar.isPlaying()) {
|
|
Avatar.startPlaying();
|
|
}
|
|
Avatar.setPlayerLoop(false);
|
|
break;
|
|
case PLAY_LOOP:
|
|
print("Play loop");
|
|
if (!Agent.isAvatar) {
|
|
Agent.isAvatar = true;
|
|
}
|
|
if (!Avatar.isPlaying()) {
|
|
Avatar.startPlaying();
|
|
}
|
|
Avatar.setPlayerLoop(true);
|
|
break;
|
|
case STOP:
|
|
print("Stop");
|
|
if (Avatar.isPlaying()) {
|
|
Avatar.stopPlaying();
|
|
}
|
|
break;
|
|
case SHOW:
|
|
print("Show");
|
|
if (!Agent.isAvatar) {
|
|
Agent.isAvatar = true;
|
|
}
|
|
break;
|
|
case HIDE:
|
|
print("Hide");
|
|
if (Avatar.isPlaying()) {
|
|
Avatar.stopPlaying();
|
|
}
|
|
Agent.isAvatar = false;
|
|
break;
|
|
case DO_NOTHING:
|
|
break;
|
|
default:
|
|
print("Unknown action: " + action);
|
|
break;
|
|
}
|
|
|
|
if (Avatar.isPlaying()) {
|
|
Avatar.play();
|
|
}
|
|
}
|
|
|
|
Script.update.connect(update);
|
|
setupVoxelViewer();
|