overte/examples/entityScripts/recordingEntityScript.js

106 lines
3.7 KiB
JavaScript
Raw Normal View History

2015-11-16 17:27:00 -08:00
//
// recordingEntityScript.js
// examples/entityScripts
//
// Created by Alessandro Signa on 11/12/15.
// Copyright 2015 High Fidelity, Inc.
//
// All the avatars in the area when the master presses the button will start/stop recording.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
2015-11-17 18:01:51 -08:00
(function () {
2015-11-16 17:27:00 -08:00
2015-11-17 18:01:51 -08:00
HIFI_PUBLIC_BUCKET = "http://s3.amazonaws.com/hifi-public/";
Script.include(HIFI_PUBLIC_BUCKET + "scripts/libraries/utils.js");
2015-11-16 17:27:00 -08:00
var insideRecorderArea = false;
var enteredInTime = false;
var isAvatarRecording = false;
var _this;
function recordingEntity() {
_this = this;
return;
}
2015-11-17 18:01:51 -08:00
function update() {
var isRecordingStarted = getEntityCustomData("recordingKey", _this.entityID, { isRecordingStarted: false }).isRecordingStarted;
if (isRecordingStarted && !isAvatarRecording) {
_this.startRecording();
} else if ((!isRecordingStarted && isAvatarRecording) || (isAvatarRecording && !insideRecorderArea)) {
_this.stopRecording();
} else if (!isRecordingStarted && insideRecorderArea && !enteredInTime) {
//if an avatar enters the zone while a recording is started he will be able to participate to the next group recording
enteredInTime = true;
}
};
2015-11-16 17:27:00 -08:00
recordingEntity.prototype = {
2015-11-17 18:01:51 -08:00
preload: function (entityID) {
print("RECORDING ENTITY PRELOAD");
2015-11-16 17:27:00 -08:00
this.entityID = entityID;
2015-11-17 18:01:51 -08:00
var entityProperties = Entities.getEntityProperties(_this.entityID);
if (!entityProperties.ignoreForCollisions) {
Entities.editEntity(_this.entityID, { ignoreForCollisions: true });
}
//print(JSON.stringify(entityProperties));
var recordingKey = getEntityCustomData("recordingKey", _this.entityID, undefined);
if (recordingKey === undefined) {
setEntityCustomData("recordingKey", _this.entityID, { isRecordingStarted: false });
}
Script.update.connect(update);
2015-11-16 17:27:00 -08:00
},
2015-11-17 18:01:51 -08:00
enterEntity: function (entityID) {
2015-11-16 17:27:00 -08:00
print("entering in the recording area");
insideRecorderArea = true;
2015-11-17 18:01:51 -08:00
var isRecordingStarted = getEntityCustomData("recordingKey", _this.entityID, { isRecordingStarted: false }).isRecordingStarted;
if (!isRecordingStarted) {
2015-11-16 17:27:00 -08:00
//i'm in the recording area in time (before the event starts)
enteredInTime = true;
}
},
2015-11-17 18:01:51 -08:00
leaveEntity: function (entityID) {
2015-11-16 17:27:00 -08:00
print("leaving the recording area");
insideRecorderArea = false;
enteredInTime = false;
},
2015-11-17 18:01:51 -08:00
startRecording: function (entityID) {
if (enteredInTime && !isAvatarRecording) {
2015-11-16 17:27:00 -08:00
print("RECORDING STARTED");
Recording.startRecording();
isAvatarRecording = true;
}
},
2015-11-17 18:01:51 -08:00
stopRecording: function (entityID) {
if (isAvatarRecording) {
2015-11-16 17:27:00 -08:00
print("RECORDING ENDED");
Recording.stopRecording();
Recording.loadLastRecording();
isAvatarRecording = false;
recordingFile = Window.save("Save recording to file", "./groupRecording", "Recordings (*.hfr)");
if (!(recordingFile === "null" || recordingFile === null || recordingFile === "")) {
Recording.saveRecording(recordingFile);
}
}
},
2015-11-17 18:01:51 -08:00
unload: function (entityID) {
print("RECORDING ENTITY UNLOAD");
Script.update.disconnect(update);
2015-11-16 17:27:00 -08:00
}
}
2015-11-17 18:01:51 -08:00
2015-11-16 17:27:00 -08:00
return new recordingEntity();
2015-11-17 18:01:51 -08:00
});