mirror of
https://github.com/astromaddie/lambda1-vr.git
synced 2026-10-21 13:00:14 +02:00
New backpack implementation
This commit is contained in:
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();
|
||||
|
||||
Reference in new issue
Block a user