package info.u250.c2d.tests.particle; import info.u250.c2d.engine.Engine; import info.u250.c2d.engine.EngineDrive; import info.u250.c2d.engine.Scene; import info.u250.c2d.engine.resources.AliasResourceManager; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputAdapter; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.badlogic.gdx.graphics.g2d.ParticleEmitter; import com.badlogic.gdx.math.Vector2; public class FollowableParticle extends Engine { @Override protected EngineDrive onSetupEngineDrive() { return new EngineX(); } @Override public void dispose () { super.dispose(); } private class EngineX implements EngineDrive{ @Override public void onResourcesRegister(AliasResourceManager<String> reg) { } @Override public void dispose() {} @Override public EngineOptions onSetupEngine() { final EngineOptions opt = new EngineOptions(new String[]{},800,480); return opt; } @Override public void onLoadedResourcesCompleted() { final ParticleEffect particleEffect = new ParticleEffect(); particleEffect.load(Gdx.files.internal("data/particles/ThrustEffect"), Gdx.files.internal("data/particles/")); final ParticleEmitter particleEmitter = particleEffect.findEmitter("Thrust"); Engine.setMainScene(new Scene() { @Override public void render(float delta) { Engine.getSpriteBatch().begin(); particleEmitter.draw(Engine.getSpriteBatch(),delta); Engine.getSpriteBatch().end(); Engine.debugInfo("Dragge or move your mouse to make the sprite follow"); } @Override public InputProcessor getInputProcessor() { return new InputAdapter(){ @Override public boolean mouseMoved(int x, int y) { particleEmitter.addParticles(10); Vector2 tmp = Engine.screenToWorld(x, y); particleEmitter.start(); particleEmitter.setPosition(tmp.x, tmp.y); return super.mouseMoved(x, y); } @Override public boolean touchDragged(int x, int y, int pointer) { Vector2 tmp = Engine.screenToWorld(x, y); particleEmitter.setPosition(tmp.x, tmp.y); return super.touchDragged(x, y, pointer); } }; } @Override public void update(float delta) { } @Override public void hide() { } @Override public void show() { } }); } } }