diff --git a/vphysics_jolt/vjolt_interface.cpp b/vphysics_jolt/vjolt_interface.cpp index 49c6db06..3b48d151 100644 --- a/vphysics_jolt/vjolt_interface.cpp +++ b/vphysics_jolt/vjolt_interface.cpp @@ -121,21 +121,33 @@ void *JoltPhysicsInterface::QueryInterface( const char *pInterfaceName ) //------------------------------------------------------------------------------------------------- +static std::vector g_pPhysicsEnvironments; IPhysicsEnvironment *JoltPhysicsInterface::CreateEnvironment() { - return new JoltPhysicsEnvironment(); + JoltPhysicsEnvironment *pEnvironment = new JoltPhysicsEnvironment(); + g_pPhysicsEnvironments.push_back(pEnvironment); + return pEnvironment; } void JoltPhysicsInterface::DestroyEnvironment( IPhysicsEnvironment *pEnvironment ) { - delete static_cast( pEnvironment ); + JoltPhysicsEnvironment *pJoltEnvironment = static_cast( pEnvironment ); + + auto it = std::find(g_pPhysicsEnvironments.begin(), g_pPhysicsEnvironments.end(), pJoltEnvironment); + if (it != g_pPhysicsEnvironments.end()) + { + g_pPhysicsEnvironments.erase(it); + } + + delete pJoltEnvironment; } IPhysicsEnvironment *JoltPhysicsInterface::GetActiveEnvironmentByIndex( int index ) { - // Josh: Nothing uses this... ever. - Log_Stub( LOG_VJolt ); - return nullptr; + if ( index < 0 || index >= (int)g_pPhysicsEnvironments.size() ) + return NULL; + + return g_pPhysicsEnvironments[index]; } //-------------------------------------------------------------------------------------------------