// // concertCamera.js // // Created by Philip Rosedale on June 24, 2014 // Copyright 2014 High Fidelity, Inc. // // Move a camera through a series of pre-set locations by pressing number keys // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // var oldMode; var avatarPosition; var cameraNumber = 0; var freeCamera = false; var cameraLocations = [ {x: 7972.0, y: 241.6, z: 7304.1}, {x: 7973.7, y: 241.6, z: 7304.1}, {x: 7975.5, y: 241.6, z: 7304.1}, {x: 7972.3, y: 241.6, z: 7303.3}, {x: 7971.4, y: 241.6, z: 7304.3} ]; var cameraLookAts = [ {x: 7971.1, y: 241.6, z: 7304.1}, {x: 7972.1, y: 241.6, z: 7304.1}, {x: 7972.1, y: 241.6, z: 7304.1}, {x: 7972.1, y: 241.6, z: 7304.1}, {x: 7972.1, y: 241.6, z: 7304.1} ]; function saveCameraState() { oldMode = Camera.getMode(); avatarPosition = MyAvatar.position; Camera.setModeShiftPeriod(0.0); Camera.setMode("independent"); } function restoreCameraState() { Camera.stopLooking(); Camera.setMode(oldMode); } function update(deltaTime) { if (freeCamera) { var delta = Vec3.subtract(MyAvatar.position, avatarPosition); if (Vec3.length(delta) > 0.05) { cameraNumber = 0; freeCamera = false; restoreCameraState(); } } } function keyPressEvent(event) { var choice = parseInt(event.text); if ((choice > 0) && (choice <= cameraLocations.length)) { print("camera " + choice); if (!freeCamera) { saveCameraState(); freeCamera = true; } Camera.setMode("independent"); Camera.setPosition(cameraLocations[choice - 1]); Camera.keepLookingAt(cameraLookAts[choice - 1]); } if (event.text == "0") { // Show camera location in log var cameraLocation = Camera.getPosition(); print(cameraLocation.x + ", " + cameraLocation.y + ", " + cameraLocation.z); } } Script.update.connect(update); Controller.keyPressEvent.connect(keyPressEvent);