Dynamic_generate_mesh_from_block.patch

Index: engine/src/main/java/org/terasology/rendering/primitives/ChunkTessellator.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- engine/src/main/java/org/terasology/rendering/primitives/ChunkTessellator.java	(date 1450928393000)
+++ engine/src/main/java/org/terasology/rendering/primitives/ChunkTessellator.java	(revision )
@@ -19,6 +19,7 @@
 import gnu.trove.iterator.TIntIterator;
 import org.lwjgl.BufferUtils;
 import org.terasology.engine.subsystem.lwjgl.GLBufferPool;
+import org.terasology.entitySystem.entity.EntityRef;
 import org.terasology.math.Direction;
 import org.terasology.math.TeraMath;
 import org.terasology.math.geom.Vector3f;
@@ -54,8 +55,13 @@
             for (int z = 0; z < ChunkConstants.SIZE_Z; z++) {
                 for (int y = verticalOffset; y < verticalOffset + meshHeight; y++) {
                     Block block = chunkView.getBlock(x, y, z);
-                    if (block != null && block.getMeshGenerator() != null) {
+                    if (block != null) {
+                        EntityRef blockEntity = block.getEntity();
+                        if (blockEntity.hasComponent(EventBasedMeshGenerationComponent.class)) {
+                            blockEntity.send(new AppendBlockMesh(chunkView, mesh, x, y, z));
+                        } else if (block.getMeshGenerator() != null) {
-                        block.getMeshGenerator().generateChunkMesh(chunkView, mesh, x, y, z);
+                            block.getMeshGenerator().generateChunkMesh(chunkView, mesh, x, y, z);
+                        }
                     }
                 }
             }