diff --git a/examples/Recorder.js b/examples/Recorder.js new file mode 100644 index 0000000000..51cdf06211 --- /dev/null +++ b/examples/Recorder.js @@ -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); + + + +