Browse Source

Text particles started

Tankernn 8 years ago
parent
commit
ae263cf353

+ 7 - 0
src/main/java/eu/tankernn/gameEngine/loader/font/GUIText.java

@@ -3,6 +3,7 @@ package eu.tankernn.gameEngine.loader.font;
 import org.lwjgl.util.vector.Vector2f;
 import org.lwjgl.util.vector.Vector3f;
 
+import eu.tankernn.gameEngine.loader.Loader;
 import eu.tankernn.gameEngine.renderEngine.Vao;
 
 /**
@@ -187,4 +188,10 @@ public class GUIText {
 	public boolean isDirty() {
 		return this.dirty;
 	}
+	
+	public void update(Loader loader) {
+		TextMeshData data = font.loadText(this);
+		Vao vao = loader.loadToVAO(data.getVertexPositions(), data.getTextureCoords());
+		this.setMeshInfo(vao, data.getVertexCount());
+	}
 }

+ 21 - 0
src/main/java/eu/tankernn/gameEngine/particles/ParticleMaster.java

@@ -8,18 +8,29 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import org.lwjgl.util.vector.Matrix4f;
+import org.lwjgl.util.vector.Vector2f;
+import org.lwjgl.util.vector.Vector3f;
 
 import eu.tankernn.gameEngine.entities.Camera;
 import eu.tankernn.gameEngine.loader.Loader;
+import eu.tankernn.gameEngine.loader.font.FontType;
+import eu.tankernn.gameEngine.loader.font.GUIText;
+import eu.tankernn.gameEngine.renderEngine.Fbo;
+import eu.tankernn.gameEngine.renderEngine.font.FontRenderer;
 import eu.tankernn.gameEngine.util.DistanceSorter;
 
 public class ParticleMaster {
+	private Loader loader;
+	
 	private Map<ParticleTexture, List<Particle>> particles = new HashMap<ParticleTexture, List<Particle>>();
 	private List<ParticleSystem> systems = new ArrayList<ParticleSystem>();
 	private ParticleRenderer renderer;
+	private FontRenderer fontRenderer;
 	
 	public ParticleMaster(Loader loader, Matrix4f projectionMatrix) {
+		this.loader = loader;
 		renderer = new ParticleRenderer(loader, projectionMatrix);
+		fontRenderer = new FontRenderer();
 	}
 	
 	public void update(Camera camera) {
@@ -60,6 +71,16 @@ public class ParticleMaster {
 		renderer.finalize();
 	}
 	
+	public void addTextParticle(String text, int fontSize, FontType font, Vector3f position) {
+		GUIText guiText = new GUIText(text, fontSize, font, new Vector2f(0, 0), 1.0f, false).setColor(0, 1, 0);
+		guiText.update(loader);
+		Fbo fbo = new Fbo(100 * fontSize, 100 * fontSize, 0);
+		fbo.bindFrameBuffer();
+		fontRenderer.render(guiText);
+		fbo.unbindFrameBuffer();
+		addParticle(new Particle(new ParticleTexture(fbo.getColourTexture(), 1, true), position, new Vector3f(0, 0, 0), 0.1f, 4, 0, fontSize));
+	}
+	
 	public void addParticle(Particle particle) {
 		List<Particle> list = particles.get(particle.getTexture());
 		if (list == null) {

+ 3 - 0
src/main/java/eu/tankernn/gameEngine/particles/ParticleRenderer.java

@@ -95,6 +95,7 @@ public class ParticleRenderer {
 		modelMatrix.m22 = viewMatrix.m22;
 		
 		Matrix4f.rotate((float) Math.toRadians(rotation), new Vector3f(0, 0, 1), modelMatrix, modelMatrix);
+		Matrix4f.rotate((float) Math.toRadians(180), new Vector3f(1, 0, 0), modelMatrix, modelMatrix);
 		Matrix4f.scale(new Vector3f(scale, scale, scale), modelMatrix, modelMatrix);
 		Matrix4f modelViewMatrix = Matrix4f.mul(viewMatrix, modelMatrix, null);
 		storeMatrixData(modelViewMatrix, vboData);
@@ -123,6 +124,7 @@ public class ParticleRenderer {
 		shader.start();
 		quad.bind(0, 1, 2, 3, 4, 5, 6);
 		GL11.glEnable(GL11.GL_BLEND);
+		GL11.glDisable(GL11.GL_CULL_FACE);
 		GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 		GL11.glDepthMask(false);
 	}
@@ -130,6 +132,7 @@ public class ParticleRenderer {
 	private void finishRendering() {
 		GL11.glDepthMask(true);
 		GL11.glDisable(GL11.GL_BLEND);
+		GL11.glEnable(GL11.GL_CULL_FACE);
 		quad.unbind(0, 1, 2, 3, 4, 5, 6);
 		shader.stop();
 	}

+ 7 - 0
src/main/java/eu/tankernn/gameEngine/renderEngine/font/FontRenderer.java

@@ -47,5 +47,12 @@ public class FontRenderer {
 		GL11.glDisable(GL11.GL_BLEND);
 		GL11.glEnable(GL11.GL_DEPTH_TEST);
 	}
+
+	public void render(GUIText guiText) {
+		prepare();
+		guiText.getFont().getTextureAtlas().bindToUnit(0);
+		renderText(guiText);
+		endRendering();
+	}
 	
 }

+ 1 - 6
src/main/java/eu/tankernn/gameEngine/renderEngine/font/TextMaster.java

@@ -8,8 +8,6 @@ import java.util.Map;
 import eu.tankernn.gameEngine.loader.Loader;
 import eu.tankernn.gameEngine.loader.font.FontType;
 import eu.tankernn.gameEngine.loader.font.GUIText;
-import eu.tankernn.gameEngine.loader.font.TextMeshData;
-import eu.tankernn.gameEngine.renderEngine.Vao;
 
 public class TextMaster {
 
@@ -33,10 +31,7 @@ public class TextMaster {
 	}
 
 	public void updateText(GUIText text) {
-		FontType font = text.getFont();
-		TextMeshData data = font.loadText(text);
-		Vao vao = loader.loadToVAO(data.getVertexPositions(), data.getTextureCoords());
-		text.setMeshInfo(vao, data.getVertexCount());
+		text.update(loader);
 	}
 
 	public void loadText(GUIText text) {

+ 0 - 1
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/floating/FloatingTextureRenderer.java

@@ -8,7 +8,6 @@ import org.lwjgl.util.vector.Matrix4f;
 import eu.tankernn.gameEngine.loader.Loader;
 import eu.tankernn.gameEngine.renderEngine.Vao;
 import eu.tankernn.gameEngine.util.ICamera;
-import eu.tankernn.gameEngine.util.Maths;
 
 public class FloatingTextureRenderer {
 	

+ 1 - 2
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/floating/floatingFragment.glsl

@@ -7,7 +7,6 @@ out vec4 out_Color;
 uniform sampler2D guiTexture;
 
 void main(void){
-
+	
 	out_Color = texture(guiTexture,textureCoords);
-
 }