Merge branch 'main' into contributions
|
@ -2,7 +2,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.drbeef.jkxr"
|
||||
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. -->
|
||||
<uses-feature android:glEsVersion="0x00030002" android:required="true"/>
|
||||
|
|
|
@ -18,6 +18,7 @@ extern cvar_t *vr_force_motion_controlled;
|
|||
extern cvar_t *vr_force_motion_push;
|
||||
extern cvar_t *vr_force_motion_pull;
|
||||
extern cvar_t *vr_motion_enable_saber;
|
||||
extern cvar_t *vr_always_run;
|
||||
extern cvar_t *vr_crouch_toggle;
|
||||
extern cvar_t *vr_irl_crouch_enabled;
|
||||
extern cvar_t *vr_irl_crouch_to_stand_ratio;
|
||||
|
|
|
@ -31,6 +31,7 @@ cvar_t *vr_force_motion_controlled;
|
|||
cvar_t *vr_force_motion_push;
|
||||
cvar_t *vr_force_motion_pull;
|
||||
cvar_t *vr_motion_enable_saber;
|
||||
cvar_t * vr_always_run;
|
||||
cvar_t *vr_crouch_toggle;
|
||||
cvar_t *vr_irl_crouch_enabled;
|
||||
cvar_t *vr_irl_crouch_to_stand_ratio;
|
||||
|
|
|
@ -121,6 +121,14 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
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
|
||||
{
|
||||
vec3_t rotation = {0};
|
||||
|
@ -212,6 +220,28 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
static float menuYaw = 0;
|
||||
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;
|
||||
if (controlsLeftHanded == vr.menu_right_handed) {
|
||||
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())
|
||||
{
|
||||
// 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
|
||||
static bool changed = false;
|
||||
|
@ -852,18 +892,34 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
vec2_t v;
|
||||
rotateAboutOrigin(x, y, controllerYawHeading, v);
|
||||
|
||||
//Move a lot slower if scope is engaged
|
||||
remote_movementSideways =
|
||||
v[0] * (vr.move_speed == 0 ? 0.75f : (vr.move_speed == 1 ? 1.0f : 0.5f));
|
||||
remote_movementForward =
|
||||
v[1] * (vr.move_speed == 0 ? 0.75f : (vr.move_speed == 1 ? 1.0f : 0.5f));
|
||||
float move_speed_multiplier = 1.0f;
|
||||
switch (vr.move_speed)
|
||||
{
|
||||
case 0:
|
||||
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) !=
|
||||
(secondaryButtonsOld & secondaryButton1)) &&
|
||||
(secondaryButtonsNew & secondaryButton1)) {
|
||||
//Toggle walk/run somehow?!
|
||||
vr.move_speed = (++vr.move_speed) % 3;
|
||||
//X button invokes menu now
|
||||
if ((secondaryButtonsNew & secondaryButton1) &&
|
||||
!(secondaryButtonsOld & secondaryButton1))
|
||||
{
|
||||
Sys_QueEvent(0, SE_KEY, A_ESCAPE, true, 0, NULL);
|
||||
}
|
||||
|
||||
//Open the datapad
|
||||
|
|
|
@ -59,6 +59,7 @@ bool VR_UseScreenLayer()
|
|||
(bool)((vr.cin_camera && !vr.immersive_cinematics) ||
|
||||
vr.misc_camera ||
|
||||
(CL_IsRunningInGameCinematic() || CL_InGameCinematicOnStandBy()) ||
|
||||
(cls.state == CA_DISCONNECTED) ||
|
||||
(cls.state == CA_CINEMATIC) ||
|
||||
(cls.state == CA_LOADING) ||
|
||||
( 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)
|
||||
{
|
||||
*forward = 0.0f;
|
||||
*forward = remote_movementForward / 3.0f;
|
||||
*pos_forward = 0.0f;
|
||||
*up = 0.0f;
|
||||
*side = 0.0f;
|
||||
*side = remote_movementSideways / 3.0f;
|
||||
*pos_side = 0.0f;
|
||||
*yaw = vr.snapTurn;
|
||||
*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_pull = Cvar_Get ("vr_force_motion_pull", "4", 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_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);
|
||||
|
|
|
@ -1930,8 +1930,8 @@ void TBXR_submitFrame()
|
|||
TBXR_updateProjections();
|
||||
|
||||
//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_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleUp)) * 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.angleDown)) * 180.0f / M_PI;
|
||||
|
||||
|
||||
XrFrameEndInfo endFrameInfo = {};
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
*forward = 0.0f;
|
||||
*forward = remote_movementForward / 3.0f;
|
||||
*pos_forward = 0.0f;
|
||||
*up = 0.0f;
|
||||
*side = 0.0f;
|
||||
*side = remote_movementSideways / 3.0f;
|
||||
*pos_side = 0.0f;
|
||||
*yaw = vr.snapTurn;
|
||||
*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_pull = Cvar_Get ("vr_force_motion_pull", "4", 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_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);
|
||||
|
|
|
@ -222,7 +222,7 @@ void ovrFramebuffer_Resolve(ovrFramebuffer* frameBuffer) {
|
|||
int width, height;
|
||||
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);
|
||||
glBlitFramebuffer(0, 0, gAppState.Width, gAppState.Height,
|
||||
0, 0, width, height,
|
||||
|
@ -1151,8 +1151,8 @@ void TBXR_submitFrame()
|
|||
TBXR_updateProjections();
|
||||
|
||||
//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_y = (fabs(gAppState.Views[0].fov.angleUp) + fabs(gAppState.Views[0].fov.angleUp)) * 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.angleDown)) * 180.0f / M_PI;
|
||||
|
||||
|
||||
XrFrameEndInfo endFrameInfo = {};
|
||||
|
|
|
@ -4117,15 +4117,24 @@ CG_DrawVignette
|
|||
float currentComfortVignetteValue = 0.0f;
|
||||
float filteredViewYawDelta = 0.0f;
|
||||
|
||||
static void CG_DrawVignette( void )
|
||||
static void CG_DrawVignette( bool force )
|
||||
{
|
||||
playerState_t *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
|
||||
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;
|
||||
|
@ -4144,17 +4153,17 @@ static void CG_DrawVignette( void )
|
|||
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)
|
||||
currentComfortVignetteValue = 1.0f;
|
||||
}
|
||||
} else{
|
||||
if (currentComfortVignetteValue > 0.0f)
|
||||
currentComfortVignetteValue -= vr_comfort_vignette->value * 0.05;
|
||||
currentComfortVignetteValue -= vignetteValue * 0.05;
|
||||
}
|
||||
|
||||
if (currentComfortVignetteValue > 0.0f && currentComfortVignetteValue <= 1.0f)
|
||||
|
@ -4295,8 +4304,9 @@ static void CG_Draw2D( void )
|
|||
if ( (cg.snap->ps.forcePowersActive&(1<<FP_SEE)) )
|
||||
{//force sight is on
|
||||
//indicate this with sight cone thingy
|
||||
cg.drawingHUD = CG_HUD_NORMAL;
|
||||
CG_DrawPic( 35, 50, 570, 400, cgi_R_RegisterShader( "gfx/2d/jsense" ));
|
||||
cg.drawingHUD = CG_HUD_OTHER;
|
||||
CG_DrawVignette(true);
|
||||
CG_DrawPic( 50, 40, 540, 400, cgi_R_RegisterShader( "gfx/2d/jsense" ));
|
||||
cg.drawingHUD = CG_HUD_SCALED;
|
||||
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
|
||||
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
|
||||
{
|
||||
|
@ -4345,7 +4395,10 @@ static void CG_Draw2D( void )
|
|||
|
||||
CG_UseIcon();
|
||||
}
|
||||
|
||||
cg.drawingHUD = CG_HUD_NORMAL;
|
||||
CG_SaberClashFlare();
|
||||
cg.drawingHUD = CG_HUD_SCALED;
|
||||
|
||||
float y = 0;
|
||||
if (cg_drawSnapshot.integer) {
|
||||
|
|
|
@ -297,6 +297,7 @@ typedef struct {
|
|||
#define CG_HUD_NORMAL 0x00
|
||||
#define CG_HUD_SCALED 0x01
|
||||
#define CG_HUD_ZOOM 0x02
|
||||
#define CG_HUD_OTHER 0x03
|
||||
|
||||
typedef struct {
|
||||
//NOTE: these probably get cleared in save/load!!!
|
||||
|
|
|
@ -1463,7 +1463,6 @@ static void CG_RegisterGraphics( void ) {
|
|||
|
||||
cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" );
|
||||
cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" );
|
||||
cgs.media.iconExit = cgi_R_RegisterShaderNoMip( "gfx/icon_exit" );
|
||||
|
||||
// FIXME: do these conditionally
|
||||
cgi_R_RegisterShader( "gfx/2d/workingCamera" );
|
||||
|
|
|
@ -150,7 +150,6 @@ typedef struct {
|
|||
|
||||
qhandle_t iconSave;
|
||||
qhandle_t iconLoad;
|
||||
qhandle_t iconExit;
|
||||
|
||||
//Chunks
|
||||
qhandle_t chunkModels[NUM_CHUNK_TYPES][4];
|
||||
|
|
|
@ -2954,12 +2954,10 @@ void CG_ItemSelectorSelect_f( void )
|
|||
}
|
||||
else if (cg.itemSelectorType == ST_QUICK_MENU) {
|
||||
if (cg.itemSelectorSelection == 0) {
|
||||
cgi_SendConsoleCommand("togglemenu\n");
|
||||
} else if (cg.itemSelectorSelection == 1) {
|
||||
cgi_SendConsoleCommand("save quik*\n");
|
||||
cgi_SendConsoleCommand("save quick\n");
|
||||
CG_CenterPrint("Quick Saved", 240);
|
||||
} else {
|
||||
cgi_SendConsoleCommand("load quik\n");
|
||||
cgi_SendConsoleCommand("load quick\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3123,7 +3121,7 @@ void CG_DrawItemSelector( void )
|
|||
sRGB[2] = 1.0f;
|
||||
break;
|
||||
case ST_QUICK_MENU:
|
||||
count = 3;
|
||||
count = 2;
|
||||
sRGB[0] = 1.0f;
|
||||
sRGB[1] = 1.0f;
|
||||
sRGB[2] = 1.0f;
|
||||
|
@ -3342,18 +3340,7 @@ void CG_DrawItemSelector( void )
|
|||
sprite.customShader = force_icons[showPowers[itemId]];
|
||||
break;
|
||||
case ST_QUICK_MENU:
|
||||
switch (itemId)
|
||||
{
|
||||
case 0:
|
||||
sprite.customShader = cgs.media.iconExit;
|
||||
break;
|
||||
case 1:
|
||||
sprite.customShader = cgs.media.iconSave;
|
||||
break;
|
||||
case 2:
|
||||
sprite.customShader = cgs.media.iconLoad;
|
||||
break;
|
||||
}
|
||||
sprite.customShader = itemId == 0 ? cgs.media.iconSave : cgs.media.iconLoad;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -804,8 +804,10 @@ void BG_CalculateVRSaberPosition( int saberNum, vec3_t origin, vec3_t angles )
|
|||
//Move position down a bit
|
||||
vec3_t axis[3];
|
||||
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, -0.5f, axis[1], origin);
|
||||
VectorMA(origin, 1.2f, axis[2], origin);
|
||||
}
|
||||
|
||||
bool BG_UseVRPosition( gentity_t *ent )
|
||||
|
|
|
@ -23,7 +23,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
// Current version of the single player game
|
||||
#include "../win32/AutoVersion.h"
|
||||
|
||||
#define JKXR_VERSION "1.1.18-ea"
|
||||
#define JKXR_VERSION "1.1.19-ea"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define Q3_VERSION "(debug)OpenJK: v" VERSION_STRING_DOTTED " JKXR: " JKXR_VERSION
|
||||
|
|
|
@ -2729,6 +2729,45 @@ static void CG_Draw2D( void )
|
|||
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_DrawBatteryCharge();
|
||||
|
@ -2802,7 +2841,10 @@ static void CG_Draw2D( void )
|
|||
|
||||
CG_UseIcon();
|
||||
}
|
||||
|
||||
cg.drawingHUD = CG_HUD_NORMAL;
|
||||
CG_SaberClashFlare();
|
||||
cg.drawingHUD = CG_HUD_SCALED;
|
||||
|
||||
float y = 0;
|
||||
if (cg_drawSnapshot.integer) {
|
||||
|
|
|
@ -1336,7 +1336,6 @@ static void CG_RegisterGraphics( void ) {
|
|||
|
||||
cgs.media.iconSave = cgi_R_RegisterShaderNoMip( "gfx/icon_save" );
|
||||
cgs.media.iconLoad = cgi_R_RegisterShaderNoMip( "gfx/icon_load" );
|
||||
cgs.media.iconExit = cgi_R_RegisterShaderNoMip( "gfx/icon_exit" );
|
||||
|
||||
|
||||
// FIXME: do these conditionally
|
||||
|
|
|
@ -107,7 +107,6 @@ typedef struct {
|
|||
|
||||
qhandle_t iconSave;
|
||||
qhandle_t iconLoad;
|
||||
qhandle_t iconExit;
|
||||
|
||||
int currentDataPadIconBackground;
|
||||
|
||||
|
|
|
@ -2777,8 +2777,6 @@ void CG_ItemSelectorSelect_f( void )
|
|||
}
|
||||
else if (cg.itemSelectorType == ST_QUICK_MENU) {
|
||||
if (cg.itemSelectorSelection == 0) {
|
||||
cgi_SendConsoleCommand("togglemenu\n");
|
||||
} else if (cg.itemSelectorSelection == 1) {
|
||||
cgi_SendConsoleCommand("save quik*\n");
|
||||
CG_CenterPrint("Quick Saved", 240);
|
||||
} else {
|
||||
|
@ -2941,7 +2939,7 @@ void CG_DrawItemSelector( void )
|
|||
sRGB[2] = 1.0f;
|
||||
break;
|
||||
case ST_QUICK_MENU:
|
||||
count = 3;
|
||||
count = 2;
|
||||
sRGB[0] = 1.0f;
|
||||
sRGB[1] = 1.0f;
|
||||
sRGB[2] = 1.0f;
|
||||
|
@ -3158,18 +3156,7 @@ void CG_DrawItemSelector( void )
|
|||
sprite.customShader = force_icons[showPowers[itemId]];
|
||||
break;
|
||||
case ST_QUICK_MENU:
|
||||
switch (itemId)
|
||||
{
|
||||
case 0:
|
||||
sprite.customShader = cgs.media.iconExit;
|
||||
break;
|
||||
case 1:
|
||||
sprite.customShader = cgs.media.iconSave;
|
||||
break;
|
||||
case 2:
|
||||
sprite.customShader = cgs.media.iconLoad;
|
||||
break;
|
||||
}
|
||||
sprite.customShader = itemId == 0 ? cgs.media.iconSave : cgs.media.iconLoad;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
cd assets
|
||||
del z_vr_assets.pk3
|
||||
del z_vr_assets_jka.pk3
|
||||
cd ..
|
||||
powershell Compress-Archive z_vr_assets/* z_vr_assets.zip
|
||||
rename z_vr_assets.zip z_vr_assets.pk3
|
||||
move z_vr_assets.pk3 assets/
|
||||
powershell Compress-Archive z_vr_assets_jka/* z_vr_assets_jka.zip
|
||||
rename z_vr_assets_jka.zip z_vr_assets_jka.pk3
|
||||
move z_vr_assets_jka.pk3 assets/
|
||||
|
||||
cd assets
|
||||
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
|
||||
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
|
||||
|
|
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 6 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 64 KiB |
|
@ -1,24 +1,24 @@
|
|||
|
||||
// Weapon offsets - 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
|
||||
// Weapon offsets for JKXR: ACADEMY - This is the default for the weapon models
|
||||
// put the weapon id at the end of the cvar name.
|
||||
// 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_2 "1.000,-3.840,8.320,-13.680,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_10 "1.590,-3.749,5.990,-8.266,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_12 "1.840,-3.087,4.424,-8.750,22.400,0.000,-21.400"
|
||||
seta vr_weapon_adjustment_13 "1.000,-3.980,7.680,-10.020,0.000,0.000,0.000"
|
||||
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,-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_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_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_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_4 "0.928,-4.095,9.116,-3.707,0.000,0.000,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_6 "0.652,-3.344,13.988,-7.730,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_8 "1.006,-4.553,11.571,-12.545,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_3 "0.741,-4.134,7.474,-12.141,0.000,-1.200,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.417,-3.246,6.909,-7.329,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.888,-4.729,7.873,-10.240,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.151,-3.615,5.416,-3.820,0.000,0.000,0.000"
|