I'm trying to detect collision between btCompountShape
and btSphereShape
with Bullet
library used in LibGDX
project.
My detection method looks like this:
def checkCollision(left: btCollisionObject, right: btCollisionObject) = {
val leftWrapper = new CollisionObjectWrapper(left)
val rightWrapper = new CollisionObjectWrapper(right)
val algorithm = collisionDispatcher.findAlgorithm(leftWrapper.wrapper, rightWrapper.wrapper)
val info = new btDispatcherInfo()
val result = new btManifoldResult(leftWrapper.wrapper, rightWrapper.wrapper)
algorithm.processCollision(leftWrapper.wrapper, rightWrapper.wrapper, info, result)
val r = result.getPersistentManifold.getNumContacts > 0
result.dispose()
info.dispose()
algorithm.dispose()
leftWrapper.dispose()
rightWrapper.dispose()
r
}
It works perfectly fine when I use it to detect collision between two btSphereShape
objects. But when I pass one that is btCompoundShape
it fails. For testing I created my btCompoundShape
with only one child shape, namely simple btSphereShape
. It fails with following error:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.game.CollisionDetector$class.checkCollision(CollisionDetector.scala:19)
at com.game.SmlPwsat2Game.checkCollision(SmlPwsat2Game.scala:14)
at com.game.SmlPwsat2Game.render(SmlPwsat2Game.scala:87)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
I checked that result.getPersistentManifold
returns null. Why? And what can I do to make it work?