From 6ba34070c73b99211d5fbbe7018d59f3c0025f53 Mon Sep 17 00:00:00 2001 From: SlynxCZ Date: Wed, 15 Apr 2026 18:00:15 +0200 Subject: [PATCH] Update pointer logic --- public/craytraceinterface.h | 20 ++++++++++---------- src/raytrace.cpp | 36 ++++++++++++++++++------------------ src/raytrace.h | 8 ++++---- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/public/craytraceinterface.h b/public/craytraceinterface.h index 4d179d8..af18c0d 100644 --- a/public/craytraceinterface.h +++ b/public/craytraceinterface.h @@ -171,28 +171,28 @@ class CRayTraceInterface public: virtual ~CRayTraceInterface() = default; - virtual bool TraceShape(const Vector& vecStart, - const QAngle& angAngles, + virtual bool TraceShape(const Vector* pVecStart, + const QAngle* pAngAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) = 0; - virtual bool TraceEndShape(const Vector& vecStart, - const Vector& vecEnd, + virtual bool TraceEndShape(const Vector* pVecStart, + const Vector* pVecEnd, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) = 0; - virtual bool TraceHullShape(const Vector& vecStart, - const Vector& vecEnd, - const Vector& vecMins, - const Vector& vecMaxs, + virtual bool TraceHullShape(const Vector* pVecStart, + const Vector* pVecEnd, + const Vector* pVecMins, + const Vector* pVecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) = 0; - virtual bool TraceShapeEx(const Vector& vecStart, - const Vector& vecEnd, + virtual bool TraceShapeEx(const Vector* pVecStart, + const Vector* pVecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) = 0; diff --git a/src/raytrace.cpp b/src/raytrace.cpp index c16168f..a698bc8 100644 --- a/src/raytrace.cpp +++ b/src/raytrace.cpp @@ -43,7 +43,7 @@ namespace RayTracePlugin::RayTrace beam->DispatchSpawn(); } - bool CRayTrace::TraceShape(const Vector& vecStart, const QAngle& angAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) + bool CRayTrace::TraceShape(const Vector* pVecStart, const QAngle* pAngAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) { CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast(pIgnoreEntity)) : CTraceFilterEx(); @@ -61,26 +61,26 @@ namespace RayTracePlugin::RayTrace } Vector forward; - AngleVectors(angAngles, &forward); + AngleVectors(pAngAngles ? *pAngAngles : VectorExtends::RotationZero, &forward); Vector vecEnd{ - vecStart.x + forward.x * 8192.f, - vecStart.y + forward.y * 8192.f, - vecStart.z + forward.z * 8192.f + pVecStart ? pVecStart->x : 0 + forward.x * 8192.f, + pVecStart ? pVecStart->y : 0 + forward.y * 8192.f, + pVecStart ? pVecStart->z : 0 + forward.z * 8192.f }; Ray_t ray; - auto res = TraceShapeEx(vecStart, vecEnd, &filter, &ray, pTraceResult); + auto res = TraceShapeEx(pVecStart, &vecEnd, &filter, &ray, pTraceResult); if (pTraceOptions && pTraceOptions->DrawBeam) { Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); - DrawBeam(vecStart, (res && pTraceResult) ? pTraceResult->EndPos : vecEnd, col); + DrawBeam(pVecStart ? *pVecStart : VectorExtends::VectorZero, (res && pTraceResult) ? pTraceResult->EndPos : vecEnd, col); } return res; } - bool CRayTrace::TraceEndShape(const Vector& vecStart, const Vector& vecEnd, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) + bool CRayTrace::TraceEndShape(const Vector* pVecStart, const Vector* pVecEnd, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) { CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast(pIgnoreEntity)) : CTraceFilterEx(); @@ -98,19 +98,19 @@ namespace RayTracePlugin::RayTrace } Ray_t ray; - auto res = TraceShapeEx(vecStart, vecEnd, &filter, &ray, pTraceResult); + auto res = TraceShapeEx(pVecStart, pVecEnd, &filter, &ray, pTraceResult); if (pTraceOptions && pTraceOptions->DrawBeam) { Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); - DrawBeam(vecStart, (res && pTraceResult) ? pTraceResult->EndPos : vecEnd, col); + DrawBeam(pVecEnd ? *pVecEnd : VectorExtends::VectorZero, (res && pTraceResult) ? pTraceResult->EndPos : (pVecEnd ? *pVecEnd : VectorExtends::VectorZero), col); } return res; } - bool CRayTrace::TraceHullShape(const Vector& vecStart, const Vector& vecEnd, const Vector& vecMins, - const Vector& vecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) + bool CRayTrace::TraceHullShape(const Vector* pVecStart, const Vector* pVecEnd, const Vector* pVecMins, + const Vector* pVecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) { CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast(pIgnoreEntity)) : CTraceFilterEx(); @@ -128,20 +128,20 @@ namespace RayTracePlugin::RayTrace } Ray_t ray; - ray.Init(vecMins, vecMaxs); + ray.Init(pVecMins ? *pVecMins : VectorExtends::VectorZero, pVecMaxs ? *pVecMaxs : VectorExtends::VectorZero); - auto res = TraceShapeEx(vecStart, vecEnd, &filter, &ray, pTraceResult); + auto res = TraceShapeEx(pVecStart, pVecEnd, &filter, &ray, pTraceResult); if (pTraceOptions && pTraceOptions->DrawBeam) { Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); - DrawBeam(vecStart, (res && pTraceResult) ? pTraceResult->EndPos : vecEnd, col); + DrawBeam(pVecEnd ? *pVecEnd : VectorExtends::VectorZero, (res && pTraceResult) ? pTraceResult->EndPos : (pVecEnd ? *pVecEnd : VectorExtends::VectorZero), col); } return res; } - bool CRayTrace::TraceShapeEx(const Vector& vecStart, const Vector& vecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) + bool CRayTrace::TraceShapeEx(const Vector* pVecStart, const Vector* pVecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) { if (!m_pCNavPhysicsInterface_TraceShape) { @@ -149,8 +149,8 @@ namespace RayTracePlugin::RayTrace return false; } - Vector vecStartCopy = vecStart; - Vector vecEndCopy = vecEnd; + Vector vecStartCopy = pVecStart ? *pVecStart : VectorExtends::VectorZero; + Vector vecEndCopy = pVecEnd ? *pVecEnd : VectorExtends::VectorZero; CGameTrace trace; bool bResult = m_pCNavPhysicsInterface_TraceShape.RCast< diff --git a/src/raytrace.h b/src/raytrace.h index d65b0ae..9b0387e 100644 --- a/src/raytrace.h +++ b/src/raytrace.h @@ -31,10 +31,10 @@ namespace RayTracePlugin::RayTrace public: bool Initialize(); public: - bool TraceShape(const Vector& vecStart, const QAngle& angAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; - bool TraceEndShape(const Vector& vecStart, const Vector& vecEnd, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; - bool TraceHullShape(const Vector& vecStart, const Vector& vecEnd, const Vector& vecMins, const Vector& vecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; - bool TraceShapeEx(const Vector& vecStart, const Vector& vecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) override; + bool TraceShape(const Vector* pVecStart, const QAngle* pAngAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; + bool TraceEndShape(const Vector* pVecStart, const Vector* pVecEnd, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; + bool TraceHullShape(const Vector* pVecStart, const Vector* pVecEnd, const Vector* pVecMins, const Vector* pVecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; + bool TraceShapeEx(const Vector* pVecStart, const Vector* pVecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) override; protected: DynLibUtils::CMemory m_pCNavPhysicsInterface_TraceShape; protected: