/* | |
* Copyright (c) 2009-2010 jMonkeyEngine | |
* All rights reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are | |
* met: | |
* | |
* * Redistributions of source code must retain the above copyright | |
* notice, this list of conditions and the following disclaimer. | |
* | |
* * Redistributions in binary form must reproduce the above copyright | |
* notice, this list of conditions and the following disclaimer in the | |
* documentation and/or other materials provided with the distribution. | |
* | |
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors | |
* may be used to endorse or promote products derived from this software | |
* without specific prior written permission. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
package jme3test.bullet; | |
import com.jme3.app.SimpleApplication; | |
import com.jme3.bullet.BulletAppState; | |
import com.jme3.bullet.PhysicsSpace; | |
import com.jme3.bullet.collision.PhysicsCollisionEvent; | |
import com.jme3.bullet.collision.PhysicsCollisionListener; | |
import com.jme3.bullet.collision.shapes.SphereCollisionShape; | |
import com.jme3.renderer.RenderManager; | |
import com.jme3.scene.shape.Sphere; | |
import com.jme3.scene.shape.Sphere.TextureMode; | |
/** | |
* | |
* @author normenhansen | |
*/ | |
public class TestCollisionListener extends SimpleApplication implements PhysicsCollisionListener { | |
private BulletAppState bulletAppState; | |
private Sphere bullet; | |
private SphereCollisionShape bulletCollisionShape; | |
public static void main(String[] args) { | |
TestCollisionListener app = new TestCollisionListener(); | |
app.start(); | |
} | |
@Override | |
public void simpleInitApp() { | |
bulletAppState = new BulletAppState(); | |
stateManager.attach(bulletAppState); | |
bulletAppState.getPhysicsSpace().enableDebug(assetManager); | |
bullet = new Sphere(32, 32, 0.4f, true, false); | |
bullet.setTextureMode(TextureMode.Projected); | |
bulletCollisionShape = new SphereCollisionShape(0.4f); | |
PhysicsTestHelper.createPhysicsTestWorld(rootNode, assetManager, bulletAppState.getPhysicsSpace()); | |
PhysicsTestHelper.createBallShooter(this, rootNode, bulletAppState.getPhysicsSpace()); | |
// add ourselves as collision listener | |
getPhysicsSpace().addCollisionListener(this); | |
} | |
private PhysicsSpace getPhysicsSpace(){ | |
return bulletAppState.getPhysicsSpace(); | |
} | |
@Override | |
public void simpleUpdate(float tpf) { | |
//TODO: add update code | |
} | |
@Override | |
public void simpleRender(RenderManager rm) { | |
//TODO: add render code | |
} | |
public void collision(PhysicsCollisionEvent event) { | |
if ("Box".equals(event.getNodeA().getName()) || "Box".equals(event.getNodeB().getName())) { | |
if ("bullet".equals(event.getNodeA().getName()) || "bullet".equals(event.getNodeB().getName())) { | |
fpsText.setText("You hit the box!"); | |
} | |
} | |
} | |
} |