From f73fbfa4512bead1792261846e8bfe89184624c6 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 12 Oct 2022 22:35:27 +0100 Subject: [PATCH] Added placeholder hand model - made sure other force powers originate from off-hand - switch 1st/3rd person using right stick when using saber - if goggles equipped, then you can zoom in and out using right stick, and exit with B button --- Projects/Android/jni/JKVR/VrClientInfo.h | 1 + Projects/Android/jni/JKVR/VrInputDefault.cpp | 44 ++++++++++++++---- .../OpenJK/codeJK2/cgame/cg_consolecmds.cpp | 5 ++ .../jni/OpenJK/codeJK2/cgame/cg_view.cpp | 2 +- .../jni/OpenJK/codeJK2/cgame/cg_weapons.cpp | 4 ++ .../jni/OpenJK/codeJK2/game/g_items.cpp | 2 +- .../jni/OpenJK/codeJK2/game/wp_saber.cpp | 30 ++++++++++-- assets/z_npc_vr.pk3 | Bin 5082 -> 0 bytes assets/z_vr_assets.pk3 | Bin 0 -> 10575 bytes java/com/drbeef/jkquest/GLES3JNIActivity.java | 4 +- 10 files changed, 73 insertions(+), 19 deletions(-) delete mode 100644 assets/z_npc_vr.pk3 create mode 100644 assets/z_vr_assets.pk3 diff --git a/Projects/Android/jni/JKVR/VrClientInfo.h b/Projects/Android/jni/JKVR/VrClientInfo.h index b76e76b..d2acf9c 100644 --- a/Projects/Android/jni/JKVR/VrClientInfo.h +++ b/Projects/Android/jni/JKVR/VrClientInfo.h @@ -14,6 +14,7 @@ typedef struct { int weaponid; int lastweaponid; bool mountedgun; + int cgzoommode; vec3_t hmdposition; vec3_t hmdposition_last; // Don't use this, it is just for calculating delta! diff --git a/Projects/Android/jni/JKVR/VrInputDefault.cpp b/Projects/Android/jni/JKVR/VrInputDefault.cpp index daa32e4..a9409fd 100644 --- a/Projects/Android/jni/JKVR/VrInputDefault.cpp +++ b/Projects/Android/jni/JKVR/VrInputDefault.cpp @@ -224,6 +224,31 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG } } + if (vr.cgzoommode > 1) + { + 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)); + } + } else if (vr.weaponid == WP_SABER) + { + static bool switched = false; + if (between(-0.2f, primaryJoystickX, 0.2f) && + (between(0.8f, pPrimaryJoystick->y, 1.0f) || + between(-1.0f, pPrimaryJoystick->y, -0.8f))) { + if (!switched) { + if (between(0.8f, pPrimaryJoystick->y, 1.0f)) { + sendButtonActionSimple("cg_thirdPerson 1"); + } else { + sendButtonActionSimple("cg_thirdPerson 0"); + } + switched = true; + } + } else { + switched = false; + } + } + vr.weapon_stabilised = stabilised; //if (!vr.item_selector) @@ -244,13 +269,6 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG } } - //ALOGV("**GB WEAPON ACTIVE** %i",vr.weaponid); - if (!scopeready && vr.weaponid >= 15 && vr.weaponid <= 17) { - lastScopeReady = false; - ALOGV("**WEAPON EVENT** disable scope mode forced"); - sendButtonActionSimple("weapalt"); - } - //Engage scope / virtual stock (iron sight lock) if conditions are right static bool scopeEngaged = qfalse; if (scopeEngaged != vr.scopeengaged) { @@ -468,14 +486,14 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG // Uncomment to debug offhand reaching - ALOGV("Quick Save> Dist: %f | OffHandToDownAngle: %f | HandOffs: %f %f %f\nHmdHandDot: %f | HmdFwdXY: %f %f | WpnFwdXY: %f %f\nTrackOk: %i, DistOk: %i, HeightOk: %i, HnadAngleOk: %i, HmdHandDotOk: %i", +/* ALOGV("Quick Save> Dist: %f | OffHandToDownAngle: %f | HandOffs: %f %f %f\nHmdHandDot: %f | HmdFwdXY: %f %f | WpnFwdXY: %f %f\nTrackOk: %i, DistOk: %i, HeightOk: %i, HnadAngleOk: %i, HmdHandDotOk: %i", distanceToHMDOff, offhandToDownAngle, vr.offhandoffset[0], vr.offhandoffset[1], vr.offhandoffset[2], hmdToOffhandDotProduct, hmdForwardXY[0], hmdForwardXY[1], offhandForwardXY[0], offhandForwardXY[1], bpTrackOk, bpOffhandDistToHMDOk, bpOffhandHeightOk, bpOffhandAngleOk, bpHmdToOffhandAngleOk); - +*/ // Check quicksave if (canUseQuickSave) { @@ -529,7 +547,13 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG //Alt Fire (B Button) if ((primaryButtonsNew & primaryButton2) != (primaryButtonsOld & primaryButton2)) { - sendButtonAction("+altattack", (primaryButtonsNew & primaryButton2)); + if (vr.cgzoommode > 0) + { + sendButtonActionSimple("invuse"); + } + else { + sendButtonAction("+altattack", (primaryButtonsNew & primaryButton2)); + } } diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp index e1daca6..8f50936 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_consolecmds.cpp @@ -26,6 +26,7 @@ along with this program; if not, see . #include "cg_local.h" #include "cg_media.h" //just for cgs.... +#include void CG_TargetCommand_f( void ); extern qboolean player_locked; @@ -140,6 +141,8 @@ 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 ) @@ -182,6 +185,8 @@ 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) diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_view.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_view.cpp index 560fce5..4aa9c44 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_view.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_view.cpp @@ -2032,7 +2032,7 @@ wasForceSpeed=isForceSpeed; } handEnt.renderfx = RF_DEPTHHACK; - handEnt.hModel = cgi_R_RegisterModel( "models/weapons2/thermal/thermal_hand.md3" ); + handEnt.hModel = cgi_R_RegisterModel( "models/hands/left_hand_relaxed.md3" ); VectorCopy(handEnt.origin, handEnt.oldorigin); AnglesToAxis(handEnt.angles, handEnt.axis); cgi_R_AddRefEntityToScene(&handEnt); diff --git a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp index 5d7852a..cb2be7a 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/cgame/cg_weapons.cpp @@ -2804,6 +2804,7 @@ void CG_DrawItemSelector( void ) break; } +#ifdef _DEMO if (itemId == WP_SABER || itemId == WP_BRYAR_PISTOL || itemId == WP_BLASTER || @@ -2814,6 +2815,9 @@ void CG_DrawItemSelector( void ) } else { continue; } +#else + CG_RegisterWeapon(itemId); +#endif } { diff --git a/Projects/Android/jni/OpenJK/codeJK2/game/g_items.cpp b/Projects/Android/jni/OpenJK/codeJK2/game/g_items.cpp index 07877b3..5c424d5 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/game/g_items.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/game/g_items.cpp @@ -890,7 +890,7 @@ void FinishSpawningItem( gentity_t *ent ) { { gi.Printf (S_COLOR_RED"FinishSpawningItem: removing %s startsolid at %s (in a %s)\n", ent->classname, vtos(ent->s.origin) ); } - assert( 0 && "item starting in solid"); + //assert( 0 && "item starting in solid"); #ifndef FINAL_BUILD if (!g_entities[ENTITYNUM_WORLD].s.radius){ //not a region delayedShutDown = level.time + 100; diff --git a/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp b/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp index 74046de..aa97253 100644 --- a/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp +++ b/Projects/Android/jni/OpenJK/codeJK2/game/wp_saber.cpp @@ -6741,7 +6741,17 @@ void ForceTelepathy( gentity_t *self ) return; } - AngleVectors( self->client->ps.viewangles, forward, NULL, NULL ); + vec3_t origin, angles; + if (self->client->ps.clientNum == 0) + { + BG_CalculateVROffHandPosition(origin, angles); + AngleVectors(angles, forward, NULL, NULL); + } + else + { + AngleVectors(self->client->ps.viewangles, forward, NULL, NULL); + VectorCopy(self->client->ps.viewangles, angles); + } VectorNormalize( forward ); VectorMA( self->client->renderInfo.eyePoint, 2048, forward, end ); @@ -6954,20 +6964,21 @@ void ForceGrip( gentity_t *self ) self->client->ps.weaponTime = floor( self->client->ps.weaponTime * g_timescale->value ); } + vec3_t origin, angles; if (self->client->ps.clientNum == 0) { - vec3_t origin, angles; BG_CalculateVROffHandPosition(origin, angles); AngleVectors(angles, forward, NULL, NULL); } else { AngleVectors(self->client->ps.viewangles, forward, NULL, NULL); + VectorCopy(self->client->ps.viewangles, angles); } VectorNormalize( forward ); VectorMA( self->client->renderInfo.handLPoint, FORCE_GRIP_DIST, forward, end ); - if ( self->enemy && (self->s.number || InFront( self->enemy->currentOrigin, self->client->renderInfo.eyePoint, self->client->ps.viewangles, 0.2f ) ) ) + if ( self->enemy && (self->s.number || InFront( self->enemy->currentOrigin, self->client->renderInfo.eyePoint, angles, 0.2f ) ) ) {//NPCs can always lift enemy since we assume they're looking at them, players need to be facing the enemy if ( gi.inPVS( self->enemy->currentOrigin, self->client->renderInfo.eyePoint ) ) {//must be in PVS @@ -8131,7 +8142,16 @@ static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd NPC_SetAnim( self, SETANIM_TORSO, BOTH_FORCEGRIP_HOLD, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD ); } //get their org - VectorCopy( self->client->ps.viewangles, angles ); + if (self->client->ps.clientNum == 0) + { + vec3_t origin; + BG_CalculateVROffHandPosition(origin, angles); + } + else + { + VectorCopy( self->client->ps.viewangles, angles ); + } + angles[0] -= 10; AngleVectors( angles, dir, NULL, NULL ); if ( gripEnt->client ) @@ -8146,7 +8166,7 @@ static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd //how far are they dist = Distance( self->client->renderInfo.handLPoint, gripEntOrg ); if ( self->client->ps.forcePowerLevel[FP_GRIP] == FORCE_LEVEL_2 && - (!InFront( gripEntOrg, self->client->renderInfo.handLPoint, self->client->ps.viewangles, 0.3f ) || + (!InFront( gripEntOrg, self->client->renderInfo.handLPoint, angles, 0.3f ) || DistanceSquared( gripEntOrg, self->client->renderInfo.handLPoint ) > FORCE_GRIP_DIST_SQUARED)) {//must face them WP_ForcePowerStop( self, FP_GRIP ); diff --git a/assets/z_npc_vr.pk3 b/assets/z_npc_vr.pk3 deleted file mode 100644 index d90091b285427de6230a38bab6688114e685129f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5082 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 b7t#Jz$J&2OU}68&2l}7U^QU4{{B`;tS*>wQ diff --git a/assets/z_vr_assets.pk3 b/assets/z_vr_assets.pk3 new file mode 100644 index 0000000000000000000000000000000000000000..2320481f95af34cdbd44100d92e36a69d7784004 GIT binary patch literal 10575 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 W6CUA@Ar$=2$0{@zIsQ&{Qck2xR literal 0 HcmV?d00001 diff --git a/java/com/drbeef/jkquest/GLES3JNIActivity.java b/java/com/drbeef/jkquest/GLES3JNIActivity.java index b41ccaa..4e66611 100644 --- a/java/com/drbeef/jkquest/GLES3JNIActivity.java +++ b/java/com/drbeef/jkquest/GLES3JNIActivity.java @@ -189,8 +189,8 @@ import static android.system.Os.setenv; copy_asset("/sdcard/JKQuest/Demo/base", "UltimateSounds_JK2.pk3", false); copy_asset("/sdcard/JKQuest/Demo/base", "z_bryar_ashura.pk3", false); - //Bummser's NPC tweaks - copy_asset("/sdcard/JKQuest/Demo/base", "z_npc_vr.pk3", false); + //Our assets + copy_asset("/sdcard/JKQuest/JK2/base", "z_vr_assets.pk3", true); commandLineParams = "jo";