HelpSpoonfeed thread for wall detection

Posts 15 of 5 · Page 1 of 1
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
Quote Originally Posted by ddddddz View Post
bool bEdge = Edge(360, 45.f); if (bEdge) return;
what the fuck is that
Quote Originally Posted by certmemer View Post
what the fuck is that
desperation and reading old sources
solved had issue with trace class
Solved & Closed.
Posts 15 of 5 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?