Merge pull request #8 from adriansmares/master

Support l4d and l4d2 SDKs
This commit is contained in:
Ryan Stecker 2024-03-28 18:52:45 -05:00 committed by GitHub
commit 212ca95688
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 13 deletions

View File

@ -29,7 +29,7 @@ jobs:
env:
PROJECT: "collisionhook"
SDKS: "css hl2dm dods tf2"
SDKS: "css hl2dm dods tf2 l4d l4d2"
MMSOURCE_VERSION: "1.11"
SOURCEMOD_VERSION: "1.11"
CACHE_PATH: ${{ github.workspace }}/cache
@ -103,12 +103,7 @@ jobs:
# Verify github cache, and see if we don't have the sdks already cloned and update them
for sdk in ${{ env.SDKS }}
do
# TODO: remove these conditionals once https://github.com/alliedmodders/hl2sdk/pull/198 is merged
if [ "${sdk}" == "tf2" ]; then
shallow_checkout "https://github.com/Kenzzer/hl2sdk" "tf2_win64" "hl2sdk-tf2"
else
shallow_checkout "https://github.com/alliedmodders/hl2sdk" "${sdk}" "hl2sdk-${sdk}"
fi
shallow_checkout "https://github.com/alliedmodders/hl2sdk" "${sdk}" "hl2sdk-${sdk}"
done
shallow_checkout "https://github.com/alliedmodders/ambuild" "master" "ambuild"

View File

@ -22,7 +22,11 @@ SMEXT_LINK( &g_CollisionHook );
SH_DECL_HOOK0( IPhysics, CreateEnvironment, SH_NOATTRIB, 0 , IPhysicsEnvironment * );
SH_DECL_HOOK1_void( IPhysicsEnvironment, SetCollisionSolver, SH_NOATTRIB, 0, IPhysicsCollisionSolver * );
#if SOURCE_ENGINE == SE_LEFT4DEAD2
SH_DECL_HOOK6( IPhysicsCollisionSolver, ShouldCollide, SH_NOATTRIB, 0, int, IPhysicsObject *, IPhysicsObject *, void *, void *, const PhysicsCollisionRulesCache_t &, const PhysicsCollisionRulesCache_t & );
#else
SH_DECL_HOOK4( IPhysicsCollisionSolver, ShouldCollide, SH_NOATTRIB, 0, int, IPhysicsObject *, IPhysicsObject *, void *, void * );
#endif
IGameConfig *g_pGameConf = NULL;
@ -175,7 +179,11 @@ void CollisionHook::SetCollisionSolver( IPhysicsCollisionSolver *pSolver )
RETURN_META( MRES_IGNORED );
}
#if SOURCE_ENGINE == SE_LEFT4DEAD2
int CollisionHook::VPhysics_ShouldCollide( IPhysicsObject *pObj1, IPhysicsObject *pObj2, void *pGameData1, void *pGameData2, const PhysicsCollisionRulesCache_t &objCache1, const PhysicsCollisionRulesCache_t &obhCache2 )
#else
int CollisionHook::VPhysics_ShouldCollide( IPhysicsObject *pObj1, IPhysicsObject *pObj2, void *pGameData1, void *pGameData2 )
#endif
{
if ( g_pCollisionFwd->GetFunctionCount() == 0 )
RETURN_META_VALUE( MRES_IGNORED, 1 ); // no plugins are interested, let the game decide

View File

@ -9,6 +9,9 @@
class IPhysicsEnvironment;
class IPhysicsCollisionSolver;
class IPhysicsObject;
#if SOURCE_ENGINE == SE_LEFT4DEAD2
struct PhysicsCollisionRulesCache_t;
#endif
class CollisionHook :
@ -87,17 +90,21 @@ public:
public: // hooks
IPhysicsEnvironment *CreateEnvironment();
void SetCollisionSolver( IPhysicsCollisionSolver *pSolver );
#if SOURCE_ENGINE == SE_LEFT4DEAD2
int VPhysics_ShouldCollide( IPhysicsObject *pObj1, IPhysicsObject *pObj2, void *pGameData1, void *pGameData2, const PhysicsCollisionRulesCache_t &objCache1, const PhysicsCollisionRulesCache_t &objCache2 );
#else
int VPhysics_ShouldCollide( IPhysicsObject *pObj1, IPhysicsObject *pObj2, void *pGameData1, void *pGameData2 );
#endif
};
// adapted from util_shared.h
inline const CBaseEntity *UTIL_EntityFromEntityHandle( const IHandleEntity *pConstHandleEntity )
{
IHandleEntity *pHandleEntity = const_cast<IHandleEntity *>( pConstHandleEntity );
IServerUnknown *pUnk = static_cast<IServerUnknown *>( pHandleEntity );
return pUnk->GetBaseEntity();
inline const CBaseEntity *UTIL_EntityFromEntityHandle( const IHandleEntity *pConstHandleEntity )
{
IHandleEntity *pHandleEntity = const_cast<IHandleEntity *>( pConstHandleEntity );
IServerUnknown *pUnk = static_cast<IServerUnknown *>( pHandleEntity );
return pUnk->GetBaseEntity();
}