Laser Sight

also some small fixes to the left-handed weapon orientation, now seems totally correct
This commit is contained in:
Simon 2020-07-19 22:39:17 +01:00
parent 2d44b6bd40
commit 8a98d203d9
8 changed files with 58 additions and 11 deletions

View file

@ -48,7 +48,8 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
ovrTracking * pWeapon = pDominantTracking;
ovrTracking * pOff = pOffTracking;
if (vr.weaponid == WP_AKIMBO &&
!vr.right_handed)
!vr.right_handed &&
!RTCWVR_useScreenLayer())
{
//Revert to same weapon controls as right-handed if using akimbo
pWeapon = pOffTracking;

View file

@ -2274,6 +2274,7 @@ void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const cha
void trap_Cvar_Update( vmCvar_t *vmCvar );
void trap_Cvar_Set( const char *var_name, const char *value );
void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize );
int trap_Cvar_VariableIntegerValue( const char *var_name);
// ServerCommand and ConsoleCommand parameter access
int trap_Argc( void );

View file

@ -368,7 +368,7 @@ cvarTable_t cvarTable[] = {
{ &cg_reticleBrightness, "cg_reticleBrightness", "0.7", CVAR_ARCHIVE },
{ &cg_markTime, "cg_marktime", "20000", CVAR_ARCHIVE },
{ &cg_lagometer, "cg_lagometer", "1", CVAR_ARCHIVE },
{ &cg_railTrailTime, "cg_railTrailTime", "50", CVAR_ARCHIVE },
{ &cg_railTrailTime, "cg_railTrailTime", "25", CVAR_ARCHIVE },
{ &cg_gun_x, "cg_gunX", "0", CVAR_CHEAT },
{ &cg_gun_y, "cg_gunY", "0", CVAR_CHEAT },
{ &cg_gun_z, "cg_gunZ", "0", CVAR_CHEAT },

View file

@ -85,6 +85,7 @@ typedef enum {
CG_CVAR_UPDATE,
CG_CVAR_SET,
CG_CVAR_VARIABLESTRINGBUFFER,
CG_CVAR_VARIABLE_INTEGER_VALUE,
CG_ARGC,
CG_ARGV,
CG_ARGS,

View file

@ -78,6 +78,10 @@ void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int buf
syscall( CG_CVAR_VARIABLESTRINGBUFFER, var_name, buffer, bufsize );
}
int trap_Cvar_VariableIntegerValue( const char *var_name ) {
return syscall( CG_CVAR_VARIABLE_INTEGER_VALUE, var_name );
}
int trap_Argc( void ) {
return syscall( CG_ARGC );
}

View file

@ -1006,7 +1006,12 @@ void CG_RailTrail2( clientInfo_t *ci, vec3_t start, vec3_t end ) {
VectorCopy( end, re->oldorigin );
// // still allow different colors so we can tell AI shots from player shots, etc.
le->color[3] = 1.0f;
if ( ci ) {
if (ci->health == 1)
{
le->color[3] = (ci->handicap / 255.0f);
}
le->color[0] = ci->color[0] * 0.75;
le->color[1] = ci->color[1] * 0.75;
le->color[2] = ci->color[2] * 0.75;
@ -1015,7 +1020,6 @@ void CG_RailTrail2( clientInfo_t *ci, vec3_t start, vec3_t end ) {
le->color[1] = 0;
le->color[2] = 0;
}
le->color[3] = 1.0f;
AxisClear( re->axis );
}
@ -2008,12 +2012,9 @@ static float CG_CalculateWeaponPositionAndScale( playerState_t *ps, vec3_t origi
vec3_t offset;
char buffer[32];
trap_Cvar_VariableStringBuffer("vr_control_scheme", buffer, 32);
//Weapon offset debugging
float scale=1.0f;
if (strcmp(buffer, "99") == 0) {
if (trap_Cvar_VariableIntegerValue("vr_control_scheme") == 99) {
scale = cgVR->test_scale;
//Adjust angles for weapon models that aren't aligned very well
@ -2063,6 +2064,12 @@ static float CG_CalculateWeaponPositionAndScale( playerState_t *ps, vec3_t origi
&(adjust[PITCH]), &(adjust[YAW]), &(adjust[ROLL]));
VectorScale(temp_offset, scale, offset);
if (!cgVR->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;
@ -3411,9 +3418,7 @@ void CG_AddViewWeapon( playerState_t *ps ) {
return;
}
char buffer[32];
trap_Cvar_VariableStringBuffer("vr_control_scheme", buffer, 32);
qboolean weaponDebugging = (strcmp(buffer, "99") == 0);
qboolean weaponDebugging = trap_Cvar_VariableIntegerValue("vr_control_scheme") == 99;
/* // drop gun lower at higher fov
if ( cg_fov.integer > 90 ) {
@ -3556,6 +3561,39 @@ void CG_AddViewWeapon( playerState_t *ps ) {
CG_RailTrail2(&ci, origin, endUp);
}
if (trap_Cvar_VariableIntegerValue("vr_lasersight") != 0 &&
cgVR->backpackitemactive == 0)
{
switch (ps->weapon)
{
case WP_KNIFE:
case WP_DYNAMITE:
case WP_GRENADE_LAUNCHER:
case WP_GRENADE_PINEAPPLE:
break;
default:
{
vec3_t origin;
vec3_t endForward;
vec3_t angles;
clientInfo_t ci;
CG_CalculateVRWeaponPosition(0, origin, angles);
vec3_t forward, right, up;
AngleVectors(angles, forward, right, up);
trace_t trace;
VectorMA(origin, 8192, forward, endForward);
trap_CM_BoxTrace(&trace, origin, endForward, NULL, NULL, 0, MASK_SOLID);
ci.health = 1;
ci.handicap = 128; // value out of 255 for alpha channel
VectorSet(ci.color, 1, 0, 0);
CG_RailTrail2(&ci, origin, trace.endpos);
}
}
}
cg.predictedPlayerEntity.lastWeaponClientFrame = cg.clientFrame;
}

View file

@ -466,6 +466,8 @@ int CL_CgameSystemCalls( int *args ) {
case CG_CVAR_VARIABLESTRINGBUFFER:
Cvar_VariableStringBuffer( VMA( 1 ), VMA( 2 ), args[3] );
return 0;
case CG_CVAR_VARIABLE_INTEGER_VALUE:
return Cvar_VariableIntegerValue( VMA( 1 ) );
case CG_ARGC:
return Cmd_Argc();
case CG_ARGV:

View file

@ -1113,7 +1113,7 @@ void R_Register( void ) {
r_facePlaneCull = ri.Cvar_Get( "r_facePlaneCull", "1", CVAR_ARCHIVE );
r_railWidth = ri.Cvar_Get( "r_railWidth", "16", CVAR_ARCHIVE );
r_railCoreWidth = ri.Cvar_Get( "r_railCoreWidth", "0.25", CVAR_ARCHIVE );
r_railCoreWidth = ri.Cvar_Get( "r_railCoreWidth", "0.125", CVAR_ARCHIVE );
r_railSegmentLength = ri.Cvar_Get( "r_railSegmentLength", "32", CVAR_ARCHIVE );
r_waterFogColor = ri.Cvar_Get( "r_waterFogColor", "0", CVAR_ROM ); //----(SA) added