This commit is contained in:
Daniel Collin 2009-03-11 11:39:34 +00:00
parent e3cc55162f
commit f705ff8fb4

View file

@ -17,6 +17,7 @@ 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.Quaternion;
import com.jme.math.Vector3f;
import com.jme.util.TextureManager;
import com.jmex.physics.DynamicPhysicsNode;
@ -65,10 +66,14 @@ public class SpaceGame extends SimplePhysicsGame {
}
} );
physicsStepInputHandler.addAction( new MyInputAction( new Vector3f( 0, 700, 0 ) ),
physicsStepInputHandler.addAction( new MyInputAction(700, MyInputAction.FORWARD),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_HOME, InputHandler.AXIS_NONE, true );
physicsStepInputHandler.addAction( new MyInputAction( new Vector3f( 0, -700, 0 ) ),
physicsStepInputHandler.addAction( new MyInputAction(700, MyInputAction.BACK),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_END, InputHandler.AXIS_NONE, true );
physicsStepInputHandler.addAction( new MyInputAction(700, MyInputAction.LEFT),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_PGUP, InputHandler.AXIS_NONE, true );
physicsStepInputHandler.addAction( new MyInputAction(700, MyInputAction.RIGHT),
InputHandler.DEVICE_KEYBOARD, KeyInput.KEY_PGDN, InputHandler.AXIS_NONE, true );
//sphere
/*
@ -90,7 +95,6 @@ public class SpaceGame extends SimplePhysicsGame {
Node ship = SGUtil.loadModel("sg/data/models/ships/G6.3ds");
ship.setLocalTranslation(new Vector3f(0,0,-40));
//ship.setLocalScale(0.01f);
dynamicNode.attachChild(ship);
//ChaseCamera ccam = new ChaseCamera( cam, ship);
@ -102,16 +106,24 @@ public class SpaceGame extends SimplePhysicsGame {
}
private class MyInputAction extends InputAction {
private final Vector3f direction;
public static final int FORWARD = 1;
public static final int BACK = 2;
public static final int LEFT = 3;
public static final int RIGHT = 4;
private final float force;
private final Vector3f appliedForce = new Vector3f();
private Vector3f rotation;
private final int direction;
public MyInputAction( Vector3f direction ) {
public MyInputAction(float force, int direction) {
this.force = force;
this.direction = direction;
}
public void performAction( InputActionEvent evt ) {
appliedForce.set( direction ).multLocal( evt.getTime() );
dynamicNode.addForce( appliedForce );
rotation = dynamicNode.getLocalRotation().getRotationColumn(2);
appliedForce.set(rotation.mult(force)).multLocal( evt.getTime() );
dynamicNode.addForce(appliedForce);
}
}
}