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
8aa8323ea4
commit
fc1c911c81
@ -38,6 +38,7 @@
|
|||||||
#include "codecs/miles/miles_impl.h"
|
#include "codecs/miles/miles_impl.h"
|
||||||
#include "codecs/miles/radshal_wasapi.h"
|
#include "codecs/miles/radshal_wasapi.h"
|
||||||
#endif // !DEDICATED
|
#endif // !DEDICATED
|
||||||
|
#include "vphysics/physics_collide.h"
|
||||||
#include "vphysics/QHull.h"
|
#include "vphysics/QHull.h"
|
||||||
#include "engine/staticpropmgr.h"
|
#include "engine/staticpropmgr.h"
|
||||||
#include "materialsystem/cmaterialsystem.h"
|
#include "materialsystem/cmaterialsystem.h"
|
||||||
@ -502,6 +503,7 @@ void DetourRegister() // Register detour classes to be searched and hooked.
|
|||||||
#endif // !DEDICATED
|
#endif // !DEDICATED
|
||||||
|
|
||||||
// VPhysics
|
// VPhysics
|
||||||
|
REGISTER(VPhysicsCollide);
|
||||||
REGISTER(VQHull);
|
REGISTER(VQHull);
|
||||||
|
|
||||||
// StaticPropMgr
|
// StaticPropMgr
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "datacache/imdlcache.h"
|
#include "datacache/imdlcache.h"
|
||||||
#include "public/studio.h"
|
#include "public/studio.h"
|
||||||
#include "public/vphysics/phyfile.h"
|
#include "public/vphysics/phyfile.h"
|
||||||
#include "public/vphysics/vcollide.h"
|
#include "vphysics/physics_collide.h"
|
||||||
#include "public/rtech/ipakfile.h"
|
#include "public/rtech/ipakfile.h"
|
||||||
|
|
||||||
class CStudioFallbackHandler
|
class CStudioFallbackHandler
|
||||||
@ -105,10 +105,10 @@ private:
|
|||||||
struct CStudioVCollide : public CRefCounted<>
|
struct CStudioVCollide : public CRefCounted<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//~CStudioVCollide() // TODO: add g_PhysicsCollision to SDK
|
~CStudioVCollide()
|
||||||
//{
|
{
|
||||||
// g_pPhysicsCollision->VCollideUnload(&m_vcollide);
|
PhysicsCollision()->VCollideUnload(&m_vcollide);
|
||||||
//}
|
}
|
||||||
vcollide_t* GetVCollide()
|
vcollide_t* GetVCollide()
|
||||||
{
|
{
|
||||||
return &m_vcollide;
|
return &m_vcollide;
|
||||||
|
40
src/public/vphysics/vphysics_interface.h
Normal file
40
src/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"
|
add_sources( SOURCE_GROUP "Private"
|
||||||
"physics_collide.cpp"
|
"physics_collide.cpp"
|
||||||
|
"physics_collide.h"
|
||||||
"QHull.cpp"
|
"QHull.cpp"
|
||||||
"QHull.h"
|
"QHull.h"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_sources( SOURCE_GROUP "Public"
|
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/phyfile.h"
|
||||||
"${ENGINE_SOURCE_DIR}/public/vphysics/vcollide.h"
|
"${ENGINE_SOURCE_DIR}/public/vphysics/vcollide.h"
|
||||||
"${ENGINE_SOURCE_DIR}/public/trace.h"
|
"${ENGINE_SOURCE_DIR}/public/trace.h"
|
||||||
|
@ -7,5 +7,13 @@
|
|||||||
#include "core/stdafx.h"
|
#include "core/stdafx.h"
|
||||||
#include "mathlib/vector.h"
|
#include "mathlib/vector.h"
|
||||||
#include "mathlib/mathlib.h"
|
#include "mathlib/mathlib.h"
|
||||||
|
#include "physics_collide.h"
|
||||||
|
|
||||||
|
CPhysicsCollision* g_pPhysicsCollision = nullptr;
|
||||||
|
|
||||||
|
IPhysicsCollision* PhysicsCollision()
|
||||||
|
{
|
||||||
|
return g_pPhysicsCollision;
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
44
src/vphysics/physics_collide.h
Normal file
44
src/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