[Change] Messing around with collisions some more, not really helpful.
This commit is contained in:
parent
7a20ca5876
commit
b48426d6c4
@ -156,7 +156,7 @@ static bool _OnCollision(dGeomID g1, dGeomID g2, Object* o1, Object* o2,
|
|||||||
|
|
||||||
static void nearCallback(void* data, dGeomID oO, dGeomID o1) {
|
static void nearCallback(void* data, dGeomID oO, dGeomID o1) {
|
||||||
/* Create an array of dContact objects to hold the contact joints. */
|
/* Create an array of dContact objects to hold the contact joints. */
|
||||||
static const int MAX_CONTACTS = 20;
|
static const int MAX_CONTACTS = 100;
|
||||||
dContact contact[MAX_CONTACTS];
|
dContact contact[MAX_CONTACTS];
|
||||||
|
|
||||||
for(int i = 0; i < MAX_CONTACTS; i++) {
|
for(int i = 0; i < MAX_CONTACTS; i++) {
|
||||||
@ -186,7 +186,6 @@ static void nearCallback(void* data, dGeomID oO, dGeomID o1) {
|
|||||||
* finally create the temp contact joint between the two geom bodies.
|
* finally create the temp contact joint between the two geom bodies.
|
||||||
*/
|
*/
|
||||||
dJointID c = dJointCreateContact(Space::world, _contactgroup, contact + i);
|
dJointID c = dJointCreateContact(Space::world, _contactgroup, contact + i);
|
||||||
printf("Depth: %f\n", contact[i].geom.depth);
|
|
||||||
#if 0
|
#if 0
|
||||||
struct dContactGeom {
|
struct dContactGeom {
|
||||||
dVector3 pos; /* Constact position. */
|
dVector3 pos; /* Constact position. */
|
||||||
|
@ -38,26 +38,10 @@ void StaticRigidBody::SetGeomFromSBREModel(int sbreModel, ObjParams* params) {
|
|||||||
sbreCollMesh->pVertex[i] = -sbreCollMesh->pVertex[i];
|
sbreCollMesh->pVertex[i] = -sbreCollMesh->pVertex[i];
|
||||||
sbreCollMesh->pVertex[i+2] = -sbreCollMesh->pVertex[i+2];
|
sbreCollMesh->pVertex[i+2] = -sbreCollMesh->pVertex[i+2];
|
||||||
}
|
}
|
||||||
/* Make normals. */
|
|
||||||
meshNormals = new float[sbreCollMesh->ni];
|
|
||||||
for(int i = 0; i < sbreCollMesh->ni; i += 3) {
|
|
||||||
float* vtx1 = sbreCollMesh->pVertex + 3*sbreCollMesh->pIndex[i];
|
|
||||||
float* vtx2 = sbreCollMesh->pVertex + 3*sbreCollMesh->pIndex[i+1];
|
|
||||||
float* vtx3 = sbreCollMesh->pVertex + 3*sbreCollMesh->pIndex[i+2];
|
|
||||||
vector3f v1(vtx1[0], vtx1[1], vtx1[2]);
|
|
||||||
vector3f v2(vtx2[0], vtx2[1], vtx2[2]);
|
|
||||||
vector3f v3(vtx3[0], vtx3[1], vtx3[2]);
|
|
||||||
vector3f n = vector3f::Cross(v1-v2, v1-v3);
|
|
||||||
n.Normalize();
|
|
||||||
meshNormals[i] = n.x;
|
|
||||||
meshNormals[i+1] = n.y;
|
|
||||||
meshNormals[i+2] = n.z;
|
|
||||||
|
|
||||||
}
|
|
||||||
dTriMeshDataID triMeshDataID = dGeomTriMeshDataCreate();
|
dTriMeshDataID triMeshDataID = dGeomTriMeshDataCreate();
|
||||||
dGeomTriMeshDataBuildSingle1(triMeshDataID, (void*)sbreCollMesh->pVertex,
|
dGeomTriMeshDataBuildSingle(triMeshDataID, (void*)sbreCollMesh->pVertex,
|
||||||
3*sizeof(float), sbreCollMesh->nv, (void*)sbreCollMesh->pIndex,
|
3*sizeof(float), sbreCollMesh->nv, (void*)sbreCollMesh->pIndex,
|
||||||
sbreCollMesh->ni, 3*sizeof(int), NULL/*meshNormals*/);
|
sbreCollMesh->ni, 3*sizeof(int));
|
||||||
|
|
||||||
/* TODO: Leaking StaticRigidBody m_geom. */
|
/* TODO: Leaking StaticRigidBody m_geom. */
|
||||||
m_geom = dCreateTriMesh(0, triMeshDataID, NULL, NULL, NULL);
|
m_geom = dCreateTriMesh(0, triMeshDataID, NULL, NULL, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user