Browse Source

Removed using namespace std from namespace JPH (#308)

Jorrit Rouwe 2 years ago
parent
commit
f11abf059d
60 changed files with 217 additions and 188 deletions
  1. 1 1
      Jolt/AABBTree/AABBTreeToBuffer.h
  2. 8 0
      Jolt/Core/Atomics.h
  3. 1 1
      Jolt/Core/ByteBuffer.h
  4. 24 8
      Jolt/Core/Core.h
  5. 1 4
      Jolt/Core/FixedSizeFreeList.h
  6. 2 2
      Jolt/Core/FixedSizeFreeList.inl
  7. 5 5
      Jolt/Core/InsertionSort.h
  8. 3 6
      Jolt/Core/JobSystem.h
  9. 4 4
      Jolt/Core/JobSystemThreadPool.cpp
  10. 5 0
      Jolt/Core/JobSystemThreadPool.h
  11. 1 4
      Jolt/Core/LockFreeHashMap.h
  12. 1 1
      Jolt/Core/LockFreeHashMap.inl
  13. 8 8
      Jolt/Core/Memory.h
  14. 16 8
      Jolt/Core/Mutex.h
  15. 7 7
      Jolt/Core/Profiler.cpp
  16. 1 1
      Jolt/Core/Profiler.h
  17. 1 1
      Jolt/Core/QuickSort.h
  18. 1 3
      Jolt/Core/Reference.h
  19. 6 6
      Jolt/Core/Result.h
  20. 4 4
      Jolt/Core/STLAllocator.h
  21. 3 3
      Jolt/Core/StaticArray.h
  22. 3 3
      Jolt/Core/StreamIn.h
  23. 3 3
      Jolt/Core/StreamOut.h
  24. 1 1
      Jolt/Core/StringTools.h
  25. 1 1
      Jolt/Core/TickCounter.cpp
  26. 1 1
      Jolt/Core/UnorderedMap.h
  27. 1 1
      Jolt/Core/UnorderedSet.h
  28. 3 3
      Jolt/Geometry/ConvexHullBuilder.cpp
  29. 3 3
      Jolt/Geometry/EPAConvexHullBuilder.h
  30. 11 11
      Jolt/Geometry/GJKClosestPoint.h
  31. 2 2
      Jolt/Math/Quat.inl
  32. 4 4
      Jolt/Math/Vec3.cpp
  33. 1 1
      Jolt/Math/Vec3.h
  34. 1 1
      Jolt/Math/Vec3.inl
  35. 2 2
      Jolt/ObjectStream/ObjectStreamIn.h
  36. 3 3
      Jolt/ObjectStream/ObjectStreamOut.h
  37. 7 7
      Jolt/ObjectStream/ObjectStreamTextOut.cpp
  38. 2 2
      Jolt/Physics/Character/CharacterVirtual.cpp
  39. 4 4
      Jolt/Physics/Character/CharacterVirtual.h
  40. 4 4
      Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp
  41. 6 2
      Jolt/Physics/Collision/BroadPhase/QuadTree.cpp
  42. 6 6
      Jolt/Physics/Collision/Shape/CapsuleShape.cpp
  43. 2 2
      Jolt/Physics/Collision/Shape/ConvexShape.cpp
  44. 1 1
      Jolt/Physics/Collision/Shape/ConvexShape.h
  45. 2 2
      Jolt/Physics/Collision/Shape/CylinderShape.cpp
  46. 4 4
      Jolt/Physics/Collision/Shape/GetTrianglesContext.h
  47. 12 12
      Jolt/Physics/DeterminismLog.h
  48. 1 4
      Jolt/Physics/IslandBuilder.h
  49. 1 1
      Jolt/Physics/PhysicsUpdateContext.h
  50. 5 5
      Jolt/Physics/StateRecorderImpl.cpp
  51. 2 2
      Jolt/Physics/StateRecorderImpl.h
  52. 1 1
      Jolt/Skeleton/SkeletonMapper.cpp
  53. 1 1
      Jolt/Skeleton/SkeletonMapper.h
  54. 1 1
      Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.cpp
  55. 1 1
      Samples/SamplesApp.cpp
  56. 1 1
      Samples/Tests/ConvexCollision/ConvexHullShrinkTest.cpp
  57. 5 5
      Samples/Tests/ConvexCollision/ConvexHullTest.cpp
  58. 1 0
      TestFramework/TestFramework.h
  59. 3 3
      UnitTests/Geometry/EPATests.cpp
  60. 1 0
      UnitTests/UnitTestFramework.h

+ 1 - 1
Jolt/AABBTree/AABBTreeToBuffer.h

@@ -13,7 +13,7 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-template <class T> using Deque = deque<T, STLAllocator<T>>;
+template <class T> using Deque = std::deque<T, STLAllocator<T>>;
 
 
 /// Conversion algorithm that converts an AABB tree to an optimized binary buffer
 /// Conversion algorithm that converts an AABB tree to an optimized binary buffer
 template <class TriangleCodec, class NodeCodec>
 template <class TriangleCodec, class NodeCodec>

+ 8 - 0
Jolt/Core/Atomics.h

@@ -9,6 +9,14 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
+// Things we're using from STL
+using std::atomic;
+using std::memory_order;
+using std::memory_order_relaxed;
+using std::memory_order_acquire;
+using std::memory_order_release;
+using std::memory_order_seq_cst;
+
 /// Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated
 /// Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated
 template <class T>
 template <class T>
 bool AtomicMin(atomic<T> &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst)
 bool AtomicMin(atomic<T> &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst)

+ 1 - 1
Jolt/Core/ByteBuffer.h

@@ -8,7 +8,7 @@
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
 /// Underlying data type for ByteBuffer
 /// Underlying data type for ByteBuffer
-using ByteBufferVector = vector<uint8, STLAlignedAllocator<uint8, JPH_CACHE_LINE_SIZE>>;
+using ByteBufferVector = std::vector<uint8, STLAlignedAllocator<uint8, JPH_CACHE_LINE_SIZE>>;
 
 
 /// Simple byte buffer, aligned to a cache line
 /// Simple byte buffer, aligned to a cache line
 class ByteBuffer : public ByteBufferVector
 class ByteBuffer : public ByteBufferVector

+ 24 - 8
Jolt/Core/Core.h

@@ -115,14 +115,8 @@
 #define JPH_SUPPRESS_WARNING_PUSH		JPH_PRAGMA(clang diagnostic push)
 #define JPH_SUPPRESS_WARNING_PUSH		JPH_PRAGMA(clang diagnostic push)
 #define JPH_SUPPRESS_WARNING_POP		JPH_PRAGMA(clang diagnostic pop)
 #define JPH_SUPPRESS_WARNING_POP		JPH_PRAGMA(clang diagnostic pop)
 #define JPH_CLANG_SUPPRESS_WARNING(w)	JPH_PRAGMA(clang diagnostic ignored w)
 #define JPH_CLANG_SUPPRESS_WARNING(w)	JPH_PRAGMA(clang diagnostic ignored w)
-	#if __clang_major__ >= 15
-		#define JPH_CLANG15_SUPPRESS_WARNING(w)	JPH_PRAGMA(clang diagnostic ignored w)
-	#else
-		#define JPH_CLANG15_SUPPRESS_WARNING(w)
-	#endif
 #else
 #else
 #define JPH_CLANG_SUPPRESS_WARNING(w)
 #define JPH_CLANG_SUPPRESS_WARNING(w)
-#define JPH_CLANG15_SUPPRESS_WARNING(w)
 #endif
 #endif
 #ifdef JPH_COMPILER_GCC
 #ifdef JPH_COMPILER_GCC
 #define JPH_PRAGMA(x)					_Pragma(#x)
 #define JPH_PRAGMA(x)					_Pragma(#x)
@@ -163,7 +157,6 @@
 	JPH_CLANG_SUPPRESS_WARNING("-Wdocumentation-unknown-command")								\
 	JPH_CLANG_SUPPRESS_WARNING("-Wdocumentation-unknown-command")								\
 	JPH_CLANG_SUPPRESS_WARNING("-Wctad-maybe-unsupported")										\
 	JPH_CLANG_SUPPRESS_WARNING("-Wctad-maybe-unsupported")										\
 	JPH_CLANG_SUPPRESS_WARNING("-Wdeprecated-copy")												\
 	JPH_CLANG_SUPPRESS_WARNING("-Wdeprecated-copy")												\
-	JPH_CLANG15_SUPPRESS_WARNING("-Wunqualified-std-cast-call")									\
 	JPH_IF_NOT_ANDROID(JPH_CLANG_SUPPRESS_WARNING("-Wimplicit-int-float-conversion"))			\
 	JPH_IF_NOT_ANDROID(JPH_CLANG_SUPPRESS_WARNING("-Wimplicit-int-float-conversion"))			\
 																								\
 																								\
 	JPH_GCC_SUPPRESS_WARNING("-Wcomment")														\
 	JPH_GCC_SUPPRESS_WARNING("-Wcomment")														\
@@ -258,7 +251,30 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-using namespace std;
+// Commonly used STL types
+using std::pair;
+using std::min;
+using std::max;
+using std::abs;
+using std::sqrt;
+using std::ceil;
+using std::floor;
+using std::trunc;
+using std::round;
+using std::fmod;
+using std::swap;
+using std::size;
+using std::string;
+using std::string_view;
+using std::function;
+using std::numeric_limits;
+using std::isfinite;
+using std::isnan;
+using std::is_trivial;
+using std::is_trivially_constructible;
+using std::is_trivially_destructible;
+using std::ostream;
+using std::istream;
 
 
 // Standard types
 // Standard types
 using uint = unsigned int;
 using uint = unsigned int;

+ 1 - 4
Jolt/Core/FixedSizeFreeList.h

@@ -5,10 +5,7 @@
 
 
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/Mutex.h>
 #include <Jolt/Core/Mutex.h>
-
-JPH_SUPPRESS_WARNINGS_STD_BEGIN
-#include <atomic>
-JPH_SUPPRESS_WARNINGS_STD_END
+#include <Jolt/Core/Atomics.h>
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 

+ 2 - 2
Jolt/Core/FixedSizeFreeList.inl

@@ -74,7 +74,7 @@ uint32 FixedSizeFreeList<Object>::ConstructObject(Parameters &&... inParameters)
 			// Allocation successful
 			// Allocation successful
 			JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
 			JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
 			ObjectStorage &storage = GetStorage(first_free);
 			ObjectStorage &storage = GetStorage(first_free);
-			::new (&storage.mObject) Object(forward<Parameters>(inParameters)...);
+			::new (&storage.mObject) Object(std::forward<Parameters>(inParameters)...);
 			storage.mNextFreeObject.store(first_free, memory_order_release);
 			storage.mNextFreeObject.store(first_free, memory_order_release);
 			return first_free;
 			return first_free;
 		}
 		}
@@ -92,7 +92,7 @@ uint32 FixedSizeFreeList<Object>::ConstructObject(Parameters &&... inParameters)
 				// Allocation successful
 				// Allocation successful
 				JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
 				JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
 				ObjectStorage &storage = GetStorage(first_free);
 				ObjectStorage &storage = GetStorage(first_free);
-				::new (&storage.mObject) Object(forward<Parameters>(inParameters)...);
+				::new (&storage.mObject) Object(std::forward<Parameters>(inParameters)...);
 				storage.mNextFreeObject.store(first_free, memory_order_release);
 				storage.mNextFreeObject.store(first_free, memory_order_release);
 				return first_free;
 				return first_free;
 			}
 			}

+ 5 - 5
Jolt/Core/InsertionSort.h

@@ -16,7 +16,7 @@ inline void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
 		for (Iterator i = inBegin + 1; i != inEnd; ++i)
 		for (Iterator i = inBegin + 1; i != inEnd; ++i)
 		{
 		{
 			// Move this element to a temporary value
 			// Move this element to a temporary value
-			auto x = move(*i);
+			auto x = std::move(*i);
 
 
 			// Check if the element goes before inBegin (we can't decrement the iterator before inBegin so this needs to be a separate branch)
 			// Check if the element goes before inBegin (we can't decrement the iterator before inBegin so this needs to be a separate branch)
 			if (inCompare(x, *inBegin))
 			if (inCompare(x, *inBegin))
@@ -30,17 +30,17 @@ inline void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
 				}
 				}
 
 
 				// Move x to the first place
 				// Move x to the first place
-				*inBegin = move(x);
+				*inBegin = std::move(x);
 			}
 			}
 			else
 			else
 			{
 			{
 				// Move elements to the right as long as they are bigger than x
 				// Move elements to the right as long as they are bigger than x
 				Iterator j = i;
 				Iterator j = i;
 				for (Iterator prev = j - 1; inCompare(x, *prev); j = prev, --prev)
 				for (Iterator prev = j - 1; inCompare(x, *prev); j = prev, --prev)
-					*j = move(*prev);
+					*j = std::move(*prev);
 
 
 				// Move x into place
 				// Move x into place
-				*j = move(x);
+				*j = std::move(x);
 			}
 			}
 		}
 		}
 	}
 	}
@@ -50,7 +50,7 @@ inline void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
 template <typename Iterator>
 template <typename Iterator>
 inline void InsertionSort(Iterator inBegin, Iterator inEnd)
 inline void InsertionSort(Iterator inBegin, Iterator inEnd)
 {
 {
-	less<> compare;
+	std::less<> compare;
 	InsertionSort(inBegin, inEnd, compare);
 	InsertionSort(inBegin, inEnd, compare);
 }
 }
 
 

+ 3 - 6
Jolt/Core/JobSystem.h

@@ -8,10 +8,7 @@
 #include <Jolt/Core/Profiler.h>
 #include <Jolt/Core/Profiler.h>
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/StaticArray.h>
 #include <Jolt/Core/StaticArray.h>
-
-JPH_SUPPRESS_WARNINGS_STD_BEGIN
-#include <atomic>
-JPH_SUPPRESS_WARNINGS_STD_END
+#include <Jolt/Core/Atomics.h>
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
@@ -57,14 +54,14 @@ public:
 		/// Constructor 
 		/// Constructor 
 		inline				JobHandle() = default;
 		inline				JobHandle() = default;
 		inline				JobHandle(const JobHandle &inHandle) = default;
 		inline				JobHandle(const JobHandle &inHandle) = default;
-		inline				JobHandle(JobHandle &&inHandle) noexcept	: Ref<Job>(move(inHandle)) { }
+		inline				JobHandle(JobHandle &&inHandle) noexcept	: Ref<Job>(std::move(inHandle)) { }
 
 
 		/// Constructor, only to be used by JobSystem
 		/// Constructor, only to be used by JobSystem
 		inline explicit		JobHandle(Job *inJob)						: Ref<Job>(inJob) { }
 		inline explicit		JobHandle(Job *inJob)						: Ref<Job>(inJob) { }
 
 
 		/// Assignment
 		/// Assignment
 		inline JobHandle &	operator = (const JobHandle &inHandle)		{ Ref<Job>::operator = (inHandle); return *this; }
 		inline JobHandle &	operator = (const JobHandle &inHandle)		{ Ref<Job>::operator = (inHandle); return *this; }
-		inline JobHandle &	operator = (JobHandle &&inHandle) noexcept	{ Ref<Job>::operator = (move(inHandle)); return *this; }
+		inline JobHandle &	operator = (JobHandle &&inHandle) noexcept	{ Ref<Job>::operator = (std::move(inHandle)); return *this; }
 
 
 		/// Check if this handle contains a job
 		/// Check if this handle contains a job
 		inline bool			IsValid() const								{ return GetPtr() != nullptr; }
 		inline bool			IsValid() const								{ return GetPtr() != nullptr; }

+ 4 - 4
Jolt/Core/JobSystemThreadPool.cpp

@@ -113,7 +113,7 @@ void JobSystemThreadPool::BarrierImpl::AddJob(const JobHandle &inJob)
 		while (write_index - mJobReadIndex >= cMaxJobs)
 		while (write_index - mJobReadIndex >= cMaxJobs)
 		{
 		{
 			JPH_ASSERT(false, "Barrier full, stalling!");
 			JPH_ASSERT(false, "Barrier full, stalling!");
-			this_thread::sleep_for(100us);
+			std::this_thread::sleep_for(std::chrono::microseconds(100));
 		}
 		}
 		mJobs[write_index & (cMaxJobs - 1)] = job;
 		mJobs[write_index & (cMaxJobs - 1)] = job;
 	}
 	}
@@ -149,7 +149,7 @@ void JobSystemThreadPool::BarrierImpl::AddJobs(const JobHandle *inHandles, uint
 			while (write_index - mJobReadIndex >= cMaxJobs)
 			while (write_index - mJobReadIndex >= cMaxJobs)
 			{
 			{
 				JPH_ASSERT(false, "Barrier full, stalling!");
 				JPH_ASSERT(false, "Barrier full, stalling!");
-				this_thread::sleep_for(100us);
+				std::this_thread::sleep_for(std::chrono::microseconds(100));
 			}
 			}
 			mJobs[write_index & (cMaxJobs - 1)] = job;
 			mJobs[write_index & (cMaxJobs - 1)] = job;
 		}
 		}
@@ -339,7 +339,7 @@ JobHandle JobSystemThreadPool::CreateJob(const char *inJobName, ColorArg inColor
 		if (index != AvailableJobs::cInvalidObjectIndex)
 		if (index != AvailableJobs::cInvalidObjectIndex)
 			break;
 			break;
 		JPH_ASSERT(false, "No jobs available!");
 		JPH_ASSERT(false, "No jobs available!");
-		this_thread::sleep_for(100us);
+		std::this_thread::sleep_for(std::chrono::microseconds(100));
 	}
 	}
 	Job *job = &mJobs.Get(index);
 	Job *job = &mJobs.Get(index);
 	
 	
@@ -431,7 +431,7 @@ void JobSystemThreadPool::QueueJobInternal(Job *inJob)
 				mSemaphore.Release((uint)mThreads.size()); 
 				mSemaphore.Release((uint)mThreads.size()); 
 
 
 				// Sleep a little (we have to wait for other threads to update their head pointer in order for us to be able to continue)
 				// Sleep a little (we have to wait for other threads to update their head pointer in order for us to be able to continue)
-				this_thread::sleep_for(100us);
+				std::this_thread::sleep_for(std::chrono::microseconds(100));
 				continue;
 				continue;
 			}
 			}
 		}
 		}

+ 5 - 0
Jolt/Core/JobSystemThreadPool.h

@@ -14,6 +14,11 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
+// Things we're using from STL
+using std::atomic;
+using std::thread;
+using std::condition_variable;
+
 /// Implementation of a JobSystem using a thread pool
 /// Implementation of a JobSystem using a thread pool
 /// 
 /// 
 /// Note that this is considered an example implementation. It is expected that when you integrate
 /// Note that this is considered an example implementation. It is expected that when you integrate

+ 1 - 4
Jolt/Core/LockFreeHashMap.h

@@ -4,10 +4,7 @@
 #pragma once
 #pragma once
 
 
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/NonCopyable.h>
-
-JPH_SUPPRESS_WARNINGS_STD_BEGIN
-#include <atomic>
-JPH_SUPPRESS_WARNINGS_STD_END
+#include <Jolt/Core/Atomics.h>
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 

+ 1 - 1
Jolt/Core/LockFreeHashMap.inl

@@ -192,7 +192,7 @@ inline typename LockFreeHashMap<Key, Value>::KeyValue *LockFreeHashMap<Key, Valu
 	memset(kv, 0xcd, size);
 	memset(kv, 0xcd, size);
 #endif
 #endif
 	kv->mKey = inKey;
 	kv->mKey = inKey;
-	new (&kv->mValue) Value(forward<Params>(inConstructorParams)...);
+	new (&kv->mValue) Value(std::forward<Params>(inConstructorParams)...);
 
 
 	// Get the offset to the first object from the bucket with corresponding hash
 	// Get the offset to the first object from the bucket with corresponding hash
 	atomic<uint32> &offset = mBuckets[inKeyHash & (mNumBuckets - 1)];
 	atomic<uint32> &offset = mBuckets[inKeyHash & (mNumBuckets - 1)];

+ 8 - 8
Jolt/Core/Memory.h

@@ -26,14 +26,14 @@ void RegisterDefaultAllocator();
 
 
 /// Macro to override the new and delete functions
 /// Macro to override the new and delete functions
 #define JPH_OVERRIDE_NEW_DELETE \
 #define JPH_OVERRIDE_NEW_DELETE \
-	JPH_INLINE void *operator new (size_t inCount)											{ return JPH::Allocate(inCount); } \
-	JPH_INLINE void operator delete (void *inPointer) noexcept								{ JPH::Free(inPointer); } \
-	JPH_INLINE void *operator new[] (size_t inCount)										{ return JPH::Allocate(inCount); } \
-	JPH_INLINE void operator delete[] (void *inPointer) noexcept							{ JPH::Free(inPointer); } \
-	JPH_INLINE void *operator new (size_t inCount, align_val_t inAlignment)					{ return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
-	JPH_INLINE void operator delete (void *inPointer, align_val_t inAlignment) noexcept		{ JPH::AlignedFree(inPointer); } \
-	JPH_INLINE void *operator new[] (size_t inCount, align_val_t inAlignment)				{ return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
-	JPH_INLINE void operator delete[] (void *inPointer, align_val_t inAlignment) noexcept	{ JPH::AlignedFree(inPointer); }
+	JPH_INLINE void *operator new (size_t inCount)												{ return JPH::Allocate(inCount); } \
+	JPH_INLINE void operator delete (void *inPointer) noexcept									{ JPH::Free(inPointer); } \
+	JPH_INLINE void *operator new[] (size_t inCount)											{ return JPH::Allocate(inCount); } \
+	JPH_INLINE void operator delete[] (void *inPointer) noexcept								{ JPH::Free(inPointer); } \
+	JPH_INLINE void *operator new (size_t inCount, std::align_val_t inAlignment)				{ return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+	JPH_INLINE void operator delete (void *inPointer, std::align_val_t inAlignment) noexcept	{ JPH::AlignedFree(inPointer); } \
+	JPH_INLINE void *operator new[] (size_t inCount, std::align_val_t inAlignment)				{ return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+	JPH_INLINE void operator delete[] (void *inPointer, std::align_val_t inAlignment) noexcept	{ JPH::AlignedFree(inPointer); }
 
 
 #else
 #else
 
 

+ 16 - 8
Jolt/Core/Mutex.h

@@ -14,6 +14,14 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
+// Things we're using from STL
+using std::mutex;
+using std::shared_mutex;
+using std::thread;
+using std::lock_guard;
+using std::shared_lock;
+using std::unique_lock;
+
 #ifdef JPH_PLATFORM_BLUE
 #ifdef JPH_PLATFORM_BLUE
 
 
 // On Platform Blue the mutex class is not very fast so we implement it using the official APIs
 // On Platform Blue the mutex class is not very fast so we implement it using the official APIs
@@ -114,10 +122,10 @@ class Mutex : public MutexBase
 public:
 public:
 	inline bool		try_lock()
 	inline bool		try_lock()
 	{
 	{
-		JPH_ASSERT(mLockedThreadID != this_thread::get_id());
+		JPH_ASSERT(mLockedThreadID != std::this_thread::get_id());
 		if (MutexBase::try_lock())
 		if (MutexBase::try_lock())
 		{
 		{
-			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = this_thread::get_id();)
+			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
 			return true;
 			return true;
 		}
 		}
 		return false;
 		return false;
@@ -129,13 +137,13 @@ public:
 		{
 		{
 			JPH_PROFILE("Lock", 0xff00ffff);
 			JPH_PROFILE("Lock", 0xff00ffff);
 			MutexBase::lock();
 			MutexBase::lock();
-			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = this_thread::get_id();)
+			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
 		}
 		}
 	}
 	}
 
 
 	inline void		unlock()
 	inline void		unlock()
 	{
 	{
-		JPH_ASSERT(mLockedThreadID == this_thread::get_id());
+		JPH_ASSERT(mLockedThreadID == std::this_thread::get_id());
 		JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
 		JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
 		MutexBase::unlock();
 		MutexBase::unlock();
 	}
 	}
@@ -158,10 +166,10 @@ class SharedMutex : public SharedMutexBase
 public:
 public:
 	inline bool		try_lock()
 	inline bool		try_lock()
 	{
 	{
-		JPH_ASSERT(mLockedThreadID != this_thread::get_id());
+		JPH_ASSERT(mLockedThreadID != std::this_thread::get_id());
 		if (SharedMutexBase::try_lock())
 		if (SharedMutexBase::try_lock())
 		{
 		{
-			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = this_thread::get_id();)
+			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
 			return true;
 			return true;
 		}
 		}
 		return false;
 		return false;
@@ -173,13 +181,13 @@ public:
 		{
 		{
 			JPH_PROFILE("WLock", 0xff00ffff);
 			JPH_PROFILE("WLock", 0xff00ffff);
 			SharedMutexBase::lock();
 			SharedMutexBase::lock();
-			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = this_thread::get_id();)
+			JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
 		}
 		}
 	}
 	}
 
 
 	inline void		unlock()
 	inline void		unlock()
 	{
 	{
-		JPH_ASSERT(mLockedThreadID == this_thread::get_id());
+		JPH_ASSERT(mLockedThreadID == std::this_thread::get_id());
 		JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
 		JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
 		SharedMutexBase::unlock();
 		SharedMutexBase::unlock();
 	}
 	}

+ 7 - 7
Jolt/Core/Profiler.cpp

@@ -27,7 +27,7 @@ bool ProfileMeasurement::sOutOfSamplesReported = false;
 
 
 void Profiler::NextFrame()
 void Profiler::NextFrame()
 {
 {
-	lock_guard lock(mLock);
+	std::lock_guard lock(mLock);
 
 
 	if (mDump)
 	if (mDump)
 	{
 	{
@@ -47,14 +47,14 @@ void Profiler::Dump(const string_view &inTag)
 
 
 void Profiler::AddThread(ProfileThread *inThread)										
 void Profiler::AddThread(ProfileThread *inThread)										
 { 
 { 
-	lock_guard lock(mLock); 
+	std::lock_guard lock(mLock); 
 
 
 	mThreads.push_back(inThread); 
 	mThreads.push_back(inThread); 
 }
 }
 
 
 void Profiler::RemoveThread(ProfileThread *inThread)									
 void Profiler::RemoveThread(ProfileThread *inThread)									
 { 
 { 
-	lock_guard lock(mLock); 
+	std::lock_guard lock(mLock); 
 	
 	
 	Array<ProfileThread *>::iterator i = find(mThreads.begin(), mThreads.end(), inThread); 
 	Array<ProfileThread *>::iterator i = find(mThreads.begin(), mThreads.end(), inThread); 
 	JPH_ASSERT(i != mThreads.end()); 
 	JPH_ASSERT(i != mThreads.end()); 
@@ -179,8 +179,8 @@ static String sHTMLEncode(const char *inString)
 void Profiler::DumpList(const char *inTag, const Aggregators &inAggregators)
 void Profiler::DumpList(const char *inTag, const Aggregators &inAggregators)
 {
 {
 	// Open file
 	// Open file
-	ofstream f;
-	f.open(StringFormat("profile_list_%s.html", inTag).c_str(), ofstream::out | ofstream::trunc);
+	std::ofstream f;
+	f.open(StringFormat("profile_list_%s.html", inTag).c_str(), std::ofstream::out | std::ofstream::trunc);
 	if (!f.is_open()) 
 	if (!f.is_open()) 
 		return;
 		return;
 
 
@@ -259,8 +259,8 @@ void Profiler::DumpList(const char *inTag, const Aggregators &inAggregators)
 void Profiler::DumpChart(const char *inTag, const Threads &inThreads, const KeyToAggregator &inKeyToAggregators, const Aggregators &inAggregators)
 void Profiler::DumpChart(const char *inTag, const Threads &inThreads, const KeyToAggregator &inKeyToAggregators, const Aggregators &inAggregators)
 {
 {
 	// Open file
 	// Open file
-	ofstream f;
-	f.open(StringFormat("profile_chart_%s.html", inTag).c_str(), ofstream::out | ofstream::trunc);
+	std::ofstream f;
+	f.open(StringFormat("profile_chart_%s.html", inTag).c_str(), std::ofstream::out | std::ofstream::trunc);
 	if (!f.is_open()) 
 	if (!f.is_open()) 
 		return;
 		return;
 
 

+ 1 - 1
Jolt/Core/Profiler.h

@@ -149,7 +149,7 @@ private:
 	void						DumpList(const char *inTag, const Aggregators &inAggregators);
 	void						DumpList(const char *inTag, const Aggregators &inAggregators);
 	void						DumpChart(const char *inTag, const Threads &inThreads, const KeyToAggregator &inKeyToAggregators, const Aggregators &inAggregators);
 	void						DumpChart(const char *inTag, const Threads &inThreads, const KeyToAggregator &inKeyToAggregators, const Aggregators &inAggregators);
 
 
-	mutex						mLock;																///< Lock that protects mThreads
+	std::mutex					mLock;																///< Lock that protects mThreads
 	Array<ProfileThread *>		mThreads;															///< List of all active threads
 	Array<ProfileThread *>		mThreads;															///< List of all active threads
 	bool						mDump = false;														///< When true, the samples are dumped next frame
 	bool						mDump = false;														///< When true, the samples are dumped next frame
 	String						mDumpTag;															///< When not empty, this overrides the auto incrementing number of the dump filename
 	String						mDumpTag;															///< When not empty, this overrides the auto incrementing number of the dump filename

+ 1 - 1
Jolt/Core/QuickSort.h

@@ -129,7 +129,7 @@ inline void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
 template <typename Iterator>
 template <typename Iterator>
 inline void QuickSort(Iterator inBegin, Iterator inEnd)
 inline void QuickSort(Iterator inBegin, Iterator inEnd)
 {
 {
-	less<> compare;
+	std::less<> compare;
 	QuickSort(inBegin, inEnd, compare);
 	QuickSort(inBegin, inEnd, compare);
 }
 }
 
 

+ 1 - 3
Jolt/Core/Reference.h

@@ -3,9 +3,7 @@
 
 
 #pragma once
 #pragma once
 
 
-JPH_SUPPRESS_WARNINGS_STD_BEGIN
-#include <atomic>
-JPH_SUPPRESS_WARNINGS_STD_END
+#include <Jolt/Core/Atomics.h>
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 

+ 6 - 6
Jolt/Core/Result.h

@@ -42,11 +42,11 @@ public:
 		switch (inRHS.mState)
 		switch (inRHS.mState)
 		{
 		{
 		case EState::Valid:
 		case EState::Valid:
-			::new (&mResult) Type (move(inRHS.mResult));
+			::new (&mResult) Type (std::move(inRHS.mResult));
 			break;
 			break;
 
 
 		case EState::Error:
 		case EState::Error:
-			::new (&mError) String(move(inRHS.mError));
+			::new (&mError) String(std::move(inRHS.mError));
 			break;
 			break;
 
 
 		case EState::Invalid:
 		case EState::Invalid:
@@ -93,11 +93,11 @@ public:
 		switch (inRHS.mState)
 		switch (inRHS.mState)
 		{
 		{
 		case EState::Valid:
 		case EState::Valid:
-			::new (&mResult) Type (move(inRHS.mResult));
+			::new (&mResult) Type (std::move(inRHS.mResult));
 			break;
 			break;
 
 
 		case EState::Error:
 		case EState::Error:
-			::new (&mError) String(move(inRHS.mError));
+			::new (&mError) String(std::move(inRHS.mError));
 			break;
 			break;
 
 
 		case EState::Invalid:
 		case EState::Invalid:
@@ -142,7 +142,7 @@ public:
 	void				Set(const Type &inResult)					{ Clear(); ::new (&mResult) Type(inResult); mState = EState::Valid; }
 	void				Set(const Type &inResult)					{ Clear(); ::new (&mResult) Type(inResult); mState = EState::Valid; }
 
 
 	/// Set the result value (move value)
 	/// Set the result value (move value)
-	void				Set(const Type &&inResult)					{ Clear(); ::new (&mResult) Type(move(inResult)); mState = EState::Valid; }
+	void				Set(const Type &&inResult)					{ Clear(); ::new (&mResult) Type(std::move(inResult)); mState = EState::Valid; }
 
 
 	/// Check if we had an error
 	/// Check if we had an error
 	bool				HasError() const							{ return mState == EState::Error; }
 	bool				HasError() const							{ return mState == EState::Error; }
@@ -153,7 +153,7 @@ public:
 	/// Set an error value
 	/// Set an error value
 	void				SetError(const char *inError)				{ Clear(); ::new (&mError) String(inError); mState = EState::Error; }
 	void				SetError(const char *inError)				{ Clear(); ::new (&mError) String(inError); mState = EState::Error; }
 	void				SetError(const string_view &inError)		{ Clear(); ::new (&mError) String(inError); mState = EState::Error; }
 	void				SetError(const string_view &inError)		{ Clear(); ::new (&mError) String(inError); mState = EState::Error; }
-	void				SetError(String &&inError)					{ Clear(); ::new (&mError) String(move(inError)); mState = EState::Error; }
+	void				SetError(String &&inError)					{ Clear(); ::new (&mError) String(std::move(inError)); mState = EState::Error; }
 
 
 private:
 private:
 	union
 	union

+ 4 - 4
Jolt/Core/STLAllocator.h

@@ -72,14 +72,14 @@ public:
 
 
 #else
 #else
 
 
-template <typename T> using STLAllocator = allocator<T>;
+template <typename T> using STLAllocator = std::allocator<T>;
 
 
 #endif // !JPH_DISABLE_CUSTOM_ALLOCATOR
 #endif // !JPH_DISABLE_CUSTOM_ALLOCATOR
 
 
 // Declare STL containers that use our allocator
 // Declare STL containers that use our allocator
-template <class T> using Array = vector<T, STLAllocator<T>>;
-using String = basic_string<char, char_traits<char>, STLAllocator<char>>;
-using IStringStream = basic_istringstream<char, char_traits<char>, STLAllocator<char>>;
+template <class T> using Array = std::vector<T, STLAllocator<T>>;
+using String = std::basic_string<char, std::char_traits<char>, STLAllocator<char>>;
+using IStringStream = std::basic_istringstream<char, std::char_traits<char>, STLAllocator<char>>;
 
 
 JPH_NAMESPACE_END
 JPH_NAMESPACE_END
 
 

+ 3 - 3
Jolt/Core/StaticArray.h

@@ -18,10 +18,10 @@ public:
 						StaticArray() = default;
 						StaticArray() = default;
 
 
 	/// Constructor from initializer list
 	/// Constructor from initializer list
-	explicit			StaticArray(initializer_list<T> inList)
+	explicit			StaticArray(std::initializer_list<T> inList)
 	{
 	{
 		JPH_ASSERT(inList.size() <= N);
 		JPH_ASSERT(inList.size() <= N);
-		for (typename initializer_list<T>::iterator i = inList.begin(); i != inList.end(); ++i)
+		for (typename std::initializer_list<T>::iterator i = inList.begin(); i != inList.end(); ++i)
 			::new (reinterpret_cast<T *>(&mElements[mSize++])) T(*i);
 			::new (reinterpret_cast<T *>(&mElements[mSize++])) T(*i);
 	}
 	}
 
 
@@ -64,7 +64,7 @@ public:
 	void				emplace_back(A &&... inElement)
 	void				emplace_back(A &&... inElement)
 	{	
 	{	
 		JPH_ASSERT(mSize < N);
 		JPH_ASSERT(mSize < N);
-		::new (&mElements[mSize++]) T(forward<A>(inElement)...);
+		::new (&mElements[mSize++]) T(std::forward<A>(inElement)...);
 	}
 	}
 
 
 	/// Remove element from the back of the array
 	/// Remove element from the back of the array

+ 3 - 3
Jolt/Core/StreamIn.h

@@ -30,7 +30,7 @@ public:
 	
 	
 	/// Read a vector of primitives from the binary stream
 	/// Read a vector of primitives from the binary stream
 	template <class T, class A>
 	template <class T, class A>
-	void				Read(vector<T, A> &outT)
+	void				Read(std::vector<T, A> &outT)
 	{
 	{
 		typename Array<T>::size_type len = outT.size(); // Initialize to previous array size, this is used for validation in the StateRecorder class
 		typename Array<T>::size_type len = outT.size(); // Initialize to previous array size, this is used for validation in the StateRecorder class
 		Read(len);
 		Read(len);
@@ -46,9 +46,9 @@ public:
 
 
 	/// Read a string from the binary stream (reads the number of characters and then the characters)
 	/// Read a string from the binary stream (reads the number of characters and then the characters)
 	template <class Type, class Traits, class Allocator>
 	template <class Type, class Traits, class Allocator>
-	void				Read(basic_string<Type, Traits, Allocator> &outString)
+	void				Read(std::basic_string<Type, Traits, Allocator> &outString)
 	{
 	{
-		typename basic_string<Type, Traits, Allocator>::size_type len = 0;
+		typename std::basic_string<Type, Traits, Allocator>::size_type len = 0;
 		Read(len);
 		Read(len);
 		if (!IsEOF() && !IsFailed())
 		if (!IsEOF() && !IsFailed())
 		{
 		{

+ 3 - 3
Jolt/Core/StreamOut.h

@@ -27,7 +27,7 @@ public:
 
 
 	/// Write a vector of primitives from the binary stream
 	/// Write a vector of primitives from the binary stream
 	template <class T, class A>
 	template <class T, class A>
-	void				Write(const vector<T, A> &inT)
+	void				Write(const std::vector<T, A> &inT)
 	{
 	{
 		typename Array<T>::size_type len = inT.size();
 		typename Array<T>::size_type len = inT.size();
 		Write(len);
 		Write(len);
@@ -38,9 +38,9 @@ public:
 
 
 	/// Write a string to the binary stream (writes the number of characters and then the characters)
 	/// Write a string to the binary stream (writes the number of characters and then the characters)
 	template <class Type, class Traits, class Allocator>
 	template <class Type, class Traits, class Allocator>
-	void				Write(const basic_string<Type, Traits, Allocator> &inString)
+	void				Write(const std::basic_string<Type, Traits, Allocator> &inString)
 	{
 	{
-		typename basic_string<Type, Traits, Allocator>::size_type len = inString.size();
+		typename std::basic_string<Type, Traits, Allocator>::size_type len = inString.size();
 		Write(len);
 		Write(len);
 		if (!IsFailed())
 		if (!IsFailed())
 			WriteBytes(inString.data(), len * sizeof(Type));
 			WriteBytes(inString.data(), len * sizeof(Type));

+ 1 - 1
Jolt/Core/StringTools.h

@@ -13,7 +13,7 @@ String StringFormat(const char *inFMT, ...);
 template<typename T>
 template<typename T>
 String ConvertToString(const T &inValue)
 String ConvertToString(const T &inValue)
 {
 {
-	using OStringStream = basic_ostringstream<char, char_traits<char>, STLAllocator<char>>;
+	using OStringStream = std::basic_ostringstream<char, std::char_traits<char>, STLAllocator<char>>;
     OStringStream oss;
     OStringStream oss;
     oss << inValue;
     oss << inValue;
     return oss.str();
     return oss.str();

+ 1 - 1
Jolt/Core/TickCounter.cpp

@@ -59,7 +59,7 @@ static const uint64 sProcessorTicksPerSecond = []() {
 	return JPH_PLATFORM_BLUE_GET_TICK_FREQUENCY();
 	return JPH_PLATFORM_BLUE_GET_TICK_FREQUENCY();
 #elif defined(JPH_PLATFORM_LINUX) || defined(JPH_PLATFORM_ANDROID) 
 #elif defined(JPH_PLATFORM_LINUX) || defined(JPH_PLATFORM_ANDROID) 
 	// Open /proc/cpuinfo
 	// Open /proc/cpuinfo
-    ifstream ifs("/proc/cpuinfo");
+    std::ifstream ifs("/proc/cpuinfo");
     if (ifs.is_open())
     if (ifs.is_open())
 	{
 	{
 		// Read all lines
 		// Read all lines

+ 1 - 1
Jolt/Core/UnorderedMap.h

@@ -9,6 +9,6 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-template <class Key, class T, class Hash = hash<Key>, class KeyEqual = equal_to<Key>> using UnorderedMap = unordered_map<Key, T, Hash, KeyEqual, STLAllocator<pair<const Key, T>>>;
+template <class Key, class T, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>> using UnorderedMap = std::unordered_map<Key, T, Hash, KeyEqual, STLAllocator<pair<const Key, T>>>;
 
 
 JPH_NAMESPACE_END
 JPH_NAMESPACE_END

+ 1 - 1
Jolt/Core/UnorderedSet.h

@@ -9,6 +9,6 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-template <class Key, class Hash = hash<Key>, class KeyEqual = equal_to<Key>> using UnorderedSet = unordered_set<Key, Hash, KeyEqual, STLAllocator<Key>>;
+template <class Key, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>> using UnorderedSet = std::unordered_set<Key, Hash, KeyEqual, STLAllocator<Key>>;
 
 
 JPH_NAMESPACE_END
 JPH_NAMESPACE_END

+ 3 - 3
Jolt/Geometry/ConvexHullBuilder.cpp

@@ -1448,14 +1448,14 @@ void ConvexHullBuilder::DumpShape() const
 	static atomic<int> sShapeNo = 1;
 	static atomic<int> sShapeNo = 1;
 	int shape_no = sShapeNo++;
 	int shape_no = sShapeNo++;
 
 
-	ofstream f;
-	f.open(StringFormat("dumped_shape%d.cpp", shape_no).c_str(), ofstream::out | ofstream::trunc);
+	std::ofstream f;
+	f.open(StringFormat("dumped_shape%d.cpp", shape_no).c_str(), std::ofstream::out | std::ofstream::trunc);
 	if (!f.is_open()) 
 	if (!f.is_open()) 
 		return;
 		return;
 
 
 	f << "{\n";
 	f << "{\n";
 	for (Vec3 v : mPositions)
 	for (Vec3 v : mPositions)
-		f << StringFormat("\tVec3(%.9gf, %.9gf, %.9gf),\n", v.GetX(), v.GetY(), v.GetZ());
+		f << StringFormat("\tVec3(%.9gf, %.9gf, %.9gf),\n", (double)v.GetX(), (double)v.GetY(), (double)v.GetZ());
 	f << "},\n";
 	f << "},\n";
 }
 }
 
 

+ 3 - 3
Jolt/Geometry/EPAConvexHullBuilder.h

@@ -196,7 +196,7 @@ public:
 			inT->mInQueue = true;
 			inT->mInQueue = true;
 
 
 			// Resort heap
 			// Resort heap
-			push_heap(begin(), end(), sTriangleSorter);
+			std::push_heap(begin(), end(), sTriangleSorter);
 		}
 		}
 
 
 		/// Peek the next closest triangle without removing it
 		/// Peek the next closest triangle without removing it
@@ -209,7 +209,7 @@ public:
 		Triangle *		PopClosest()
 		Triangle *		PopClosest()
 		{
 		{
 			// Move largest to end
 			// Move largest to end
-			pop_heap(begin(), end(), sTriangleSorter);
+			std::pop_heap(begin(), end(), sTriangleSorter);
 
 
 			// Remove last triangle
 			// Remove last triangle
 			Triangle *t = back();
 			Triangle *t = back();
@@ -372,7 +372,7 @@ public:
 
 
 #if defined(JPH_EPA_CONVEX_BUILDER_VALIDATE) || defined(JPH_EPA_CONVEX_BUILDER_DRAW)
 #if defined(JPH_EPA_CONVEX_BUILDER_VALIDATE) || defined(JPH_EPA_CONVEX_BUILDER_DRAW)
 		// Remove from list of all triangles
 		// Remove from list of all triangles
-		Triangles::iterator i = find(mTriangles.begin(), mTriangles.end(), inT);
+		Triangles::iterator i = std::find(mTriangles.begin(), mTriangles.end(), inT);
 		JPH_ASSERT(i != mTriangles.end());
 		JPH_ASSERT(i != mTriangles.end());
 		mTriangles.erase(i);
 		mTriangles.erase(i);
 #endif
 #endif

+ 11 - 11
Jolt/Geometry/GJKClosestPoint.h

@@ -34,7 +34,7 @@ private:
 	{
 	{
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
 		for (int i = 0; i < mNumPoints; ++i)
 		for (int i = 0; i < mNumPoints; ++i)
-			Trace("y[%d] = [%s], |y[%d]| = %g", i, ConvertToString(mY[i]).c_str(), i, mY[i].Length());
+			Trace("y[%d] = [%s], |y[%d]| = %g", i, ConvertToString(mY[i]).c_str(), i, (double)mY[i].Length());
 #endif
 #endif
 
 
 		uint32 set;
 		uint32 set;
@@ -69,7 +69,7 @@ private:
 		}
 		}
 
 
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
- 		Trace("GetClosest: set = 0b%s, v = [%s], |v| = %g", NibbleToBinary(set), ConvertToString(v).c_str(), v.Length());
+ 		Trace("GetClosest: set = 0b%s, v = [%s], |v| = %g", NibbleToBinary(set), ConvertToString(v).c_str(), (double)v.Length());
 #endif
 #endif
 
 
 		float v_len_sq = v.LengthSq();
 		float v_len_sq = v.LengthSq();
@@ -434,7 +434,7 @@ public:
 
 
 			// If v is very small compared to the length of y, we also consider this a collision
 			// If v is very small compared to the length of y, we also consider this a collision
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-			Trace("Check v small compared to y: %g <= %g", v_len_sq, FLT_EPSILON * GetMaxYLengthSq());
+			Trace("Check v small compared to y: %g <= %g", (double)v_len_sq, (double)(FLT_EPSILON * GetMaxYLengthSq()));
 #endif
 #endif
 			if (v_len_sq <= FLT_EPSILON * GetMaxYLengthSq())
 			if (v_len_sq <= FLT_EPSILON * GetMaxYLengthSq())
 			{
 			{
@@ -452,7 +452,7 @@ public:
 
 
 			// If the squared length of v is not changing enough, we've converged and there is no collision
 			// If the squared length of v is not changing enough, we've converged and there is no collision
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-			Trace("Check v not changing enough: %g <= %g", prev_v_len_sq - v_len_sq, FLT_EPSILON * prev_v_len_sq);
+			Trace("Check v not changing enough: %g <= %g", (double)(prev_v_len_sq - v_len_sq), (double)(FLT_EPSILON * prev_v_len_sq));
 #endif
 #endif
 			JPH_ASSERT(prev_v_len_sq >= v_len_sq);
 			JPH_ASSERT(prev_v_len_sq >= v_len_sq);
 			if (prev_v_len_sq - v_len_sq <= FLT_EPSILON * prev_v_len_sq)
 			if (prev_v_len_sq - v_len_sq <= FLT_EPSILON * prev_v_len_sq)
@@ -470,7 +470,7 @@ public:
 		CalculatePointAAndB(outPointA, outPointB);
 		CalculatePointAAndB(outPointA, outPointB);
 
 
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-		Trace("Return: v = [%s], |v| = %g", ConvertToString(ioV).c_str(), ioV.Length());
+		Trace("Return: v = [%s], |v| = %g", ConvertToString(ioV).c_str(), (double)ioV.Length());
 
 
 		// Draw -ioV to show the closest point to the origin from the previous simplex
 		// Draw -ioV to show the closest point to the origin from the previous simplex
 		DebugRenderer::sInstance->DrawArrow(mOffset, mOffset - ioV, Color::sOrange, 0.05f);
 		DebugRenderer::sInstance->DrawArrow(mOffset, mOffset - ioV, Color::sOrange, 0.05f);
@@ -539,14 +539,14 @@ public:
 
 
 			float v_dot_w = v.Dot(w);
 			float v_dot_w = v.Dot(w);
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-			Trace("v . w = %g", v_dot_w);
+			Trace("v . w = %g", (double)v_dot_w);
 #endif
 #endif
 			if (v_dot_w > 0.0f)
 			if (v_dot_w > 0.0f)
 			{
 			{
 				// If ray and normal are in the same direction, we've passed A and there's no collision
 				// If ray and normal are in the same direction, we've passed A and there's no collision
 				float v_dot_r = v.Dot(inRayDirection);
 				float v_dot_r = v.Dot(inRayDirection);
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-				Trace("v . r = %g", v_dot_r);
+				Trace("v . r = %g", (double)v_dot_r);
 #endif
 #endif
 				if (v_dot_r >= 0.0f)
 				if (v_dot_r >= 0.0f)
 					return false;
 					return false;
@@ -556,7 +556,7 @@ public:
 				float old_lambda = lambda;
 				float old_lambda = lambda;
 				lambda -= delta;
 				lambda -= delta;
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-				Trace("lambda = %g, delta = %g", lambda, delta);
+				Trace("lambda = %g, delta = %g", (double)lambda, (double)delta);
 #endif
 #endif
 
 
 				// If lambda didn't change, we cannot converge any further and we assume a hit
 				// If lambda didn't change, we cannot converge any further and we assume a hit
@@ -743,14 +743,14 @@ public:
 			// So to v . w we have to add: v . (-(inConvexRadiusA + inConvexRadiusB) * v / |v|) = -(inConvexRadiusA + inConvexRadiusB) * |v|
 			// So to v . w we have to add: v . (-(inConvexRadiusA + inConvexRadiusB) * v / |v|) = -(inConvexRadiusA + inConvexRadiusB) * |v|
 			float v_dot_w = v.Dot(w) - sum_convex_radius * v.Length();
 			float v_dot_w = v.Dot(w) - sum_convex_radius * v.Length();
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-			Trace("v . w = %g", v_dot_w);
+			Trace("v . w = %g", (double)v_dot_w);
 #endif
 #endif
 			if (v_dot_w > 0.0f)
 			if (v_dot_w > 0.0f)
 			{
 			{
 				// If ray and normal are in the same direction, we've passed A and there's no collision
 				// If ray and normal are in the same direction, we've passed A and there's no collision
 				float v_dot_r = v.Dot(inDirection);
 				float v_dot_r = v.Dot(inDirection);
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-				Trace("v . r = %g", v_dot_r);
+				Trace("v . r = %g", (double)v_dot_r);
 #endif
 #endif
 				if (v_dot_r >= 0.0f)
 				if (v_dot_r >= 0.0f)
 					return false;
 					return false;
@@ -760,7 +760,7 @@ public:
 				float old_lambda = lambda;
 				float old_lambda = lambda;
 				lambda -= delta;
 				lambda -= delta;
 #ifdef JPH_GJK_DEBUG
 #ifdef JPH_GJK_DEBUG
-				Trace("lambda = %g, delta = %g", lambda, delta);
+				Trace("lambda = %g, delta = %g", (double)lambda, (double)delta);
 #endif
 #endif
 
 
 				// If lambda didn't change, we cannot converge any further and we assume a hit
 				// If lambda didn't change, we cannot converge any further and we assume a hit

+ 2 - 2
Jolt/Math/Quat.inl

@@ -141,10 +141,10 @@ Quat Quat::sFromTo(Vec3Arg inFrom, Vec3Arg inTo)
 template <class Random>
 template <class Random>
 Quat Quat::sRandom(Random &inRandom)
 Quat Quat::sRandom(Random &inRandom)
 {
 {
-	uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
+	std::uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
 	float x0 = zero_to_one(inRandom);
 	float x0 = zero_to_one(inRandom);
 	float r1 = sqrt(1.0f - x0), r2 = sqrt(x0);
 	float r1 = sqrt(1.0f - x0), r2 = sqrt(x0);
-	uniform_real_distribution<float> zero_to_two_pi(0.0f, 2.0f * JPH_PI);
+	std::uniform_real_distribution<float> zero_to_two_pi(0.0f, 2.0f * JPH_PI);
 	Vec4 s, c;
 	Vec4 s, c;
 	Vec4(zero_to_two_pi(inRandom), zero_to_two_pi(inRandom), 0, 0).SinCos(s, c);
 	Vec4(zero_to_two_pi(inRandom), zero_to_two_pi(inRandom), 0, 0).SinCos(s, c);
 	return Quat(s.GetX() * r1, c.GetX() * r1, s.GetY() * r2, c.GetY() * r2);
 	return Quat(s.GetX() * r1, c.GetX() * r1, s.GetY() * r2, c.GetY() * r2);

+ 4 - 4
Jolt/Math/Vec3.cpp

@@ -8,7 +8,7 @@
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-static void sCreateVertices(unordered_set<Vec3> &ioVertices, Vec3Arg inDir1, Vec3Arg inDir2, Vec3Arg inDir3, int inLevel)
+static void sCreateVertices(std::unordered_set<Vec3> &ioVertices, Vec3Arg inDir1, Vec3Arg inDir2, Vec3Arg inDir3, int inLevel)
 {
 {
 	Vec3 center1 = (inDir1 + inDir2).Normalized();
 	Vec3 center1 = (inDir1 + inDir2).Normalized();
 	Vec3 center2 = (inDir2 + inDir3).Normalized();
 	Vec3 center2 = (inDir2 + inDir3).Normalized();
@@ -28,11 +28,11 @@ static void sCreateVertices(unordered_set<Vec3> &ioVertices, Vec3Arg inDir1, Vec
 	}
 	}
 }
 }
 
 
-const vector<Vec3> Vec3::sUnitSphere = []() { 
+const std::vector<Vec3> Vec3::sUnitSphere = []() { 
 
 
 	const int level = 3;
 	const int level = 3;
 
 
-	unordered_set<Vec3> verts;
+	std::unordered_set<Vec3> verts;
 	
 	
 	// Add unit axis
 	// Add unit axis
 	verts.insert(Vec3::sAxisX());
 	verts.insert(Vec3::sAxisX());
@@ -52,7 +52,7 @@ const vector<Vec3> Vec3::sUnitSphere = []() {
 	sCreateVertices(verts, Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
 	sCreateVertices(verts, Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
 	sCreateVertices(verts, -Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
 	sCreateVertices(verts, -Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
 
 
-	return vector<Vec3>(verts.begin(), verts.end());
+	return std::vector<Vec3>(verts.begin(), verts.end());
 }();
 }();
 
 
 JPH_NAMESPACE_END
 JPH_NAMESPACE_END

+ 1 - 1
Jolt/Math/Vec3.h

@@ -99,7 +99,7 @@ public:
 	static JPH_INLINE Vec3		sUnitSpherical(float inTheta, float inPhi);
 	static JPH_INLINE Vec3		sUnitSpherical(float inTheta, float inPhi);
 
 
 	/// A set of vectors uniformly spanning the surface of a unit sphere, usable for debug purposes
 	/// A set of vectors uniformly spanning the surface of a unit sphere, usable for debug purposes
-	static const vector<Vec3>	sUnitSphere;
+	static const std::vector<Vec3> sUnitSphere;
 
 
 	/// Get random unit vector
 	/// Get random unit vector
 	template <class Random>
 	template <class Random>

+ 1 - 1
Jolt/Math/Vec3.inl

@@ -327,7 +327,7 @@ Vec3 Vec3::sUnitSpherical(float inTheta, float inPhi)
 template <class Random>
 template <class Random>
 Vec3 Vec3::sRandom(Random &inRandom)
 Vec3 Vec3::sRandom(Random &inRandom)
 {
 {
-	uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
+	std::uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
 	float theta = JPH_PI * zero_to_one(inRandom);
 	float theta = JPH_PI * zero_to_one(inRandom);
 	float phi = 2.0f * JPH_PI * zero_to_one(inRandom);
 	float phi = 2.0f * JPH_PI * zero_to_one(inRandom);
 	return sUnitSpherical(theta, phi);
 	return sUnitSpherical(theta, phi);

+ 2 - 2
Jolt/ObjectStream/ObjectStreamIn.h

@@ -53,8 +53,8 @@ public:
 	template <class T>
 	template <class T>
 	static bool sReadObject(const char *inFileName, T *&outObject)
 	static bool sReadObject(const char *inFileName, T *&outObject)
 	{
 	{
-		ifstream stream;
-		stream.open(inFileName, ifstream::in | ifstream::binary);
+		std::ifstream stream;
+		stream.open(inFileName, std::ifstream::in | std::ifstream::binary);
 		if (!stream.is_open()) 
 		if (!stream.is_open()) 
 			return false;
 			return false;
 		return sReadObject(stream, outObject);
 		return sReadObject(stream, outObject);

+ 3 - 3
Jolt/ObjectStream/ObjectStreamOut.h

@@ -15,7 +15,7 @@ JPH_SUPPRESS_WARNINGS_STD_END
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
-template <class T> using Queue = queue<T, deque<T, STLAllocator<T>>>;
+template <class T> using Queue = std::queue<T, std::deque<T, STLAllocator<T>>>;
 
 
 /// ObjectStreamOut contains all logic for writing an object to disk. It is the base 
 /// ObjectStreamOut contains all logic for writing an object to disk. It is the base 
 /// class for the text and binary output streams (ObjectStreamTextOut and ObjectStreamBinaryOut).
 /// class for the text and binary output streams (ObjectStreamTextOut and ObjectStreamBinaryOut).
@@ -46,8 +46,8 @@ public:
 	template <class T>
 	template <class T>
 	static bool	sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
 	static bool	sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
 	{
 	{
-		ofstream stream;
-		stream.open(inFileName, ofstream::out | ofstream::trunc | ofstream::binary);
+		std::ofstream stream;
+		stream.open(inFileName, std::ofstream::out | std::ofstream::trunc | std::ofstream::binary);
 		if (!stream.is_open()) 
 		if (!stream.is_open()) 
 			return false;
 			return false;
 		return sWriteObject(stream, inType, inObject);
 		return sWriteObject(stream, inType, inObject);

+ 7 - 7
Jolt/ObjectStream/ObjectStreamTextOut.cpp

@@ -53,37 +53,37 @@ void ObjectStreamTextOut::WriteIdentifier(Identifier inIdentifier)
 
 
 void ObjectStreamTextOut::WriteCount(uint32 inCount)
 void ObjectStreamTextOut::WriteCount(uint32 inCount)
 {
 {
-	WriteWord(to_string(inCount));
+	WriteWord(std::to_string(inCount));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const uint8 &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const uint8 &inPrimitive)
 {
 {
-	WriteWord(to_string(inPrimitive));
+	WriteWord(std::to_string(inPrimitive));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const uint16 &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const uint16 &inPrimitive)
 {
 {
-	WriteWord(to_string(inPrimitive));
+	WriteWord(std::to_string(inPrimitive));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const int &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const int &inPrimitive)
 {
 {
-	WriteWord(to_string(inPrimitive));
+	WriteWord(std::to_string(inPrimitive));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const uint32 &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const uint32 &inPrimitive)
 {
 {
-	WriteWord(to_string(inPrimitive));
+	WriteWord(std::to_string(inPrimitive));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const uint64 &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const uint64 &inPrimitive)
 {
 {
-	WriteWord(to_string(inPrimitive));
+	WriteWord(std::to_string(inPrimitive));
 }
 }
 
 
 void ObjectStreamTextOut::WritePrimitiveData(const float &inPrimitive)
 void ObjectStreamTextOut::WritePrimitiveData(const float &inPrimitive)
 {
 {
-	ostringstream stream;
+	std::ostringstream stream;
 	stream.precision(9);
 	stream.precision(9);
 	stream << inPrimitive;
 	stream << inPrimitive;
 	WriteWord(stream.str());
 	WriteWord(stream.str());

+ 2 - 2
Jolt/Physics/Character/CharacterVirtual.cpp

@@ -390,7 +390,7 @@ void CharacterVirtual::SolveConstraints(Vec3Arg inVelocity, float inDeltaTime, f
 	}
 	}
 
 
 	// Create array that holds the constraints in order of time of impact (sort will happen later)
 	// Create array that holds the constraints in order of time of impact (sort will happen later)
-	vector<Constraint *, STLTempAllocator<Constraint *>> sorted_constraints(inAllocator);
+	std::vector<Constraint *, STLTempAllocator<Constraint *>> sorted_constraints(inAllocator);
 	sorted_constraints.resize(ioConstraints.size());
 	sorted_constraints.resize(ioConstraints.size());
 	for (size_t index = 0; index < sorted_constraints.size(); index++)
 	for (size_t index = 0; index < sorted_constraints.size(); index++)
 		sorted_constraints[index] = &ioConstraints[index];
 		sorted_constraints[index] = &ioConstraints[index];
@@ -406,7 +406,7 @@ void CharacterVirtual::SolveConstraints(Vec3Arg inVelocity, float inDeltaTime, f
 	outTimeSimulated = 0.0f;
 	outTimeSimulated = 0.0f;
 
 
 	// These are the contacts that we hit previously without moving a significant distance
 	// These are the contacts that we hit previously without moving a significant distance
-	vector<Constraint *, STLTempAllocator<Constraint *>> previous_contacts(inAllocator);
+	std::vector<Constraint *, STLTempAllocator<Constraint *>> previous_contacts(inAllocator);
 	previous_contacts.resize(mMaxConstraintIterations);
 	previous_contacts.resize(mMaxConstraintIterations);
 	int num_previous_contacts = 0;
 	int num_previous_contacts = 0;
 
 

+ 4 - 4
Jolt/Physics/Character/CharacterVirtual.h

@@ -182,7 +182,7 @@ public:
 		Vec3Arg							mWalkStairsStepUp { 0, 0.4f, 0 };										///< See WalkStairs inStepUp parameter. Can be zero to turn off.
 		Vec3Arg							mWalkStairsStepUp { 0, 0.4f, 0 };										///< See WalkStairs inStepUp parameter. Can be zero to turn off.
 		float							mWalkStairsMinStepForward { 0.02f };									///< See WalkStairs inStepForward parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
 		float							mWalkStairsMinStepForward { 0.02f };									///< See WalkStairs inStepForward parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
 		float							mWalkStairsStepForwardTest { 0.15f };									///< See WalkStairs inStepForwardTest parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
 		float							mWalkStairsStepForwardTest { 0.15f };									///< See WalkStairs inStepForwardTest parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
-		float							mWalkStairsCosAngleForwardContact { cos(DegreesToRadians(75.0f)) };		///< Cos(angle) where angle is the maximum angle between the ground normal in the horizontal plane and the character forward vector where we're willing to adjust the step forward test towards the contact normal.
+		float							mWalkStairsCosAngleForwardContact { Cos(DegreesToRadians(75.0f)) };		///< Cos(angle) where angle is the maximum angle between the ground normal in the horizontal plane and the character forward vector where we're willing to adjust the step forward test towards the contact normal.
 		Vec3Arg							mWalkStairsStepDownExtra { Vec3::sZero() };								///< See WalkStairs inStepDownExtra
 		Vec3Arg							mWalkStairsStepDownExtra { Vec3::sZero() };								///< See WalkStairs inStepDownExtra
 	};
 	};
 
 
@@ -254,7 +254,7 @@ private:
 		bool							mCanPushCharacter = true;								///< When true, the velocity of the contact point can push the character
 		bool							mCanPushCharacter = true;								///< When true, the velocity of the contact point can push the character
 	};
 	};
 
 
-	using TempContactList = vector<Contact, STLTempAllocator<Contact>>;
+	using TempContactList = std::vector<Contact, STLTempAllocator<Contact>>;
 	using ContactList = Array<Contact>;
 	using ContactList = Array<Contact>;
 
 
 	// A contact that needs to be ignored
 	// A contact that needs to be ignored
@@ -267,7 +267,7 @@ private:
 		SubShapeID						mSubShapeID;											///< Sub shape of body we're colliding with
 		SubShapeID						mSubShapeID;											///< Sub shape of body we're colliding with
 	};
 	};
 
 
-	using IgnoredContactList = vector<IgnoredContact, STLTempAllocator<IgnoredContact>>;
+	using IgnoredContactList = std::vector<IgnoredContact, STLTempAllocator<IgnoredContact>>;
 
 
 	// A constraint that limits the movement of the character
 	// A constraint that limits the movement of the character
 	struct Constraint
 	struct Constraint
@@ -279,7 +279,7 @@ private:
 		Plane							mPlane;													///< Plane around the origin that describes how far we can displace (from the origin)
 		Plane							mPlane;													///< Plane around the origin that describes how far we can displace (from the origin)
 	};
 	};
 
 
-	using ConstraintList = vector<Constraint, STLTempAllocator<Constraint>>;
+	using ConstraintList = std::vector<Constraint, STLTempAllocator<Constraint>>;
 
 
 	// Collision collector that collects hits for CollideShape
 	// Collision collector that collects hits for CollideShape
 	class ContactCollector : public CollideShapeCollector
 	class ContactCollector : public CollideShapeCollector

+ 4 - 4
Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp

@@ -169,7 +169,7 @@ BroadPhase::AddState BroadPhaseQuadTree::AddBodiesPrepare(BodyID *ioBodies, int
 		JPH_ASSERT(broadphase_layer < mNumLayers);
 		JPH_ASSERT(broadphase_layer < mNumLayers);
 
 
 		// Find first body with different layer
 		// Find first body with different layer
-		BodyID *b_mid = upper_bound(b_start, b_end, broadphase_layer, [bodies_ptr](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < (BroadPhaseLayer::Type)bodies_ptr[inBodyID.GetIndex()]->GetBroadPhaseLayer(); });
+		BodyID *b_mid = std::upper_bound(b_start, b_end, broadphase_layer, [bodies_ptr](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < (BroadPhaseLayer::Type)bodies_ptr[inBodyID.GetIndex()]->GetBroadPhaseLayer(); });
 
 
 		// Keep track of state for this layer
 		// Keep track of state for this layer
 		LayerState &layer_state = state[broadphase_layer];
 		LayerState &layer_state = state[broadphase_layer];
@@ -293,7 +293,7 @@ void BroadPhaseQuadTree::RemoveBodies(BodyID *ioBodies, int inNumber)
 		JPH_ASSERT(broadphase_layer != (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid);
 		JPH_ASSERT(broadphase_layer != (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid);
 
 
 		// Find first body with different layer
 		// Find first body with different layer
-		BodyID *b_mid = upper_bound(b_start, b_end, broadphase_layer, [tracking](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mBroadPhaseLayer; });
+		BodyID *b_mid = std::upper_bound(b_start, b_end, broadphase_layer, [tracking](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mBroadPhaseLayer; });
 
 
 		// Remove all bodies of the same layer
 		// Remove all bodies of the same layer
 		mLayers[broadphase_layer].RemoveBodies(bodies, mTracking, b_start, int(b_mid - b_start));
 		mLayers[broadphase_layer].RemoveBodies(bodies, mTracking, b_start, int(b_mid - b_start));
@@ -343,7 +343,7 @@ void BroadPhaseQuadTree::NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber,
 		JPH_ASSERT(broadphase_layer != (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid);
 		JPH_ASSERT(broadphase_layer != (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid);
 
 
 		// Find first body with different layer
 		// Find first body with different layer
-		BodyID *b_mid = upper_bound(b_start, b_end, broadphase_layer, [tracking](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mBroadPhaseLayer; });
+		BodyID *b_mid = std::upper_bound(b_start, b_end, broadphase_layer, [tracking](BroadPhaseLayer::Type inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mBroadPhaseLayer; });
 
 
 		// Nodify all bodies of the same layer changed
 		// Nodify all bodies of the same layer changed
 		mLayers[broadphase_layer].NotifyBodiesAABBChanged(bodies, mTracking, b_start, int(b_mid - b_start));
 		mLayers[broadphase_layer].NotifyBodiesAABBChanged(bodies, mTracking, b_start, int(b_mid - b_start));
@@ -556,7 +556,7 @@ void BroadPhaseQuadTree::FindCollidingPairs(BodyID *ioActiveBodies, int inNumAct
 		JPH_ASSERT(object_layer != cObjectLayerInvalid);
 		JPH_ASSERT(object_layer != cObjectLayerInvalid);
 
 
 		// Find first body with different layer
 		// Find first body with different layer
-		BodyID *b_mid = upper_bound(b_start, b_end, object_layer, [tracking](ObjectLayer inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mObjectLayer; });
+		BodyID *b_mid = std::upper_bound(b_start, b_end, object_layer, [tracking](ObjectLayer inLayer, BodyID inBodyID) { return inLayer < tracking[inBodyID.GetIndex()].mObjectLayer; });
 
 
 		// Loop over all layers and test the ones that could hit
 		// Loop over all layers and test the ones that could hit
 		for (BroadPhaseLayer::Type l = 0; l < mNumLayers; ++l)
 		for (BroadPhaseLayer::Type l = 0; l < mNumLayers; ++l)

+ 6 - 2
Jolt/Physics/Collision/BroadPhase/QuadTree.cpp

@@ -13,6 +13,10 @@
 #include <Jolt/Geometry/RayAABox.h>
 #include <Jolt/Geometry/RayAABox.h>
 #include <Jolt/Geometry/OrientedBox.h>
 #include <Jolt/Geometry/OrientedBox.h>
 
 
+#ifdef JPH_DUMP_BROADPHASE_TREE
+#include <fstream>
+#endif // JPH_DUMP_BROADPHASE_TREE
+
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1529,8 +1533,8 @@ void QuadTree::ValidateTree(const BodyVector &inBodies, const TrackingVector &in
 void QuadTree::DumpTree(const NodeID &inRoot, const char *inFileNamePrefix) const
 void QuadTree::DumpTree(const NodeID &inRoot, const char *inFileNamePrefix) const
 {
 {
 	// Open DOT file
 	// Open DOT file
-	ofstream f;
-	f.open(StringFormat("%s.dot", inFileNamePrefix), ofstream::out | ofstream::trunc);
+	std::ofstream f;
+	f.open(StringFormat("%s.dot", inFileNamePrefix).c_str(), std::ofstream::out | std::ofstream::trunc);
 	if (!f.is_open())
 	if (!f.is_open())
 		return;
 		return;
 
 

+ 6 - 6
Jolt/Physics/Collision/Shape/CapsuleShape.cpp

@@ -31,20 +31,20 @@ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(CapsuleShapeSettings)
 
 
 static const int cCapsuleDetailLevel = 2;
 static const int cCapsuleDetailLevel = 2;
 
 
-static const vector<Vec3> sCapsuleTopTriangles = []() { 
-	vector<Vec3> verts;	
+static const std::vector<Vec3> sCapsuleTopTriangles = []() { 
+	std::vector<Vec3> verts;	
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereTop(verts, cCapsuleDetailLevel);
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereTop(verts, cCapsuleDetailLevel);
 	return verts;
 	return verts;
 }();
 }();
 
 
-static const vector<Vec3> sCapsuleMiddleTriangles = []() { 
-	vector<Vec3> verts;
+static const std::vector<Vec3> sCapsuleMiddleTriangles = []() { 
+	std::vector<Vec3> verts;
 	GetTrianglesContextVertexList::sCreateUnitOpenCylinder(verts, cCapsuleDetailLevel);
 	GetTrianglesContextVertexList::sCreateUnitOpenCylinder(verts, cCapsuleDetailLevel);
 	return verts;
 	return verts;
 }();
 }();
 
 
-static const vector<Vec3> sCapsuleBottomTriangles = []() { 
-	vector<Vec3> verts;	
+static const std::vector<Vec3> sCapsuleBottomTriangles = []() { 
+	std::vector<Vec3> verts;	
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereBottom(verts, cCapsuleDetailLevel);
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereBottom(verts, cCapsuleDetailLevel);
 	return verts;
 	return verts;
 }();
 }();

+ 2 - 2
Jolt/Physics/Collision/Shape/ConvexShape.cpp

@@ -32,10 +32,10 @@ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(ConvexShapeSettings)
 	JPH_ADD_ATTRIBUTE(ConvexShapeSettings, mMaterial)
 	JPH_ADD_ATTRIBUTE(ConvexShapeSettings, mMaterial)
 }
 }
 
 
-const vector<Vec3> ConvexShape::sUnitSphereTriangles = []() { 
+const std::vector<Vec3> ConvexShape::sUnitSphereTriangles = []() { 
 	const int level = 2;
 	const int level = 2;
 
 
-	vector<Vec3> verts;	
+	std::vector<Vec3> verts;	
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereTop(verts, level);
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereTop(verts, level);
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereBottom(verts, level);
 	GetTrianglesContextVertexList::sCreateHalfUnitSphereBottom(verts, level);
 	return verts;
 	return verts;

+ 1 - 1
Jolt/Physics/Collision/Shape/ConvexShape.h

@@ -130,7 +130,7 @@ protected:
 	virtual void					RestoreBinaryState(StreamIn &inStream) override;
 	virtual void					RestoreBinaryState(StreamIn &inStream) override;
 
 
 	/// Vertex list that forms a unit sphere
 	/// Vertex list that forms a unit sphere
-	static const vector<Vec3>		sUnitSphereTriangles;
+	static const std::vector<Vec3>	sUnitSphereTriangles;
 
 
 private:
 private:
 	// Class for GetTrianglesStart/Next
 	// Class for GetTrianglesStart/Next

+ 2 - 2
Jolt/Physics/Collision/Shape/CylinderShape.cpp

@@ -43,8 +43,8 @@ static const Vec3 cTopFace[] =
 	Vec3(-cSin45,	1.0f,	cSin45)
 	Vec3(-cSin45,	1.0f,	cSin45)
 };
 };
 
 
-static const vector<Vec3> sUnitCylinderTriangles = []() { 
-	vector<Vec3> verts;
+static const std::vector<Vec3> sUnitCylinderTriangles = []() { 
+	std::vector<Vec3> verts;
 
 
 	const Vec3 bottom_offset(0.0f, -2.0f, 0.0f);
 	const Vec3 bottom_offset(0.0f, -2.0f, 0.0f);
 
 

+ 4 - 4
Jolt/Physics/Collision/Shape/GetTrianglesContext.h

@@ -67,7 +67,7 @@ public:
 	}
 	}
 
 
 	/// Helper function that creates a vertex list of a half unit sphere (top part)
 	/// Helper function that creates a vertex list of a half unit sphere (top part)
-	static void		sCreateHalfUnitSphereTop(vector<Vec3> &ioVertices, int inDetailLevel)
+	static void		sCreateHalfUnitSphereTop(std::vector<Vec3> &ioVertices, int inDetailLevel)
 	{
 	{
 		sCreateUnitSphereHelper(ioVertices,  Vec3::sAxisX(),  Vec3::sAxisY(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices,  Vec3::sAxisX(),  Vec3::sAxisY(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices,  Vec3::sAxisY(), -Vec3::sAxisX(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices,  Vec3::sAxisY(), -Vec3::sAxisX(),  Vec3::sAxisZ(), inDetailLevel);
@@ -76,7 +76,7 @@ public:
 	}
 	}
 
 
 	/// Helper function that creates a vertex list of a half unit sphere (bottom part)
 	/// Helper function that creates a vertex list of a half unit sphere (bottom part)
-	static void		sCreateHalfUnitSphereBottom(vector<Vec3> &ioVertices, int inDetailLevel)
+	static void		sCreateHalfUnitSphereBottom(std::vector<Vec3> &ioVertices, int inDetailLevel)
 	{
 	{
 		sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisX(), -Vec3::sAxisY(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisX(), -Vec3::sAxisY(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisY(),  Vec3::sAxisX(),  Vec3::sAxisZ(), inDetailLevel);
 		sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisY(),  Vec3::sAxisX(),  Vec3::sAxisZ(), inDetailLevel);
@@ -85,7 +85,7 @@ public:
 	}
 	}
 
 
 	/// Helper function that creates an open cyclinder of half height 1 and radius 1
 	/// Helper function that creates an open cyclinder of half height 1 and radius 1
-	static void		sCreateUnitOpenCylinder(vector<Vec3> &ioVertices, int inDetailLevel)
+	static void		sCreateUnitOpenCylinder(std::vector<Vec3> &ioVertices, int inDetailLevel)
 	{
 	{
 		const Vec3 bottom_offset(0.0f, -2.0f, 0.0f);
 		const Vec3 bottom_offset(0.0f, -2.0f, 0.0f);
 		int num_verts = 4 * (1 << inDetailLevel);
 		int num_verts = 4 * (1 << inDetailLevel);
@@ -111,7 +111,7 @@ public:
 
 
 private:
 private:
 	/// Recursive helper function for creating a sphere
 	/// Recursive helper function for creating a sphere
-	static void		sCreateUnitSphereHelper(vector<Vec3> &ioVertices, Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, int inLevel)
+	static void		sCreateUnitSphereHelper(std::vector<Vec3> &ioVertices, Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, int inLevel)
 	{
 	{
 		Vec3 center1 = (inV1 + inV2).Normalized();
 		Vec3 center1 = (inV1 + inV2).Normalized();
 		Vec3 center2 = (inV2 + inV3).Normalized();
 		Vec3 center2 = (inV2 + inV3).Normalized();

+ 12 - 12
Jolt/Physics/DeterminismLog.h

@@ -26,7 +26,7 @@ private:
 public:
 public:
 							DeterminismLog()
 							DeterminismLog()
 	{
 	{
-		mLog.open("detlog.txt", ios::out | ios::trunc | ios::binary); // Binary because we don't want a difference between Unix and Windows line endings.
+		mLog.open("detlog.txt", std::ios::out | std::ios::trunc | std::ios::binary); // Binary because we don't want a difference between Unix and Windows line endings.
 		mLog.fill('0');
 		mLog.fill('0');
 	}
 	}
 
 
@@ -38,31 +38,31 @@ public:
 
 
 	DeterminismLog &		operator << (const char *inValue)
 	DeterminismLog &		operator << (const char *inValue)
 	{
 	{
-		mLog << dec << inValue;
+		mLog << std::dec << inValue;
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (const string &inValue)
 	DeterminismLog &		operator << (const string &inValue)
 	{
 	{
-		mLog << dec << inValue;
+		mLog << std::dec << inValue;
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (const BodyID &inValue)
 	DeterminismLog &		operator << (const BodyID &inValue)
 	{
 	{
-		mLog << hex << setw(8) << inValue.GetIndexAndSequenceNumber();
+		mLog << std::hex << std::setw(8) << inValue.GetIndexAndSequenceNumber();
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (const SubShapeID &inValue)
 	DeterminismLog &		operator << (const SubShapeID &inValue)
 	{
 	{
-		mLog << hex << setw(8) << inValue.GetValue();
+		mLog << std::hex << std::setw(8) << inValue.GetValue();
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (float inValue)
 	DeterminismLog &		operator << (float inValue)
 	{
 	{
-		mLog << hex << setw(8) << Convert(inValue);
+		mLog << std::hex << std::setw(8) << Convert(inValue);
 		return *this;
 		return *this;
 	}
 	}
 
 
@@ -74,31 +74,31 @@ public:
 
 
 	DeterminismLog &		operator << (uint32 inValue)
 	DeterminismLog &		operator << (uint32 inValue)
 	{
 	{
-		mLog << hex << setw(8) << inValue;
+		mLog << std::hex << std::setw(8) << inValue;
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (uint64 inValue)
 	DeterminismLog &		operator << (uint64 inValue)
 	{
 	{
-		mLog << hex << setw(16) << inValue;
+		mLog << std::hex << std::setw(16) << inValue;
 		return *this;
 		return *this;
 	}
 	}
 
 
 	DeterminismLog &		operator << (Vec3Arg inValue)
 	DeterminismLog &		operator << (Vec3Arg inValue)
 	{
 	{
-		mLog << hex << setw(8) << Convert(inValue.GetX()) << " " << setw(8) << Convert(inValue.GetY()) << " " << setw(8) << Convert(inValue.GetZ());
+		mLog << std::hex << std::setw(8) << Convert(inValue.GetX()) << " " << std::setw(8) << Convert(inValue.GetY()) << " " << std::setw(8) << Convert(inValue.GetZ());
 		return *this;
 		return *this;
 	}
 	}
 	
 	
 	DeterminismLog &		operator << (Vec4Arg inValue)
 	DeterminismLog &		operator << (Vec4Arg inValue)
 	{
 	{
-		mLog << hex << setw(8) << Convert(inValue.GetX()) << " " << setw(8) << Convert(inValue.GetY()) << " " << setw(8) << Convert(inValue.GetZ()) << " " << setw(8) << Convert(inValue.GetW());
+		mLog << std::hex << std::setw(8) << Convert(inValue.GetX()) << " " << std::setw(8) << Convert(inValue.GetY()) << " " << std::setw(8) << Convert(inValue.GetZ()) << " " << std::setw(8) << Convert(inValue.GetW());
 		return *this;
 		return *this;
 	}
 	}
 	
 	
 	DeterminismLog &		operator << (const Float3 &inValue)
 	DeterminismLog &		operator << (const Float3 &inValue)
 	{
 	{
-		mLog << hex << setw(8) << Convert(inValue.x) << " " << setw(8) << Convert(inValue.y) << " " << setw(8) << Convert(inValue.z);
+		mLog << std::hex << std::setw(8) << Convert(inValue.x) << " " << std::setw(8) << Convert(inValue.y) << " " << std::setw(8) << Convert(inValue.z);
 		return *this;
 		return *this;
 	}
 	}
 	
 	
@@ -118,7 +118,7 @@ public:
 	static DeterminismLog	sLog;
 	static DeterminismLog	sLog;
 
 
 private:
 private:
-	ofstream				mLog;
+	std::ofstream			mLog;
 };
 };
 
 
 /// Will log something to the determinism log, usage: JPH_DET_LOG("label " << value);
 /// Will log something to the determinism log, usage: JPH_DET_LOG("label " << value);

+ 1 - 4
Jolt/Physics/IslandBuilder.h

@@ -5,10 +5,7 @@
 
 
 #include <Jolt/Physics/Body/BodyID.h>
 #include <Jolt/Physics/Body/BodyID.h>
 #include <Jolt/Core/NonCopyable.h>
 #include <Jolt/Core/NonCopyable.h>
-
-JPH_SUPPRESS_WARNINGS_STD_BEGIN
-#include <atomic>
-JPH_SUPPRESS_WARNINGS_STD_END
+#include <Jolt/Core/Atomics.h>
 
 
 JPH_NAMESPACE_BEGIN
 JPH_NAMESPACE_BEGIN
 
 

+ 1 - 1
Jolt/Physics/PhysicsUpdateContext.h

@@ -146,7 +146,7 @@ public:
 		JobHandle			mStartNextStep;											///< Job that kicks the next step (empty for the last step)
 		JobHandle			mStartNextStep;											///< Job that kicks the next step (empty for the last step)
 	};
 	};
 
 
-	using Steps = vector<Step, STLTempAllocator<Step>>;
+	using Steps = std::vector<Step, STLTempAllocator<Step>>;
 
 
 	/// Maximum amount of concurrent jobs on this machine
 	/// Maximum amount of concurrent jobs on this machine
 	int						GetMaxConcurrency() const								{ const int max_concurrency = PhysicsUpdateContext::cMaxConcurrency; return min(max_concurrency, mJobSystem->GetMaxConcurrency()); } ///< Need to put max concurrency in temp var as min requires a reference
 	int						GetMaxConcurrency() const								{ const int max_concurrency = PhysicsUpdateContext::cMaxConcurrency; return min(max_concurrency, mJobSystem->GetMaxConcurrency()); } ///< Need to put max concurrency in temp var as min requires a reference

+ 5 - 5
Jolt/Physics/StateRecorderImpl.cpp

@@ -14,7 +14,7 @@ void StateRecorderImpl::WriteBytes(const void *inData, size_t inNumBytes)
 
 
 void StateRecorderImpl::Rewind()
 void StateRecorderImpl::Rewind()
 {
 {
-	mStream.seekg(0, stringstream::beg);
+	mStream.seekg(0, std::stringstream::beg);
 }
 }
 
 
 void StateRecorderImpl::ReadBytes(void *outData, size_t inNumBytes)
 void StateRecorderImpl::ReadBytes(void *outData, size_t inNumBytes)
@@ -49,14 +49,14 @@ void StateRecorderImpl::ReadBytes(void *outData, size_t inNumBytes)
 bool StateRecorderImpl::IsEqual(StateRecorderImpl &inReference)
 bool StateRecorderImpl::IsEqual(StateRecorderImpl &inReference)
 {	
 {	
 	// Get length of new state
 	// Get length of new state
-	mStream.seekg(0, stringstream::end);
+	mStream.seekg(0, std::stringstream::end);
 	std::streamoff this_len = mStream.tellg();
 	std::streamoff this_len = mStream.tellg();
-	mStream.seekg(0, stringstream::beg);
+	mStream.seekg(0, std::stringstream::beg);
 
 
 	// Get length of old state
 	// Get length of old state
-	inReference.mStream.seekg(0, stringstream::end);
+	inReference.mStream.seekg(0, std::stringstream::end);
 	std::streamoff reference_len = inReference.mStream.tellg();
 	std::streamoff reference_len = inReference.mStream.tellg();
-	inReference.mStream.seekg(0, stringstream::beg);
+	inReference.mStream.seekg(0, std::stringstream::beg);
 
 
 	// Compare size
 	// Compare size
 	bool fail = reference_len != this_len;
 	bool fail = reference_len != this_len;

+ 2 - 2
Jolt/Physics/StateRecorderImpl.h

@@ -13,7 +13,7 @@ class StateRecorderImpl final : public StateRecorder
 public:
 public:
 	/// Constructor
 	/// Constructor
 						StateRecorderImpl() = default;
 						StateRecorderImpl() = default;
-						StateRecorderImpl(StateRecorderImpl &&inRHS)				: StateRecorder(inRHS), mStream(move(inRHS.mStream)) { }
+						StateRecorderImpl(StateRecorderImpl &&inRHS)				: StateRecorder(inRHS), mStream(std::move(inRHS.mStream)) { }
 
 
 	/// Write a string of bytes to the binary stream
 	/// Write a string of bytes to the binary stream
 	virtual void		WriteBytes(const void *inData, size_t inNumBytes) override;
 	virtual void		WriteBytes(const void *inData, size_t inNumBytes) override;
@@ -37,7 +37,7 @@ public:
 	string				GetData() const												{ return mStream.str(); }
 	string				GetData() const												{ return mStream.str(); }
 
 
 private:
 private:
-	stringstream		mStream;
+	std::stringstream	mStream;
 };
 };
 
 
 JPH_NAMESPACE_END
 JPH_NAMESPACE_END

+ 1 - 1
Jolt/Skeleton/SkeletonMapper.cpp

@@ -91,7 +91,7 @@ void SkeletonMapper::Initialize(const Skeleton *inSkeleton1, const Mat44 *inNeut
 					mapped2[j2] = true;
 					mapped2[j2] = true;
 
 
 				// Insert the chain
 				// Insert the chain
-				mChains.emplace_back(move(chain1), move(chain2));
+				mChains.emplace_back(std::move(chain1), std::move(chain2));
 			}
 			}
 		}
 		}
 	}
 	}

+ 1 - 1
Jolt/Skeleton/SkeletonMapper.h

@@ -30,7 +30,7 @@ public:
 	{
 	{
 	public:
 	public:
 							Chain() = default;
 							Chain() = default;
-							Chain(Array<int> &&inJointIndices1, Array<int> &&inJointIndices2) : mJointIndices1(move(inJointIndices1)), mJointIndices2(move(inJointIndices2)) { }
+							Chain(Array<int> &&inJointIndices1, Array<int> &&inJointIndices2) : mJointIndices1(std::move(inJointIndices1)), mJointIndices2(std::move(inJointIndices2)) { }
 
 
 		Array<int>			mJointIndices1;																///< Joint chain from skeleton 1
 		Array<int>			mJointIndices1;																///< Joint chain from skeleton 1
 		Array<int>			mJointIndices2;																///< Corresponding joint chain from skeleton 2
 		Array<int>			mJointIndices2;																///< Corresponding joint chain from skeleton 2

+ 1 - 1
Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.cpp

@@ -76,7 +76,7 @@ void TriangleGrouperClosestCentroid::Group(const VertexList &inVertices, const I
 				*other = *batch_end_minus_1;
 				*other = *batch_end_minus_1;
 
 
 				// Find first element that is bigger than this one and insert the current item before it
 				// Find first element that is bigger than this one and insert the current item before it
-				Array<uint>::iterator upper = upper_bound(batch_begin_plus_1, batch_end, dist, 
+				Array<uint>::iterator upper = std::upper_bound(batch_begin_plus_1, batch_end, dist, 
 					[&first_centroid, &centroids](float inLHS, uint inRHS)
 					[&first_centroid, &centroids](float inLHS, uint inRHS)
 					{
 					{
 						return inLHS < (centroids[inRHS] - first_centroid).LengthSq(); 
 						return inLHS < (centroids[inRHS] - first_centroid).LengthSq(); 

+ 1 - 1
Samples/SamplesApp.cpp

@@ -2102,7 +2102,7 @@ void SamplesApp::DrawPhysics()
 	}
 	}
 
 
 	// Replace the map with the newly created map so that shapes that we don't draw / were removed are released
 	// Replace the map with the newly created map so that shapes that we don't draw / were removed are released
-	mShapeToGeometry = move(shape_to_geometry);
+	mShapeToGeometry = std::move(shape_to_geometry);
 }
 }
 
 
 void SamplesApp::StepPhysics(JobSystem *inJobSystem)
 void SamplesApp::StepPhysics(JobSystem *inJobSystem)

+ 1 - 1
Samples/Tests/ConvexCollision/ConvexHullShrinkTest.cpp

@@ -107,7 +107,7 @@ void ConvexHullShrinkTest::Initialize()
 					points_stream.read((char *)&v, sizeof(v));
 					points_stream.read((char *)&v, sizeof(v));
 					p.push_back(Vec3(v));
 					p.push_back(Vec3(v));
 				}
 				}
-				mPoints.push_back(move(p));
+				mPoints.push_back(std::move(p));
 			}
 			}
 		}
 		}
 	}
 	}

+ 5 - 5
Samples/Tests/ConvexCollision/ConvexHullTest.cpp

@@ -417,7 +417,7 @@ void ConvexHullTest::Initialize()
 			for (int y = 0; y < 10; ++y)
 			for (int y = 0; y < 10; ++y)
 				for (int z = 0; z < 10; ++z)
 				for (int z = 0; z < 10; ++z)
 					p.push_back(Vec3::sReplicate(-0.5f) * 0.1f * Vec3(float(x), float(y), float(z)));
 					p.push_back(Vec3::sReplicate(-0.5f) * 0.1f * Vec3(float(x), float(y), float(z)));
-		mPoints.push_back(move(p));
+		mPoints.push_back(std::move(p));
 	}
 	}
 
 
 	// Add disc of many points
 	// Add disc of many points
@@ -427,7 +427,7 @@ void ConvexHullTest::Initialize()
 		for (float r = 0.0f; r < 2.0f; r += 0.1f)
 		for (float r = 0.0f; r < 2.0f; r += 0.1f)
 			for (float phi = 0.0f; phi <= 2.0f * JPH_PI; phi += 2.0f * JPH_PI / 20.0f)
 			for (float phi = 0.0f; phi <= 2.0f * JPH_PI; phi += 2.0f * JPH_PI / 20.0f)
 				p.push_back(rot * Vec3(r * Cos(phi), r * Sin(phi), 0));
 				p.push_back(rot * Vec3(r * Cos(phi), r * Sin(phi), 0));
-		mPoints.push_back(move(p));
+		mPoints.push_back(std::move(p));
 	}
 	}
 
 
 	// Add wedge shaped disc that is just above the hull tolerance on its widest side and zero on the other side
 	// Add wedge shaped disc that is just above the hull tolerance on its widest side and zero on the other side
@@ -439,7 +439,7 @@ void ConvexHullTest::Initialize()
 			p.push_back(pos);
 			p.push_back(pos);
 			p.push_back(pos + Vec3(0, 2.0e-3f * (2.0f + pos.GetX()) / 4.0f, 0));
 			p.push_back(pos + Vec3(0, 2.0e-3f * (2.0f + pos.GetX()) / 4.0f, 0));
 		}
 		}
-		mPoints.push_back(move(p));
+		mPoints.push_back(std::move(p));
 	}
 	}
 
 
 	// Add a sphere of many points
 	// Add a sphere of many points
@@ -448,7 +448,7 @@ void ConvexHullTest::Initialize()
 		for (float theta = 0.0f; theta <= JPH_PI; theta += JPH_PI / 20.0f)
 		for (float theta = 0.0f; theta <= JPH_PI; theta += JPH_PI / 20.0f)
 			for (float phi = 0.0f; phi <= 2.0f * JPH_PI; phi += 2.0f * JPH_PI / 20.0f)
 			for (float phi = 0.0f; phi <= 2.0f * JPH_PI; phi += 2.0f * JPH_PI / 20.0f)
 				p.push_back(Vec3::sUnitSpherical(theta, phi));
 				p.push_back(Vec3::sUnitSpherical(theta, phi));
-		mPoints.push_back(move(p));
+		mPoints.push_back(std::move(p));
 	}
 	}
 
 
 	// Open the external file with hulls
 	// Open the external file with hulls
@@ -474,7 +474,7 @@ void ConvexHullTest::Initialize()
 					points_stream.read((char *)&v, sizeof(v));
 					points_stream.read((char *)&v, sizeof(v));
 					p.push_back(Vec3(v));
 					p.push_back(Vec3(v));
 				}
 				}
-				mPoints.push_back(move(p));
+				mPoints.push_back(std::move(p));
 			}
 			}
 		}
 		}
 	}
 	}

+ 1 - 0
TestFramework/TestFramework.h

@@ -33,3 +33,4 @@ JPH_SUPPRESS_WARNING_POP
 
 
 using Microsoft::WRL::ComPtr;
 using Microsoft::WRL::ComPtr;
 using namespace JPH;
 using namespace JPH;
+using namespace std;

+ 3 - 3
UnitTests/Geometry/EPATests.cpp

@@ -53,17 +53,17 @@ TEST_SUITE("EPATests")
 			// Check angle between v1 and v2
 			// Check angle between v1 and v2
 			float angle = AngleBetweenVectors(v1, v2);
 			float angle = AngleBetweenVectors(v1, v2);
 			CHECK(angle < 0.1f);
 			CHECK(angle < 0.1f);
-			EPA_TESTS_TRACE("Angle = %.9g\n", angle);
+			EPA_TESTS_TRACE("Angle = %.9g\n", (double)angle);
 
 
 			// Check delta between contact on A
 			// Check delta between contact on A
 			Vec3 dpa = pa2 - pa1;
 			Vec3 dpa = pa2 - pa1;
 			CHECK(dpa.Length() < 8.0e-4f);
 			CHECK(dpa.Length() < 8.0e-4f);
-			EPA_TESTS_TRACE("Delta A = %.9g\n", dpa.Length());
+			EPA_TESTS_TRACE("Delta A = %.9g\n", (double)dpa.Length());
 
 
 			// Check delta between contact on B
 			// Check delta between contact on B
 			Vec3 dpb = pb2 - pb1;
 			Vec3 dpb = pb2 - pb1;
 			CHECK(dpb.Length() < 8.0e-4f);
 			CHECK(dpb.Length() < 8.0e-4f);
-			EPA_TESTS_TRACE("Delta B = %.9g\n", dpb.Length());
+			EPA_TESTS_TRACE("Delta B = %.9g\n", (double)dpb.Length());
 		}
 		}
 
 
 		return intersect1;
 		return intersect1;

+ 1 - 0
UnitTests/UnitTestFramework.h

@@ -12,6 +12,7 @@ JPH_CLANG_SUPPRESS_WARNING("-Wheader-hygiene")
 #include "doctest.h"
 #include "doctest.h"
 
 
 using namespace JPH;
 using namespace JPH;
+using namespace std;
 
 
 inline void CHECK_APPROX_EQUAL(float inLHS, float inRHS, float inTolerance = 1.0e-6f)
 inline void CHECK_APPROX_EQUAL(float inLHS, float inRHS, float inTolerance = 1.0e-6f)
 {
 {