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 0000000..fd87c69 Binary files /dev/null and b/assets/sprites/s_stealth.spr differ diff --git a/java/com/drbeef/lambda1vr/GLES3JNIActivity.java b/java/com/drbeef/lambda1vr/GLES3JNIActivity.java index e7b94fe..5760be3 100644 --- a/java/com/drbeef/lambda1vr/GLES3JNIActivity.java +++ b/java/com/drbeef/lambda1vr/GLES3JNIActivity.java @@ -139,6 +139,9 @@ import static android.system.Os.setenv; copy_asset("/sdcard/xash/valve/", "config.cfg", false); // Copy in case user has deleted their config copy_asset("/sdcard/xash/", "commandline.txt", false); // Copy in case user has deleted their config + //Copy our special sprites + copy_asset("/sdcard/xash/valve/", "sprites/s_stealth.spr", true); + //Copy modified weapon models if (!(new File("/sdcard/xash/valve/models/no_copy").exists())) {