mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
VPhysics: add CPhysicsCollision singleton
Used for CStudioVCollide::~CStudioVCollide().
This commit is contained in:
parent
82b56fed5c
commit
a8074b4c99
@ -38,6 +38,7 @@
|
||||
#include "codecs/miles/miles_impl.h"
|
||||
#include "codecs/miles/radshal_wasapi.h"
|
||||
#endif // !DEDICATED
|
||||
#include "vphysics/physics_collide.h"
|
||||
#include "vphysics/QHull.h"
|
||||
#include "engine/staticpropmgr.h"
|
||||
#include "materialsystem/cmaterialsystem.h"
|
||||
@ -502,6 +503,7 @@ void DetourRegister() // Register detour classes to be searched and hooked.
|
||||
#endif // !DEDICATED
|
||||
|
||||
// VPhysics
|
||||
REGISTER(VPhysicsCollide);
|
||||
REGISTER(VQHull);
|
||||
|
||||
// StaticPropMgr
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "datacache/imdlcache.h"
|
||||
#include "public/studio.h"
|
||||
#include "public/vphysics/phyfile.h"
|
||||
#include "public/vphysics/vcollide.h"
|
||||
#include "vphysics/physics_collide.h"
|
||||
#include "public/rtech/ipakfile.h"
|
||||
|
||||
class CStudioFallbackHandler
|
||||
@ -105,10 +105,10 @@ private:
|
||||
struct CStudioVCollide : public CRefCounted<>
|
||||
{
|
||||
public:
|
||||
//~CStudioVCollide() // TODO: add g_PhysicsCollision to SDK
|
||||
//{
|
||||
// g_pPhysicsCollision->VCollideUnload(&m_vcollide);
|
||||
//}
|
||||
~CStudioVCollide()
|
||||
{
|
||||
PhysicsCollision()->VCollideUnload(&m_vcollide);
|
||||
}
|
||||
vcollide_t* GetVCollide()
|
||||
{
|
||||
return &m_vcollide;
|
||||
|
40
r5dev/public/vphysics/vphysics_interface.h
Normal file
40
r5dev/public/vphysics/vphysics_interface.h
Normal file
@ -0,0 +1,40 @@
|
||||
//=============================================================================//
|
||||
//
|
||||
// Purpose: Public interfaces to vphysics DLL
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#ifndef VPHYSICS_INTERFACE_H
|
||||
#define VPHYSICS_INTERFACE_H
|
||||
#include "public/vphysics/vcollide.h"
|
||||
|
||||
#define VPHYSICS_COLLISION_INTERFACE_VERSION "VPhysicsCollision007"
|
||||
|
||||
abstract_class IPhysicsCollision
|
||||
{
|
||||
public:
|
||||
virtual ~IPhysicsCollision(void) {}
|
||||
|
||||
private:
|
||||
// TODO: reverse these:
|
||||
virtual void sub_14058C3B0() = 0;
|
||||
virtual void sub_14058C3F0() = 0;
|
||||
virtual void sub_14058CD80() = 0;
|
||||
virtual void sub_14058C6E0() = 0;
|
||||
virtual void sub_14058C6F0() = 0;
|
||||
virtual void sub_14058CDD0() = 0;
|
||||
virtual void sub_14058CB50() = 0;
|
||||
virtual void sub_14058C980() = 0;
|
||||
virtual void sub_14058D3D0() = 0;
|
||||
virtual void sub_14058D400() = 0;
|
||||
virtual void sub_14058C0D0() = 0;
|
||||
virtual void sub_14058C060() = 0;
|
||||
|
||||
public:
|
||||
virtual void VCollideLoad(vcollide_t* const pOutput, const int numSolids, const char* const pBuffer) = 0;
|
||||
virtual void VCollideUnload(vcollide_t* const pVCollide) = 0;
|
||||
|
||||
// TODO: there is more past this, see r5apex.exe @1413A9420
|
||||
};
|
||||
|
||||
#endif // VPHYSICS_INTERFACE_H
|
@ -5,11 +5,13 @@ start_sources()
|
||||
|
||||
add_sources( SOURCE_GROUP "Private"
|
||||
"physics_collide.cpp"
|
||||
"physics_collide.h"
|
||||
"QHull.cpp"
|
||||
"QHull.h"
|
||||
)
|
||||
|
||||
add_sources( SOURCE_GROUP "Public"
|
||||
"${ENGINE_SOURCE_DIR}/public/vphysics/vphysics_interface.h"
|
||||
"${ENGINE_SOURCE_DIR}/public/vphysics/phyfile.h"
|
||||
"${ENGINE_SOURCE_DIR}/public/vphysics/vcollide.h"
|
||||
"${ENGINE_SOURCE_DIR}/public/trace.h"
|
||||
|
@ -7,5 +7,13 @@
|
||||
#include "core/stdafx.h"
|
||||
#include "mathlib/vector.h"
|
||||
#include "mathlib/mathlib.h"
|
||||
#include "physics_collide.h"
|
||||
|
||||
CPhysicsCollision* g_pPhysicsCollision = nullptr;
|
||||
|
||||
IPhysicsCollision* PhysicsCollision()
|
||||
{
|
||||
return g_pPhysicsCollision;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
44
r5dev/vphysics/physics_collide.h
Normal file
44
r5dev/vphysics/physics_collide.h
Normal file
@ -0,0 +1,44 @@
|
||||
//=============================================================================//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#ifndef PHYSICS_COLLIDE_H
|
||||
#define PHYSICS_COLLIDE_H
|
||||
|
||||
#include "vphysics/vphysics_interface.h"
|
||||
|
||||
class CPhysicsCollision : public IPhysicsCollision
|
||||
{
|
||||
public:
|
||||
// Class implemented in engine!
|
||||
};
|
||||
|
||||
extern CPhysicsCollision* g_pPhysicsCollision;
|
||||
|
||||
// Physics collision singleton accessor.
|
||||
IPhysicsCollision* PhysicsCollision();
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class VPhysicsCollide : public IDetour
|
||||
{
|
||||
virtual void GetAdr(void) const
|
||||
{
|
||||
LogVarAdr("g_PhysicsCollision", g_pPhysicsCollision);
|
||||
}
|
||||
virtual void GetFun(void) const { }
|
||||
virtual void GetVar(void) const
|
||||
{
|
||||
// Unfortunately can't obtain it via interface system; have to get it this way...
|
||||
g_GameDll.FindPatternSIMD("40 53 48 83 EC 20 48 83 3D ?? ?? ?? ?? ?? 48 8B D9 75 08 32 C0 48 83 C4 20 5B C3 48 8D 05 ?? ?? ?? ??")
|
||||
.FindPatternSelf("48 8D 05", CMemory::Direction::DOWN, 512, 3).ResolveRelativeAddressSelf(0x3, 0x7).GetPtr(g_pPhysicsCollision);
|
||||
}
|
||||
virtual void GetCon(void) const { }
|
||||
virtual void Detour(const bool bAttach) const { };
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#endif // PHYSICS_COLLIDE_H
|
Loading…
x
Reference in New Issue
Block a user