Synchronized Bullet physics to latest version.
authorErwin Coumans <blender@erwincoumans.com>
Mon, 27 Mar 2006 06:37:30 +0000 (06:37 +0000)
committerErwin Coumans <blender@erwincoumans.com>
Mon, 27 Mar 2006 06:37:30 +0000 (06:37 +0000)
- Changed license from MIT to ZLib.
- Added 3D Sweep and Prune contribution
- More stable native constraint solver

Sorry for any inconvenience caused by this checkin.
All Blender buildsystems require update: added files and moved files.

163 files changed:
extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.cpp [new file with mode: 0644]
extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.h [new file with mode: 0644]
extern/bullet/Bullet/BroadphaseCollision/BroadphaseInterface.h
extern/bullet/Bullet/BroadphaseCollision/BroadphaseProxy.cpp
extern/bullet/Bullet/BroadphaseCollision/BroadphaseProxy.h
extern/bullet/Bullet/BroadphaseCollision/CollisionAlgorithm.cpp
extern/bullet/Bullet/BroadphaseCollision/CollisionAlgorithm.h
extern/bullet/Bullet/BroadphaseCollision/Dispatcher.cpp
extern/bullet/Bullet/BroadphaseCollision/Dispatcher.h
extern/bullet/Bullet/BroadphaseCollision/SimpleBroadphase.cpp
extern/bullet/Bullet/BroadphaseCollision/SimpleBroadphase.h
extern/bullet/Bullet/Bullet3_vc7.vcproj
extern/bullet/Bullet/Bullet3_vc8.vcproj
extern/bullet/Bullet/CollisionDispatch/CollisionDispatcher.cpp
extern/bullet/Bullet/CollisionDispatch/CollisionDispatcher.h
extern/bullet/Bullet/CollisionDispatch/CollisionObject.cpp [new file with mode: 0644]
extern/bullet/Bullet/CollisionDispatch/CollisionObject.h [moved from extern/bullet/Bullet/NarrowPhaseCollision/CollisionObject.h with 50% similarity]
extern/bullet/Bullet/CollisionDispatch/CollisionWorld.cpp
extern/bullet/Bullet/CollisionDispatch/CollisionWorld.h
extern/bullet/Bullet/CollisionDispatch/ConvexConcaveCollisionAlgorithm.cpp
extern/bullet/Bullet/CollisionDispatch/ConvexConcaveCollisionAlgorithm.h
extern/bullet/Bullet/CollisionDispatch/ConvexConvexAlgorithm.cpp
extern/bullet/Bullet/CollisionDispatch/ConvexConvexAlgorithm.h
extern/bullet/Bullet/CollisionDispatch/EmptyCollisionAlgorithm.cpp
extern/bullet/Bullet/CollisionDispatch/EmptyCollisionAlgorithm.h
extern/bullet/Bullet/CollisionDispatch/ManifoldResult.cpp
extern/bullet/Bullet/CollisionDispatch/ManifoldResult.h
extern/bullet/Bullet/CollisionDispatch/UnionFind.cpp
extern/bullet/Bullet/CollisionDispatch/UnionFind.h
extern/bullet/Bullet/CollisionShapes/BoxShape.cpp
extern/bullet/Bullet/CollisionShapes/BoxShape.h
extern/bullet/Bullet/CollisionShapes/BvhTriangleMeshShape.cpp
extern/bullet/Bullet/CollisionShapes/BvhTriangleMeshShape.h
extern/bullet/Bullet/CollisionShapes/CollisionMargin.h
extern/bullet/Bullet/CollisionShapes/CollisionShape.cpp
extern/bullet/Bullet/CollisionShapes/CollisionShape.h
extern/bullet/Bullet/CollisionShapes/ConeShape.cpp
extern/bullet/Bullet/CollisionShapes/ConeShape.h
extern/bullet/Bullet/CollisionShapes/ConvexHullShape.cpp
extern/bullet/Bullet/CollisionShapes/ConvexHullShape.h
extern/bullet/Bullet/CollisionShapes/ConvexShape.cpp
extern/bullet/Bullet/CollisionShapes/ConvexShape.h
extern/bullet/Bullet/CollisionShapes/ConvexTriangleCallback.cpp
extern/bullet/Bullet/CollisionShapes/ConvexTriangleCallback.h
extern/bullet/Bullet/CollisionShapes/CylinderShape.cpp
extern/bullet/Bullet/CollisionShapes/CylinderShape.h
extern/bullet/Bullet/CollisionShapes/EmptyShape.cpp
extern/bullet/Bullet/CollisionShapes/EmptyShape.h
extern/bullet/Bullet/CollisionShapes/MinkowskiSumShape.cpp
extern/bullet/Bullet/CollisionShapes/MinkowskiSumShape.h
extern/bullet/Bullet/CollisionShapes/MultiSphereShape.cpp
extern/bullet/Bullet/CollisionShapes/MultiSphereShape.h
extern/bullet/Bullet/CollisionShapes/OptimizedBvh.cpp
extern/bullet/Bullet/CollisionShapes/OptimizedBvh.h
extern/bullet/Bullet/CollisionShapes/PolyhedralConvexShape.cpp
extern/bullet/Bullet/CollisionShapes/PolyhedralConvexShape.h
extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.cpp
extern/bullet/Bullet/CollisionShapes/Simplex1to4Shape.h
extern/bullet/Bullet/CollisionShapes/SphereShape.cpp
extern/bullet/Bullet/CollisionShapes/SphereShape.h
extern/bullet/Bullet/CollisionShapes/StridingMeshInterface.cpp
extern/bullet/Bullet/CollisionShapes/StridingMeshInterface.h
extern/bullet/Bullet/CollisionShapes/TriangleCallback.cpp
extern/bullet/Bullet/CollisionShapes/TriangleCallback.h
extern/bullet/Bullet/CollisionShapes/TriangleIndexVertexArray.cpp
extern/bullet/Bullet/CollisionShapes/TriangleIndexVertexArray.h
extern/bullet/Bullet/CollisionShapes/TriangleMesh.cpp
extern/bullet/Bullet/CollisionShapes/TriangleMesh.h
extern/bullet/Bullet/CollisionShapes/TriangleMeshShape.cpp
extern/bullet/Bullet/CollisionShapes/TriangleMeshShape.h
extern/bullet/Bullet/CollisionShapes/TriangleShape.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_AlgebraicPolynomialSolver.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_AlgebraicPolynomialSolver.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_Collidable.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_Collidable.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_CollisionPair.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_CollisionPair.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_EdgeEdge.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_EdgeEdge.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_MotionStateInterface.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_PolynomialSolverInterface.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_Screwing.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_Screwing.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_StaticMotionState.h
extern/bullet/Bullet/NarrowPhaseCollision/BU_VertexPoly.cpp
extern/bullet/Bullet/NarrowPhaseCollision/BU_VertexPoly.h
extern/bullet/Bullet/NarrowPhaseCollision/CollisionMargin.h
extern/bullet/Bullet/NarrowPhaseCollision/CollisionObject.cpp [deleted file]
extern/bullet/Bullet/NarrowPhaseCollision/ContinuousConvexCollision.cpp
extern/bullet/Bullet/NarrowPhaseCollision/ContinuousConvexCollision.h
extern/bullet/Bullet/NarrowPhaseCollision/ConvexCast.cpp
extern/bullet/Bullet/NarrowPhaseCollision/ConvexCast.h
extern/bullet/Bullet/NarrowPhaseCollision/ConvexPenetrationDepthSolver.h
extern/bullet/Bullet/NarrowPhaseCollision/DiscreteCollisionDetectorInterface.h
extern/bullet/Bullet/NarrowPhaseCollision/GjkConvexCast.cpp
extern/bullet/Bullet/NarrowPhaseCollision/GjkConvexCast.h
extern/bullet/Bullet/NarrowPhaseCollision/GjkPairDetector.cpp
extern/bullet/Bullet/NarrowPhaseCollision/GjkPairDetector.h
extern/bullet/Bullet/NarrowPhaseCollision/ManifoldContactAddResult.cpp
extern/bullet/Bullet/NarrowPhaseCollision/ManifoldContactAddResult.h
extern/bullet/Bullet/NarrowPhaseCollision/ManifoldPoint.h
extern/bullet/Bullet/NarrowPhaseCollision/MinkowskiPenetrationDepthSolver.cpp
extern/bullet/Bullet/NarrowPhaseCollision/MinkowskiPenetrationDepthSolver.h
extern/bullet/Bullet/NarrowPhaseCollision/PersistentManifold.cpp
extern/bullet/Bullet/NarrowPhaseCollision/PersistentManifold.h
extern/bullet/Bullet/NarrowPhaseCollision/PointCollector.h
extern/bullet/Bullet/NarrowPhaseCollision/RaycastCallback.cpp
extern/bullet/Bullet/NarrowPhaseCollision/RaycastCallback.h
extern/bullet/Bullet/NarrowPhaseCollision/SimplexSolverInterface.h
extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.cpp
extern/bullet/Bullet/NarrowPhaseCollision/SubSimplexConvexCast.h
extern/bullet/Bullet/NarrowPhaseCollision/VoronoiSimplexSolver.cpp
extern/bullet/Bullet/NarrowPhaseCollision/VoronoiSimplexSolver.h
extern/bullet/BulletDynamics/BulletDynamics.dsp
extern/bullet/BulletDynamics/BulletDynamics_vc7.vcproj
extern/bullet/BulletDynamics/BulletDynamics_vc8.vcproj
extern/bullet/BulletDynamics/ConstraintSolver/ConstraintSolver.h
extern/bullet/BulletDynamics/ConstraintSolver/ContactConstraint.cpp
extern/bullet/BulletDynamics/ConstraintSolver/ContactConstraint.h
extern/bullet/BulletDynamics/ConstraintSolver/ContactSolverInfo.h
extern/bullet/BulletDynamics/ConstraintSolver/HingeConstraint.cpp [new file with mode: 0644]
extern/bullet/BulletDynamics/ConstraintSolver/HingeConstraint.h [new file with mode: 0644]
extern/bullet/BulletDynamics/ConstraintSolver/JacobianEntry.h
extern/bullet/BulletDynamics/ConstraintSolver/OdeConstraintSolver.cpp
extern/bullet/BulletDynamics/ConstraintSolver/OdeConstraintSolver.h
extern/bullet/BulletDynamics/ConstraintSolver/Point2PointConstraint.cpp
extern/bullet/BulletDynamics/ConstraintSolver/Point2PointConstraint.h
extern/bullet/BulletDynamics/ConstraintSolver/SimpleConstraintSolver.cpp
extern/bullet/BulletDynamics/ConstraintSolver/SimpleConstraintSolver.h
extern/bullet/BulletDynamics/ConstraintSolver/Solve2LinearConstraint.cpp
extern/bullet/BulletDynamics/ConstraintSolver/Solve2LinearConstraint.h
extern/bullet/BulletDynamics/ConstraintSolver/SorLcp.cpp
extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.cpp [new file with mode: 0644]
extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h
extern/bullet/BulletDynamics/Dynamics/BU_Joint.cpp
extern/bullet/BulletDynamics/Dynamics/BU_Joint.h
extern/bullet/BulletDynamics/Dynamics/ContactJoint.cpp
extern/bullet/BulletDynamics/Dynamics/ContactJoint.h
extern/bullet/BulletDynamics/Dynamics/MassProps.h
extern/bullet/BulletDynamics/Dynamics/RigidBody.cpp
extern/bullet/BulletDynamics/Dynamics/RigidBody.h
extern/bullet/BulletDynamics/Vehicle/RaycastVehicle.h
extern/bullet/BulletLicense.txt
extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.cpp
extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.h
extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp
extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.h
extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysics_vc8.vcproj
extern/bullet/LinearMath/AabbUtil2.h
extern/bullet/LinearMath/GEN_List.h
extern/bullet/LinearMath/GEN_MinMax.h
extern/bullet/LinearMath/GEN_random.h
extern/bullet/LinearMath/IDebugDraw.h
extern/bullet/LinearMath/SimdMatrix3x3.h
extern/bullet/LinearMath/SimdMinMax.h
extern/bullet/LinearMath/SimdPoint3.h
extern/bullet/LinearMath/SimdQuadWord.h
extern/bullet/LinearMath/SimdQuaternion.h
extern/bullet/LinearMath/SimdScalar.h
extern/bullet/LinearMath/SimdTransform.h
extern/bullet/LinearMath/SimdTransformUtil.h
extern/bullet/LinearMath/SimdVector3.h
source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp

diff --git a/extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.cpp b/extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.cpp
new file mode 100644 (file)
index 0000000..52410b2
--- /dev/null
@@ -0,0 +1,472 @@
+
+//Bullet Continuous Collision Detection and Physics Library
+//Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+
+//
+// AxisSweep3
+//
+// Copyright (c) 2006 Simon Hobbs
+//
+// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution.
+#include "AxisSweep3.h"
+
+#include <assert.h>
+
+BroadphaseProxy*       AxisSweep3::CreateProxy(  const SimdVector3& min,  const SimdVector3& max,int shapeType,void* userPtr )
+{
+               unsigned short handleId = AddHandle(min,max, userPtr);
+               Handle* handle = GetHandle(handleId);
+               return handle;
+}
+
+void   AxisSweep3::DestroyProxy(BroadphaseProxy* proxy)
+{
+       Handle* handle = static_cast<Handle*>(proxy);
+       RemoveHandle(handle->m_handleId);
+}
+
+void   AxisSweep3::SetAabb(BroadphaseProxy* proxy,const SimdVector3& aabbMin,const SimdVector3& aabbMax)
+{
+       Handle* handle = static_cast<Handle*>(proxy);
+       UpdateHandle(handle->m_handleId,aabbMin,aabbMax);
+}
+
+
+
+
+
+
+AxisSweep3::AxisSweep3(const SimdPoint3& worldAabbMin,const SimdPoint3& worldAabbMax, int maxHandles, int maxOverlaps)
+{
+       //assert(bounds.HasVolume());
+
+       // 1 handle is reserved as sentinel
+       assert(maxHandles > 1 && maxHandles < 32767);
+
+       // doesn't need this limit right now, but I may want to use unsigned short indexes into overlaps array
+       assert(maxOverlaps > 0 && maxOverlaps < 65536);
+
+       // init bounds
+       m_worldAabbMin = worldAabbMin;
+       m_worldAabbMax = worldAabbMax;
+
+       SimdVector3 aabbSize = m_worldAabbMax - m_worldAabbMin;
+
+       m_quantize = SimdVector3(65535.0f,65535.0f,65535.0f) / aabbSize;
+
+       // allocate handles buffer and put all handles on free list
+       m_pHandles = new Handle[maxHandles];
+       m_maxHandles = maxHandles;
+       m_numHandles = 0;
+
+       // handle 0 is reserved as the null index, and is also used as the sentinel
+       m_firstFreeHandle = 1;
+       for (int i = m_firstFreeHandle; i < maxHandles; i++)
+               m_pHandles[i].SetNextFree(i + 1);
+       m_pHandles[maxHandles - 1].SetNextFree(0);
+
+       // allocate edge buffers
+       for (int i = 0; i < 3; i++)
+               m_pEdges[i] = new Edge[maxHandles * 2];
+
+       //removed overlap management
+
+       // make boundary sentinels
+       
+       m_pHandles[0].m_clientObject = 0;
+
+       for (int axis = 0; axis < 3; axis++)
+       {
+               m_pHandles[0].m_minEdges[axis] = 0;
+               m_pHandles[0].m_maxEdges[axis] = 1;
+
+               m_pEdges[axis][0].m_pos = 0;
+               m_pEdges[axis][0].m_handle = 0;
+               m_pEdges[axis][1].m_pos = 0xffff;
+               m_pEdges[axis][1].m_handle = 0;
+       }
+}
+
+AxisSweep3::~AxisSweep3()
+{
+       
+       for (int i = 2; i >= 0; i--)
+               delete[] m_pEdges[i];
+       delete[] m_pHandles;
+}
+
+void AxisSweep3::Quantize(unsigned short* out, const SimdPoint3& point, int isMax) const
+{
+       SimdPoint3 clampedPoint(point);
+       /*
+       if (isMax)
+               clampedPoint += SimdVector3(10,10,10);
+       else
+       {
+               clampedPoint -= SimdVector3(10,10,10);
+       }
+       */
+
+
+       clampedPoint.setMax(m_worldAabbMin);
+       clampedPoint.setMin(m_worldAabbMax);
+
+       SimdVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize;
+       out[0] = (unsigned short)(((int)v.getX() & 0xfffe) | isMax);
+       out[1] = (unsigned short)(((int)v.getY() & 0xfffe) | isMax);
+       out[2] = (unsigned short)(((int)v.getZ() & 0xfffe) | isMax);
+}
+
+
+
+unsigned short AxisSweep3::AllocHandle()
+{
+       assert(m_firstFreeHandle);
+
+       unsigned short handle = m_firstFreeHandle;
+       m_firstFreeHandle = GetHandle(handle)->GetNextFree();
+       m_numHandles++;
+
+       return handle;
+}
+
+void AxisSweep3::FreeHandle(unsigned short handle)
+{
+       assert(handle > 0 && handle < m_maxHandles);
+
+       GetHandle(handle)->SetNextFree(m_firstFreeHandle);
+       m_firstFreeHandle = handle;
+
+       m_numHandles--;
+}
+
+
+
+unsigned short AxisSweep3::AddHandle(const SimdPoint3& aabbMin,const SimdPoint3& aabbMax, void* pOwner)
+{
+       // quantize the bounds
+       unsigned short min[3], max[3];
+       Quantize(min, aabbMin, 0);
+       Quantize(max, aabbMax, 1);
+
+       // allocate a handle
+       unsigned short handle = AllocHandle();
+       Handle* pHandle = GetHandle(handle);
+       pHandle->m_handleId = handle;
+       //pHandle->m_pOverlaps = 0;
+       pHandle->m_clientObject = pOwner;
+
+       // compute current limit of edge arrays
+       int limit = m_numHandles * 2;
+
+       // insert new edges just inside the max boundary edge
+       for (int axis = 0; axis < 3; axis++)
+       {
+               m_pHandles[0].m_maxEdges[axis] += 2;
+
+               m_pEdges[axis][limit + 1] = m_pEdges[axis][limit - 1];
+
+               m_pEdges[axis][limit - 1].m_pos = min[axis];
+               m_pEdges[axis][limit - 1].m_handle = handle;
+
+               m_pEdges[axis][limit].m_pos = max[axis];
+               m_pEdges[axis][limit].m_handle = handle;
+
+               pHandle->m_minEdges[axis] = limit - 1;
+               pHandle->m_maxEdges[axis] = limit;
+       }
+
+       // now sort the new edges to their correct position
+       SortMinDown(0, pHandle->m_minEdges[0], false);
+       SortMaxDown(0, pHandle->m_maxEdges[0], false);
+       SortMinDown(1, pHandle->m_minEdges[1], false);
+       SortMaxDown(1, pHandle->m_maxEdges[1], false);
+       SortMinDown(2, pHandle->m_minEdges[2], true);
+       SortMaxDown(2, pHandle->m_maxEdges[2], true);
+
+       //PrintAxis(1);
+
+       return handle;
+}
+
+void AxisSweep3::RemoveHandle(unsigned short handle)
+{
+       Handle* pHandle = GetHandle(handle);
+
+       RemoveOverlappingPairsContainingProxy(pHandle);
+
+       
+
+//     assert(false);  // TODO
+       // compute current limit of edge arrays
+/*     int limit = m_numHandles * 2;
+
+       // remove the edges by sorting them up to the end of the list
+       for (int axis = 0; axis < 3; axis++)
+       {
+               Edge* pEdges = m_pEdges[axis];
+
+               int i = pHandle->m_minEdges[axis];
+               int max = pHandle->m_maxEdges[axis];
+
+               while (i < max)
+                       pEdges[i - 1]
+       }
+*/
+       // free the handle
+       FreeHandle(handle);
+}
+
+bool AxisSweep3::TestOverlap(int ignoreAxis,const Handle* pHandleA, const Handle* pHandleB)
+{
+       //optimization 1: check the array index (memory address), instead of the m_pos
+
+       for (int axis = 0; axis < 3; axis++)
+       { 
+               if (axis != ignoreAxis)
+               {
+                       if (pHandleA->m_maxEdges[axis] < pHandleB->m_minEdges[axis] || 
+                               pHandleB->m_maxEdges[axis] < pHandleA->m_minEdges[axis]) 
+                       { 
+                               return false; 
+                       } 
+               }
+       } 
+
+       //optimization 2: only 2 axis need to be tested
+
+       /*for (int axis = 0; axis < 3; axis++)
+       {
+               if (m_pEdges[axis][pHandleA->m_maxEdges[axis]].m_pos < m_pEdges[axis][pHandleB->m_minEdges[axis]].m_pos ||
+                       m_pEdges[axis][pHandleB->m_maxEdges[axis]].m_pos < m_pEdges[axis][pHandleA->m_minEdges[axis]].m_pos)
+               {
+                       return false;
+               }
+       }
+       */
+
+       return true;
+}
+
+void AxisSweep3::UpdateHandle(unsigned short handle, const SimdPoint3& aabbMin,const SimdPoint3& aabbMax)
+{
+//     assert(bounds.IsFinite());
+       //assert(bounds.HasVolume());
+
+       Handle* pHandle = GetHandle(handle);
+
+       // quantize the new bounds
+       unsigned short min[3], max[3];
+       Quantize(min, aabbMin, 0);
+       Quantize(max, aabbMax, 1);
+
+       // update changed edges
+       for (int axis = 0; axis < 3; axis++)
+       {
+               unsigned short emin = pHandle->m_minEdges[axis];
+               unsigned short emax = pHandle->m_maxEdges[axis];
+
+               int dmin = (int)min[axis] - (int)m_pEdges[axis][emin].m_pos;
+               int dmax = (int)max[axis] - (int)m_pEdges[axis][emax].m_pos;
+
+               m_pEdges[axis][emin].m_pos = min[axis];
+               m_pEdges[axis][emax].m_pos = max[axis];
+
+               // expand (only adds overlaps)
+               if (dmin < 0)
+                       SortMinDown(axis, emin);
+
+               if (dmax > 0)
+                       SortMaxUp(axis, emax);
+
+               // shrink (only removes overlaps)
+               if (dmin > 0)
+                       SortMinUp(axis, emin);
+
+               if (dmax < 0)
+                       SortMaxDown(axis, emax);
+       }
+
+       //PrintAxis(1);
+}
+
+// sorting a min edge downwards can only ever *add* overlaps
+void AxisSweep3::SortMinDown(int axis, unsigned short edge, bool updateOverlaps)
+{
+       Edge* pEdge = m_pEdges[axis] + edge;
+       Edge* pPrev = pEdge - 1;
+       Handle* pHandleEdge = GetHandle(pEdge->m_handle);
+
+       while (pEdge->m_pos < pPrev->m_pos)
+       {
+               Handle* pHandlePrev = GetHandle(pPrev->m_handle);
+
+               if (pPrev->IsMax())
+               {
+                       // if previous edge is a maximum check the bounds and add an overlap if necessary
+                       if (updateOverlaps && TestOverlap(axis,pHandleEdge, pHandlePrev))
+                       {
+                               AddOverlappingPair(pHandleEdge,pHandlePrev);
+
+                               //AddOverlap(pEdge->m_handle, pPrev->m_handle);
+
+                       }
+
+                       // update edge reference in other handle
+                       pHandlePrev->m_maxEdges[axis]++;
+               }
+               else
+                       pHandlePrev->m_minEdges[axis]++;
+
+               pHandleEdge->m_minEdges[axis]--;
+
+               // swap the edges
+               Edge swap = *pEdge;
+               *pEdge = *pPrev;
+               *pPrev = swap;
+
+               // decrement
+               pEdge--;
+               pPrev--;
+       }
+}
+
+// sorting a min edge upwards can only ever *remove* overlaps
+void AxisSweep3::SortMinUp(int axis, unsigned short edge, bool updateOverlaps)
+{
+       Edge* pEdge = m_pEdges[axis] + edge;
+       Edge* pNext = pEdge + 1;
+       Handle* pHandleEdge = GetHandle(pEdge->m_handle);
+
+       while (pEdge->m_pos > pNext->m_pos)
+       {
+               Handle* pHandleNext = GetHandle(pNext->m_handle);
+
+               if (pNext->IsMax())
+               {
+                       // if next edge is maximum remove any overlap between the two handles
+                       if (updateOverlaps)
+                       {
+                               Handle* handle0 = GetHandle(pEdge->m_handle);
+                               Handle* handle1 = GetHandle(pNext->m_handle);
+                               BroadphasePair* pair = FindPair(handle0,handle1);
+                               //assert(pair);
+                               if (pair)
+                               {
+                                       RemoveOverlappingPair(*pair);
+                               }
+                       }
+
+                       // update edge reference in other handle
+                       pHandleNext->m_maxEdges[axis]--;
+               }
+               else
+                       pHandleNext->m_minEdges[axis]--;
+
+               pHandleEdge->m_minEdges[axis]++;
+
+               // swap the edges
+               Edge swap = *pEdge;
+               *pEdge = *pNext;
+               *pNext = swap;
+
+               // increment
+               pEdge++;
+               pNext++;
+       }
+}
+
+// sorting a max edge downwards can only ever *remove* overlaps
+void AxisSweep3::SortMaxDown(int axis, unsigned short edge, bool updateOverlaps)
+{
+       Edge* pEdge = m_pEdges[axis] + edge;
+       Edge* pPrev = pEdge - 1;
+       Handle* pHandleEdge = GetHandle(pEdge->m_handle);
+
+       while (pEdge->m_pos < pPrev->m_pos)
+       {
+               Handle* pHandlePrev = GetHandle(pPrev->m_handle);
+
+               if (!pPrev->IsMax())
+               {
+                       // if previous edge was a minimum remove any overlap between the two handles
+                       if (updateOverlaps)
+                       {
+                               Handle* handle0 = GetHandle(pEdge->m_handle);
+                               Handle* handle1 = GetHandle(pPrev->m_handle);
+                               BroadphasePair* pair = FindPair(handle0,handle1);
+                               //assert(pair);
+
+                               if (pair)
+                               {
+                                       RemoveOverlappingPair(*pair);
+                               }
+                       }
+
+                       // update edge reference in other handle
+                       pHandlePrev->m_minEdges[axis]++;;
+               }
+               else
+                       pHandlePrev->m_maxEdges[axis]++;
+
+               pHandleEdge->m_maxEdges[axis]--;
+
+               // swap the edges
+               Edge swap = *pEdge;
+               *pEdge = *pPrev;
+               *pPrev = swap;
+
+               // decrement
+               pEdge--;
+               pPrev--;
+       }
+}
+
+// sorting a max edge upwards can only ever *add* overlaps
+void AxisSweep3::SortMaxUp(int axis, unsigned short edge, bool updateOverlaps)
+{
+       Edge* pEdge = m_pEdges[axis] + edge;
+       Edge* pNext = pEdge + 1;
+       Handle* pHandleEdge = GetHandle(pEdge->m_handle);
+
+       while (pEdge->m_pos > pNext->m_pos)
+       {
+               Handle* pHandleNext = GetHandle(pNext->m_handle);
+
+               if (!pNext->IsMax())
+               {
+                       // if next edge is a minimum check the bounds and add an overlap if necessary
+                       if (updateOverlaps && TestOverlap(axis, pHandleEdge, pHandleNext))
+                       {
+                               Handle* handle0 = GetHandle(pEdge->m_handle);
+                               Handle* handle1 = GetHandle(pNext->m_handle);
+                               AddOverlappingPair(handle0,handle1);
+                       }
+
+                       // update edge reference in other handle
+                       pHandleNext->m_minEdges[axis]--;
+               }
+               else
+                       pHandleNext->m_maxEdges[axis]--;
+
+               pHandleEdge->m_maxEdges[axis]++;
+
+               // swap the edges
+               Edge swap = *pEdge;
+               *pEdge = *pNext;
+               *pNext = swap;
+
+               // increment
+               pEdge++;
+               pNext++;
+       }
+}
diff --git a/extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.h b/extern/bullet/Bullet/BroadphaseCollision/AxisSweep3.h
new file mode 100644 (file)
index 0000000..b9227fe
--- /dev/null
@@ -0,0 +1,111 @@
+//Bullet Continuous Collision Detection and Physics Library
+//Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+//
+// AxisSweep3.h
+//
+// Copyright (c) 2006 Simon Hobbs
+//
+// 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 AXIS_SWEEP_3_H
+#define AXIS_SWEEP_3_H
+
+#include "SimdPoint3.h"
+#include "SimdVector3.h"
+#include "SimpleBroadphase.h"
+#include "BroadphaseProxy.h"
+
+class AxisSweep3 : public SimpleBroadphase
+{
+
+public:
+       
+
+       class Edge
+       {
+       public:
+               unsigned short m_pos;                   // low bit is min/max
+               unsigned short m_handle;
+
+               unsigned short IsMax() const {return m_pos & 1;}
+       };
+
+public:
+       class Handle : public BroadphaseProxy
+       {
+       public:
+               // indexes into the edge arrays
+               unsigned short m_minEdges[3], m_maxEdges[3];            // 6 * 2 = 12
+               unsigned short m_handleId;
+               unsigned short m_pad;
+               
+               //void* m_pOwner; this is now in BroadphaseProxy.m_clientObject
+       
+               inline void SetNextFree(unsigned short next) {m_minEdges[0] = next;}
+               inline unsigned short GetNextFree() const {return m_minEdges[0];}
+       };              // 24 bytes + 24 for Edge structures = 44 bytes total per entry
+
+       
+private:
+       SimdPoint3 m_worldAabbMin;                                              // overall system bounds
+       SimdPoint3 m_worldAabbMax;                                              // overall system bounds
+
+       SimdVector3 m_quantize;                                         // scaling factor for quantization
+
+       int m_numHandles;                                               // number of active handles
+       int m_maxHandles;                                               // max number of handles
+       Handle* m_pHandles;                                             // handles pool
+       unsigned short m_firstFreeHandle;               // free handles list
+
+       Edge* m_pEdges[3];                                              // edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries)
+
+
+       // allocation/deallocation
+       unsigned short AllocHandle();
+       void FreeHandle(unsigned short handle);
+       
+
+       bool TestOverlap(int ignoreAxis,const Handle* pHandleA, const Handle* pHandleB);
+
+       //Overlap* AddOverlap(unsigned short handleA, unsigned short handleB);
+       //void RemoveOverlap(unsigned short handleA, unsigned short handleB);
+
+       void Quantize(unsigned short* out, const SimdPoint3& point, int isMax) const;
+
+       void SortMinDown(int axis, unsigned short edge, bool updateOverlaps = true);
+       void SortMinUp(int axis, unsigned short edge, bool updateOverlaps = true);
+       void SortMaxDown(int axis, unsigned short edge, bool updateOverlaps = true);
+       void SortMaxUp(int axis, unsigned short edge, bool updateOverlaps = true);
+
+public:
+       AxisSweep3(const SimdPoint3& worldAabbMin,const SimdPoint3& worldAabbMax, int maxHandles = 1024, int maxOverlaps = 8192);
+       ~AxisSweep3();
+
+       virtual void    RefreshOverlappingPairs()
+       {
+               //this is replace by sweep and prune
+       }
+       
+       unsigned short AddHandle(const SimdPoint3& aabbMin,const SimdPoint3& aabbMax, void* pOwner);
+       void RemoveHandle(unsigned short handle);
+       void UpdateHandle(unsigned short handle, const SimdPoint3& aabbMin,const SimdPoint3& aabbMax);
+       inline Handle* GetHandle(unsigned short index) const {return m_pHandles + index;}
+
+
+       //Broadphase Interface
+       virtual BroadphaseProxy*        CreateProxy(  const SimdVector3& min,  const SimdVector3& max,int shapeType,void* userPtr );
+       virtual void    DestroyProxy(BroadphaseProxy* proxy);
+       virtual void    SetAabb(BroadphaseProxy* proxy,const SimdVector3& aabbMin,const SimdVector3& aabbMax);
+
+};
+
+#endif //AXIS_SWEEP_3_H
index 022faecff5db5d059abeb73aadcd1b5ee653952e..d4ac5d0b624b99a93f93aa5d1ea639ef264331a6 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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                BROADPHASE_INTERFACE_H
 #define        BROADPHASE_INTERFACE_H
 
index 4be503582563160d2a972dde432097d7d518adf2..61bcdc4b61078dc6aa252f72ce535d5889fdefc9 100644 (file)
@@ -1,12 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "BroadphaseProxy.h"
 
index da0c1f662c09a2f296764fca8d8662951170164d..c50c4d42c7f0828dc328623bcf58a1185fe89d62 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BROADPHASE_PROXY_H
 #define BROADPHASE_PROXY_H
 
@@ -50,32 +55,13 @@ struct BroadphaseProxy
        void*   m_clientObject;
 
 
-       BroadphaseProxy() :m_clientObject(0),m_clientObjectType(-1){}
+       BroadphaseProxy() :m_clientObject(0){}
        BroadphaseProxy(int shapeType,void* userPtr)
-               :m_clientObject(userPtr),
-               m_clientObjectType(shapeType)
+               :m_clientObject(userPtr)
+               //m_clientObjectType(shapeType)
        {
        }
-
-       
-       int GetClientObjectType ( ) const { return m_clientObjectType;}
-
        
-       void    SetClientObjectType( int type ) { 
-               m_clientObjectType = type; 
-       }
-
-       bool IsConvexShape()
-       {
-               return (GetClientObjectType () < TRIANGLE_MESH_SHAPE_PROXYTYPE);
-       }
-       bool IsConcaveShape()
-       {
-               return (GetClientObjectType() > CONCAVE_SHAPES_START_HERE);
-       }
-
-protected:
-       int                      m_clientObjectType;
 };
 
 class CollisionAlgorithm;
index 1ef60341813e71ee4f230dfe544297f6d4d4ecc1..d63966c83cf193065b6abfd5736eb7bfcaca09bf 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "CollisionAlgorithm.h"
 #include "Dispatcher.h"
 
index 7981b41acf28cac7f77f4e0ebf16d3925b77f9cf..f4ef0717b4a6b2978bf5c192a9916ecdc7850663 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 COLLISION_ALGORITHM_H
 #define COLLISION_ALGORITHM_H
 
index 7923e7a40ee4e3d986b5fc721aadd7b029a5fbf0..a73c7eac39e3b587cf63235ec7010343fd08602d 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "Dispatcher.h"
 
 Dispatcher::~Dispatcher()
index 202aa6a41e882574ce4cdf0b1648baf391b3bd4e..6e02556d562fb8b6258cca91632de82425888541 100644 (file)
@@ -1,19 +1,26 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 _DISPATCHER_H
 #define _DISPATCHER_H
 
 class CollisionAlgorithm;
 struct BroadphaseProxy;
 class RigidBody;
+struct CollisionObject;
+class ManifoldResult;
 
 enum CollisionDispatcherId
 {
@@ -67,6 +74,9 @@ public:
 
        virtual bool    NeedsCollision(BroadphaseProxy& proxy0,BroadphaseProxy& proxy1) = 0;
 
+       virtual ManifoldResult* GetNewManifoldResult(CollisionObject* obj0,CollisionObject* obj1,PersistentManifold* manifold) =0;
+
+       virtual void    ReleaseManifoldResult(ManifoldResult*)=0;
 
 
 };
index 0cb282f4e0fd6587dbe9e8f74274ab43668899cd..4b3d0c0745aa082b35439e94b398784fa883084a 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "SimpleBroadphase.h"
 #include "BroadphaseCollision/Dispatcher.h"
 #include "BroadphaseCollision/CollisionAlgorithm.h"
 #include <vector>
 #include "CollisionShapes/CollisionMargin.h"
 
-SimpleBroadphase::SimpleBroadphase()
-:  m_firstFreeProxy(0),
-  m_numProxies(0),
- m_blockedForChanges(false),
- m_NumOverlapBroadphasePair(0)
+SimpleBroadphase::SimpleBroadphase(int maxProxies,int maxOverlap)
+       :m_firstFreeProxy(0),
+       m_numProxies(0),
+       m_blockedForChanges(false),
+       m_NumOverlapBroadphasePair(0),
+       m_maxProxies(maxProxies),
+       m_maxOverlap(maxOverlap)
 {
+
+       m_proxies = new SimpleBroadphaseProxy[maxProxies];
+       m_freeProxies = new int[maxProxies];
+       m_pProxies = new BroadphaseProxy*[maxProxies];
+       m_OverlappingPairs = new BroadphasePair[maxOverlap];
+
+
        int i;
-       for (i=0;i<SIMPLE_MAX_PROXIES;i++)
+       for (i=0;i<m_maxProxies;i++)
        {
                m_freeProxies[i] = i;
        }
@@ -33,6 +47,11 @@ SimpleBroadphase::SimpleBroadphase()
 
 SimpleBroadphase::~SimpleBroadphase()
 {
+       delete[] m_proxies;
+       delete []m_freeProxies;
+       delete [] m_pProxies;
+       delete [] m_OverlappingPairs;
+
        /*int i;
        for (i=m_numProxies-1;i>=0;i--)
        {
@@ -45,7 +64,7 @@ SimpleBroadphase::~SimpleBroadphase()
 
 BroadphaseProxy*       SimpleBroadphase::CreateProxy(  const SimdVector3& min,  const SimdVector3& max,int shapeType,void* userPtr)
 {
-       if (m_numProxies >= SIMPLE_MAX_PROXIES)
+       if (m_numProxies >= m_maxProxies)
        {
                assert(0);
                return 0; //should never happen, but don't let the game crash ;-)
@@ -61,16 +80,10 @@ BroadphaseProxy*    SimpleBroadphase::CreateProxy(  const SimdVector3& min,  const
 
        return proxy;
 }
-void   SimpleBroadphase::DestroyProxy(BroadphaseProxy* proxy)
-{
-               
-               int i;
-               
-               BroadphaseProxy* proxy1 = &m_proxies[0];
-       
-               int index = proxy - proxy1;
-               m_freeProxies[--m_firstFreeProxy] = index;
 
+void   SimpleBroadphase::RemoveOverlappingPairsContainingProxy(BroadphaseProxy* proxy)
+{
+       int i;
                for ( i=m_NumOverlapBroadphasePair-1;i>=0;i--)
                {
                        BroadphasePair& pair = m_OverlappingPairs[i];
@@ -80,6 +93,20 @@ void SimpleBroadphase::DestroyProxy(BroadphaseProxy* proxy)
                                RemoveOverlappingPair(pair);
                        }
                }
+}
+
+void   SimpleBroadphase::DestroyProxy(BroadphaseProxy* proxy)
+{
+               
+               int i;
+               
+               BroadphaseProxy* proxy1 = &m_proxies[0];
+       
+               int index = proxy - proxy1;
+               m_freeProxies[--m_firstFreeProxy] = index;
+
+               RemoveOverlappingPairsContainingProxy(proxy);
+
                
                for (i=0;i<m_numProxies;i++)
                {
@@ -152,7 +179,7 @@ void        SimpleBroadphase::AddOverlappingPair(BroadphaseProxy* proxy0,BroadphaseProx
                m_OverlappingPairs[m_NumOverlapBroadphasePair].m_algorithms[i] = 0;
        }
 
-       if (m_NumOverlapBroadphasePair >= SIMPLE_MAX_OVERLAP)
+       if (m_NumOverlapBroadphasePair >= m_maxOverlap)
        {
                printf("Error: too many overlapping objects: m_NumOverlapBroadphasePair: %d\n",m_NumOverlapBroadphasePair);
                assert(0);
@@ -161,9 +188,10 @@ void       SimpleBroadphase::AddOverlappingPair(BroadphaseProxy* proxy0,BroadphaseProx
        m_NumOverlapBroadphasePair++;
 }
        
-bool   SimpleBroadphase::FindPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1)
+BroadphasePair*        SimpleBroadphase::FindPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1)
 {
-       bool found = false;
+       BroadphasePair* foundPair = 0;
+
        int i;
        for (i=m_NumOverlapBroadphasePair-1;i>=0;i--)
        {
@@ -171,12 +199,12 @@ bool      SimpleBroadphase::FindPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1)
                if (((pair.m_pProxy0 == proxy0) && (pair.m_pProxy1 == proxy1)) ||
                        ((pair.m_pProxy0 == proxy1) && (pair.m_pProxy1 == proxy0)))
                {
-                       found = true;
-                       break;
+                       foundPair = &pair;
+                       return foundPair;
                }
        }       
 
-       return found;
+       return foundPair;
 }
 void   SimpleBroadphase::RemoveOverlappingPair(BroadphasePair& pair)
 {
@@ -231,8 +259,7 @@ void        SimpleBroadphase::RefreshOverlappingPairs()
                }
        }
 
-       //BroadphasePair        m_OverlappingPairs[SIMPLE_MAX_OVERLAP];
-       //int   m_NumOverlapBroadphasePair;
+       
 
 }
 
index ee0873a9a1ec0e0bd461f812ad73a2d6b2d20049..4de7bb6c9d4e10cf28e07fa87693228bb618b5ab 100644 (file)
@@ -1,18 +1,23 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 SIMPLE_BROADPHASE_H
 #define SIMPLE_BROADPHASE_H
 
-#define SIMPLE_MAX_PROXIES 8192
-#define SIMPLE_MAX_OVERLAP 4096
+//#define SIMPLE_MAX_PROXIES 8192
+//#define SIMPLE_MAX_OVERLAP 4096
 
 #include "BroadphaseInterface.h"
 #include "BroadphaseProxy.h"
@@ -38,30 +43,37 @@ struct SimpleBroadphaseProxy : public BroadphaseProxy
 class SimpleBroadphase : public BroadphaseInterface
 {
 
-       SimpleBroadphaseProxy   m_proxies[SIMPLE_MAX_PROXIES];
-       int                             m_freeProxies[SIMPLE_MAX_PROXIES];
+       SimpleBroadphaseProxy*  m_proxies;
+       int*                            m_freeProxies;
        int                             m_firstFreeProxy;
 
-       BroadphaseProxy* m_pProxies[SIMPLE_MAX_PROXIES];
+       BroadphaseProxy** m_pProxies;
        int                             m_numProxies;
 
        //during the dispatch, check that user doesn't destroy/create proxy
        bool            m_blockedForChanges;
 
-       BroadphasePair  m_OverlappingPairs[SIMPLE_MAX_OVERLAP];
+       BroadphasePair* m_OverlappingPairs;
        int     m_NumOverlapBroadphasePair;
 
+       int m_maxProxies;
+       int m_maxOverlap;
        
        SimpleBroadphaseProxy*  GetSimpleProxyFromProxy(BroadphaseProxy* proxy);
 
        bool    AabbOverlap(SimpleBroadphaseProxy* proxy0,SimpleBroadphaseProxy* proxy1);
+
+protected:
        void    RemoveOverlappingPair(BroadphasePair& pair);
        void    CleanOverlappingPair(BroadphasePair& pair);
+
+       void    RemoveOverlappingPairsContainingProxy(BroadphaseProxy* proxy);
+
        void    AddOverlappingPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1);
-       bool    FindPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1);
-       void    RefreshOverlappingPairs();
+       BroadphasePair* FindPair(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1);
+       virtual void    RefreshOverlappingPairs();
 public:
-       SimpleBroadphase();
+       SimpleBroadphase(int maxProxies=4096,int maxOverlap=8192);
        virtual ~SimpleBroadphase();
 
        virtual BroadphaseProxy*        CreateProxy(  const SimdVector3& min,  const SimdVector3& max,int shapeType,void* userPtr);
index dab745810a098c23f449f51b4afcdf0bc3e7708c..933b00fa238ff73e088cbd7723abb73691720b62 100644 (file)
@@ -25,7 +25,7 @@
                                AdditionalIncludeDirectories=".;..\LinearMath"
                                PreprocessorDefinitions="_DEBUG;_LIB;WIN32;BUM_INLINED;USE_ALGEBRAIC"
                                BasicRuntimeChecks="3"
-                               RuntimeLibrary="1"
+                               RuntimeLibrary="3"
                                UsePrecompiledHeader="2"
                                PrecompiledHeaderFile=".\Debug/Bullet.pch"
                                AssemblerListingLocation=".\Debug/"
@@ -77,7 +77,7 @@
                                AdditionalIncludeDirectories=".;..\LinearMath"
                                PreprocessorDefinitions="NDEBUG;_LIB;WIN32;BUM_INLINED;USE_ALGEBRAIC"
                                StringPooling="TRUE"
-                               RuntimeLibrary="0"
+                               RuntimeLibrary="4"
                                EnableFunctionLevelLinking="TRUE"
                                UsePrecompiledHeader="2"
                                PrecompiledHeaderFile=".\Release/Bullet.pch"
                        <Tool
                                Name="VCMIDLTool"/>
                        <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="ECHO Copying header files
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
-
-XCOPY /Y ..\LinearMath\*.h ..\..\..\..\build\msvc_7\extern\bullet\include
-XCOPY /Y ..\Bullet\BroadphaseCollision\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\BroadphaseCollision
-XCOPY /Y ..\Bullet\CollisionShapes\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionShapes
-XCOPY /Y ..\Bullet\NarrowPhaseCollision\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\NarrowPhaseCollision
-
-ECHO Done
-"/>
+                               Name="VCPostBuildEventTool"/>
                        <Tool
                                Name="VCPreBuildEventTool"/>
                        <Tool
@@ -210,6 +197,12 @@ ECHO Done
                        <File
                                RelativePath=".\NarrowPhaseCollision\GjkPairDetector.h">
                        </File>
+                       <File
+                               RelativePath=".\NarrowPhaseCollision\ManifoldContactAddResult.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\NarrowPhaseCollision\ManifoldContactAddResult.h">
+                       </File>
                        <File
                                RelativePath=".\NarrowPhaseCollision\ManifoldPoint.h">
                        </File>
@@ -259,6 +252,12 @@ ECHO Done
                        <File
                                RelativePath=".\CollisionShapes\BoxShape.h">
                        </File>
+                       <File
+                               RelativePath=".\CollisionShapes\BvhTriangleMeshShape.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionShapes\BvhTriangleMeshShape.h">
+                       </File>
                        <File
                                RelativePath=".\CollisionShapes\CollisionShape.cpp">
                        </File>
@@ -283,6 +282,12 @@ ECHO Done
                        <File
                                RelativePath=".\CollisionShapes\ConvexShape.h">
                        </File>
+                       <File
+                               RelativePath=".\CollisionShapes\ConvexTriangleCallback.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionShapes\ConvexTriangleCallback.h">
+                       </File>
                        <File
                                RelativePath=".\CollisionShapes\CylinderShape.cpp">
                        </File>
@@ -301,6 +306,12 @@ ECHO Done
                        <File
                                RelativePath=".\CollisionShapes\MultiSphereShape.h">
                        </File>
+                       <File
+                               RelativePath=".\CollisionShapes\OptimizedBvh.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionShapes\OptimizedBvh.h">
+                       </File>
                        <File
                                RelativePath=".\CollisionShapes\PolyhedralConvexShape.cpp">
                        </File>
@@ -325,9 +336,18 @@ ECHO Done
                        <File
                                RelativePath=".\CollisionShapes\StridingMeshInterface.h">
                        </File>
+                       <File
+                               RelativePath=".\CollisionShapes\TriangleCallback.cpp">
+                       </File>
                        <File
                                RelativePath=".\CollisionShapes\TriangleCallback.h">
                        </File>
+                       <File
+                               RelativePath=".\CollisionShapes\TriangleIndexVertexArray.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionShapes\TriangleIndexVertexArray.h">
+                       </File>
                        <File
                                RelativePath=".\CollisionShapes\TriangleMesh.cpp">
                        </File>
@@ -347,6 +367,12 @@ ECHO Done
                <Filter
                        Name="BroadphaseCollision"
                        Filter="">
+                       <File
+                               RelativePath=".\BroadphaseCollision\AxisSweep3.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\BroadphaseCollision\AxisSweep3.h">
+                       </File>
                        <File
                                RelativePath=".\BroadphaseCollision\BroadPhaseInterface.h">
                        </File>
@@ -363,10 +389,10 @@ ECHO Done
                                RelativePath=".\BroadphaseCollision\CollisionAlgorithm.h">
                        </File>
                        <File
-                               RelativePath=".\BroadphaseCollision\CollisionDispatcher.cpp">
+                               RelativePath=".\BroadphaseCollision\Dispatcher.cpp">
                        </File>
                        <File
-                               RelativePath=".\BroadphaseCollision\CollisionDispatcher.h">
+                               RelativePath=".\BroadphaseCollision\Dispatcher.h">
                        </File>
                        <File
                                RelativePath=".\BroadphaseCollision\SimpleBroadphase.cpp">
@@ -418,6 +444,70 @@ ECHO Done
                                RelativePath="..\LinearMath\SimdVector3.h">
                        </File>
                </Filter>
+               <Filter
+                       Name="CollisionDispatch"
+                       Filter="">
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionDispatcher.cpp">
+                               <FileConfiguration
+                                       Name="Debug|Win32">
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32">
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               ObjectFile="$(IntDir)/$(InputName)1.obj"/>
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionDispatcher.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionObject.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionObject.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionWorld.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionWorld.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ConvexConcaveCollisionAlgorithm.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ConvexConcaveCollisionAlgorithm.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ConvexConvexAlgorithm.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ConvexConvexAlgorithm.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\EmptyCollisionAlgorithm.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\EmptyCollisionAlgorithm.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ManifoldResult.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\ManifoldResult.h">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\UnionFind.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\UnionFind.h">
+                       </File>
+               </Filter>
                <File
                        RelativePath=".\NarrowPhaseCollision\ConvexCast.cpp">
                </File>
index 218a52fdb2f20557d46236c5dc8a6a7fc0815a01..c6a7f31f3a360c9f52018c65d7ad1157d0a39984 100644 (file)
                                RelativePath=".\NarrowPhaseCollision\CollisionMargin.h"
                                >
                        </File>
-                       <File
-                               RelativePath=".\NarrowPhaseCollision\CollisionObject.cpp"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\NarrowPhaseCollision\CollisionObject.h"
-                               >
-                       </File>
                        <File
                                RelativePath=".\NarrowPhaseCollision\ContinuousConvexCollision.cpp"
                                >
                <Filter
                        Name="BroadphaseCollision"
                        >
+                       <File
+                               RelativePath=".\BroadphaseCollision\AxisSweep3.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\BroadphaseCollision\AxisSweep3.h"
+                               >
+                       </File>
                        <File
                                RelativePath=".\BroadphaseCollision\BroadPhaseInterface.h"
                                >
                                RelativePath=".\CollisionDispatch\CollisionDispatcher.h"
                                >
                        </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionObject.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\CollisionDispatch\CollisionObject.h"
+                               >
+                       </File>
                        <File
                                RelativePath=".\CollisionDispatch\CollisionWorld.cpp"
                                >
                                >
                        </File>
                </Filter>
+               <File
+                       RelativePath=".\VTune\Bullet3ContinuousCollision.vpj"
+                       >
+               </File>
                <File
                        RelativePath=".\CollisionShapes\BvhTriangleMeshShape.cpp"
                        >
index cd2da11652297ffcf82c1b8abfa84ea1e8d86667..7981ef252e45110fa93825f5b7002fc72e8f79ce 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "CollisionDispatcher.h"
 
 
@@ -16,8 +21,8 @@
 #include "CollisionDispatch/ConvexConvexAlgorithm.h"
 #include "CollisionDispatch/EmptyCollisionAlgorithm.h"
 #include "CollisionDispatch/ConvexConcaveCollisionAlgorithm.h"
-
-#include "NarrowPhaseCollision/CollisionObject.h"
+#include "CollisionShapes/CollisionShape.h"
+#include "CollisionDispatch/CollisionObject.h"
 #include <algorithm>
 
 void CollisionDispatcher::FindUnions()
@@ -46,6 +51,7 @@ void CollisionDispatcher::FindUnions()
        
 CollisionDispatcher::CollisionDispatcher (): 
        m_useIslands(true),
+               m_defaultManifoldResult(0,0,0),
                m_count(0)
 {
        int i;
@@ -95,9 +101,6 @@ void CollisionDispatcher::ReleaseManifold(PersistentManifold* manifold)
 //
 void CollisionDispatcher::BuildAndProcessIslands(int numBodies, IslandCallback* callback)
 {
-       int i;
-
-
        for (int islandId=0;islandId<numBodies;islandId++)
        {
 
@@ -107,7 +110,7 @@ void CollisionDispatcher::BuildAndProcessIslands(int numBodies, IslandCallback*
 
                bool allSleeping = true;
 
-               for (i=0;i<GetNumManifolds();i++)
+               for (int i=0;i<GetNumManifolds();i++)
                {
                         PersistentManifold* manifold = this->GetManifoldByIndexInternal(i);
                        if ((((CollisionObject*)manifold->GetBody0()) && ((CollisionObject*)manifold->GetBody0())->m_islandTag1 == (islandId)) ||
@@ -131,7 +134,7 @@ void CollisionDispatcher::BuildAndProcessIslands(int numBodies, IslandCallback*
                if (allSleeping)
                {
                        //tag all as 'ISLAND_SLEEPING'
-                       for (i=0;i<islandmanifold.size();i++)
+                       for (size_t i=0;i<islandmanifold.size();i++)
                        {
                                 PersistentManifold* manifold = islandmanifold[i];
                                if (((CollisionObject*)manifold->GetBody0()))   
@@ -148,7 +151,7 @@ void CollisionDispatcher::BuildAndProcessIslands(int numBodies, IslandCallback*
                {
 
                        //tag all as 'ISLAND_SLEEPING'
-                       for (i=0;i<islandmanifold.size();i++)
+                       for (size_t i=0;i<islandmanifold.size();i++)
                        {
                                 PersistentManifold* manifold = islandmanifold[i];
                                 CollisionObject* body0 = (CollisionObject*)manifold->GetBody0();
@@ -182,21 +185,23 @@ void CollisionDispatcher::BuildAndProcessIslands(int numBodies, IslandCallback*
 CollisionAlgorithm* CollisionDispatcher::InternalFindAlgorithm(BroadphaseProxy& proxy0,BroadphaseProxy& proxy1)
 {
        m_count++;
-       
+       CollisionObject* body0 = (CollisionObject*)proxy0.m_clientObject;
+       CollisionObject* body1 = (CollisionObject*)proxy1.m_clientObject;
+
        CollisionAlgorithmConstructionInfo ci;
        ci.m_dispatcher = this;
        
-       if (proxy0.IsConvexShape() && proxy1.IsConvexShape() )
+       if (body0->m_collisionShape->IsConvex() && body1->m_collisionShape->IsConvex() )
        {
                return new ConvexConvexAlgorithm(0,ci,&proxy0,&proxy1);                 
        }
 
-       if (proxy0.IsConvexShape() && proxy1.IsConcaveShape())
+       if (body0->m_collisionShape->IsConvex() && body1->m_collisionShape->IsConcave())
        {
                return new ConvexConcaveCollisionAlgorithm(ci,&proxy0,&proxy1);
        }
 
-       if (proxy1.IsConvexShape() && proxy0.IsConcaveShape())
+       if (body1->m_collisionShape->IsConvex() && body0->m_collisionShape->IsConcave())
        {
                return new ConvexConcaveCollisionAlgorithm(ci,&proxy1,&proxy0);
        }
@@ -227,3 +232,17 @@ bool       CollisionDispatcher::NeedsCollision(BroadphaseProxy& proxy0,BroadphaseProxy
        return needsCollision ;
 
 }
+
+///allows the user to get contact point callbacks 
+ManifoldResult*        CollisionDispatcher::GetNewManifoldResult(CollisionObject* obj0,CollisionObject* obj1,PersistentManifold* manifold)
+{
+       //in-place, this prevents parallel dispatching, but just adding a list would fix that.
+       ManifoldResult* manifoldResult = new (&m_defaultManifoldResult) ManifoldResult(obj0,obj1,manifold);
+       return manifoldResult;
+}
+       
+///allows the user to get contact point callbacks 
+void   CollisionDispatcher::ReleaseManifoldResult(ManifoldResult*)
+{
+
+}
index 6c251823599ec5810f3c5e25ef8810833b2dcbf4..5ba41e1c15b49764559e269f3bb561d93b7c84eb 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2002-2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 COLLISION__DISPATCHER_H
 #include "BroadphaseCollision/Dispatcher.h"
 #include "NarrowPhaseCollision/PersistentManifold.h"
 #include "CollisionDispatch/UnionFind.h"
+#include "CollisionDispatch/ManifoldResult.h"
+
 #include "BroadphaseCollision/BroadphaseProxy.h"
 #include <vector>
 
-
 class IDebugDraw;
 
 
@@ -50,6 +55,7 @@ class CollisionDispatcher : public Dispatcher
 
        bool m_useIslands;
        
+       ManifoldResult  m_defaultManifoldResult;
        
        CollisionAlgorithmCreateFunc* m_doubleDispatch[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];
        
@@ -97,7 +103,12 @@ public:
        
        virtual void BuildAndProcessIslands(int numBodies, IslandCallback* callback);
 
-               
+       ///allows the user to get contact point callbacks 
+       virtual ManifoldResult* GetNewManifoldResult(CollisionObject* obj0,CollisionObject* obj1,PersistentManifold* manifold);
+
+       ///allows the user to get contact point callbacks 
+       virtual void    ReleaseManifoldResult(ManifoldResult*);
+                       
        CollisionAlgorithm* FindAlgorithm(BroadphaseProxy& proxy0,BroadphaseProxy& proxy1)
        {
                CollisionAlgorithm* algo = InternalFindAlgorithm(proxy0,proxy1);
diff --git a/extern/bullet/Bullet/CollisionDispatch/CollisionObject.cpp b/extern/bullet/Bullet/CollisionDispatch/CollisionObject.cpp
new file mode 100644 (file)
index 0000000..ede039a
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+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.
+*/
+
+#include "CollisionObject.h"
+
+
+
+void CollisionObject::SetActivationState(int newState) 
+{ 
+       m_activationState1 = newState;
+}
+
+void CollisionObject::activate()
+{
+               SetActivationState(1);
+               m_deactivationTime = 0.f;
+}
+
+bool CollisionObject::mergesSimulationIslands() const
+{
+       return ( !(m_collisionFlags & isStatic));
+}
similarity index 50%
rename from extern/bullet/Bullet/NarrowPhaseCollision/CollisionObject.h
rename to extern/bullet/Bullet/CollisionDispatch/CollisionObject.h
index 4df10832dea67164b5cfce9bee30f110adae586d..d412ffbf9d29435370f192b0ceddf51e490b180d 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 COLLISION_OBJECT_H
 #define COLLISION_OBJECT_H
 
@@ -33,6 +48,8 @@ struct        CollisionObject
        BroadphaseProxy*        m_broadphaseHandle;
        CollisionShape*         m_collisionShape;
 
+       void*                   m_userPointer;//not use by Bullet internally
+
        //time of impact calculation
        float                   m_hitFraction; 
 
@@ -40,12 +57,12 @@ struct      CollisionObject
 
 
        CollisionObject()
-       :       m_activationState1(1),
+       :       m_collisionFlags(0),
+               m_activationState1(1),
                m_deactivationTime(0.f),
-               m_collisionFlags(0),
-               m_hitFraction(1.f),
                m_broadphaseHandle(0),
-               m_collisionShape(0)
+               m_collisionShape(0),
+               m_hitFraction(1.f)
        {
        }
 
index b0975e5ac03a047f3a19b8fc317a8570e0c6e8a4..99e2bc5e9c750346d5dc582e93f6f86423a89443 100644 (file)
@@ -1,17 +1,21 @@
 /*
- * Copyright (c) 2002-2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "CollisionWorld.h"
 #include "CollisionDispatcher.h"
-#include "NarrowPhaseCollision/CollisionObject.h"
+#include "CollisionDispatch/CollisionObject.h"
 #include "CollisionShapes/CollisionShape.h"
 
 #include "BroadphaseCollision/BroadphaseInterface.h"
@@ -94,15 +98,33 @@ void        CollisionWorld::AddCollisionObject(CollisionObject* collisionObject)
 
 }
 
+void   CollisionWorld::PerformDiscreteCollisionDetection()
+{
+       DispatcherInfo  dispatchInfo;
+       dispatchInfo.m_timeStep = 0.f;
+       dispatchInfo.m_stepCount = 0;
+
+       //update aabb (of all moved objects)
+
+       SimdVector3 aabbMin,aabbMax;
+       for (size_t i=0;i<m_collisionObjects.size();i++)
+       {
+               m_collisionObjects[i]->m_collisionShape->GetAabb(m_collisionObjects[i]->m_worldTransform,aabbMin,aabbMax);
+               m_broadphase->SetAabb(m_collisionObjects[i]->m_broadphaseHandle,aabbMin,aabbMax);
+       }
+
+       m_broadphase->DispatchAllCollisionPairs(*GetDispatcher(),dispatchInfo);
+}
+
 
 void   CollisionWorld::RemoveCollisionObject(CollisionObject* collisionObject)
 {
        
        
-       bool removeFromBroadphase = false;
+       //bool removeFromBroadphase = false;
        
        {
-               BroadphaseInterface* scene = GetBroadphase();
+               /*BroadphaseInterface* scene = */GetBroadphase();
                BroadphaseProxy* bp = collisionObject->m_broadphaseHandle;
                
                //
index 0c841417badb5ea34d989dfa49c988478170672a..0e7cb80bf209a1c10f1ff68665c42b6b93897863 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2002-2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 COLLISION_WORLD_H
@@ -36,6 +40,7 @@ class CollisionWorld
        {
 
        }
+       virtual ~CollisionWorld() {}
 
        virtual void    UpdateActivationState();
 
@@ -58,6 +63,8 @@ class CollisionWorld
 
        void    RemoveCollisionObject(CollisionObject* collisionObject);
 
+       virtual void    PerformDiscreteCollisionDetection();
+
 };
 
 
index 684fd72179ffc80843186d7dcfc85c904b4a7de0..bb0bf7abbbd92ea8102e3f6f0a7355b4eecbc3f5 100644 (file)
@@ -1,16 +1,21 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "ConvexConcaveCollisionAlgorithm.h"
-#include "NarrowPhaseCollision/CollisionObject.h"
+#include "CollisionDispatch/CollisionObject.h"
 #include "CollisionShapes/MultiSphereShape.h"
 #include "CollisionShapes/BoxShape.h"
 #include "ConvexConvexAlgorithm.h"
@@ -40,8 +45,6 @@ BoxTriangleCallback::BoxTriangleCallback(Dispatcher*  dispatcher,BroadphaseProxy
          m_triangleCount(0)
 {
 
-         m_triangleProxy.SetClientObjectType(TRIANGLE_SHAPE_PROXYTYPE);
-
          //
          // create the manifold from the dispatcher 'manifold pool'
          //
@@ -80,7 +83,9 @@ void BoxTriangleCallback::ProcessTriangle(SimdVector3* triangle)
 
        
 
-       if (m_boxProxy->IsConvexShape())
+       CollisionObject* colObj = static_cast<CollisionObject*>(m_boxProxy->m_clientObject);
+       
+       if (colObj->m_collisionShape->IsConvex())
        {
                TriangleShape tm(triangle[0],triangle[1],triangle[2]);  
                tm.SetMargin(m_collisionMarginTriangle);
@@ -118,7 +123,7 @@ void        BoxTriangleCallback::SetTimeStepAndCounters(float timeStep,int stepCount,fl
        boxInTriangleSpace = triBody->m_worldTransform.inverse() * boxBody->m_worldTransform;
 
        CollisionShape* boxshape = static_cast<CollisionShape*>(boxBody->m_collisionShape);
-       CollisionShape* triangleShape = static_cast<CollisionShape*>(triBody->m_collisionShape);
+       //CollisionShape* triangleShape = static_cast<CollisionShape*>(triBody->m_collisionShape);
 
        boxshape->GetAabb(boxInTriangleSpace,m_aabbMin,m_aabbMax);
 
@@ -140,7 +145,10 @@ void ConvexConcaveCollisionAlgorithm::ClearCache()
 void ConvexConcaveCollisionAlgorithm::ProcessCollision (BroadphaseProxy* ,BroadphaseProxy* ,float timeStep,int stepCount,bool useContinuous)
 {
 
-       if (m_concave.GetClientObjectType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
+       CollisionObject* boxBody = static_cast<CollisionObject* >(m_convex.m_clientObject);
+       CollisionObject* triBody = static_cast<CollisionObject* >(m_concave.m_clientObject);
+
+       if (triBody->m_collisionShape->GetShapeType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
        {
 
                if (!m_dispatcher->NeedsCollision(m_convex,m_concave))
@@ -151,7 +159,7 @@ void ConvexConcaveCollisionAlgorithm::ProcessCollision (BroadphaseProxy* ,Broadp
                CollisionObject*        triOb = static_cast<CollisionObject*>(m_concave.m_clientObject);
                TriangleMeshShape* triangleMesh = static_cast<TriangleMeshShape*>( triOb->m_collisionShape);
                
-               if (m_convex.IsConvexShape())
+               if (boxBody->m_collisionShape->IsConvex())
                {
                        float collisionMarginTriangle = triangleMesh->GetMargin();
                                        
@@ -176,6 +184,8 @@ float ConvexConcaveCollisionAlgorithm::CalculateTimeOfImpact(BroadphaseProxy* ,B
 
        //quick approximation using raycast, todo: use proper continuou collision detection
        CollisionObject* convexbody = (CollisionObject* )m_convex.m_clientObject;
+       CollisionObject* triBody = static_cast<CollisionObject* >(m_concave.m_clientObject);
+
        const SimdVector3& from = convexbody->m_worldTransform.getOrigin();
        
        SimdVector3 to = convexbody->m_nextPredictedWorldTransform.getOrigin();
@@ -189,7 +199,7 @@ float ConvexConcaveCollisionAlgorithm::CalculateTimeOfImpact(BroadphaseProxy* ,B
        SimdVector3 aabbMin (-1e30f,-1e30f,-1e30f);
        SimdVector3 aabbMax (SIMD_INFINITY,SIMD_INFINITY,SIMD_INFINITY);
 
-       if (m_concave.GetClientObjectType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
+       if (triBody->m_collisionShape->GetShapeType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)
        {
 
                CollisionObject* concavebody = (CollisionObject* )m_concave.m_clientObject;
index 4e7fb982077a8cf29fc23152fd9f7d7580828c33..00a03f64f8dc35fb5b664dab71fb0f347a33123d 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONVEX_CONCAVE_COLLISION_ALGORITHM_H
 #define CONVEX_CONCAVE_COLLISION_ALGORITHM_H
 
index 5fec6466f55172aaf00b82900393bc5d62931b17..e9c56189bfc2870b7acedababf61850c3d54b7f0 100644 (file)
@@ -1,19 +1,24 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "ConvexConvexAlgorithm.h"
 
 #include <stdio.h>
 #include "NarrowPhaseCollision/DiscreteCollisionDetectorInterface.h"
 #include "BroadphaseCollision/BroadphaseInterface.h"
-#include "NarrowPhaseCollision/CollisionObject.h"
+#include "CollisionDispatch/CollisionObject.h"
 #include "CollisionShapes/ConvexShape.h"
 #include "NarrowPhaseCollision/GjkPairDetector.h"
 #include "BroadphaseCollision/BroadphaseProxy.h"
@@ -66,12 +71,12 @@ bool gDisableConvexCollision = false;
 ConvexConvexAlgorithm::ConvexConvexAlgorithm(PersistentManifold* mf,const CollisionAlgorithmConstructionInfo& ci,BroadphaseProxy* proxy0,BroadphaseProxy* proxy1)
 : CollisionAlgorithm(ci),
 m_gjkPairDetector(0,0,&m_simplexSolver,0),
+m_useEpa(!gUseEpa),
 m_box0(*proxy0),
 m_box1(*proxy1),
 m_ownManifold (false),
 m_manifoldPtr(mf),
-m_lowLevelOfDetail(false),
-m_useEpa(!gUseEpa)
+m_lowLevelOfDetail(false)
 {
        CheckPenetrationDepthSolver();
 
@@ -178,7 +183,7 @@ void ConvexConvexAlgorithm ::ProcessCollision (BroadphaseProxy* ,BroadphaseProxy
        CollisionObject*        col0 = static_cast<CollisionObject*>(m_box0.m_clientObject);
        CollisionObject*        col1 = static_cast<CollisionObject*>(m_box1.m_clientObject);
        
-       ManifoldResult output(col0,col1,m_manifoldPtr);
+       ManifoldResult* resultOut = m_dispatcher->GetNewManifoldResult(col0,col1,m_manifoldPtr);
        
        ConvexShape* min0 = static_cast<ConvexShape*>(col0->m_collisionShape);
        ConvexShape* min1 = static_cast<ConvexShape*>(col1->m_collisionShape);
@@ -209,8 +214,9 @@ void ConvexConvexAlgorithm ::ProcessCollision (BroadphaseProxy* ,BroadphaseProxy
        input.m_transformA = col0->m_worldTransform;
        input.m_transformB = col1->m_worldTransform;
     
-       m_gjkPairDetector.GetClosestPoints(input,output);
+       m_gjkPairDetector.GetClosestPoints(input,*resultOut);
 
+       m_dispatcher->ReleaseManifoldResult(resultOut);
 }
 bool disableCcd = false;
 float  ConvexConvexAlgorithm::CalculateTimeOfImpact(BroadphaseProxy* proxy0,BroadphaseProxy* proxy1,float timeStep,int stepCount)
index b560e8d4c154b3b17c8a622fccc0467a14d9e70b..15e0f3a214170d79c8e75a09a39abf7e82e016fe 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONVEX_CONVEX_ALGORITHM_H
 #define CONVEX_CONVEX_ALGORITHM_H
 
index 632dc911770a5406f806d89a28bde3af0bd0d991..ff4824dadca094ee965e0a7bd16e9bdc81662527 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "EmptyCollisionAlgorithm.h"
 
 
index 371941193e49e2162077ad0af7b8ceddcdf404b5..598fb27b88312656068c5e66471587032a631d57 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 EMPTY_ALGORITH
 #define EMPTY_ALGORITH
 #include "BroadphaseCollision/CollisionAlgorithm.h"
index a3521c7503b612719f32bb921278855ac17b813c..3a3d60bf56951185ada82d4643f4b13b1cae3510 100644 (file)
@@ -1,17 +1,22 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "ManifoldResult.h"
 #include "NarrowPhaseCollision/PersistentManifold.h"
-#include "NarrowPhaseCollision/CollisionObject.h"
+#include "CollisionDispatch/CollisionObject.h"
 
 ManifoldResult::ManifoldResult(CollisionObject* body0,CollisionObject* body1,PersistentManifold* manifoldPtr)
                :m_manifoldPtr(manifoldPtr),
@@ -37,6 +42,8 @@ void ManifoldResult::AddContactPoint(const SimdVector3& normalOnBInWorld,const S
        int insertIndex = m_manifoldPtr->GetCacheEntry(newPt);
        if (insertIndex >= 0)
        {
+               const ManifoldPoint& oldPoint = m_manifoldPtr->GetContactPoint(insertIndex);
+               newPt.CopyPersistentInformation(oldPoint);
                m_manifoldPtr->ReplaceContactPoint(newPt,insertIndex);
        } else
        {
index a73ee09c3f714d52fb91bc574241af21e705d179..f4e00f831949f9131708b0bac8bea531ed5fa298 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 MANIFOLD_RESULT_H
 #define MANIFOLD_RESULT_H
 
index 6a1e0b6e659c7964b6713353d54bc2f0c4551d8b..8f456ea17e55d3c6863d8d249d13b9fdd920c31e 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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.
+*/
+
 #include "UnionFind.h"
 #include <assert.h>
 
index 17cda1e8a61680f6ee0d57fecb3a00c51cf4ac3f..f7e9feb6ea04057ca93fdc80397ab583576e79d1 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 UNION_FIND_H
 #define UNION_FIND_H
 
index f7492328c0262b3ef29c453a2f7ac6a18d2e50e5..2be1996da16759fa035f545e1cb36f9b29e8da91 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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.
+*/
 
 #include "BoxShape.h"
 
@@ -38,7 +42,7 @@ void BoxShape::GetAabb(const SimdTransform& t,SimdVector3& aabbMin,SimdVector3&
 
 void   BoxShape::CalculateLocalInertia(SimdScalar mass,SimdVector3& inertia)
 {
-       float margin = 0.f;
+       //float margin = 0.f;
        SimdVector3 halfExtents = GetHalfExtents();
 
        SimdScalar lx=2.f*(halfExtents.x());
index bbc07f90f5b5729d50a2609299d21d8f04cf1051..4569474d79565c9f649bde1425ca01914c2ac37a 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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 OBB_BOX_MINKOWSKI_H
 #define OBB_BOX_MINKOWSKI_H
index 0c94b884597d01d431f7360c7819779ba5500571..c054d689e75af5800fe2289f678642d046422452 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 //#define DISABLE_BVH
@@ -55,8 +59,8 @@ void  BvhTriangleMeshShape::ProcessAllTriangles(TriangleCallback* callback,const
 
 
                MyNodeOverlapCallback(TriangleCallback* callback,StridingMeshInterface* meshInterface)
-                       :m_callback(callback),
-                       m_meshInterface(meshInterface)
+                       :m_meshInterface(meshInterface),
+                       m_callback(callback)
                {
                }
                                
index 86cd1e56485648e4385e4b3896a3a6115caf013c..849ea2e9935fbc9af87bc06135bb77709bb2a92d 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BVH_TRIANGLE_MESH_SHAPE_H
 #define BVH_TRIANGLE_MESH_SHAPE_H
 
index 41009dcd110b7e806131a6e6b105cd90c812998c..377f0e506a2e5b0c02f45001b22c2ccd25eaeeb6 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 COLLISION_MARGIN_H
 #define COLLISION_MARGIN_H
 
index 9efe0b0b68e1fb2fa06bc0e52a84573da02f69c5..0c5e48aeb3fedbfebeb154a9bee150653d303d27 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "CollisionShapes/CollisionShape.h"
 
 void   CollisionShape::GetBoundingSphere(SimdVector3& center,SimdScalar& radius) const
index 615782f814761fe99b46d16233d03fed90a72863..0c0f6984f9b9b4d4e81668122b5bb99c5fe4d5fa 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 COLLISION_SHAPE_H
 #define COLLISION_SHAPE_H
 
index 07db8822f7ea6a0c1a2050da4a9eb826ad007639..baf94d16b700e44f603ef0fa53029dc405ffd13b 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "ConeShape.h"
 #include "SimdPoint3.h"
 
index 55a6d02c33470d54f5ca042e34dd6942a261041f..418f9538b1ace1d3782bec5bf8e62d6b8046f245 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONE_MINKOWSKI_H
 #define CONE_MINKOWSKI_H
 
@@ -32,6 +37,9 @@ public:
        virtual SimdVector3     LocalGetSupportingVertex(const SimdVector3& vec) const;
        virtual SimdVector3     LocalGetSupportingVertexWithoutMargin(const SimdVector3& vec) const;
 
+       float GetRadius() const { return m_radius;}
+       float GetHeight() const { return m_height;}
+
 
        virtual void    CalculateLocalInertia(SimdScalar mass,SimdVector3& inertia)
        {
index fdb7a4d801a5a070b62ddc22b4cd20e3b98df0eb..2fcf76ffdc34b73359b0e4e833b1887c183a20ce 100644 (file)
@@ -1,14 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
-
+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.
+*/
 #include "ConvexHullShape.h"
 #include "CollisionShapes/CollisionMargin.h"
 
@@ -39,7 +42,7 @@ SimdVector3   ConvexHullShape::LocalGetSupportingVertexWithoutMargin(const SimdVec
        }
 
 
-       for (int i=0;i<m_points.size();i++)
+       for (size_t i=0;i<m_points.size();i++)
        {
                SimdPoint3 vtx = m_points[i] * m_localScaling;
 
index 5906b9354c4892f31b8e23ace6f0f439dffa17de..41effc645c529a43f458ad34d3290c4e378fbe88 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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 CONVEX_HULL_SHAPE_H
 #define CONVEX_HULL_SHAPE_H
index 8be67b9b6c89194140b39617fb4dcf54691f578e..2ca3511a8daccf145a3504e908e1f197c167de66 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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.
+*/
 
 #include "ConvexShape.h"
 
index 82986200497e73ce239fb0195457bcab2fc4da18..ad4aefc128cae04070dfb221408e1d49486f85d0 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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 CONVEX_SHAPE_INTERFACE1
 #define CONVEX_SHAPE_INTERFACE1
index dbaaaf243facbfc8cc8bc5583b2d2d509c7e18c9..35cad78fbb9f793a69f8e855a6feeb140d54cafd 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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.
+*/
+
 #include "ConvexTriangleCallback.h"
 #include "NarrowPhaseCollision/PersistentManifold.h"
 #include "NarrowPhaseCollision/ManifoldContactAddResult.h"
@@ -14,9 +29,9 @@
 ConvexTriangleCallback::ConvexTriangleCallback(PersistentManifold* manifold,ConvexShape* convexShape,const SimdTransform&convexTransform,const SimdTransform& triangleMeshTransform)
 :m_triangleMeshTransform(triangleMeshTransform),
        m_convexTransform(convexTransform),
+       m_triangleCount(0),
        m_convexShape(convexShape),
-       m_manifoldPtr(manifold),
-       m_triangleCount(0)
+       m_manifoldPtr(manifold)
 {
 }
 
index c9f1a4acffd6f7b4861d4a75d227d272558c5c90..17be96fc27e340759714316d66957a85226f95c4 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 CONVEX_TRIANGLE_CALLBACK_H
 #define CONVEX_TRIANGLE_CALLBACK_H
 
index c6bce486ac12d31def85919552fccd050db3e0e1..d533cc29aac8461d2c9db1e773eb8ba037151f41 100644 (file)
@@ -1,14 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
-
+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.
+*/
 #include "CylinderShape.h"
 #include "SimdPoint3.h"
 
index e35464ef1d3db449ab0810801d43a6deefb26b8b..b0814f98066084cae36437bd9e20854de02ecaa8 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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 CYLINDER_MINKOWSKI_H
 #define CYLINDER_MINKOWSKI_H
index 04954dd750e63367a86d9c4f07c1e19076bbfa71..939377c724bb60e804e49f7221ec23508d96ee4f 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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.
+*/
 
 #include "EmptyShape.h"
 
index 7ecbb05f4ccdd8b7fee3d2bd84694289de04aebc..d4b83663a947e589f94b7f99b7ae697d133d0345 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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 EMPTY_SHAPE_H
 #define EMPTY_SHAPE_H
index 474064e5a21786b8d71f57cfa736540fb311ff24..b5ca6a9fab1a1d8dee5ea7b70349d0bba5355bca 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "MinkowskiSumShape.h"
 
 
index 8fa0cee463b49b97384dde83783636a46678dc8f..d956ad4323e02f89f4d918fe11d9ad49c78645d1 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 MINKOWSKI_SUM_SHAPE_H
 #define MINKOWSKI_SUM_SHAPE_H
 
index d1d5aa9289768957837c47e4b8fda2c44942b04f..e4e93774c2acb4760740612e37b3ba3cd7d1d192 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "MultiSphereShape.h"
 #include "CollisionShapes/CollisionMargin.h"
 #include "SimdQuaternion.h"
index 323831c06cae0a82d0bbb0711e7a95cbfd2596e8..d0cf2ad3f0bb1f8ebef58dd59e1c0b91b7f95c68 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 MULTI_SPHERE_MINKOWSKI_H
 #define MULTI_SPHERE_MINKOWSKI_H
 
index a07e2919bd66815cae8155ce93c6e8a505bb1160..0cd20ecd04874dcfc16d84e97293b9213a17276b 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "OptimizedBvh.h"
@@ -17,7 +21,7 @@
 
 void OptimizedBvh::Build(StridingMeshInterface* triangles)
 {
-       int countTriangles = 0;
+       //int countTriangles = 0;
 
        
 
@@ -192,11 +196,9 @@ int        OptimizedBvh::CalcSplittingAxis(NodeArray&      leafNodes,int startIndex,int endI
        
 void   OptimizedBvh::ReportAabbOverlappingNodex(NodeOverlapCallback* nodeCallback,const SimdVector3& aabbMin,const SimdVector3& aabbMax) const
 {
-       int i;
-
        if (aabbMin.length() > 1000.f)
        {
-               for (i=0;i<m_leafNodes.size();i++)
+               for (size_t i=0;i<m_leafNodes.size();i++)
                {
                        const OptimizedBvhNode& node = m_leafNodes[i];
                        nodeCallback->ProcessNode(&node);
index ca71ded41c9be032878caa70b2eb6d3766d4c292..484d0818d5c5c3cc10f40a054197dfd3ce8f4ff3 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 OPTIMIZED_BVH_H
index e480b8911c7f5dec939968014784c60c9eb75ecb..89bd5af59cea467bfdb36274d15fdebd1ba1fb78 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include <CollisionShapes/PolyhedralConvexShape.h>
 
 PolyhedralConvexShape::PolyhedralConvexShape()
index f1462e21f97d4ac5680b6e434ce4e0b5e8635731..7b0c54d96cc899a7221dba396ec11241b39f77cf 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_SHAPE
 #define BU_SHAPE
 
index 8fae9cc4037e76d94fb1cfea0a235b82f9482311..e1d02f956d47d31be717d33a0618aa4de26622e6 100644 (file)
@@ -1,12 +1,17 @@
+
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 #include "Simplex1to4Shape.h"
 #include "SimdMatrix3x3.h"
index 7c61cb661d7753c25bfa229c454bd04328aa3435..8e5d124f31e187bf71ba4aa13d43f5caa48d66e7 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_SIMPLEX_1TO4_SHAPE
 #define BU_SIMPLEX_1TO4_SHAPE
 
index dbf24113ce86845b4e8a383da8b6749c01fe557c..047a22aabe9c6c62bacfdc183928239e48358618 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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.
+*/
 
 #include "SphereShape.h"
 #include "CollisionShapes/CollisionMargin.h"
index 235af6c4db2ae665eba9d3e1acf80c27831eca2b..5e490ca1402f09ed4377b636ca5a5a4eaabea7a3 100644 (file)
@@ -1,13 +1,17 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- */
+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_MINKOWSKI_H
 #define SPHERE_MINKOWSKI_H
@@ -35,7 +39,7 @@ public:
 
        virtual int     GetShapeType() const { return SPHERE_SHAPE_PROXYTYPE; }
 
-       SimdScalar      GetRadius() { return m_radius;}
+       SimdScalar      GetRadius() const { return m_radius;}
 
        //debugging
        virtual char*   GetName()const {return "SPHERE";}
index 9763a3c02a22e04839e6f176d4df53683ffb03c2..874660c7ead84a8c5c82eababf4bfa5230331ac6 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "StridingMeshInterface.h"
 
 StridingMeshInterface::~StridingMeshInterface()
index 82f89b4dbe0f105e9aac37644f691888cfddc168..0b482afdc9cb1a2f669200673a0248b9f37d09ae 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 STRIDING_MESHINTERFACE_H
 #define STRIDING_MESHINTERFACE_H
 
index 64704dc41fd3f557ecaa340a319c8140cec431fc..499d377a00cd064c7a99e1525cc67d4b3c968748 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "TriangleCallback.h"
index cbffeeb98395e3e327c765efa9adf60a41cd7f7f..80519160c9c45c0cdbef6ee07ea08a99e3b18a11 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 TRIANGLE_CALLBACK_H
 #define TRIANGLE_CALLBACK_H
 
index 711a912804883b4601e89eaba2c49884534a0240..ebbb7c3e5710453c7759e2ea532d54d66c8db401 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "TriangleIndexVertexArray.h"
index 1e82950a344d7299bde4a2ce6a9ef9dc4c969eb1..1134521ad87763828fbca026e99db972cb53c031 100644 (file)
@@ -1,12 +1,16 @@
 /*
- * Copyright (c) 2006 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "StridingMeshInterface.h"
index 38cccec3e1542d2682ec11a3fea33ff081c4d3f8..c86d286d9d6f372b21c73c58d1cad0bdb5c5d422 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "TriangleMesh.h"
 #include <assert.h>
 
index 1378232328157f9e32a61d14b55ba752bfcab448..9623cb401d29caa06d057bae1eea0f88e7aabfb7 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 TRIANGLE_MESH_H
 #define TRIANGLE_MESH_H
 
index 743e413307e58495702d700fef5e0ca508319b32..486b41fbc000221c6baf735bdda0a50f822a9532 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
 #include "TriangleMeshShape.h"
 #include "SimdVector3.h"
 #include "SimdQuaternion.h"
index 4f42458f0626acc5b7a6f7005df4a56c21273fe8..ccbb4d75f6185203717ff054f1d538ab4eb6fcbd 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 TRIANGLE_MESH_SHAPE_H
 #define TRIANGLE_MESH_SHAPE_H
 
index 570a312da1a468748f2baeecbd885a2260067a5e..6f7fb195e8c149de6c052091911462377a7d3467 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 OBB_TRIANGLE_MINKOWSKI_H
 #define OBB_TRIANGLE_MINKOWSKI_H
 
index 592fac5a248bd8a437c7db1ee67eac6cd1ee8929..e318c25da23a856497c9cc19d2904f133a377535 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "BU_AlgebraicPolynomialSolver.h"
 #include <math.h>
 #include <SimdMinMax.h>
index e2d763e4277f5879a05822d84b6dd1251f906e2e..2d2fe5fc1f9a39e976f3218cd13e4c9938247ccd 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_ALGEBRAIC_POLYNOMIAL_SOLVER_H
 #define BU_ALGEBRAIC_POLYNOMIAL_SOLVER_H
 
index 9542889bc26abed1cc76e1a42272553b310c55a5..bb06e7edb3ab29f9b52995f7689475d70eb216ff 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "BU_Collidable.h"
 #include "CollisionShapes/CollisionShape.h"
 #include <SimdTransform.h>
index 939e0972a60a88099ba0010d0698459097b61f49..0a63d32f6634736b5e8f9e7d11cc60cf4d24e066 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_COLLIDABLE
 #define BU_COLLIDABLE
 
index 942c721fadf3a721cd508908b181db1d5638e171..ebd80cc31f12aad59d4baaf43c1b96ebdebd4431 100644 (file)
@@ -1,15 +1,20 @@
-
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
+
 #include "BU_CollisionPair.h"
 #include "NarrowPhaseCollision/BU_VertexPoly.h"
 #include "NarrowPhaseCollision/BU_EdgeEdge.h"
@@ -461,7 +466,7 @@ bool BU_CollisionPair::calcTimeOfImpact(
                                                        {
                                                                SimdPoint3 hitpt = m_screwing.InBetweenPosition( vtx , -toiUnscaled);
                                                                SimdVector3 hitNormal = m_screwing.InBetweenVector(-planeNorm ,-toiUnscaled);
-                                                               SimdScalar len =  hitNormal.length()-1;
+                                                               //SimdScalar len =  hitNormal.length()-1;
 
                                                                //assert( SimdFuzzyZero(len) );
 
index 7d38139e65d76122a6968dc88c74a6fc191ddb13..8dcea364708874dd56afd75e0928c6ddaef9249b 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_COLLISIONPAIR
 #define BU_COLLISIONPAIR
 
index 130a8ea85b0fd936b78b9bfa8a42011f4978fc5a..ae43843c656ee902b11491dbab000c799e32b249 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "BU_EdgeEdge.h"
 #include "BU_Screwing.h"
 #include <SimdPoint3.h>
@@ -230,7 +235,7 @@ bool BU_EdgeEdge::GetTimeOfImpact(
                                                
                                                
                                                
-                                               int k=0;
+                                               //int k=0;
                                                
                                        } else
                                        {
@@ -290,8 +295,8 @@ bool BU_EdgeEdge::GetTimeOfImpactGeneralCase(
        BU_Polynomial polynomialSolver;
        int numroots = 0;
        
-       SimdScalar eps=1e-15f;
-       SimdScalar eps2=1e-20f;
+       //SimdScalar eps=1e-15f;
+       //SimdScalar eps2=1e-20f;
        SimdScalar s=screwAB.GetS();
        SimdScalar w = screwAB.GetW();
        
@@ -461,10 +466,10 @@ bool BU_EdgeEdge::GetTimeOfImpactGeneralCase(
                                
                                (ax-ax*tau*tau-2.f*tau*ay);
                        
-                       SimdScalar res = coefs[0]*tau*tau*tau+
+                       /*SimdScalar res = coefs[0]*tau*tau*tau+
                                coefs[1]*tau*tau+
                                coefs[2]*tau+
-                               coefs[3];
+                               coefs[3];*/
                        
                        //lhs should be rhs !
                        
index b653bf44093ea7fa2aaa260cda49a0ffddff0a7b..4823f1deec2a46d4f85416e0243fbed223956337 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_EDGEEDGE
 #define BU_EDGEEDGE
 
index 6f1576a525f70bbce24cb3f82c1d470442e17452..d06a8fab0940c2125dd06d615d4c976ae71a4ddc 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_MOTIONSTATE
 #define BU_MOTIONSTATE
 
index 4926acaf8240f9d5da56ee1de8b7f8a8b6aab8ab..15d67faee1c34157b5a0d748db9266c58546186a 100644 (file)
@@ -1,4 +1,17 @@
+/*
+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 BUM_POLYNOMIAL_SOLVER_INTERFACE
 #define BUM_POLYNOMIAL_SOLVER_INTERFACE
 
index e0fc5e02ea2c77b403f04bc93c7d7bc63ca9e1b9..997fcc3a9e6316abc746a0fc0158dc3dee74cce6 100644 (file)
@@ -1,18 +1,21 @@
+
 /*
- * Copyright (c) 2005 Stephane Redon / Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Stephane Redon / 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.
 */
 
-#include "BU_Screwing.h"
-
-
 
+#include "BU_Screwing.h"
 
 
 BU_Screwing::BU_Screwing(const SimdVector3& relLinVel,const SimdVector3& relAngVel) {
@@ -72,7 +75,7 @@ BU_Screwing::BU_Screwing(const SimdVector3& relLinVel,const SimdVector3& relAngV
                
                // now we have to compute o
                
-               SimdScalar len = n1.length2();
+               //SimdScalar len = n1.length2();
                //(len >= BUM_EPSILON2) {
                if (n1[0] || n1[1] || n1[2]) { // n1 is not the zero vector
                        n1.normalize();
index 8b5a35208afe8dba265853c868060e242ce2de9e..17603cec0b7c9ae9e7a6651e8362a4c1ed31acc8 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 B_SCREWING_H
 #define B_SCREWING_H
 
index cbb799c5f7839aba641d7432a4452da32d7fb3b3..4202b3dde238f5965238cabea1fd34af4cb9955d 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 BU_STATIC_MOTIONSTATE
 #define BU_STATIC_MOTIONSTATE
 
index a67f4b34a3a57ab6168a88769d56040544be2311..71de3a284bedb56a0a4b923db67826c0b88ddb95 100644 (file)
@@ -1,15 +1,20 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 
+
 #include "BU_VertexPoly.h"
 #include "BU_Screwing.h"
 #include <SimdTransform.h>
@@ -65,8 +70,8 @@ bool BU_VertexPoly::GetTimeOfImpact(
        BU_Polynomial polynomialSolver;
        int numroots = 0;
 
-       SimdScalar eps=1e-80f;
-       SimdScalar eps2=1e-100f;
+       //SimdScalar eps=1e-80f;
+       //SimdScalar eps2=1e-100f;
        
        if (TestFuzzyZero(screwAB.GetS()) )     
        {
index 56a86995f3dfcdb9d9d482a7d0d46ad124423aae..96ac73c7aae4cb17e983da86632dcc5b94f7642a 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 VERTEX_POLY_H
 #define VERTEX_POLY_H
 
index 41009dcd110b7e806131a6e6b105cd90c812998c..377f0e506a2e5b0c02f45001b22c2ccd25eaeeb6 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 COLLISION_MARGIN_H
 #define COLLISION_MARGIN_H
 
diff --git a/extern/bullet/Bullet/NarrowPhaseCollision/CollisionObject.cpp b/extern/bullet/Bullet/NarrowPhaseCollision/CollisionObject.cpp
deleted file mode 100644 (file)
index ca95128..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "CollisionObject.h"
-
-
-
-void CollisionObject::SetActivationState(int newState) 
-{ 
-       m_activationState1 = newState;
-}
-
-void CollisionObject::activate()
-{
-               SetActivationState(1);
-               m_deactivationTime = 0.f;
-}
-
-bool CollisionObject::mergesSimulationIslands() const
-{
-       return ( !(m_collisionFlags & isStatic));
-}
index 4074a2f3fe057f43c0563fcab91aca796b7e211b..d760b368fe3512d515aa78ad586705f0d95cf816 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "ContinuousConvexCollision.h"
 #include "CollisionShapes/ConvexShape.h"
 #include "CollisionShapes/MinkowskiSumShape.h"
@@ -65,7 +70,7 @@ bool  ContinuousConvexCollision::calcTimeOfImpact(
        SimdVector3 c;
 
        float lastLambda = lambda;
-       float epsilon = 0.001f;
+       //float epsilon = 0.001f;
 
        int numIter = 0;
        //first solution, using GJK
@@ -112,7 +117,7 @@ bool        ContinuousConvexCollision::calcTimeOfImpact(
                        //calculate safe moving fraction from distance / (linear+rotational velocity)
                        
                        //float clippedDist  = GEN_min(angularConservativeRadius,dist);
-                       float clippedDist  = dist;
+                       //float clippedDist  = dist;
                        
                        float projectedLinearVelocity = (linVelB-linVelA).dot(n);
                        
index 94f1dafe1bb9869c19fccb02505202e429b22811..0128f19f657888e5e6f0a76c5569a8ebded573f2 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONTINUOUS_COLLISION_CONVEX_CAST_H
 #define CONTINUOUS_COLLISION_CONVEX_CAST_H
 
index d8a4956700ccd33667a64fb387e37b10f2c20ad1..689655086be9125b1a082787ccb2d4d15714055a 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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.
+*/
+
 #include "ConvexCast.h"
 
 ConvexCast::~ConvexCast()
index 8d3e79de276a4614f1435fbf78bc88d39eb98ebc..d5bf711c6ab422a995b9391d93ed96d6b192deea 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONVEX_CAST_H
 #define CONVEX_CAST_H
 
index a8fdbc5541413fcd10627583fc6c8a1d78e3f740..8001c7883b6cfa65a8a0ffd7fb8c0c6832c05242 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONVEX_PENETRATION_DEPTH_H
 #define CONVEX_PENETRATION_DEPTH_H
 
index 393606f5d0ed32b4331c6189871e3579af0e54d4..08007d7549600d5c6a57fb60b691f7e5a79f6028 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 DISCRETE_COLLISION_DETECTOR_INTERFACE_H
 #define DISCRETE_COLLISION_DETECTOR_INTERFACE_H
 #include "SimdTransform.h"
index 4c129848fe05d8ba7475b720f180ae3b7410f8b7..0f20061c6e6141d2aca357750d1bc06f253597ab 100644 (file)
@@ -1,15 +1,20 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
 
+
 #include "GjkConvexCast.h"
 #include "CollisionShapes/SphereShape.h"
 #include "CollisionShapes/MinkowskiSumShape.h"
index 3d3c5de41107af362f6a08bde41e4eca4042238d..c83ffc12f59b234d416602e1b6eb49bf7cbfc191 100644 (file)
@@ -1,15 +1,20 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 GJK_CONVEX_CAST_H
 #define GJK_CONVEX_CAST_H
 
index e374e1c1bc02e5f95dc80e6fb336e0508546520a..c453264662ffaa9dec3f64db4fa6f8f91912ded7 100644 (file)
@@ -1,12 +1,16 @@
 /*
-* Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
-*
-* Permission to use, copy, modify, distribute and sell this software
-* and its documentation for any purpose is hereby granted without fee,
-* provided that the above copyright notice appear in all copies.
-* Erwin Coumans makes no representations about the suitability 
-* of this software for any purpose.  
-* It is provided "as is" without express or implied warranty.
+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.
 */
 
 #include "GjkPairDetector.h"
index bfef4a91682bb7612f8c7102ed93a6257a2c26cc..337f8128071eed88dfe3b57b47809a6f5df32002 100644 (file)
@@ -1,16 +1,21 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 GJK_PAIR_DETECTOR_H
 #define GJK_PAIR_DETECTOR_H
 
index 98e45f6d1dfb90869e6851db03c2abd3400b6279..627c4f7ae091c0d1240d4feee81f03cee942e35c 100644 (file)
@@ -1,3 +1,17 @@
+/*
+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.
+*/
 
 #include "ManifoldContactAddResult.h"
 #include "NarrowPhaseCollision/PersistentManifold.h"
index 1d019f97cd0b0c01c709d9e066a50b82afb31930..5dc9f3129b27bd9504cddbb3e5bf7e8faacd60f2 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 MANIFOLD_CONTACT_ADD_RESULT_H
 #define MANIFOLD_CONTACT_ADD_RESULT_H
 
index 11b573c98c0614dfd3953bdbdaf49d8348c993f4..f855396cad72ecab7fb399a2d48d9df684c5127d 100644 (file)
@@ -1,7 +1,24 @@
+/*
+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 MANIFOLD_CONTACT_POINT_H
 #define MANIFOLD_CONTACT_POINT_H
 
 #include "SimdVector3.h"
+#include "SimdTransformUtil.h"
+
 
 /// ManifoldContactPoint collects and maintains persistent contactpoints.
 /// used to improve stability and performance of rigidbody dynamics response.
@@ -18,10 +35,16 @@ class ManifoldPoint
                                        m_localPointA( pointA ), 
                                        m_localPointB( pointB ), 
                                        m_normalWorldOnB( normal ), 
-                                       m_distance1( distance )
-                                       ,m_appliedImpulse(0.f),
+                                       m_distance1( distance ),
+                                       m_appliedImpulse(0.f),
+                                       m_accumulatedTangentImpulse0(0.f),
+                                       m_accumulatedTangentImpulse1(0.f),
+                                       m_jacDiagABInv(0.f),
                                        m_lifeTime(0)
-                       {}
+                       {
+                               SimdPlaneSpace1(m_normalWorldOnB,m_frictionWorldTangential0,m_frictionWorldTangential1);
+                                       
+                       }
 
                        SimdVector3 m_localPointA;                      
                        SimdVector3 m_localPointB;                      
@@ -29,9 +52,30 @@ class ManifoldPoint
                        ///m_positionWorldOnA is redundant information, see GetPositionWorldOnA(), but for clarity
                        SimdVector3     m_positionWorldOnA;
                        SimdVector3 m_normalWorldOnB;
+                       
+                       SimdVector3     m_frictionWorldTangential0;
+                       SimdVector3     m_frictionWorldTangential1;
+                       
+                       
+
+
                        float   m_distance1;
                        /// total applied impulse during most recent frame
                        float   m_appliedImpulse;
+                       float   m_accumulatedTangentImpulse0;
+                       float   m_accumulatedTangentImpulse1;
+                       
+                       float   m_jacDiagABInv;
+
+                       void    CopyPersistentInformation(const ManifoldPoint& otherPoint)
+                       {
+                               m_appliedImpulse = otherPoint.m_appliedImpulse;
+                               m_accumulatedTangentImpulse0 = 0;//otherPoint.m_accumulatedTangentImpulse0;
+                               m_accumulatedTangentImpulse1 = 0;//otherPoint.m_accumulatedTangentImpulse1;
+                               m_lifeTime = otherPoint.m_lifeTime;
+
+                       }
+
                        int             m_lifeTime;//lifetime of the contactpoint in frames
                        
                        float GetDistance() const
index 6ff503e732240a8a0b415f6d6fb1d256f99fd73e..d4fbf022d6cb8152a36e7665ef55b21cffbd4ff8 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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.
+*/
+
 #include "MinkowskiPenetrationDepthSolver.h"
 #include "CollisionShapes/MinkowskiSumShape.h"
 #include "NarrowPhaseCollision/SubSimplexConvexCast.h"
index 28c0a03e0f4fb6810781097d21314ce2d315d498..65154c59b4e1cb2072987ff2a5163cae5f2ff18b 100644 (file)
@@ -1,3 +1,17 @@
+/*
+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 MINKOWSKI_PENETRATION_DEPTH_SOLVER_H
 #define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H
index 92b817adee8087d60119d4fe6cfd78c40c6b8624..befed5379bed67a8948958ddbf69c60c2257c7d3 100644 (file)
@@ -1,12 +1,16 @@
 /*
-* Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
-*
-* Permission to use, copy, modify, distribute and sell this software
-* and its documentation for any purpose is hereby granted without fee,
-* provided that the above copyright notice appear in all copies.
-* Erwin Coumans makes no representations about the suitability 
-* of this software for any purpose.  
-* It is provided "as is" without express or implied warranty.
+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.
 */
 
 
index dc7f3a8fa4dfcc7d76a74a176daa2d13be4276fe..7f4c9a0e4017196113b75c3fe72551aef117532e 100644 (file)
@@ -1,12 +1,16 @@
 /*
-* Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
-*
-* Permission to use, copy, modify, distribute and sell this software
-* and its documentation for any purpose is hereby granted without fee,
-* provided that the above copyright notice appear in all copies.
-* Erwin Coumans makes no representations about the suitability 
-* of this software for any purpose.  
-* It is provided "as is" without express or implied warranty.
+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 PERSISTENT_MANIFOLD_H
index e4f22b69f469a11aedb7e82050965bd9da0de1c2..a8e6324600e7ae42bc8817fea78a5fd5c329ef37 100644 (file)
@@ -1,3 +1,18 @@
+/*
+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 POINT_COLLECTOR_H
 #define POINT_COLLECTOR_H
 
@@ -16,7 +31,7 @@ struct PointCollector : public DiscreteCollisionDetectorInterface::Result
        bool    m_hasResult;
 
        PointCollector () 
-               : m_hasResult(false),m_distance(1e30f)
+               : m_distance(1e30f),m_hasResult(false)
        {
        }
 
index 2517aa22c2353a691159a82aa389fecdf6999bfd..9401aa056999c25d2081f8be170021323802d4eb 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "RaycastCallback.h"
 
 RaycastCallback::RaycastCallback(const SimdVector3& from,const SimdVector3& to)
index a1d34dcb2f6eac82d7e8b79d77a9d361ef0e563e..dc31eca76fe186ed2a15ce55bc35a4c0ecefb170 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 RAYCAST_TRI_CALLBACK_H
 #define RAYCAST_TRI_CALLBACK_H
 
index 05a5ae5895f31617d5ba171a381d6ef7f1a2450f..b4edda15b328020ca4f58f941ec1172e9a93e145 100644 (file)
@@ -1,15 +1,20 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 SIMPLEX_SOLVER_INTERFACE_H
 #define SIMPLEX_SOLVER_INTERFACE_H
 
index c75bbb53936b354f6efb2ba9e1c164f99f038e36..a71272552da6d6015c3cf6fd55a97866da8053d2 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
 
+
 #include "SubSimplexConvexCast.h"
 #include "CollisionShapes/ConvexShape.h"
 #include "CollisionShapes/MinkowskiSumShape.h"
@@ -46,7 +51,7 @@ bool  SubsimplexConvexCast::calcTimeOfImpact(
 
        convex->SetTransformB(SimdTransform(rayFromLocalA.getBasis()));
 
-       float radius = 0.01f;
+       //float radius = 0.01f;
 
        SimdScalar lambda = 0.f;
        SimdVector3 s = rayFromLocalA.getOrigin();
@@ -112,7 +117,7 @@ bool        SubsimplexConvexCast::calcTimeOfImpact(
                } 
        }
 
-       int numiter = MAX_ITERATIONS - maxIter;
+       //int numiter = MAX_ITERATIONS - maxIter;
 //     printf("number of iterations: %d", numiter);
        result.m_fraction = lambda;
        result.m_normal = -n;
index 088f0b01fe885df4a4812261940cbd621b043f60..9c05571a92732dcec92fc993ad29be456865a2eb 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 SUBSIMPLEX_CONVEX_CAST_H
 #define SUBSIMPLEX_CONVEX_CAST_H
 
index 8ef2e3fc42f471bbb87555b8d4b53bcbbd857150..f0b69cfe7558c1912a4a57370fb6363a2b988b8f 100644 (file)
@@ -1,13 +1,17 @@
+
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
- *
+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.
        
        Elsevier CDROM license agreements grants nonexclusive license to use the software
        for any purpose, commercial or non-commercial as long as the following credit is included
@@ -284,7 +288,7 @@ bool VoronoiSimplexSolver::inSimplex(const SimdVector3& w)
 {
        bool found = false;
        int i, numverts = numVertices();
-       SimdScalar maxV = 0.f;
+       //SimdScalar maxV = 0.f;
        
        //w is in the current (reduced) simplex
        for (i=0;i<numverts;i++)
index 7fd3478ba1ea6bac743ff020720d24f878f17a61..defa071b99611154dacb43476bec1a039adbd329 100644 (file)
@@ -1,15 +1,20 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 VoronoiSimplexSolver_H
 #define VoronoiSimplexSolver_H
 
index e0ed65eebb64cfc15efbc23683542f1510f22990..1b9f9cc1985af5d2e5400863de394e5e91927973 100644 (file)
@@ -67,8 +67,8 @@ LIB32=link.exe -lib
 # PROP Target_Dir ""
 LINK32=link.exe -lib
 MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../LinearMath" /I "../Bullet" /I "../BulletDynamics" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ  /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../LinearMath" /I "../Bullet" /I "../BulletDynamics" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ  /c
 # ADD BASE RSC /l 0x809 /d "_DEBUG"
 # ADD RSC /l 0x809 /d "_DEBUG"
 BSC32=bscmake.exe
@@ -151,6 +151,54 @@ SOURCE=.\ConstraintSolver\SorLcp.h
 # Begin Group "CollisionDispatch"
 
 # PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ConvexConcaveCollisionAlgorithm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ConvexConcaveCollisionAlgorithm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ConvexConvexAlgorithm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ConvexConvexAlgorithm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\EmptyCollisionAlgorithm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\EmptyCollisionAlgorithm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ManifoldResult.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ManifoldResult.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ToiContactDispatcher.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\ToiContactDispatcher.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\UnionFind.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\CollisionDispatch\UnionFind.h
+# End Source File
 # End Group
 # Begin Group "Dynamics"
 
index e89c175720f008cd9631b33efd331207dc1cc827..af96dc9cf88840e848e04a3c4472ad09160fd768 100644 (file)
@@ -23,7 +23,7 @@
                                PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
                                MinimalRebuild="TRUE"
                                BasicRuntimeChecks="3"
-                               RuntimeLibrary="5"
+                               RuntimeLibrary="3"
                                UsePrecompiledHeader="0"
                                WarningLevel="3"
                                Detect64BitPortabilityProblems="TRUE"
                        <Tool
                                Name="VCMIDLTool"/>
                        <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="ECHO Copying header files
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionDispatch MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionDispatch
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\ConstraintSolver MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\ConstraintSolver
-IF NOT EXIST ..\..\..\..\build\msvc_7\extern\bullet\include\Dynamics MKDIR ..\..\..\..\build\msvc_7\extern\bullet\include\Dynamics
-
-XCOPY /Y ..\LinearMath\*.h ..\..\..\..\build\msvc_7\extern\bullet\include
-XCOPY /Y ..\BulletDynamics\CollisionDispatch\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\CollisionDispatch
-XCOPY /Y ..\BulletDynamics\ConstraintSolver\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\ConstraintSolver
-XCOPY /Y ..\BulletDynamics\Dynamics\*.h ..\..\..\..\build\msvc_7\extern\bullet\include\Dynamics
-
-ECHO Done
-"/>
+                               Name="VCPostBuildEventTool"/>
                        <Tool
                                Name="VCPreBuildEventTool"/>
                        <Tool
@@ -123,6 +110,12 @@ ECHO Done
                        <File
                                RelativePath=".\ConstraintSolver\ContactSolverInfo.h">
                        </File>
+                       <File
+                               RelativePath=".\ConstraintSolver\HingeConstraint.cpp">
+                       </File>
+                       <File
+                               RelativePath=".\ConstraintSolver\HingeConstraint.h">
+                       </File>
                        <File
                                RelativePath=".\ConstraintSolver\JacobianEntry.h">
                        </File>
@@ -156,45 +149,11 @@ ECHO Done
                        <File
                                RelativePath=".\ConstraintSolver\SorLcp.h">
                        </File>
-               </Filter>
-               <Filter
-                       Name="CollisionDispatch"
-                       Filter="">
-                       <File
-                               RelativePath=".\CollisionDispatch\ConvexConcaveCollisionAlgorithm.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ConvexConcaveCollisionAlgorithm.h">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ConvexConvexAlgorithm.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ConvexConvexAlgorithm.h">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\EmptyCollisionAlgorithm.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\EmptyCollisionAlgorithm.h">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ManifoldResult.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ManifoldResult.h">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ToiContactDispatcher.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\CollisionDispatch\ToiContactDispatcher.h">
-                       </File>
                        <File
-                               RelativePath=".\CollisionDispatch\UnionFind.cpp">
+                               RelativePath=".\ConstraintSolver\TypedConstraint.cpp">
                        </File>
                        <File
-                               RelativePath=".\CollisionDispatch\UnionFind.h">
+                               RelativePath=".\ConstraintSolver\TypedConstraint.h">
                        </File>
                </Filter>
                <Filter
index 58e1e090b51f8721f6b53aad1be6295490797906..943479dc6237da9aab1d35d9f8d5ed5442bf8f3e 100644 (file)
                                RelativePath=".\ConstraintSolver\ContactSolverInfo.h"
                                >
                        </File>
+                       <File
+                               RelativePath=".\ConstraintSolver\HingeConstraint.cpp"
+                               >
+                       </File>
+                       <File
+                               RelativePath=".\ConstraintSolver\HingeConstraint.h"
+                               >
+                       </File>
                        <File
                                RelativePath=".\ConstraintSolver\JacobianEntry.h"
                                >
                                RelativePath=".\ConstraintSolver\SorLcp.h"
                                >
                        </File>
-               </Filter>
-               <Filter
-                       Name="Vehicle"
-                       >
-                       <File
-                               RelativePath=".\Vehicle\RaycastVehicle.cpp"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\RaycastVehicle.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleControl.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleFrame.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleInputController.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleRaycaster.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleTuning.cpp"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\VehicleTuning.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\Vehicle\WheelInfo.cpp"
-                               >
-                       </File>
                        <File
-                               RelativePath=".\Vehicle\WheelInfo.h"
+                               RelativePath=".\ConstraintSolver\TypedConstraint.cpp"
                                >
                        </File>
                        <File
-                               RelativePath=".\Vehicle\WheelSkidInfo.h"
+                               RelativePath=".\ConstraintSolver\TypedConstraint.h"
                                >
                        </File>
                </Filter>
index b4fd8ae26b97d79b51a2330d5b2b127256d67aaa..a1975c187d242d86ec22ed557e7a53b8c24150ce 100644 (file)
@@ -1,13 +1,18 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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 CONSTRAINT_SOLVER_H
 #define CONSTRAINT_SOLVER_H
 
index 0c400a84dca2bc62304b4d62638c9008abaaac68..1aaa9732d16a679325d35e023f14322f8a591f58 100644 (file)
@@ -1,24 +1,30 @@
 /*
- * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies.
- * Erwin Coumans makes no representations about the suitability 
- * of this software for any purpose.  
- * It is provided "as is" without express or implied warranty.
+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.
 */
+
+
 #include "ContactConstraint.h"
 #include "Dynamics/RigidBody.h"
 #include "SimdVector3.h"
 #include "JacobianEntry.h"
 #include "ContactSolverInfo.h"
 #include "GEN_MinMax.h"
+#include "NarrowPhaseCollision/ManifoldPoint.h"
 
 #define ASSERT2 assert
 
-//some values to find stable penalty method tresholds
-float MAX_FRICTION = 100.f;
+//some values to find stable tresholds
 static SimdScalar ContactThreshold = -10.0f;  
 float useGlobalSettingContacts = false;//true;
 SimdScalar contactDamping = 0.2f;
@@ -27,7 +33,6 @@ SimdScalar contactTau = .02f;//0.02f;//*0.02f;
 
 SimdScalar restitutionCurve(SimdScalar rel_vel, SimdScalar restitution)
 {
-//     return 0.f;
        return restitution * GEN_min(1.0f, rel_vel / ContactThreshold);
 }
 
@@ -35,8 +40,10 @@ SimdScalar restitutionCurve(SimdScalar rel_vel, SimdScalar restitution)
 SimdScalar     calculateCombinedFriction(RigidBody& body0,RigidBody& body1)
 {
        SimdScalar friction = body0.getFriction() * body1.getFriction();
-       if (friction < 0.f)
-               friction = 0.f;
+
+       const SimdScalar MAX_FRICTION  = 1.f;
+       if (friction < -MAX_FRICTION)
+               friction = -MAX_FRICTION;
        if (friction > MAX_FRICTION)
                friction = MAX_FRICTION;
        return friction;
@@ -99,44 +106,26 @@ void resolveSingleBilateral(RigidBody& body1, const SimdVector3& pos1,
 
 //velocity + friction
 //response  between two dynamic objects with friction
-float resolveSingleCollisionWithFriction(
+float resolveSingleCollision(
+       RigidBody& body1,
+       RigidBody& body2,
+       ManifoldPoint& contactPoint,
+       const ContactSolverInfo& solverInfo
 
-               RigidBody& body1, 
-               const SimdVector3& pos1,
-        RigidBody& body2, 
-               const SimdVector3& pos2,
-        SimdScalar distance, 
-               const SimdVector3& normal, 
-
-               const ContactSolverInfo& solverInfo
                )
 {
-       float normalLenSqr = normal.length2();
-       ASSERT2(fabs(normalLenSqr) < 1.1f);
-       if (normalLenSqr > 1.1f)
-               return 0.f;
+       const SimdVector3& pos1 = contactPoint.GetPositionWorldOnA();
+       const SimdVector3& pos2 = contactPoint.GetPositionWorldOnB();
+    SimdScalar distance = contactPoint.GetDistance();
+       const SimdVector3& normal = contactPoint.m_normalWorldOnB;
 
        SimdVector3 rel_pos1 = pos1 - body1.getCenterOfMassPosition(); 
        SimdVector3 rel_pos2 = pos2 - body2.getCenterOfMassPosition();
-       //this jacobian entry could be re-used for all iterations
        
-       JacobianEntry jac(body1.getCenterOfMassTransform().getBasis().transpose(),
-               body2.getCenterOfMassTransform().getBasis().transpose(),
-               rel_pos1,rel_pos2,normal,body1.getInvInertiaDiagLocal(),body1.getInvMass(),
-               body2.getInvInertiaDiagLocal(),body2.getInvMass());
-
-       SimdScalar jacDiagAB = jac.getDiagonal();
-       SimdScalar jacDiagABInv = 1.f / jacDiagAB;
        SimdVector3 vel1 = body1.getVelocityInLocalPoint(rel_pos1);
        SimdVector3 vel2 = body2.getVelocityInLocalPoint(rel_pos2);
        SimdVector3 vel = vel1 - vel2;
-SimdScalar rel_vel;
-       /*      rel_vel = jac.getRelativeVelocity(
-               body1.getLinearVelocity(),
-               body1.getTransform().getBasis().transpose() * body1.getAngularVelocity(),
-               body2.getLinearVelocity(),
-               body2.getTransform().getBasis().transpose() * body2.getAngularVelocity()); 
-*/     
+       SimdScalar rel_vel;
        rel_vel = normal.dot(vel);
        
        float combinedRestitution = body1.getRestitution() * body2.getRestitution();
@@ -161,55 +150,92 @@ SimdScalar rel_vel;
        //jacDiagABInv;
        SimdScalar velocityError = -(1.0f + restitution) * damping * rel_vel;
 
-       SimdScalar penetrationImpulse = positionalError * jacDiagABInv;
-
-       SimdScalar      velocityImpulse = velocityError * jacDiagABInv;
+       SimdScalar penetrationImpulse = positionalError * contactPoint.m_jacDiagABInv;
 
-       SimdScalar friction_impulse = 0.f;
+       SimdScalar      velocityImpulse = velocityError * contactPoint.m_jacDiagABInv;
 
-       SimdScalar totalimpulse = penetrationImpulse+velocityImpulse;
+       SimdScalar normalImpulse = penetrationImpulse+velocityImpulse;
+       
+       // See Erin Catto's GDC 2006 paper: Clamp the accumulated impulse
+       float oldNormalImpulse = contactPoint.m_appliedImpulse;
+       float sum = oldNormalImpulse + normalImpulse;
+       contactPoint.m_appliedImpulse = 0.f > sum ? 0.f: sum;
+       normalImpulse = contactPoint.m_appliedImpulse - oldNormalImpulse;
+
+       body1.applyImpulse(normal*(normalImpulse), rel_pos1);
+       body2.applyImpulse(-normal*(normalImpulse), rel_pos2);
+       
+       return normalImpulse;
+}
 
-       if (totalimpulse > 0.f)
-       {
-//             SimdVector3 impulse_vector = normal * impulse;
-               body1.applyImpulse(normal*(velocityImpulse+penetrationImpulse), rel_pos1);
-               
-               body2.applyImpulse(-normal*(velocityImpulse+penetrationImpulse), rel_pos2);
-               
-               //friction
 
-               {
-               
-               SimdVector3 vel1 = body1.getVelocityInLocalPoint(rel_pos1);
-               SimdVector3 vel2 = body2.getVelocityInLocalPoint(rel_pos2);
-               SimdVector3 vel = vel1 - vel2;
-               
-               rel_vel = normal.dot(vel);
+float resolveSingleFriction(
+       RigidBody& body1,
+       RigidBody& body2,
+       ManifoldPoint& contactPoint,
+       const ContactSolverInfo& solverInfo
 
-#define PER_CONTACT_FRICTION
-#ifdef PER_CONTACT_FRICTION
-               SimdVector3 lat_vel = vel - normal * rel_vel;
-               SimdScalar lat_rel_vel = lat_vel.length();
+               )
+{
+       const SimdVector3& pos1 = contactPoint.GetPositionWorldOnA();
+       const SimdVector3& pos2 = contactPoint.GetPositionWorldOnB();
+       const SimdVector3& normal = contactPoint.m_normalWorldOnB;
 
+       SimdVector3 rel_pos1 = pos1 - body1.getCenterOfMassPosition(); 
+       SimdVector3 rel_pos2 = pos2 - body2.getCenterOfMassPosition();
+       
+       //friction
+       if (contactPoint.m_appliedImpulse>0.f)
+       {
+               //apply friction in the 2 tangential directions
+               
                float combinedFriction = calculateCombinedFriction(body1,body2);
-
-               if (lat_rel_vel > SIMD_EPSILON)
+               SimdScalar limit = contactPoint.m_appliedImpulse * combinedFriction;
+               SimdScalar relaxation = solverInfo.m_damping;
                {
-                       lat_vel /= lat_rel_vel;
-                       SimdVector3 temp1 = body1.getInvInertiaTensorWorld() * rel_pos1.cross(lat_vel); 
-                       SimdVector3 temp2 = body2.getInvInertiaTensorWorld() * rel_pos2.cross(lat_vel); 
-                        friction_impulse = lat_rel_vel / 
-                               (body1.getInvMass() + body2.getInvMass() + lat_vel.dot(temp1.cross(rel_pos1) + temp2.cross(rel_pos2)));
-                       SimdScalar normal_impulse = (penetrationImpulse+
-                               velocityImpulse) * combinedFriction;
-                       GEN_set_min(friction_impulse, normal_impulse);
-                       
-                       body1.applyImpulse(lat_vel * -friction_impulse, rel_pos1);
-                       body2.applyImpulse(lat_vel * friction_impulse, rel_pos2);
+                       // 1st tangent
+                       SimdVector3 vel1 = body1.getVelocityInLocalPoint(rel_pos1);
+                       SimdVector3 vel2 = body2.getVelocityInLocalPoint(rel_pos2);
+                       SimdVector3 vel = vel1 - vel2;
                        
+                       SimdScalar vrel = contactPoint.m_frictionWorldTangential0.dot(vel);
+                       float denom0 = body1.ComputeImpulseDenominator(pos1,contactPoint.m_frictionWorldTangential0);
+                       float denom1 = body2.ComputeImpulseDenominator(pos2,contactPoint.m_frictionWorldTangential0);
+                       float denom = relaxation/(denom0+denom1);
+
+                       // calculate j that moves us to zero relative velocity
+                       SimdScalar j = -vrel * denom;//Scalar(contactPoint.pt.m_impulseScales[1]);
+                       float total = contactPoint.m_accumulatedTangentImpulse0 + j;
+                       GEN_set_min(total, limit);
+                       GEN_set_max(total, -limit);
+      &n