New backpack implementation

This commit is contained in:
Michael Thomas committed 2022-05-07 17:16:00 +07:00
1 parent e8250ffdbf
commit 3bf2b1f4f2
6 files changed
+40 -10

No files matched your search

@@ -52,6 +52,8 @@ void HandleInput_OneController( ovrInputStateTrackedRemote *pDominantTrackedRemo
bool stabiliseScope;
void updateScopeAngles(float forwardYaw);
bool isBackpack(ovrTracking* pTracking);
char * g_pszBackpackWeapon;
#endif //VRINPUT_H
@@ -47,7 +47,7 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr
static bool selectingWeapon = false;
static bool canUseQuickSave = false;
if (pOffTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pOffTracking)) {
canUseQuickSave = false;
}
else if (!canUseQuickSave) {
@@ -212,7 +212,7 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr
finishReloadNextFrame = false;
}
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
canUseBackpack = false;
}
else if (!canUseBackpack && grabMeleeWeapon == 0) {
@@ -232,7 +232,7 @@ void HandleInput_Alt( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovr
if (grabMeleeWeapon == 0)
{
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
if (dominantGripPushed) {
dominantGripPushTime = GetTimeInMilliSeconds();
@@ -46,7 +46,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov
static float dominantGripPushTime = 0.0f;
static bool canUseQuickSave = false;
if (pOffTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pOffTracking)) {
canUseQuickSave = false;
}
else if (!canUseQuickSave) {
@@ -223,7 +223,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov
finishReloadNextFrame = false;
}
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
canUseBackpack = false;
}
else if (!canUseBackpack && grabMeleeWeapon == 0) {
@@ -243,7 +243,7 @@ void HandleInput_Alt2( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ov
if (grabMeleeWeapon == 0)
{
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
if (dominantGripPushed) {
dominantGripPushTime = GetTimeInMilliSeconds();
@@ -212,3 +212,31 @@ void updateScopeAngles(float forwardYaw)
VectorSet(currentScopeAngles, -weaponangles[ADJUSTED][PITCH], weaponangles[ADJUSTED][YAW] - (forwardYaw+snapTurn), hmdorientation[ROLL]);
}
}
// Check if pTracking is within 0.4 of the HMD and in a 120 degree arc "behind" it
bool isBackpack(ovrTracking* pTracking)
{
const ovrVector3f position = pTracking->HeadPose.Pose.Position;
double distanceFromHmd = sqrtf(
((hmdPosition[0] - position.x) * (hmdPosition[0] - position.x)) +
((hmdPosition[1] - position.y) * (hmdPosition[1] - position.y)) +
((hmdPosition[2] - position.z) * (hmdPosition[2] - position.z))
);
if(distanceFromHmd > 0.4){
return false;
}
double trackingAngle = atan2(hmdPosition[0] - position.x, hmdPosition[2] - position.z) * (180 / M_PI);
double angleFromHmd = trackingAngle - playerYaw;
if(angleFromHmd > 180){
angleFromHmd -= 360.0f;
}
else if(angleFromHmd < -180){
angleFromHmd += 360.0f;
}
return abs(angleFromHmd) > 120;
}
@@ -46,7 +46,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
static float dominantGripPushTime = 0.0f;
static bool canUseQuickSave = false;
if (pOffTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pOffTracking)) {
canUseQuickSave = false;
}
else if (!canUseQuickSave) {
@@ -223,7 +223,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
finishReloadNextFrame = false;
}
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
canUseBackpack = false;
}
else if (!canUseBackpack && grabMeleeWeapon == 0) {
@@ -243,7 +243,7 @@ void HandleInput_Default( ovrInputStateTrackedRemote *pDominantTrackedRemoteNew,
if (grabMeleeWeapon == 0)
{
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
if (dominantGripPushed) {
dominantGripPushTime = GetTimeInMilliSeconds();
@@ -136,7 +136,7 @@ void HandleInput_OneController( ovrInputStateTrackedRemote *pDominantTrackedRemo
dominantGripPushed = (pDominantTrackedRemoteNew->Buttons &
ovrButton_GripTrigger) != 0;
if (pDominantTracking->Status & (VRAPI_TRACKING_STATUS_POSITION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_VALID)) {
if (!isBackpack(pDominantTracking)) {
if (dominantGripPushed) {
dominantGripPushTime = GetTimeInMilliSeconds();