diff --git a/Projects/Android/AndroidManifest.xml b/Projects/Android/AndroidManifest.xml index d38b941..6cc61c6 100644 --- a/Projects/Android/AndroidManifest.xml +++ b/Projects/Android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="25" + android:versionName="0.3.6" android:installLocation="auto" > diff --git a/Projects/Android/jni/JKVR/JKVR_SurfaceView.cpp b/Projects/Android/jni/JKVR/JKVR_SurfaceView.cpp index 8da4585..b07cc7b 100644 --- a/Projects/Android/jni/JKVR/JKVR_SurfaceView.cpp +++ b/Projects/Android/jni/JKVR/JKVR_SurfaceView.cpp @@ -874,6 +874,17 @@ void JKVR_GetMove(float *forward, float *side, float *pos_forward, float *pos_si *pitch = vr.weaponangles[PITCH]; *roll = 0.0f; } + else if (vr.cgzoommode == 2) + { + *forward = 0.0f; + *pos_forward = 0.0f; + *up = 0.0f; + *side = 0.0f; + *pos_side = 0.0f; + *yaw = vr.snapTurn + vr.weaponangles[YAW]; + *pitch = vr.weaponangles[PITCH]; + *roll = vr.hmdorientation[ROLL]; + } else if (!vr.third_person) { *forward = remote_movementForward; *pos_forward = positional_movementForward; diff --git a/Projects/Android/jni/JKVR/VrClientInfo.h b/Projects/Android/jni/JKVR/VrClientInfo.h index ba12f31..e4e9381 100644 --- a/Projects/Android/jni/JKVR/VrClientInfo.h +++ b/Projects/Android/jni/JKVR/VrClientInfo.h @@ -16,7 +16,6 @@ typedef struct { bool player_moving; int cgzoommode; - int weaponid; int forceid; vec3_t hmdposition; diff --git a/Projects/Android/jni/JKVR/VrInputDefault.cpp b/Projects/Android/jni/JKVR/VrInputDefault.cpp index d5170c6..6f1b968 100644 --- a/Projects/Android/jni/JKVR/VrInputDefault.cpp +++ b/Projects/Android/jni/JKVR/VrInputDefault.cpp @@ -21,6 +21,7 @@ Authors : Simon Brown #include "qcommon/q_shared.h" #include #include +#include #include "android/sys_local.h" #include "weapons.h" @@ -155,16 +156,18 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG powf(vr.hmdposition[1] - pOff->HeadPose.Pose.Position.y, 2) + powf(vr.hmdposition[2] - pOff->HeadPose.Pose.Position.z, 2)); + float controllerYawHeading = 0.0f; //Turn on weapon stabilisation? bool offhandGripPushed = (pOffTrackedRemoteNew->Buttons & ovrButton_GripTrigger); if (offhandGripPushed) { - if (!vr.weapon_stabilised && vr.item_selector == 0) + if (!vr.weapon_stabilised && vr.item_selector == 0 && + !vr.misc_camera) { if (distance < STABILISATION_DISTANCE && vr_two_handed_weapons->integer && - vr.weaponid > WP_SABER) { + cl.frame.ps.weapon >= WP_SABER) { vr.weapon_stabilised = true; } else { vr.item_selector = 2; @@ -190,7 +193,7 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG //Do this early so we can suppress other button actions when item selector is up if (dominantGripPushed) { - if (vr.item_selector == 0) { + if (vr.item_selector == 0 && !vr.misc_camera) { vr.item_selector = 1; } } @@ -232,14 +235,36 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG } } + //Should we trigger the disruptor scope? + if (cl.frame.ps.weapon == WP_DISRUPTOR && + cl.frame.ps.stats[STAT_HEALTH] > 0) + { + if (vr.weapon_stabilised && + VectorLength(vr.weaponoffset) < 0.24f && + vr.cgzoommode == 0) { + sendButtonAction("+altattack", true); + } else if ((VectorLength(vr.weaponoffset) >= 0.24f || !vr.weapon_stabilised) && + vr.cgzoommode == 2) { + sendButtonActionSimple("exitzoom"); + } + //We don't need to send the -altattack as the block below in the next frame will send it for us + } + if (vr.cgzoommode > 0) { if (between(-0.2f, primaryJoystickX, 0.2f)) { - sendButtonAction("+attack", between(0.8f, pPrimaryJoystick->y, 1.0f)); - sendButtonAction("+altattack", between(-1.0f, pPrimaryJoystick->y, -0.8f)); + if (cl.frame.ps.weapon == WP_DISRUPTOR) + { + sendButtonAction("+altattack", between(0.8f, pPrimaryJoystick->y, 1.0f)); + } + else + { + sendButtonAction("+attack", between(0.8f, pPrimaryJoystick->y, 1.0f)); + sendButtonAction("+altattack", between(-1.0f, pPrimaryJoystick->y, -0.8f)); + } } } - else if (vr.weaponid == WP_SABER) + else if (cl.frame.ps.weapon == WP_SABER) { int mode = (int)Cvar_VariableValue("cg_thirdPerson"); static bool switched = false; @@ -316,7 +341,7 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG //For melee right hand is alt attack and left hand is attack - if (vr.weaponid == WP_MELEE) { + if (cl.frame.ps.weapon == WP_MELEE) { //Does weapon velocity trigger attack (melee) and is it fast enough if (vr.velocitytriggered) { static bool fired = false; @@ -355,7 +380,7 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG ALOGV("**WEAPON EVENT** veocity triggered -attack"); sendButtonAction("+attack", vr.secondaryVelocityTriggeredAttack); } - } else if (vr.weaponid == WP_SABER) { + } else if (cl.frame.ps.weapon == WP_SABER) { //Does weapon velocity trigger attack if (vr.velocitytriggered) { static bool fired = false; @@ -556,20 +581,20 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG sendButtonAction("+moveup", (primaryButtonsNew & primaryButton1)); } - //Alt Fire (B Button) + //B Button if ((primaryButtonsNew & primaryButton2) != (primaryButtonsOld & primaryButton2)) { - if (vr.cgzoommode > 0) + if (vr.cgzoommode == 1 || vr.cgzoommode == 3) { sendButtonActionSimple("invuse"); } - else if (vr.weaponid == WP_SABER && vr.velocitytriggered) + else if (cl.frame.ps.weapon == WP_SABER && vr.velocitytriggered) { //B button toggles saber on/off in first person if (primaryButtonsNew & primaryButton2) { sendButtonActionSimple("togglesaber"); } } - else + else if (cl.frame.ps.weapon != WP_DISRUPTOR) { sendButtonAction("+altattack", (primaryButtonsNew & primaryButton2)); } @@ -581,7 +606,7 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG int thirdPerson = Cvar_VariableIntegerValue("cg_thirdPerson"); - if (vr.weaponid == WP_SABER && !thirdPerson && vr.cgzoommode == 0) + if (cl.frame.ps.weapon == WP_SABER && !thirdPerson && vr.cgzoommode == 0) { static bool previous_throwing = false; previous_throwing = throwing; @@ -757,11 +782,11 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG VectorSubtract(vr.secondaryVelocityTriggerLocation, vr.hmdposition, delta2); if (VectorLength(delta1) > VectorLength(delta2)) { - sendButtonActionSimple("useGivenForce 3"); // PULL + sendButtonActionSimple(va("useGivenForce %i", FP_PULL)); } else { - sendButtonActionSimple("useGivenForce 4"); // PUSH + sendButtonActionSimple(va("useGivenForce %i", FP_PUSH)); } vr.secondaryVelocityTriggeredAttack = false; diff --git a/Projects/Android/jni/JKVR/VrInputWeaponAlign.cpp b/Projects/Android/jni/JKVR/VrInputWeaponAlign.cpp index 53b7398..4874cff 100644 --- a/Projects/Android/jni/JKVR/VrInputWeaponAlign.cpp +++ b/Projects/Android/jni/JKVR/VrInputWeaponAlign.cpp @@ -35,7 +35,7 @@ void HandleInput_WeaponAlign( ovrInputStateTrackedRemote *pDominantTrackedRemote /* char cvar_name[64]; - Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", vr.weaponid); + Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", cl.frame.ps.weapon); char weapon_adjustment[256]; Cvar_VariableStringBuffer(cvar_name, weapon_adjustment, 256); sscanf(weapon_adjustment, "%f,%f,%f,%f,%f,%f,%f", &vr.test_scale, @@ -250,7 +250,7 @@ void HandleInput_WeaponAlign( ovrInputStateTrackedRemote *pDominantTrackedRemote Com_sprintf(vr.test_name, sizeof(vr.test_name), "%s: %.3f", item_names[item_index], *(items[item_index])); char cvar_name[64]; - Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", vr.weaponid); + Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", cl.frame.ps.weapon); char buffer[256]; Com_sprintf(buffer, sizeof(buffer), "%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", vr.test_scale, (vr.test_offset[0] / vr.test_scale), (vr.test_offset[1] / vr.test_scale), (vr.test_offset[2] / vr.test_scale), diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_players.cpp b/Projects/Android/jni/OpenJK/code/cgame/cg_players.cpp index 078f788..823815e 100644 --- a/Projects/Android/jni/OpenJK/code/cgame/cg_players.cpp +++ b/Projects/Android/jni/OpenJK/code/cgame/cg_players.cpp @@ -6846,8 +6846,6 @@ void CG_Player( centity_t *cent ) { return; } - vr->weaponid = cg.snap->ps.weapon; - calcedMp = qfalse; //Get the player's light level for stealth calculations diff --git a/Projects/Android/jni/OpenJK/code/ui/ui_shared.cpp b/Projects/Android/jni/OpenJK/code/ui/ui_shared.cpp index 885d0e9..e0fe06c 100644 --- a/Projects/Android/jni/OpenJK/code/ui/ui_shared.cpp +++ b/Projects/Android/jni/OpenJK/code/ui/ui_shared.cpp @@ -8261,7 +8261,7 @@ static qboolean Item_Paint(itemDef_t *item, qboolean bDraw) while (1) { // FIXME - add some type of parameter in the menu file like descfont to specify the font for the descriptions for this menu. - textWidth = DC->textWidth(textPtr, fDescScale, 4); // item->font); + textWidth = DC->textWidth(textPtr, fDescScale, 0); // item->font); if (parent->descAlignment == ITEM_ALIGN_RIGHT) { @@ -8297,7 +8297,7 @@ static qboolean Item_Paint(itemDef_t *item, qboolean bDraw) } // FIXME - add some type of parameter in the menu file like descfont to specify the font for the descriptions for this menu. - DC->drawText(xPos, parent->descY + iYadj, fDescScale, parent->descColor, textPtr, 0, parent->descTextStyle, 4); //item->font); + DC->drawText(xPos, parent->descY + iYadj, fDescScale, parent->descColor, textPtr, 0, parent->descTextStyle, 0); //item->font); break; } } diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp index 91b63c4..f266920 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp @@ -141,8 +141,6 @@ void CG_ToggleBinoculars( void ) cg.zoomTime = cg.time; cgi_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_AUTO, cgs.media.zoomEnd ); } - - vr->cgzoommode = cg.zoomMode; } void CG_ToggleLAGoggles( void ) @@ -185,8 +183,6 @@ void CG_ToggleLAGoggles( void ) cg.zoomTime = cg.time; cgi_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_AUTO, cgs.media.zoomEnd ); } - - vr->cgzoommode = cg.zoomMode; } void CG_LoadHud_f( void) @@ -211,6 +207,7 @@ void CG_ItemSelectorSelect_f( void ); void CG_ItemSelectorNext_f( void ); void CG_ItemSelectorPrev_f( void ); void CG_ToggleSaber_f( void ); +void CG_ExitZoom_f( void ); /* This array MUST be sorted correctly by alphabetical name field */ static consoleCommand_t commands[] = { @@ -253,6 +250,7 @@ static consoleCommand_t commands[] = { { "itemselectornext", CG_ItemSelectorNext_f }, { "itemselectorprev", CG_ItemSelectorPrev_f }, { "togglesaber", CG_ToggleSaber_f }, + { "exitzoom", CG_ExitZoom_f }, }; static const size_t numCommands = ARRAY_LEN( commands ); diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_draw.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_draw.cpp index 7bce186..5f901c4 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_draw.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_draw.cpp @@ -2765,6 +2765,8 @@ void CG_DrawActive( stereoFrame_t stereoView ) { VectorNormalize( vright_n ); VectorNormalize( vup_n ); + vr->cgzoommode = cg.zoomMode; + cg.refdef.stereoView = stereoView; switch ( stereoView ) { case STEREO_CENTER: @@ -2790,6 +2792,7 @@ void CG_DrawActive( stereoFrame_t stereoView ) { cg.refdef.worldscale = cg_worldScale.value; if (!in_camera && !in_misccamera && + cg.zoomMode != 2 && !cg.renderingThirdPerson) { VectorCopy(vr->hmdorientation, cg.refdef.viewangles); @@ -2798,6 +2801,15 @@ void CG_DrawActive( stereoFrame_t stereoView ) { AnglesToAxis(cg.refdef.viewangles, cg.refdef.viewaxis); } + if (cg.zoomMode == 2) + { + cg.refdef.viewangles[ROLL] = vr->clientviewangles[ROLL]; + cg.refdef.viewangles[PITCH] = vr->weaponangles[PITCH]; + cg.refdef.viewangles[YAW] = (vr->clientviewangles[YAW] - vr->hmdorientation[YAW]) + + vr->weaponangles[YAW] + SHORT2ANGLE(cg.snap->ps.delta_angles[YAW]); + AnglesToAxis(cg.refdef.viewangles, cg.refdef.viewaxis); + } + if (!in_camera && !in_misccamera && cg.renderingThirdPerson) diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_players.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_players.cpp index e2fb307..4b48e1b 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_players.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_players.cpp @@ -4886,12 +4886,6 @@ void CG_Player(centity_t *cent ) { return; } - if (cg.snap->ps.stats[STAT_HEALTH] > 0) { - vr->weaponid = cg.snap->ps.weapon; - } else { - vr->weaponid = WP_NONE; - } - if (cent->gent->client->ps.clientNum == 0) { vr->velocitytriggered = (!cg.renderingThirdPerson && (cg.snap->ps.weapon == WP_SABER || cg.snap->ps.weapon == WP_MELEE)); diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp index 4510781..8ba94dd 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp @@ -2651,6 +2651,18 @@ void CG_Weapon_f( void ) void Cmd_UseInventory_f(gentity_t *ent); +void CG_ExitZoom_f( ) +{ + if ( cg.zoomMode == 2 ) + { + G_SoundOnEnt( pm->gent, CHAN_AUTO, "sound/weapons/disruptor/zoomend.wav" ); + // already zooming, so must be wanting to turn it off + cg.zoomMode = 0; + cg.zoomTime = cg.time; + cg.zoomLocked = qfalse; + } +} + void CG_ToggleSaber_f( ) { player->client->ps.saberActive = (qboolean)!player->client->ps.saberActive; diff --git a/Projects/Android/jni/OpenJK/codeJK2/game/bg_pmove.cpp b/Projects/Android/jni/OpenJK/codeJK2/game/bg_pmove.cpp index 9cca5c6..8108627 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/game/bg_pmove.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/game/bg_pmove.cpp @@ -8589,10 +8589,7 @@ void PM_AdjustAttackStates( pmove_t *pm ) } else if ( cg.zoomMode == 2 ) { - G_SoundOnEnt( pm->gent, CHAN_AUTO, "sound/weapons/disruptor/zoomend.wav" ); - // already zooming, so must be wanting to turn it off - cg.zoomMode = 0; - cg.zoomTime = cg.time; + G_SoundOnEnt( pm->gent, CHAN_AUTO, "sound/weapons/disruptor/zoomstart.wav" ); cg.zoomLocked = qfalse; } } diff --git a/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp b/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp index ed654dd..05828b1 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp @@ -3976,9 +3976,12 @@ void WP_RunSaber( gentity_t *self, gentity_t *saber ) //figure out where saber should be vec3_t forward, saberHome, saberDest, fwdangles = {0}; - if (self->client->ps.clientNum == 0) + if (self->client->ps.clientNum == 0 && !cg.renderingThirdPerson) { BG_CalculateVRWeaponPosition(saberHome, fwdangles); + + //Ignore roll + fwdangles[ROLL] = 0; } else { VectorCopy(self->client->ps.viewangles, fwdangles);