Andrew Meadowsarchive remaining JS scriptsc0b446c10 years agoHistory
142 lines · 4.8 KB · JavaScript
RawDownload
////  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);