mirror of
https://github.com/lubosz/overte.git
synced 2025-04-06 00:02:22 +02:00
152 lines
4.1 KiB
JavaScript
152 lines
4.1 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 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();
|