space-game/src/sg/SpaceGame.java

103 lines
3.5 KiB
Java
Raw Normal View History

2009-03-08 17:25:15 +00:00
package sg;
2009-03-10 13:04:15 +00:00
import java.util.logging.Level;
import java.util.logging.Logger;
2009-03-10 13:41:26 +00:00
import sg.env.Environment;
2009-03-10 13:04:15 +00:00
import com.jme.bounding.BoundingBox;
import com.jme.scene.shape.Sphere;
import com.jme.scene.state.TextureState;
2009-03-09 09:59:22 +00:00
import com.jme.image.Texture;
2009-03-10 17:18:05 +00:00
import com.jme.input.InputHandler;
import com.jme.input.KeyInput;
import com.jme.input.action.InputAction;
import com.jme.input.action.InputActionEvent;
2009-03-09 10:32:07 +00:00
import com.jme.math.Vector3f;
2009-03-09 09:59:22 +00:00
import com.jme.util.TextureManager;
2009-03-10 15:27:00 +00:00
import com.jmex.physics.DynamicPhysicsNode;
2009-03-10 17:18:05 +00:00
import com.jmex.physics.PhysicsSpace;
import com.jmex.physics.PhysicsUpdateCallback;
2009-03-10 15:27:00 +00:00
import com.jmex.physics.StaticPhysicsNode;
import com.jmex.physics.util.SimplePhysicsGame;
2009-03-09 09:59:22 +00:00
2009-03-10 15:27:00 +00:00
public class SpaceGame extends SimplePhysicsGame {
private StaticPhysicsNode staticNode;
private DynamicPhysicsNode dynamicNode;
2009-03-10 13:41:26 +00:00
private Environment environment;
2009-03-10 17:18:05 +00:00
private InputHandler physicsStepInputHandler;
2009-03-08 17:25:15 +00:00
public static void main(String[] args) {
2009-03-10 16:10:14 +00:00
Logger.getLogger("").setLevel( Level.WARNING );
2009-03-10 13:04:15 +00:00
SpaceGame game = new SpaceGame();
2009-03-10 15:27:00 +00:00
game.setConfigShowMode(ConfigShowMode.AlwaysShow);
2009-03-10 15:47:13 +00:00
game.start();
2009-03-09 09:59:22 +00:00
}
protected void simpleInitGame() {
display.setTitle("SpaceGame");
2009-03-10 13:41:26 +00:00
//physics
2009-03-10 15:27:00 +00:00
getPhysicsSpace().setDirectionalGravity(new Vector3f(0f, 0f, 0f));
staticNode = getPhysicsSpace().createStaticNode();
rootNode.attachChild(staticNode);
dynamicNode = getPhysicsSpace().createDynamicNode();
rootNode.attachChild(dynamicNode);
2009-03-10 13:41:26 +00:00
//environment
environment = new Environment();
rootNode.attachChild(environment);
2009-03-10 15:27:00 +00:00
2009-03-10 13:58:05 +00:00
//light
//TODO
2009-03-10 17:18:05 +00:00
//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 );
2009-03-10 15:27:00 +00:00
2009-03-10 13:41:26 +00:00
//sphere
2009-03-10 16:34:11 +00:00
Sphere s = new Sphere("Sphere", 10, 10, 25);
2009-03-10 13:04:15 +00:00
s.setLocalTranslation(new Vector3f(0,0,-40));
s.setModelBound(new BoundingBox());
s.updateModelBound();
Texture texture = TextureManager.loadTexture(
SpaceGame.class.getClassLoader().getResource(
2009-03-10 15:27:00 +00:00
"jmetest/data/images/Monkey.jpg"),
Texture.MinificationFilter.BilinearNearestMipMap,
Texture.MagnificationFilter.Bilinear);
2009-03-10 13:04:15 +00:00
TextureState ts = display.getRenderer().createTextureState();
ts.setEnabled(true);
ts.setTexture(texture);
s.setRenderState(ts);
2009-03-10 15:27:00 +00:00
dynamicNode.attachChild(s);
2009-03-09 09:59:22 +00:00
}
2009-03-09 10:32:07 +00:00
2009-03-09 09:59:22 +00:00
public void simpleUpdate(){
2009-03-10 16:32:33 +00:00
environment.update();
2009-03-09 10:32:07 +00:00
}
2009-03-10 17:18:05 +00:00
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 );
}
}
2009-03-09 09:59:22 +00:00
}