Update pointer logic

This commit is contained in:
SlynxCZ 2026-04-15 18:00:15 +02:00
parent fb519778e7
commit 6ba34070c7
3 changed files with 32 additions and 32 deletions

View file

@ -171,28 +171,28 @@ class CRayTraceInterface
public: public:
virtual ~CRayTraceInterface() = default; virtual ~CRayTraceInterface() = default;
virtual bool TraceShape(const Vector& vecStart, virtual bool TraceShape(const Vector* pVecStart,
const QAngle& angAngles, const QAngle* pAngAngles,
CEntityInstance* pIgnoreEntity, CEntityInstance* pIgnoreEntity,
TraceOptions* pTraceOptions, TraceOptions* pTraceOptions,
TraceResult* pTraceResult) = 0; TraceResult* pTraceResult) = 0;
virtual bool TraceEndShape(const Vector& vecStart, virtual bool TraceEndShape(const Vector* pVecStart,
const Vector& vecEnd, const Vector* pVecEnd,
CEntityInstance* pIgnoreEntity, CEntityInstance* pIgnoreEntity,
TraceOptions* pTraceOptions, TraceOptions* pTraceOptions,
TraceResult* pTraceResult) = 0; TraceResult* pTraceResult) = 0;
virtual bool TraceHullShape(const Vector& vecStart, virtual bool TraceHullShape(const Vector* pVecStart,
const Vector& vecEnd, const Vector* pVecEnd,
const Vector& vecMins, const Vector* pVecMins,
const Vector& vecMaxs, const Vector* pVecMaxs,
CEntityInstance* pIgnoreEntity, CEntityInstance* pIgnoreEntity,
TraceOptions* pTraceOptions, TraceOptions* pTraceOptions,
TraceResult* pTraceResult) = 0; TraceResult* pTraceResult) = 0;
virtual bool TraceShapeEx(const Vector& vecStart, virtual bool TraceShapeEx(const Vector* pVecStart,
const Vector& vecEnd, const Vector* pVecEnd,
CTraceFilter* pTraceFilter, CTraceFilter* pTraceFilter,
Ray_t* pRay, Ray_t* pRay,
TraceResult* pTraceResult) = 0; TraceResult* pTraceResult) = 0;

View file

@ -43,7 +43,7 @@ namespace RayTracePlugin::RayTrace
beam->DispatchSpawn(); 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<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx(); CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx();
@ -61,26 +61,26 @@ namespace RayTracePlugin::RayTrace
} }
Vector forward; Vector forward;
AngleVectors(angAngles, &forward); AngleVectors(pAngAngles ? *pAngAngles : VectorExtends::RotationZero, &forward);
Vector vecEnd{ Vector vecEnd{
vecStart.x + forward.x * 8192.f, pVecStart ? pVecStart->x : 0 + forward.x * 8192.f,
vecStart.y + forward.y * 8192.f, pVecStart ? pVecStart->y : 0 + forward.y * 8192.f,
vecStart.z + forward.z * 8192.f pVecStart ? pVecStart->z : 0 + forward.z * 8192.f
}; };
Ray_t ray; Ray_t ray;
auto res = TraceShapeEx(vecStart, vecEnd, &filter, &ray, pTraceResult); auto res = TraceShapeEx(pVecStart, &vecEnd, &filter, &ray, pTraceResult);
if (pTraceOptions && pTraceOptions->DrawBeam) if (pTraceOptions && pTraceOptions->DrawBeam)
{ {
Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); 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; 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<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx(); CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx();
@ -98,19 +98,19 @@ namespace RayTracePlugin::RayTrace
} }
Ray_t ray; Ray_t ray;
auto res = TraceShapeEx(vecStart, vecEnd, &filter, &ray, pTraceResult); auto res = TraceShapeEx(pVecStart, pVecEnd, &filter, &ray, pTraceResult);
if (pTraceOptions && pTraceOptions->DrawBeam) if (pTraceOptions && pTraceOptions->DrawBeam)
{ {
Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); 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; return res;
} }
bool CRayTrace::TraceHullShape(const Vector& vecStart, const Vector& vecEnd, const Vector& vecMins, bool CRayTrace::TraceHullShape(const Vector* pVecStart, const Vector* pVecEnd, const Vector* pVecMins,
const Vector& vecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) const Vector* pVecMaxs, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult)
{ {
CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx(); CTraceFilterEx filter = pIgnoreEntity ? CTraceFilterEx(static_cast<CBaseEntity*>(pIgnoreEntity)) : CTraceFilterEx();
@ -128,20 +128,20 @@ namespace RayTracePlugin::RayTrace
} }
Ray_t ray; 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) if (pTraceOptions && pTraceOptions->DrawBeam)
{ {
Color col = res ? colors::Red().ToValveColor() : colors::Green().ToValveColor(); 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; 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) if (!m_pCNavPhysicsInterface_TraceShape)
{ {
@ -149,8 +149,8 @@ namespace RayTracePlugin::RayTrace
return false; return false;
} }
Vector vecStartCopy = vecStart; Vector vecStartCopy = pVecStart ? *pVecStart : VectorExtends::VectorZero;
Vector vecEndCopy = vecEnd; Vector vecEndCopy = pVecEnd ? *pVecEnd : VectorExtends::VectorZero;
CGameTrace trace; CGameTrace trace;
bool bResult = m_pCNavPhysicsInterface_TraceShape.RCast< bool bResult = m_pCNavPhysicsInterface_TraceShape.RCast<

View file

@ -31,10 +31,10 @@ namespace RayTracePlugin::RayTrace
public: public:
bool Initialize(); bool Initialize();
public: public:
bool TraceShape(const Vector& vecStart, const QAngle& angAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override; bool TraceShape(const Vector* pVecStart, const QAngle* pAngAngles, CEntityInstance* pIgnoreEntity, TraceOptions* pTraceOptions, TraceResult* pTraceResult) override;
bool TraceEndShape(const Vector& vecStart, const Vector& vecEnd, 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& vecStart, const Vector& vecEnd, const Vector& vecMins, const Vector& vecMaxs, 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& vecStart, const Vector& vecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) override; bool TraceShapeEx(const Vector* pVecStart, const Vector* pVecEnd, CTraceFilter* pTraceFilter, Ray_t* pRay, TraceResult* pTraceResult) override;
protected: protected:
DynLibUtils::CMemory m_pCNavPhysicsInterface_TraceShape; DynLibUtils::CMemory m_pCNavPhysicsInterface_TraceShape;
protected: protected: