diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_draw.cpp b/Projects/Android/jni/OpenJK/code/cgame/cg_draw.cpp
index f6c589a..5befa7a 100644
--- a/Projects/Android/jni/OpenJK/code/cgame/cg_draw.cpp
+++ b/Projects/Android/jni/OpenJK/code/cgame/cg_draw.cpp
@@ -29,11 +29,14 @@ along with this program; if not, see .
#include "cg_media.h"
#include "../game/objectives.h"
#include "../game/g_vehicles.h"
+#include
extern vmCvar_t cg_debugHealthBars;
extern Vehicle_t *G_IsRidingVehicle( gentity_t *ent );
+extern vr_client_info_t *vr;
+
void CG_DrawIconBackground(void);
void CG_DrawMissionInformation( void );
void CG_DrawInventorySelect( void );
@@ -4247,21 +4250,24 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
VectorNormalize( vright_n );
VectorNormalize( vup_n );
+ cg.refdef.stereoView = stereoView;
switch ( stereoView ) {
case STEREO_CENTER:
separation = 0;
break;
case STEREO_LEFT:
- separation = -cg_stereoSeparation.value / 2;
+ separation = cg_worldScale.value * (-cg_stereoSeparation.value / 2);
break;
case STEREO_RIGHT:
- separation = cg_stereoSeparation.value / 2;
+ separation = cg_worldScale.value * (cg_stereoSeparation.value / 2);
break;
default:
separation = 0;
CG_Error( "CG_DrawActive: Undefined stereoView" );
}
+ cg.refdef.worldscale = cg_worldScale.value;
+ VectorCopy(cg.refdefViewAngles, cg.refdef.viewangles);
// clear around the rendered view if sized down
CG_TileClear();
@@ -4277,6 +4283,10 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
cgi_R_LAGoggles();
}
+ //Vertical Positional Movement
+ cg.refdef.vieworg[2] -= 64;
+ cg.refdef.vieworg[2] += (vr->hmdposition[1] + cg_heightAdjust.value) * cg_worldScale.value;
+
if ( (cg.snap->ps.forcePowersActive&(1<.
#include "../qcommon/sstring.h"
#include "qcommon/ojk_saved_game_helper.h"
+#include
+
//NOTENOTE: Be sure to change the mirrored code in g_shared.h
typedef std::map< sstring_t, unsigned char > namePrecache_m;
extern namePrecache_m *as_preCacheMap;
@@ -86,6 +88,8 @@ const char *inv_names[] =
int force_icons[NUM_FORCE_POWERS];
+extern vr_client_info_t *vr;
+
void CG_DrawDataPadHUD( centity_t *cent );
void CG_DrawDataPadObjectives(const centity_t *cent );
@@ -105,8 +109,10 @@ extern "C" Q_EXPORT intptr_t QDECL vmMain( intptr_t command, intptr_t arg0, intp
centity_t *cent;
switch ( command ) {
- case CG_INIT:
- CG_Init( arg0 );
+ case CG_INIT: {
+ vr = (vr_client_info_t *) (arg1);
+ CG_Init(arg0);
+ }
return 0;
case CG_SHUTDOWN:
CG_Shutdown();
@@ -227,6 +233,8 @@ int cg_numpermanents = 0;
weaponInfo_t cg_weapons[MAX_WEAPONS];
itemInfo_t cg_items[MAX_ITEMS];
+vr_client_info_t *vr;
+
typedef struct {
qboolean registered; // Has the player picked it up
qboolean active; // Is it the chosen inventory item
@@ -306,6 +314,8 @@ vmCvar_t cg_thirdPersonAutoAlpha;
vmCvar_t cg_thirdPersonHorzOffset;
vmCvar_t cg_stereoSeparation;
+vmCvar_t cg_worldScale;
+vmCvar_t cg_heightAdjust;
vmCvar_t cg_developer;
vmCvar_t cg_timescale;
vmCvar_t cg_skippingcin;
@@ -353,7 +363,9 @@ static cvarTable_t cvarTable[] = {
{ &cg_drawGun, "cg_drawGun", "1", CVAR_ARCHIVE },
{ &cg_fov, "cg_fov", "80", CVAR_ARCHIVE },
{ &cg_fovAspectAdjust, "cg_fovAspectAdjust", "0", CVAR_ARCHIVE },
- { &cg_stereoSeparation, "cg_stereoSeparation", "0.4", CVAR_ARCHIVE },
+ { &cg_stereoSeparation, "cg_stereoSeparation", "0.065", CVAR_ARCHIVE },
+ { &cg_worldScale, "cg_worldScale", "37.5", CVAR_ARCHIVE },
+ { &cg_heightAdjust, "cg_heightAdjust", "0.0", CVAR_ARCHIVE },
{ &cg_shadows, "cg_shadows", "1", CVAR_ARCHIVE },
{ &cg_renderToTextureFX, "cg_renderToTextureFX", "1", CVAR_ARCHIVE },
{ &cg_shadowCullDistance, "r_shadowRange", "1000", CVAR_ARCHIVE },
@@ -367,7 +379,7 @@ static cvarTable_t cvarTable[] = {
{ &cg_drawFPS, "cg_drawFPS", "0", CVAR_ARCHIVE },
{ &cg_drawSnapshot, "cg_drawSnapshot", "0", CVAR_ARCHIVE },
{ &cg_drawAmmoWarning, "cg_drawAmmoWarning", "1", CVAR_ARCHIVE },
- { &cg_drawCrosshair, "cg_drawCrosshair", "1", CVAR_ARCHIVE },
+ { &cg_drawCrosshair, "cg_drawCrosshair", "0", CVAR_ARCHIVE },
{ &cg_dynamicCrosshair, "cg_dynamicCrosshair", "1", CVAR_ARCHIVE },
// NOTE : I also create this in UI_Init()
{ &cg_crosshairIdentifyTarget, "cg_crosshairIdentifyTarget", "1", CVAR_ARCHIVE },
diff --git a/Projects/Android/jni/OpenJK/code/cgame/cg_view.cpp b/Projects/Android/jni/OpenJK/code/cgame/cg_view.cpp
index 3523e64..88b6b0d 100644
--- a/Projects/Android/jni/OpenJK/code/cgame/cg_view.cpp
+++ b/Projects/Android/jni/OpenJK/code/cgame/cg_view.cpp
@@ -31,12 +31,16 @@ along with this program; if not, see .
#include "FxScheduler.h"
#include "../game/wp_saber.h"
#include "../game/g_vehicles.h"
+#include
#define MASK_CAMERACLIP (MASK_SOLID)
#define CAMERA_SIZE 4
float cg_zoomFov;
+extern vr_client_info_t *vr;
+
+
//#define CG_CAM_ABOVE 2
extern qboolean CG_OnMovingPlat( playerState_t *ps );
extern Vehicle_t *G_IsRidingVehicle( gentity_t *ent );
@@ -1362,7 +1366,8 @@ static qboolean CG_CalcFov( void ) {
if ( &g_entities[cg.snap->ps.viewEntity] &&
g_entities[cg.snap->ps.viewEntity].NPC )
{//FIXME: looks bad when take over a jedi... but never really do that, do we?
- fov_x = g_entities[cg.snap->ps.viewEntity].NPC->stats.hfov;
+ //fov_x = g_entities[cg.snap->ps.viewEntity].NPC->stats.hfov;
+ fov_x = vr ? vr->fov : 90.0f;
//sanity-cap?
if ( fov_x > 120 )
{
@@ -1381,14 +1386,17 @@ static qboolean CG_CalcFov( void ) {
}
else
{
- fov_x = 120;//FIXME: read from the NPC's fov stats?
+ //fov_x = 120;//FIXME: read from the NPC's fov stats?
+ fov_x = vr ? vr->fov : 90.0f;
}
}
}
else if ( (!cg.zoomMode || cg.zoomMode > 2) && (cg.snap->ps.forcePowersActive&(1<client->ps.forcePowerDuration[FP_SPEED] )//cg.renderingThirdPerson &&
{
- fov_x = CG_ForceSpeedFOV();
+ //fov_x = CG_ForceSpeedFOV();
+ fov_x = vr ? vr->fov : 90.0f;
} else {
+ /*
// user selectable
if ( cg.overrides.active & CG_OVERRIDE_FOV )
{
@@ -1402,7 +1410,9 @@ static qboolean CG_CalcFov( void ) {
fov_x = 1;
} else if ( fov_x > 160 ) {
fov_x = 160;
- }
+ }*/
+
+ fov_x = vr ? vr->fov : 90.0f;
// Disable zooming when in third person
if ( cg.zoomMode && cg.zoomMode < 3 )//&& !cg.renderingThirdPerson ) // light amp goggles do none of the zoom silliness
diff --git a/Projects/Android/jni/OpenJK/code/client/cl_cgame.cpp b/Projects/Android/jni/OpenJK/code/client/cl_cgame.cpp
index 70b6534..93e64ae 100644
--- a/Projects/Android/jni/OpenJK/code/client/cl_cgame.cpp
+++ b/Projects/Android/jni/OpenJK/code/client/cl_cgame.cpp
@@ -25,6 +25,7 @@ along with this program; if not, see .
// leave this as first line for PCH reasons...
//
+#include
#include "../server/exe_headers.h"
#include "../ui/ui_shared.h"
@@ -1404,7 +1405,7 @@ void CL_InitCGame( void ) {
cls.state = CA_LOADING;
// init for this gamestate
- VM_Call( CG_INIT, clc.serverCommandSequence );
+ VM_Call( CG_INIT, clc.serverCommandSequence, (intptr_t)&vr );
// reset any CVAR_CHEAT cvars registered by cgame
if ( !cl_connectedToCheatServer )
diff --git a/Projects/Android/jni/OpenJK/code/rd-common/tr_types.h b/Projects/Android/jni/OpenJK/code/rd-common/tr_types.h
index a802f6f..7ec96f8 100644
--- a/Projects/Android/jni/OpenJK/code/rd-common/tr_types.h
+++ b/Projects/Android/jni/OpenJK/code/rd-common/tr_types.h
@@ -182,12 +182,21 @@ Ghoul2 Insert End
#define MAX_RENDER_STRINGS 8
#define MAX_RENDER_STRING_LENGTH 32
+
+typedef enum {
+ STEREO_CENTER,
+ STEREO_LEFT,
+ STEREO_RIGHT
+} stereoFrame_t;
+
+
typedef struct {
int x, y, width, height;
float fov_x, fov_y;
vec3_t vieworg;
vec3_t viewaxis[3]; // transformation matrix
int viewContents; // world contents at vieworg
+ vec3_t viewangles;
// time in milliseconds for shader effects and other time dependent rendering issues
int time;
@@ -199,15 +208,11 @@ typedef struct {
// text messages for deform text shaders
// char text[MAX_RENDER_STRINGS][MAX_RENDER_STRING_LENGTH];
+ stereoFrame_t stereoView;
+ float worldscale;
} refdef_t;
-typedef enum {
- STEREO_CENTER,
- STEREO_LEFT,
- STEREO_RIGHT
-} stereoFrame_t;
-
/*
** glconfig_t