This commit is contained in:
Daniel Collin 2009-03-10 17:18:05 +00:00
parent 4b2c005553
commit 70d7496324

View file

@ -9,9 +9,15 @@ import com.jme.bounding.BoundingBox;
import com.jme.scene.shape.Sphere;
import com.jme.scene.state.TextureState;
import com.jme.image.Texture;
import com.jme.input.InputHandler;
import com.jme.input.KeyInput;
import com.jme.input.action.InputAction;
import com.jme.input.action.InputActionEvent;
import com.jme.math.Vector3f;
import com.jme.util.TextureManager;
import com.jmex.physics.DynamicPhysicsNode;
import com.jmex.physics.PhysicsSpace;
import com.jmex.physics.PhysicsUpdateCallback;
import com.jmex.physics.StaticPhysicsNode;
import com.jmex.physics.util.SimplePhysicsGame;
@ -19,6 +25,7 @@ public class SpaceGame extends SimplePhysicsGame {
private StaticPhysicsNode staticNode;
private DynamicPhysicsNode dynamicNode;
private Environment environment;
private InputHandler physicsStepInputHandler;
public static void main(String[] args) {
Logger.getLogger("").setLevel( Level.WARNING );
@ -43,6 +50,21 @@ public class SpaceGame extends SimplePhysicsGame {
//light
//TODO
//controll
physicsStepInputHandler = new InputHandler();
getPhysicsSpace().addToUpdateCallbacks( new PhysicsUpdateCallback() {
public void beforeStep( PhysicsSpace space, float time ) {
physicsStepInputHandler.update( time );
}
public void afterStep( PhysicsSpace space, float time ) {
}
} );
physicsStepInputHandler.addAction( new MyInputAction( new Vector3f( 700, 0, 0 ) ),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_HOME, InputHandler.AXIS_NONE, true );
physicsStepInputHandler.addAction( new MyInputAction( new Vector3f( -700, 0, 0 ) ),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_END, InputHandler.AXIS_NONE, true );
//sphere
Sphere s = new Sphere("Sphere", 10, 10, 25);
@ -64,4 +86,18 @@ public class SpaceGame extends SimplePhysicsGame {
public void simpleUpdate(){
environment.update();
}
private class MyInputAction extends InputAction {
private final Vector3f direction;
private final Vector3f appliedForce = new Vector3f();
public MyInputAction( Vector3f direction ) {
this.direction = direction;
}
public void performAction( InputActionEvent evt ) {
appliedForce.set( direction ).multLocal( evt.getTime() );
dynamicNode.addForce( appliedForce );
}
}
}