Merge branch 'main' into contributions

This commit is contained in:
Petr Bartos 2023-11-23 19:08:16 +01:00
commit a9565b9359
26 changed files with 228 additions and 92 deletions

View file

@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.drbeef.jkxr" package="com.drbeef.jkxr"
android:versionCode="64" android:versionCode="64"
android:versionName="1.1.18" android:installLocation="auto" > android:versionName="1.1.19" android:installLocation="auto" >
<!-- Tell the system this app requires OpenGL ES 3.1. --> <!-- Tell the system this app requires OpenGL ES 3.1. -->
<uses-feature android:glEsVersion="0x00030002" android:required="true"/> <uses-feature android:glEsVersion="0x00030002" android:required="true"/>

View file

@ -18,6 +18,7 @@ extern cvar_t *vr_force_motion_controlled;
extern cvar_t *vr_force_motion_push; extern cvar_t *vr_force_motion_push;
extern cvar_t *vr_force_motion_pull; extern cvar_t *vr_force_motion_pull;
extern cvar_t *vr_motion_enable_saber; extern cvar_t *vr_motion_enable_saber;
extern cvar_t *vr_always_run;
extern cvar_t *vr_crouch_toggle; extern cvar_t *vr_crouch_toggle;
extern cvar_t *vr_irl_crouch_enabled; extern cvar_t *vr_irl_crouch_enabled;
extern cvar_t *vr_irl_crouch_to_stand_ratio; extern cvar_t *vr_irl_crouch_to_stand_ratio;

View file

@ -31,6 +31,7 @@ cvar_t *vr_force_motion_controlled;
cvar_t *vr_force_motion_push; cvar_t *vr_force_motion_push;
cvar_t *vr_force_motion_pull; cvar_t *vr_force_motion_pull;
cvar_t *vr_motion_enable_saber; cvar_t *vr_motion_enable_saber;
cvar_t * vr_always_run;
cvar_t *vr_crouch_toggle; cvar_t *vr_crouch_toggle;
cvar_t *vr_irl_crouch_enabled; cvar_t *vr_irl_crouch_enabled;
cvar_t *vr_irl_crouch_to_stand_ratio; cvar_t *vr_irl_crouch_to_stand_ratio;

View file

@ -121,6 +121,14 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
Cvar_Set("vr_control_scheme", "99"); Cvar_Set("vr_control_scheme", "99");
} }
static int cinCameraTimestamp = -1;
if (vr.cin_camera && cinCameraTimestamp == -1) {
cinCameraTimestamp = Sys_Milliseconds();
}
else if (!vr.cin_camera) {
cinCameraTimestamp = -1;
}
//Set controller angles - We need to calculate all those we might need (including adjustments) for the client to then take its pick //Set controller angles - We need to calculate all those we might need (including adjustments) for the client to then take its pick
{ {
vec3_t rotation = {0}; vec3_t rotation = {0};
@ -212,6 +220,28 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
static float menuYaw = 0; static float menuYaw = 0;
if (VR_UseScreenLayer() && !vr.misc_camera) if (VR_UseScreenLayer() && !vr.misc_camera)
{ {
if (vr.cin_camera && cinCameraTimestamp + 1000 < Sys_Milliseconds())
{
// To skip cinematic use any thumb or trigger (but wait a while
// to prevent skipping when cinematic is started during action)
if ((primaryButtonsNew & primaryThumb) != (primaryButtonsOld & primaryThumb)) {
sendButtonAction("+use", (primaryButtonsNew & primaryThumb));
}
if ((secondaryButtonsNew & secondaryThumb) != (secondaryButtonsOld & secondaryThumb)) {
sendButtonAction("+use", (secondaryButtonsNew & secondaryThumb));
}
if ((pDominantTrackedRemoteNew->Buttons & xrButton_Trigger) != (pDominantTrackedRemoteOld->Buttons & xrButton_Trigger)) {
sendButtonAction("+use", (pDominantTrackedRemoteNew->Buttons & xrButton_Trigger));
// mark button as already pressed to prevent firing after entering the game
pDominantTrackedRemoteOld->Buttons |= xrButton_Trigger;
}
if ((pOffTrackedRemoteNew->Buttons & xrButton_Trigger) != (pOffTrackedRemoteOld->Buttons & xrButton_Trigger)) {
sendButtonAction("+use", (pOffTrackedRemoteNew->Buttons & xrButton_Trigger));
// mark button as already pressed to prevent firing after entering the game
pOffTrackedRemoteOld->Buttons |= xrButton_Trigger;
}
}
bool controlsLeftHanded = vr_control_scheme->integer >= 10; bool controlsLeftHanded = vr_control_scheme->integer >= 10;
if (controlsLeftHanded == vr.menu_right_handed) { if (controlsLeftHanded == vr.menu_right_handed) {
interactWithTouchScreen(menuYaw, vr.offhandangles[ANGLES_DEFAULT]); interactWithTouchScreen(menuYaw, vr.offhandangles[ANGLES_DEFAULT]);
@ -377,12 +407,6 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
} }
} }
static int cinCameraTimestamp = -1;
if (vr.cin_camera && cinCameraTimestamp == -1) {
cinCameraTimestamp = Sys_Milliseconds();
} else if (!vr.cin_camera) {
cinCameraTimestamp = -1;
}
if (vr.cin_camera && cinCameraTimestamp + 1000 < Sys_Milliseconds()) if (vr.cin_camera && cinCameraTimestamp + 1000 < Sys_Milliseconds())
{ {
// To skip cinematic use any thumb or trigger (but wait a while // To skip cinematic use any thumb or trigger (but wait a while
@ -471,6 +495,22 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
} }
} }
//Switch movement speed
if (!vr.cgzoommode && !vr_always_run->integer)
{
static bool switched = false;
if (between(-0.2f, primaryJoystickX, 0.2f) &&
between(0.8f, pPrimaryJoystick->y, 1.0f)) {
if (!switched) {
vr.move_speed = (++vr.move_speed) % 3;
switched = true;
}
}
else {
switched = false;
}
}
/* /*
//Parameter Changer //Parameter Changer
static bool changed = false; static bool changed = false;
@ -852,18 +892,34 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
vec2_t v; vec2_t v;
rotateAboutOrigin(x, y, controllerYawHeading, v); rotateAboutOrigin(x, y, controllerYawHeading, v);
//Move a lot slower if scope is engaged float move_speed_multiplier = 1.0f;
remote_movementSideways = switch (vr.move_speed)
v[0] * (vr.move_speed == 0 ? 0.75f : (vr.move_speed == 1 ? 1.0f : 0.5f)); {
remote_movementForward = case 0:
v[1] * (vr.move_speed == 0 ? 0.75f : (vr.move_speed == 1 ? 1.0f : 0.5f)); move_speed_multiplier = 0.75f;
break;
case 1:
move_speed_multiplier = 1.0f;
break;
case 2:
move_speed_multiplier = 0.5f;
break;
}
if (vr_always_run->integer)
{
move_speed_multiplier = 1.0f;
}
remote_movementSideways = move_speed_multiplier * v[0];
remote_movementForward = move_speed_multiplier * v[1];
if (((secondaryButtonsNew & secondaryButton1) != //X button invokes menu now
(secondaryButtonsOld & secondaryButton1)) && if ((secondaryButtonsNew & secondaryButton1) &&
(secondaryButtonsNew & secondaryButton1)) { !(secondaryButtonsOld & secondaryButton1))
//Toggle walk/run somehow?! {
vr.move_speed = (++vr.move_speed) % 3; Sys_QueEvent(0, SE_KEY, A_ESCAPE, true, 0, NULL);
} }
//Open the datapad //Open the datapad

View file

@ -59,6 +59,7 @@ bool VR_UseScreenLayer()
(bool)((vr.cin_camera && !vr.immersive_cinematics) || (bool)((vr.cin_camera && !vr.immersive_cinematics) ||
vr.misc_camera || vr.misc_camera ||
(CL_IsRunningInGameCinematic() || CL_InGameCinematicOnStandBy()) || (CL_IsRunningInGameCinematic() || CL_InGameCinematicOnStandBy()) ||
(cls.state == CA_DISCONNECTED) ||
(cls.state == CA_CINEMATIC) || (cls.state == CA_CINEMATIC) ||
(cls.state == CA_LOADING) || (cls.state == CA_LOADING) ||
( Key_GetCatcher( ) & KEYCATCH_UI ) || ( Key_GetCatcher( ) & KEYCATCH_UI ) ||
@ -233,10 +234,10 @@ void VR_GetMove(float *forward, float *side, float *pos_forward, float *pos_side
} }
else if (vr.cgzoommode == 2 || vr.cgzoommode == 4) else if (vr.cgzoommode == 2 || vr.cgzoommode == 4)
{ {
*forward = 0.0f; *forward = remote_movementForward / 3.0f;
*pos_forward = 0.0f; *pos_forward = 0.0f;
*up = 0.0f; *up = 0.0f;
*side = 0.0f; *side = remote_movementSideways / 3.0f;
*pos_side = 0.0f; *pos_side = 0.0f;
*yaw = vr.snapTurn; *yaw = vr.snapTurn;
*pitch = vr.weaponangles[ANGLES_ADJUSTED][PITCH]; *pitch = vr.weaponangles[ANGLES_ADJUSTED][PITCH];
@ -347,6 +348,7 @@ void VR_Init()
vr_force_motion_push = Cvar_Get ("vr_force_motion_push", "3", CVAR_ARCHIVE); vr_force_motion_push = Cvar_Get ("vr_force_motion_push", "3", CVAR_ARCHIVE);
vr_force_motion_pull = Cvar_Get ("vr_force_motion_pull", "4", CVAR_ARCHIVE); vr_force_motion_pull = Cvar_Get ("vr_force_motion_pull", "4", CVAR_ARCHIVE);
vr_motion_enable_saber = Cvar_Get ("vr_motion_enable_saber", "0", CVAR_ARCHIVE); vr_motion_enable_saber = Cvar_Get ("vr_motion_enable_saber", "0", CVAR_ARCHIVE);
vr_always_run = Cvar_Get ("vr_always_run", "0", CVAR_ARCHIVE);
vr_crouch_toggle = Cvar_Get ("vr_crouch_toggle", "0", CVAR_ARCHIVE); vr_crouch_toggle = Cvar_Get ("vr_crouch_toggle", "0", CVAR_ARCHIVE);
vr_irl_crouch_enabled = Cvar_Get ("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE); vr_irl_crouch_enabled = Cvar_Get ("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE);
vr_irl_crouch_to_stand_ratio = Cvar_Get ("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE); vr_irl_crouch_to_stand_ratio = Cvar_Get ("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE);

View file

@ -1930,8 +1930,8 @@ void TBXR_submitFrame()
TBXR_updateProjections(); TBXR_updateProjections();
//Calculate the maximum extent fov for use in culling in the engine (we won't want to cull inside this fov) //Calculate the maximum extent fov for use in culling in the engine (we won't want to cull inside this fov)
vr.fov_x = (fabs(gAppState.Views[0].fov.angleLeft) + fabs(gAppState.Views[1].fov.angleLeft)) * 180.0f / M_PI; vr.fov_x = (fabs(gAppState.Views[0].fov.angleLeft) + fabs(gAppState.Views[1].fov.angleRight)) * 180.0f / M_PI;
vr.fov_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleUp)) * 180.0f / M_PI; vr.fov_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleDown)) * 180.0f / M_PI;
XrFrameEndInfo endFrameInfo = {}; XrFrameEndInfo endFrameInfo = {};

View file

@ -138,10 +138,10 @@ void VR_GetMove(float *forward, float *side, float *pos_forward, float *pos_side
} }
else if (vr.cgzoommode == 2 || vr.cgzoommode == 4) else if (vr.cgzoommode == 2 || vr.cgzoommode == 4)
{ {
*forward = 0.0f; *forward = remote_movementForward / 3.0f;
*pos_forward = 0.0f; *pos_forward = 0.0f;
*up = 0.0f; *up = 0.0f;
*side = 0.0f; *side = remote_movementSideways / 3.0f;
*pos_side = 0.0f; *pos_side = 0.0f;
*yaw = vr.snapTurn; *yaw = vr.snapTurn;
*pitch = vr.weaponangles[ANGLES_ADJUSTED][PITCH]; *pitch = vr.weaponangles[ANGLES_ADJUSTED][PITCH];
@ -259,6 +259,7 @@ void VR_Init()
vr_force_motion_push = Cvar_Get ("vr_force_motion_push", "3", CVAR_ARCHIVE); vr_force_motion_push = Cvar_Get ("vr_force_motion_push", "3", CVAR_ARCHIVE);
vr_force_motion_pull = Cvar_Get ("vr_force_motion_pull", "4", CVAR_ARCHIVE); vr_force_motion_pull = Cvar_Get ("vr_force_motion_pull", "4", CVAR_ARCHIVE);
vr_motion_enable_saber = Cvar_Get ("vr_motion_enable_saber", "0", CVAR_ARCHIVE); vr_motion_enable_saber = Cvar_Get ("vr_motion_enable_saber", "0", CVAR_ARCHIVE);
vr_always_run = Cvar_Get ("vr_always_run", "0", CVAR_ARCHIVE);
vr_crouch_toggle = Cvar_Get ("vr_crouch_toggle", "0", CVAR_ARCHIVE); vr_crouch_toggle = Cvar_Get ("vr_crouch_toggle", "0", CVAR_ARCHIVE);
vr_irl_crouch_enabled = Cvar_Get ("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE); vr_irl_crouch_enabled = Cvar_Get ("vr_irl_crouch_enabled", "0", CVAR_ARCHIVE);
vr_irl_crouch_to_stand_ratio = Cvar_Get ("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE); vr_irl_crouch_to_stand_ratio = Cvar_Get ("vr_irl_crouch_to_stand_ratio", "0.65", CVAR_ARCHIVE);

View file

@ -222,7 +222,7 @@ void ovrFramebuffer_Resolve(ovrFramebuffer* frameBuffer) {
int width, height; int width, height;
R_GetModeInfo(&width, &height, r_mode->integer); R_GetModeInfo(&width, &height, r_mode->integer);
glBindFramebuffer(GL_READ_FRAMEBUFFER, colorTexture); glBindFramebuffer(GL_READ_FRAMEBUFFER, frameBuffer->FrameBuffers[frameBuffer->TextureSwapChainIndex]);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glBlitFramebuffer(0, 0, gAppState.Width, gAppState.Height, glBlitFramebuffer(0, 0, gAppState.Width, gAppState.Height,
0, 0, width, height, 0, 0, width, height,
@ -1151,8 +1151,8 @@ void TBXR_submitFrame()
TBXR_updateProjections(); TBXR_updateProjections();
//Calculate the maximum extent fov for use in culling in the engine (we won't want to cull inside this fov) //Calculate the maximum extent fov for use in culling in the engine (we won't want to cull inside this fov)
vr.fov_x = (fabs(gAppState.Views[0].fov.angleLeft) + fabs(gAppState.Views[1].fov.angleLeft)) * 180.0f / M_PI; vr.fov_x = (fabs(gAppState.Views[0].fov.angleLeft) + fabs(gAppState.Views[1].fov.angleRight)) * 180.0f / M_PI;
vr.fov_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleUp)) * 180.0f / M_PI; vr.fov_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleDown)) * 180.0f / M_PI;
XrFrameEndInfo endFrameInfo = {}; XrFrameEndInfo endFrameInfo = {};

View file

@ -4117,15 +4117,24 @@ CG_DrawVignette
float currentComfortVignetteValue = 0.0f; float currentComfortVignetteValue = 0.0f;
float filteredViewYawDelta = 0.0f; float filteredViewYawDelta = 0.0f;
static void CG_DrawVignette( void ) static void CG_DrawVignette( bool force )
{ {
playerState_t *ps; playerState_t *ps;
ps = &cg.snap->ps; ps = &cg.snap->ps;
float vignetteValue;
cvar_t *vr_comfort_vignette = gi.cvar("vr_comfort_vignette", "0.0", CVAR_ARCHIVE); // defined in VrCvars.h cvar_t *vr_comfort_vignette = gi.cvar("vr_comfort_vignette", "0.0", CVAR_ARCHIVE); // defined in VrCvars.h
if (vr_comfort_vignette->value <= 0.0f || vr_comfort_vignette->value > 1.0f || !cg.zoomMode == 0) if (!force)
{ {
return; if (vr_comfort_vignette->value <= 0.0f || vr_comfort_vignette->value > 1.0f || !cg.zoomMode == 0)
{
return;
}
vignetteValue = vr_comfort_vignette->value;
}
else
{
vignetteValue = 0.3f;
} }
bool isMoving = VectorLength(cg.predicted_player_state.velocity) > 30.0; bool isMoving = VectorLength(cg.predicted_player_state.velocity) > 30.0;
@ -4144,17 +4153,17 @@ static void CG_DrawVignette( void )
isTurning = filteredViewYawDelta > 1; isTurning = filteredViewYawDelta > 1;
} }
if (isMoving || isInAir || isTurning) if (isMoving || isInAir || isTurning || force)
{ {
if (currentComfortVignetteValue < vr_comfort_vignette->value) if (currentComfortVignetteValue < vignetteValue)
{ {
currentComfortVignetteValue += vr_comfort_vignette->value * 0.05; currentComfortVignetteValue += vignetteValue * 0.05;
if (currentComfortVignetteValue > 1.0f) if (currentComfortVignetteValue > 1.0f)
currentComfortVignetteValue = 1.0f; currentComfortVignetteValue = 1.0f;
} }
} else{ } else{
if (currentComfortVignetteValue > 0.0f) if (currentComfortVignetteValue > 0.0f)
currentComfortVignetteValue -= vr_comfort_vignette->value * 0.05; currentComfortVignetteValue -= vignetteValue * 0.05;
} }
if (currentComfortVignetteValue > 0.0f && currentComfortVignetteValue <= 1.0f) if (currentComfortVignetteValue > 0.0f && currentComfortVignetteValue <= 1.0f)
@ -4295,8 +4304,9 @@ static void CG_Draw2D( void )
if ( (cg.snap->ps.forcePowersActive&(1<<FP_SEE)) ) if ( (cg.snap->ps.forcePowersActive&(1<<FP_SEE)) )
{//force sight is on {//force sight is on
//indicate this with sight cone thingy //indicate this with sight cone thingy
cg.drawingHUD = CG_HUD_NORMAL; cg.drawingHUD = CG_HUD_OTHER;
CG_DrawPic( 35, 50, 570, 400, cgi_R_RegisterShader( "gfx/2d/jsense" )); CG_DrawVignette(true);
CG_DrawPic( 50, 40, 540, 400, cgi_R_RegisterShader( "gfx/2d/jsense" ));
cg.drawingHUD = CG_HUD_SCALED; cg.drawingHUD = CG_HUD_SCALED;
CG_DrawHealthBars(); CG_DrawHealthBars();
} }
@ -4306,10 +4316,50 @@ static void CG_Draw2D( void )
} }
if (cg.zoomMode || (cg.snap->ps.forcePowersActive & (1 << FP_SEE)))
{
cg.drawingHUD = CG_HUD_NORMAL;
const auto xOffset = (-vr->off_center_fov_x * 640);
const auto yOffset = (vr->off_center_fov_y * 480);
vec4_t color = { 0, 0, 0, 1 };
if (cg.stereoView == STEREO_LEFT)
{
//Left Gap
CG_FillRect(0, 0, -xOffset, 480, color);
if (yOffset < 0)
{
//Bottom Gap
CG_FillRect(0, 0, 640, yOffset, color);
}
else
{
//Top Gap
CG_FillRect(0, 480 - yOffset, 640, yOffset, color);
}
}
else
{
//Right Gap
CG_FillRect(640 - xOffset, 0, xOffset, 480, color);
if (yOffset < 0)
{
//Bottom Gap
CG_FillRect(0, 0, 640, yOffset, color);
}
else
{
//Top Gap
CG_FillRect(0, 480 - yOffset, 640, yOffset, color);
}
}
}
// don't draw any status if dead // don't draw any status if dead
if ( cg.snap->ps.stats[STAT_HEALTH] > 0 ) if ( cg.snap->ps.stats[STAT_HEALTH] > 0 )
{ {
CG_DrawVignette(); CG_DrawVignette(false);
if ( !(cent->gent && cent->gent->s.eFlags & (EF_LOCKED_TO_WEAPON )))//|EF_IN_ATST if ( !(cent->gent && cent->gent->s.eFlags & (EF_LOCKED_TO_WEAPON )))//|EF_IN_ATST
{ {
@ -4345,7 +4395,10 @@ static void CG_Draw2D( void )
CG_UseIcon(); CG_UseIcon();
} }
cg.drawingHUD = CG_HUD_NORMAL;
CG_SaberClashFlare(); CG_SaberClashFlare();
cg.drawingHUD = CG_HUD_SCALED;
float y = 0; float y = 0;
if (cg_drawSnapshot.integer) { if (cg_drawSnapshot.integer) {

View file

@ -297,6 +297,7 @@ typedef struct {
#define CG_HUD_NORMAL 0x00 #define CG_HUD_NORMAL 0x00
#define CG_HUD_SCALED 0x01 #define CG_HUD_SCALED 0x01
#define CG_HUD_ZOOM 0x02 #define CG_HUD_ZOOM 0x02
#define CG_HUD_OTHER 0x03
typedef struct { typedef struct {
//NOTE: these probably get cleared in save/load!!! //NOTE: these probably get cleared in save/load!!!

View file

@ -1463,7 +1463,6 @@ static void CG_RegisterGraphics( void ) {
cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" ); cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" );
cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" ); cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" );
cgs.media.iconExit = cgi_R_RegisterShaderNoMip( "gfx/icon_exit" );
// FIXME: do these conditionally // FIXME: do these conditionally
cgi_R_RegisterShader( "gfx/2d/workingCamera" ); cgi_R_RegisterShader( "gfx/2d/workingCamera" );

View file

@ -150,7 +150,6 @@ typedef struct {
qhandle_t iconSave; qhandle_t iconSave;
qhandle_t iconLoad; qhandle_t iconLoad;
qhandle_t iconExit;
//Chunks //Chunks
qhandle_t chunkModels[NUM_CHUNK_TYPES][4]; qhandle_t chunkModels[NUM_CHUNK_TYPES][4];

View file

@ -2954,12 +2954,10 @@ void CG_ItemSelectorSelect_f( void )
} }
else if (cg.itemSelectorType == ST_QUICK_MENU) { else if (cg.itemSelectorType == ST_QUICK_MENU) {
if (cg.itemSelectorSelection == 0) { if (cg.itemSelectorSelection == 0) {
cgi_SendConsoleCommand("togglemenu\n"); cgi_SendConsoleCommand("save quick\n");
} else if (cg.itemSelectorSelection == 1) {
cgi_SendConsoleCommand("save quik*\n");
CG_CenterPrint("Quick Saved", 240); CG_CenterPrint("Quick Saved", 240);
} else { } else {
cgi_SendConsoleCommand("load quik\n"); cgi_SendConsoleCommand("load quick\n");
} }
} }
@ -3123,7 +3121,7 @@ void CG_DrawItemSelector( void )
sRGB[2] = 1.0f; sRGB[2] = 1.0f;
break; break;
case ST_QUICK_MENU: case ST_QUICK_MENU:
count = 3; count = 2;
sRGB[0] = 1.0f; sRGB[0] = 1.0f;
sRGB[1] = 1.0f; sRGB[1] = 1.0f;
sRGB[2] = 1.0f; sRGB[2] = 1.0f;
@ -3342,18 +3340,7 @@ void CG_DrawItemSelector( void )
sprite.customShader = force_icons[showPowers[itemId]]; sprite.customShader = force_icons[showPowers[itemId]];
break; break;
case ST_QUICK_MENU: case ST_QUICK_MENU:
switch (itemId) sprite.customShader = itemId == 0 ? cgs.media.iconSave : cgs.media.iconLoad;
{
case 0:
sprite.customShader = cgs.media.iconExit;
break;
case 1:
sprite.customShader = cgs.media.iconSave;
break;
case 2:
sprite.customShader = cgs.media.iconLoad;
break;
}
break; break;
} }

View file

@ -804,8 +804,10 @@ void BG_CalculateVRSaberPosition( int saberNum, vec3_t origin, vec3_t angles )
//Move position down a bit //Move position down a bit
vec3_t axis[3]; vec3_t axis[3];
AnglesToAxis(angles, axis); AnglesToAxis(angles, axis);
//The "forward" axis will be adjusted //Small adjustments to make saber align better
VectorMA(origin, -3.0f, axis[0], origin); VectorMA(origin, -3.0f, axis[0], origin);
VectorMA(origin, -0.5f, axis[1], origin);
VectorMA(origin, 1.2f, axis[2], origin);
} }
bool BG_UseVRPosition( gentity_t *ent ) bool BG_UseVRPosition( gentity_t *ent )

View file

@ -23,7 +23,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
// Current version of the single player game // Current version of the single player game
#include "../win32/AutoVersion.h" #include "../win32/AutoVersion.h"
#define JKXR_VERSION "1.1.18-ea" #define JKXR_VERSION "1.1.19-ea"
#ifdef _DEBUG #ifdef _DEBUG
#define Q3_VERSION "(debug)OpenJK: v" VERSION_STRING_DOTTED " JKXR: " JKXR_VERSION #define Q3_VERSION "(debug)OpenJK: v" VERSION_STRING_DOTTED " JKXR: " JKXR_VERSION

View file

@ -2729,6 +2729,45 @@ static void CG_Draw2D( void )
CG_DrawZoomBorders(); CG_DrawZoomBorders();
} }
if (cg.zoomMode)
{
cg.drawingHUD = CG_HUD_NORMAL;
const auto xOffset = (-vr->off_center_fov_x * 640);
const auto yOffset = (vr->off_center_fov_y * 480);
vec4_t color = { 0, 0, 0, 1 };
if (cg.stereoView == STEREO_LEFT)
{
//Left Gap
CG_FillRect(0, 0, xOffset, 480, color);
if (yOffset < 0)
{
//Bottom Gap
CG_FillRect(0, 0, 640, yOffset, color);
}
else
{
//Top Gap
CG_FillRect(0, 480 - yOffset, 640, yOffset, color);
}
}
else
{
//Right Gap
CG_FillRect(640 - xOffset, 0, xOffset, 480, color);
if (yOffset < 0)
{
//Bottom Gap
CG_FillRect(0, 0, 640, yOffset, color);
}
else
{
//Top Gap
CG_FillRect(0, 480 - yOffset, 640, yOffset, color);
}
}
}
cg.drawingHUD = CG_HUD_SCALED; cg.drawingHUD = CG_HUD_SCALED;
CG_DrawBatteryCharge(); CG_DrawBatteryCharge();
@ -2802,7 +2841,10 @@ static void CG_Draw2D( void )
CG_UseIcon(); CG_UseIcon();
} }
cg.drawingHUD = CG_HUD_NORMAL;
CG_SaberClashFlare(); CG_SaberClashFlare();
cg.drawingHUD = CG_HUD_SCALED;
float y = 0; float y = 0;
if (cg_drawSnapshot.integer) { if (cg_drawSnapshot.integer) {

View file

@ -1336,7 +1336,6 @@ static void CG_RegisterGraphics( void ) {
cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" ); cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" );
cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" ); cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" );
cgs.media.iconExit = cgi_R_RegisterShaderNoMip( "gfx/icon_exit" );
// FIXME: do these conditionally // FIXME: do these conditionally

View file

@ -107,7 +107,6 @@ typedef struct {
qhandle_t iconSave; qhandle_t iconSave;
qhandle_t iconLoad; qhandle_t iconLoad;
qhandle_t iconExit;
int currentDataPadIconBackground; int currentDataPadIconBackground;

View file

@ -2777,8 +2777,6 @@ void CG_ItemSelectorSelect_f( void )
} }
else if (cg.itemSelectorType == ST_QUICK_MENU) { else if (cg.itemSelectorType == ST_QUICK_MENU) {
if (cg.itemSelectorSelection == 0) { if (cg.itemSelectorSelection == 0) {
cgi_SendConsoleCommand("togglemenu\n");
} else if (cg.itemSelectorSelection == 1) {
cgi_SendConsoleCommand("save quik*\n"); cgi_SendConsoleCommand("save quik*\n");
CG_CenterPrint("Quick Saved", 240); CG_CenterPrint("Quick Saved", 240);
} else { } else {
@ -2941,7 +2939,7 @@ void CG_DrawItemSelector( void )
sRGB[2] = 1.0f; sRGB[2] = 1.0f;
break; break;
case ST_QUICK_MENU: case ST_QUICK_MENU:
count = 3; count = 2;
sRGB[0] = 1.0f; sRGB[0] = 1.0f;
sRGB[1] = 1.0f; sRGB[1] = 1.0f;
sRGB[2] = 1.0f; sRGB[2] = 1.0f;
@ -3158,18 +3156,7 @@ void CG_DrawItemSelector( void )
sprite.customShader = force_icons[showPowers[itemId]]; sprite.customShader = force_icons[showPowers[itemId]];
break; break;
case ST_QUICK_MENU: case ST_QUICK_MENU:
switch (itemId) sprite.customShader = itemId == 0 ? cgs.media.iconSave : cgs.media.iconLoad;
{
case 0:
sprite.customShader = cgs.media.iconExit;
break;
case 1:
sprite.customShader = cgs.media.iconSave;
break;
case 2:
sprite.customShader = cgs.media.iconLoad;
break;
}
break; break;
} }

View file

@ -1,9 +1,9 @@
cd assets cd assets
del z_vr_assets.pk3 del z_vr_assets_jka.pk3
cd .. cd ..
powershell Compress-Archive z_vr_assets/* z_vr_assets.zip powershell Compress-Archive z_vr_assets_jka/* z_vr_assets_jka.zip
rename z_vr_assets.zip z_vr_assets.pk3 rename z_vr_assets_jka.zip z_vr_assets_jka.pk3
move z_vr_assets.pk3 assets/ move z_vr_assets_jka.pk3 assets/
cd assets cd assets
del z_vr_assets_jka.pk3 del z_vr_assets_jka.pk3
@ -12,4 +12,11 @@ powershell Compress-Archive z_vr_assets_jka/* z_vr_assets_jka.zip
rename z_vr_assets_jka.zip z_vr_assets_jka.pk3 rename z_vr_assets_jka.zip z_vr_assets_jka.pk3
move z_vr_assets_jka.pk3 assets/ move z_vr_assets_jka.pk3 assets/
cd assets
del z_vr_assets_base.pk3
cd ..
powershell Compress-Archive z_vr_assets_base/* z_vr_assets_base.zip
rename z_vr_assets_base.zip z_vr_assets_base.pk3
move z_vr_assets_base.pk3 assets/
pause pause

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View file

@ -1,24 +1,24 @@
// Weapon offsets - This is the default for the weapon models // Weapon offsets for JKXR: ACADEMY - This is the default for the weapon models
// put the weapon id at the end of the cvar name, so the knife is vr_weapon_adjustment_1 // put the weapon id at the end of the cvar name.
// Values are: scale,right,up,forward,pitch,yaw,roll // Values are: scale,right,up,forward,pitch,yaw,roll
// Use "seta vr_control_scheme 99" to activate the in-game tool.
seta vr_weapon_adjustment_1 "0.55,-4.89,8.12,-12.36,-28.60,10.80,-199.50" seta vr_weapon_adjustment_1 "0.55,-4.89,8.12,-12.36,-28.60,10.80,-199.50"
seta vr_weapon_adjustment_2 "1.000,-3.840,8.320,-13.680,0.000,0.000,0.000" seta vr_weapon_adjustment_10 "1.590,-3.749,5.990,-8.266,0.000,0.000,0.000"
seta vr_weapon_adjustment_10 "1.840,-3.489,6.370,-7.946,0.000,0.000,0.000"
seta vr_weapon_adjustment_11 "1.755,-5.140,4.980,-10.462,18.700,1.000,-11.000" seta vr_weapon_adjustment_11 "1.755,-5.140,4.980,-10.462,18.700,1.000,-11.000"
seta vr_weapon_adjustment_12 "1.840,-3.087,4.424,-8.750,22.400,0.000,-21.400" seta vr_weapon_adjustment_12 "-1.425,-1.900,4.100,-9.320,-164.401,-15.500,73.499"
seta vr_weapon_adjustment_13 "1.000,-3.980,7.680,-10.020,0.000,0.000,0.000" seta vr_weapon_adjustment_13 "1.000,-3.980,7.680,-11.200,0.000,0.000,-1.800"
seta vr_weapon_adjustment_14 "0.52,-12.87,13.29,-22.09,11.30,26.60,-3.40" seta vr_weapon_adjustment_14 "0.52,-12.87,13.29,-22.09,11.30,26.60,-3.40"
seta vr_weapon_adjustment_17 "1.000,-6.860,12.340,-4.600,-49.700,0.000,0.000"
seta vr_weapon_adjustment_18 "0.510,-8.235,10.706,-3.922,-5.600,0.400,0.000" seta vr_weapon_adjustment_18 "0.510,-8.235,10.706,-3.922,-5.600,0.400,0.000"
seta vr_weapon_adjustment_19 "0.43,-8.97,13.22,-21.68,-4.80,-4.50,-0.40" seta vr_weapon_adjustment_19 "0.43,-8.97,13.22,-21.68,-4.80,-4.50,-0.40"
seta vr_weapon_adjustment_2 "1.000,-3.920,8.480,-14.100,0.000,0.000,0.000"
seta vr_weapon_adjustment_20 "0.44,-13.55,12.79,-26.06,0.30,-1.40,-0.40" seta vr_weapon_adjustment_20 "0.44,-13.55,12.79,-26.06,0.30,-1.40,-0.40"
seta vr_weapon_adjustment_22 "0.64,-12.59,12.94,-20.44,11.30,26.60,-3.40" seta vr_weapon_adjustment_22 "0.64,-12.59,12.94,-20.44,11.30,26.60,-3.40"
seta vr_weapon_adjustment_3 "0.906,-4.194,8.234,-9.801,0.000,0.000,0.000" seta vr_weapon_adjustment_3 "0.741,-4.134,7.474,-12.141,0.000,-1.200,0.000"
seta vr_weapon_adjustment_4 "0.928,-4.095,9.116,-3.707,0.000,0.000,0.000" seta vr_weapon_adjustment_4 "0.813,-3.835,8.496,-4.027,0.600,-0.200,0.000"
seta vr_weapon_adjustment_5 "1.642,-2.826,6.249,-8.429,0.000,0.000,0.000" seta vr_weapon_adjustment_5 "1.417,-3.246,6.909,-7.329,0.000,0.000,0.000"
seta vr_weapon_adjustment_6 "0.652,-3.344,13.988,-7.730,0.000,0.000,0.000" seta vr_weapon_adjustment_6 "0.557,-3.864,12.468,-8.670,0.000,0.000,0.000"
seta vr_weapon_adjustment_7 "0.998,-4.349,6.473,-10.160,0.000,0.000,0.000" seta vr_weapon_adjustment_7 "0.888,-4.729,7.873,-10.240,0.000,0.000,0.000"
seta vr_weapon_adjustment_8 "1.006,-4.553,11.571,-12.545,0.000,0.000,0.000" seta vr_weapon_adjustment_8 "0.796,-4.553,12.111,-14.905,0.000,0.000,0.000"
seta vr_weapon_adjustment_9 "1.456,-3.695,6.676,-3.420,0.000,0.000,0.000" seta vr_weapon_adjustment_9 "1.151,-3.615,5.416,-3.820,0.000,0.000,0.000"