diff --git a/Projects/Android/AndroidManifest.xml b/Projects/Android/AndroidManifest.xml index 7e98dd0..e251bc5 100644 --- a/Projects/Android/AndroidManifest.xml +++ b/Projects/Android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="17" + android:versionName="1.0.1" android:installLocation="auto" > diff --git a/Projects/Android/jni/QzDoom/QzDoom_SurfaceView.c b/Projects/Android/jni/QzDoom/QzDoom_SurfaceView.c index c6327af..967f260 100644 --- a/Projects/Android/jni/QzDoom/QzDoom_SurfaceView.c +++ b/Projects/Android/jni/QzDoom/QzDoom_SurfaceView.c @@ -62,6 +62,8 @@ float vr_weapon_pitchadjust; bool vr_moveuseoffhand; float vr_snapturn_angle; bool vr_switchsticks; +bool vr_secondarybuttonmappings; +bool vr_twohandedweapons; float vr_use_teleport; vec3_t offhandangles; vec3_t offhandoffset; diff --git a/Projects/Android/jni/QzDoom/VrCommon.h b/Projects/Android/jni/QzDoom/VrCommon.h index 882cafb..57ab459 100644 --- a/Projects/Android/jni/QzDoom/VrCommon.h +++ b/Projects/Android/jni/QzDoom/VrCommon.h @@ -53,6 +53,8 @@ extern bool weaponStabilised; extern float vr_weapon_pitchadjust; extern bool vr_moveuseoffhand; extern bool vr_switchsticks; +extern bool vr_secondarybuttonmappings; +extern bool vr_twohandedweapons; extern float vr_snapturn_angle; extern float vr_use_teleport; diff --git a/Projects/Android/jni/QzDoom/VrInputDefault.c b/Projects/Android/jni/QzDoom/VrInputDefault.c index bd8be36..95fbf2b 100644 --- a/Projects/Android/jni/QzDoom/VrInputDefault.c +++ b/Projects/Android/jni/QzDoom/VrInputDefault.c @@ -51,7 +51,6 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, bool dominantGripPushedNew = (pDominantTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0; - ovrInputStateTrackedRemote *pPrimaryTrackedRemoteNew, *pPrimaryTrackedRemoteOld, *pSecondaryTrackedRemoteNew, *pSecondaryTrackedRemoteOld; if (vr_switchsticks) { @@ -79,7 +78,8 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, pDominantTracking->HeadPose.Pose.Position.z, 2)); //Turn on weapon stabilisation? - if ((pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != + if (vr_twohandedweapons && + (pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != (pOffTrackedRemoteOld->Buttons & ovrButton_GripTrigger)) { if (pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) { @@ -330,26 +330,47 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, - //Dominant Hand - Secondary keys (grip pushed) - //Alt-Fire - Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedOld ? 1 : 0, - ((pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_PAD_LTRIGGER); + if (vr_secondarybuttonmappings) { + //Dominant Hand - Secondary keys (grip pushed) + //Alt-Fire + Joy_GenerateButtonEvents( + ((pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_PAD_LTRIGGER); - //Crouch - Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & domButton1) != 0) && dominantGripPushedOld ? 1 : 0, - ((pDominantTrackedRemoteNew->Buttons & domButton1) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_PAD_LTHUMB); + //Crouch + Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & domButton1) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pDominantTrackedRemoteNew->Buttons & domButton1) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_PAD_LTHUMB); - //No Binding - Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & domButton2) != 0) && dominantGripPushedOld ? 1 : 0, - ((pDominantTrackedRemoteNew->Buttons & domButton2) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_RSHIFT); + //No Binding + Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & domButton2) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pDominantTrackedRemoteNew->Buttons & domButton2) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_RSHIFT); - //No Binding - Joy_GenerateButtonEvents(((pDominantTrackedRemoteOld->Buttons & ovrButton_Joystick) != 0) && dominantGripPushedOld ? 1 : 0, - ((pDominantTrackedRemoteNew->Buttons & ovrButton_Joystick) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_TAB); + //No Binding + Joy_GenerateButtonEvents( + ((pDominantTrackedRemoteOld->Buttons & ovrButton_Joystick) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pDominantTrackedRemoteNew->Buttons & ovrButton_Joystick) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_TAB); + } else { + //Use grip as an extra button + //Alt-Fire + Joy_GenerateButtonEvents( + ((pDominantTrackedRemoteOld->Buttons & ovrButton_GripTrigger) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pDominantTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_PAD_LTRIGGER); + } @@ -375,29 +396,61 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ((pOffTrackedRemoteNew->Buttons & ovrButton_Joystick) != 0) && !dominantGripPushedNew ? 1 : 0, 1, KEY_SPACE); + if (!vr_twohandedweapons) + { + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & ovrButton_GripTrigger) != 0) && + !dominantGripPushedOld ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0) && + !dominantGripPushedNew ? 1 : 0, + 1, KEY_PAD_RTHUMB); + } //Off Hand - Secondary keys (grip pushed) + if (vr_secondarybuttonmappings) { + //No Default Binding + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & ovrButton_Trigger) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_LALT); - //No Default Binding - Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedOld ? 1 : 0, - ((pOffTrackedRemoteNew->Buttons & ovrButton_Trigger) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_LALT); + //Move Down + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & offButton1) != 0) && dominantGripPushedOld + ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & offButton1) != 0) && dominantGripPushedNew + ? 1 : 0, + 1, KEY_PGDN); - //Move Down - Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & offButton1) != 0) && dominantGripPushedOld ? 1 : 0, - ((pOffTrackedRemoteNew->Buttons & offButton1) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_PGDN); + //Move Up + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & offButton2) != 0) && dominantGripPushedOld + ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & offButton2) != 0) && dominantGripPushedNew + ? 1 : 0, + 1, KEY_PGUP); - //Move Up - Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & offButton2) != 0) && dominantGripPushedOld ? 1 : 0, - ((pOffTrackedRemoteNew->Buttons & offButton2) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_PGUP); + //Land + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & ovrButton_Joystick) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & ovrButton_Joystick) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_HOME); - //Land - Joy_GenerateButtonEvents(((pOffTrackedRemoteOld->Buttons & ovrButton_Joystick) != 0) && dominantGripPushedOld ? 1 : 0, - ((pOffTrackedRemoteNew->Buttons & ovrButton_Joystick) != 0) && dominantGripPushedNew ? 1 : 0, - 1, KEY_HOME); + if (!vr_twohandedweapons) + { + Joy_GenerateButtonEvents( + ((pOffTrackedRemoteOld->Buttons & ovrButton_GripTrigger) != 0) && + dominantGripPushedOld ? 1 : 0, + ((pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger) != 0) && + dominantGripPushedNew ? 1 : 0, + 1, KEY_PAD_DPAD_UP); + } + } } } diff --git a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_oculusquest.cpp b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_oculusquest.cpp index bf0f017..71e06ae 100644 --- a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_oculusquest.cpp +++ b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_oculusquest.cpp @@ -54,6 +54,7 @@ EXTERN_CVAR(Int, screenblocks); EXTERN_CVAR(Float, movebob); +EXTERN_CVAR(Bool, cl_noprediction) EXTERN_CVAR(Bool, gl_billboard_faces_camera); EXTERN_CVAR(Int, gl_multisample); EXTERN_CVAR(Float, vr_vunits_per_meter) @@ -67,6 +68,8 @@ EXTERN_CVAR(Float, vr_ipd); EXTERN_CVAR(Float, vr_weaponScale); EXTERN_CVAR(Bool, vr_teleport); EXTERN_CVAR(Bool, vr_switch_sticks); +EXTERN_CVAR(Bool, vr_secondary_button_mappings); +EXTERN_CVAR(Bool, vr_two_handed_weapons); //HUD control EXTERN_CVAR(Float, vr_hud_scale); @@ -92,13 +95,13 @@ extern bool automapactive; // in AM_map.c //bit of a hack, assume player is at "normal" height when not crouching float getDoomPlayerHeightWithoutCrouch(const player_t *player) { - static float height = player->viewheight; - if (player->crouching == 0 && - player->crouchfactor == 1.0) + static float height = 0; + if (height == 0) { // Doom thinks this is where you are height = player->viewheight; } + return height; } @@ -293,6 +296,7 @@ namespace s3d bool OculusQuestMode::GetHandTransform(int hand, VSMatrix* mat) const { + double pixelstretch = level.info ? level.info->pixelstretch : 1.2; player_t* player = r_viewpoint.camera ? r_viewpoint.camera->player : nullptr; if (player) { @@ -301,12 +305,11 @@ namespace s3d mat->loadIdentity(); - mat->translate(pos.X, pos.Z + (player->viewheight - - getDoomPlayerHeightWithoutCrouch(player)), pos.Y); + //We want to offset the weapon exactly from where we are seeing from + mat->translate(r_viewpoint.CenterEyePos.X, r_viewpoint.CenterEyePos.Z - getDoomPlayerHeightWithoutCrouch(player), r_viewpoint.CenterEyePos.Y); mat->scale(vr_vunits_per_meter, vr_vunits_per_meter, -vr_vunits_per_meter); - double pixelstretch = level.info ? level.info->pixelstretch : 1.2; if ((vr_control_scheme < 10 && hand == 1) || (vr_control_scheme >= 10 && hand == 0)) { mat->translate(-weaponoffset[0], (hmdPosition[1] + weaponoffset[1] + vr_height_adjust) / pixelstretch, weaponoffset[2]); @@ -452,6 +455,8 @@ namespace s3d vr_switchsticks = vr_switch_sticks; vr_moveuseoffhand = !vr_move_use_offhand; vr_use_teleport = vr_teleport; + vr_secondarybuttonmappings = vr_secondary_button_mappings; + vr_twohandedweapons = vr_two_handed_weapons; QzDoom_getTrackedRemotesOrientation(vr_control_scheme); //Some crazy stuff to ascertain the actual yaw that doom is using at the right times! diff --git a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_stereo_cvars.cpp b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_stereo_cvars.cpp index 71e397b..7103910 100644 --- a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_stereo_cvars.cpp +++ b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/gl/stereo3d/gl_stereo_cvars.cpp @@ -67,6 +67,8 @@ CVAR(Float, vr_snapTurn, 45.0f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Int, vr_move_speed, 19, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Float, vr_run_multiplier, 1.5, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Bool, vr_switch_sticks, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) +CVAR(Bool, vr_secondary_button_mappings, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) +CVAR(Bool, vr_two_handed_weapons, true, 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) diff --git a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/p_teleport.cpp b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/p_teleport.cpp index dfb2498..7f4708f 100644 --- a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/p_teleport.cpp +++ b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/p_teleport.cpp @@ -27,6 +27,7 @@ //----------------------------------------------------------------------------- +#include #include "templates.h" #include "doomtype.h" #include "doomdef.h" @@ -198,6 +199,8 @@ bool P_Teleport (AActor *thing, DVector3 pos, DAngle angle, int flags) // [BC] && bHaltVelocity. if (telezoom && thing->player->mo == thing && !(flags & TELF_KEEPVELOCITY)) thing->player->FOV = MIN (175.f, thing->player->DesiredFOV + 45.f); + + resetDoomYaw = true; } } // [BC] && bHaltVelocity. diff --git a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/version.h b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/version.h index 752c123..39db54b 100644 --- a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/version.h +++ b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/src/version.h @@ -41,7 +41,7 @@ const char *GetVersionString(); /** Lots of different version numbers **/ -#define VERSIONSTR "DrBeef's QuestZDoom-1.0.0 (LZDoom 3.83a)" +#define VERSIONSTR "DrBeef's QuestZDoom-1.0.1 (LZDoom 3.83a)" // The version as seen in the Windows resource #define RC_FILEVERSION 3,83,1 diff --git a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/wadsrc/static/menudef.txt b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/wadsrc/static/menudef.txt index e420806..439ac1e 100644 --- a/Projects/Android/jni/gzdoom-g3.3mgw_mobile/wadsrc/static/menudef.txt +++ b/Projects/Android/jni/gzdoom-g3.3mgw_mobile/wadsrc/static/menudef.txt @@ -2280,6 +2280,9 @@ OptionMenu VRHUDOptions protected StaticText "" StaticText "HUD" Slider "VR HUD Scale", "vr_hud_scale", 0.05, 1.0, 0.05, 2 + ScaleSlider "VR HUD Item Scale", "hud_scale", -1.0, 8.0, 1.0, "$SCALEMNU_USEUI", "$SCALEMNU_USEFS" + ScaleSlider "VR Alt-HUD Item Scale","hud_althudscale", 0.0, 8.0, 1.0, "$SCALEMNU_USEUI" + StaticText "" Slider "VR HUD Stereo Effect", "vr_hud_stereo", 0.0, 5.0, 0.1, 2 Slider "VR HUD Pitch Rotate", "vr_hud_rotate", 0.0, 50.0, 1.0, 2 Option "VR HUD Fix Pitch", "vr_hud_fixed_pitch", "OnOff" @@ -2301,19 +2304,24 @@ OptionMenu VROptionsMenu protected Title "VR OPTIONS" StaticText "Misc" - Slider "Height Adjust", "vr_height_adjust", 0.0, 1.0, 0.01, 2 + Slider "Height Adjust", "vr_height_adjust", -0.5, 1.0, 0.01, 2 StaticText "" StaticText "VR Controls" Option "Control Scheme", "vr_control_scheme", "ControlScheme" Option "Switch Thumsticks", "vr_switch_sticks", "OnOff" + Option "Use Secondary Button Mappings", "vr_secondary_button_mappings", "OnOff" + Option "Two Handed Weapons", "vr_two_handed_weapons", "OnOff" Option "Off-hand Move Direction", "vr_move_use_offhand", "OffOn" + StaticText "" + StaticText "Set Snap-Turn to < 10 for Smooth Turn" Slider "Snap-turn Angle", "vr_snapTurn", 0.0, 90.0, 1.0, 2 + StaticText "" StaticText "Locomotion" Option "Use Teleport", "vr_teleport", "OnOff" Slider "Walking Speed", "vr_move_speed", 5, 50, 1, 2 - Slider "Run Multiplier", "vr_run_multiplier", 0.0, 4.0, 0.1, 2 + Slider "Run Multiplier", "vr_run_multiplier", 0.0, 5.0, 0.1, 2 StaticText "" StaticText "Haptics" diff --git a/assets/res/lzdoom.pk3 b/assets/res/lzdoom.pk3 index 8ea8f81..c9c0faf 100644 Binary files a/assets/res/lzdoom.pk3 and b/assets/res/lzdoom.pk3 differ