diff --git a/Extras/GIMPACT/src/Bullet/btGImpactCollisionAlgorithm.cpp b/Extras/GIMPACT/src/Bullet/btGImpactCollisionAlgorithm.cpp
index 31b5ab0aa..958879770 100755
--- a/Extras/GIMPACT/src/Bullet/btGImpactCollisionAlgorithm.cpp
+++ b/Extras/GIMPACT/src/Bullet/btGImpactCollisionAlgorithm.cpp
@@ -226,11 +226,11 @@ void btGImpactCollisionAlgorithm::shape_vs_shape_collision(
btCollisionShape * shape1)
{
- btCollisionShape * orgshape0 = body0->getCollisionShape();
- btCollisionShape * orgshape1 = body1->getCollisionShape();
-
- body0->setCollisionShape(shape0);
- body1->setCollisionShape(shape1);
+ btCollisionShape* tmpShape0 = body0->getCollisionShape();
+ btCollisionShape* tmpShape1 = body1->getCollisionShape();
+
+ body0->internalSetTemporaryCollisionShape(shape0);
+ body1->internalSetTemporaryCollisionShape(shape1);
{
btCollisionAlgorithm* algor = newAlgorithm(body0,body1);
@@ -244,8 +244,8 @@ void btGImpactCollisionAlgorithm::shape_vs_shape_collision(
m_dispatcher->freeCollisionAlgorithm(algor);
}
- body0->setCollisionShape(orgshape0);
- body1->setCollisionShape(orgshape1);
+ body0->internalSetTemporaryCollisionShape(tmpShape0);
+ body1->internalSetTemporaryCollisionShape(tmpShape1);
}
void btGImpactCollisionAlgorithm::convex_vs_convex_collision(
@@ -255,11 +255,11 @@ void btGImpactCollisionAlgorithm::convex_vs_convex_collision(
btCollisionShape * shape1)
{
- btCollisionShape * orgshape0 = body0->getCollisionShape();
- btCollisionShape * orgshape1 = body1->getCollisionShape();
-
- body0->setCollisionShape(shape0);
- body1->setCollisionShape(shape1);
+ btCollisionShape* tmpShape0 = body0->getCollisionShape();
+ btCollisionShape* tmpShape1 = body1->getCollisionShape();
+
+ body0->internalSetTemporaryCollisionShape(shape0);
+ body1->internalSetTemporaryCollisionShape(shape1);
m_resultOut->setShapeIdentifiers(m_part0,m_triface0,m_part1,m_triface1);
@@ -267,8 +267,8 @@ void btGImpactCollisionAlgorithm::convex_vs_convex_collision(
checkConvexAlgorithm(body0,body1);
m_convex_algorithm->processCollision(body0,body1,*m_dispatchInfo,m_resultOut);
- body0->setCollisionShape(orgshape0);
- body1->setCollisionShape(orgshape1);
+ body0->internalSetTemporaryCollisionShape(tmpShape0);
+ body1->internalSetTemporaryCollisionShape(tmpShape1);
}
diff --git a/msvc/6/libbulletcollision.dsp b/msvc/6/libbulletcollision.dsp
index e07d19908..642613a7e 100644
--- a/msvc/6/libbulletcollision.dsp
+++ b/msvc/6/libbulletcollision.dsp
@@ -328,6 +328,10 @@ SOURCE=..\..\src\BulletCollision\CollisionShapes\btMinkowskiSumShape.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\BulletCollision\CollisionShapes\btMultimaterialTriangleMeshShape.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\BulletCollision\CollisionShapes\btMultiSphereShape.cpp
# End Source File
# Begin Source File
@@ -372,6 +376,10 @@ SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleIndexVertexArray.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleIndexVertexMaterialArray.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleMesh.cpp
# End Source File
# Begin Source File
@@ -620,10 +628,18 @@ SOURCE=..\..\src\BulletCollision\CollisionShapes\btHeightfieldTerrainShape.h
# End Source File
# Begin Source File
+SOURCE=..\..\src\BulletCollision\CollisionShapes\btMaterial.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\BulletCollision\CollisionShapes\btMinkowskiSumShape.h
# End Source File
# Begin Source File
+SOURCE=..\..\src\BulletCollision\CollisionShapes\btMultimaterialTriangleMeshShape.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\BulletCollision\CollisionShapes\btMultiSphereShape.h
# End Source File
# Begin Source File
@@ -668,6 +684,10 @@ SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleIndexVertexArray.h
# End Source File
# Begin Source File
+SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleIndexVertexMaterialArray.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\BulletCollision\CollisionShapes\btTriangleMesh.h
# End Source File
# Begin Source File
diff --git a/msvc/6/wksbullet.dsw b/msvc/6/wksbullet.dsw
index 166f6d514..825bd835f 100644
--- a/msvc/6/wksbullet.dsw
+++ b/msvc/6/wksbullet.dsw
@@ -546,6 +546,30 @@ Package=<4>
###############################################################################
+Project: "appMultiMaterialDemo"=.\appMultiMaterialDemo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libbulletcollision
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name libbulletdynamics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name libbulletmath
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name libbulletopenglsupport
+ End Project Dependency
+}}}
+
+###############################################################################
+
Project: "appMultiThreadedDemo"=.\appMultiThreadedDemo.dsp - Package Owner=<4>
Package=<5>
@@ -816,6 +840,9 @@ Package=<4>
Project_Dep_Name appMovingConcaveDemo
End Project Dependency
Begin Project Dependency
+ Project_Dep_Name appMultiMaterialDemo
+ End Project Dependency
+ Begin Project Dependency
Project_Dep_Name appMultiThreadedDemo
End Project Dependency
Begin Project Dependency
@@ -954,6 +981,9 @@ Package=<4>
Project_Dep_Name appMovingConcaveDemo
End Project Dependency
Begin Project Dependency
+ Project_Dep_Name appMultiMaterialDemo
+ End Project Dependency
+ Begin Project Dependency
Project_Dep_Name appMultiThreadedDemo
End Project Dependency
Begin Project Dependency
diff --git a/msvc/7/libbulletcollision.vcproj b/msvc/7/libbulletcollision.vcproj
index 6fab1ad15..a447d425c 100644
--- a/msvc/7/libbulletcollision.vcproj
+++ b/msvc/7/libbulletcollision.vcproj
@@ -412,6 +412,9 @@
+
+
@@ -445,6 +448,9 @@
+
+
@@ -632,9 +638,15 @@
+
+
+
+
@@ -668,6 +680,9 @@
+
+
diff --git a/msvc/7/wksbullet.sln b/msvc/7/wksbullet.sln
index 5543a7cfc..ec5ffa1c0 100644
--- a/msvc/7/wksbullet.sln
+++ b/msvc/7/wksbullet.sln
@@ -42,6 +42,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appHelloWorld", "appHelloWo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMovingConcaveDemo", "appMovingConcaveDemo.vcproj", "{2D714360-B8EC-F8E0-ED74-E95336301075}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiMaterialDemo", "appMultiMaterialDemo.vcproj", "{7C050627-6267-11A1-E342-374FA0095116}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiThreadedDemo", "appMultiThreadedDemo.vcproj", "{6D016A7B-39C8-2018-733F-22921BE94AC4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appRagdollDemo", "appRagdollDemo.vcproj", "{EFEF2072-51F9-DAE8-AC38-3E653C680F74}"
@@ -195,6 +197,10 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
{2D714360-B8EC-F8E0-ED74-E95336301075}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{2D714360-B8EC-F8E0-ED74-E95336301075}.4 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {7C050627-6267-11A1-E342-374FA0095116}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {7C050627-6267-11A1-E342-374FA0095116}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {7C050627-6267-11A1-E342-374FA0095116}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {7C050627-6267-11A1-E342-374FA0095116}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
@@ -250,27 +256,28 @@ Global
{6210A080-01C0-6D67-F1DB-669393175402}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{6210A080-01C0-6D67-F1DB-669393175402}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{6210A080-01C0-6D67-F1DB-669393175402}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {6210A080-01C0-6D67-F1DB-669393175402}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {6210A080-01C0-6D67-F1DB-669393175402}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {6210A080-01C0-6D67-F1DB-669393175402}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {6210A080-01C0-6D67-F1DB-669393175402}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {6210A080-01C0-6D67-F1DB-669393175402}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {6210A080-01C0-6D67-F1DB-669393175402}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {6210A080-01C0-6D67-F1DB-669393175402}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
- {6210A080-01C0-6D67-F1DB-669393175402}.29 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
- {6210A080-01C0-6D67-F1DB-669393175402}.30 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
- {6210A080-01C0-6D67-F1DB-669393175402}.31 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
- {6210A080-01C0-6D67-F1DB-669393175402}.32 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
- {6210A080-01C0-6D67-F1DB-669393175402}.33 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
- {6210A080-01C0-6D67-F1DB-669393175402}.34 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
- {6210A080-01C0-6D67-F1DB-669393175402}.35 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
- {6210A080-01C0-6D67-F1DB-669393175402}.36 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
- {6210A080-01C0-6D67-F1DB-669393175402}.37 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
- {6210A080-01C0-6D67-F1DB-669393175402}.38 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
- {6210A080-01C0-6D67-F1DB-669393175402}.39 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
- {6210A080-01C0-6D67-F1DB-669393175402}.40 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
- {6210A080-01C0-6D67-F1DB-669393175402}.41 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
+ {6210A080-01C0-6D67-F1DB-669393175402}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {6210A080-01C0-6D67-F1DB-669393175402}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {6210A080-01C0-6D67-F1DB-669393175402}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {6210A080-01C0-6D67-F1DB-669393175402}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {6210A080-01C0-6D67-F1DB-669393175402}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {6210A080-01C0-6D67-F1DB-669393175402}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.30 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
+ {6210A080-01C0-6D67-F1DB-669393175402}.31 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.32 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {6210A080-01C0-6D67-F1DB-669393175402}.33 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {6210A080-01C0-6D67-F1DB-669393175402}.34 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.35 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.36 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
+ {6210A080-01C0-6D67-F1DB-669393175402}.37 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
+ {6210A080-01C0-6D67-F1DB-669393175402}.38 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.39 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {6210A080-01C0-6D67-F1DB-669393175402}.40 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
+ {6210A080-01C0-6D67-F1DB-669393175402}.41 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.42 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
{9E59B16D-0924-409C-1611-DF2207A0053F}.0 = {7CE54E12-D3D5-878F-9CC5-786265A3F9CE}
{9E59B16D-0924-409C-1611-DF2207A0053F}.1 = {3578834A-4B06-DE6F-78AC-FE11F7226D35}
{9E59B16D-0924-409C-1611-DF2207A0053F}.2 = {67034B5D-16DD-DC97-82F6-23B9E6108940}
@@ -292,14 +299,15 @@ Global
{9E59B16D-0924-409C-1611-DF2207A0053F}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{9E59B16D-0924-409C-1611-DF2207A0053F}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{9E59B16D-0924-409C-1611-DF2207A0053F}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.0 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.1 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.2 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
@@ -483,6 +491,14 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.Debug.Build.0 = Debug|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.ActiveCfg = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.Build.0 = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.Build.0 = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.ActiveCfg = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.Build.0 = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.ActiveCfg = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.Build.0 = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
diff --git a/msvc/71/libbulletcollision.vcproj b/msvc/71/libbulletcollision.vcproj
index 35b4ba337..e0b9586d6 100644
--- a/msvc/71/libbulletcollision.vcproj
+++ b/msvc/71/libbulletcollision.vcproj
@@ -412,6 +412,9 @@
+
+
@@ -445,6 +448,9 @@
+
+
@@ -632,9 +638,15 @@
+
+
+
+
@@ -668,6 +680,9 @@
+
+
diff --git a/msvc/71/wksbullet.sln b/msvc/71/wksbullet.sln
index 2cf259de2..1dfe8eec5 100644
--- a/msvc/71/wksbullet.sln
+++ b/msvc/71/wksbullet.sln
@@ -42,6 +42,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appHelloWorld", "appHelloWo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMovingConcaveDemo", "appMovingConcaveDemo.vcproj", "{2D714360-B8EC-F8E0-ED74-E95336301075}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiMaterialDemo", "appMultiMaterialDemo.vcproj", "{7C050627-6267-11A1-E342-374FA0095116}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiThreadedDemo", "appMultiThreadedDemo.vcproj", "{6D016A7B-39C8-2018-733F-22921BE94AC4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appRagdollDemo", "appRagdollDemo.vcproj", "{EFEF2072-51F9-DAE8-AC38-3E653C680F74}"
@@ -195,6 +197,10 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
{2D714360-B8EC-F8E0-ED74-E95336301075}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{2D714360-B8EC-F8E0-ED74-E95336301075}.4 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {7C050627-6267-11A1-E342-374FA0095116}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {7C050627-6267-11A1-E342-374FA0095116}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {7C050627-6267-11A1-E342-374FA0095116}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {7C050627-6267-11A1-E342-374FA0095116}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
@@ -250,27 +256,28 @@ Global
{6210A080-01C0-6D67-F1DB-669393175402}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{6210A080-01C0-6D67-F1DB-669393175402}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{6210A080-01C0-6D67-F1DB-669393175402}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {6210A080-01C0-6D67-F1DB-669393175402}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {6210A080-01C0-6D67-F1DB-669393175402}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {6210A080-01C0-6D67-F1DB-669393175402}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {6210A080-01C0-6D67-F1DB-669393175402}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {6210A080-01C0-6D67-F1DB-669393175402}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {6210A080-01C0-6D67-F1DB-669393175402}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {6210A080-01C0-6D67-F1DB-669393175402}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
- {6210A080-01C0-6D67-F1DB-669393175402}.29 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
- {6210A080-01C0-6D67-F1DB-669393175402}.30 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
- {6210A080-01C0-6D67-F1DB-669393175402}.31 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
- {6210A080-01C0-6D67-F1DB-669393175402}.32 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
- {6210A080-01C0-6D67-F1DB-669393175402}.33 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
- {6210A080-01C0-6D67-F1DB-669393175402}.34 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
- {6210A080-01C0-6D67-F1DB-669393175402}.35 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
- {6210A080-01C0-6D67-F1DB-669393175402}.36 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
- {6210A080-01C0-6D67-F1DB-669393175402}.37 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
- {6210A080-01C0-6D67-F1DB-669393175402}.38 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
- {6210A080-01C0-6D67-F1DB-669393175402}.39 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
- {6210A080-01C0-6D67-F1DB-669393175402}.40 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
- {6210A080-01C0-6D67-F1DB-669393175402}.41 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
+ {6210A080-01C0-6D67-F1DB-669393175402}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {6210A080-01C0-6D67-F1DB-669393175402}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {6210A080-01C0-6D67-F1DB-669393175402}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {6210A080-01C0-6D67-F1DB-669393175402}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {6210A080-01C0-6D67-F1DB-669393175402}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {6210A080-01C0-6D67-F1DB-669393175402}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.30 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
+ {6210A080-01C0-6D67-F1DB-669393175402}.31 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.32 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {6210A080-01C0-6D67-F1DB-669393175402}.33 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {6210A080-01C0-6D67-F1DB-669393175402}.34 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.35 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.36 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
+ {6210A080-01C0-6D67-F1DB-669393175402}.37 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
+ {6210A080-01C0-6D67-F1DB-669393175402}.38 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.39 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {6210A080-01C0-6D67-F1DB-669393175402}.40 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
+ {6210A080-01C0-6D67-F1DB-669393175402}.41 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.42 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
{9E59B16D-0924-409C-1611-DF2207A0053F}.0 = {7CE54E12-D3D5-878F-9CC5-786265A3F9CE}
{9E59B16D-0924-409C-1611-DF2207A0053F}.1 = {3578834A-4B06-DE6F-78AC-FE11F7226D35}
{9E59B16D-0924-409C-1611-DF2207A0053F}.2 = {67034B5D-16DD-DC97-82F6-23B9E6108940}
@@ -292,14 +299,15 @@ Global
{9E59B16D-0924-409C-1611-DF2207A0053F}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{9E59B16D-0924-409C-1611-DF2207A0053F}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{9E59B16D-0924-409C-1611-DF2207A0053F}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.0 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.1 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.2 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
@@ -483,6 +491,14 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.Debug.Build.0 = Debug|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.ActiveCfg = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.Build.0 = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.Build.0 = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.ActiveCfg = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.Build.0 = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.ActiveCfg = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.Build.0 = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
diff --git a/msvc/8/libbulletcollision.vcproj b/msvc/8/libbulletcollision.vcproj
index 45bfcb878..549fadcec 100644
--- a/msvc/8/libbulletcollision.vcproj
+++ b/msvc/8/libbulletcollision.vcproj
@@ -412,6 +412,9 @@
+
+
@@ -445,6 +448,9 @@
+
+
@@ -632,9 +638,15 @@
+
+
+
+
@@ -668,6 +680,9 @@
+
+
diff --git a/msvc/8/wksbullet.sln b/msvc/8/wksbullet.sln
index 383befaa1..55155246a 100644
--- a/msvc/8/wksbullet.sln
+++ b/msvc/8/wksbullet.sln
@@ -42,6 +42,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appHelloWorld", "appHelloWo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMovingConcaveDemo", "appMovingConcaveDemo.vcproj", "{2D714360-B8EC-F8E0-ED74-E95336301075}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiMaterialDemo", "appMultiMaterialDemo.vcproj", "{7C050627-6267-11A1-E342-374FA0095116}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appMultiThreadedDemo", "appMultiThreadedDemo.vcproj", "{6D016A7B-39C8-2018-733F-22921BE94AC4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appRagdollDemo", "appRagdollDemo.vcproj", "{EFEF2072-51F9-DAE8-AC38-3E653C680F74}"
@@ -195,6 +197,10 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
{2D714360-B8EC-F8E0-ED74-E95336301075}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{2D714360-B8EC-F8E0-ED74-E95336301075}.4 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {7C050627-6267-11A1-E342-374FA0095116}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {7C050627-6267-11A1-E342-374FA0095116}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {7C050627-6267-11A1-E342-374FA0095116}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {7C050627-6267-11A1-E342-374FA0095116}.3 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.0 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.1 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
{6D016A7B-39C8-2018-733F-22921BE94AC4}.2 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
@@ -250,27 +256,28 @@ Global
{6210A080-01C0-6D67-F1DB-669393175402}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{6210A080-01C0-6D67-F1DB-669393175402}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{6210A080-01C0-6D67-F1DB-669393175402}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {6210A080-01C0-6D67-F1DB-669393175402}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {6210A080-01C0-6D67-F1DB-669393175402}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {6210A080-01C0-6D67-F1DB-669393175402}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {6210A080-01C0-6D67-F1DB-669393175402}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {6210A080-01C0-6D67-F1DB-669393175402}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {6210A080-01C0-6D67-F1DB-669393175402}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {6210A080-01C0-6D67-F1DB-669393175402}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
- {6210A080-01C0-6D67-F1DB-669393175402}.29 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
- {6210A080-01C0-6D67-F1DB-669393175402}.30 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
- {6210A080-01C0-6D67-F1DB-669393175402}.31 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
- {6210A080-01C0-6D67-F1DB-669393175402}.32 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
- {6210A080-01C0-6D67-F1DB-669393175402}.33 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
- {6210A080-01C0-6D67-F1DB-669393175402}.34 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
- {6210A080-01C0-6D67-F1DB-669393175402}.35 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
- {6210A080-01C0-6D67-F1DB-669393175402}.36 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
- {6210A080-01C0-6D67-F1DB-669393175402}.37 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
- {6210A080-01C0-6D67-F1DB-669393175402}.38 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
- {6210A080-01C0-6D67-F1DB-669393175402}.39 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
- {6210A080-01C0-6D67-F1DB-669393175402}.40 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
- {6210A080-01C0-6D67-F1DB-669393175402}.41 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
+ {6210A080-01C0-6D67-F1DB-669393175402}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {6210A080-01C0-6D67-F1DB-669393175402}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {6210A080-01C0-6D67-F1DB-669393175402}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {6210A080-01C0-6D67-F1DB-669393175402}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {6210A080-01C0-6D67-F1DB-669393175402}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {6210A080-01C0-6D67-F1DB-669393175402}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {6210A080-01C0-6D67-F1DB-669393175402}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {6210A080-01C0-6D67-F1DB-669393175402}.30 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
+ {6210A080-01C0-6D67-F1DB-669393175402}.31 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
+ {6210A080-01C0-6D67-F1DB-669393175402}.32 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
+ {6210A080-01C0-6D67-F1DB-669393175402}.33 = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}
+ {6210A080-01C0-6D67-F1DB-669393175402}.34 = {A24D77FD-D69A-75A0-A7DC-730894C9D0F7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.35 = {7C428E76-9271-6284-20F0-9B38ED6931E3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.36 = {C04EA8AC-D96C-0E1F-0823-094C1010F087}
+ {6210A080-01C0-6D67-F1DB-669393175402}.37 = {6AB01C9C-9163-F400-B5C3-20D046631E17}
+ {6210A080-01C0-6D67-F1DB-669393175402}.38 = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}
+ {6210A080-01C0-6D67-F1DB-669393175402}.39 = {F8318FC6-B9C4-D5A1-DCC0-C9CE42ADAE22}
+ {6210A080-01C0-6D67-F1DB-669393175402}.40 = {B1B5F775-54A9-2437-E4AC-7E817E492142}
+ {6210A080-01C0-6D67-F1DB-669393175402}.41 = {81819498-F4A8-E0CA-8ED5-724E27AB34E7}
+ {6210A080-01C0-6D67-F1DB-669393175402}.42 = {A0958CD9-0E39-4A77-3711-9B488F508FBF}
{9E59B16D-0924-409C-1611-DF2207A0053F}.0 = {7CE54E12-D3D5-878F-9CC5-786265A3F9CE}
{9E59B16D-0924-409C-1611-DF2207A0053F}.1 = {3578834A-4B06-DE6F-78AC-FE11F7226D35}
{9E59B16D-0924-409C-1611-DF2207A0053F}.2 = {67034B5D-16DD-DC97-82F6-23B9E6108940}
@@ -292,14 +299,15 @@ Global
{9E59B16D-0924-409C-1611-DF2207A0053F}.18 = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}
{9E59B16D-0924-409C-1611-DF2207A0053F}.19 = {5239CE6A-7C7A-2170-6334-DF8EE0C44543}
{9E59B16D-0924-409C-1611-DF2207A0053F}.20 = {2D714360-B8EC-F8E0-ED74-E95336301075}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {330B5049-6935-5CE6-79B7-28F570962895}
- {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.21 = {7C050627-6267-11A1-E342-374FA0095116}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.22 = {6D016A7B-39C8-2018-733F-22921BE94AC4}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.23 = {EFEF2072-51F9-DAE8-AC38-3E653C680F74}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.24 = {60F71B6A-F888-C449-EF49-268BB9F7C963}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.25 = {60A1DC9D-F837-3923-E9DE-A7925394A578}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.26 = {E7461CAA-D8C1-90D0-FB1E-FCD4F340FAAE}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.27 = {106E3D23-110E-5DD8-4A6A-D8A2250C43C9}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.28 = {330B5049-6935-5CE6-79B7-28F570962895}
+ {9E59B16D-0924-409C-1611-DF2207A0053F}.29 = {07E712DB-DAF8-887E-F099-CE43D4E8B1F9}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.0 = {ED51AA4D-82EF-089C-CD6D-91CF224E2A9E}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.1 = {6ADA430D-009C-2ED4-A787-2AC2D6FEB8CE}
{DFAF0062-4CD7-9AB8-0683-A6026B326F56}.2 = {61BD1097-CF2E-B296-DAA9-73A6FE135319}
@@ -483,6 +491,14 @@ Global
{2D714360-B8EC-F8E0-ED74-E95336301075}.Debug.Build.0 = Debug|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
{2D714360-B8EC-F8E0-ED74-E95336301075}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.ActiveCfg = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Release.Build.0 = Release|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.ReleaseDoublePrecision.Build.0 = ReleaseDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.ActiveCfg = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.Debug.Build.0 = Debug|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.ActiveCfg = DebugDoublePrecision|Win32
+ {7C050627-6267-11A1-E342-374FA0095116}.DebugDoublePrecision.Build.0 = DebugDoublePrecision|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.ActiveCfg = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.Release.Build.0 = Release|Win32
{6D016A7B-39C8-2018-733F-22921BE94AC4}.ReleaseDoublePrecision.ActiveCfg = ReleaseDoublePrecision|Win32
diff --git a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
index 31c6f953f..e65ff715a 100644
--- a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
+++ b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
@@ -26,7 +26,7 @@ m_triangle(triangle)
}
-void SphereTriangleDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw)
+void SphereTriangleDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults)
{
(void)debugDraw;
@@ -42,7 +42,16 @@ void SphereTriangleDetector::getClosestPoints(const ClosestPointInput& input,Res
if (collide(sphereInTr.getOrigin(),point,normal,depth,timeOfImpact))
{
- output.addContactPoint(transformB.getBasis()*normal,transformB*point,depth);
+ if (swapResults)
+ {
+ btVector3 normalOnB = transformB.getBasis()*normal;
+ btVector3 normalOnA = -normalOnB;
+ btVector3 pointOnA = transformB*point+normalOnB*depth;
+ output.addContactPoint(normalOnA,pointOnA,depth);
+ } else
+ {
+ output.addContactPoint(transformB.getBasis()*normal,transformB*point,depth);
+ }
}
}
diff --git a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
index 0c817b221..26dabaa48 100644
--- a/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
+++ b/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
@@ -28,7 +28,7 @@ class btTriangleShape;
/// sphere-triangle to match the btDiscreteCollisionDetectorInterface
struct SphereTriangleDetector : public btDiscreteCollisionDetectorInterface
{
- virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw);
+ virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);
SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle);
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
index 259ce0160..efc858cbd 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
@@ -635,7 +635,7 @@ int dBoxBox2 (const btVector3& p1, const dMatrix3 R1,
return cnum;
}
-void btBoxBoxDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* /*debugDraw*/)
+void btBoxBoxDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* /*debugDraw*/,bool /*swapResults*/)
{
const btTransform& transformA = input.m_transformA;
diff --git a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
index 8971c50fc..eacc90e85 100644
--- a/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
+++ b/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
@@ -37,7 +37,7 @@ public:
virtual ~btBoxBoxDetector() {};
- virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw);
+ virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);
};
diff --git a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
index 179541e71..a29a6d624 100644
--- a/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
@@ -33,10 +33,11 @@ m_isSwapped(isSwapped)
m_childCollisionAlgorithms.resize(numChildren);
for (i=0;igetCollisionShape();
btCollisionShape* childShape = compoundShape->getChildShape(i);
colObj->internalSetTemporaryCollisionShape( childShape );
m_childCollisionAlgorithms[i] = ci.m_dispatcher1->findAlgorithm(colObj,otherObj);
- colObj->setCollisionShape( colObj->getRootCollisionShape());
+ colObj->internalSetTemporaryCollisionShape( tmpShape );
}
}
@@ -78,18 +79,17 @@ void btCompoundCollisionAlgorithm::processCollision (btCollisionObject* body0,bt
btTransform orgTrans = colObj->getWorldTransform();
btTransform orgInterpolationTrans = colObj->getInterpolationWorldTransform();
- btCollisionShape* orgShape = colObj->getCollisionShape();
-
const btTransform& childTrans = compoundShape->getChildTransform(i);
btTransform newChildWorldTrans = orgTrans*childTrans ;
colObj->setWorldTransform( newChildWorldTrans);
colObj->setInterpolationWorldTransform(newChildWorldTrans);
//the contactpoint is still projected back using the original inverted worldtrans
- colObj->setCollisionShape( childShape );
+ btCollisionShape* tmpShape = colObj->getCollisionShape();
+ colObj->internalSetTemporaryCollisionShape( childShape );
m_childCollisionAlgorithms[i]->processCollision(colObj,otherObj,dispatchInfo,resultOut);
//revert back
- colObj->setCollisionShape( orgShape);
+ colObj->internalSetTemporaryCollisionShape( tmpShape);
colObj->setWorldTransform( orgTrans );
colObj->setInterpolationWorldTransform(orgInterpolationTrans);
}
@@ -123,20 +123,20 @@ btScalar btCompoundCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject*
//backup
btTransform orgTrans = colObj->getWorldTransform();
- btCollisionShape* orgShape = colObj->getCollisionShape();
-
+
const btTransform& childTrans = compoundShape->getChildTransform(i);
//btTransform newChildWorldTrans = orgTrans*childTrans ;
colObj->setWorldTransform( orgTrans*childTrans );
- colObj->setCollisionShape( childShape );
+ btCollisionShape* tmpShape = colObj->getCollisionShape();
+ colObj->internalSetTemporaryCollisionShape( childShape );
btScalar frac = m_childCollisionAlgorithms[i]->calculateTimeOfImpact(colObj,otherObj,dispatchInfo,resultOut);
if (fracsetCollisionShape( orgShape);
+ colObj->internalSetTemporaryCollisionShape( tmpShape);
colObj->setWorldTransform( orgTrans);
}
return hitFraction;
diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
index 5ce093b53..6d28904cb 100644
--- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
@@ -117,6 +117,7 @@ void btConvexTriangleCallback::processTriangle(btVector3* triangle,int partId, i
btTriangleShape tm(triangle[0],triangle[1],triangle[2]);
tm.setMargin(m_collisionMarginTriangle);
+ btCollisionShape* tmpShape = ob->getCollisionShape();
ob->internalSetTemporaryCollisionShape( &tm );
btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_convexBody,m_triBody,m_manifoldPtr);
@@ -129,7 +130,7 @@ void btConvexTriangleCallback::processTriangle(btVector3* triangle,int partId, i
colAlgo->processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
colAlgo->~btCollisionAlgorithm();
ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo);
- ob->setCollisionShape( ob->getRootCollisionShape());
+ ob->internalSetTemporaryCollisionShape( tmpShape);
}
diff --git a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
index f19e16011..ec497011e 100644
--- a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
+++ b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
@@ -247,6 +247,8 @@ btCollisionAlgorithmCreateFunc* btDefaultCollisionConfiguration::getCollisionAlg
{
return m_planeConvexCF;
}
+
+
if (btBroadphaseProxy::isConvex(proxyType0) && btBroadphaseProxy::isConvex(proxyType1))
{
diff --git a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
index b3b612d52..2f64af7e0 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
+++ b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
@@ -60,10 +60,12 @@ void btSphereTriangleCollisionAlgorithm::processCollision (btCollisionObject* co
btDiscreteCollisionDetectorInterface::ClosestPointInput input;
input.m_maximumDistanceSquared = btScalar(1e30);//todo: tighter bounds
- input.m_transformA = col0->getWorldTransform();
- input.m_transformB = col1->getWorldTransform();
+ input.m_transformA = sphereObj->getWorldTransform();
+ input.m_transformB = triObj->getWorldTransform();
- detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw);
+ bool swapResults = m_swapped && !m_ownManifold;
+
+ detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw,swapResults);
if (m_ownManifold)
resultOut->refreshContactPoints();
diff --git a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
index dd11d4d25..d4315303b 100644
--- a/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
+++ b/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
@@ -1,69 +1,69 @@
-/*
-Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
-
-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 SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
-#define SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
-
-#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
-#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
-#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
-class btPersistentManifold;
-#include "btCollisionDispatcher.h"
-
-/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection.
-/// Other features are frame-coherency (persistent data) and collision response.
-/// Also provides the most basic sample for custom/user btCollisionAlgorithm
-class btSphereTriangleCollisionAlgorithm : public btCollisionAlgorithm
-{
- bool m_ownManifold;
- btPersistentManifold* m_manifoldPtr;
- bool m_swapped;
-
-public:
- btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped);
-
- btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)
- : btCollisionAlgorithm(ci) {}
-
- virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
-
- virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
-
+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+
+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 SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
+#define SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
+
+#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
+class btPersistentManifold;
+#include "btCollisionDispatcher.h"
+
+/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection.
+/// Other features are frame-coherency (persistent data) and collision response.
+/// Also provides the most basic sample for custom/user btCollisionAlgorithm
+class btSphereTriangleCollisionAlgorithm : public btCollisionAlgorithm
+{
+ bool m_ownManifold;
+ btPersistentManifold* m_manifoldPtr;
+ bool m_swapped;
+
+public:
+ btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped);
+
+ btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)
+ : btCollisionAlgorithm(ci) {}
+
+ virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
+
+ virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
+
virtual void getAllContactManifolds(btManifoldArray& manifoldArray)
{
if (m_manifoldPtr && m_ownManifold)
{
manifoldArray.push_back(m_manifoldPtr);
}
- }
-
- virtual ~btSphereTriangleCollisionAlgorithm();
-
- struct CreateFunc :public btCollisionAlgorithmCreateFunc
- {
-
- virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
- {
-
- void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm));
-
- return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped);
- }
- };
-
-};
-
-#endif //SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
-
+ }
+
+ virtual ~btSphereTriangleCollisionAlgorithm();
+
+ struct CreateFunc :public btCollisionAlgorithmCreateFunc
+ {
+
+ virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
+ {
+
+ void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm));
+
+ return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped);
+ }
+ };
+
+};
+
+#endif //SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
+
diff --git a/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp b/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
index 7dd6425e0..3c98ca08d 100644
--- a/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
+++ b/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
@@ -19,10 +19,11 @@ subject to the following restrictions:
btStaticPlaneShape::btStaticPlaneShape(const btVector3& planeNormal,btScalar planeConstant)
-:m_planeNormal(planeNormal),
+:m_planeNormal(planeNormal.normalized()),
m_planeConstant(planeConstant),
m_localScaling(btScalar(0.),btScalar(0.),btScalar(0.))
{
+ // btAssert( btFuzzyZero(m_planeNormal.length() - btScalar(1.)) );
}
diff --git a/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
index f11c8bd12..db797d514 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
@@ -58,7 +58,7 @@ struct btDiscreteCollisionDetectorInterface
// give either closest points (distance > 0) or penetration (distance)
// the normal always points from B towards A
//
- virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw) = 0;
+ virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false) = 0;
};
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
index 59b3794ff..01fb1a4b0 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
@@ -47,7 +47,7 @@ m_catchDegeneracies(1)
{
}
-void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw)
+void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults)
{
btScalar distance=btScalar(0.);
btVector3 normalInB(btScalar(0.),btScalar(0.),btScalar(0.));
diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
index 1ec51f740..550fc4677 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
@@ -52,7 +52,7 @@ public:
btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver);
virtual ~btGjkPairDetector() {};
- virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw);
+ virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);
void setMinkowskiA(btConvexShape* minkA)
{
diff --git a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
index 64e7b9193..056befced 100644
--- a/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
+++ b/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
@@ -127,25 +127,19 @@ btCollisionObject* ob = static_cast(m_triBody);
{
btCollisionShape* tm = shapeCache[partId][triangleIndex];
- btCollisionShape* tmpShape = ob->getCollisionShape();
-
//copy over user pointers to temporary shape
- tm->setUserPointer(tmpShape->getUserPointer());
+ tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer());
- ob->setCollisionShape( tm );
+ btCollisionShape* tmpShape = ob->getCollisionShape();
+ ob->internalSetTemporaryCollisionShape( tm );
btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr);
- ///this should use the btDispatcher, so the actual registered algorithm is used
- // btConvexConvexAlgorithm cvxcvxalgo(m_manifoldPtr,ci,m_convexBody,m_triBody);
-
- //m_resultOut->setShapeIdentifiers(-1,-1,partId,triangleIndex);
- // cvxcvxalgo.setShapeIdentifiers(-1,-1,partId,triangleIndex);
-// cvxcvxalgo.processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
+
colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
colAlgo->~btCollisionAlgorithm();
ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo);
- ob->setCollisionShape( tmpShape );
+ ob->internalSetTemporaryCollisionShape( tmpShape);
return;
}
@@ -182,12 +176,12 @@ btCollisionObject* ob = static_cast(m_triBody);
//btTriangleShape tm(triangle[0],triangle[1],triangle[2]);
// tm.setMargin(m_collisionMarginTriangle);
- btCollisionShape* tmpShape = ob->getCollisionShape();
-
- //copy over user pointers to temporary shape
- tm->setUserPointer(tmpShape->getUserPointer());
- ob->setCollisionShape( tm );
+ //copy over user pointers to temporary shape
+ tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer());
+
+ btCollisionShape* tmpShape = ob->getCollisionShape();
+ ob->internalSetTemporaryCollisionShape( tm );
btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr);
@@ -200,7 +194,7 @@ btCollisionObject* ob = static_cast(m_triBody);
colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
colAlgo->~btCollisionAlgorithm();
ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo);
- ob->setCollisionShape( tmpShape );
+ ob->internalSetTemporaryCollisionShape( tmpShape );
// delete tm;
shapeCache[partId][triangleIndex] = tm;