Why does the following code:
/**
* EntryPoint.java
*/
package net.java.dev.bta;
import com.jme.bounding.BoundingBox;
import com.jme.scene.shape.Sphere;
import javax.swing.UIManager;
import com.jme.scene.Node;
import com.jme.input.InputHandler;
import com.jme.renderer.ColorRGBA;
import com.jme.math.Vector3f;
import com.jme.renderer.Camera;
import com.jme.system.DisplaySystem;
import net.java.dev.bta.config.Config;
import net.java.dev.bta.config.GameConfig;
import net.java.dev.bta.engine.JmeModelLoader;
import net.java.dev.bta.engine.input.BtaInputHandler;
import org.jvnet.substance.SubstanceLookAndFeel;
/**
*
* @author Rodrigo
*/
public final class BTAGame extends com.jme.app.BaseGame {
private static Config config;
private static Camera camera;
private static InputHandler inputHandler;
private static Node scene;
private static Node userInterface;
/**
* Application Entry point
*/
public static final void main(String args[]) {
try {
config = new GameConfig();
config.load();
SubstanceLookAndFeel laf = new SubstanceLookAndFeel();
laf.setCurrentTheme("org.jvnet.substance.theme.SubstanceSteelBlueTheme");
UIManager.setLookAndFeel(laf);
new BTAGame().start();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public static Config getGameConfig() {
return config;
}
protected void update(float time) {
inputHandler.update(time);
}
protected void render(float time) {
display.getRenderer().clearBuffers();
display.getRenderer().draw(scene);
}
protected void initSystem() {
display = DisplaySystem.getDisplaySystem(DisplaySystem.DISPLAY_SYSTEM_LWJGL);
display.createWindow(config.getDisplayWidth(), // returns 800
config.getDisplayHeight(), // returns 600
config.getDisplayDepth(), // returns 32
config.getDisplayRefresh(), // returns 60
config.displayIsFullscreen()); // returns true
display.getRenderer().setBackgroundColor(ColorRGBA.black);
camera = display.getRenderer().createCamera(config.getDisplayWidth(), config.getDisplayHeight());
camera.setFrustumPerspective(45.0f, (float)config.getDisplayWidth() / (float)config.getDisplayHeight(), 1, 1000);
// TODO: different cameras
Vector3f loc = new Vector3f(0.0f, 0.0f, 25.0f); // Into the screen (+Z axis)
Vector3f left = new Vector3f(-1.0f, 0.0f, 0.0f); // Left is -X axis
Vector3f up = new Vector3f(0.0f, 1.0f, 0.0f); // Up if +Y axis
Vector3f dir = new Vector3f(0.0f, 0f, -1.0f); // Out of the screen (-Z axis)
camera.setFrame(loc, left, up, dir);
camera.update();
inputHandler = new BtaInputHandler();
}
protected void initGame() {
scene = new Node("Root Node");
Sphere s = new Sphere("Sphere", 30, 30, 25);
s.setLocalTranslation(new Vector3f(0, 0, -40));
s.setModelBound(new BoundingBox());
s.updateModelBound();
scene.attachChild(s);
scene.updateGeometricState(0.0f, true);
scene.updateRenderState();
}
protected void reinit() {
}
protected void cleanup() {
}
}
Throws this NPE?
Building jar: D:Projectsbtadistbta.jar
run:
13/02/2006 10:58:32 com.jme.app.BaseGame start
INFO: Application started.
13/02/2006 10:58:32 com.jme.system.PropertiesIO <init>
INFO: PropertiesIO created
13/02/2006 10:58:32 com.jme.system.PropertiesIO load
INFO: Read properties
13/02/2006 10:58:32 com.jme.input.joystick.DummyJoystickInput <init>
INFO: Joystick support is disabled
13/02/2006 10:58:32 com.jme.system.lwjgl.LWJGLDisplaySystem <init>
INFO: LWJGL Display System created.
13/02/2006 10:58:33 com.jme.renderer.lwjgl.LWJGLRenderer <init>
INFO: LWJGLRenderer created. W: 800H: 600
13/02/2006 10:58:33 com.jme.renderer.AbstractCamera <init>
INFO: Camera created.
13/02/2006 10:58:33 com.jme.scene.Node <init>
INFO: Node created.
13/02/2006 10:58:33 com.jme.scene.Node attachChild
INFO: Child (Sphere) attached to this node (Scene graph root node)
java.lang.NullPointerException
at com.jme.scene.Spatial.onDraw(Unknown Source)
at com.jme.renderer.lwjgl.LWJGLRenderer.draw(Unknown Source)
at net.java.dev.bta.BTAGame.render(BTAGame.java:67)
at com.jme.app.BaseGame.start(Unknown Source)
at net.java.dev.bta.BTAGame.main(BTAGame.java:49)
13/02/2006 10:58:33 com.jme.app.BaseGame start
INFO: Application ending.
[code]