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;