//// cameraExample.js// examples//// Created by Brad Hefta-Gaub on 2/6/14.// Copyright 2014 High Fidelity, Inc.//// This is an example script that demonstrates use of the Camera class//// Distributed under the Apache License, Version 2.0.// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// var damping = 0.001;var yaw = 0.0;var pitch = 0.0;var roll = 0.0;var thrust = { x: 0, y: 0, z: 0 };var velocity = { x: 0, y: 0, z: 0 };var position = { x: MyAvatar.position.x, y: MyAvatar.position.y + 1, z: MyAvatar.position.z };var joysticksCaptured = false;var THRUST_CONTROLLER = 0;var VIEW_CONTROLLER = 1; function checkCamera(deltaTime) { if (Camera.mode == "independent") { var THRUST_MAG_UP = 800.0; var THRUST_MAG_DOWN = 300.0; var THRUST_MAG_FWD = 500.0; var THRUST_MAG_BACK = 300.0; var THRUST_MAG_LATERAL = 250.0; var THRUST_JUMP = 120.0; var scale = 1.0; var thrustMultiplier = 1.0; // maybe increase this as you hold it down? var YAW_MAG = 500.0; var PITCH_MAG = 100.0; var THRUST_MAG_HAND_JETS = THRUST_MAG_FWD; var JOYSTICK_YAW_MAG = YAW_MAG; var JOYSTICK_PITCH_MAG = PITCH_MAG * 0.5; var thrustJoystickPosition = Controller.getJoystickPosition(THRUST_CONTROLLER); var currentOrientation = Camera.getOrientation(); var front = Quat.getFront(currentOrientation); var right = Quat.getRight(currentOrientation); var up = Quat.getUp(currentOrientation); var thrustFront = Vec3.multiply(front, scale * THRUST_MAG_HAND_JETS * thrustJoystickPosition.y * thrustMultiplier * deltaTime); var thrustRight = Vec3.multiply(right, scale * THRUST_MAG_HAND_JETS * thrustJoystickPosition.x * thrustMultiplier * deltaTime); thrust = Vec3.sum(thrust, thrustFront); thrust = Vec3.sum(thrust, thrustRight); // add thrust to velocity velocity = Vec3.sum(velocity, Vec3.multiply(thrust, deltaTime)); // add velocity to position position = Vec3.sum(position, Vec3.multiply(velocity, deltaTime)); Camera.setPosition(position); // reset thrust thrust = { x: 0, y: 0, z: 0 }; // damp velocity velocity = Vec3.multiply(velocity, damping); // View Controller var viewJoystickPosition = Controller.getJoystickPosition(VIEW_CONTROLLER); yaw -= viewJoystickPosition.x * JOYSTICK_YAW_MAG * deltaTime; pitch += viewJoystickPosition.y * JOYSTICK_PITCH_MAG * deltaTime; if (yaw > 360) { yaw -= 360; } if (yaw < -360) { yaw += 360; } var orientation = Quat.fromPitchYawRollDegrees(pitch, yaw, roll); Camera.setOrientation(orientation); }} Script.update.connect(checkCamera); function mouseMoveEvent(event) { print("mouseMoveEvent event.x,y=" + event.x + ", " + event.y); var pickRay = Camera.computePickRay(event.x, event.y); print("called Camera.computePickRay()"); print("computePickRay origin=" + pickRay.origin.x + ", " + pickRay.origin.y + ", " + pickRay.origin.z); print("computePickRay direction=" + pickRay.direction.x + ", " + pickRay.direction.y + ", " + pickRay.direction.z);} Controller.mouseMoveEvent.connect(mouseMoveEvent); function keyPressEvent(event) { if (joysticksCaptured) { Controller.releaseJoystick(THRUST_CONTROLLER); Controller.releaseJoystick(VIEW_CONTROLLER); joysticksCaptured = false; } if (event.text == "1") { Camera.mode = "first person"; } if (event.text == "2") { Camera.mode = "mirror"; } if (event.text == "3") { Camera.mode = "third person"; } if (event.text == "4") { Camera.mode = "independent"; joysticksCaptured = true; Controller.captureJoystick(THRUST_CONTROLLER); Controller.captureJoystick(VIEW_CONTROLLER); position = { x: MyAvatar.position.x, y: MyAvatar.position.y + 1, z: MyAvatar.position.z }; }} // Map keyPress and mouse move events to our callbacksController.keyPressEvent.connect(keyPressEvent);Controller.captureKeyEvents({ text: "1" });Controller.captureKeyEvents({ text: "2" });Controller.captureKeyEvents({ text: "3" });Controller.captureKeyEvents({ text: "4" });function scriptEnding() { // re-enabled the standard application for touch events Controller.releaseKeyEvents({ text: "1" }); Controller.releaseKeyEvents({ text: "2" }); Controller.releaseKeyEvents({ text: "3" }); Controller.releaseKeyEvents({ text: "4" }); Controller.releaseJoystick(THRUST_CONTROLLER); Controller.releaseJoystick(VIEW_CONTROLLER);}Script.scriptEnding.connect(scriptEnding);
//
// cameraExample.js
// examples
//
// Created by Brad Hefta-Gaub on 2/6/14.
// Copyright 2014 High Fidelity, Inc.
//
// This is an example script that demonstrates use of the Camera class
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
var damping = 0.001;
var yaw = 0.0;
var pitch = 0.0;
var roll = 0.0;
var thrust = { x: 0, y: 0, z: 0 };
var velocity = { x: 0, y: 0, z: 0 };
var position = { x: MyAvatar.position.x, y: MyAvatar.position.y + 1, z: MyAvatar.position.z };
var joysticksCaptured = false;
var THRUST_CONTROLLER = 0;
var VIEW_CONTROLLER = 1;
function checkCamera(deltaTime) {
if (Camera.mode == "independent") {
var THRUST_MAG_UP = 800.0;
var THRUST_MAG_DOWN = 300.0;
var THRUST_MAG_FWD = 500.0;
var THRUST_MAG_BACK = 300.0;
var THRUST_MAG_LATERAL = 250.0;
var THRUST_JUMP = 120.0;
var scale = 1.0;
var thrustMultiplier = 1.0; // maybe increase this as you hold it down?
var YAW_MAG = 500.0;
var PITCH_MAG = 100.0;
var THRUST_MAG_HAND_JETS = THRUST_MAG_FWD;
var JOYSTICK_YAW_MAG = YAW_MAG;
var JOYSTICK_PITCH_MAG = PITCH_MAG * 0.5;
var thrustJoystickPosition = Controller.getJoystickPosition(THRUST_CONTROLLER);
var currentOrientation = Camera.getOrientation();
var front = Quat.getFront(currentOrientation);
var right = Quat.getRight(currentOrientation);
var up = Quat.getUp(currentOrientation);
var thrustFront = Vec3.multiply(front, scale * THRUST_MAG_HAND_JETS * thrustJoystickPosition.y * thrustMultiplier * deltaTime);
var thrustRight = Vec3.multiply(right, scale * THRUST_MAG_HAND_JETS * thrustJoystickPosition.x * thrustMultiplier * deltaTime);
thrust = Vec3.sum(thrust, thrustFront);
thrust = Vec3.sum(thrust, thrustRight);
// add thrust to velocity
velocity = Vec3.sum(velocity, Vec3.multiply(thrust, deltaTime));
// add velocity to position
position = Vec3.sum(position, Vec3.multiply(velocity, deltaTime));
Camera.setPosition(position);
// reset thrust
thrust = { x: 0, y: 0, z: 0 };
// damp velocity
velocity = Vec3.multiply(velocity, damping);
// View Controller
var viewJoystickPosition = Controller.getJoystickPosition(VIEW_CONTROLLER);
yaw -= viewJoystickPosition.x * JOYSTICK_YAW_MAG * deltaTime;
pitch += viewJoystickPosition.y * JOYSTICK_PITCH_MAG * deltaTime;
if (yaw > 360) {
yaw -= 360;
}
if (yaw < -360) {
yaw += 360;
}
var orientation = Quat.fromPitchYawRollDegrees(pitch, yaw, roll);
Camera.setOrientation(orientation);
}
}
Script.update.connect(checkCamera);
function mouseMoveEvent(event) {
print("mouseMoveEvent event.x,y=" + event.x + ", " + event.y);
var pickRay = Camera.computePickRay(event.x, event.y);
print("called Camera.computePickRay()");
print("computePickRay origin=" + pickRay.origin.x + ", " + pickRay.origin.y + ", " + pickRay.origin.z);
print("computePickRay direction=" + pickRay.direction.x + ", " + pickRay.direction.y + ", " + pickRay.direction.z);
}
Controller.mouseMoveEvent.connect(mouseMoveEvent);
function keyPressEvent(event) {
if (joysticksCaptured) {
Controller.releaseJoystick(THRUST_CONTROLLER);
Controller.releaseJoystick(VIEW_CONTROLLER);
joysticksCaptured = false;
}
if (event.text == "1") {
Camera.mode = "first person";
}
if (event.text == "2") {
Camera.mode = "mirror";
}
if (event.text == "3") {
Camera.mode = "third person";
}
if (event.text == "4") {
Camera.mode = "independent";
joysticksCaptured = true;
Controller.captureJoystick(THRUST_CONTROLLER);
Controller.captureJoystick(VIEW_CONTROLLER);
position = { x: MyAvatar.position.x, y: MyAvatar.position.y + 1, z: MyAvatar.position.z };
}
}
// Map keyPress and mouse move events to our callbacks
Controller.keyPressEvent.connect(keyPressEvent);
Controller.captureKeyEvents({ text: "1" });
Controller.captureKeyEvents({ text: "2" });
Controller.captureKeyEvents({ text: "3" });
Controller.captureKeyEvents({ text: "4" });
function scriptEnding() {
// re-enabled the standard application for touch events
Controller.releaseKeyEvents({ text: "1" });
Controller.releaseKeyEvents({ text: "2" });
Controller.releaseKeyEvents({ text: "3" });
Controller.releaseKeyEvents({ text: "4" });
Controller.releaseJoystick(THRUST_CONTROLLER);
Controller.releaseJoystick(VIEW_CONTROLLER);
}
Script.scriptEnding.connect(scriptEnding);