package de.samdev.colorrunner.game.renderer; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import de.samdev.colorrunner.game.world.CRGameWorld; import de.samdev.colorrunner.game.world.entities.CRGameEntity; import de.samdev.colorrunner.game.world.entities.MovingEntity; public class CRGameRenderer extends AbstractGameRenderer { private CRGameWorld gameworld; public double avgExecTime = 0; public CRGameRenderer(CRGameWorld _world, float width, float height) { super(width, height); gameworld = _world; } @Override public void doRender() { updateCameraOffset(gameworld.player.bounds.x); beginDebug(); renderDebug("FPS: " + (int)gameworld.fps.getFPS()); renderDebug("Entitys: " + gameworld.entities.size()); renderDebug("ExecTime: " + (int)(avgExecTime*100) / 100.0+ " / " + (int)(10000/gameworld.fps.getFPS())/10.0 + "ms (" + (int)((avgExecTime/(1000/gameworld.fps.getFPS()))*1000) / 10.0 + "%)"); endDebug(); //################################################################################ spriteBatch.begin(); for (CRGameEntity e : gameworld.entities) { spriteBatch.draw(e.getTexture(), e.bounds.x, e.bounds.y, e.bounds.width, e.bounds.height); } //################################################################################ spriteBatch.enableBlending(); Vector3 cw_coords = cam.unproject(new Vector3(Gdx.graphics.getWidth(), 0, 0)); spriteBatch.draw(CRAssets.TEX_COLORWHEEL, cw_coords.x - 70, cw_coords.y - 70, 64, 64); spriteBatch.disableBlending(); spriteBatch.end(); //################################################################################ shapeRenderer.begin(ShapeType.Line); shapeRenderer.setColor(1, 0, 1, 1); for (CRGameEntity e : gameworld.entities) { shapeRenderer.rect(e.bounds.x, e.bounds.y, e.bounds.width, e.bounds.height); if (e instanceof MovingEntity) { MovingEntity me = (MovingEntity) e; shapeRenderer.line(me.bounds.getCenter(new Vector2()), me.bounds.getCenter(new Vector2()).add(me.getVelocity().x / 15f, 0)); shapeRenderer.line(me.bounds.getCenter(new Vector2()), me.bounds.getCenter(new Vector2()).add(0 , me.getVelocity().y / 15f)); } } shapeRenderer.end(); } }