Andrew Meadowsarchive remaining JS scriptsc0b446c10 years agoHistory
152 lines · 4.1 KB · JavaScript
RawDownload
////  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();