mirror of
https://github.com/DrBeef/RTCWQuest.git
synced 2025-02-28 14:21:16 +00:00
Make knife true 6DoF weapon
This commit is contained in:
parent
d5a0bd09a2
commit
04352f89be
6 changed files with 51 additions and 20 deletions
|
@ -30,6 +30,10 @@ typedef struct {
|
||||||
qboolean scopeready; // Scope can be engaged
|
qboolean scopeready; // Scope can be engaged
|
||||||
qboolean scopedweapon; // Weapon supports scope
|
qboolean scopedweapon; // Weapon supports scope
|
||||||
|
|
||||||
|
qboolean velocitytriggered; // Weapon attack triggered by velocity (knife)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vec3_t offhandangles;
|
vec3_t offhandangles;
|
||||||
vec3_t offhandoffset;
|
vec3_t offhandoffset;
|
||||||
} vr_client_info_t;
|
} vr_client_info_t;
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
//New control scheme definitions to be defined L1VR_SurfaceView.c enumeration
|
//New control scheme definitions to be defined L1VR_SurfaceView.c enumeration
|
||||||
enum control_scheme;
|
enum control_scheme;
|
||||||
|
|
||||||
#define SCOPE_ENGAGE_DISTANCE 0.3
|
#define SCOPE_ENGAGE_DISTANCE 0.3
|
||||||
|
#define VELOCITY_TRIGGER 2.0
|
||||||
|
|
||||||
ovrInputStateTrackedRemote leftTrackedRemoteState_old;
|
ovrInputStateTrackedRemote leftTrackedRemoteState_old;
|
||||||
ovrInputStateTrackedRemote leftTrackedRemoteState_new;
|
ovrInputStateTrackedRemote leftTrackedRemoteState_new;
|
||||||
|
|
|
@ -162,6 +162,22 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
||||||
vr.weaponoffset[2] = pDominantTracking->HeadPose.Pose.Position.z - vr.hmdposition[2];
|
vr.weaponoffset[2] = pDominantTracking->HeadPose.Pose.Position.z - vr.hmdposition[2];
|
||||||
vr.weaponoffset_timestamp = Sys_Milliseconds( );
|
vr.weaponoffset_timestamp = Sys_Milliseconds( );
|
||||||
|
|
||||||
|
//Does weapon velocity trigger attack (knife) and is it fast enough
|
||||||
|
if (vr.velocitytriggered)
|
||||||
|
{
|
||||||
|
static qboolean fired = qfalse;
|
||||||
|
float velocity = sqrtf(powf(pDominantTracking->HeadPose.LinearVelocity.x, 2) +
|
||||||
|
powf(pDominantTracking->HeadPose.LinearVelocity.y, 2) +
|
||||||
|
powf(pDominantTracking->HeadPose.LinearVelocity.z, 2));
|
||||||
|
|
||||||
|
ALOGV(" Velocity: %f", velocity);
|
||||||
|
|
||||||
|
if (fired != (velocity > VELOCITY_TRIGGER)) {
|
||||||
|
sendButtonAction("+attack", (velocity > VELOCITY_TRIGGER));
|
||||||
|
fired = (velocity > VELOCITY_TRIGGER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (vr.weapon_stabilised)
|
if (vr.weapon_stabilised)
|
||||||
{
|
{
|
||||||
float z = pOffTracking->HeadPose.Pose.Position.z - pDominantTracking->HeadPose.Pose.Position.z;
|
float z = pOffTracking->HeadPose.Pose.Position.z - pDominantTracking->HeadPose.Pose.Position.z;
|
||||||
|
@ -287,7 +303,8 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Fire Primary
|
//Fire Primary
|
||||||
if ((pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) !=
|
if (!vr.velocitytriggered && // Don't fire velocity triggered weapons
|
||||||
|
(pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger) !=
|
||||||
(pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger)) {
|
(pDominantTrackedRemoteOld->Buttons & ovrButton_Trigger)) {
|
||||||
|
|
||||||
firingPrimary = (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger);
|
firingPrimary = (pDominantTrackedRemoteNew->Buttons & ovrButton_Trigger);
|
||||||
|
|
|
@ -2,10 +2,8 @@
|
||||||
|
|
||||||
RTCW_BASE_CFLAGS = \
|
RTCW_BASE_CFLAGS = \
|
||||||
-fsigned-char \
|
-fsigned-char \
|
||||||
-march=armv7-a -mfloat-abi=softfp \
|
-Ofast -fomit-frame-pointer -ffast-math -fno-strict-aliasing -fstrength-reduce -ftree-vectorize -fsingle-precision-constant \
|
||||||
-DNDEBUG -DNDEBUG -Ofast -fomit-frame-pointer -ffast-math -fno-strict-aliasing -fstrength-reduce -ftree-vectorize -fsingle-precision-constant \
|
-pipe -DPANDORA -DHAVE_GLES -DARM -DC_ONLY
|
||||||
-pipe -DPANDORA -DHAVE_GLES -DARM -DC_ONLY \
|
|
||||||
-DAUTOAIM
|
|
||||||
|
|
||||||
#-DNEON -mfpu=neon
|
#-DNEON -mfpu=neon
|
||||||
|
|
||||||
|
|
|
@ -3223,6 +3223,28 @@ void CG_AddViewWeapon( playerState_t *ps ) {
|
||||||
// add the foot
|
// add the foot
|
||||||
CG_AddPlayerFoot( &hand, ps, &cg.predictedPlayerEntity );
|
CG_AddPlayerFoot( &hand, ps, &cg.predictedPlayerEntity );
|
||||||
|
|
||||||
|
|
||||||
|
//Set some important flags based on the current weapon
|
||||||
|
switch ( ps->weapon ) {
|
||||||
|
case WP_KNIFE:
|
||||||
|
cgVR->velocitytriggered = qtrue;
|
||||||
|
cgVR->scopedweapon = qfalse;
|
||||||
|
break;
|
||||||
|
case WP_GARAND:
|
||||||
|
case WP_SNIPERRIFLE:
|
||||||
|
case WP_MAUSER:
|
||||||
|
case WP_SNOOPERSCOPE:
|
||||||
|
case WP_FG42:
|
||||||
|
case WP_FG42SCOPE:
|
||||||
|
cgVR->velocitytriggered = qfalse;
|
||||||
|
cgVR->scopedweapon = qtrue;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cgVR->velocitytriggered = qfalse;
|
||||||
|
cgVR->scopedweapon = qfalse;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
cg.predictedPlayerEntity.lastWeaponClientFrame = cg.clientFrame;
|
cg.predictedPlayerEntity.lastWeaponClientFrame = cg.clientFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4003,20 +4025,6 @@ void CG_FinishWeaponChange( int lastweap, int newweap ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ( newweap ) {
|
|
||||||
case WP_GARAND:
|
|
||||||
case WP_SNIPERRIFLE:
|
|
||||||
case WP_MAUSER:
|
|
||||||
case WP_SNOOPERSCOPE:
|
|
||||||
case WP_FG42:
|
|
||||||
case WP_FG42SCOPE:
|
|
||||||
cgVR->scopedweapon = qtrue;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
cgVR->scopedweapon = qfalse;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cg.weaponSelect = newweap;
|
cg.weaponSelect = newweap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3303,6 +3303,9 @@ if ( pm->ps->weapon == WP_AKIMBO ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ( pm->ps->weapon ) {
|
switch ( pm->ps->weapon ) {
|
||||||
|
case WP_KNIFE:
|
||||||
|
//Play no animation for the knife (as it is physical stabby stabby)
|
||||||
|
break;
|
||||||
case WP_MAUSER:
|
case WP_MAUSER:
|
||||||
case WP_GRENADE_LAUNCHER:
|
case WP_GRENADE_LAUNCHER:
|
||||||
case WP_GRENADE_PINEAPPLE:
|
case WP_GRENADE_PINEAPPLE:
|
||||||
|
|
Loading…
Reference in a new issue