com.jme.app
Class FixedFramerateGame

java.lang.Object
  extended bycom.jme.app.AbstractGame
      extended bycom.jme.app.FixedFramerateGame

public abstract class FixedFramerateGame
extends AbstractGame

FixedFramerateGame attempts to run the game at a fixed frame rate. The main loop makes every effort to render at the specified rate, however it is not guaranteed that the frame rate will not dip below the desired value. Game logic is updated at the same rate as the rendering. For example, if the rendering is running at 60 frames per second, the logic will also be updated 60 times per second. Note that setFrameRate(int) cannot be called prior to calling start() or a NullPointerException will be thrown. If no frame rate is specified, the game will run at 60 frames per second.

Version:
$Id: FixedFramerateGame.java,v 1.6 2004/10/14 01:23:11 mojomonkey Exp $
Author:
Eric Woroshow

Field Summary
 
Fields inherited from class com.jme.app.AbstractGame
ALWAYS_SHOW_PROPS_DIALOG, display, finished, FIRSTRUN_OR_NOCONFIGFILE_SHOW_PROPS_DIALOG, NEVER_SHOW_PROPS_DIALOG, properties
 
Constructor Summary
FixedFramerateGame()
           
 
Method Summary
protected abstract  void cleanup()
          cleanup cleans up any created objects before exiting the application.
 float getFramesPerSecond()
          Gets the current frame rate.
protected abstract  void initGame()
          initGame creates and initializes all game data required for startup.
protected abstract  void initSystem()
          initSystem creates all the necessary system components for the client application.
protected  void quit()
          Quits the program abruptly using System.exit.
protected abstract  void reinit()
          reinit rebuilds the subsystems.
protected abstract  void render(float interpolation)
          render displays the game information to the OpenGL context.
 void setFrameRate(int fps)
          Set preferred frame rate.
 void start()
          Render and update logic at a specified fixed rate.
protected abstract  void update(float interpolation)
          update updates the game state.
 
Methods inherited from class com.jme.app.AbstractGame
assertDisplayCreated, finish, getAttributes, getVersion, setDialogBehaviour, setDialogBehaviour, setDialogBehaviour
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FixedFramerateGame

public FixedFramerateGame()
Method Detail

setFrameRate

public void setFrameRate(int fps)
Set preferred frame rate. The main loop will make every attempt to maintain the given frame rate. This should not be called prior to the application being start() -ed.

Parameters:
fps - the desired frame rate in frames per second

getFramesPerSecond

public float getFramesPerSecond()
Gets the current frame rate.

Returns:
the current number of frames rendering per second

start

public final void start()
Render and update logic at a specified fixed rate.

Specified by:
start in class AbstractGame

quit

protected void quit()
Quits the program abruptly using System.exit.

Specified by:
quit in class AbstractGame
See Also:
AbstractGame.quit()

update

protected abstract void update(float interpolation)
Description copied from class: AbstractGame
update updates the game state. Physics, AI, networking, score checking and like should be completed in this method. How often and when this method is called depends on the main loop implementation.

Specified by:
update in class AbstractGame
Parameters:
interpolation - unused in this implementation
See Also:
AbstractGame.update(float interpolation)

render

protected abstract void render(float interpolation)
Description copied from class: AbstractGame
render displays the game information to the OpenGL context. Nothing altering the game state should be run during a render. How often and when this method is called depends on the main loop implementation.

Specified by:
render in class AbstractGame
Parameters:
interpolation - unused in this implementation
See Also:
AbstractGame.render(float interpolation)

initSystem

protected abstract void initSystem()
Description copied from class: AbstractGame
initSystem creates all the necessary system components for the client application. It is is called once after start is called. The display must be initialized within this method.

Specified by:
initSystem in class AbstractGame
See Also:
AbstractGame.initSystem()

initGame

protected abstract void initGame()
Description copied from class: AbstractGame
initGame creates and initializes all game data required for startup. It is suggested that caching of frequently used resources is done within this method. It is called once after initSystem has completed.

Specified by:
initGame in class AbstractGame
See Also:
AbstractGame.initGame()

reinit

protected abstract void reinit()
Description copied from class: AbstractGame
reinit rebuilds the subsystems. It may be called at any time by the client application.

Specified by:
reinit in class AbstractGame
See Also:
AbstractGame.reinit()

cleanup

protected abstract void cleanup()
Description copied from class: AbstractGame
cleanup cleans up any created objects before exiting the application. It is called once after finish is called.

Specified by:
cleanup in class AbstractGame
See Also:
AbstractGame.cleanup()