From 8ab4c2f006338a136005fa55f4c1fd3f2fe34341 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 11 Sep 2019 00:10:50 +0100 Subject: [PATCH] Multiple Changes.. - HUD icon to show player crouched ("Stealth") - cvar to disable crouch mechanic - height adjustment cvar - flashlight model cvar - Player height in game is now player height irl - Reduce decal count for performance --- .../jni/src/Lambda1VR/L1VR_SurfaceView.c | 26 ++++++++++-------- Projects/Android/jni/src/Lambda1VR/VrCvars.h | 3 ++ .../Xash3D/xash3d/engine/client/cl_frame.c | 4 ++- .../src/Xash3D/xash3d/engine/client/cl_view.c | 6 +++- .../Xash3D/xash3d/engine/client/vid_common.c | 4 ++- .../src/Xash3D/xash3d/engine/server/sv_game.c | 3 +- .../Xash3D/xash3d/engine/server/sv_world.c | 5 ++-- .../xash3d/mainui/menus/Multiplayer.cpp | 4 ++- Projects/Android/jni/src/hlsdk-xash3d | 2 +- assets/sprites/s_stealth.spr | Bin 0 -> 4926 bytes .../drbeef/lambda1vr/GLES3JNIActivity.java | 3 ++ 11 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 assets/sprites/s_stealth.spr diff --git a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c index f771a7e..f2b768d 100644 --- a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c +++ b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c @@ -825,17 +825,18 @@ void setHMDPosition( float x, float y, float z, float yaw ) { playerYaw = yaw; - //Do we trigger crouching based on player height? - if (hmdPosition[1] < (playerHeight * 0.8f) && - ducked == DUCK_NOTDUCKED) { - ducked = DUCK_CROUCHED; - sendButtonAction("+crouch", 1); - } - else if (hmdPosition[1] > (playerHeight * 0.85f) && - ducked == DUCK_CROUCHED) { - ducked = DUCK_NOTDUCKED; - sendButtonAction("+crouch", 0); - } + if (vr_enable_crouching->integer) { + //Do we trigger crouching based on player height? + if (hmdPosition[1] < (playerHeight * 0.8f) && + ducked == DUCK_NOTDUCKED) { + ducked = DUCK_CROUCHED; + sendButtonAction("+crouch", 1); + } else if (hmdPosition[1] > (playerHeight * 0.82f) && + ducked == DUCK_CROUCHED) { + ducked = DUCK_NOTDUCKED; + sendButtonAction("+crouch", 0); + } + } } } @@ -1312,6 +1313,9 @@ void VR_Init() vr_lasersight = Cvar_Get( "vr_lasersight", "0", CVAR_ARCHIVE, "Enables laser-sight" ); vr_fov = Cvar_Get( "vr_fov", "107", CVAR_ARCHIVE, "FOV for Lambda1VR" ); vr_control_scheme = Cvar_Get( "vr_control_scheme", "0", CVAR_ARCHIVE, "Controller Layout scheme" ); + vr_enable_crouching = Cvar_Get( "vr_enable_crouching", "1", CVAR_ARCHIVE, "Crouching irl triggers ducking in game" ); + vr_height_adjust = Cvar_Get( "vr_height_adjust", "0.0", CVAR_ARCHIVE, "Additional height adjustment for in-game player (in metres)" ); + vr_flashlight_model = Cvar_Get( "vr_flashlight_model", "1", CVAR_ARCHIVE, "Set to 0 to prevent drawing the flashlight model" ); //Not to be changed by users, as it will be overwritten anyway vr_stereo_side = Cvar_Get( "vr_stereo_side", "0", CVAR_READ_ONLY, "Eye being drawn" ); diff --git a/Projects/Android/jni/src/Lambda1VR/VrCvars.h b/Projects/Android/jni/src/Lambda1VR/VrCvars.h index 9d691c6..6f9783f 100644 --- a/Projects/Android/jni/src/Lambda1VR/VrCvars.h +++ b/Projects/Android/jni/src/Lambda1VR/VrCvars.h @@ -12,6 +12,9 @@ convar_t *vr_weapon_stabilised; convar_t *vr_lasersight; convar_t *vr_fov; convar_t *vr_control_scheme; +convar_t *vr_enable_crouching; +convar_t *vr_height_adjust; +convar_t *vr_flashlight_model; //Used and updated continuously during rendering convar_t *vr_stereo_side; \ No newline at end of file diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_frame.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_frame.c index fbd0085..297f918 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_frame.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_frame.c @@ -1299,6 +1299,7 @@ CL_AddEntities Emits all entities, particles, and lights to the refresh =============== */ +extern convar_t *vr_flashlight_model; void CL_AddEntities( void ) { if( cls.state != ca_active ) @@ -1315,7 +1316,8 @@ void CL_AddEntities( void ) // add flashlight model if required if( cl.frame.client.flags & FL_HAS_FLASHLIGHT && - cl.refdef.weapon.flags != 1) // Make sure weapon isn't being stabilised + cl.refdef.weapon.flags != 1 && // Make sure weapon isn't being stabilised + vr_flashlight_model->integer) { CL_AttachFlashlightEntityToPlayer( "models/v_torch.mdl", cl.refdef.flashlight.org, cl.refdef.flashlight.angles.adjusted); } diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c index 03836bc..8c8da17 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/cl_view.c @@ -37,6 +37,7 @@ update refdef values each frame #ifdef VR extern cvar_t *vr_worldscale; extern convar_t *vr_weapon_stabilised; +extern convar_t *vr_height_adjust; extern float playerHeight; extern float hmdPosition[3]; @@ -47,6 +48,8 @@ extern vec3_t weaponvelocity; extern vec3_t flashlightangles; extern vec3_t flashlightoffset; +#define GORDON_FREEMAN_HEIGHT 1.57 + static void convertFromVRtoHL(vec3_t in, vec3_t out) { vec3_t originInVRSpace; @@ -140,7 +143,8 @@ void V_SetupRefDef( void ) #ifdef VR //Only reasonable place to do this - cl.refdef.viewheight[2] += ((hmdPosition[1] - playerHeight) + 0.02) * vr_worldscale->value; // Add 20cm height as for some reason player is never quite tall enough + cl.refdef.viewheight[2] -= (GORDON_FREEMAN_HEIGHT * vr_worldscale->value); // subtract Gordon's default height + cl.refdef.viewheight[2] += (hmdPosition[1] + vr_height_adjust->value) * vr_worldscale->value; cl.refdef.weapon.flags = 0; cl.refdef.weapon.flags |= vr_weapon_stabilised->integer; diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/vid_common.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/vid_common.c index d0e5f3b..664452f 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/client/vid_common.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/client/vid_common.c @@ -871,7 +871,6 @@ void GL_InitCommands( void ) r_drawentities = Cvar_Get( "r_drawentities", "1", CVAR_CHEAT|CVAR_ARCHIVE, "render entities" ); r_flaresize = Cvar_Get( "r_flaresize", "200", CVAR_ARCHIVE, "set flares size" ); r_lefthand = Cvar_Get( "hand", "0", CVAR_ARCHIVE, "viewmodel handedness" ); - r_decals = Cvar_Get( "r_decals", "4096", 0, "sets the maximum number of decals" ); r_xpos = Cvar_Get( "r_xpos", "130", CVAR_GLCONFIG, "window position by horizontal" ); r_ypos = Cvar_Get( "r_ypos", "48", CVAR_GLCONFIG, "window position by vertical" ); r_underwater_distortion = Cvar_Get( "r_underwater_distortion", "0.4", CVAR_ARCHIVE, "underwater distortion speed" ); @@ -879,6 +878,9 @@ void GL_InitCommands( void ) #ifdef VR vr_worldscale = Cvar_Get( "vr_worldscale", "40", CVAR_ARCHIVE, "Sets the world scale for stereo separation" ); + r_decals = Cvar_Get( "r_decals", "256", 0, "sets the maximum number of decals" ); +#else + r_decals = Cvar_Get( "r_decals", "4096", 0, "sets the maximum number of decals" ); #endif gl_picmip = Cvar_Get( "gl_picmip", "0", CVAR_GLCONFIG, "reduces resolution of textures by powers of 2" ); diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c index 93e245c..f0ec411 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_game.c @@ -4253,7 +4253,8 @@ byte *GAME_EXPORT pfnSetFatPVS( const float *org ) VectorSubtract( svgame.pmove->player_mins[0], svgame.pmove->player_mins[1], offset ); VectorSubtract( org, offset, viewPos ); } - else VectorCopy( org, viewPos ); + else + VectorCopy( org, viewPos ); // build a new PVS frame Q_memset( bitvector, 0, fatbytes ); diff --git a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_world.c b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_world.c index e6f44e8..110e59d 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_world.c +++ b/Projects/Android/jni/src/Xash3D/xash3d/engine/server/sv_world.c @@ -820,9 +820,10 @@ qboolean SV_TestEntityPosition( edict_t *ent, edict_t *blocker ) if( ent->v.flags & (FL_CLIENT|FL_FAKECLIENT)) { // to avoid falling through tracktrain update client mins\maxs here - if( ent->v.flags & FL_DUCKING ) + if( ent->v.flags & FL_DUCKING ) SV_SetMinMaxSize( ent, svgame.pmove->player_mins[1], svgame.pmove->player_maxs[1] ); - else SV_SetMinMaxSize( ent, svgame.pmove->player_mins[0], svgame.pmove->player_maxs[0] ); + else + SV_SetMinMaxSize( ent, svgame.pmove->player_mins[0], svgame.pmove->player_maxs[0] ); } trace = SV_Move( ent->v.origin, ent->v.mins, ent->v.maxs, ent->v.origin, MOVE_NORMAL|FMOVE_SIMPLEBOX, ent ); diff --git a/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Multiplayer.cpp b/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Multiplayer.cpp index 6cbbc28..f9f43ec 100644 --- a/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Multiplayer.cpp +++ b/Projects/Android/jni/src/Xash3D/xash3d/mainui/menus/Multiplayer.cpp @@ -110,9 +110,11 @@ void UI_MultiPlayer_Menu( void ) { uiMultiPlayer.AskPredictEnable(); } - else if( !UI::Names::CheckIsNameValid( EngFuncs::GetCvarString( "name" ) ) ) + //Just use whatever is in the config.cfg +/* else if( !UI::Names::CheckIsNameValid( EngFuncs::GetCvarString( "name" ) ) ) { UI_PlayerIntroduceDialog_Show( &uiMultiPlayer ); } +*/ } ADD_MENU( menu_multiplayer, UI_MultiPlayer_Precache, UI_MultiPlayer_Menu ); diff --git a/Projects/Android/jni/src/hlsdk-xash3d b/Projects/Android/jni/src/hlsdk-xash3d index 7d43e43..b9f3370 160000 --- a/Projects/Android/jni/src/hlsdk-xash3d +++ b/Projects/Android/jni/src/hlsdk-xash3d @@ -1 +1 @@ -Subproject commit 7d43e431bb739135318f9acdb331417dca3fee80 +Subproject commit b9f337071c2c78662f0227226b0a105fbe7cec6b diff --git a/assets/sprites/s_stealth.spr b/assets/sprites/s_stealth.spr new file mode 100644 index 0000000000000000000000000000000000000000..fd87c694339cff4a38ce65017efb4465f5d979f5 GIT binary patch literal 4926 zcma)81zZ$O6kqbtI|29jjyOcH16vFf2{ABH6c7`;5Csbb6Gg!8#s&pZuv<{k|Y){q*2hZ0O|S1~c`e*3_V9>Mt@f z^2Li6_3PL7@$or)_^?u`EGa43v}x10apSIEzuu-zo87y24;V0@diCl{mMjSm5BK!+ z{P*u)K|#T(Q>Wx|d9!BC)M|A|NXYQv!}smm_xkng`}gmsr>C!8y}E1HuJ-o!4h|00 zs#ODcjT$v-)~s2pR;}8#YuBk$r*7T4_3G7weH|Sg8#HLpuwlbSjT$v>+_*`TCQX|* z1+~qaH+OP!YSE%a%a$!$wQAM6b!%s5XE;yWwryQpT-vp3=j!U}=H}+^?(X5?(Y}3q zI9P`c9XfXG*r`*e&Ye4Zd3kl|(gn`Yty{P5-Mjbb(W7V2p5ETxy?XWP-Mcqjwojiv zef#$H_4W1h^Yi!j@7J$iKtMqM{{7*y0|yQqG-%M^!Gnhk84?&6ICSXHVZ(;O1xJh+ zF>>U{QKLqU9zA-@m@#9=js+`?A3r`QC}_fj3Bkd^6DLlbG-(o8BQ!L0^5n@=rc9YS zb?UTf)22_K9u^ihW5$e`GiQPgBO)SZ&6+iP_Ut)x=FFWtciy~t^XJb8M=V&dVBx}r zQBhHg7A=a7j*f|miH(h2ym&EKe(BPs%a$!$zI^$L6)RS*T)Ar1DzNaHHEY(cUAu1G zy7lYVZ`iP5(;GtadF$WZQH(m`;HwucJAD{Yu7Gt<(@rz;^X5J z5)$_A-3$IoOiWBlO4`4Fe{yp2fddB)9z2+ml9HO5dg#z02!C&akmoHzra^>pP ztJkhwgAlrLl&d$ln$<57u_39Ob)|)qP^78WDzI~gYpa1UNyZ7(k zLmUCa=g*(Ne*OCW z`}dzee@aVB|Ni|8VN7L0Hq7=gyD>kQgu~Lxf+S5;LZpo!sAI@F{m7hw?;qcNTYa59Wkhw9e;iUiZ2&a@*j%g zX>%Sg2d*ipRO{Q?m}^O^4S5Vl8LLbo^w>dFYg^Km{;K3;G=#Z|E$qk#Lp8~HpHe~) z6-d%n&&Fc`cs zUJ%EX*(kK^Nf_ZIQJ&IVO)V?H&g_wqxiTs$p!MmDtODKyHq~OW!%Bcb7Z#?lssNyh zBx!-gQcNx5vnq^K)F;?oAABhaCq&N=JJWb@kJ4BiZ@}(Xc7`k@nmBj3cd}`f-CQh9bj~w6f&n5W?Dq zUFh>g3ZuiCRAQ5#tA$c=3;OIxBTkgvQ7}t4LX|)kw~)r89SeshNld9n%z($BT*=5I zkdA|b5Lzm6i1G_BDc#4#GoL*Iu2u2|z=b}G)Xb8h3+^v(@O$B?s-kcib2S_a;fXrH zSgBEs$l^$`&Z%OuvLX&7;9-lmF~M|n$>h`M!I%Jy&P2Af`zQt4H=y4;3|`uO6kf}M zCiMG2gO_NU6qX*s^II@GYKpp4*JAN#_g8b_PFDsQD&J11f=;HzLHmy|`JZe6qQPB8uiZ^{*