diff options
author | Stijn Buys <ingar@osirion.org> | 2011-01-21 14:41:35 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-01-21 14:41:35 +0000 |
commit | 035653e94a3d74b8f18c993034199d7cd08a895a (patch) | |
tree | 6acc56c14a86b499657b6e7faaf50f9e6f7ff57d /src/core/entity.cc | |
parent | 4af61dca099d2b7010d4fa83833ceeeef01b0b0f (diff) |
Support structures for complex entity collision,
renamed sv_arrysize cvar to mem_vertex.
Diffstat (limited to 'src/core/entity.cc')
-rw-r--r-- | src/core/entity.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index 4c7b0da..9275477 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -508,7 +508,19 @@ void Entity::reset() // create collision shape if (model() && model()->radius()) { const float modelscale = radius() / model()->radius(); - entity_collision_shape = new btBoxShape(to_btVector3(model()->box().max() * modelscale)); + + if (flag_is_set(Complex) && model()->collisionmesh()) { + // use collision mesh + btBvhTriangleMeshShape *mesh = new btBvhTriangleMeshShape(model()->collisionmesh()->triangles(), true, true); + entity_collision_shape = mesh; + + btVector3 modelscalevec(modelscale, modelscale, modelscale); + mesh->setLocalScaling(modelscalevec); + + } else { + // use bounding box + entity_collision_shape = new btBoxShape(to_btVector3(model()->box().max() * modelscale)); + } } else { entity_collision_shape = new btSphereShape(radius()); } |