summaryrefslogtreecommitdiff
path: root/Source/3rdParty/Box2D/Common
diff options
context:
space:
mode:
Diffstat (limited to 'Source/3rdParty/Box2D/Common')
-rw-r--r--Source/3rdParty/Box2D/Common/b2BlockAllocator.cpp215
-rw-r--r--Source/3rdParty/Box2D/Common/b2BlockAllocator.h62
-rw-r--r--Source/3rdParty/Box2D/Common/b2Draw.cpp44
-rw-r--r--Source/3rdParty/Box2D/Common/b2Draw.h97
-rw-r--r--Source/3rdParty/Box2D/Common/b2GrowableStack.h85
-rw-r--r--Source/3rdParty/Box2D/Common/b2Math.cpp94
-rw-r--r--Source/3rdParty/Box2D/Common/b2Math.h707
-rw-r--r--Source/3rdParty/Box2D/Common/b2Settings.cpp44
-rw-r--r--Source/3rdParty/Box2D/Common/b2Settings.h155
-rw-r--r--Source/3rdParty/Box2D/Common/b2StackAllocator.cpp83
-rw-r--r--Source/3rdParty/Box2D/Common/b2StackAllocator.h60
-rw-r--r--Source/3rdParty/Box2D/Common/b2Timer.cpp121
-rw-r--r--Source/3rdParty/Box2D/Common/b2Timer.h50
13 files changed, 0 insertions, 1817 deletions
diff --git a/Source/3rdParty/Box2D/Common/b2BlockAllocator.cpp b/Source/3rdParty/Box2D/Common/b2BlockAllocator.cpp
deleted file mode 100644
index b721de8..0000000
--- a/Source/3rdParty/Box2D/Common/b2BlockAllocator.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2BlockAllocator.h"
-#include <limits.h>
-#include <string.h>
-#include <stddef.h>
-
-int32 b2BlockAllocator::s_blockSizes[b2_blockSizes] =
-{
- 16, // 0
- 32, // 1
- 64, // 2
- 96, // 3
- 128, // 4
- 160, // 5
- 192, // 6
- 224, // 7
- 256, // 8
- 320, // 9
- 384, // 10
- 448, // 11
- 512, // 12
- 640, // 13
-};
-uint8 b2BlockAllocator::s_blockSizeLookup[b2_maxBlockSize + 1];
-bool b2BlockAllocator::s_blockSizeLookupInitialized;
-
-struct b2Chunk
-{
- int32 blockSize;
- b2Block* blocks;
-};
-
-struct b2Block
-{
- b2Block* next;
-};
-
-b2BlockAllocator::b2BlockAllocator()
-{
- b2Assert(b2_blockSizes < UCHAR_MAX);
-
- m_chunkSpace = b2_chunkArrayIncrement;
- m_chunkCount = 0;
- m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk));
-
- memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk));
- memset(m_freeLists, 0, sizeof(m_freeLists));
-
- if (s_blockSizeLookupInitialized == false)
- {
- int32 j = 0;
- for (int32 i = 1; i <= b2_maxBlockSize; ++i)
- {
- b2Assert(j < b2_blockSizes);
- if (i <= s_blockSizes[j])
- {
- s_blockSizeLookup[i] = (uint8)j;
- }
- else
- {
- ++j;
- s_blockSizeLookup[i] = (uint8)j;
- }
- }
-
- s_blockSizeLookupInitialized = true;
- }
-}
-
-b2BlockAllocator::~b2BlockAllocator()
-{
- for (int32 i = 0; i < m_chunkCount; ++i)
- {
- b2Free(m_chunks[i].blocks);
- }
-
- b2Free(m_chunks);
-}
-
-void* b2BlockAllocator::Allocate(int32 size)
-{
- if (size == 0)
- return nullptr;
-
- b2Assert(0 < size);
-
- if (size > b2_maxBlockSize)
- {
- return b2Alloc(size);
- }
-
- int32 index = s_blockSizeLookup[size];
- b2Assert(0 <= index && index < b2_blockSizes);
-
- if (m_freeLists[index])
- {
- b2Block* block = m_freeLists[index];
- m_freeLists[index] = block->next;
- return block;
- }
- else
- {
- if (m_chunkCount == m_chunkSpace)
- {
- b2Chunk* oldChunks = m_chunks;
- m_chunkSpace += b2_chunkArrayIncrement;
- m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk));
- memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk));
- memset(m_chunks + m_chunkCount, 0, b2_chunkArrayIncrement * sizeof(b2Chunk));
- b2Free(oldChunks);
- }
-
- b2Chunk* chunk = m_chunks + m_chunkCount;
- chunk->blocks = (b2Block*)b2Alloc(b2_chunkSize);
-#if defined(_DEBUG)
- memset(chunk->blocks, 0xcd, b2_chunkSize);
-#endif
- int32 blockSize = s_blockSizes[index];
- chunk->blockSize = blockSize;
- int32 blockCount = b2_chunkSize / blockSize;
- b2Assert(blockCount * blockSize <= b2_chunkSize);
- for (int32 i = 0; i < blockCount - 1; ++i)
- {
- b2Block* block = (b2Block*)((int8*)chunk->blocks + blockSize * i);
- b2Block* next = (b2Block*)((int8*)chunk->blocks + blockSize * (i + 1));
- block->next = next;
- }
- b2Block* last = (b2Block*)((int8*)chunk->blocks + blockSize * (blockCount - 1));
- last->next = nullptr;
-
- m_freeLists[index] = chunk->blocks->next;
- ++m_chunkCount;
-
- return chunk->blocks;
- }
-}
-
-void b2BlockAllocator::Free(void* p, int32 size)
-{
- if (size == 0)
- {
- return;
- }
-
- b2Assert(0 < size);
-
- if (size > b2_maxBlockSize)
- {
- b2Free(p);
- return;
- }
-
- int32 index = s_blockSizeLookup[size];
- b2Assert(0 <= index && index < b2_blockSizes);
-
-#ifdef _DEBUG
- // Verify the memory address and size is valid.
- int32 blockSize = s_blockSizes[index];
- bool found = false;
- for (int32 i = 0; i < m_chunkCount; ++i)
- {
- b2Chunk* chunk = m_chunks + i;
- if (chunk->blockSize != blockSize)
- {
- b2Assert( (int8*)p + blockSize <= (int8*)chunk->blocks ||
- (int8*)chunk->blocks + b2_chunkSize <= (int8*)p);
- }
- else
- {
- if ((int8*)chunk->blocks <= (int8*)p && (int8*)p + blockSize <= (int8*)chunk->blocks + b2_chunkSize)
- {
- found = true;
- }
- }
- }
-
- b2Assert(found);
-
- memset(p, 0xfd, blockSize);
-#endif
-
- b2Block* block = (b2Block*)p;
- block->next = m_freeLists[index];
- m_freeLists[index] = block;
-}
-
-void b2BlockAllocator::Clear()
-{
- for (int32 i = 0; i < m_chunkCount; ++i)
- {
- b2Free(m_chunks[i].blocks);
- }
-
- m_chunkCount = 0;
- memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk));
-
- memset(m_freeLists, 0, sizeof(m_freeLists));
-}
diff --git a/Source/3rdParty/Box2D/Common/b2BlockAllocator.h b/Source/3rdParty/Box2D/Common/b2BlockAllocator.h
deleted file mode 100644
index 8dfa254..0000000
--- a/Source/3rdParty/Box2D/Common/b2BlockAllocator.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_BLOCK_ALLOCATOR_H
-#define B2_BLOCK_ALLOCATOR_H
-
-#include "Box2D/Common/b2Settings.h"
-
-const int32 b2_chunkSize = 16 * 1024;
-const int32 b2_maxBlockSize = 640;
-const int32 b2_blockSizes = 14;
-const int32 b2_chunkArrayIncrement = 128;
-
-struct b2Block;
-struct b2Chunk;
-
-/// This is a small object allocator used for allocating small
-/// objects that persist for more than one time step.
-/// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp
-class b2BlockAllocator
-{
-public:
- b2BlockAllocator();
- ~b2BlockAllocator();
-
- /// Allocate memory. This will use b2Alloc if the size is larger than b2_maxBlockSize.
- void* Allocate(int32 size);
-
- /// Free memory. This will use b2Free if the size is larger than b2_maxBlockSize.
- void Free(void* p, int32 size);
-
- void Clear();
-
-private:
-
- b2Chunk* m_chunks;
- int32 m_chunkCount;
- int32 m_chunkSpace;
-
- b2Block* m_freeLists[b2_blockSizes];
-
- static int32 s_blockSizes[b2_blockSizes];
- static uint8 s_blockSizeLookup[b2_maxBlockSize + 1];
- static bool s_blockSizeLookupInitialized;
-};
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2Draw.cpp b/Source/3rdParty/Box2D/Common/b2Draw.cpp
deleted file mode 100644
index 4d412cd..0000000
--- a/Source/3rdParty/Box2D/Common/b2Draw.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2011 Erin Catto http://box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2Draw.h"
-
-b2Draw::b2Draw()
-{
- m_drawFlags = 0;
-}
-
-void b2Draw::SetFlags(uint32 flags)
-{
- m_drawFlags = flags;
-}
-
-uint32 b2Draw::GetFlags() const
-{
- return m_drawFlags;
-}
-
-void b2Draw::AppendFlags(uint32 flags)
-{
- m_drawFlags |= flags;
-}
-
-void b2Draw::ClearFlags(uint32 flags)
-{
- m_drawFlags &= ~flags;
-}
diff --git a/Source/3rdParty/Box2D/Common/b2Draw.h b/Source/3rdParty/Box2D/Common/b2Draw.h
deleted file mode 100644
index ef81826..0000000
--- a/Source/3rdParty/Box2D/Common/b2Draw.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2011 Erin Catto http://box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_DRAW_H
-#define B2_DRAW_H
-
-#include "Box2D/Common/b2Math.h"
-
-/// Color for debug drawing. Each value has the range [0,1].
-struct b2Color
-{
- b2Color() {}
- b2Color(float32 rIn, float32 gIn, float32 bIn, float32 aIn = 1.0f)
- {
- r = rIn; g = gIn; b = bIn; a = aIn;
- }
-
- void Set(float32 rIn, float32 gIn, float32 bIn, float32 aIn = 1.0f)
- {
- r = rIn; g = gIn; b = bIn; a = aIn;
- }
-
- float32 r, g, b, a;
-};
-
-/// Implement and register this class with a b2World to provide debug drawing of physics
-/// entities in your game.
-class b2Draw
-{
-public:
- b2Draw();
-
- virtual ~b2Draw() {}
-
- enum
- {
- e_shapeBit = 0x0001, ///< draw shapes
- e_jointBit = 0x0002, ///< draw joint connections
- e_aabbBit = 0x0004, ///< draw axis aligned bounding boxes
- e_pairBit = 0x0008, ///< draw broad-phase pairs
- e_centerOfMassBit = 0x0010 ///< draw center of mass frame
- };
-
- /// Set the drawing flags.
- void SetFlags(uint32 flags);
-
- /// Get the drawing flags.
- uint32 GetFlags() const;
-
- /// Append flags to the current flags.
- void AppendFlags(uint32 flags);
-
- /// Clear flags from the current flags.
- void ClearFlags(uint32 flags);
-
- /// Draw a closed polygon provided in CCW order.
- virtual void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0;
-
- /// Draw a solid closed polygon provided in CCW order.
- virtual void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0;
-
- /// Draw a circle.
- virtual void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color) = 0;
-
- /// Draw a solid circle.
- virtual void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color) = 0;
-
- /// Draw a line segment.
- virtual void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color) = 0;
-
- /// Draw a transform. Choose your own length scale.
- /// @param xf a transform.
- virtual void DrawTransform(const b2Transform& xf) = 0;
-
- /// Draw a point.
- virtual void DrawPoint(const b2Vec2& p, float32 size, const b2Color& color) = 0;
-
-protected:
- uint32 m_drawFlags;
-};
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2GrowableStack.h b/Source/3rdParty/Box2D/Common/b2GrowableStack.h
deleted file mode 100644
index 8d239c7..0000000
--- a/Source/3rdParty/Box2D/Common/b2GrowableStack.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-* Copyright (c) 2010 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_GROWABLE_STACK_H
-#define B2_GROWABLE_STACK_H
-#include "Box2D/Common/b2Settings.h"
-#include <string.h>
-
-/// This is a growable LIFO stack with an initial capacity of N.
-/// If the stack size exceeds the initial capacity, the heap is used
-/// to increase the size of the stack.
-template <typename T, int32 N>
-class b2GrowableStack
-{
-public:
- b2GrowableStack()
- {
- m_stack = m_array;
- m_count = 0;
- m_capacity = N;
- }
-
- ~b2GrowableStack()
- {
- if (m_stack != m_array)
- {
- b2Free(m_stack);
- m_stack = nullptr;
- }
- }
-
- void Push(const T& element)
- {
- if (m_count == m_capacity)
- {
- T* old = m_stack;
- m_capacity *= 2;
- m_stack = (T*)b2Alloc(m_capacity * sizeof(T));
- memcpy(m_stack, old, m_count * sizeof(T));
- if (old != m_array)
- {
- b2Free(old);
- }
- }
-
- m_stack[m_count] = element;
- ++m_count;
- }
-
- T Pop()
- {
- b2Assert(m_count > 0);
- --m_count;
- return m_stack[m_count];
- }
-
- int32 GetCount()
- {
- return m_count;
- }
-
-private:
- T* m_stack;
- T m_array[N];
- int32 m_count;
- int32 m_capacity;
-};
-
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2Math.cpp b/Source/3rdParty/Box2D/Common/b2Math.cpp
deleted file mode 100644
index f9f5f39..0000000
--- a/Source/3rdParty/Box2D/Common/b2Math.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2Math.h"
-
-const b2Vec2 b2Vec2_zero(0.0f, 0.0f);
-
-/// Solve A * x = b, where b is a column vector. This is more efficient
-/// than computing the inverse in one-shot cases.
-b2Vec3 b2Mat33::Solve33(const b2Vec3& b) const
-{
- float32 det = b2Dot(ex, b2Cross(ey, ez));
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
- b2Vec3 x;
- x.x = det * b2Dot(b, b2Cross(ey, ez));
- x.y = det * b2Dot(ex, b2Cross(b, ez));
- x.z = det * b2Dot(ex, b2Cross(ey, b));
- return x;
-}
-
-/// Solve A * x = b, where b is a column vector. This is more efficient
-/// than computing the inverse in one-shot cases.
-b2Vec2 b2Mat33::Solve22(const b2Vec2& b) const
-{
- float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y;
- float32 det = a11 * a22 - a12 * a21;
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
- b2Vec2 x;
- x.x = det * (a22 * b.x - a12 * b.y);
- x.y = det * (a11 * b.y - a21 * b.x);
- return x;
-}
-
-///
-void b2Mat33::GetInverse22(b2Mat33* M) const
-{
- float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y;
- float32 det = a * d - b * c;
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
-
- M->ex.x = det * d; M->ey.x = -det * b; M->ex.z = 0.0f;
- M->ex.y = -det * c; M->ey.y = det * a; M->ey.z = 0.0f;
- M->ez.x = 0.0f; M->ez.y = 0.0f; M->ez.z = 0.0f;
-}
-
-/// Returns the zero matrix if singular.
-void b2Mat33::GetSymInverse33(b2Mat33* M) const
-{
- float32 det = b2Dot(ex, b2Cross(ey, ez));
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
-
- float32 a11 = ex.x, a12 = ey.x, a13 = ez.x;
- float32 a22 = ey.y, a23 = ez.y;
- float32 a33 = ez.z;
-
- M->ex.x = det * (a22 * a33 - a23 * a23);
- M->ex.y = det * (a13 * a23 - a12 * a33);
- M->ex.z = det * (a12 * a23 - a13 * a22);
-
- M->ey.x = M->ex.y;
- M->ey.y = det * (a11 * a33 - a13 * a13);
- M->ey.z = det * (a13 * a12 - a11 * a23);
-
- M->ez.x = M->ex.z;
- M->ez.y = M->ey.z;
- M->ez.z = det * (a11 * a22 - a12 * a12);
-}
diff --git a/Source/3rdParty/Box2D/Common/b2Math.h b/Source/3rdParty/Box2D/Common/b2Math.h
deleted file mode 100644
index 7a816e5..0000000
--- a/Source/3rdParty/Box2D/Common/b2Math.h
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_MATH_H
-#define B2_MATH_H
-
-#include "Box2D/Common/b2Settings.h"
-#include <math.h>
-
-/// This function is used to ensure that a floating point number is not a NaN or infinity.
-inline bool b2IsValid(float32 x)
-{
- return isfinite(x);
-}
-
-#define b2Sqrt(x) sqrtf(x)
-#define b2Atan2(y, x) atan2f(y, x)
-
-/// A 2D column vector.
-struct b2Vec2
-{
- /// Default constructor does nothing (for performance).
- b2Vec2() {}
-
- /// Construct using coordinates.
- b2Vec2(float32 xIn, float32 yIn) : x(xIn), y(yIn) {}
-
- /// Set this vector to all zeros.
- void SetZero() { x = 0.0f; y = 0.0f; }
-
- /// Set this vector to some specified coordinates.
- void Set(float32 x_, float32 y_) { x = x_; y = y_; }
-
- /// Negate this vector.
- b2Vec2 operator -() const { b2Vec2 v; v.Set(-x, -y); return v; }
-
- /// Read from and indexed element.
- float32 operator () (int32 i) const
- {
- return (&x)[i];
- }
-
- /// Write to an indexed element.
- float32& operator () (int32 i)
- {
- return (&x)[i];
- }
-
- /// Add a vector to this vector.
- void operator += (const b2Vec2& v)
- {
- x += v.x; y += v.y;
- }
-
- /// Subtract a vector from this vector.
- void operator -= (const b2Vec2& v)
- {
- x -= v.x; y -= v.y;
- }
-
- /// Multiply this vector by a scalar.
- void operator *= (float32 a)
- {
- x *= a; y *= a;
- }
-
- /// Get the length of this vector (the norm).
- float32 Length() const
- {
- return b2Sqrt(x * x + y * y);
- }
-
- /// Get the length squared. For performance, use this instead of
- /// b2Vec2::Length (if possible).
- float32 LengthSquared() const
- {
- return x * x + y * y;
- }
-
- /// Convert this vector into a unit vector. Returns the length.
- float32 Normalize()
- {
- float32 length = Length();
- if (length < b2_epsilon)
- {
- return 0.0f;
- }
- float32 invLength = 1.0f / length;
- x *= invLength;
- y *= invLength;
-
- return length;
- }
-
- /// Does this vector contain finite coordinates?
- bool IsValid() const
- {
- return b2IsValid(x) && b2IsValid(y);
- }
-
- /// Get the skew vector such that dot(skew_vec, other) == cross(vec, other)
- b2Vec2 Skew() const
- {
- return b2Vec2(-y, x);
- }
-
- float32 x, y;
-};
-
-/// A 2D column vector with 3 elements.
-struct b2Vec3
-{
- /// Default constructor does nothing (for performance).
- b2Vec3() {}
-
- /// Construct using coordinates.
- b2Vec3(float32 xIn, float32 yIn, float32 zIn) : x(xIn), y(yIn), z(zIn) {}
-
- /// Set this vector to all zeros.
- void SetZero() { x = 0.0f; y = 0.0f; z = 0.0f; }
-
- /// Set this vector to some specified coordinates.
- void Set(float32 x_, float32 y_, float32 z_) { x = x_; y = y_; z = z_; }
-
- /// Negate this vector.
- b2Vec3 operator -() const { b2Vec3 v; v.Set(-x, -y, -z); return v; }
-
- /// Add a vector to this vector.
- void operator += (const b2Vec3& v)
- {
- x += v.x; y += v.y; z += v.z;
- }
-
- /// Subtract a vector from this vector.
- void operator -= (const b2Vec3& v)
- {
- x -= v.x; y -= v.y; z -= v.z;
- }
-
- /// Multiply this vector by a scalar.
- void operator *= (float32 s)
- {
- x *= s; y *= s; z *= s;
- }
-
- float32 x, y, z;
-};
-
-/// A 2-by-2 matrix. Stored in column-major order.
-struct b2Mat22
-{
- /// The default constructor does nothing (for performance).
- b2Mat22() {}
-
- /// Construct this matrix using columns.
- b2Mat22(const b2Vec2& c1, const b2Vec2& c2)
- {
- ex = c1;
- ey = c2;
- }
-
- /// Construct this matrix using scalars.
- b2Mat22(float32 a11, float32 a12, float32 a21, float32 a22)
- {
- ex.x = a11; ex.y = a21;
- ey.x = a12; ey.y = a22;
- }
-
- /// Initialize this matrix using columns.
- void Set(const b2Vec2& c1, const b2Vec2& c2)
- {
- ex = c1;
- ey = c2;
- }
-
- /// Set this to the identity matrix.
- void SetIdentity()
- {
- ex.x = 1.0f; ey.x = 0.0f;
- ex.y = 0.0f; ey.y = 1.0f;
- }
-
- /// Set this matrix to all zeros.
- void SetZero()
- {
- ex.x = 0.0f; ey.x = 0.0f;
- ex.y = 0.0f; ey.y = 0.0f;
- }
-
- b2Mat22 GetInverse() const
- {
- float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y;
- b2Mat22 B;
- float32 det = a * d - b * c;
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
- B.ex.x = det * d; B.ey.x = -det * b;
- B.ex.y = -det * c; B.ey.y = det * a;
- return B;
- }
-
- /// Solve A * x = b, where b is a column vector. This is more efficient
- /// than computing the inverse in one-shot cases.
- b2Vec2 Solve(const b2Vec2& b) const
- {
- float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y;
- float32 det = a11 * a22 - a12 * a21;
- if (det != 0.0f)
- {
- det = 1.0f / det;
- }
- b2Vec2 x;
- x.x = det * (a22 * b.x - a12 * b.y);
- x.y = det * (a11 * b.y - a21 * b.x);
- return x;
- }
-
- b2Vec2 ex, ey;
-};
-
-/// A 3-by-3 matrix. Stored in column-major order.
-struct b2Mat33
-{
- /// The default constructor does nothing (for performance).
- b2Mat33() {}
-
- /// Construct this matrix using columns.
- b2Mat33(const b2Vec3& c1, const b2Vec3& c2, const b2Vec3& c3)
- {
- ex = c1;
- ey = c2;
- ez = c3;
- }
-
- /// Set this matrix to all zeros.
- void SetZero()
- {
- ex.SetZero();
- ey.SetZero();
- ez.SetZero();
- }
-
- /// Solve A * x = b, where b is a column vector. This is more efficient
- /// than computing the inverse in one-shot cases.
- b2Vec3 Solve33(const b2Vec3& b) const;
-
- /// Solve A * x = b, where b is a column vector. This is more efficient
- /// than computing the inverse in one-shot cases. Solve only the upper
- /// 2-by-2 matrix equation.
- b2Vec2 Solve22(const b2Vec2& b) const;
-
- /// Get the inverse of this matrix as a 2-by-2.
- /// Returns the zero matrix if singular.
- void GetInverse22(b2Mat33* M) const;
-
- /// Get the symmetric inverse of this matrix as a 3-by-3.
- /// Returns the zero matrix if singular.
- void GetSymInverse33(b2Mat33* M) const;
-
- b2Vec3 ex, ey, ez;
-};
-
-/// Rotation
-struct b2Rot
-{
- b2Rot() {}
-
- /// Initialize from an angle in radians
- explicit b2Rot(float32 angle)
- {
- /// TODO_ERIN optimize
- s = sinf(angle);
- c = cosf(angle);
- }
-
- /// Set using an angle in radians.
- void Set(float32 angle)
- {
- /// TODO_ERIN optimize
- s = sinf(angle);
- c = cosf(angle);
- }
-
- /// Set to the identity rotation
- void SetIdentity()
- {
- s = 0.0f;
- c = 1.0f;
- }
-
- /// Get the angle in radians
- float32 GetAngle() const
- {
- return b2Atan2(s, c);
- }
-
- /// Get the x-axis
- b2Vec2 GetXAxis() const
- {
- return b2Vec2(c, s);
- }
-
- /// Get the u-axis
- b2Vec2 GetYAxis() const
- {
- return b2Vec2(-s, c);
- }
-
- /// Sine and cosine
- float32 s, c;
-};
-
-/// A transform contains translation and rotation. It is used to represent
-/// the position and orientation of rigid frames.
-struct b2Transform
-{
- /// The default constructor does nothing.
- b2Transform() {}
-
- /// Initialize using a position vector and a rotation.
- b2Transform(const b2Vec2& position, const b2Rot& rotation) : p(position), q(rotation) {}
-
- /// Set this to the identity transform.
- void SetIdentity()
- {
- p.SetZero();
- q.SetIdentity();
- }
-
- /// Set this based on the position and angle.
- void Set(const b2Vec2& position, float32 angle)
- {
- p = position;
- q.Set(angle);
- }
-
- b2Vec2 p;
- b2Rot q;
-};
-
-/// This describes the motion of a body/shape for TOI computation.
-/// Shapes are defined with respect to the body origin, which may
-/// no coincide with the center of mass. However, to support dynamics
-/// we must interpolate the center of mass position.
-struct b2Sweep
-{
- /// Get the interpolated transform at a specific time.
- /// @param beta is a factor in [0,1], where 0 indicates alpha0.
- void GetTransform(b2Transform* xfb, float32 beta) const;
-
- /// Advance the sweep forward, yielding a new initial state.
- /// @param alpha the new initial time.
- void Advance(float32 alpha);
-
- /// Normalize the angles.
- void Normalize();
-
- b2Vec2 localCenter; ///< local center of mass position
- b2Vec2 c0, c; ///< center world positions
- float32 a0, a; ///< world angles
-
- /// Fraction of the current time step in the range [0,1]
- /// c0 and a0 are the positions at alpha0.
- float32 alpha0;
-};
-
-/// Useful constant
-extern const b2Vec2 b2Vec2_zero;
-
-/// Perform the dot product on two vectors.
-inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b)
-{
- return a.x * b.x + a.y * b.y;
-}
-
-/// Perform the cross product on two vectors. In 2D this produces a scalar.
-inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b)
-{
- return a.x * b.y - a.y * b.x;
-}
-
-/// Perform the cross product on a vector and a scalar. In 2D this produces
-/// a vector.
-inline b2Vec2 b2Cross(const b2Vec2& a, float32 s)
-{
- return b2Vec2(s * a.y, -s * a.x);
-}
-
-/// Perform the cross product on a scalar and a vector. In 2D this produces
-/// a vector.
-inline b2Vec2 b2Cross(float32 s, const b2Vec2& a)
-{
- return b2Vec2(-s * a.y, s * a.x);
-}
-
-/// Multiply a matrix times a vector. If a rotation matrix is provided,
-/// then this transforms the vector from one frame to another.
-inline b2Vec2 b2Mul(const b2Mat22& A, const b2Vec2& v)
-{
- return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y);
-}
-
-/// Multiply a matrix transpose times a vector. If a rotation matrix is provided,
-/// then this transforms the vector from one frame to another (inverse transform).
-inline b2Vec2 b2MulT(const b2Mat22& A, const b2Vec2& v)
-{
- return b2Vec2(b2Dot(v, A.ex), b2Dot(v, A.ey));
-}
-
-/// Add two vectors component-wise.
-inline b2Vec2 operator + (const b2Vec2& a, const b2Vec2& b)
-{
- return b2Vec2(a.x + b.x, a.y + b.y);
-}
-
-/// Subtract two vectors component-wise.
-inline b2Vec2 operator - (const b2Vec2& a, const b2Vec2& b)
-{
- return b2Vec2(a.x - b.x, a.y - b.y);
-}
-
-inline b2Vec2 operator * (float32 s, const b2Vec2& a)
-{
- return b2Vec2(s * a.x, s * a.y);
-}
-
-inline bool operator == (const b2Vec2& a, const b2Vec2& b)
-{
- return a.x == b.x && a.y == b.y;
-}
-
-inline bool operator != (const b2Vec2& a, const b2Vec2& b)
-{
- return a.x != b.x || a.y != b.y;
-}
-
-inline float32 b2Distance(const b2Vec2& a, const b2Vec2& b)
-{
- b2Vec2 c = a - b;
- return c.Length();
-}
-
-inline float32 b2DistanceSquared(const b2Vec2& a, const b2Vec2& b)
-{
- b2Vec2 c = a - b;
- return b2Dot(c, c);
-}
-
-inline b2Vec3 operator * (float32 s, const b2Vec3& a)
-{
- return b2Vec3(s * a.x, s * a.y, s * a.z);
-}
-
-/// Add two vectors component-wise.
-inline b2Vec3 operator + (const b2Vec3& a, const b2Vec3& b)
-{
- return b2Vec3(a.x + b.x, a.y + b.y, a.z + b.z);
-}
-
-/// Subtract two vectors component-wise.
-inline b2Vec3 operator - (const b2Vec3& a, const b2Vec3& b)
-{
- return b2Vec3(a.x - b.x, a.y - b.y, a.z - b.z);
-}
-
-/// Perform the dot product on two vectors.
-inline float32 b2Dot(const b2Vec3& a, const b2Vec3& b)
-{
- return a.x * b.x + a.y * b.y + a.z * b.z;
-}
-
-/// Perform the cross product on two vectors.
-inline b2Vec3 b2Cross(const b2Vec3& a, const b2Vec3& b)
-{
- return b2Vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
-}
-
-inline b2Mat22 operator + (const b2Mat22& A, const b2Mat22& B)
-{
- return b2Mat22(A.ex + B.ex, A.ey + B.ey);
-}
-
-// A * B
-inline b2Mat22 b2Mul(const b2Mat22& A, const b2Mat22& B)
-{
- return b2Mat22(b2Mul(A, B.ex), b2Mul(A, B.ey));
-}
-
-// A^T * B
-inline b2Mat22 b2MulT(const b2Mat22& A, const b2Mat22& B)
-{
- b2Vec2 c1(b2Dot(A.ex, B.ex), b2Dot(A.ey, B.ex));
- b2Vec2 c2(b2Dot(A.ex, B.ey), b2Dot(A.ey, B.ey));
- return b2Mat22(c1, c2);
-}
-
-/// Multiply a matrix times a vector.
-inline b2Vec3 b2Mul(const b2Mat33& A, const b2Vec3& v)
-{
- return v.x * A.ex + v.y * A.ey + v.z * A.ez;
-}
-
-/// Multiply a matrix times a vector.
-inline b2Vec2 b2Mul22(const b2Mat33& A, const b2Vec2& v)
-{
- return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y);
-}
-
-/// Multiply two rotations: q * r
-inline b2Rot b2Mul(const b2Rot& q, const b2Rot& r)
-{
- // [qc -qs] * [rc -rs] = [qc*rc-qs*rs -qc*rs-qs*rc]
- // [qs qc] [rs rc] [qs*rc+qc*rs -qs*rs+qc*rc]
- // s = qs * rc + qc * rs
- // c = qc * rc - qs * rs
- b2Rot qr;
- qr.s = q.s * r.c + q.c * r.s;
- qr.c = q.c * r.c - q.s * r.s;
- return qr;
-}
-
-/// Transpose multiply two rotations: qT * r
-inline b2Rot b2MulT(const b2Rot& q, const b2Rot& r)
-{
- // [ qc qs] * [rc -rs] = [qc*rc+qs*rs -qc*rs+qs*rc]
- // [-qs qc] [rs rc] [-qs*rc+qc*rs qs*rs+qc*rc]
- // s = qc * rs - qs * rc
- // c = qc * rc + qs * rs
- b2Rot qr;
- qr.s = q.c * r.s - q.s * r.c;
- qr.c = q.c * r.c + q.s * r.s;
- return qr;
-}
-
-/// Rotate a vector
-inline b2Vec2 b2Mul(const b2Rot& q, const b2Vec2& v)
-{
- return b2Vec2(q.c * v.x - q.s * v.y, q.s * v.x + q.c * v.y);
-}
-
-/// Inverse rotate a vector
-inline b2Vec2 b2MulT(const b2Rot& q, const b2Vec2& v)
-{
- return b2Vec2(q.c * v.x + q.s * v.y, -q.s * v.x + q.c * v.y);
-}
-
-inline b2Vec2 b2Mul(const b2Transform& T, const b2Vec2& v)
-{
- float32 x = (T.q.c * v.x - T.q.s * v.y) + T.p.x;
- float32 y = (T.q.s * v.x + T.q.c * v.y) + T.p.y;
-
- return b2Vec2(x, y);
-}
-
-inline b2Vec2 b2MulT(const b2Transform& T, const b2Vec2& v)
-{
- float32 px = v.x - T.p.x;
- float32 py = v.y - T.p.y;
- float32 x = (T.q.c * px + T.q.s * py);
- float32 y = (-T.q.s * px + T.q.c * py);
-
- return b2Vec2(x, y);
-}
-
-// v2 = A.q.Rot(B.q.Rot(v1) + B.p) + A.p
-// = (A.q * B.q).Rot(v1) + A.q.Rot(B.p) + A.p
-inline b2Transform b2Mul(const b2Transform& A, const b2Transform& B)
-{
- b2Transform C;
- C.q = b2Mul(A.q, B.q);
- C.p = b2Mul(A.q, B.p) + A.p;
- return C;
-}
-
-// v2 = A.q' * (B.q * v1 + B.p - A.p)
-// = A.q' * B.q * v1 + A.q' * (B.p - A.p)
-inline b2Transform b2MulT(const b2Transform& A, const b2Transform& B)
-{
- b2Transform C;
- C.q = b2MulT(A.q, B.q);
- C.p = b2MulT(A.q, B.p - A.p);
- return C;
-}
-
-template <typename T>
-inline T b2Abs(T a)
-{
- return a > T(0) ? a : -a;
-}
-
-inline b2Vec2 b2Abs(const b2Vec2& a)
-{
- return b2Vec2(b2Abs(a.x), b2Abs(a.y));
-}
-
-inline b2Mat22 b2Abs(const b2Mat22& A)
-{
- return b2Mat22(b2Abs(A.ex), b2Abs(A.ey));
-}
-
-template <typename T>
-inline T b2Min(T a, T b)
-{
- return a < b ? a : b;
-}
-
-inline b2Vec2 b2Min(const b2Vec2& a, const b2Vec2& b)
-{
- return b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y));
-}
-
-template <typename T>
-inline T b2Max(T a, T b)
-{
- return a > b ? a : b;
-}
-
-inline b2Vec2 b2Max(const b2Vec2& a, const b2Vec2& b)
-{
- return b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y));
-}
-
-template <typename T>
-inline T b2Clamp(T a, T low, T high)
-{
- return b2Max(low, b2Min(a, high));
-}
-
-inline b2Vec2 b2Clamp(const b2Vec2& a, const b2Vec2& low, const b2Vec2& high)
-{
- return b2Max(low, b2Min(a, high));
-}
-
-template<typename T> inline void b2Swap(T& a, T& b)
-{
- T tmp = a;
- a = b;
- b = tmp;
-}
-
-/// "Next Largest Power of 2
-/// Given a binary integer value x, the next largest power of 2 can be computed by a SWAR algorithm
-/// that recursively "folds" the upper bits into the lower bits. This process yields a bit vector with
-/// the same most significant 1 as x, but all 1's below it. Adding 1 to that value yields the next
-/// largest power of 2. For a 32-bit value:"
-inline uint32 b2NextPowerOfTwo(uint32 x)
-{
- x |= (x >> 1);
- x |= (x >> 2);
- x |= (x >> 4);
- x |= (x >> 8);
- x |= (x >> 16);
- return x + 1;
-}
-
-inline bool b2IsPowerOfTwo(uint32 x)
-{
- bool result = x > 0 && (x & (x - 1)) == 0;
- return result;
-}
-
-inline void b2Sweep::GetTransform(b2Transform* xf, float32 beta) const
-{
- xf->p = (1.0f - beta) * c0 + beta * c;
- float32 angle = (1.0f - beta) * a0 + beta * a;
- xf->q.Set(angle);
-
- // Shift to origin
- xf->p -= b2Mul(xf->q, localCenter);
-}
-
-inline void b2Sweep::Advance(float32 alpha)
-{
- b2Assert(alpha0 < 1.0f);
- float32 beta = (alpha - alpha0) / (1.0f - alpha0);
- c0 += beta * (c - c0);
- a0 += beta * (a - a0);
- alpha0 = alpha;
-}
-
-/// Normalize an angle in radians to be between -pi and pi
-inline void b2Sweep::Normalize()
-{
- float32 twoPi = 2.0f * b2_pi;
- float32 d = twoPi * floorf(a0 / twoPi);
- a0 -= d;
- a -= d;
-}
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2Settings.cpp b/Source/3rdParty/Box2D/Common/b2Settings.cpp
deleted file mode 100644
index a59cefe..0000000
--- a/Source/3rdParty/Box2D/Common/b2Settings.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2Settings.h"
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-b2Version b2_version = {2, 3, 2};
-
-// Memory allocators. Modify these to use your own allocator.
-void* b2Alloc(int32 size)
-{
- return malloc(size);
-}
-
-void b2Free(void* mem)
-{
- free(mem);
-}
-
-// You can modify this to use your logging facility.
-void b2Log(const char* string, ...)
-{
- va_list args;
- va_start(args, string);
- vprintf(string, args);
- va_end(args);
-}
diff --git a/Source/3rdParty/Box2D/Common/b2Settings.h b/Source/3rdParty/Box2D/Common/b2Settings.h
deleted file mode 100644
index c69280f..0000000
--- a/Source/3rdParty/Box2D/Common/b2Settings.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_SETTINGS_H
-#define B2_SETTINGS_H
-
-#include <stddef.h>
-#include <assert.h>
-#include <float.h>
-
-#if !defined(NDEBUG)
- #define b2DEBUG
-#endif
-
-#define B2_NOT_USED(x) ((void)(x))
-#define b2Assert(A) assert(A)
-
-typedef signed char int8;
-typedef signed short int16;
-typedef signed int int32;
-typedef unsigned char uint8;
-typedef unsigned short uint16;
-typedef unsigned int uint32;
-typedef float float32;
-typedef double float64;
-
-#define b2_maxFloat FLT_MAX
-#define b2_epsilon FLT_EPSILON
-#define b2_pi 3.14159265359f
-
-/// @file
-/// Global tuning constants based on meters-kilograms-seconds (MKS) units.
-///
-
-// Collision
-
-/// The maximum number of contact points between two convex shapes. Do
-/// not change this value.
-#define b2_maxManifoldPoints 2
-
-/// The maximum number of vertices on a convex polygon. You cannot increase
-/// this too much because b2BlockAllocator has a maximum object size.
-#define b2_maxPolygonVertices 8
-
-/// This is used to fatten AABBs in the dynamic tree. This allows proxies
-/// to move by a small amount without triggering a tree adjustment.
-/// This is in meters.
-#define b2_aabbExtension 0.1f
-
-/// This is used to fatten AABBs in the dynamic tree. This is used to predict
-/// the future position based on the current displacement.
-/// This is a dimensionless multiplier.
-#define b2_aabbMultiplier 2.0f
-
-/// A small length used as a collision and constraint tolerance. Usually it is
-/// chosen to be numerically significant, but visually insignificant.
-#define b2_linearSlop 0.005f
-
-/// A small angle used as a collision and constraint tolerance. Usually it is
-/// chosen to be numerically significant, but visually insignificant.
-#define b2_angularSlop (2.0f / 180.0f * b2_pi)
-
-/// The radius of the polygon/edge shape skin. This should not be modified. Making
-/// this smaller means polygons will have an insufficient buffer for continuous collision.
-/// Making it larger may create artifacts for vertex collision.
-#define b2_polygonRadius (2.0f * b2_linearSlop)
-
-/// Maximum number of sub-steps per contact in continuous physics simulation.
-#define b2_maxSubSteps 8
-
-
-// Dynamics
-
-/// Maximum number of contacts to be handled to solve a TOI impact.
-#define b2_maxTOIContacts 32
-
-/// A velocity threshold for elastic collisions. Any collision with a relative linear
-/// velocity below this threshold will be treated as inelastic.
-#define b2_velocityThreshold 1.0f
-
-/// The maximum linear position correction used when solving constraints. This helps to
-/// prevent overshoot.
-#define b2_maxLinearCorrection 0.2f
-
-/// The maximum angular position correction used when solving constraints. This helps to
-/// prevent overshoot.
-#define b2_maxAngularCorrection (8.0f / 180.0f * b2_pi)
-
-/// The maximum linear velocity of a body. This limit is very large and is used
-/// to prevent numerical problems. You shouldn't need to adjust this.
-#define b2_maxTranslation 2.0f
-#define b2_maxTranslationSquared (b2_maxTranslation * b2_maxTranslation)
-
-/// The maximum angular velocity of a body. This limit is very large and is used
-/// to prevent numerical problems. You shouldn't need to adjust this.
-#define b2_maxRotation (0.5f * b2_pi)
-#define b2_maxRotationSquared (b2_maxRotation * b2_maxRotation)
-
-/// This scale factor controls how fast overlap is resolved. Ideally this would be 1 so
-/// that overlap is removed in one time step. However using values close to 1 often lead
-/// to overshoot.
-#define b2_baumgarte 0.2f
-#define b2_toiBaugarte 0.75f
-
-
-// Sleep
-
-/// The time that a body must be still before it will go to sleep.
-#define b2_timeToSleep 0.5f
-
-/// A body cannot sleep if its linear velocity is above this tolerance.
-#define b2_linearSleepTolerance 0.01f
-
-/// A body cannot sleep if its angular velocity is above this tolerance.
-#define b2_angularSleepTolerance (2.0f / 180.0f * b2_pi)
-
-// Memory Allocation
-
-/// Implement this function to use your own memory allocator.
-void* b2Alloc(int32 size);
-
-/// If you implement b2Alloc, you should also implement this function.
-void b2Free(void* mem);
-
-/// Logging function.
-void b2Log(const char* string, ...);
-
-/// Version numbering scheme.
-/// See http://en.wikipedia.org/wiki/Software_versioning
-struct b2Version
-{
- int32 major; ///< significant changes
- int32 minor; ///< incremental changes
- int32 revision; ///< bug fixes
-};
-
-/// Current version.
-extern b2Version b2_version;
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2StackAllocator.cpp b/Source/3rdParty/Box2D/Common/b2StackAllocator.cpp
deleted file mode 100644
index 1347f3c..0000000
--- a/Source/3rdParty/Box2D/Common/b2StackAllocator.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2StackAllocator.h"
-#include "Box2D/Common/b2Math.h"
-
-b2StackAllocator::b2StackAllocator()
-{
- m_index = 0;
- m_allocation = 0;
- m_maxAllocation = 0;
- m_entryCount = 0;
-}
-
-b2StackAllocator::~b2StackAllocator()
-{
- b2Assert(m_index == 0);
- b2Assert(m_entryCount == 0);
-}
-
-void* b2StackAllocator::Allocate(int32 size)
-{
- b2Assert(m_entryCount < b2_maxStackEntries);
-
- b2StackEntry* entry = m_entries + m_entryCount;
- entry->size = size;
- if (m_index + size > b2_stackSize)
- {
- entry->data = (char*)b2Alloc(size);
- entry->usedMalloc = true;
- }
- else
- {
- entry->data = m_data + m_index;
- entry->usedMalloc = false;
- m_index += size;
- }
-
- m_allocation += size;
- m_maxAllocation = b2Max(m_maxAllocation, m_allocation);
- ++m_entryCount;
-
- return entry->data;
-}
-
-void b2StackAllocator::Free(void* p)
-{
- b2Assert(m_entryCount > 0);
- b2StackEntry* entry = m_entries + m_entryCount - 1;
- b2Assert(p == entry->data);
- if (entry->usedMalloc)
- {
- b2Free(p);
- }
- else
- {
- m_index -= entry->size;
- }
- m_allocation -= entry->size;
- --m_entryCount;
-
- p = nullptr;
-}
-
-int32 b2StackAllocator::GetMaxAllocation() const
-{
- return m_maxAllocation;
-}
diff --git a/Source/3rdParty/Box2D/Common/b2StackAllocator.h b/Source/3rdParty/Box2D/Common/b2StackAllocator.h
deleted file mode 100644
index 27340e8..0000000
--- a/Source/3rdParty/Box2D/Common/b2StackAllocator.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_STACK_ALLOCATOR_H
-#define B2_STACK_ALLOCATOR_H
-
-#include "Box2D/Common/b2Settings.h"
-
-const int32 b2_stackSize = 100 * 1024; // 100k
-const int32 b2_maxStackEntries = 32;
-
-struct b2StackEntry
-{
- char* data;
- int32 size;
- bool usedMalloc;
-};
-
-// This is a stack allocator used for fast per step allocations.
-// You must nest allocate/free pairs. The code will assert
-// if you try to interleave multiple allocate/free pairs.
-class b2StackAllocator
-{
-public:
- b2StackAllocator();
- ~b2StackAllocator();
-
- void* Allocate(int32 size);
- void Free(void* p);
-
- int32 GetMaxAllocation() const;
-
-private:
-
- char m_data[b2_stackSize];
- int32 m_index;
-
- int32 m_allocation;
- int32 m_maxAllocation;
-
- b2StackEntry m_entries[b2_maxStackEntries];
- int32 m_entryCount;
-};
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2Timer.cpp b/Source/3rdParty/Box2D/Common/b2Timer.cpp
deleted file mode 100644
index 38f3dea..0000000
--- a/Source/3rdParty/Box2D/Common/b2Timer.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-* Copyright (c) 2011 Erin Catto http://box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "Box2D/Common/b2Timer.h"
-
-#if defined(_WIN32)
-
-float64 b2Timer::s_invFrequency = 0.0f;
-
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-
-#include <windows.h>
-
-b2Timer::b2Timer()
-{
- LARGE_INTEGER largeInteger;
-
- if (s_invFrequency == 0.0f)
- {
- QueryPerformanceFrequency(&largeInteger);
- s_invFrequency = float64(largeInteger.QuadPart);
- if (s_invFrequency > 0.0f)
- {
- s_invFrequency = 1000.0f / s_invFrequency;
- }
- }
-
- QueryPerformanceCounter(&largeInteger);
- m_start = float64(largeInteger.QuadPart);
-}
-
-void b2Timer::Reset()
-{
- LARGE_INTEGER largeInteger;
- QueryPerformanceCounter(&largeInteger);
- m_start = float64(largeInteger.QuadPart);
-}
-
-float32 b2Timer::GetMilliseconds() const
-{
- LARGE_INTEGER largeInteger;
- QueryPerformanceCounter(&largeInteger);
- float64 count = float64(largeInteger.QuadPart);
- float32 ms = float32(s_invFrequency * (count - m_start));
- return ms;
-}
-
-#elif defined(__linux__) || defined (__APPLE__)
-
-#include <sys/time.h>
-
-b2Timer::b2Timer()
-{
- Reset();
-}
-
-void b2Timer::Reset()
-{
- timeval t;
- gettimeofday(&t, 0);
- m_start_sec = t.tv_sec;
- m_start_usec = t.tv_usec;
-}
-
-float32 b2Timer::GetMilliseconds() const
-{
- timeval t;
- gettimeofday(&t, 0);
- time_t start_sec = m_start_sec;
- suseconds_t start_usec = m_start_usec;
-
- // http://www.gnu.org/software/libc/manual/html_node/Elapsed-Time.html
- if (t.tv_usec < start_usec)
- {
- int nsec = (start_usec - t.tv_usec) / 1000000 + 1;
- start_usec -= 1000000 * nsec;
- start_sec += nsec;
- }
-
- if (t.tv_usec - start_usec > 1000000)
- {
- int nsec = (t.tv_usec - start_usec) / 1000000;
- start_usec += 1000000 * nsec;
- start_sec -= nsec;
- }
- return 1000.0f * (t.tv_sec - start_sec) + 0.001f * (t.tv_usec - start_usec);
-}
-
-#else
-
-b2Timer::b2Timer()
-{
-}
-
-void b2Timer::Reset()
-{
-}
-
-float32 b2Timer::GetMilliseconds() const
-{
- return 0.0f;
-}
-
-#endif
diff --git a/Source/3rdParty/Box2D/Common/b2Timer.h b/Source/3rdParty/Box2D/Common/b2Timer.h
deleted file mode 100644
index a25e907..0000000
--- a/Source/3rdParty/Box2D/Common/b2Timer.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2011 Erin Catto http://box2d.org
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-* 2. Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-* 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef B2_TIMER_H
-#define B2_TIMER_H
-
-#include "Box2D/Common/b2Settings.h"
-
-/// Timer for profiling. This has platform specific code and may
-/// not work on every platform.
-class b2Timer
-{
-public:
-
- /// Constructor
- b2Timer();
-
- /// Reset the timer.
- void Reset();
-
- /// Get the time since construction or the last reset.
- float32 GetMilliseconds() const;
-
-private:
-
-#if defined(_WIN32)
- float64 m_start;
- static float64 s_invFrequency;
-#elif defined(__linux__) || defined (__APPLE__)
- unsigned long long m_start_sec;
- unsigned long long m_start_usec;
-#endif
-};
-
-#endif