| 
					
				 | 
			
			
				@@ -1,25 +1,23 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "rendering/FontRenderer.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "gaming-core/wrapper/Attributes.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "gaming-core/utils/List.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-FontRenderer::FontRenderer() : buffer(8 * 1024 * 1024, 8 * sizeof (float)), tex1("resources/font8x8.png"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-tex2("resources/font16x16.png"), tex3("resources/font24x24.png"), activeTex(&tex1), scale(1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertexBuffer.bind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    int step = 8 * sizeof (float); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertexBuffer.setFloatAttribute(0, 2, 0, step); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertexBuffer.setFloatAttribute(1, 2, 2 * sizeof (float), step); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertexBuffer.setFloatAttribute(2, 4, 4 * sizeof (float), step); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+FontRenderer::FontRenderer() : tex1("resources/font8x8.png"), tex2("resources/font16x16.png"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+tex3("resources/font24x24.png"), activeTex(&tex1), scale(1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertexBuffer.setAttributes(Attributes().addFloat(2).addFloat(2).addFloat(4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertexBuffer.setStreamData(256 * 4 * sizeof (float) * 8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 float FontRenderer::drawString(float x, float y, const char* text) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertexBuffer.bind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const int maxIndex = 256; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buffer.reset(maxIndex * 4 * sizeof (float) * 8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    List<float, maxIndex * 4 * 8> buffer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     int index = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     float r = 1.0f; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     float g = 1.0f; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     float b = 1.0f; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     float addX = 6.0f * scale; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     float addY = 8.0f * scale; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,17 +43,46 @@ float FontRenderer::drawString(float x, float y, const char* text) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         float maxX = minX + (1.0f / 16.0f) - 2.0f / 128.0f; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         float maxY = minY + (1.0f / 16.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buffer.add(x).add(y).add(minX).add(minY).add(r).add(g).add(b).add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buffer.add(x).add(y + addY).add(minX).add(maxY).add(r).add(g).add(b).add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buffer.add(x + addX).add(y).add(maxX).add(minY).add(r).add(g).add(b).add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buffer.add(x + addX).add(y + addY).add(maxX).add(maxY).add(r).add(g).add(b).add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(minX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(minY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(r); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(g); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(b); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(y + addY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(minX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(maxY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(r); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(g); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(b); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(x + addX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(maxX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(minY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(r); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(g); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(b); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(x + addX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(y + addY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(maxX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(maxY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(r); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(g); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(b); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buffer.add(1.0f); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         x += addX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         index++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     activeTex->bind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buffer.draw(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertexBuffer.updateData(0, buffer.getLength() * sizeof(float), buffer.begin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertexBuffer.drawStrip(buffer.getLength() / 8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return y + addY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |