mirror of
https://github.com/DrBeef/RTCWQuest.git
synced 2025-04-23 07:20:51 +00:00
Some nice changes...
- You can now grab from the backpack: - Grip Button - Grenades / Pineapple / Dynamite - A Button - Knife - B Button - Binoculars (move them to your face to activate) - Fixed bug with scopes - Improved HUD and fading - X button now enables/disables HUD (might change this)
This commit is contained in:
parent
9bb1435b87
commit
6a1ad59805
10 changed files with 174 additions and 86 deletions
|
@ -1315,6 +1315,10 @@ void RTCWVR_Init()
|
|||
//Defaults
|
||||
vr_control_scheme = Cvar_Get( "vr_control_scheme", "0", CVAR_ARCHIVE);
|
||||
vr_weapon_test_values = Cvar_Get( "vr_weapon_test_values", "0.0,0.0,0.0,0.0,0.0,0.0,0.0", CVAR_ARCHIVE);
|
||||
|
||||
//Set up vr client info
|
||||
vr.backpackitemactive = 0;
|
||||
vr.visible_hud = qtrue;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,10 @@ typedef struct {
|
|||
qboolean weapon_stabilised;
|
||||
qboolean right_handed;
|
||||
qboolean player_moving;
|
||||
qboolean visible_hud;
|
||||
int weaponid;
|
||||
int lastweaponid;
|
||||
int backpackitemactive; //0 - nothing, 1 - grenades, 2 - knife, 3 - Binoculars
|
||||
|
||||
vec3_t hmdposition;
|
||||
vec3_t hmdposition_last; // Don't use this, it is just for calculating delta!
|
||||
|
@ -32,6 +36,7 @@ typedef struct {
|
|||
qboolean scopedweapon; // Weapon scope is available
|
||||
qboolean scopedetached; // Scope has been detached from weapon
|
||||
qboolean detachablescope; // Scope can be detached from weapon
|
||||
qboolean hasbinoculars;
|
||||
|
||||
qboolean velocitytriggered; // Weapon attack triggered by velocity (knife)
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
enum control_scheme;
|
||||
|
||||
#define SCOPE_ENGAGE_DISTANCE 0.22
|
||||
#define BINOCULAR_ENGAGE_DISTANCE 0.2
|
||||
#define VELOCITY_TRIGGER 1.8
|
||||
|
||||
ovrInputStateTrackedRemote leftTrackedRemoteState_old;
|
||||
|
|
|
@ -36,7 +36,6 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
static qboolean dominantGripPushed = false;
|
||||
static float dominantGripPushTime = 0.0f;
|
||||
static int grabBackpackWeapon = 0;
|
||||
static bool canUseBackpack = false;
|
||||
|
||||
|
||||
|
@ -145,6 +144,17 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
}
|
||||
}
|
||||
|
||||
static qboolean binocularstate = qfalse;
|
||||
qboolean binocularsactive = (vr.hasbinoculars && vr.backpackitemactive == 3 &&
|
||||
(distanceToHMD < BINOCULAR_ENGAGE_DISTANCE) &&
|
||||
(pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)));
|
||||
if (binocularstate != binocularsactive)
|
||||
{
|
||||
//Engage scope if conditions are right
|
||||
binocularstate = binocularsactive;
|
||||
sendButtonAction("+zoom", binocularstate);
|
||||
}
|
||||
|
||||
//dominant hand stuff first
|
||||
{
|
||||
//Record recent weapon position for trajectory based stuff
|
||||
|
@ -200,45 +210,81 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
|
||||
canUseBackpack = false;
|
||||
}
|
||||
else if (!canUseBackpack && grabBackpackWeapon == 0) {
|
||||
else if (!canUseBackpack && vr.backpackitemactive == 0) {
|
||||
int channel = (vr_control_scheme->integer >= 10) ? 0 : 1;
|
||||
RTCWVR_Vibrate(40, channel, 0.5); // vibrate to let user know they can switch
|
||||
|
||||
canUseBackpack = true;
|
||||
}
|
||||
|
||||
if ((pDominantTrackedRemoteNew->Buttons & ovrButton_GripTrigger) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_GripTrigger)) {
|
||||
dominantGripPushed = (pDominantTrackedRemoteNew->Buttons &
|
||||
ovrButton_GripTrigger) != 0;
|
||||
bool dominantButton1Pushed = (pDominantTrackedRemoteNew->Buttons &
|
||||
domButton1) != 0;
|
||||
bool dominantButton2Pushed = (pDominantTrackedRemoteNew->Buttons &
|
||||
domButton2) != 0;
|
||||
|
||||
dominantGripPushed = (pDominantTrackedRemoteNew->Buttons &
|
||||
ovrButton_GripTrigger) != 0;
|
||||
|
||||
if (grabBackpackWeapon == 0)
|
||||
{
|
||||
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
|
||||
|
||||
if (dominantGripPushed) {
|
||||
dominantGripPushTime = GetTimeInMilliSeconds();
|
||||
} else {
|
||||
if ((GetTimeInMilliSeconds() - dominantGripPushTime) <
|
||||
vr_reloadtimeoutms->integer) {
|
||||
sendButtonActionSimple("+reload");
|
||||
finishReloadNextFrame = true;
|
||||
}
|
||||
}
|
||||
} else{
|
||||
if (dominantGripPushed) {
|
||||
//Initiate grenade from backpack mode
|
||||
sendButtonActionSimple("weaponbank 6");
|
||||
int channel = (vr_control_scheme->integer >= 10) ? 0 : 1;
|
||||
RTCWVR_Vibrate(80, channel, 0.8); // vibrate to let user know they switched
|
||||
grabBackpackWeapon = 1;
|
||||
}
|
||||
if (!canUseBackpack)
|
||||
{
|
||||
if (dominantGripPushed) {
|
||||
if (dominantGripPushTime == 0) {
|
||||
dominantGripPushTime = GetTimeInMilliSeconds();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vr.backpackitemactive == 1) {
|
||||
//Restores last used weapon if possible
|
||||
char buffer[32];
|
||||
sprintf(buffer, "weapon %i", vr.lastweaponid);
|
||||
sendButtonActionSimple(buffer);
|
||||
vr.backpackitemactive = 0;
|
||||
}
|
||||
else if ((GetTimeInMilliSeconds() - dominantGripPushTime) <
|
||||
vr_reloadtimeoutms->integer) {
|
||||
sendButtonActionSimple("+reload");
|
||||
finishReloadNextFrame = true;
|
||||
}
|
||||
dominantGripPushTime = 0;
|
||||
}
|
||||
|
||||
if (!dominantButton1Pushed && vr.backpackitemactive == 2)
|
||||
{
|
||||
char buffer[32];
|
||||
sprintf(buffer, "weapon %i", vr.lastweaponid);
|
||||
sendButtonActionSimple(buffer);
|
||||
vr.backpackitemactive = 0;
|
||||
}
|
||||
|
||||
if (!dominantButton2Pushed && vr.backpackitemactive == 3)
|
||||
{
|
||||
vr.backpackitemactive = 0;
|
||||
}
|
||||
} else {
|
||||
if (vr.backpackitemactive == 0) {
|
||||
if (dominantGripPushed) {
|
||||
vr.lastweaponid = vr.weaponid;
|
||||
//Initiate grenade from backpack mode
|
||||
sendButtonActionSimple("weaponbank 6");
|
||||
int channel = (vr_control_scheme->integer >= 10) ? 0 : 1;
|
||||
RTCWVR_Vibrate(80, channel, 0.8); // vibrate to let user know they switched
|
||||
vr.backpackitemactive = 1;
|
||||
}
|
||||
else if (dominantButton1Pushed)
|
||||
{
|
||||
vr.lastweaponid = vr.weaponid;
|
||||
//Initiate knife from backpack mode
|
||||
sendButtonActionSimple("weapon 1");
|
||||
int channel = (vr_control_scheme->integer >= 10) ? 0 : 1;
|
||||
RTCWVR_Vibrate(80, channel, 0.8); // vibrate to let user know they switched
|
||||
vr.backpackitemactive = 2;
|
||||
}
|
||||
else if (dominantButton2Pushed && vr.hasbinoculars)
|
||||
{
|
||||
int channel = (vr_control_scheme->integer >= 10) ? 0 : 1;
|
||||
RTCWVR_Vibrate(80, channel, 0.8); // vibrate to let user know they switched
|
||||
vr.backpackitemactive = 3;
|
||||
}
|
||||
} else if (grabBackpackWeapon == 1 && !dominantGripPushed) {
|
||||
//Restores last used weapon if possible
|
||||
sendButtonActionSimple("weaplastused");
|
||||
grabBackpackWeapon = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -282,14 +328,15 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
positional_movementForward);
|
||||
|
||||
//Jump (B Button)
|
||||
handleTrackedControllerButton(pDominantTrackedRemoteNew,
|
||||
pDominantTrackedRemoteOld, domButton2, K_SPACE);
|
||||
if (vr.backpackitemactive != 2 && !canUseBackpack) {
|
||||
handleTrackedControllerButton(pDominantTrackedRemoteNew,
|
||||
pDominantTrackedRemoteOld, domButton2, K_SPACE);
|
||||
}
|
||||
|
||||
|
||||
//We need to record if we have started firing primary so that releasing trigger will stop firing, if user has pushed grip
|
||||
//in meantime, then it wouldn't stop the gun firing and it would get stuck
|
||||
static bool firingPrimary = false;
|
||||
if (!firingPrimary && dominantGripPushed && (GetTimeInMilliSeconds() - dominantGripPushTime) > vr_reloadtimeoutms->integer && !grabBackpackWeapon)
|
||||
if (dominantGripPushed && (GetTimeInMilliSeconds() - dominantGripPushTime) > vr_reloadtimeoutms->integer && vr.backpackitemactive == 0)
|
||||
{
|
||||
if ((pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger))
|
||||
|
@ -309,25 +356,26 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
else
|
||||
{
|
||||
//Just ignore grip and fire
|
||||
firingPrimary = (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger);
|
||||
sendButtonAction("+attack", firingPrimary);
|
||||
sendButtonAction("+attack", (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Fire Primary
|
||||
if (!vr.velocitytriggered && // Don't fire velocity triggered weapons
|
||||
if (vr.backpackitemactive != 3 && // Can't fire while holding binoculars
|
||||
!vr.velocitytriggered && // Don't fire velocity triggered weapons
|
||||
(pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger)) {
|
||||
|
||||
firingPrimary = (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger);
|
||||
sendButtonAction("+attack", firingPrimary);
|
||||
sendButtonAction("+attack", (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger));
|
||||
}
|
||||
}
|
||||
|
||||
//Duck with A
|
||||
if ((pDominantTrackedRemoteNew->Buttons & domButton1) !=
|
||||
if (vr.backpackitemactive != 2 &&
|
||||
!canUseBackpack &&
|
||||
(pDominantTrackedRemoteNew->Buttons & domButton1) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & domButton1) &&
|
||||
ducked != DUCK_CROUCHED) {
|
||||
ducked = (pDominantTrackedRemoteNew->Buttons & domButton1) ? DUCK_BUTTON
|
||||
|
@ -344,11 +392,11 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
if (!itemSwitched) {
|
||||
if (between(0.8f, pDominantTrackedRemoteNew->Joystick.y, 1.0f))
|
||||
{
|
||||
sendButtonActionSimple("weapnext");
|
||||
sendButtonActionSimple("weapprev");
|
||||
}
|
||||
else
|
||||
{
|
||||
sendButtonActionSimple("weapprev");
|
||||
sendButtonActionSimple("weapnext");
|
||||
}
|
||||
itemSwitched = true;
|
||||
}
|
||||
|
@ -371,21 +419,6 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
sendButtonAction("+activate", (pDominantTrackedRemoteNew->Buttons & ovrButton_Joystick) ? 1 : 0);
|
||||
}
|
||||
|
||||
//Laser-sight - not implemented
|
||||
/*
|
||||
if ((pDominantTrackedRemoteNew->Buttons & ovrButton_Joystick) !=
|
||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_Joystick)
|
||||
&& (pDominantTrackedRemoteNew->Buttons & ovrButton_Joystick)) {
|
||||
|
||||
if (vr_lasersight->value != 0.0)
|
||||
{
|
||||
// Cvar_ForceSet("vr_lasersight", "0.0");
|
||||
} else {
|
||||
// Cvar_ForceSet("vr_lasersight", "1.0");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//Apply a filter and quadratic scaler so small movements are easier to make
|
||||
float dist = length(pOffTrackedRemoteNew->Joystick.x, pOffTrackedRemoteNew->Joystick.y);
|
||||
float nlf = nonLinearFilter(dist);
|
||||
|
@ -407,22 +440,24 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
|||
|
||||
|
||||
if (!canUseQuickSave) {
|
||||
if ((pOffTrackedRemoteNew->Buttons & offButton1) !=
|
||||
(pOffTrackedRemoteOld->Buttons & offButton1)) {
|
||||
if (((pOffTrackedRemoteNew->Buttons & offButton1) !=
|
||||
(pOffTrackedRemoteOld->Buttons & offButton1)) &&
|
||||
(pOffTrackedRemoteNew->Buttons & offButton1)){
|
||||
|
||||
if (dominantGripPushed) {
|
||||
//If cheats enabled, give all weapons/pickups to player
|
||||
Cbuf_AddText("give all\n");
|
||||
} else {
|
||||
sendButtonAction("+zoom", (pOffTrackedRemoteNew->Buttons & offButton1));
|
||||
vr.visible_hud = !vr.visible_hud;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//notebook
|
||||
if (!canUseQuickSave) {
|
||||
if ((pOffTrackedRemoteNew->Buttons & offButton2) !=
|
||||
(pOffTrackedRemoteOld->Buttons & offButton2)) {
|
||||
if (((pOffTrackedRemoteNew->Buttons & offButton2) !=
|
||||
(pOffTrackedRemoteOld->Buttons & offButton2)) &&
|
||||
(pOffTrackedRemoteNew->Buttons & offButton2)) {
|
||||
sendButtonActionSimple("notebook");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ If you have questions concerning this license or the applicable additional terms
|
|||
#define STATUSBARHEIGHT 452
|
||||
//----(SA) end
|
||||
|
||||
extern qboolean fullscreen_override;
|
||||
extern displayContextDef_t cgDC;
|
||||
extern vr_client_info_t* cgVR;
|
||||
menuDef_t *menuScoreboard = NULL;
|
||||
|
@ -2896,7 +2897,9 @@ static void CG_DrawFlashFade( void ) {
|
|||
VectorClear( col );
|
||||
col[3] = cgs.scrFadeAlphaCurrent;
|
||||
// CG_FillRect( -10, -10, 650, 490, col );
|
||||
fullscreen_override = qtrue;
|
||||
CG_FillRect( 0, 0, 640, 480, col ); // why do a bunch of these extend outside 640x480?
|
||||
fullscreen_override = qfalse;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2950,7 +2953,9 @@ static void CG_DrawFlashZoomTransition( void ) {
|
|||
Vector4Set( color, 0, 0, 0, 1.0f - frac );
|
||||
}
|
||||
|
||||
fullscreen_override = qtrue;
|
||||
CG_FillRect( -10, -10, 650, 490, color );
|
||||
fullscreen_override = qfalse;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2980,7 +2985,9 @@ static void CG_DrawFlashDamage( void ) {
|
|||
VectorSet( col, 0.2, 0, 0 );
|
||||
col[3] = 0.7 * ( redFlash / 5.0 );
|
||||
|
||||
fullscreen_override = qtrue;
|
||||
CG_FillRect( -10, -10, 650, 490, col );
|
||||
fullscreen_override = qfalse;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3032,7 +3039,9 @@ static void CG_DrawFlashFire( void ) {
|
|||
col[2] = alpha;
|
||||
col[3] = alpha;
|
||||
trap_R_SetColor( col );
|
||||
fullscreen_override = qtrue;
|
||||
CG_DrawPic( -10, -10, 650, 490, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] );
|
||||
fullscreen_override = qfalse;
|
||||
trap_R_SetColor( NULL );
|
||||
|
||||
trap_S_AddLoopingSound( cg.snap->ps.clientNum, cg.snap->ps.origin, vec3_origin, cgs.media.flameSound, (int)( 255.0 * alpha ) );
|
||||
|
@ -3079,7 +3088,9 @@ static void CG_DrawFlashLightning( void ) {
|
|||
shader = cgs.media.viewTeslaDamageEffectShader;
|
||||
}
|
||||
|
||||
fullscreen_override = qtrue;
|
||||
CG_DrawPic( -10, -10, 650, 490, shader );
|
||||
fullscreen_override = qfalse;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ If you have questions concerning this license or the applicable additional terms
|
|||
#include "../../../RTCWVR/VrClientInfo.h"
|
||||
|
||||
extern vr_client_info_t* cgVR;
|
||||
|
||||
qboolean fullscreen_override = qfalse;
|
||||
/*
|
||||
================
|
||||
CG_AdjustFrom640
|
||||
|
@ -59,7 +59,10 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
|
|||
}
|
||||
// -NERVE - SMF
|
||||
|
||||
if (cg.zoomedScope || cg.zoomedBinoc || cg.viewFade > 0 || ( cg.v_dmg_time > cg.time ) || ( cgs.scrFadeAlphaCurrent > 0.0 ))
|
||||
if (fullscreen_override
|
||||
|| cg.zoomedScope || cg.zoomedBinoc || cg.zoomval > 0
|
||||
|| cg.viewFade > 0 || ( cgs.scrFadeAlphaCurrent > 0.0 )
|
||||
|| !cgVR->visible_hud)
|
||||
{
|
||||
// scale for screen sizes
|
||||
*x *= cgs.screenXScale;
|
||||
|
@ -67,10 +70,10 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
|
|||
*w *= cgs.screenXScale;
|
||||
*h *= cgs.screenYScale;
|
||||
}
|
||||
else
|
||||
else // scale to clearly visible portion of VR screen
|
||||
{
|
||||
float screenXScale = cgs.screenXScale / 3.0f;
|
||||
float screenYScale = cgs.screenYScale / 3.0f;
|
||||
float screenXScale = cgs.screenXScale / 2.75f;
|
||||
float screenYScale = cgs.screenYScale / 2.75f;
|
||||
|
||||
int xoffset = -24;
|
||||
if (cg.refdef.stereoView == 1) {
|
||||
|
|
|
@ -34,6 +34,7 @@ If you have questions concerning this license or the applicable additional terms
|
|||
// It also handles local physics interaction, like fragments bouncing off walls
|
||||
|
||||
#include "cg_local.h"
|
||||
#include "../../../RTCWVR/VrClientInfo.h"
|
||||
|
||||
static pmove_t cg_pmove;
|
||||
|
||||
|
@ -42,6 +43,8 @@ static centity_t *cg_solidEntities[MAX_ENTITIES_IN_SNAPSHOT];
|
|||
static int cg_numTriggerEntities;
|
||||
static centity_t *cg_triggerEntities[MAX_ENTITIES_IN_SNAPSHOT];
|
||||
|
||||
extern vr_client_info_t *cgVR;
|
||||
|
||||
/*
|
||||
====================
|
||||
CG_BuildSolidList
|
||||
|
@ -761,5 +764,8 @@ void CG_PredictPlayerState( void ) {
|
|||
|
||||
// fire events and other transition triggered things
|
||||
CG_TransitionPlayerState( &cg.predictedPlayerState, &oldPlayerState );
|
||||
|
||||
//set a flag
|
||||
cgVR->hasbinoculars = (cg.predictedPlayerState.stats[STAT_KEYS] & ( 1 << INV_BINOCS ));
|
||||
}
|
||||
|
||||
|
|
|
@ -1513,7 +1513,7 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
|
|||
return;
|
||||
}
|
||||
|
||||
if ( cg.weaponSelect == WP_FG42SCOPE || cg.weaponSelect == WP_SNOOPERSCOPE || cg.weaponSelect == WP_SNIPERRIFLE ) {
|
||||
/* if ( cg.weaponSelect == WP_FG42SCOPE || cg.weaponSelect == WP_SNOOPERSCOPE || cg.weaponSelect == WP_SNIPERRIFLE ) {
|
||||
float spd;
|
||||
spd = VectorLength( cg.snap->ps.velocity );
|
||||
if ( spd > 180.0f ) {
|
||||
|
@ -1530,7 +1530,7 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
DEBUGTIME
|
||||
|
||||
if ( !cg.lightstylesInited ) {
|
||||
|
|
|
@ -223,6 +223,7 @@ void Matrix4x4_ConvertToEntity( vec4_t *in, vec3_t angles, vec3_t origin )
|
|||
}
|
||||
|
||||
|
||||
int binocularModel;
|
||||
int wolfkickModel;
|
||||
int hWeaponSnd;
|
||||
int hflakWeaponSnd;
|
||||
|
@ -1679,6 +1680,7 @@ void CG_RegisterItemVisuals( int itemNum ) {
|
|||
|
||||
itemInfo->registered = qtrue; //----(SA) moved this down after the registerweapon()
|
||||
|
||||
binocularModel = trap_R_RegisterModel( "models/powerups/keys/binoculars.md3" );
|
||||
wolfkickModel = trap_R_RegisterModel( "models/weapons2/foot/v_wolfoot_10f.md3" );
|
||||
hWeaponSnd = trap_S_RegisterSound( "sound/weapons/mg42/37mm.wav" );
|
||||
|
||||
|
@ -2021,8 +2023,24 @@ static float CG_CalculateWeaponPositionAndScale( playerState_t *ps, vec3_t origi
|
|||
|
||||
CG_CenterPrint( cgVR->test_name, SCREEN_HEIGHT * 0.45, SMALLCHAR_WIDTH );
|
||||
} else {
|
||||
if (cgVR->backpackitemactive == 3)
|
||||
{
|
||||
scale = 0.5f;
|
||||
VectorSet(offset, 1, -3, 0);
|
||||
vec3_t adjust;
|
||||
VectorSet(adjust, 20, 140, 0);
|
||||
|
||||
//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 adjust weapon: scale, right, up, forward
|
||||
if (ps->weapon != 0)
|
||||
else if (ps->weapon != 0)
|
||||
{
|
||||
char cvar_name[64];
|
||||
Com_sprintf(cvar_name, sizeof(cvar_name), "vr_weapon_adjustment_%i", ps->weapon);
|
||||
|
@ -2904,7 +2922,16 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
|
|||
}
|
||||
|
||||
if ( ps ) {
|
||||
gun.hModel = weapon->weaponModel[W_FP_MODEL];
|
||||
if (cgVR->backpackitemactive == 3)
|
||||
{
|
||||
gun.hModel = binocularModel;
|
||||
CG_PositionEntityOnTag( &gun, parent, "tag_weapon", 0, NULL );
|
||||
CG_AddWeaponWithPowerups( &gun, 0, ps, cent );
|
||||
return;
|
||||
}
|
||||
else {
|
||||
gun.hModel = weapon->weaponModel[W_FP_MODEL];
|
||||
}
|
||||
} else {
|
||||
CG_AddProtoWeapons( parent, ps, cent );
|
||||
// skeletal guys use a different third person weapon (for different tag business)
|
||||
|
@ -3429,15 +3456,18 @@ void CG_AddViewWeapon( playerState_t *ps ) {
|
|||
|
||||
AnglesToAxis( angles, hand.axis );
|
||||
|
||||
if ( cg_gun_frame.integer ) {
|
||||
if ( cg_gun_frame.integer) {
|
||||
hand.frame = hand.oldframe = cg_gun_frame.integer;
|
||||
hand.backlerp = 0;
|
||||
} else { // get the animation state
|
||||
CG_WeaponAnimation( ps, weapon, &hand.oldframe, &hand.frame, &hand.backlerp ); //----(SA) changed
|
||||
}
|
||||
|
||||
if (cgVR->backpackitemactive != 3)
|
||||
{
|
||||
hand.hModel = weapon->handsModel;
|
||||
}
|
||||
|
||||
hand.hModel = weapon->handsModel;
|
||||
//Weapon offset debugging
|
||||
if (weaponDebugging)
|
||||
{
|
||||
|
@ -3483,22 +3513,14 @@ void CG_AddViewWeapon( playerState_t *ps ) {
|
|||
|
||||
|
||||
// add everything onto the hand
|
||||
CG_AddPlayerWeapon( &hand, ps, &cg.predictedPlayerEntity );
|
||||
CG_AddPlayerWeapon(&hand, ps, &cg.predictedPlayerEntity);
|
||||
// Ridah
|
||||
|
||||
} // end "if ( ps->weapon > WP_NONE)"
|
||||
|
||||
// Rafael
|
||||
// add the foot
|
||||
CG_AddPlayerFoot( &hand, ps, &cg.predictedPlayerEntity );
|
||||
|
||||
//Add beam
|
||||
static centity_t beam_entity;
|
||||
VectorCopy(hand.origin, beam_entity.currentState.pos.trBase); //beam origin
|
||||
vec3_t forward;
|
||||
AngleVectors(angles, forward, NULL, NULL);
|
||||
VectorMA(beam_entity.currentState.pos.trBase, 64, forward, beam_entity.currentState.origin2); //beam end
|
||||
|
||||
//Weapon offset debugging
|
||||
if (weaponDebugging)
|
||||
{
|
||||
|
@ -4305,6 +4327,7 @@ void CG_FinishWeaponChange( int lastweap, int newweap ) {
|
|||
}
|
||||
|
||||
cg.weaponSelect = newweap;
|
||||
cgVR->weaponid = newweap; //Store in case we use backpack
|
||||
}
|
||||
|
||||
void CG_WeaponDetachScope_f( void ) {
|
||||
|
|
|
@ -42,7 +42,7 @@ If you have questions concerning this license or the applicable additional terms
|
|||
// q_shared.h -- included first by ALL program modules.
|
||||
// A user mod should never modify this file
|
||||
|
||||
#define Q3_VERSION "RTCWQuest 0.10.0 (Wolf 1.41)"
|
||||
#define Q3_VERSION "RTCWQuest 0.11.0 (Wolf 1.41)"
|
||||
// ver 1.0.0 - release
|
||||
// ver 1.0.1 - post-release work
|
||||
// ver 1.1.0 - patch 1 (12/12/01)
|
||||
|
@ -220,7 +220,7 @@ void Sys_PumpEvents( void );
|
|||
#elif defined __axp__
|
||||
#define CPUSTRING "linux-alpha"
|
||||
#elif defined ARM
|
||||
#define CPUSTRING "Oculus Quest"
|
||||
#define CPUSTRING "ARM"
|
||||
#else
|
||||
#define CPUSTRING "linux-other"
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue