mirror of
https://github.com/DrBeef/JKXR.git
synced 2024-11-24 13:01:36 +00:00
Several changes
- Jedi Outcast now running properly - Added Use to right thumbstick to bypass cutscenes
This commit is contained in:
parent
adfc6da46d
commit
7cc4c4f281
34 changed files with 463 additions and 66 deletions
|
@ -82,4 +82,8 @@ typedef struct {
|
|||
|
||||
} vr_client_info_t;
|
||||
|
||||
#ifndef JKVR_CLIENT
|
||||
extern vr_client_info_t *vr;
|
||||
#endif
|
||||
|
||||
#endif //vr_client_info_h
|
|
@ -8,7 +8,6 @@
|
|||
#include "../qcommon/q_shared.h"
|
||||
#include "../qcommon/qcommon.h"
|
||||
|
||||
|
||||
#include "VrClientInfo.h"
|
||||
|
||||
#define LOG_TAG "JKVR"
|
||||
|
|
|
@ -472,6 +472,13 @@ void HandleInput_Default( ovrInputStateGamepad *pFootTrackingNew, ovrInputStateG
|
|||
sendButtonAction("+movedown", (primaryButtonsNew & primaryButton1));
|
||||
}
|
||||
|
||||
//Use
|
||||
if ((pDominantTrackedRemoteNew->Buttons & ovrButton_RThumb) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_RThumb)) {
|
||||
|
||||
sendButtonAction("+use", (pDominantTrackedRemoteNew->Buttons & ovrButton_RThumb));
|
||||
}
|
||||
|
||||
//Weapon Chooser
|
||||
static bool itemSwitched = false;
|
||||
if (between(-0.2f, pPrimaryJoystick->x, 0.2f) &&
|
||||
|
|
|
@ -9,7 +9,7 @@ LOCAL_MODULE := openjk_ja
|
|||
|
||||
|
||||
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS)
|
||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE
|
||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE -DJKVR_CLIENT
|
||||
|
||||
LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ LOCAL_MODULE := openjk_jo
|
|||
|
||||
|
||||
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS)
|
||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE -DJK2_MODE
|
||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE -DJK2_MODE -DJKVR_CLIENT
|
||||
|
||||
LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := rd-gles_arm
|
||||
|
||||
|
||||
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS) -DHAVE_GLES -DRENDERER -D_JK2EXE -DSP_GAME -Wno-narrowing
|
||||
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS) -DHAVE_GLES -DRENDERER -D_JK2EXE -DJK2_MODE -DSP_GAME -Wno-narrowing
|
||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS)
|
||||
|
||||
LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
||||
|
|
|
@ -42,8 +42,6 @@ void CGCam_DistanceDisable( void );
|
|||
extern qboolean CG_CalcFOVFromX( float fov_x );
|
||||
extern void WP_SaberCatch( gentity_t *self, gentity_t *saber, qboolean switchToSaber );
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
/*
|
||||
TODO:
|
||||
CloseUp, FullShot & Longshot commands:
|
||||
|
|
|
@ -35,8 +35,6 @@ 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 );
|
||||
|
@ -4288,7 +4286,7 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
|
|||
cgi_R_LAGoggles();
|
||||
}
|
||||
|
||||
if (!in_camera) {
|
||||
if (!in_camera || vr->immersive_cinematics) {
|
||||
//Vertical Positional Movement
|
||||
cg.refdef.vieworg[2] -= (float)g_entities[cg.snap->ps.viewEntity].client->ps.viewheight;
|
||||
cg.refdef.vieworg[2] += (vr->hmdposition[1] + cg_heightAdjust.value) * cg_worldScale.value;
|
||||
|
|
|
@ -26,8 +26,6 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "cg_media.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
|
||||
void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
|
||||
if (!vr->in_camera && !vr->using_screen_layer && !vr->scopeengaged)
|
||||
|
|
|
@ -463,9 +463,9 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
|
||||
index = es->eventParm; // player predicted
|
||||
|
||||
if ( (char)index < 0 )
|
||||
if ( index < 0 )
|
||||
{
|
||||
index = -(char)index;
|
||||
index = -index;
|
||||
bHadItem = qtrue;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,8 +88,6 @@ 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 );
|
||||
|
@ -331,6 +329,25 @@ vmCvar_t cg_hudFiles;
|
|||
|
||||
vmCvar_t cg_neverHearThatDumbBeepingSoundAgain;
|
||||
|
||||
vmCvar_t vr_weapon_adjustment_1;
|
||||
vmCvar_t vr_weapon_adjustment_2;
|
||||
vmCvar_t vr_weapon_adjustment_3;
|
||||
vmCvar_t vr_weapon_adjustment_4;
|
||||
vmCvar_t vr_weapon_adjustment_5;
|
||||
vmCvar_t vr_weapon_adjustment_6;
|
||||
vmCvar_t vr_weapon_adjustment_7;
|
||||
vmCvar_t vr_weapon_adjustment_8;
|
||||
vmCvar_t vr_weapon_adjustment_9;
|
||||
vmCvar_t vr_weapon_adjustment_10;
|
||||
vmCvar_t vr_weapon_adjustment_11;
|
||||
vmCvar_t vr_weapon_adjustment_12;
|
||||
vmCvar_t vr_weapon_adjustment_13;
|
||||
vmCvar_t vr_weapon_adjustment_14;
|
||||
vmCvar_t vr_weapon_adjustment_18;
|
||||
vmCvar_t vr_weapon_adjustment_19;
|
||||
vmCvar_t vr_weapon_adjustment_20;
|
||||
vmCvar_t vr_weapon_adjustment_22;
|
||||
|
||||
vmCvar_t cg_VariantSoundCap; // 0 = no capping, else cap to (n) max (typically just 1, but allows more)
|
||||
vmCvar_t cg_turnAnims;
|
||||
vmCvar_t cg_motionBoneComp;
|
||||
|
@ -453,6 +470,27 @@ static cvarTable_t cvarTable[] = {
|
|||
{ &cg_missionInfoFlashTime, "cg_missionInfoFlashTime", "10000", 0 },
|
||||
{ &cg_hudFiles, "cg_hudFiles", "ui/jahud.txt", CVAR_ARCHIVE},
|
||||
|
||||
//Default Weapon adjustments - these WILL be overridden
|
||||
// scale,right,up,forward,pitch,yaw,roll
|
||||
{ &vr_weapon_adjustment_1, "vr_weapon_adjustment_1", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_2, "vr_weapon_adjustment_2", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_3, "vr_weapon_adjustment_3", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_4, "vr_weapon_adjustment_4", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_5, "vr_weapon_adjustment_5", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_6, "vr_weapon_adjustment_6", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_7, "vr_weapon_adjustment_7", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_8, "vr_weapon_adjustment_8", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_9, "vr_weapon_adjustment_9", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_10, "vr_weapon_adjustment_10", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_11, "vr_weapon_adjustment_11", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_12, "vr_weapon_adjustment_12", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_13, "vr_weapon_adjustment_13", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_14, "vr_weapon_adjustment_14", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_18, "vr_weapon_adjustment_18", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_19, "vr_weapon_adjustment_19", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_20, "vr_weapon_adjustment_20", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
{ &vr_weapon_adjustment_22, "vr_weapon_adjustment_22", "0.62,-9.8,11.3,-16.1,0.0,0.0,0.0", CVAR_ARCHIVE},
|
||||
|
||||
{ &cg_VariantSoundCap, "cg_VariantSoundCap", "0", 0 },
|
||||
{ &cg_turnAnims, "cg_turnAnims", "0", 0 },
|
||||
{ &cg_motionBoneComp, "cg_motionBoneComp", "2", 0 },
|
||||
|
|
|
@ -347,6 +347,7 @@ Ghoul2 Insert End
|
|||
|
||||
CG_OPENJK_MENU_PAINT_JK2,
|
||||
CG_OPENJK_GETMENU_BYNAME_JK2,
|
||||
CG_CVAR_GET_JK2,
|
||||
} cgameJK2Import_t;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -38,8 +38,6 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
float cg_zoomFov;
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
|
||||
//#define CG_CAM_ABOVE 2
|
||||
extern qboolean CG_OnMovingPlat( playerState_t *ps );
|
||||
|
|
|
@ -32,8 +32,6 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include <bg_local.h>
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
extern void CG_LightningBolt( centity_t *cent, vec3_t origin );
|
||||
|
||||
#define PHASER_HOLDFRAME 2
|
||||
|
|
|
@ -32,6 +32,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "vmachine.h"
|
||||
#include "qcommon/stringed_ingame.h"
|
||||
#include "sys/sys_loadlib.h"
|
||||
|
||||
#include <JKVR/VrCommon.h>
|
||||
|
||||
vm_t cgvm;
|
||||
|
@ -463,6 +464,9 @@ cgameImport_t CL_ConvertJK2SysCall( cgameJK2Import_t import )
|
|||
case CG_CVAR_SET_JK2:
|
||||
return CG_CVAR_SET;
|
||||
break;
|
||||
case CG_CVAR_GET_JK2:
|
||||
return CG_CVAR_GET;
|
||||
break;
|
||||
case CG_ARGC_JK2:
|
||||
return CG_ARGC;
|
||||
break;
|
||||
|
|
|
@ -33,6 +33,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "qcommon/stringed_ingame.h"
|
||||
#include "sys/sys_loadlib.h"
|
||||
#include "qcommon/ojk_saved_game.h"
|
||||
|
||||
#include <JKVR/VrCommon.h>
|
||||
|
||||
#define RETRANSMIT_TIMEOUT 3000 // time between connection packet retransmits
|
||||
|
|
|
@ -31,8 +31,6 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "g_vehicles.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
|
||||
extern weaponData_t weaponData[WP_NUM_WEAPONS];
|
||||
extern ammoData_t ammoData[AMMO_MAX];
|
||||
|
|
|
@ -32,8 +32,6 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../qcommon/sstring.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
#define LL(x) x=LittleLong(x)
|
||||
#define LS(x) x=LittleShort(x)
|
||||
#define LF(x) x=LittleFloat(x)
|
||||
|
|
|
@ -43,8 +43,6 @@ int r_numpolyverts;
|
|||
int skyboxportal;
|
||||
int drawskyboxportal;
|
||||
|
||||
extern vr_client_info_t *vr;
|
||||
|
||||
/*
|
||||
====================
|
||||
R_InitNextFrame
|
||||
|
|
|
@ -27,6 +27,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "cg_media.h"
|
||||
|
||||
#include "../game/g_roff.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
bool in_camera = false;
|
||||
camera_t client_camera={};
|
||||
|
@ -1080,7 +1081,8 @@ void CGCam_Update( void )
|
|||
}
|
||||
else
|
||||
{
|
||||
CG_CalcFOVFromX( client_camera.FOV );
|
||||
float fov = vr && vr->immersive_cinematics ? vr->fov : client_camera.FOV;
|
||||
CG_CalcFOVFromX( fov );
|
||||
}
|
||||
|
||||
//Check for roffing angles
|
||||
|
@ -1171,9 +1173,17 @@ void CGCam_Update( void )
|
|||
//Normal fading - separate call because can finish after camera is disabled
|
||||
CGCam_UpdateFade();
|
||||
|
||||
if (vr->immersive_cinematics)
|
||||
{
|
||||
float yaw = cg.refdefViewAngles[YAW] + vr->hmdorientation[YAW];
|
||||
VectorCopy(vr->hmdorientation, cg.refdefViewAngles);
|
||||
cg.refdefViewAngles[YAW] = yaw;
|
||||
}
|
||||
|
||||
//Update shaking if there's any
|
||||
//CGCam_UpdateSmooth( cg.refdef.vieworg, cg.refdefViewAngles );
|
||||
CGCam_UpdateShake( cg.refdef.vieworg, cg.refdefViewAngles );
|
||||
AnglesToAxis( cg.refdefViewAngles, cg.refdef.viewaxis );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -28,6 +28,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "cg_local.h"
|
||||
#include "cg_media.h"
|
||||
#include "../game/objectives.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
void CG_DrawIconBackground(void);
|
||||
void CG_DrawMissionInformation( void );
|
||||
|
@ -2466,28 +2467,36 @@ 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;
|
||||
if (!in_camera) {
|
||||
VectorCopy(vr->hmdorientation, cg.refdef.viewangles);
|
||||
cg.refdef.viewangles[YAW] =
|
||||
SHORT2ANGLE(cg.snap->ps.delta_angles[YAW]) + vr->hmdorientation[YAW] + vr->snapTurn;
|
||||
AnglesToAxis(cg.refdef.viewangles, cg.refdef.viewaxis);
|
||||
}
|
||||
|
||||
// clear around the rendered view if sized down
|
||||
CG_TileClear();
|
||||
|
||||
// offset vieworg appropriately if we're doing stereo separation
|
||||
VectorCopy( cg.refdef.vieworg, baseOrg );
|
||||
if ( separation != 0 ) {
|
||||
if ( separation != 0 && (!in_camera || vr->immersive_cinematics)) {
|
||||
VectorMA( cg.refdef.vieworg, -separation, cg.refdef.viewaxis[1], cg.refdef.vieworg );
|
||||
}
|
||||
|
||||
|
@ -2496,6 +2505,12 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
|
|||
cgi_R_LAGoggles();
|
||||
}
|
||||
|
||||
if (!in_camera || vr->immersive_cinematics) {
|
||||
//Vertical Positional Movement
|
||||
cg.refdef.vieworg[2] -= (float)g_entities[cg.snap->ps.viewEntity].client->ps.viewheight;
|
||||
cg.refdef.vieworg[2] += (vr->hmdposition[1] + cg_heightAdjust.value) * cg_worldScale.value;
|
||||
}
|
||||
|
||||
// draw 3D view
|
||||
cgi_R_RenderScene( &cg.refdef );
|
||||
|
||||
|
|
|
@ -23,6 +23,95 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#include "cg_local.h"
|
||||
#include "cg_media.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
|
||||
void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
|
||||
if (!vr->in_camera && !vr->using_screen_layer && !vr->scopeengaged)
|
||||
{
|
||||
float screenXScale = 1.0f / 3.5f;
|
||||
float screenYScale = 1.0f / 3.5f;
|
||||
|
||||
float xoffset = -24;
|
||||
if (cg.refdef.stereoView == 1) {
|
||||
xoffset *= -1;
|
||||
}
|
||||
|
||||
*x *= screenXScale;
|
||||
*y *= screenYScale;
|
||||
if (w != NULL) {
|
||||
*w *= screenXScale;
|
||||
}
|
||||
if (h != NULL) {
|
||||
*h *= screenYScale;
|
||||
}
|
||||
|
||||
*x += (640 - (640 * screenXScale)) / 2.0f + xoffset;
|
||||
*y += (480 - (480 * screenYScale)) / 2.0f;
|
||||
}
|
||||
}
|
||||
void CG_AdjustFrom640Int( int *x, int *y, int *w, int *h ) {
|
||||
if (!vr->in_camera && !vr->using_screen_layer && !vr->scopeengaged)
|
||||
{
|
||||
float screenXScale = 1.0f / 3.5f;
|
||||
float screenYScale = 1.0f / 3.5f;
|
||||
|
||||
float xoffset = -24;
|
||||
if (cg.refdef.stereoView == 1) {
|
||||
xoffset *= -1;
|
||||
}
|
||||
|
||||
*x *= screenXScale;
|
||||
*y *= screenYScale;
|
||||
if (w != NULL) {
|
||||
*w *= screenXScale;
|
||||
}
|
||||
if (h != NULL) {
|
||||
*h *= screenYScale;
|
||||
}
|
||||
|
||||
*x += (640 - (640 * screenXScale)) / 2.0f + xoffset;
|
||||
*y += (480 - (480 * screenYScale)) / 2.0f;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
CG_DrawSides
|
||||
|
||||
Coords are virtual 640x480
|
||||
================
|
||||
*/
|
||||
void CG_DrawSides(float x, float y, float w, float h, float size) {
|
||||
//size *= cgs.screenXScale;
|
||||
CG_AdjustFrom640(&x, &y, &w, &h);
|
||||
cgi_R_DrawStretchPic( x, y, size, h, 0, 0, 0, 0, cgs.media.whiteShader );
|
||||
cgi_R_DrawStretchPic( x + w - size, y, size, h, 0, 0, 0, 0, cgs.media.whiteShader );
|
||||
}
|
||||
|
||||
void CG_DrawTopBottom(float x, float y, float w, float h, float size) {
|
||||
//size *= cgs.screenYScale;
|
||||
CG_AdjustFrom640(&x, &y, &w, &h);
|
||||
cgi_R_DrawStretchPic( x, y, w, size, 0, 0, 0, 0, cgs.media.whiteShader );
|
||||
cgi_R_DrawStretchPic( x, y + h - size, w, size, 0, 0, 0, 0, cgs.media.whiteShader );
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
CG_DrawRect
|
||||
|
||||
Coordinates are 640*480 virtual values
|
||||
=================
|
||||
*/
|
||||
void CG_DrawRect( float x, float y, float width, float height, float size, const float *color ) {
|
||||
cgi_R_SetColor( color );
|
||||
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
CG_DrawTopBottom(x, y, width, height, size);
|
||||
CG_DrawSides(x, y, width, height, size);
|
||||
|
||||
cgi_R_SetColor( NULL );
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
|
@ -33,6 +122,7 @@ Coordinates are 640*480 virtual values
|
|||
*/
|
||||
void CG_FillRect( float x, float y, float width, float height, const float *color ) {
|
||||
cgi_R_SetColor( color );
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_DrawStretchPic( x, y, width, height, 0, 0, 0, 0, cgs.media.whiteShader);
|
||||
cgi_R_SetColor( NULL );
|
||||
}
|
||||
|
@ -48,6 +138,7 @@ Coordinates are 640*480 virtual values
|
|||
void CG_Scissor( float x, float y, float width, float height)
|
||||
{
|
||||
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_Scissor( x, y, width, height);
|
||||
|
||||
}
|
||||
|
@ -62,6 +153,7 @@ A width of 0 will draw with the original image width
|
|||
=================
|
||||
*/
|
||||
void CG_DrawPic( float x, float y, float width, float height, qhandle_t hShader ) {
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_DrawStretchPic( x, y, width, height, 0, 0, 1, 1, hShader );
|
||||
}
|
||||
|
||||
|
@ -76,6 +168,7 @@ Can also specify the exact texture coordinates
|
|||
*/
|
||||
void CG_DrawPic2( float x, float y, float width, float height, float s1, float t1, float s2, float t2, qhandle_t hShader )
|
||||
{
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_DrawStretchPic( x, y, width, height, s1, t1, s2, t2, hShader );
|
||||
}
|
||||
|
||||
|
@ -89,6 +182,7 @@ rotates around the upper right corner of the passed in point
|
|||
=================
|
||||
*/
|
||||
void CG_DrawRotatePic( float x, float y, float width, float height,float angle, qhandle_t hShader ) {
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_DrawRotatePic( x, y, width, height, 0, 0, 1, 1, angle, hShader );
|
||||
}
|
||||
|
||||
|
@ -102,6 +196,7 @@ Actually rotates around the center point of the passed in coordinates
|
|||
=================
|
||||
*/
|
||||
void CG_DrawRotatePic2( float x, float y, float width, float height,float angle, qhandle_t hShader ) {
|
||||
CG_AdjustFrom640(&x, &y, &width, &height);
|
||||
cgi_R_DrawRotatePic2( x, y, width, height, 0, 0, 1, 1, angle, hShader );
|
||||
}
|
||||
|
||||
|
@ -149,7 +244,8 @@ void CG_DrawChar( int x, int y, int width, int height, int ch ) {
|
|||
size = 0.03125;
|
||||
size2 = 0.0625;
|
||||
|
||||
cgi_R_DrawStretchPic( ax, ay, aw, ah, fcol, frow, fcol + size, frow + size2,
|
||||
CG_AdjustFrom640(&ax, &ay, &aw, &ah);
|
||||
cgi_R_DrawStretchPic( ax, ay, aw, ah, fcol, frow, fcol + size, frow + size2,
|
||||
cgs.media.charsetShader );
|
||||
|
||||
}
|
||||
|
@ -212,7 +308,10 @@ void CG_DrawStringExt( int x, int y, const char *string, const float *setColor,
|
|||
|
||||
|
||||
void CG_DrawSmallStringColor( int x, int y, const char *s, vec4_t color ) {
|
||||
CG_DrawStringExt( x, y, s, color, qtrue, qfalse, SMALLCHAR_WIDTH, SMALLCHAR_HEIGHT );
|
||||
auto fx = (float)x;
|
||||
auto fy = (float)y;
|
||||
CG_AdjustFrom640(&fx, &fy, NULL, NULL);
|
||||
CG_DrawStringExt( (int)fx, (int)fy, s, color, qtrue, qfalse, SMALLCHAR_WIDTH, SMALLCHAR_HEIGHT );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -249,6 +348,8 @@ refresh window.
|
|||
static void CG_TileClearBox( int x, int y, int w, int h, qhandle_t hShader ) {
|
||||
float s1, t1, s2, t2;
|
||||
|
||||
// CG_AdjustFrom640Int(&x, &y, &w, &h);
|
||||
|
||||
s1 = x/64.0;
|
||||
t1 = y/64.0;
|
||||
s2 = (x+w)/64.0;
|
||||
|
@ -394,17 +495,22 @@ void CG_DrawNumField (int x, int y, int width, int value,int charWidth,int charH
|
|||
{
|
||||
for (int i = 0; i < (width - l); i++ )
|
||||
{
|
||||
int _x = x;
|
||||
int _y = y;
|
||||
int _charWidth = charWidth;
|
||||
int _charHeight = charHeight;
|
||||
//CG_AdjustFrom640Int(&_x, &_y, &_charWidth, &_charHeight);
|
||||
switch(style)
|
||||
{
|
||||
case NUM_FONT_SMALL:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.smallnumberShaders[0] );
|
||||
CG_DrawPic( _x,_y, _charWidth, _charHeight, cgs.media.smallnumberShaders[0] );
|
||||
break;
|
||||
case NUM_FONT_CHUNKY:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.chunkyNumberShaders[0] );
|
||||
CG_DrawPic( _x,_y, _charWidth, _charHeight, cgs.media.chunkyNumberShaders[0] );
|
||||
break;
|
||||
default:
|
||||
case NUM_FONT_BIG:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.numberShaders[0] );
|
||||
CG_DrawPic( _x,_y, _charWidth, _charHeight, cgs.media.numberShaders[0] );
|
||||
break;
|
||||
}
|
||||
x += 2 + (xWidth);
|
||||
|
@ -423,18 +529,23 @@ void CG_DrawNumField (int x, int y, int width, int value,int charWidth,int charH
|
|||
else
|
||||
frame = *ptr -'0';
|
||||
|
||||
int _x = x;
|
||||
int _y = y;
|
||||
int _charWidth = charWidth;
|
||||
int _charHeight = charHeight;
|
||||
//CG_AdjustFrom640Int(&_x, &_y, &_charWidth, &_charHeight);
|
||||
switch(style)
|
||||
{
|
||||
case NUM_FONT_SMALL:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.smallnumberShaders[frame] );
|
||||
CG_DrawPic( _x, _y, _charWidth, _charHeight, cgs.media.smallnumberShaders[frame] );
|
||||
x++; // For a one line gap
|
||||
break;
|
||||
case NUM_FONT_CHUNKY:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.chunkyNumberShaders[frame] );
|
||||
CG_DrawPic( _x, _y, _charWidth, _charHeight, cgs.media.chunkyNumberShaders[frame] );
|
||||
break;
|
||||
default:
|
||||
case NUM_FONT_BIG:
|
||||
CG_DrawPic( x,y, charWidth, charHeight, cgs.media.numberShaders[frame] );
|
||||
CG_DrawPic( _x, _y, _charWidth, _charHeight, cgs.media.numberShaders[frame] );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -453,5 +564,6 @@ CG_DrawProportionalString
|
|||
void CG_DrawProportionalString( int x, int y, const char* str, int style, vec4_t color )
|
||||
{
|
||||
//assert(!style);//call this directly if you need style (OR it into the font handle)
|
||||
CG_AdjustFrom640Int(&x, &y, NULL, NULL);
|
||||
cgi_R_Font_DrawString (x, y, str, color, cgs.media.qhFontMedium, -1, 1.0f);
|
||||
}
|
|
@ -463,9 +463,9 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
|
||||
index = es->eventParm; // player predicted
|
||||
|
||||
if ( (char)index < 0 )
|
||||
if ( index < 0 )
|
||||
{
|
||||
index = -(char)index;
|
||||
index = -index;
|
||||
bHadItem = qtrue;
|
||||
}
|
||||
|
||||
|
|
|
@ -608,6 +608,8 @@ extern vmCvar_t cg_saberAutoThird;
|
|||
extern vmCvar_t cg_gunAutoFirst;
|
||||
|
||||
extern vmCvar_t cg_stereoSeparation;
|
||||
extern vmCvar_t cg_worldScale;
|
||||
extern vmCvar_t cg_heightAdjust;
|
||||
extern vmCvar_t cg_developer;
|
||||
extern vmCvar_t cg_timescale;
|
||||
extern vmCvar_t cg_skippingcin;
|
||||
|
@ -639,6 +641,26 @@ extern vmCvar_t cg_smoothPlayerPos;
|
|||
extern vmCvar_t cg_smoothPlayerPlat;
|
||||
extern vmCvar_t cg_smoothPlayerPlatAccel;
|
||||
|
||||
|
||||
//VR Weapon Offsets
|
||||
extern vmCvar_t vr_weapon_adjustment_1;
|
||||
extern vmCvar_t vr_weapon_adjustment_2;
|
||||
extern vmCvar_t vr_weapon_adjustment_3;
|
||||
extern vmCvar_t vr_weapon_adjustment_4;
|
||||
extern vmCvar_t vr_weapon_adjustment_5;
|
||||
extern vmCvar_t vr_weapon_adjustment_6;
|
||||
extern vmCvar_t vr_weapon_adjustment_7;
|
||||
extern vmCvar_t vr_weapon_adjustment_8;
|
||||
extern vmCvar_t vr_weapon_adjustment_9;
|
||||
extern vmCvar_t vr_weapon_adjustment_10;
|
||||
extern vmCvar_t vr_weapon_adjustment_11;
|
||||
extern vmCvar_t vr_weapon_adjustment_12;
|
||||
extern vmCvar_t vr_weapon_adjustment_13;
|
||||
extern vmCvar_t vr_weapon_adjustment_14;
|
||||
extern vmCvar_t vr_weapon_adjustment_18;
|
||||
extern vmCvar_t vr_weapon_adjustment_19;
|
||||
extern vmCvar_t vr_weapon_adjustment_20;
|
||||
extern vmCvar_t vr_weapon_adjustment_22;
|
||||
void CG_NewClientinfo( int clientNum );
|
||||
//
|
||||
// cg_main.c
|
||||
|
@ -919,6 +941,7 @@ int cgi_Milliseconds( void );
|
|||
void cgi_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags );
|
||||
void cgi_Cvar_Update( vmCvar_t *vmCvar );
|
||||
void cgi_Cvar_Set( const char *var_name, const char *value );
|
||||
char* cgi_Cvar_Get( const char *var_name );
|
||||
|
||||
|
||||
// ServerCommand and ConsoleCommand parameter access
|
||||
|
|
|
@ -29,6 +29,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#include "../../code/qcommon/sstring.h"
|
||||
#include "../code/qcommon/ojk_saved_game_helper.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
//NOTENOTE: Be sure to change the mirrored code in g_shared.h
|
||||
typedef std::map< sstring_t, unsigned char, std::less<sstring_t> > namePrecache_m;
|
||||
|
@ -107,8 +108,10 @@ extern "C" Q_EXPORT intptr_t vmMain( intptr_t command, intptr_t arg0, intptr_t a
|
|||
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();
|
||||
|
@ -223,6 +226,8 @@ centity_t cg_entities[MAX_GENTITIES];
|
|||
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
|
||||
|
@ -299,6 +304,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;
|
||||
|
@ -361,7 +368,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_draw2D, "cg_draw2D", "1", CVAR_ARCHIVE },
|
||||
|
@ -371,7 +380,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 },
|
||||
{ &cg_crosshairIdentifyTarget, "cg_crosshairIdentifyTarget", "1", CVAR_ARCHIVE },
|
||||
{ &cg_crosshairForceHint, "cg_crosshairForceHint", "1", CVAR_ARCHIVE|CVAR_SAVEGAME|CVAR_NORESTART },
|
||||
|
|
|
@ -125,8 +125,8 @@ temporary marks will not be stored or randomly oriented, but immediately
|
|||
passed to the renderer.
|
||||
=================
|
||||
*/
|
||||
#define MAX_MARK_FRAGMENTS 128
|
||||
#define MAX_MARK_POINTS 384
|
||||
#define MAX_MARK_FRAGMENTS 256
|
||||
#define MAX_MARK_POINTS 768
|
||||
|
||||
void CG_ImpactMark( qhandle_t markShader, const vec3_t origin, const vec3_t dir,
|
||||
float orientation, float red, float green, float blue, float alpha,
|
||||
|
@ -225,8 +225,8 @@ void CG_ImpactMark( qhandle_t markShader, const vec3_t origin, const vec3_t dir,
|
|||
CG_AddMarks
|
||||
===============
|
||||
*/
|
||||
#define MARK_TOTAL_TIME 10000
|
||||
#define MARK_FADE_TIME 1000
|
||||
#define MARK_TOTAL_TIME 20000
|
||||
#define MARK_FADE_TIME 10000
|
||||
|
||||
void CG_AddMarks( void ) {
|
||||
int j;
|
||||
|
|
|
@ -30,6 +30,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../game/ghoul2_shared.h"
|
||||
#include "../game/anims.h"
|
||||
#include "../game/wp_saber.h"
|
||||
#include "bg_local.h"
|
||||
|
||||
#define LOOK_SWING_SCALE 0.5
|
||||
|
||||
|
@ -5787,7 +5788,14 @@ Ghoul2 Insert End
|
|||
//FIXME: allow it to be put anywhere and move this out of if(torso.hModel)
|
||||
//Will have to call CG_PositionRotatedEntityOnTag
|
||||
|
||||
CG_PositionEntityOnTag( &gun, &torso, torso.hModel, "tag_weapon");
|
||||
//CG_PositionEntityOnTag( &gun, &torso, torso.hModel, "tag_weapon");
|
||||
|
||||
vec3_t angs;
|
||||
BG_CalculateVRWeaponPosition(gun.origin, angs);
|
||||
AnglesToAxis(angs, gun.axis);
|
||||
//Gotta move this forward but test for now
|
||||
VectorCopy( gun.origin, gun.lightingOrigin );
|
||||
|
||||
|
||||
//--------------------- start saber hacks
|
||||
|
||||
|
|
|
@ -198,6 +198,7 @@ Ghoul2 Insert End
|
|||
|
||||
CG_OPENJK_MENU_PAINT,
|
||||
CG_OPENJK_GETMENU_BYNAME,
|
||||
CG_CVAR_GET
|
||||
} cgameImport_t;
|
||||
|
||||
//----------------------------------------------
|
||||
|
|
|
@ -67,6 +67,10 @@ void cgi_Cvar_Set( const char *var_name, const char *value ) {
|
|||
Q_syscall( CG_CVAR_SET, var_name, value );
|
||||
}
|
||||
|
||||
char* cgi_Cvar_Get( const char *var_name ) {
|
||||
return (char*)Q_syscall( CG_CVAR_GET, var_name );
|
||||
}
|
||||
|
||||
int cgi_Argc( void ) {
|
||||
return Q_syscall( CG_ARGC );
|
||||
}
|
||||
|
|
|
@ -30,12 +30,14 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../game/wp_saber.h"
|
||||
#include "../game/anims.h"
|
||||
#include "../game/g_functions.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
#define MASK_CAMERACLIP (MASK_SOLID)
|
||||
#define CAMERA_SIZE 4
|
||||
|
||||
float cg_zoomFov;
|
||||
|
||||
|
||||
//#define CG_CAM_ABOVE 2
|
||||
extern qboolean CG_OnMovingPlat( playerState_t *ps );
|
||||
|
||||
|
@ -1353,7 +1355,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 )
|
||||
{
|
||||
|
@ -1372,7 +1375,8 @@ 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1380,6 +1384,7 @@ static qboolean CG_CalcFov( void ) {
|
|||
{
|
||||
fov_x = CG_ForceSpeedFOV();
|
||||
} else {
|
||||
/*
|
||||
// user selectable
|
||||
if ( cg.overrides.active & CG_OVERRIDE_FOV )
|
||||
{
|
||||
|
@ -1393,7 +1398,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
|
||||
|
@ -1891,11 +1898,13 @@ wasForceSpeed=isForceSpeed;
|
|||
}
|
||||
cgi_SetUserCmdValue( cg.weaponSelect, speed, mPitchOverride, mYawOverride );
|
||||
|
||||
// this counter will be bumped for every valid scene we generate
|
||||
cg.clientFrame++;
|
||||
if ( stereoView == STEREO_LEFT ) {
|
||||
// this counter will be bumped for every valid scene we generate
|
||||
cg.clientFrame++;
|
||||
|
||||
// update cg.predicted_player_state
|
||||
CG_PredictPlayerState();
|
||||
// update cg.predicted_player_state
|
||||
CG_PredictPlayerState();
|
||||
}
|
||||
|
||||
// decide on third person view
|
||||
cg.renderingThirdPerson = (qboolean)(
|
||||
|
@ -1910,6 +1919,7 @@ wasForceSpeed=isForceSpeed;
|
|||
cg.renderingThirdPerson = qfalse;
|
||||
}
|
||||
|
||||
vr->in_camera = in_camera;
|
||||
if ( in_camera )
|
||||
{
|
||||
// The camera takes over the view
|
||||
|
|
|
@ -27,6 +27,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../game/wp_saber.h"
|
||||
#include "../game/g_local.h"
|
||||
#include "../game/anims.h"
|
||||
#include <bg_local.h>
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
extern void CG_LightningBolt( centity_t *cent, vec3_t origin );
|
||||
|
||||
|
@ -779,6 +781,82 @@ void CG_CalculateWeaponPosition( vec3_t origin, vec3_t angles )
|
|||
angles[PITCH] += (scale * 0.5f ) * fracsin * 0.01;
|
||||
}
|
||||
|
||||
static float CG_CalculateWeaponPositionAndScale( playerState_t *ps, vec3_t origin, vec3_t angles ) {
|
||||
|
||||
BG_CalculateVRWeaponPosition(origin, angles);
|
||||
|
||||
vec3_t offset;
|
||||
|
||||
//Weapon offset debugging
|
||||
float scale=1.0f;
|
||||
if (strcmp(cgi_Cvar_Get("vr_control_scheme"), "99") == 0) {
|
||||
vr->weaponid = ps->weapon;
|
||||
scale = vr->test_scale;
|
||||
|
||||
//Adjust angles for weapon models that aren't aligned very well
|
||||
matrix4x4 m1, m2, m3;
|
||||
vec3_t zero;
|
||||
VectorClear(zero);
|
||||
Matrix4x4_CreateFromEntity(m1, angles, zero, 1.0);
|
||||
Matrix4x4_CreateFromEntity(m2, vr->test_angles, zero, 1.0);
|
||||
Matrix4x4_Concat(m3, m1, m2);
|
||||
Matrix4x4_ConvertToEntity(m3, angles, zero);
|
||||
|
||||
VectorCopy(vr->test_offset, offset);
|
||||
|
||||
CG_CenterPrint( vr->test_name, SMALLCHAR_WIDTH );
|
||||
} else {
|
||||
if (ps->weapon != 0)
|
||||
{
|
||||
char cvar_name[64];
|
||||
Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", ps->weapon);
|
||||
|
||||
char* weapon_adjustment = cgi_Cvar_Get(cvar_name);
|
||||
|
||||
if (strlen(weapon_adjustment) > 0) {
|
||||
vec3_t adjust;
|
||||
vec3_t temp_offset;
|
||||
VectorClear(temp_offset);
|
||||
VectorClear(adjust);
|
||||
|
||||
sscanf(weapon_adjustment, "%f,%f,%f,%f,%f,%f,%f", &scale,
|
||||
&(temp_offset[0]), &(temp_offset[1]), &(temp_offset[2]),
|
||||
&(adjust[PITCH]), &(adjust[YAW]), &(adjust[ROLL]));
|
||||
VectorScale(temp_offset, scale, offset);
|
||||
|
||||
if (!vr->right_handed)
|
||||
{
|
||||
//yaw needs to go in the other direction as left handed model is reversed
|
||||
adjust[YAW] *= -1.0f;
|
||||
}
|
||||
|
||||
//Adjust angles for weapon models that aren't aligned very well
|
||||
matrix4x4 m1, m2, m3;
|
||||
vec3_t zero;
|
||||
VectorClear(zero);
|
||||
Matrix4x4_CreateFromEntity(m1, angles, zero, 1.0);
|
||||
Matrix4x4_CreateFromEntity(m2, adjust, zero, 1.0);
|
||||
Matrix4x4_Concat(m3, m1, m2);
|
||||
Matrix4x4_ConvertToEntity(m3, angles, zero);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Now move weapon closer to proper origin
|
||||
vec3_t forward, right, up;
|
||||
AngleVectors( angles, forward, right, up );
|
||||
VectorMA( origin, offset[2], forward, origin );
|
||||
VectorMA( origin, offset[1], up, origin );
|
||||
if (vr->right_handed) {
|
||||
VectorMA(origin, offset[0], right, origin);
|
||||
} else {
|
||||
VectorMA(origin, -offset[0], right, origin);
|
||||
}
|
||||
|
||||
return scale;
|
||||
}
|
||||
|
||||
/*
|
||||
======================
|
||||
CG_MachinegunSpinAngle
|
||||
|
@ -1028,22 +1106,54 @@ void CG_AddViewWeapon( playerState_t *ps )
|
|||
return;
|
||||
}
|
||||
|
||||
// set up gun position
|
||||
CG_CalculateWeaponPosition( hand.origin, angles );
|
||||
if (strcmp(cgi_Cvar_Get("vr_control_scheme"), "99") == 0) {
|
||||
vec3_t origin;
|
||||
vec3_t endForward, endRight, endUp;
|
||||
vec3_t angles;
|
||||
clientInfo_t ci;
|
||||
BG_CalculateVRWeaponPosition( origin, angles );
|
||||
|
||||
vec3_t forward, right, up;
|
||||
AngleVectors(angles, forward, right, up);
|
||||
|
||||
trace_t trace;
|
||||
VectorMA(origin, 256, forward, endForward);
|
||||
CG_TestLine(origin, endForward, FRAMETIME, 0xFF0000, 0.5 );
|
||||
|
||||
VectorMA(origin, 20, right, endRight);
|
||||
CG_TestLine(origin, endRight, FRAMETIME, 0x00FF00, 0.5 );
|
||||
|
||||
VectorMA(origin, 20, up, endUp);
|
||||
CG_TestLine(origin, endUp, FRAMETIME, 0x0000FF, 0.5 );
|
||||
|
||||
CG_CenterPrint(vr->test_name, 240);
|
||||
|
||||
}
|
||||
|
||||
// set up gun position
|
||||
float scale = CG_CalculateWeaponPositionAndScale( ps, hand.origin, angles );
|
||||
|
||||
VectorMA( hand.origin, cg_gun_x.value, cg.refdef.viewaxis[0], hand.origin );
|
||||
VectorMA( hand.origin, (cg_gun_y.value+leanOffset), cg.refdef.viewaxis[1], hand.origin );
|
||||
VectorMA( hand.origin, (cg_gun_z.value+fovOffset), cg.refdef.viewaxis[2], hand.origin );
|
||||
|
||||
AnglesToAxis( angles, hand.axis );
|
||||
|
||||
if ( cg_fovViewmodel.integer )
|
||||
//scale the whole model (hand and weapon)
|
||||
for ( int i = 0; i < 3; i++ ) {
|
||||
VectorScale( hand.axis[i], (vr->right_handed || i != 1 ) ? scale : -scale, hand.axis[i] );
|
||||
}
|
||||
|
||||
//Gotta move this forward but test for now
|
||||
VectorCopy( hand.origin, hand.lightingOrigin );
|
||||
|
||||
/* if ( cg_fovViewmodel.integer )
|
||||
{
|
||||
float fracDistFOV = tanf( cg.refdef.fov_x * ( M_PI/180 ) * 0.5f );
|
||||
float fracWeapFOV = ( 1.0f / fracDistFOV ) * tanf( cgFov * ( M_PI/180 ) * 0.5f );
|
||||
VectorScale( hand.axis[0], fracWeapFOV, hand.axis[0] );
|
||||
}
|
||||
|
||||
*/
|
||||
// map torso animations to weapon animations
|
||||
if ( cg_gun_frame.integer )
|
||||
{
|
||||
|
|
|
@ -23,6 +23,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
// bg_local.h -- local definitions for the bg (both games) files
|
||||
|
||||
#ifndef _BG_LOCAL_H
|
||||
#define _BG_LOCAL_H
|
||||
|
||||
#define TIMER_LAND 130
|
||||
#define TIMER_GESTURE (34*66+50)
|
||||
|
||||
|
@ -75,5 +78,12 @@ void PM_AddEvent( int newEvent );
|
|||
qboolean PM_SlideMove( float gravity );
|
||||
void PM_StepSlideMove( float gravity );
|
||||
|
||||
void rotateAboutOrigin(float x, float y, float rotation, vec2_t out);
|
||||
void BG_CalculateVRWeaponPosition( vec3_t origin, vec3_t angles );
|
||||
void BG_CalculateVROffHandPosition( vec3_t origin, vec3_t angles );
|
||||
void BG_ConvertFromVR(vec3_t in, vec3_t offset, vec3_t out);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -21,11 +21,13 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
===========================================================================
|
||||
*/
|
||||
|
||||
// included in both game dll and client
|
||||
#define GAME_INCLUDE
|
||||
#include "../cgame/cg_local.h"
|
||||
|
||||
#include "g_local.h"
|
||||
#include "bg_public.h"
|
||||
#include "g_items.h"
|
||||
#include <JKVR/VrClientInfo.h>
|
||||
|
||||
|
||||
extern weaponData_t weaponData[WP_NUM_WEAPONS];
|
||||
|
@ -645,6 +647,56 @@ void PlayerStateToEntityState( playerState_t *ps, entityState_t *s ) {
|
|||
}
|
||||
|
||||
|
||||
void rotateAboutOrigin(float x, float y, float rotation, vec2_t out)
|
||||
{
|
||||
out[0] = cosf(DEG2RAD(-rotation)) * x + sinf(DEG2RAD(-rotation)) * y;
|
||||
out[1] = cosf(DEG2RAD(-rotation)) * y - sinf(DEG2RAD(-rotation)) * x;
|
||||
}
|
||||
|
||||
void BG_ConvertFromVR(vec3_t in, vec3_t offset, vec3_t out)
|
||||
{
|
||||
vec3_t vrSpace;
|
||||
VectorSet(vrSpace, in[2], in[0], in[1] );
|
||||
|
||||
vec2_t r;
|
||||
rotateAboutOrigin(vrSpace[0], vrSpace[1], cg.refdefViewAngles[YAW] - vr->hmdorientation[YAW], r);
|
||||
|
||||
vrSpace[0] = -r[0];
|
||||
vrSpace[1] = -r[1];
|
||||
|
||||
vec3_t temp;
|
||||
VectorScale(vrSpace, cg_worldScale.value, temp);
|
||||
|
||||
if (offset) {
|
||||
VectorAdd(temp, offset, out);
|
||||
} else {
|
||||
VectorCopy(temp, out);
|
||||
}
|
||||
}
|
||||
|
||||
static void BG_CalculateVRPositionInWorld( vec3_t in_position, vec3_t in_offset, vec3_t in_orientation, vec3_t origin, vec3_t angles )
|
||||
{
|
||||
vec3_t offset;
|
||||
VectorCopy(in_offset, offset);
|
||||
offset[1] = 0; // up/down is index 1 in this case
|
||||
BG_ConvertFromVR(offset, cg.refdef.vieworg, origin);
|
||||
origin[2] -= (float)g_entities[cg.snap->ps.viewEntity].client->ps.viewheight;
|
||||
origin[2] += in_position[1] * cg_worldScale.value;
|
||||
|
||||
VectorCopy(in_orientation, angles);
|
||||
angles[YAW] += (cg.refdefViewAngles[YAW] - vr->hmdorientation[YAW]);
|
||||
}
|
||||
|
||||
void BG_CalculateVROffHandPosition( vec3_t origin, vec3_t angles )
|
||||
{
|
||||
BG_CalculateVRPositionInWorld(vr->offhandposition, vr->offhandoffset, vr->offhandangles, origin, angles);
|
||||
}
|
||||
|
||||
void BG_CalculateVRWeaponPosition( vec3_t origin, vec3_t angles )
|
||||
{
|
||||
BG_CalculateVRPositionInWorld(vr->weaponposition, vr->weaponoffset, vr->weaponangles, origin, angles);
|
||||
}
|
||||
|
||||
/*
|
||||
============
|
||||
BG_PlayerTouchesItem
|
||||
|
|
|
@ -40,7 +40,7 @@ import static android.system.Os.setenv;
|
|||
// Load the gles3jni library right away to make sure JNI_OnLoad() gets called as the very first thing.
|
||||
static
|
||||
{
|
||||
System.loadLibrary( "openjk_ja" );
|
||||
System.loadLibrary( "openjk_jo" );
|
||||
}
|
||||
|
||||
private static final String TAG = "JKQuest";
|
||||
|
@ -59,16 +59,11 @@ import static android.system.Os.setenv;
|
|||
// Main components
|
||||
protected static GLES3JNIActivity mSingleton;
|
||||
|
||||
// Audio
|
||||
protected static AudioTrack mAudioTrack;
|
||||
protected static AudioRecord mAudioRecord;
|
||||
|
||||
public static void initialize() {
|
||||
// The static nature of the singleton and Android quirkyness force us to initialize everything here
|
||||
// Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values
|
||||
mSingleton = null;
|
||||
mAudioTrack = null;
|
||||
mAudioRecord = null;
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
|
|
Loading…
Reference in a new issue