2023-01-20 01:23:08 +01:00
|
|
|
|
//===== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ======//
|
|
|
|
|
//
|
|
|
|
|
// Purpose:
|
|
|
|
|
//
|
|
|
|
|
//===========================================================================//
|
|
|
|
|
#ifndef UTIL_SHARED_H
|
|
|
|
|
#define UTIL_SHARED_H
|
2023-01-21 16:22:16 +01:00
|
|
|
|
#include "public/engine/IEngineTrace.h"
|
|
|
|
|
|
|
|
|
|
class CTraceFilterSimple;
|
2023-05-31 23:55:18 +02:00
|
|
|
|
const char* UTIL_GetEntityScriptInfo(CBaseEntity* pEnt);
|
|
|
|
|
|
2023-07-03 00:02:08 +02:00
|
|
|
|
inline const char*(*v_UTIL_GetEntityScriptInfo)(CBaseEntity* pEnt);
|
2023-01-20 01:23:08 +01:00
|
|
|
|
|
2023-01-21 16:22:16 +01:00
|
|
|
|
inline CTraceFilterSimple* g_pTraceFilterSimpleVFTable = nullptr;
|
|
|
|
|
typedef bool (*ShouldHitFunc_t)(IHandleEntity* pHandleEntity, int contentsMask);
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
// traceline methods
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
class CTraceFilterSimple : public CTraceFilter
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
// It does have a base, but we'll never network anything below here..
|
|
|
|
|
//DECLARE_CLASS_NOBASE(CTraceFilterSimple);
|
|
|
|
|
|
|
|
|
|
CTraceFilterSimple(const IHandleEntity* pPassEntity, int collisionGroup, ShouldHitFunc_t pExtraShouldHitCheckFn = NULL);
|
|
|
|
|
virtual void SetPassEntity(const IHandleEntity* pPassEntity) { m_pPassEntity = pPassEntity; }
|
|
|
|
|
virtual void SetCollisionGroup(int iCollisionGroup) { m_collisionGroup = iCollisionGroup; }
|
|
|
|
|
|
|
|
|
|
const IHandleEntity* GetPassEntity(void) { return m_pPassEntity; }
|
|
|
|
|
int GetCollisionGroup(void) const { return m_collisionGroup; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
int m_collisionGroup;
|
|
|
|
|
const IHandleEntity* m_pPassEntity;
|
|
|
|
|
ShouldHitFunc_t m_pExtraShouldHitCheckFunction;
|
|
|
|
|
int m_traceType;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
class VUtil_Shared : public IDetour
|
|
|
|
|
{
|
|
|
|
|
virtual void GetAdr(void) const
|
|
|
|
|
{
|
2024-01-02 15:21:36 +01:00
|
|
|
|
LogConAdr("CTraceFilterSimple::`vftable'", g_pTraceFilterSimpleVFTable);
|
|
|
|
|
LogFunAdr("UTIL_GetEntityScriptInfo", v_UTIL_GetEntityScriptInfo);
|
2023-01-21 16:22:16 +01:00
|
|
|
|
}
|
|
|
|
|
virtual void GetFun(void) const { }
|
2023-05-31 23:55:18 +02:00
|
|
|
|
virtual void GetVar(void) const
|
|
|
|
|
{
|
2024-01-02 15:21:36 +01:00
|
|
|
|
g_GameDll.FindPatternSIMD("E8 ?? ?? ?? ?? 4C 8B 5E ??").FollowNearCallSelf().GetPtr(v_UTIL_GetEntityScriptInfo);
|
2023-05-31 23:55:18 +02:00
|
|
|
|
}
|
2023-01-21 16:22:16 +01:00
|
|
|
|
virtual void GetCon(void) const
|
|
|
|
|
{
|
2023-01-22 13:05:26 +01:00
|
|
|
|
g_pTraceFilterSimpleVFTable = g_GameDll.GetVirtualMethodTable(".?AVCTraceFilterSimple@@").RCast<CTraceFilterSimple*>();
|
2023-01-21 16:22:16 +01:00
|
|
|
|
}
|
2023-11-26 13:21:20 +01:00
|
|
|
|
virtual void Detour(const bool bAttach) const { }
|
2023-01-21 16:22:16 +01:00
|
|
|
|
};
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2023-01-20 01:23:08 +01:00
|
|
|
|
#endif // !UTIL_SHARED_H
|