From 457b9923f5f1de169d8538e8a60071a81803b444 Mon Sep 17 00:00:00 2001 From: Arthurdead Date: Mon, 29 Aug 2022 04:23:11 -0300 Subject: [PATCH] build: Fix compiling with C++17 on Linux --- joltphysics/joltphysics_settings.vpc | 2 ++ vphysics_jolt/cbase.h | 2 +- vphysics_jolt/vjolt_controller_fluid.cpp | 9 ++++++++- vphysics_jolt/vjolt_listener_contact.h | 5 +++++ vphysics_jolt/vjolt_objectpairhash.cpp | 5 +++-- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/joltphysics/joltphysics_settings.vpc b/joltphysics/joltphysics_settings.vpc index 65af408..eaab369 100644 --- a/joltphysics/joltphysics_settings.vpc +++ b/joltphysics/joltphysics_settings.vpc @@ -14,6 +14,8 @@ $Configuration // CPU feature macros, we may want to tune these before release. $PreprocessorDefinitions "$BASE;JPH_USE_SSE4_1;JPH_USE_SSE4_2;JPH_USE_LZCNT;JPH_USE_TZCNT;JPH_USE_F16C;JPH_USE_FMADD" + + $GCC_ExtraCompilerFlags "$BASE -msse4.1 -msse4.2 -mlzcnt -mf16c -mfma" // We DO want to comment this line out for release, AVX 1 & 2 adoption isn't reliable enough yet // $EnableEnhancedInstructionSet "Advanced Vector Extensions 2 (/arch:AVX2)" [$DEVELOPMENT_ONLY] diff --git a/vphysics_jolt/cbase.h b/vphysics_jolt/cbase.h index cb8266b..656b7df 100644 --- a/vphysics_jolt/cbase.h +++ b/vphysics_jolt/cbase.h @@ -41,7 +41,7 @@ #include "tier1/tier1.h" #include "tier1/strtools.h" #include "tier1/interface.h" -#include "tier1/keyvalues.h" +#include "tier1/KeyValues.h" #include "tier1/UtlStringMap.h" #include "tier1/utlbuffer.h" diff --git a/vphysics_jolt/vjolt_controller_fluid.cpp b/vphysics_jolt/vjolt_controller_fluid.cpp index 2514e10..3f210f4 100644 --- a/vphysics_jolt/vjolt_controller_fluid.cpp +++ b/vphysics_jolt/vjolt_controller_fluid.cpp @@ -103,7 +103,14 @@ void JoltPhysicsFluidController::OnJoltPhysicsObjectDestroyed( JoltPhysicsObject if ( pObject == m_pFluidObject ) m_pFluidObject = nullptr; - std::erase_if( m_ObjectsInShape, [pObject]( JoltPhysicsObject *pCachedObject ) { return pObject == pCachedObject; } ); + for ( auto it = m_ObjectsInShape.begin(); it != m_ObjectsInShape.end(); it++ ) + { + if ( *it == pObject ) + { + m_ObjectsInShape.erase( it ); + break; + } + } } //------------------------------------------------------------------------------------------------- diff --git a/vphysics_jolt/vjolt_listener_contact.h b/vphysics_jolt/vjolt_listener_contact.h index 99af5d3..a293605 100644 --- a/vphysics_jolt/vjolt_listener_contact.h +++ b/vphysics_jolt/vjolt_listener_contact.h @@ -5,6 +5,11 @@ struct JoltPhysicsContactPair { + JoltPhysicsContactPair( JoltPhysicsObject *pObject1, JoltPhysicsObject *pObject2 ) + : pObject1(pObject1), pObject2(pObject2) + { + } + JoltPhysicsObject *pObject1 = nullptr; JoltPhysicsObject *pObject2 = nullptr; }; diff --git a/vphysics_jolt/vjolt_objectpairhash.cpp b/vphysics_jolt/vjolt_objectpairhash.cpp index f54a696..774008d 100644 --- a/vphysics_jolt/vjolt_objectpairhash.cpp +++ b/vphysics_jolt/vjolt_objectpairhash.cpp @@ -54,7 +54,8 @@ void JoltPhysicsObjectPairHash::RemoveObjectPair( void *pObject0, void *pObject1 bool JoltPhysicsObjectPairHash::IsObjectPairInHash( void *pObject0, void *pObject1 ) { auto pair = CreateSortedPair( pObject0, pObject1 ); - return m_PairHashes[ GetHashArrayIndex( PointerHasher{}( pair ) ) ].contains( pair ); + auto &pairHashes = m_PairHashes[ GetHashArrayIndex( PointerHasher{}( pair ) ) ]; + return pairHashes.find( pair ) != pairHashes.end(); } void JoltPhysicsObjectPairHash::RemoveAllPairsForObject( void *pObject0 ) @@ -71,7 +72,7 @@ void JoltPhysicsObjectPairHash::RemoveAllPairsForObject( void *pObject0 ) bool JoltPhysicsObjectPairHash::IsObjectInHash( void *pObject0 ) { - return m_Objects.contains( pObject0 ); + return m_Objects.find( pObject0 ) != m_Objects.end(); } //-------------------------------------------------------------------------------------------------