Skip to content

Commit f1efc05

Browse files
committed
vphysics_jolt/vjolt_object: Implement SetDestroyCallback
1 parent 6519a1a commit f1efc05

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

vphysics_jolt/vjolt_object.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ JoltPhysicsObject::JoltPhysicsObject( JPH::Body *pBody, JoltPhysicsEnvironment *
6262

6363
JoltPhysicsObject::~JoltPhysicsObject()
6464
{
65+
if ( m_pDestroyCallback )
66+
m_pDestroyCallback( m_pDestroyCallbackData, this );
67+
6568
RemoveShadowController();
6669

6770
// Josh:
@@ -1042,6 +1045,14 @@ uint32 JoltPhysicsObject::GetCollisionHints() const
10421045

10431046
//-------------------------------------------------------------------------------------------------
10441047

1048+
void JoltPhysicsObject::SetDestroyCallback( void(*pCallback)( void*, IPhysicsObject* ), void* pData )
1049+
{
1050+
m_pDestroyCallback = pCallback;
1051+
m_pDestroyCallbackData = pData;
1052+
}
1053+
1054+
//-------------------------------------------------------------------------------------------------
1055+
10451056
IPredictedPhysicsObject *JoltPhysicsObject::GetPredictedInterface() const
10461057
{
10471058
Log_Stub( LOG_VJolt );

vphysics_jolt/vjolt_object.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ class JoltPhysicsObject final : public IPhysicsObjectInterface
154154
void SetErrorDelta_Position( const Vector& vPosition ) override_csgo {}
155155
void SetErrorDelta_Velocity( const Vector& vVelocity ) override_csgo {}
156156

157+
void SetDestroyCallback( void(*pCallback)( void*, IPhysicsObject* ), void* pData ) override_strata;
158+
157159
public:
158160
JoltPhysicsEnvironment *GetEnvironment() { return m_pEnvironment; }
159161

@@ -275,6 +277,9 @@ class JoltPhysicsObject final : public IPhysicsObjectInterface
275277
JPH::Body *m_pBody = nullptr; // Underlying Jolt body
276278
JoltPhysicsEnvironment *m_pEnvironment = nullptr; // Physics environment this body belongs to
277279
JPH::PhysicsSystem *m_pPhysicsSystem = nullptr; // Physics system this body belongs to
280+
281+
void (*m_pDestroyCallback)( void*, IPhysicsObject* );
282+
void *m_pDestroyCallbackData = nullptr;
278283
};
279284

280285
// Josh: This doesn't handle mass change and is kind of a hack and sliightly wrong.

0 commit comments

Comments
 (0)