Search in sources :

Example 1 with IRenderable

use of de.gurkenlabs.litiengine.graphics.IRenderable in project litiengine by gurkenlabs.

the class RenderLoop method run.

@Override
public void run() {
    while (this.gameIsRunning) {
        final long fpsWait = (long) (1.0 / this.maxFps * 1000);
        final long renderStart = System.nanoTime();
        try {
            Game.getCamera().updateFocus();
            this.update();
            for (final IRenderable render : this.renderables) {
                this.component.render(render);
            }
            final long renderTime = (long) TimeUtilities.nanoToMs(System.nanoTime() - renderStart);
            long wait = Math.max(0, fpsWait - renderTime);
            if (wait != 0) {
                Thread.sleep(wait);
            }
        } catch (final InterruptedException e) {
            log.log(Level.SEVERE, e.getMessage(), e);
            Thread.currentThread().interrupt();
            break;
        }
    }
}
Also used : IRenderable(de.gurkenlabs.litiengine.graphics.IRenderable)

Example 2 with IRenderable

use of de.gurkenlabs.litiengine.graphics.IRenderable in project litiengine by gurkenlabs.

the class EnvironmentTests method testAddRenderable.

@Test
void testAddRenderable() {
    LightSource testLightSource = mock(LightSource.class);
    this.testEnvironment.add(testLightSource, RenderType.NORMAL);
    Collection<IRenderable> testRenderables = this.testEnvironment.getRenderables(RenderType.NORMAL);
    assertEquals(1, testRenderables.size());
    assertTrue(testRenderables.contains(testLightSource));
}
Also used : IRenderable(de.gurkenlabs.litiengine.graphics.IRenderable) LightSource(de.gurkenlabs.litiengine.entities.LightSource) GameTest(de.gurkenlabs.litiengine.GameTest) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 3 with IRenderable

use of de.gurkenlabs.litiengine.graphics.IRenderable in project litiengine by gurkenlabs.

the class Environment method render.

private void render(Graphics2D g, RenderType renderType) {
    long renderStart = System.nanoTime();
    // 1. Render map layers
    if (this.getMap() != null) {
        MapRenderer.render(g, this.getMap(), Game.world().camera().getViewport(), this, renderType);
    }
    // 2. Render renderables
    for (final IRenderable rend : this.getRenderables(renderType)) {
        rend.render(g);
    }
    // 3. Render entities
    Game.graphics().renderEntities(g, this.miscEntities.get(renderType).values(), renderType == RenderType.NORMAL);
    // 4. fire event
    this.fireRenderEvent(g, renderType);
    if (Game.config().debug().trackRenderTimes()) {
        final double renderTime = TimeUtilities.nanoToMs(System.nanoTime() - renderStart);
        Game.metrics().trackRenderTime(renderType.toString().toLowerCase(), renderTime, new GameMetrics.RenderInfo("layers", this.getMap().getRenderLayers().stream().filter(m -> m.getRenderType() == renderType).count()), new GameMetrics.RenderInfo("renderables", this.getRenderables(renderType).size()), new GameMetrics.RenderInfo("entities", this.miscEntities.get(renderType).size()));
    }
}
Also used : Color(java.awt.Color) Arrays(java.util.Arrays) AmbientLight(de.gurkenlabs.litiengine.graphics.AmbientLight) Point2D(java.awt.geom.Point2D) StaticShadow(de.gurkenlabs.litiengine.entities.StaticShadow) Rectangle2D(java.awt.geom.Rectangle2D) GameMetrics(de.gurkenlabs.litiengine.GameMetrics) ColorLayer(de.gurkenlabs.litiengine.graphics.ColorLayer) ILayer(de.gurkenlabs.litiengine.environment.tilemap.ILayer) DebugRenderer(de.gurkenlabs.litiengine.graphics.DebugRenderer) IMovementController(de.gurkenlabs.litiengine.physics.IMovementController) GravityForce(de.gurkenlabs.litiengine.physics.GravityForce) Map(java.util.Map) Trigger(de.gurkenlabs.litiengine.entities.Trigger) Creature(de.gurkenlabs.litiengine.entities.Creature) Shape(java.awt.Shape) EnumMap(java.util.EnumMap) Predicate(java.util.function.Predicate) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) EntityInfo(de.gurkenlabs.litiengine.entities.EntityInfo) RenderType(de.gurkenlabs.litiengine.graphics.RenderType) AffineTransform(java.awt.geom.AffineTransform) Logger(java.util.logging.Logger) IEntity(de.gurkenlabs.litiengine.entities.IEntity) Collectors(java.util.stream.Collectors) List(java.util.List) IMapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer) Modifier(java.lang.reflect.Modifier) Entry(java.util.Map.Entry) Optional(java.util.Optional) Spawnpoint(de.gurkenlabs.litiengine.entities.Spawnpoint) Game(de.gurkenlabs.litiengine.Game) EntityListener(de.gurkenlabs.litiengine.entities.EntityListener) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) GeometricUtilities(de.gurkenlabs.litiengine.util.geom.GeometricUtilities) CollisionBox(de.gurkenlabs.litiengine.entities.CollisionBox) LightSource(de.gurkenlabs.litiengine.entities.LightSource) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap) MapUtilities(de.gurkenlabs.litiengine.environment.tilemap.MapUtilities) Quality(de.gurkenlabs.litiengine.configuration.Quality) IMapObject(de.gurkenlabs.litiengine.environment.tilemap.IMapObject) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Blueprint(de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint) Graphics2D(java.awt.Graphics2D) StaticShadowLayer(de.gurkenlabs.litiengine.graphics.StaticShadowLayer) Prop(de.gurkenlabs.litiengine.entities.Prop) BiConsumer(java.util.function.BiConsumer) ICollisionEntity(de.gurkenlabs.litiengine.entities.ICollisionEntity) MapProperty(de.gurkenlabs.litiengine.environment.tilemap.MapProperty) MapArea(de.gurkenlabs.litiengine.entities.MapArea) Iterator(java.util.Iterator) Emitter(de.gurkenlabs.litiengine.graphics.emitters.Emitter) IRenderable(de.gurkenlabs.litiengine.graphics.IRenderable) Resources(de.gurkenlabs.litiengine.resources.Resources) ICombatEntity(de.gurkenlabs.litiengine.entities.ICombatEntity) Consumer(java.util.function.Consumer) MapObjectType(de.gurkenlabs.litiengine.environment.tilemap.MapObjectType) TimeUtilities(de.gurkenlabs.litiengine.util.TimeUtilities) Direction(de.gurkenlabs.litiengine.Direction) IMobileEntity(de.gurkenlabs.litiengine.entities.IMobileEntity) StaticShadowType(de.gurkenlabs.litiengine.graphics.StaticShadowType) RenderEngine(de.gurkenlabs.litiengine.graphics.RenderEngine) SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) Collections(java.util.Collections) IUpdateable(de.gurkenlabs.litiengine.IUpdateable) MapRenderer(de.gurkenlabs.litiengine.environment.tilemap.MapRenderer) IRenderable(de.gurkenlabs.litiengine.graphics.IRenderable) GameMetrics(de.gurkenlabs.litiengine.GameMetrics)

Aggregations

IRenderable (de.gurkenlabs.litiengine.graphics.IRenderable)3 LightSource (de.gurkenlabs.litiengine.entities.LightSource)2 Direction (de.gurkenlabs.litiengine.Direction)1 Game (de.gurkenlabs.litiengine.Game)1 GameMetrics (de.gurkenlabs.litiengine.GameMetrics)1 GameTest (de.gurkenlabs.litiengine.GameTest)1 IUpdateable (de.gurkenlabs.litiengine.IUpdateable)1 Quality (de.gurkenlabs.litiengine.configuration.Quality)1 CollisionBox (de.gurkenlabs.litiengine.entities.CollisionBox)1 Creature (de.gurkenlabs.litiengine.entities.Creature)1 EntityInfo (de.gurkenlabs.litiengine.entities.EntityInfo)1 EntityListener (de.gurkenlabs.litiengine.entities.EntityListener)1 ICollisionEntity (de.gurkenlabs.litiengine.entities.ICollisionEntity)1 ICombatEntity (de.gurkenlabs.litiengine.entities.ICombatEntity)1 IEntity (de.gurkenlabs.litiengine.entities.IEntity)1 IMobileEntity (de.gurkenlabs.litiengine.entities.IMobileEntity)1 MapArea (de.gurkenlabs.litiengine.entities.MapArea)1 Prop (de.gurkenlabs.litiengine.entities.Prop)1 SoundSource (de.gurkenlabs.litiengine.entities.SoundSource)1 Spawnpoint (de.gurkenlabs.litiengine.entities.Spawnpoint)1