This tutorial shows the work of Scripts inside eEngine.
WebStart
eEngine Tutorial 5 - Scripts
package de.esw.eengine.test.t6_scripts;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.event.KeyEvent;
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.KeyboardInputDevice;
import de.esw.eengine.device.input.SystemInputDevice;
import de.esw.eengine.device.render.WindowRenderDevice;
import de.esw.eengine.renderable.HierarchyNode;
import de.esw.eengine.renderable.Sprite;
import de.esw.eengine.renderable.Text;
import de.esw.eengine.resource.codec.GifCodec;
import de.esw.eengine.resource.codec.JpegCodec;
import de.esw.eengine.resource.codec.PngCodec;
/**
* Tutorial 6 showing the work of scripts.
*
* @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 timer */
private Timer timer;
/** Comment for fpsTimer */
private Timer fpsTimer;
/** Comment for fps */
private int fps;
/** Comment for numFrames */
private float numFrames;
/** Comment for figher */
private Sprite figher;
/**
* @return True on successfull init, false otherwise
*/
private boolean init() {
Core.getInstance().initialize(RenderPipeline.DIRECT3D);
Core.getInstance().getResourceManager().registerCodec(new JpegCodec());
Core.getInstance().getResourceManager().registerCodec(new GifCodec());
Core.getInstance().getResourceManager().registerCodec(new PngCodec());
this.timer = new Timer();
this.fpsTimer = new Timer();
this.fps = 0;
this.numFrames = 0;
try {
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 AbstractKeyboardListener() {
@Override
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ESCAPE) {
Main.this.renderDevice.close();
}
}
});
this.renderDevice.attachInputDevice(this.keyboardDevice);
// Creating sprite
int spriteImage = Core.getInstance().getResourceManager()
.loadResource("data/spacefighter.png");
this.figher = new Sprite("fighter", spriteImage);
this.figher.addScript(new DemoScript());
} catch (EEngineException e) {
Core.getLogger().log(Level.WARNING, e.getMessage(), e);
return false;
}
return true;
}
/**
* Tutorials main loop
*/
private void run() {
try {
Text fpsText = new Text("FPSText", "FPS: " + this.fps, 10, 580);
fpsText.setColor(Color.GREEN);
while (this.renderDevice.isOpen()) {
// Update sprites
long updateTime = this.timer.getDeltaTime();
this.figher.update(updateTime);
// Render sprites
if (this.renderDevice.begin()) {
this.renderDevice.clear(Color.BLACK);
this.figher.render();
fpsText.render();
}
this.renderDevice.end();
this.renderDevice.flip();
// Calculate FPS
this.numFrames++;
if (this.fpsTimer.getDeltaTime(false) > 1000) {
this.fps = Math.round(this.numFrames
/ this.fpsTimer.getDeltaTime() * 1000);
this.numFrames = 0;
fpsText.setText("FPS: " + this.fps);
}
}
} catch (EEngineException e) {
Core.getLogger().log(Level.WARNING, e.getMessage(), e);
}
}
/**
*
*/
private void shutdown() {
this.renderDevice.close();
Core.getInstance().shutdown();
}
/**
* @param args
*/
public static void main(String[] args) {
Main app = new Main();
try {
if (app.init()) {
app.run();
}
} finally {
app.shutdown();
}
System.exit(0);
}
}
package de.esw.eengine.test.t6_scripts;
import de.esw.eengine.core.IScript;
import de.esw.eengine.renderable.AbstractScript;
import de.esw.eengine.renderable.HierarchyNode;
/**
* @author markusw
* @version $Id: DemoScript.java 142 2005-06-29 11:31:02Z markusw $
* @param
* DemoScript extending type
* @since 1.0
*/
public class DemoScript extends
AbstractScript implements IScript {
/**
*
*/
public DemoScript() {
super("DemoScript");
}
/**
* @see de.esw.eengine.renderable.AbstractScript#update(float)
*/
@Override
public void update(float delta) {
this.target.move(1, 1);
this.target.scale(-0.0015f, -0.0015f);
}
}