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);
}
}
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();
}
}
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);
}
Aggregations