From d6e1214a192572d2a9f7fd398c8f7998402b0d4a Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Wed, 31 Aug 2022 15:31:29 +0100 Subject: [PATCH] listener: Re-target pInternalData on JoltPhysicsCollisionEvent copy/move Needs this to match the parent structure, not some other object that may be going to be destroyed. Closes: #51 --- vphysics_jolt/vjolt_listener_contact.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/vphysics_jolt/vjolt_listener_contact.h b/vphysics_jolt/vjolt_listener_contact.h index 966c571..4979d7d 100644 --- a/vphysics_jolt/vjolt_listener_contact.h +++ b/vphysics_jolt/vjolt_listener_contact.h @@ -493,6 +493,22 @@ private: m_Event.pInternalData = &m_Data; } + JoltPhysicsCollisionEvent( const JoltPhysicsCollisionEvent &other ) + : m_Event( other.m_Event ) + , m_Data ( other.m_Data ) + { + // Re-target the event's internal data pointer to our own structure. + m_Event.pInternalData = &m_Data; + } + + JoltPhysicsCollisionEvent( JoltPhysicsCollisionEvent &&other ) + : m_Event( std::move( other.m_Event ) ) + , m_Data ( std::move( other.m_Data ) ) + { + // Re-target the event's internal data pointer to our own structure. + m_Event.pInternalData = &m_Data; + } + static bool IsCollision( JoltPhysicsObject *pObject1, JoltPhysicsObject *pObject2 ) { bool bIsCollision = ( pObject1->GetCallbackFlags() & pObject2->GetCallbackFlags() ) & CALLBACK_GLOBAL_COLLISION;