This tutorial is showing the input handling for eEngine.
WebStart
eEngine Tutorial 2 - Input (To close the tutorial press any key)
package de.esw.eengine.test.t2_input;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.util.logging.Level;
import de.esw.eengine.EEngineException;
import de.esw.eengine.core.Core;
import de.esw.eengine.core.IInputDevice;
import de.esw.eengine.core.IRenderDevice;
import de.esw.eengine.core.Timer;
import de.esw.eengine.core.Core.RenderPipeline;
import de.esw.eengine.device.input.AbstractKeyboardListener;
import de.esw.eengine.device.input.AbstractMouseListener;
import de.esw.eengine.device.input.KeyboardInputDevice;
import de.esw.eengine.device.input.MouseInputDevice;
import de.esw.eengine.device.input.SystemInputDevice;
import de.esw.eengine.device.render.WindowRenderDevice;
import de.esw.eengine.renderable.Text;
/**
* Tutorial 2 showing the work of mouse and keyboard input subsystems.
*
* @author markusw
* @version $Id: Main.java 168 2005-07-07 18:43:57Z markusw $
* @since 1.0
*/
public final class Main {
/** Comment for renderDevice */
IRenderDevice renderDevice;
/** Comment for keyboardDevice */
private IInputDevice keyboardDevice;
/** Comment for mouseDevice */
private IInputDevice mouseDevice;
/**
* Keyboard listener implementation. On any key press the application is
* shutdown.
*
* @author markusw
* @version $Id: Main.java 168 2005-07-07 18:43:57Z markusw $
* @since 1.0
*/
class KeyboardInputListener extends AbstractKeyboardListener {
/**
* @see java.awt.event.KeyAdapter#keyTyped(java.awt.event.KeyEvent)
*/
@Override
public void keyTyped(KeyEvent evt) {
Core.getLogger().info("Recieved key typed: " + evt);
Main.this.renderDevice.close();
}
}
/**
* Mouse input listener implementation. Just some debug output on events are
* done here.
*
* @author markusw
* @version $Id: Main.java 168 2005-07-07 18:43:57Z markusw $
* @since 1.0
*/
class MouseInputListener extends AbstractMouseListener {
/**
* @see de.esw.eengine.device.input.AbstractMouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent e) {
Core.getLogger().info("Recieved mouse click: " + e);
}
/**
* @see de.esw.eengine.device.input.AbstractMouseListener#mouseMoved(java.awt.event.MouseEvent)
*/
@Override
public void mouseMoved(MouseEvent e) {
Core.getLogger().info("Recieved mouse moved: " + e);
}
/**
* @see de.esw.eengine.device.input.AbstractMouseListener#mouseWheelMoved(java.awt.event.MouseWheelEvent)
*/
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
Core.getLogger().info("Recieved mouse wheel: " + e);
}
}
/**
*
*/
public Main() {
this.renderDevice = null;
this.keyboardDevice = null;
this.mouseDevice = null;
}
/**
* @return True on successfull init, false otherwise
*/
private boolean init() {
Core.getInstance().initialize(RenderPipeline.OPENGL);
try {
// this.renderDevice = Core.instance().createRenderDevice(
// FullscreenRenderDevice.class);
this.renderDevice = Core.getInstance().createRenderDevice(
WindowRenderDevice.class);
this.renderDevice.open(new DisplayMode(800, 600, 16,
DisplayMode.REFRESH_RATE_UNKNOWN));
// Add system input device
new SystemInputDevice(this.renderDevice);
// Add keyboard input
this.keyboardDevice = Core.getInstance().createInputDevice(
KeyboardInputDevice.class);
this.keyboardDevice.addInputListener(new KeyboardInputListener());
this.renderDevice.attachInputDevice(this.keyboardDevice);
// Add mouse input
this.mouseDevice = Core.getInstance().createInputDevice(
MouseInputDevice.class);
this.mouseDevice.addInputListener(new MouseInputListener());
this.renderDevice.attachInputDevice(this.mouseDevice);
} catch (EEngineException e) {
Core.getLogger().log(Level.WARNING, e.getMessage(), e);
return false;
}
return true;
}
/**
* Tutorials main loop
*
* @throws EEngineException
* Thrown on some engine error
*/
private void run() throws EEngineException {
final Timer fpsTimer = new Timer();
int fps = 0;
float numFrames = 0;
Text fpsText = new Text("FPSText", "FPS: " + fps, 10, 580);
fpsText.setColor(Color.WHITE);
while (this.renderDevice.isOpen()) {
if (this.renderDevice.begin()) {
this.renderDevice.clear(Color.BLACK);
fpsText.render();
}
this.renderDevice.end();
this.renderDevice.flip();
// Calculate FPS
numFrames++;
if (fpsTimer.getDeltaTime(false) > 1000) {
fps = Math.round(numFrames / fpsTimer.getDeltaTime() * 1000);
numFrames = 0;
fpsText.setText("FPS: " + fps);
}
}
}
/**
*
*/
private void shutdown() {
this.renderDevice.close();
Core.getInstance().shutdown();
}
/**
* @param args
*/
public static void main(String[] args) {
try {
Main app = new Main();
try {
if (app.init()) {
app.run();
}
} finally {
app.shutdown();
}
} catch (EEngineException e) {
Core.getLogger().log(Level.WARNING, e.getMessage(), e);
}
System.exit(0);
}
}