added basic collision filtering, in broadphase. more advanced collision filtering should happen in CollisionDispatch::NeedsCollision

fixed CcdPhysicsDemo: don't pick static objects, it create a point 2 point constraint, which assert in jacobian generation
This commit is contained in:
ejcoumans
2006-06-25 19:36:50 +00:00
parent 8376da46a6
commit c8a0c95195
12 changed files with 106 additions and 26 deletions

View File

@@ -155,11 +155,7 @@ int main(int argc,char** argv)
materialProps.m_friction = 10.5f;
materialProps.m_restitution = 0.0f;
CcdConstructionInfo ccdObjectCi;
ccdObjectCi.m_friction = 0.5f;
ccdObjectCi.m_linearDamping = shapeProps.m_lin_drag;
ccdObjectCi.m_angularDamping = shapeProps.m_ang_drag;
SimdTransform tr;
tr.setIdentity();
@@ -180,6 +176,13 @@ int main(int argc,char** argv)
for (i=0;i<numObjects;i++)
{
CcdConstructionInfo ccdObjectCi;
ccdObjectCi.m_friction = 0.5f;
ccdObjectCi.m_linearDamping = shapeProps.m_lin_drag;
ccdObjectCi.m_angularDamping = shapeProps.m_ang_drag;
shapeProps.m_shape = shapePtr[shapeIndex[i]];
shapeProps.m_shape->SetMargin(0.05f);
@@ -242,12 +245,16 @@ int main(int argc,char** argv)
shapeProps.m_mass = 0.f;
ccdObjectCi.m_mass = shapeProps.m_mass;
ccdObjectCi.m_collisionFlags = CollisionObject::isStatic;
ccdObjectCi.m_collisionFilterGroup = CollisionFilterGroups::Static;
ccdObjectCi.m_collisionFilterMask = CollisionFilterGroups::All ^ CollisionFilterGroups::Static;
}
else
{
shapeProps.m_mass = 1.f;
ccdObjectCi.m_mass = shapeProps.m_mass;
ccdObjectCi.m_collisionFlags = 0;
}
@@ -817,7 +824,7 @@ void clientMouseFunc(int button, int state, int x, int y)
CcdPhysicsController* physCtrl = static_cast<CcdPhysicsController*>(hitObj);
RigidBody* body = physCtrl->GetRigidBody();
if (body)
if (body && !body->IsStatic())
{
pickedBody = body;
pickedBody->SetActivationState(DISABLE_DEACTIVATION);

View File

@@ -20,6 +20,8 @@ subject to the following restrictions:
#include "CollisionShapes/BoxShape.h"
#include "CollisionShapes/Simplex1to4Shape.h"
#include "Dynamics/RigidBody.h"
#include "BroadphaseCollision/AxisSweep3.h"
#include "ConstraintSolver/SimpleConstraintSolver.h"
#include "ConstraintSolver/OdeConstraintSolver.h"
#include "CollisionDispatch/CollisionDispatcher.h"
@@ -84,6 +86,19 @@ int gIndices[NUM_TRIANGLES*3];
int main(int argc,char** argv)
{
printf("BroadphaseProxy: %i\n",sizeof(BroadphaseProxy));
printf("AxisSweep3::Handle : %i\n",sizeof(AxisSweep3::Handle));
printf("SimpleBroadphaseProxy : %i\n",sizeof(SimpleBroadphaseProxy));
printf("RigidBody : %i\n",sizeof(RigidBody));
printf("CcdPhysicsController: %i\n",sizeof(CcdPhysicsController));
printf("ManifoldPoint: %i\n",sizeof(ManifoldPoint));
setCameraDistance(30.f);
#define TRISIZE 10.f