mirror of
https://github.com/DrBeef/QuestZDoom.git
synced 2025-03-04 16:41:34 +00:00
Multiple improvements
- version number update - pickup haptic level - default world quaking to 0 - earth quake now triggers haptics - Big changes to allow key mapping to work - X button will delete a mapping - Menu control uses only A/B (right-hand) X/Y (left-hand) due to mapping changes
This commit is contained in:
parent
58ac534ab6
commit
7ec9b2932e
13 changed files with 134 additions and 121 deletions
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.drbeef.questzdoom"
|
||||
android:versionCode="3"
|
||||
android:versionName="0.2.0" android:installLocation="auto" >
|
||||
android:versionCode="4"
|
||||
android:versionName="0.3.0" android:installLocation="auto" >
|
||||
|
||||
<!-- Tell the system this app requires OpenGL ES 3.1. -->
|
||||
<uses-feature android:glEsVersion="0x00030001" android:required="true"/>
|
||||
|
|
|
@ -19,7 +19,7 @@ Authors : Simon Brown
|
|||
#include "doomkeys.h"
|
||||
|
||||
int getGameState();
|
||||
int isMenuActive();
|
||||
int getMenuState();
|
||||
void Joy_GenerateButtonEvents(int oldbuttons, int newbuttons, int numbuttons, int base);
|
||||
|
||||
void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovrInputStateTrackedRemote *pDominantTrackedRemoteOld, ovrTracking* pDominantTracking,
|
||||
|
@ -30,7 +30,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
//Menu button - invoke menu
|
||||
handleTrackedControllerButton(&leftTrackedRemoteState_new, &leftTrackedRemoteState_old, ovrButton_Enter, KEY_ESCAPE);
|
||||
|
||||
if (getGameState() != 0 || isMenuActive()) //gamestate != GS_LEVEL
|
||||
if (getGameState() != 0 || getMenuState() != 0) // If getMenuState returns 2, then we are waiting for a key mapping input, so send normal keymappings
|
||||
{
|
||||
Joy_GenerateButtonEvents((pOffTrackedRemoteOld->Joystick.x > 0.7f ? 1 : 0), (pOffTrackedRemoteNew->Joystick.x > 0.7f ? 1 : 0), 1, KEY_PAD_DPAD_RIGHT);
|
||||
Joy_GenerateButtonEvents((pDominantTrackedRemoteOld->Joystick.x > 0.7f ? 1 : 0), (pDominantTrackedRemoteNew->Joystick.x > 0.7f ? 1 : 0), 1, KEY_PAD_DPAD_RIGHT);
|
||||
|
@ -43,53 +43,52 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
Joy_GenerateButtonEvents((pOffTrackedRemoteOld->Joystick.y > 0.7f ? 1 : 0), (pOffTrackedRemoteNew->Joystick.y > 0.7f ? 1 : 0), 1, KEY_PAD_DPAD_UP);
|
||||
Joy_GenerateButtonEvents((pDominantTrackedRemoteOld->Joystick.y > 0.7f ? 1 : 0), (pDominantTrackedRemoteNew->Joystick.y > 0.7f ? 1 : 0), 1, KEY_PAD_DPAD_UP);
|
||||
|
||||
handleTrackedControllerButton(pDominantTrackedRemoteNew, pDominantTrackedRemoteOld, domButton1, KEY_PAD_A);
|
||||
handleTrackedControllerButton(pDominantTrackedRemoteNew, pDominantTrackedRemoteOld, ovrButton_Trigger, KEY_PAD_A);
|
||||
handleTrackedControllerButton(pDominantTrackedRemoteNew, pDominantTrackedRemoteOld, domButton2, KEY_PAD_B);
|
||||
|
||||
handleTrackedControllerButton(pOffTrackedRemoteNew, pOffTrackedRemoteOld, domButton1, KEY_PAD_A);
|
||||
handleTrackedControllerButton(pOffTrackedRemoteNew, pOffTrackedRemoteOld, ovrButton_Trigger, KEY_PAD_A);
|
||||
handleTrackedControllerButton(pOffTrackedRemoteNew, pOffTrackedRemoteOld, domButton2, KEY_PAD_B);
|
||||
|
||||
handleTrackedControllerButton(&leftTrackedRemoteState_new, &leftTrackedRemoteState_old, ovrButton_Enter, KEY_PAD_B);
|
||||
}
|
||||
else
|
||||
|
||||
//Dominant Grip works like a shift key
|
||||
bool dominantGripPushedOld =
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_GripTrigger) != 0;
|
||||
bool dominantGripPushedNew =
|
||||
(pDominantTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0;
|
||||
|
||||
|
||||
// Only do the following if we are definitely not in the menu
|
||||
if (getMenuState() == 0)
|
||||
{
|
||||
float distance = sqrtf(powf(pOffTracking->HeadPose.Pose.Position.x - pDominantTracking->HeadPose.Pose.Position.x, 2) +
|
||||
powf(pOffTracking->HeadPose.Pose.Position.y - pDominantTracking->HeadPose.Pose.Position.y, 2) +
|
||||
powf(pOffTracking->HeadPose.Pose.Position.z - pDominantTracking->HeadPose.Pose.Position.z, 2));
|
||||
float distance = sqrtf(powf(pOffTracking->HeadPose.Pose.Position.x -
|
||||
pDominantTracking->HeadPose.Pose.Position.x, 2) +
|
||||
powf(pOffTracking->HeadPose.Pose.Position.y -
|
||||
pDominantTracking->HeadPose.Pose.Position.y, 2) +
|
||||
powf(pOffTracking->HeadPose.Pose.Position.z -
|
||||
pDominantTracking->HeadPose.Pose.Position.z, 2));
|
||||
|
||||
//Turn on weapon stabilisation?
|
||||
if ((pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) !=
|
||||
(pOffTrackedRemoteOld->Buttons & ovrButton_GripTrigger)) {
|
||||
|
||||
if (pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger)
|
||||
{
|
||||
if (distance < 0.50f)
|
||||
{
|
||||
if (pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) {
|
||||
if (distance < 0.50f) {
|
||||
weaponStabilised = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
weaponStabilised = false;
|
||||
}
|
||||
}
|
||||
|
||||
//dominant hand stuff first
|
||||
{
|
||||
///Weapon location relative to view
|
||||
///Weapon location relative to view
|
||||
weaponoffset[0] = pDominantTracking->HeadPose.Pose.Position.x - hmdPosition[0];
|
||||
weaponoffset[1] = pDominantTracking->HeadPose.Pose.Position.y - hmdPosition[1];
|
||||
weaponoffset[2] = pDominantTracking->HeadPose.Pose.Position.z - hmdPosition[2];
|
||||
|
||||
{
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(weaponoffset[0], weaponoffset[2], -(doomYaw - hmdorientation[YAW]), v);
|
||||
weaponoffset[0] = v[1];
|
||||
weaponoffset[2] = v[0];
|
||||
}
|
||||
{
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(weaponoffset[0], weaponoffset[2],
|
||||
-(doomYaw - hmdorientation[YAW]), v);
|
||||
weaponoffset[0] = v[1];
|
||||
weaponoffset[2] = v[0];
|
||||
}
|
||||
|
||||
//Set gun angles
|
||||
const ovrQuatf quatRemote = pDominantTracking->HeadPose.Pose.Orientation;
|
||||
|
@ -99,15 +98,18 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
QuatToYawPitchRoll(quatRemote, rotation, weaponangles);
|
||||
|
||||
|
||||
if (weaponStabilised)
|
||||
{
|
||||
float z = pOffTracking->HeadPose.Pose.Position.z - pDominantTracking->HeadPose.Pose.Position.z;
|
||||
float x = pOffTracking->HeadPose.Pose.Position.x - pDominantTracking->HeadPose.Pose.Position.x;
|
||||
float y = pOffTracking->HeadPose.Pose.Position.y - pDominantTracking->HeadPose.Pose.Position.y;
|
||||
if (weaponStabilised) {
|
||||
float z = pOffTracking->HeadPose.Pose.Position.z -
|
||||
pDominantTracking->HeadPose.Pose.Position.z;
|
||||
float x = pOffTracking->HeadPose.Pose.Position.x -
|
||||
pDominantTracking->HeadPose.Pose.Position.x;
|
||||
float y = pOffTracking->HeadPose.Pose.Position.y -
|
||||
pDominantTracking->HeadPose.Pose.Position.y;
|
||||
float zxDist = length(x, z);
|
||||
|
||||
if (zxDist != 0.0f && z != 0.0f) {
|
||||
VectorSet(weaponangles, -degrees(atanf(y / zxDist)), -degrees(atan2f(x, -z)), weaponangles[ROLL]);
|
||||
VectorSet(weaponangles, -degrees(atanf(y / zxDist)), -degrees(atan2f(x, -z)),
|
||||
weaponangles[ROLL]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -120,33 +122,33 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
offhandoffset[1] = pOffTracking->HeadPose.Pose.Position.y - hmdPosition[1];
|
||||
offhandoffset[2] = pOffTracking->HeadPose.Pose.Position.z - hmdPosition[2];
|
||||
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(offhandoffset[0], offhandoffset[2], -(doomYaw - hmdorientation[YAW]), v);
|
||||
offhandoffset[0] = v[1];
|
||||
offhandoffset[2] = v[0];
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(offhandoffset[0], offhandoffset[2], -(doomYaw - hmdorientation[YAW]),
|
||||
v);
|
||||
offhandoffset[0] = v[1];
|
||||
offhandoffset[2] = v[0];
|
||||
|
||||
vec3_t rotation = {0};
|
||||
rotation[PITCH] = 20;
|
||||
QuatToYawPitchRoll(pOffTracking->HeadPose.Pose.Orientation, rotation, offhandangles);
|
||||
|
||||
if (vr_moveuseoffhand != 0) {
|
||||
controllerYawHeading = offhandangles[YAW] - hmdorientation[YAW];
|
||||
}
|
||||
else
|
||||
{
|
||||
controllerYawHeading = 0.0f;
|
||||
}
|
||||
if (vr_moveuseoffhand != 0) {
|
||||
controllerYawHeading = offhandangles[YAW] - hmdorientation[YAW];
|
||||
} else {
|
||||
controllerYawHeading = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
//Positional movement
|
||||
{
|
||||
ALOGV(" Right-Controller-Position: %f, %f, %f",
|
||||
pDominantTracking->HeadPose.Pose.Position.x,
|
||||
pDominantTracking->HeadPose.Pose.Position.y,
|
||||
pDominantTracking->HeadPose.Pose.Position.z);
|
||||
pDominantTracking->HeadPose.Pose.Position.y,
|
||||
pDominantTracking->HeadPose.Pose.Position.z);
|
||||
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(positionDeltaThisFrame[0], positionDeltaThisFrame[2], -(doomYaw - hmdorientation[YAW]), v);
|
||||
rotateAboutOrigin(positionDeltaThisFrame[0], positionDeltaThisFrame[2],
|
||||
-(doomYaw - hmdorientation[YAW]), v);
|
||||
positional_movementSideways = v[1];
|
||||
positional_movementForward = v[0];
|
||||
|
||||
|
@ -159,11 +161,11 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
{
|
||||
ALOGV(" Left-Controller-Position: %f, %f, %f",
|
||||
pOffTracking->HeadPose.Pose.Position.x,
|
||||
pOffTracking->HeadPose.Pose.Position.y,
|
||||
pOffTracking->HeadPose.Pose.Position.z);
|
||||
pOffTracking->HeadPose.Pose.Position.y,
|
||||
pOffTracking->HeadPose.Pose.Position.z);
|
||||
|
||||
//Teleport - only does anything if vr_teleport cvar is true
|
||||
if (vr_use_teleport) {
|
||||
//Teleport - only does anything if vr_teleport cvar is true
|
||||
if (vr_use_teleport) {
|
||||
if (pOffTrackedRemoteOld->Joystick.y > 0.7f && !ready_teleport) {
|
||||
ready_teleport = true;
|
||||
} else if (pOffTrackedRemoteOld->Joystick.y < 0.7f & ready_teleport) {
|
||||
|
@ -173,10 +175,10 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
}
|
||||
}
|
||||
|
||||
//Apply a filter and quadratic scaler so small movements are easier to make
|
||||
//and we don't get movement jitter when the joystick doesn't quite center properly
|
||||
float dist = length(pOffTrackedRemoteNew->Joystick.x, pOffTrackedRemoteNew->Joystick.y);
|
||||
float nlf = nonLinearFilter(dist);
|
||||
//Apply a filter and quadratic scaler so small movements are easier to make
|
||||
//and we don't get movement jitter when the joystick doesn't quite center properly
|
||||
float dist = length(pOffTrackedRemoteNew->Joystick.x, pOffTrackedRemoteNew->Joystick.y);
|
||||
float nlf = nonLinearFilter(dist);
|
||||
float x = nlf * pOffTrackedRemoteNew->Joystick.x;
|
||||
float y = nlf * pOffTrackedRemoteNew->Joystick.y;
|
||||
|
||||
|
@ -185,7 +187,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
x = player_moving ? x : 0;
|
||||
y = player_moving ? y : 0;
|
||||
|
||||
//Adjust to be off-hand controller oriented
|
||||
//Adjust to be off-hand controller oriented
|
||||
vec2_t v;
|
||||
rotateAboutOrigin(x, y, controllerYawHeading, v);
|
||||
|
||||
|
@ -197,86 +199,73 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
// Turning logic
|
||||
static int increaseSnap = true;
|
||||
if (pDominantTrackedRemoteNew->Joystick.x > 0.6f)
|
||||
{
|
||||
if (increaseSnap)
|
||||
{
|
||||
if (pDominantTrackedRemoteNew->Joystick.x > 0.6f) {
|
||||
if (increaseSnap) {
|
||||
resetDoomYaw = true;
|
||||
snapTurn -= vr_snapturn_angle;
|
||||
if (vr_snapturn_angle > 10.0f) {
|
||||
increaseSnap = false;
|
||||
}
|
||||
|
||||
if (snapTurn < -180.0f)
|
||||
{
|
||||
if (snapTurn < -180.0f) {
|
||||
snapTurn += 360.f;
|
||||
}
|
||||
}
|
||||
} else if (pDominantTrackedRemoteNew->Joystick.x < 0.4f) {
|
||||
increaseSnap = true;
|
||||
}
|
||||
} else if (pDominantTrackedRemoteNew->Joystick.x < 0.4f) {
|
||||
increaseSnap = true;
|
||||
}
|
||||
|
||||
static int decreaseSnap = true;
|
||||
if (pDominantTrackedRemoteNew->Joystick.x < -0.6f)
|
||||
{
|
||||
if (decreaseSnap)
|
||||
{
|
||||
static int decreaseSnap = true;
|
||||
if (pDominantTrackedRemoteNew->Joystick.x < -0.6f) {
|
||||
if (decreaseSnap) {
|
||||
resetDoomYaw = true;
|
||||
snapTurn += vr_snapturn_angle;
|
||||
snapTurn += vr_snapturn_angle;
|
||||
|
||||
//If snap turn configured for less than 10 degrees
|
||||
if (vr_snapturn_angle > 10.0f) {
|
||||
//If snap turn configured for less than 10 degrees
|
||||
if (vr_snapturn_angle > 10.0f) {
|
||||
decreaseSnap = false;
|
||||
}
|
||||
|
||||
if (snapTurn > 180.0f)
|
||||
{
|
||||
if (snapTurn > 180.0f) {
|
||||
snapTurn -= 360.f;
|
||||
}
|
||||
}
|
||||
} else if (pDominantTrackedRemoteNew->Joystick.x > -0.4f)
|
||||
{
|
||||
decreaseSnap = true;
|
||||
}
|
||||
}
|
||||
} else if (pDominantTrackedRemoteNew->Joystick.x > -0.4f) {
|
||||
decreaseSnap = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Now handle all the buttons
|
||||
//Now handle all the buttons - irrespective of menu state - we might be trying to remap stuff
|
||||
{
|
||||
{
|
||||
//Dominant Grip works like a shift key
|
||||
bool dominantGripPushedOld = (pDominantTrackedRemoteOld->Buttons & ovrButton_GripTrigger) != 0;
|
||||
bool dominantGripPushedNew = (pDominantTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0;
|
||||
|
||||
//Weapon Chooser
|
||||
//Weapon Chooser - This _could_ be remapped
|
||||
static int itemSwitched = 0;
|
||||
if (between(-0.2f, pDominantTrackedRemoteNew->Joystick.x, 0.2f) &&
|
||||
(between(0.8f, pDominantTrackedRemoteNew->Joystick.y, 1.0f) ||
|
||||
between(-1.0f, pDominantTrackedRemoteNew->Joystick.y, -0.8f)))
|
||||
{
|
||||
between(-1.0f, pDominantTrackedRemoteNew->Joystick.y, -0.8f))) {
|
||||
if (itemSwitched == 0) {
|
||||
if (between(0.8f, pDominantTrackedRemoteNew->Joystick.y, 1.0f))
|
||||
{
|
||||
if (between(0.8f, pDominantTrackedRemoteNew->Joystick.y, 1.0f)) {
|
||||
Joy_GenerateButtonEvents(0, 1, 1, KEY_MWHEELDOWN);
|
||||
itemSwitched = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
Joy_GenerateButtonEvents(0, 1, 1, KEY_MWHEELUP);
|
||||
itemSwitched = 2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (itemSwitched == 1)
|
||||
{
|
||||
if (itemSwitched == 1) {
|
||||
Joy_GenerateButtonEvents(1, 0, 1, KEY_MWHEELDOWN);
|
||||
}
|
||||
else if (itemSwitched == 2)
|
||||
{
|
||||
} else if (itemSwitched == 2) {
|
||||
Joy_GenerateButtonEvents(1, 0, 1, KEY_MWHEELUP);
|
||||
}
|
||||
itemSwitched = 0;
|
||||
}
|
||||
|
||||
//Dominant Hand - Primary keys (no grip pushed) - All keys are remappable, default bindngs are shown below
|
||||
}
|
||||
|
||||
{
|
||||
//Dominant Hand - Primary keys (no grip pushed) - All keys are re-mappable, default bindngs are shown below
|
||||
|
||||
//Fire
|
||||
Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && !dominantGripPushedOld ? 1 : 0,
|
||||
|
@ -323,7 +312,6 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
|
||||
|
||||
|
||||
//Off Hand - Primary keys (no grip pushed)
|
||||
|
||||
//No Default Binding
|
||||
|
@ -350,10 +338,10 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
//Off Hand - Secondary keys (grip pushed)
|
||||
|
||||
//Toggle Run
|
||||
//No Default Binding
|
||||
Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedOld ? 1 : 0,
|
||||
((pOffTrackedRemoteNew->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedNew ? 1 : 0,
|
||||
1, AKEYCODE_CAPS_LOCK);
|
||||
1, KEY_LALT);
|
||||
|
||||
//Move Down
|
||||
Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & offButton1) != 0) && dominantGripPushedOld ? 1 : 0,
|
||||
|
|
|
@ -120,7 +120,7 @@ extern EMenuState menuactive; // Menu overlayed?
|
|||
extern int paused; // Game Pause?
|
||||
extern bool pauseext;
|
||||
|
||||
extern "C" int isMenuActive();
|
||||
extern "C" int getMenuState();
|
||||
|
||||
|
||||
extern bool viewactive;
|
||||
|
|
|
@ -46,6 +46,8 @@
|
|||
#define ST_RAMPAGEDELAY (2*TICRATE)
|
||||
#define ST_MUCHPAIN 20
|
||||
|
||||
EXTERN_CVAR(Float, vr_pickup_haptic_level)
|
||||
|
||||
TArray<FMugShotState> MugShotStates;
|
||||
|
||||
|
||||
|
@ -351,8 +353,10 @@ int FMugShot::UpdateState(player_t *player, StateFlags stateflags)
|
|||
if (player->bonuscount)
|
||||
{
|
||||
//Short haptic blip on pickup
|
||||
QzDoom_Vibrate(80, 0, 1.0); // left
|
||||
QzDoom_Vibrate(80, 1, 1.0); // right
|
||||
if (vr_pickup_haptic_level > 0.0) {
|
||||
QzDoom_Vibrate(80, 0, vr_pickup_haptic_level); // left
|
||||
QzDoom_Vibrate(80, 1, vr_pickup_haptic_level); // right
|
||||
}
|
||||
|
||||
SetState("grin", false);
|
||||
return 0;
|
||||
|
|
|
@ -808,7 +808,7 @@ void FGLRenderer::Flush()
|
|||
glScissor(mScreenViewport.left, mScreenViewport.top, mScreenViewport.width, mScreenViewport.height);
|
||||
|
||||
//Only adjust HUD if we are 3D and not showing menu (otherwise we are rendering to a cylinder compositor layer)
|
||||
if (!is2D && !isMenuActive()) stereo3dMode.getEyePose(eye_ix)->AdjustHud();
|
||||
if (!is2D && !getMenuState()) stereo3dMode.getEyePose(eye_ix)->AdjustHud();
|
||||
|
||||
m2DDrawer->Draw();
|
||||
FGLDebug::PopGroup();
|
||||
|
|
|
@ -405,7 +405,7 @@ namespace s3d
|
|||
movebob = 0;
|
||||
}
|
||||
|
||||
if (gamestate == GS_LEVEL && !isMenuActive()) {
|
||||
if (gamestate == GS_LEVEL && !getMenuState()) {
|
||||
cachedScreenBlocks = screenblocks;
|
||||
screenblocks = 12;
|
||||
QzDoom_setUseScreenLayer(false);
|
||||
|
@ -429,13 +429,13 @@ namespace s3d
|
|||
QzDoom_getTrackedRemotesOrientation(vr_control_scheme);
|
||||
|
||||
//Some crazy stuff to ascertain the actual yaw that doom is using at the right times!
|
||||
if (gamestate != GS_LEVEL || isMenuActive() || (gamestate == GS_LEVEL && resetDoomYaw))
|
||||
if (gamestate != GS_LEVEL || getMenuState() || (gamestate == GS_LEVEL && resetDoomYaw))
|
||||
{
|
||||
doomYaw = (float)r_viewpoint.Angles.Yaw.Degrees;
|
||||
if (gamestate == GS_LEVEL && resetDoomYaw) {
|
||||
resetDoomYaw = false;
|
||||
}
|
||||
if (gamestate != GS_LEVEL || isMenuActive())
|
||||
if (gamestate != GS_LEVEL || getMenuState())
|
||||
{
|
||||
resetDoomYaw = true;
|
||||
}
|
||||
|
@ -561,7 +561,7 @@ namespace s3d
|
|||
G_AddViewPitch(mAngleFromRadians(dPitch));
|
||||
}
|
||||
|
||||
if (gamestate == GS_LEVEL && !isMenuActive())
|
||||
if (gamestate == GS_LEVEL && !getMenuState())
|
||||
{
|
||||
doomYaw += hmdYawDeltaDegrees;
|
||||
}
|
||||
|
|
|
@ -67,6 +67,9 @@ CVAR(Float, vr_snapTurn, 45.0f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
|||
CVAR(Int, vr_move_speed, 24, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
CVAR(Float, vr_run_multiplier, 1.6, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
|
||||
CVAR(Float, vr_pickup_haptic_level, 0.2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
CVAR(Float, vr_quake_haptic_level, 0.8, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
|
||||
//HUD control
|
||||
CVAR(Float, vr_hud_scale, 0.3f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
CVAR(Float, vr_hud_stereo, 1.8f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
|
|
|
@ -370,12 +370,11 @@ void M_StartControlPanel (bool makeSound)
|
|||
BackbuttonAlpha = 0;
|
||||
}
|
||||
|
||||
int isMenuActive()
|
||||
int getMenuState()
|
||||
{
|
||||
return menuactive == MENU_On ? 1 : 0;
|
||||
return (int)menuactive;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
|
|
|
@ -75,6 +75,7 @@
|
|||
|
||||
extern bool DrawFSHUD; // [RH] Defined in d_main.cpp
|
||||
EXTERN_CVAR (Bool, cl_capfps)
|
||||
EXTERN_CVAR (Float, vr_quake_haptic_level)
|
||||
|
||||
// TYPES -------------------------------------------------------------------
|
||||
|
||||
|
@ -749,6 +750,8 @@ static double QuakePower(double factor, double intensity, double offset)
|
|||
return factor * (offset + randumb);
|
||||
}
|
||||
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// R_SetupFrame
|
||||
|
@ -920,6 +923,14 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor
|
|||
{
|
||||
viewpoint.Pos.Z += QuakePower(quakefactor, jiggers.Intensity.Z, jiggers.Offset.Z);
|
||||
}
|
||||
|
||||
//Haptic Quake
|
||||
if (vr_quake_haptic_level > 0.0) {
|
||||
double left = QuakePower(vr_quake_haptic_level, jiggers.Intensity.X, jiggers.Offset.X);
|
||||
double right = QuakePower(vr_quake_haptic_level, jiggers.Intensity.Y, jiggers.Offset.Y);
|
||||
QzDoom_Vibrate(10, 0, (float)left); // left
|
||||
QzDoom_Vibrate(10, 1, (float)right); // right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -57,6 +57,8 @@
|
|||
CVAR( Float, blood_fade_scalar, 0.0f, CVAR_ARCHIVE ) // Default ro 0.0 for VR
|
||||
CVAR( Float, pickup_fade_scalar, 0.0f, CVAR_ARCHIVE ) // Default ro 0.0 for VR
|
||||
|
||||
EXTERN_CVAR(Float, vr_pickup_haptic_level)
|
||||
|
||||
// [RH] Amount of red flash for up to 114 damage points. Calculated by hand
|
||||
// using a logarithmic scale and my trusty HP48G.
|
||||
static uint8_t DamageToAlpha[114] =
|
||||
|
@ -129,8 +131,10 @@ void V_AddPlayerBlend (player_t *CPlayer, float blend[4], float maxinvalpha, int
|
|||
cnt = CPlayer->bonuscount << 3;
|
||||
|
||||
//Super short haptic blip on pickup
|
||||
QzDoom_Vibrate(50, 0, 0.7); // left
|
||||
QzDoom_Vibrate(50, 1, 0.7); // right
|
||||
if (vr_pickup_haptic_level > 0.0) {
|
||||
QzDoom_Vibrate(50, 0, vr_pickup_haptic_level); // left
|
||||
QzDoom_Vibrate(50, 1, vr_pickup_haptic_level); // right
|
||||
}
|
||||
|
||||
// [SP] Allow player to tone down intensity of pickup flash.
|
||||
cnt = (int)( cnt * pickup_fade_scalar );
|
||||
|
|
|
@ -41,7 +41,7 @@ const char *GetVersionString();
|
|||
|
||||
/** Lots of different version numbers **/
|
||||
|
||||
#define VERSIONSTR "QuestZDoom Beta-0.2 - LZDoom 3.83a"
|
||||
#define VERSIONSTR "QuestZDoom Beta-0.3 - LZDoom 3.83a"
|
||||
|
||||
// The version as seen in the Windows resource
|
||||
#define RC_FILEVERSION 3,83,1
|
||||
|
|
|
@ -2288,6 +2288,10 @@ OptionMenu VROptionsMenu protected
|
|||
Option "Use Teleport", "vr_teleport", "OnOff"
|
||||
Slider "Snap-turn Angle", "vr_snapTurn", 0.0, 90.0, 1.0, 2
|
||||
|
||||
StaticText " "
|
||||
Slider "Item Pickup Haptic Level", "vr_pickup_haptic_level", 0.0, 1.0, 0.1, 2
|
||||
Slider "Quake Haptic Level", "vr_quake_haptic_level", 0.0, 1.0, 0.1, 2
|
||||
|
||||
StaticText " "
|
||||
Slider "Walking Speed", "vr_move_speed", 5, 50, 1, 2
|
||||
Slider "Run Multiplier", "vr_run_multiplier", 0.0, 4.0, 0.1, 2
|
||||
|
|
Binary file not shown.
Loading…
Reference in a new issue