Search in sources :

Example 1 with Entity

use of com.chrisali.javaflightsim.lwjgl.entities.Entity in project j6dof-flight-sim by chris-ali.

the class MasterRenderer method processEntity.

private void processEntity(Entity entity) {
    TexturedModel entityModel = entity.getModel();
    List<Entity> batch = entityMap.get(entityModel);
    if (batch != null) {
        batch.add(entity);
    } else {
        List<Entity> newBatch = new ArrayList<>();
        newBatch.add(entity);
        entityMap.put(entityModel, newBatch);
    }
}
Also used : Entity(com.chrisali.javaflightsim.lwjgl.entities.Entity) TexturedModel(com.chrisali.javaflightsim.lwjgl.models.TexturedModel) ArrayList(java.util.ArrayList)

Example 2 with Entity

use of com.chrisali.javaflightsim.lwjgl.entities.Entity in project j6dof-flight-sim by chris-ali.

the class EntityRenderer method render.

public void render(Map<TexturedModel, List<Entity>> entities) {
    for (TexturedModel model : entities.keySet()) {
        prepareTexturedModel(model);
        List<Entity> batch = entities.get(model);
        for (Entity entity : batch) {
            prepareInstance(entity);
            GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
        }
        unbindTexturedModel();
    }
}
Also used : Entity(com.chrisali.javaflightsim.lwjgl.entities.Entity) TexturedModel(com.chrisali.javaflightsim.lwjgl.models.TexturedModel)

Example 3 with Entity

use of com.chrisali.javaflightsim.lwjgl.entities.Entity in project j6dof-flight-sim by chris-ali.

the class MasterRenderer method renderWholeScene.

/**
 * Takes all entities and terrains, and adds them (if necessary) to entity/terrain maps, and then renders the scene with
 * the given lights, camera and clipping plane
 *
 * @param entityCollection
 * @param terrainTreeMap
 * @param lights
 * @param camera
 * @param clippingPlane
 */
public void renderWholeScene(EntityCollections entityCollection, TreeMap<String, Terrain> terrainTreeMap, List<Light> lights, Camera camera, Vector4f clippingPlane) {
    // Process miscellaneous entities from entityCollention
    for (Entity entity : entityCollection.getStaticEntities()) processEntity(entity);
    for (Entity entity : entityCollection.getLitEntities()) processEntity(entity);
    this.terrainTree = new TreeSet<>(terrainTreeMap.values());
    // Process entities tied to each terrain only if they are part of a terrain within the draw distance
    for (Terrain terrain : terrainTree) {
        if (terrain.getDistanceFromOwnship() < drawDistance) {
            for (Entity entity : terrain.getStaticEntities()) processEntity(entity);
            for (Entity entity : terrain.getLitEntities()) processEntity(entity);
        }
    }
    render(lights, camera, clippingPlane);
}
Also used : Entity(com.chrisali.javaflightsim.lwjgl.entities.Entity) Terrain(com.chrisali.javaflightsim.lwjgl.terrain.Terrain)

Aggregations

Entity (com.chrisali.javaflightsim.lwjgl.entities.Entity)3 TexturedModel (com.chrisali.javaflightsim.lwjgl.models.TexturedModel)2 Terrain (com.chrisali.javaflightsim.lwjgl.terrain.Terrain)1 ArrayList (java.util.ArrayList)1