Spoonfeed thread for wall detection
I've tried pasting wall detection a few times however I never seem to fully understand / have them working so I decided to make a big retard thread and ask for paste material
here's my edge function
Code:
bool Edge(float flWall, float flCornor)
{
Ray_t ray;
trace_t tr;
CTraceFilter traceFilter;
traceFilter.pSkip = LocalPlayer;
auto bRetVal = false;
auto vecCurPos = LocalPlayer->GetEyePosition();
for (float i = 0; i < 360; i++)
{
Vector vecDummy(10.f, CurrentCMD->viewangles.y, 0.f);
vecDummy.y += i;
g_Math.AngleNormalise(vecDummy);
Vector vecForward;
g_Math.angleVectors(vecDummy, vecForward);
auto flLength = ((19.f) + ((19.f) * sin(DEG2RAD(10.f)))) + 7.f;
vecForward *= flLength;
ray.Init(vecCurPos, (vecCurPos + vecForward));
Interfaces.pTrace->TraceRay(ray, MASK_SHOT, static_cast<CTraceFilter*>(&traceFilter), &tr);
if (tr.fraction != 1.0f)
{
Vector qAngles;
auto vecNegate = tr.plane.normal;
vecNegate *= -1.f;
g_Math.angleVectors(vecNegate, qAngles);
vecDummy.y = qAngles.y;
g_Math.AngleNormalise(vecDummy);
trace_t leftTrace, rightTrace;
Vector vecLeft;
g_Math.angleVectors(vecDummy + Vector(0.f, 30.f, 0.f), vecLeft);
Vector vecRight;
g_Math.angleVectors(vecDummy - Vector(0.f, 30.f, 0.f), vecRight);
vecLeft *= (flLength + (flLength * sin(DEG2RAD(30.f))));
vecRight *= (flLength + (flLength * sin(DEG2RAD(30.f))));
ray.Init(vecCurPos, (vecCurPos + vecLeft));
Interfaces.pTrace->TraceRay(ray, MASK_SHOT, static_cast<CTraceFilter*>(&traceFilter), &leftTrace);
ray.Init(vecCurPos, (vecCurPos + vecRight));
Interfaces.pTrace->TraceRay(ray, MASK_SHOT, static_cast<CTraceFilter*>(&traceFilter), &rightTrace);
if ((leftTrace.fraction == 1.f) && (rightTrace.fraction != 1.f))
vecDummy.y -= flCornor; // left
else if ((leftTrace.fraction != 1.f) && (rightTrace.fraction == 1.f))
vecDummy.y += flCornor; // right
CurrentCMD->viewangles.y = vecDummy.y;
CurrentCMD->viewangles.y -= flWall;
bRetVal = true;
}
}
return bRetVal;
}
And here is how I'm calling it
Code:
case 20:
bool bEdge = Edge(360, 45.f);
if (bEdge)
return;
CurrentCMD->viewangles.y += 180