4
« on: September 27, 2010, 04:06:51 pm »
Hi, I'm trying to develop a simple application for testing purpose, and I found a strange behavour of the getPolygonIDs function.
It actually work perfectly on my desktop environment (win XP), but the same code seem to not work on Android (Nexus One).
All other functionality seems to work, but this one do not work. Could be a bug? My mistake? I'm actually doing the same thing found if the sample code as shown below:
public void collision(CollisionEvent e) {
/**
* Make sure that something collided with the ground and that this
* was an actual entity (and not the camera or whatever).
*/
if (e.getType()==CollisionEvent.TYPE_TARGET && e.getSource()!=null) {
Object obj=e.getSource();
/**
* Make sure, that the source of the collision was really
* a bullet.
*/
if (obj instanceof Bullet) {
Bullet bullet=(Bullet) obj;
bullet.disable();
Object3D ground=e.getObject();
/**
* Here, we have to calculate the position and orientation of the decal the
* bullet leaves at the ground. This requires a call to calcMinDistance() and
* to make sure that we are not triggering the CollisionListener again in that case,
* we temporally disable collision events on the ground.
*/
ground.disableCollisionListeners();
SimpleVector za=bullet.getZAxis();
SimpleVector tc=bullet.getTransformedCenter();
float d=ground.calcMinDistance(tc, za, bullet.getSpeed()*10);
if (d!=Object3D.COLLISION_NONE) {
za.scalarMul(d*0.6f);
tc.add(za);
int[] ids=e.getPolygonIDs();
if (ids!=null&&ids.length>0) {
int id=ids[0];
SimpleVector n=e.getObject().getPolygonManager().getTransformedNormal(id);
bulMan.createDecal(tc, n);
}
}
/**
* And on again...
*/
ground.enableCollisionListeners();
}
}
}
}
This is the code of the car demo (in the bulletTerrainListener file) and the function is used to place a decal when a shot hit the ground.
I don't undestand why on Android the function do not work and the issue is due to a null value of the function getPolygonIDs().
Thanks