diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6c78520
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+*.sln
+*.vcxproj
+*.vcxproj.user
+*.vcxproj.filters
+*.sdf
+*.opensdf
+*.db
+*.opendb
+*.ilk
+*.pdb
+*.idb
+*.pch
+*.ipch
+*.obj
+*.bin
+*.exe
+*.lib
+*.log
+*.tlog
+*.lastbuildstate
+*.unsuccessfulbuild
+*.rc
+*.suo
+*.user
+*.so
+*.o
+*.a
+*.i
+build/
+doc/
\ No newline at end of file
diff --git a/build/vs2015/bounce.sln b/build/vs2015/bounce.sln
deleted file mode 100644
index 4f3d5a8..0000000
--- a/build/vs2015/bounce.sln
+++ /dev/null
@@ -1,66 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2015
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bounce", "bounce.vcxproj", "{C13B93F4-ADDD-BDCA-9698-D11E82D9441B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glad", "glad.vcxproj", "{DD62977C-C999-980D-7286-7E105E9C140F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glfw", "glfw.vcxproj", "{9563977C-819A-980D-2A87-7E10169D140F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imgui", "imgui.vcxproj", "{0098A80F-6CAC-D0C0-352E-7420A101CDF1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbed", "testbed.vcxproj", "{90781ED9-FC57-9D74-0570-284B71CE03D6}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- debug|Win32 = debug|Win32
- debug|x64 = debug|x64
- release|Win32 = release|Win32
- release|x64 = release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.debug|Win32.ActiveCfg = debug|Win32
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.debug|Win32.Build.0 = debug|Win32
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.debug|x64.ActiveCfg = debug|x64
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.debug|x64.Build.0 = debug|x64
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.release|Win32.ActiveCfg = release|Win32
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.release|Win32.Build.0 = release|Win32
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.release|x64.ActiveCfg = release|x64
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}.release|x64.Build.0 = release|x64
- {DD62977C-C999-980D-7286-7E105E9C140F}.debug|Win32.ActiveCfg = debug|Win32
- {DD62977C-C999-980D-7286-7E105E9C140F}.debug|Win32.Build.0 = debug|Win32
- {DD62977C-C999-980D-7286-7E105E9C140F}.debug|x64.ActiveCfg = debug|x64
- {DD62977C-C999-980D-7286-7E105E9C140F}.debug|x64.Build.0 = debug|x64
- {DD62977C-C999-980D-7286-7E105E9C140F}.release|Win32.ActiveCfg = release|Win32
- {DD62977C-C999-980D-7286-7E105E9C140F}.release|Win32.Build.0 = release|Win32
- {DD62977C-C999-980D-7286-7E105E9C140F}.release|x64.ActiveCfg = release|x64
- {DD62977C-C999-980D-7286-7E105E9C140F}.release|x64.Build.0 = release|x64
- {9563977C-819A-980D-2A87-7E10169D140F}.debug|Win32.ActiveCfg = debug|Win32
- {9563977C-819A-980D-2A87-7E10169D140F}.debug|Win32.Build.0 = debug|Win32
- {9563977C-819A-980D-2A87-7E10169D140F}.debug|x64.ActiveCfg = debug|x64
- {9563977C-819A-980D-2A87-7E10169D140F}.debug|x64.Build.0 = debug|x64
- {9563977C-819A-980D-2A87-7E10169D140F}.release|Win32.ActiveCfg = release|Win32
- {9563977C-819A-980D-2A87-7E10169D140F}.release|Win32.Build.0 = release|Win32
- {9563977C-819A-980D-2A87-7E10169D140F}.release|x64.ActiveCfg = release|x64
- {9563977C-819A-980D-2A87-7E10169D140F}.release|x64.Build.0 = release|x64
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.debug|Win32.ActiveCfg = debug|Win32
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.debug|Win32.Build.0 = debug|Win32
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.debug|x64.ActiveCfg = debug|x64
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.debug|x64.Build.0 = debug|x64
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.release|Win32.ActiveCfg = release|Win32
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.release|Win32.Build.0 = release|Win32
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.release|x64.ActiveCfg = release|x64
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}.release|x64.Build.0 = release|x64
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.debug|Win32.ActiveCfg = debug|Win32
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.debug|Win32.Build.0 = debug|Win32
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.debug|x64.ActiveCfg = debug|x64
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.debug|x64.Build.0 = debug|x64
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.release|Win32.ActiveCfg = release|Win32
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.release|Win32.Build.0 = release|Win32
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.release|x64.ActiveCfg = release|x64
- {90781ED9-FC57-9D74-0570-284B71CE03D6}.release|x64.Build.0 = release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/build/vs2015/bounce.vcxproj b/build/vs2015/bounce.vcxproj
deleted file mode 100644
index 970e25b..0000000
--- a/build/vs2015/bounce.vcxproj
+++ /dev/null
@@ -1,294 +0,0 @@
-
-
-
-
- debug
- Win32
-
-
- debug
- x64
-
-
- release
- Win32
-
-
- release
- x64
-
-
-
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}
- true
- Win32Proj
- bounce
-
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- bin\x32\debug\bounce\
- obj\x32\debug\bounce\
- bounce
- .lib
-
-
- bin\x64\debug\bounce\
- obj\x64\debug\bounce\
- bounce
- .lib
-
-
- bin\x32\release\bounce\
- obj\x32\release\bounce\
- bounce
- .lib
-
-
- bin\x64\release\bounce\
- obj\x64\release\bounce\
- bounce
- .lib
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\include;%(AdditionalIncludeDirectories)
- EditAndContinue
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\include;%(AdditionalIncludeDirectories)
- ProgramDatabase
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\include;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- false
- true
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\include;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/bounce.vcxproj.filters b/build/vs2015/bounce.vcxproj.filters
deleted file mode 100644
index 60b71ff..0000000
--- a/build/vs2015/bounce.vcxproj.filters
+++ /dev/null
@@ -1,455 +0,0 @@
-
-
-
-
- {89AF369E-F58E-B539-FEA6-40106A051C9B}
-
-
- {D419DC43-C0E7-CF49-A97B-407095E8ABAE}
-
-
- {0FC81CFD-FBEC-6B7D-2438-510D10BC6A9B}
-
-
- {9AC16B4F-867C-5BFB-2F34-D4451BCEA58B}
-
-
- {86F36B4F-72AE-5BFB-1B66-D4450700A68B}
-
-
- {02B88A21-6E9B-9961-779E-C79DE30060B2}
-
-
- {A12552DA-8D4B-1C41-7691-A10C6256410D}
-
-
- {AC64A0F9-18D1-5BF4-E1C4-F3514DF07D5C}
-
-
- {252146D6-1131-F2A6-7AEA-56C56619E13F}
-
-
- {B4B69780-A071-872C-4929-007735C3D1BC}
-
-
- {577D3B7B-43A3-05E2-2CE9-8AAD18AE2AAE}
-
-
- {DB55CFD2-478D-176A-5097-7B8DBC4D3E63}
-
-
- {09FBB88C-F54B-A4CE-1EB0-92900A603738}
-
-
- {14818B0F-00FE-7E52-297B-7F6615571BE6}
-
-
- {A1E236CD-8D08-0134-764E-86FF62132600}
-
-
- {4E48B2E1-3A6E-7C48-23B4-01140F79A114}
-
-
- {F52AA7E9-E14F-F669-0A9B-DBF9F61EF587}
-
-
- {2DAB880B-99B4-887C-2230-9F7C8E38947C}
-
-
- {F814F251-E4CC-339F-4DD4-0CFB39ABCE8F}
-
-
- {33003210-1F8F-BBD9-C8AD-CFD4B41BCC7F}
-
-
- {BE6BE8DC-AA90-375D-D3DB-1CEDBF5F367B}
-
-
- {AA9DE8DC-96C2-375D-BF0D-1DEDAB91367B}
-
-
- {A6DFD2EA-12ED-00D1-9BD3-FCBB07E0CC87}
-
-
- {C5E8A1B9-B1F8-4D8A-1AB2-B2A806E13C23}
-
-
- {50EF0F83-BC05-0E19-057D-993A71D2DEA0}
-
-
- {49F28903-35EC-B255-1E59-49660AF218C2}
-
-
- {D860140E-C485-638E-EDD0-481ED95462AC}
-
-
- {7F194C76-EB7A-2984-74E8-6F36E0486043}
-
-
- {2D17067F-19D2-F52A-C289-6E75AE2340BB}
-
-
- {3881B4FC-2468-76F4-CDB8-DC11B97EEF5A}
-
-
- {C5A586AC-B1B5-327D-1A6F-979B069E2116}
-
-
- {720B02C1-5E1B-AE91-C7D4-12B0B3039D2A}
-
-
- {1963BCFC-05F2-45C6-AE10-5AC19A7E566C}
-
-
-
-
- include\bounce
-
-
- include\bounce\collision
-
-
- include\bounce\collision
-
-
- include\bounce\collision\gjk
-
-
- include\bounce\collision\gjk
-
-
- include\bounce\collision\gjk
-
-
- include\bounce\collision\sat
-
-
- include\bounce\collision\sat
-
-
- include\bounce\collision\sat
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\collision\trees
-
-
- include\bounce\collision\trees
-
-
- include\bounce\common
-
-
- include\bounce\common
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\math
-
-
- include\bounce\common\memory
-
-
- include\bounce\common\memory
-
-
- include\bounce\common
-
-
- include\bounce\common\template
-
-
- include\bounce\common\template
-
-
- include\bounce\common\template
-
-
- include\bounce\common\template
-
-
- include\bounce\common
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics\contacts\collide
-
-
- include\bounce\dynamics\contacts\collide
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics\contacts
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\joints
-
-
- include\bounce\dynamics\shapes
-
-
- include\bounce\dynamics\shapes
-
-
- include\bounce\dynamics\shapes
-
-
- include\bounce\dynamics\shapes
-
-
- include\bounce\dynamics\shapes
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics
-
-
- include\bounce\dynamics
-
-
- include\bounce\quickhull
-
-
-
-
- src\bounce\collision
-
-
- src\bounce\collision
-
-
- src\bounce\collision\gjk
-
-
- src\bounce\collision\gjk
-
-
- src\bounce\collision\gjk
-
-
- src\bounce\collision\sat
-
-
- src\bounce\collision\sat
-
-
- src\bounce\collision\sat
-
-
- src\bounce\collision\shapes
-
-
- src\bounce\collision\trees
-
-
- src\bounce\collision\trees
-
-
- src\bounce\common\math
-
-
- src\bounce\common\memory
-
-
- src\bounce\common\memory
-
-
- src\bounce\common
-
-
- src\bounce\dynamics
-
-
- src\bounce\dynamics
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts\collide
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics\contacts
-
-
- src\bounce\dynamics
-
-
- src\bounce\dynamics
-
-
- src\bounce\dynamics
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\joints
-
-
- src\bounce\dynamics\shapes
-
-
- src\bounce\dynamics\shapes
-
-
- src\bounce\dynamics\shapes
-
-
- src\bounce\dynamics\shapes
-
-
- src\bounce\dynamics\shapes
-
-
- src\bounce\dynamics
-
-
- src\bounce\quickhull
-
-
-
-
- include\bounce\collision\shapes
-
-
- include\bounce\quickhull
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/glad.vcxproj b/build/vs2015/glad.vcxproj
deleted file mode 100644
index 8c0a384..0000000
--- a/build/vs2015/glad.vcxproj
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
-
-
- debug
- Win32
-
-
- debug
- x64
-
-
- release
- Win32
-
-
- release
- x64
-
-
-
- {DD62977C-C999-980D-7286-7E105E9C140F}
- true
- Win32Proj
- glad
-
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- bin\x32\debug\glad\
- obj\x32\debug\glad\
- glad
- .lib
-
-
- bin\x64\debug\glad\
- obj\x64\debug\glad\
- glad
- .lib
-
-
- bin\x32\release\glad\
- obj\x32\release\glad\
- glad
- .lib
-
-
- bin\x64\release\glad\
- obj\x64\release\glad\
- glad
- .lib
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- EditAndContinue
- Disabled
- false
- Fast
- CompileAsC
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- ProgramDatabase
- Disabled
- false
- Fast
- CompileAsC
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- CompileAsC
-
-
- Windows
- false
- true
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- CompileAsC
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/glad.vcxproj.filters b/build/vs2015/glad.vcxproj.filters
deleted file mode 100644
index 3f4c0a6..0000000
--- a/build/vs2015/glad.vcxproj.filters
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- {C196CD9C-2D76-4C38-368E-D70EA2ECB299}
-
-
- {89565304-F535-D29F-FE4D-5D766AAC3801}
-
-
-
-
- Headers
-
-
- Headers
-
-
-
-
- Sources
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/glfw.vcxproj b/build/vs2015/glfw.vcxproj
deleted file mode 100644
index 6f99bae..0000000
--- a/build/vs2015/glfw.vcxproj
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
- debug
- Win32
-
-
- debug
- x64
-
-
- release
- Win32
-
-
- release
- x64
-
-
-
- {9563977C-819A-980D-2A87-7E10169D140F}
- true
- Win32Proj
- glfw
-
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- bin\x32\debug\glfw\
- obj\x32\debug\glfw\
- glfw
- .lib
-
-
- bin\x64\debug\glfw\
- obj\x64\debug\glfw\
- glfw
- .lib
-
-
- bin\x32\release\glfw\
- obj\x32\release\glfw\
- glfw
- .lib
-
-
- bin\x64\release\glfw\
- obj\x64\release\glfw\
- glfw
- .lib
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;_GLFW_USE_CONFIG_H;%(PreprocessorDefinitions)
- ..\..\external\glfw;%(AdditionalIncludeDirectories)
- EditAndContinue
- Disabled
- false
- Fast
- CompileAsC
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;_GLFW_USE_CONFIG_H;%(PreprocessorDefinitions)
- ..\..\external\glfw;%(AdditionalIncludeDirectories)
- ProgramDatabase
- Disabled
- false
- Fast
- CompileAsC
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;_GLFW_USE_CONFIG_H;%(PreprocessorDefinitions)
- ..\..\external\glfw;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- CompileAsC
-
-
- Windows
- false
- true
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;_GLFW_USE_CONFIG_H;%(PreprocessorDefinitions)
- ..\..\external\glfw;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- CompileAsC
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/glfw.vcxproj.filters b/build/vs2015/glfw.vcxproj.filters
deleted file mode 100644
index 0f71ea6..0000000
--- a/build/vs2015/glfw.vcxproj.filters
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
- {C196CD9C-2D76-4C38-368E-D70EA2ECB299}
-
-
- {89565304-F535-D29F-FE4D-5D766AAC3801}
-
-
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/imgui.vcxproj b/build/vs2015/imgui.vcxproj
deleted file mode 100644
index 19bdb56..0000000
--- a/build/vs2015/imgui.vcxproj
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
- debug
- Win32
-
-
- debug
- x64
-
-
- release
- Win32
-
-
- release
- x64
-
-
-
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}
- true
- Win32Proj
- imgui
-
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- true
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
- StaticLibrary
- false
- Unicode
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- bin\x32\debug\imgui\
- obj\x32\debug\imgui\
- imgui
- .lib
-
-
- bin\x64\debug\imgui\
- obj\x64\debug\imgui\
- imgui
- .lib
-
-
- bin\x32\release\imgui\
- obj\x32\release\imgui\
- imgui
- .lib
-
-
- bin\x64\release\imgui\
- obj\x64\release\imgui\
- imgui
- .lib
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- EditAndContinue
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- ProgramDatabase
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- false
- true
- true
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Windows
- false
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/imgui.vcxproj.filters b/build/vs2015/imgui.vcxproj.filters
deleted file mode 100644
index d8aa08e..0000000
--- a/build/vs2015/imgui.vcxproj.filters
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
- {C196CD9C-2D76-4C38-368E-D70EA2ECB299}
-
-
- {89565304-F535-D29F-FE4D-5D766AAC3801}
-
-
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/testbed.vcxproj b/build/vs2015/testbed.vcxproj
deleted file mode 100644
index e4de6d1..0000000
--- a/build/vs2015/testbed.vcxproj
+++ /dev/null
@@ -1,239 +0,0 @@
-
-
-
-
- debug
- Win32
-
-
- debug
- x64
-
-
- release
- Win32
-
-
- release
- x64
-
-
-
- {90781ED9-FC57-9D74-0570-284B71CE03D6}
- true
- Win32Proj
- testbed
-
-
-
- Application
- true
- Unicode
- v140
-
-
- Application
- true
- Unicode
- v140
-
-
- Application
- false
- Unicode
- v140
-
-
- Application
- false
- Unicode
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- bin\x32\debug\testbed\
- obj\x32\debug\testbed\
- testbed
- .exe
-
-
- true
- bin\x64\debug\testbed\
- obj\x64\debug\testbed\
- testbed
- .exe
-
-
- false
- bin\x32\release\testbed\
- obj\x32\release\testbed\
- testbed
- .exe
-
-
- false
- bin\x64\release\testbed\
- obj\x64\release\testbed\
- testbed
- .exe
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;..\..\include;%(AdditionalIncludeDirectories)
- EditAndContinue
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Console
- true
- glu32.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)
- mainCRTStartup
-
-
-
-
- NotUsing
- Level3
- _DEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;..\..\include;%(AdditionalIncludeDirectories)
- ProgramDatabase
- Disabled
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Console
- true
- glu32.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)
- mainCRTStartup
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;..\..\include;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Console
- false
- true
- true
- glu32.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)
- mainCRTStartup
-
-
-
-
- NotUsing
- Level3
- NDEBUG;_CRT_SECURE_NO_WARNINGS;_WIN32;WIN32;_WINDOWS;%(PreprocessorDefinitions)
- ..\..\external;..\..\include;%(AdditionalIncludeDirectories)
- Full
- true
- true
- false
- true
- false
- Fast
- -std=c++11 %(AdditionalOptions)
-
-
- Console
- false
- true
- true
- glu32.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)
- mainCRTStartup
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {9563977C-819A-980D-2A87-7E10169D140F}
-
-
- {DD62977C-C999-980D-7286-7E105E9C140F}
-
-
- {0098A80F-6CAC-D0C0-352E-7420A101CDF1}
-
-
- {C13B93F4-ADDD-BDCA-9698-D11E82D9441B}
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/vs2015/testbed.vcxproj.filters b/build/vs2015/testbed.vcxproj.filters
deleted file mode 100644
index 2edc665..0000000
--- a/build/vs2015/testbed.vcxproj.filters
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
- {C196CD9C-2D76-4C38-368E-D70EA2ECB299}
-
-
- {89565304-F535-D29F-FE4D-5D766AAC3801}
-
-
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
- Headers
-
-
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
- Sources
-
-
-
\ No newline at end of file
diff --git a/include/bounce/dynamics/joints/cone_joint.h b/include/bounce/dynamics/joints/cone_joint.h
index d51b20d..932848b 100644
--- a/include/bounce/dynamics/joints/cone_joint.h
+++ b/include/bounce/dynamics/joints/cone_joint.h
@@ -49,9 +49,9 @@ struct b3ConeJointDef : public b3JointDef
};
// This joint constrains the bodies to share a common point (cone tip).
-// The relative rotation about the shared axis is the joint angle.
-// If the joint angle exceeds the half-cone angle then the axis is shared.
-// You can limit the relative rotation with a lower angle limit.
+// It also constrains the relative rotation about an axis perpendicular
+// to the cone axis.
+// You can limit the relative rotation with a cone angle limit.
// This joint can be used to create structures such as ragdolls.
class b3ConeJoint : public b3Joint
{
diff --git a/readme.md b/readme.md
index 6c070ee..08deedd 100644
--- a/readme.md
+++ b/readme.md
@@ -1,3 +1,5 @@
+
About
+
Bounce is a 3D physics engine for games and interactive applications.
To get started with Bounce see readme.txt.
@@ -14,8 +16,6 @@ Camera (as in Maya):
Bounce is released under the zlib license.
-Irlan Robson
-
Features
diff --git a/readme.txt b/readme.txt
index 465b62f..c46bac9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,7 +2,7 @@ Welcome!
Bounce is a 3D physics engine for games and interactive applications.
-See building.txt to read how to build Bounce. Bounce comes with a Visual Studio 2015 build by default.
+See building.txt to read how to build Bounce.
See documenting.txt to read how to generate the documentation for Bounce.
diff --git a/src/bounce/dynamics/contact_manager.cpp b/src/bounce/dynamics/contact_manager.cpp
index 88b970a..774e8c0 100644
--- a/src/bounce/dynamics/contact_manager.cpp
+++ b/src/bounce/dynamics/contact_manager.cpp
@@ -86,8 +86,12 @@ void b3ContactManager::AddPair(void* dataA, void* dataB)
}
}
- // Allocate a new contact.
+ // Create contact.
b3Contact* c = Create(shapeA, shapeB);
+ if (c == NULL)
+ {
+ return;
+ }
// Get the shapes from the contact again
// because contact creation will swap the shapes if typeA > typeB.
@@ -255,7 +259,7 @@ b3Contact* b3ContactManager::Create(b3Shape* shapeA, b3Shape* shapeB)
else
{
// Collisions between meshes are not implemented.
- //B3_ASSERT(false);
+ return NULL;
}
}
diff --git a/src/bounce/dynamics/contacts/contact_cluster.cpp b/src/bounce/dynamics/contacts/contact_cluster.cpp
index b44f5ad..0c3c672 100644
--- a/src/bounce/dynamics/contacts/contact_cluster.cpp
+++ b/src/bounce/dynamics/contacts/contact_cluster.cpp
@@ -29,7 +29,8 @@ inline void AddCluster(b3Array& clusters, const b3Vec3& centroid)
if (dd < kTol * kTol)
{
// Merge the clusters.
- clusters[i].centroid = 0.5f * (clusters[i].centroid + centroid);
+ clusters[i].centroid += centroid;
+ clusters[i].centroid.Normalize();
return;
}
}
@@ -58,14 +59,15 @@ void b3InitializeClusters(b3Array& outClusters, const b3Array 3);
// This is used to skip observations that were
- // assigned to a cluster.
+ // used to initialize a cluster centroid.
b3StackArray chosens;
chosens.Resize(inObs.Count());
for (u32 i = 0; i < inObs.Count(); ++i)
{
chosens[i] = false;
}
-
+
+ // Choose the most opposing faces.
{
u32 index = 0;
const b3Observation& o = inObs[index];
@@ -195,10 +197,7 @@ inline u32 b3BestCluster(const b3Array& clusters, const b3Vec3& point
void b3Clusterize(b3Array& outClusters, b3Array& outObservations,
const b3Array& inClusters, const b3Array& inObservations)
{
- //B3_ASSERT(!inObservations.IsEmpty());
B3_ASSERT(outObservations.IsEmpty());
-
- //B3_ASSERT(!inClusters.IsEmpty());
B3_ASSERT(outClusters.IsEmpty());
// Temporary data
@@ -208,7 +207,7 @@ void b3Clusterize(b3Array& outClusters, b3Array& outOb
b3StackArray observations;
observations.Swap(inObservations);
- // Termination criteria for k-means clustering
+ // Termination criteria for k-means clustering
const u32 kMaxIters = 10;
u32 iter = 0;
@@ -242,7 +241,7 @@ void b3Clusterize(b3Array& outClusters, b3Array& outOb
if (pointCount > 0)
{
- centroid *= 1.0f / float32(pointCount);
+ centroid /= float32(pointCount);
cluster.centroid = centroid;
}
}
diff --git a/src/testbed/framework/main.cpp b/src/testbed/framework/main.cpp
index 36576de..7396294 100644
--- a/src/testbed/framework/main.cpp
+++ b/src/testbed/framework/main.cpp
@@ -342,7 +342,7 @@ void Run()
if (g_settings.drawGrid)
{
- u32 n = 20;
+ int n = 20;
b3Vec3 t;
t.x = -0.5f * float32(n);