mirror of
https://github.com/overte-org/overte.git
synced 2025-07-30 22:30:04 +02:00
hmdControls turns on when you enter VR mode, turns off when you exit, can toggle with CTRL+G
This commit is contained in:
parent
9cfe8ecc01
commit
e78ce8055a
3 changed files with 50 additions and 11 deletions
|
@ -19,4 +19,5 @@ Script.load("grab.js");
|
||||||
Script.load("pointer.js");
|
Script.load("pointer.js");
|
||||||
Script.load("directory.js");
|
Script.load("directory.js");
|
||||||
Script.load("mouseLook.js");
|
Script.load("mouseLook.js");
|
||||||
|
Script.load("hmdControls.js");
|
||||||
Script.load("dialTone.js");
|
Script.load("dialTone.js");
|
||||||
|
|
|
@ -11,8 +11,10 @@
|
||||||
|
|
||||||
var MOVE_DISTANCE = 10.0;
|
var MOVE_DISTANCE = 10.0;
|
||||||
var PITCH_INCREMENT = 0.5; // degrees
|
var PITCH_INCREMENT = 0.5; // degrees
|
||||||
|
var pitchChange = 0; // degrees
|
||||||
var YAW_INCREMENT = 0.5; // degrees
|
var YAW_INCREMENT = 0.5; // degrees
|
||||||
var VR_YAW_INCREMENT = 15.0; // degrees
|
var VR_YAW_INCREMENT = 15.0; // degrees
|
||||||
|
var yawChange = 0;
|
||||||
var BOOM_SPEED = 0.5;
|
var BOOM_SPEED = 0.5;
|
||||||
var THRESHOLD = 0.2;
|
var THRESHOLD = 0.2;
|
||||||
|
|
||||||
|
@ -53,8 +55,17 @@ var warpLine = Overlays.addOverlay("line3d", {
|
||||||
var velocity = { x: 0, y: 0, z: 0 };
|
var velocity = { x: 0, y: 0, z: 0 };
|
||||||
var VERY_LONG_TIME = 1000000.0;
|
var VERY_LONG_TIME = 1000000.0;
|
||||||
|
|
||||||
|
var active = Menu.isOptionChecked("Enable VR Mode");
|
||||||
|
var prevVRMode = Menu.isOptionChecked("Enable VR Mode");
|
||||||
|
|
||||||
var hmdControls = (function () {
|
var hmdControls = (function () {
|
||||||
|
|
||||||
|
function onKeyPressEvent(event) {
|
||||||
|
if (event.text == 'g' && event.isMeta) {
|
||||||
|
active = !active;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function findAction(name) {
|
function findAction(name) {
|
||||||
var actions = Controller.getAllActions();
|
var actions = Controller.getAllActions();
|
||||||
for (var i = 0; i < actions.length; i++) {
|
for (var i = 0; i < actions.length; i++) {
|
||||||
|
@ -67,6 +78,9 @@ var hmdControls = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function onActionEvent(action, state) {
|
function onActionEvent(action, state) {
|
||||||
|
if (!active) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (state < THRESHOLD) {
|
if (state < THRESHOLD) {
|
||||||
if (action == findAction("YAW_LEFT") || action == findAction("YAW_RIGHT")) {
|
if (action == findAction("YAW_LEFT") || action == findAction("YAW_RIGHT")) {
|
||||||
yawTimer = CAMERA_UPDATE_TIME;
|
yawTimer = CAMERA_UPDATE_TIME;
|
||||||
|
@ -108,28 +122,28 @@ var hmdControls = (function () {
|
||||||
break;
|
break;
|
||||||
case findAction("YAW_LEFT"):
|
case findAction("YAW_LEFT"):
|
||||||
if (yawTimer < 0.0 && Menu.isOptionChecked("Enable VR Mode")) {
|
if (yawTimer < 0.0 && Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.bodyYaw = MyAvatar.bodyYaw + (shifted ? SHIFT_MAG * VR_YAW_INCREMENT : VR_YAW_INCREMENT);
|
yawChange = yawChange + (shifted ? SHIFT_MAG * VR_YAW_INCREMENT : VR_YAW_INCREMENT);
|
||||||
yawTimer = CAMERA_UPDATE_TIME;
|
yawTimer = CAMERA_UPDATE_TIME;
|
||||||
} else if (!Menu.isOptionChecked("Enable VR Mode")) {
|
} else if (!Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.bodyYaw = MyAvatar.bodyYaw + (shifted ? SHIFT_MAG * YAW_INCREMENT : YAW_INCREMENT);
|
yawChange = yawChange + (shifted ? SHIFT_MAG * YAW_INCREMENT : YAW_INCREMENT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case findAction("YAW_RIGHT"):
|
case findAction("YAW_RIGHT"):
|
||||||
if (yawTimer < 0.0 && Menu.isOptionChecked("Enable VR Mode")) {
|
if (yawTimer < 0.0 && Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.bodyYaw = MyAvatar.bodyYaw - (shifted ? SHIFT_MAG * VR_YAW_INCREMENT : VR_YAW_INCREMENT);
|
yawChange = yawChange - (shifted ? SHIFT_MAG * VR_YAW_INCREMENT : VR_YAW_INCREMENT);
|
||||||
yawTimer = CAMERA_UPDATE_TIME;
|
yawTimer = CAMERA_UPDATE_TIME;
|
||||||
} else if (!Menu.isOptionChecked("Enable VR Mode")) {
|
} else if (!Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.bodyYaw = MyAvatar.bodyYaw - (shifted ? SHIFT_MAG * YAW_INCREMENT : YAW_INCREMENT);
|
yawChange = yawChange - (shifted ? SHIFT_MAG * YAW_INCREMENT : YAW_INCREMENT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case findAction("PITCH_DOWN"):
|
case findAction("PITCH_DOWN"):
|
||||||
if (!Menu.isOptionChecked("Enable VR Mode")) {
|
if (!Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.headPitch = Math.max(-180, Math.min(180, MyAvatar.headPitch - (shifted ? SHIFT_MAG * PITCH_INCREMENT : PITCH_INCREMENT)));
|
pitchChange = pitchChange - (shifted ? SHIFT_MAG * PITCH_INCREMENT : PITCH_INCREMENT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case findAction("PITCH_UP"):
|
case findAction("PITCH_UP"):
|
||||||
if (!Menu.isOptionChecked("Enable VR Mode")) {
|
if (!Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
MyAvatar.headPitch = Math.max(-180, Math.min(180, MyAvatar.headPitch + (shifted ? SHIFT_MAG * PITCH_INCREMENT : PITCH_INCREMENT)));
|
pitchChange = pitchChange + (shifted ? SHIFT_MAG * PITCH_INCREMENT : PITCH_INCREMENT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case findAction("SHIFT"): // speed up
|
case findAction("SHIFT"): // speed up
|
||||||
|
@ -161,6 +175,11 @@ var hmdControls = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(dt) {
|
function update(dt) {
|
||||||
|
if (prevVRMode != Menu.isOptionChecked("Enable VR Mode")) {
|
||||||
|
active = Menu.isOptionChecked("Enable VR Mode");
|
||||||
|
prevVRMode = Menu.isOptionChecked("Enable VR Mode");
|
||||||
|
}
|
||||||
|
|
||||||
if (yawTimer >= 0.0) {
|
if (yawTimer >= 0.0) {
|
||||||
yawTimer = yawTimer - dt;
|
yawTimer = yawTimer - dt;
|
||||||
}
|
}
|
||||||
|
@ -175,9 +194,28 @@ var hmdControls = (function () {
|
||||||
updateWarp();
|
updateWarp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (active) {
|
||||||
|
Controller.captureActionEvents();
|
||||||
|
|
||||||
|
print(yawChange);
|
||||||
|
print(pitchChange);
|
||||||
|
print(JSON.stringify(velocity));
|
||||||
|
|
||||||
|
MyAvatar.bodyYaw = MyAvatar.bodyYaw + yawChange;
|
||||||
|
MyAvatar.headPitch = Math.max(-180, Math.min(180, MyAvatar.headPitch + pitchChange));
|
||||||
|
yawChange = 0;
|
||||||
|
pitchChange = 0;
|
||||||
|
|
||||||
MyAvatar.motorVelocity = velocity;
|
MyAvatar.motorVelocity = velocity;
|
||||||
MyAvatar.motorTimescale = 0.0;
|
MyAvatar.motorTimescale = 0.0;
|
||||||
velocity = { x: 0, y: 0, z: 0 };
|
velocity = { x: 0, y: 0, z: 0 };
|
||||||
|
} else {
|
||||||
|
Controller.releaseActionEvents();
|
||||||
|
yawChange = 0;
|
||||||
|
pitchChange = 0;
|
||||||
|
MyAvatar.motorVelocity = {x:0.0, y:0.0, z:0.0}
|
||||||
|
MyAvatar.motorTimescale = VERY_LONG_TIME;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateWarp() {
|
function updateWarp() {
|
||||||
|
@ -233,7 +271,7 @@ var hmdControls = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setUp() {
|
function setUp() {
|
||||||
Controller.captureActionEvents();
|
Controller.keyPressEvent.connect(onKeyPressEvent);
|
||||||
|
|
||||||
Controller.actionEvent.connect(onActionEvent);
|
Controller.actionEvent.connect(onActionEvent);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
#include "Joystick.h"
|
#include "Joystick.h"
|
||||||
|
|
||||||
const float CONTROLLER_THRESHOLD = 0.25f;
|
const float CONTROLLER_THRESHOLD = 0.3f;
|
||||||
|
|
||||||
#ifdef HAVE_SDL2
|
#ifdef HAVE_SDL2
|
||||||
const float MAX_AXIS = 32768.0f;
|
const float MAX_AXIS = 32768.0f;
|
||||||
|
|
Loading…
Reference in a new issue