Recorder.js first draft

This commit is contained in:
Atlante45 2014-08-20 15:21:18 -07:00
parent 72c60ee69c
commit e3ab6476ca

148
examples/Recorder.js Normal file
View file

@ -0,0 +1,148 @@
//
// Recorder.js
// examples
//
// Created by Clément Brisset on 8/20/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
//
Script.include("toolBars.js");
var recordingFile = "recording.rec";
var windowDimensions = Controller.getViewportDimensions();
var TOOL_ICON_URL = "http://highfidelity-public.s3-us-west-1.amazonaws.com/images/tools/";
var TOOL_WIDTH = 50;
var TOOL_HEIGHT = 50;
var ALPHA_ON = 1.0;
var ALPHA_OFF = 0.5;
var toolBar = null;
var recordIcon;
var playIcon;
var saveIcon;
var loadIcon;
var loadLastIcon;
setupToolBar();
function setupToolBar() {
if (toolBar != null) {
print("Multiple calls to Recorder.js:setupToolBar()");
return;
}
toolBar = new ToolBar(0, 0, ToolBar.HORIZONTAL);
recordIcon = toolBar.addTool({
imageURL: TOOL_ICON_URL + "add-model-tool.svg",
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
width: TOOL_WIDTH,
height: TOOL_HEIGHT,
alpha: ALPHA_ON,
visible: true
}, true, MyAvatar.isRecording());
playIcon = toolBar.addTool({
imageURL: TOOL_ICON_URL + "add-model-tool.svg",
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
width: TOOL_WIDTH,
height: TOOL_HEIGHT,
alpha: ALPHA_ON,
visible: true
}, false, false);
saveIcon = toolBar.addTool({
imageURL: TOOL_ICON_URL + "add-model-tool.svg",
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
width: TOOL_WIDTH,
height: TOOL_HEIGHT,
alpha: ALPHA_ON,
visible: true
}, false, false);
loadIcon = toolBar.addTool({
imageURL: TOOL_ICON_URL + "add-model-tool.svg",
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
width: TOOL_WIDTH,
height: TOOL_HEIGHT,
alpha: ALPHA_ON,
visible: true
}, false, false);
loadLastIcon = toolBar.addTool({
imageURL: TOOL_ICON_URL + "add-model-tool.svg",
subImage: { x: 0, y: Tool.IMAGE_WIDTH, width: Tool.IMAGE_WIDTH, height: Tool.IMAGE_HEIGHT },
width: TOOL_WIDTH,
height: TOOL_HEIGHT,
alpha: ALPHA_ON,
visible: true
}, false, false);
moveUI();
}
function moveUI() {
var relative = { x: 30, y: 90 };
toolBar.move(relative.x,
windowDimensions.y - relative.y);
}
function mousePressEvent(event) {
clickedOverlay = Overlays.getOverlayAtPoint({ x: event.x, y: event.y });
if (recordIcon === toolBar.clicked(clickedOverlay)) {
if (!MyAvatar.isRecording()) {
MyAvatar.startRecording();
} else {
MyAvatar.stopRecording();
}
} else if (playIcon === toolBar.clicked(clickedOverlay)) {
if (!MyAvatar.isRecording()) {
if (MyAvatar.isPlaying()) {
MyAvatar.stopPlaying();
} else {
MyAvatar.startPlaying();
}
}
} else if (saveIcon === toolBar.clicked(clickedOverlay)) {
recordingFile = Window.save("Save recording to file", ".", "*.rec");
MyAvatar.saveRecording(recordingFile);
} else if (loadIcon === toolBar.clicked(clickedOverlay)) {
recordingFile = Window.browse("Load recorcding from file", ".", "*.rec");
MyAvatar.loadRecording(recordingFile);
} else if (loadLastIcon === toolBar.clicked(clickedOverlay)) {
MyAvatar.loadLastRecording();
} else {
}
}
function update() {
var newDimensions = Controller.getViewportDimensions();
if (windowDimensions.x != newDimensions.x ||
windowDimensions.y != newDimensions.y) {
windowDimensions = newDimensions;
moveUI();
}
}
function scriptEnding() {
if (MyAvatar.isRecording()) {
MyAvatar.stopRecording();
}
if (MyAvatar.isPlaying()) {
MyAvatar.stopPlaying();
}
toolBar.cleanup();
}
Controller.mousePressEvent.connect(mousePressEvent);
Script.update.connect(update);
Script.scriptEnding.connect(scriptEnding);