diff --git a/Demos/AllBulletDemos/Main.cpp b/Demos/AllBulletDemos/Main.cpp index bb177cdd6..96032d90c 100644 --- a/Demos/AllBulletDemos/Main.cpp +++ b/Demos/AllBulletDemos/Main.cpp @@ -25,6 +25,8 @@ #include "DemoApplication.h" #include "DemoEntries.h" #include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" +#include "BulletSoftBody/btSoftRigidDynamicsWorld.h" +#include "BulletSoftBody/btSoftBodyHelpers.h" #include "GLDebugDrawer.h" @@ -275,7 +277,7 @@ void SimulationLoop() discreteWorld->getSolverInfo().m_warmstartingFactor = gWarmStartingParameter; discreteWorld->getSolverInfo().m_splitImpulse = gUseSplitImpulse; - btSequentialImpulseConstraintSolver* solver = ((btSequentialImpulseConstraintSolver*) discreteWorld->getConstraintSolver()); + // btSequentialImpulseConstraintSolver* solver = ((btSequentialImpulseConstraintSolver*) discreteWorld->getConstraintSolver()); if (gUseWarmstarting) { @@ -303,6 +305,21 @@ void SimulationLoop() { demo->displayCallback(); } + + if (demo->getDynamicsWorld() && demo->getDynamicsWorld()->getWorldType()==BT_SOFT_RIGID_DYNAMICS_WORLD) + { + btSoftRigidDynamicsWorld* softWorld = (btSoftRigidDynamicsWorld*)demo->getDynamicsWorld(); + for ( int i=0;igetSoftBodyArray().size();i++) + { + btSoftBody* psb=(btSoftBody*)softWorld->getSoftBodyArray()[i]; + if (softWorld->getDebugDrawer() && !softWorld->getDebugDrawer()->getDebugMode() & (btIDebugDraw::DBG_DrawWireframe)) + { + btSoftBodyHelpers::DrawFrame(psb,softWorld->getDebugDrawer()); + btSoftBodyHelpers::Draw(psb,softWorld->getDebugDrawer(),softWorld->getDrawFlags()); + } + } + } + if (testSelection != testIndex) { if (testSelection>1) @@ -380,7 +397,7 @@ void KeyboardSpecialUp(int key, int x, int y) void GlutIdleFunc() { - int current_window, new_window; + int current_window, new_window=-1; current_window = glutGetWindow(); if (GLUI_Master.gluis.first_child() != NULL ) { diff --git a/Extras/AllBulletDemosOSX/AllBulletDemos.xcodeproj/project.pbxproj b/Extras/AllBulletDemosOSX/AllBulletDemos.xcodeproj/project.pbxproj index caefe55cc..0ea60e148 100644 --- a/Extras/AllBulletDemosOSX/AllBulletDemos.xcodeproj/project.pbxproj +++ b/Extras/AllBulletDemosOSX/AllBulletDemos.xcodeproj/project.pbxproj @@ -182,6 +182,11 @@ 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; BC1BE0E811F7BB5E00A57EBB /* btDefaultSoftBodySolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC1BE0E311F7BB5E00A57EBB /* btDefaultSoftBodySolver.cpp */; }; + BC3026D8134E25A100C5D608 /* btBox2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3026D1134E25A100C5D608 /* btBox2dShape.cpp */; }; + BC3026D9134E25A100C5D608 /* btConvex2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3026D3134E25A100C5D608 /* btConvex2dShape.cpp */; }; + BC3026DA134E25A100C5D608 /* btConvexPolyhedron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3026D5134E25A100C5D608 /* btConvexPolyhedron.cpp */; }; + BC3026DD134E25B200C5D608 /* btPolyhedralContactClipping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3026DB134E25B200C5D608 /* btPolyhedralContactClipping.cpp */; }; + BC3026E4134E25C600C5D608 /* btConvexHullComputer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3026E2134E25C600C5D608 /* btConvexHullComputer.cpp */; }; BCEDD8EC112AF72F00F49466 /* btSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEDD8EB112AF72F00F49466 /* btSerializer.cpp */; }; /* End PBXBuildFile section */ @@ -576,6 +581,17 @@ BC1BE0E511F7BB5E00A57EBB /* btSoftBodyInternals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSoftBodyInternals.h; sourceTree = ""; }; BC1BE0E611F7BB5E00A57EBB /* btSoftBodySolvers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSoftBodySolvers.h; sourceTree = ""; }; BC1BE0E711F7BB5E00A57EBB /* btSoftBodySolverVertexBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSoftBodySolverVertexBuffer.h; sourceTree = ""; }; + BC3026D1134E25A100C5D608 /* btBox2dShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBox2dShape.cpp; sourceTree = ""; }; + BC3026D2134E25A100C5D608 /* btBox2dShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBox2dShape.h; sourceTree = ""; }; + BC3026D3134E25A100C5D608 /* btConvex2dShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvex2dShape.cpp; sourceTree = ""; }; + BC3026D4134E25A100C5D608 /* btConvex2dShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvex2dShape.h; sourceTree = ""; }; + BC3026D5134E25A100C5D608 /* btConvexPolyhedron.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexPolyhedron.cpp; sourceTree = ""; }; + BC3026D6134E25A100C5D608 /* btConvexPolyhedron.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexPolyhedron.h; sourceTree = ""; }; + BC3026D7134E25A100C5D608 /* btTriangleInfoMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleInfoMap.h; sourceTree = ""; }; + BC3026DB134E25B200C5D608 /* btPolyhedralContactClipping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPolyhedralContactClipping.cpp; sourceTree = ""; }; + BC3026DC134E25B200C5D608 /* btPolyhedralContactClipping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPolyhedralContactClipping.h; sourceTree = ""; }; + BC3026E2134E25C600C5D608 /* btConvexHullComputer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexHullComputer.cpp; sourceTree = ""; }; + BC3026E3134E25C600C5D608 /* btConvexHullComputer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexHullComputer.h; sourceTree = ""; }; BCEDD8EA112AF72F00F49466 /* btSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSerializer.h; sourceTree = ""; }; BCEDD8EB112AF72F00F49466 /* btSerializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSerializer.cpp; sourceTree = ""; }; /* End PBXFileReference section */ @@ -886,6 +902,13 @@ 7ACE54CA0DDFA1E400CA06EA /* CollisionShapes */ = { isa = PBXGroup; children = ( + BC3026D1134E25A100C5D608 /* btBox2dShape.cpp */, + BC3026D2134E25A100C5D608 /* btBox2dShape.h */, + BC3026D3134E25A100C5D608 /* btConvex2dShape.cpp */, + BC3026D4134E25A100C5D608 /* btConvex2dShape.h */, + BC3026D5134E25A100C5D608 /* btConvexPolyhedron.cpp */, + BC3026D6134E25A100C5D608 /* btConvexPolyhedron.h */, + BC3026D7134E25A100C5D608 /* btTriangleInfoMap.h */, 7ACE54CB0DDFA1E400CA06EA /* btBoxShape.cpp */, 7ACE54CC0DDFA1E400CA06EA /* btBoxShape.h */, 7ACE54CD0DDFA1E400CA06EA /* btBvhTriangleMeshShape.cpp */, @@ -953,6 +976,8 @@ 7ACE550F0DDFA1E400CA06EA /* NarrowPhaseCollision */ = { isa = PBXGroup; children = ( + BC3026DB134E25B200C5D608 /* btPolyhedralContactClipping.cpp */, + BC3026DC134E25B200C5D608 /* btPolyhedralContactClipping.h */, 7ACE55100DDFA1E400CA06EA /* btContinuousConvexCollision.cpp */, 7ACE55110DDFA1E400CA06EA /* btContinuousConvexCollision.h */, 7ACE55120DDFA1E400CA06EA /* btConvexCast.cpp */, @@ -1089,6 +1114,8 @@ 7ACE567D0DDFA1E600CA06EA /* LinearMath */ = { isa = PBXGroup; children = ( + BC3026E2134E25C600C5D608 /* btConvexHullComputer.cpp */, + BC3026E3134E25C600C5D608 /* btConvexHullComputer.h */, BCEDD8EA112AF72F00F49466 /* btSerializer.h */, BCEDD8EB112AF72F00F49466 /* btSerializer.cpp */, 7ACE567E0DDFA1E600CA06EA /* btAabbUtil2.h */, @@ -1219,7 +1246,6 @@ isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AllBulletDemos" */; compatibilityVersion = "Xcode 2.4"; - developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, @@ -1423,6 +1449,11 @@ 7A2B5DB910548D9F0069469C /* btUniversalConstraint.cpp in Sources */, BCEDD8EC112AF72F00F49466 /* btSerializer.cpp in Sources */, BC1BE0E811F7BB5E00A57EBB /* btDefaultSoftBodySolver.cpp in Sources */, + BC3026D8134E25A100C5D608 /* btBox2dShape.cpp in Sources */, + BC3026D9134E25A100C5D608 /* btConvex2dShape.cpp in Sources */, + BC3026DA134E25A100C5D608 /* btConvexPolyhedron.cpp in Sources */, + BC3026DD134E25B200C5D608 /* btPolyhedralContactClipping.cpp in Sources */, + BC3026E4134E25C600C5D608 /* btConvexHullComputer.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1771,7 +1802,6 @@ ); ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH)"; PREBINDING = NO; - SDKROOT = macosx; }; name = Debug; }; @@ -1800,7 +1830,6 @@ /System/Library/Frameworks/GLUT.framework/Headers, ); PREBINDING = NO; - SDKROOT = macosx; }; name = Release; }; diff --git a/Extras/AllBulletDemosOSX/src/BTDemo.mm b/Extras/AllBulletDemosOSX/src/BTDemo.mm index 4d64a7691..c961d18c4 100644 --- a/Extras/AllBulletDemosOSX/src/BTDemo.mm +++ b/Extras/AllBulletDemosOSX/src/BTDemo.mm @@ -237,12 +237,15 @@ static BOOL DrawContacts = NO; return; } - if (SplitImpulse) + if (demo->getDynamicsWorld()) { - demo->getDynamicsWorld()->getSolverInfo().m_splitImpulse=1; - } else - { - demo->getDynamicsWorld()->getSolverInfo().m_splitImpulse=0; + if (SplitImpulse) + { + demo->getDynamicsWorld()->getSolverInfo().m_splitImpulse=1; + } else + { + demo->getDynamicsWorld()->getSolverInfo().m_splitImpulse=0; + } } if (DrawAABBs) { diff --git a/src/BulletDynamics/Dynamics/btDynamicsWorld.h b/src/BulletDynamics/Dynamics/btDynamicsWorld.h index 105317920..6b0093371 100644 --- a/src/BulletDynamics/Dynamics/btDynamicsWorld.h +++ b/src/BulletDynamics/Dynamics/btDynamicsWorld.h @@ -32,7 +32,8 @@ enum btDynamicsWorldType { BT_SIMPLE_DYNAMICS_WORLD=1, BT_DISCRETE_DYNAMICS_WORLD=2, - BT_CONTINUOUS_DYNAMICS_WORLD=3 + BT_CONTINUOUS_DYNAMICS_WORLD=3, + BT_SOFT_RIGID_DYNAMICS_WORLD=4 }; ///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc. diff --git a/src/BulletSoftBody/btSoftRigidDynamicsWorld.h b/src/BulletSoftBody/btSoftRigidDynamicsWorld.h index 7d8d0cb7d..3e0efafd6 100644 --- a/src/BulletSoftBody/btSoftRigidDynamicsWorld.h +++ b/src/BulletSoftBody/btSoftRigidDynamicsWorld.h @@ -73,6 +73,10 @@ public: return m_sbi; } + virtual btDynamicsWorldType getWorldType() const + { + return BT_SOFT_RIGID_DYNAMICS_WORLD; + } btSoftBodyArray& getSoftBodyArray() {