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:
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;

View file

@ -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<CBaseEntity*>(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<CBaseEntity*>(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<CBaseEntity*>(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<

View file

@ -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: