Ver código fonte

WeightedVertex extends Vertex

Tankernn 8 anos atrás
pai
commit
c56d4daa24

+ 9 - 9
src/main/java/eu/tankernn/gameEngine/loader/colladaLoader/GeometryLoader.java

@@ -30,7 +30,7 @@ public class GeometryLoader {
 	private int[] jointIdsArray;
 	private float[] weightsArray;
 
-	List<Vertex> vertices = new ArrayList<Vertex>();
+	List<WeightedVertex> vertices = new ArrayList<WeightedVertex>();
 	List<Vector2f> textures = new ArrayList<Vector2f>();
 	List<Vector3f> normals = new ArrayList<Vector3f>();
 	List<Integer> indices = new ArrayList<Integer>();
@@ -69,7 +69,7 @@ public class GeometryLoader {
 			float z = Float.parseFloat(posData[i * 3 + 2]);
 			Vector4f position = new Vector4f(x, y, z, 1);
 			Matrix4f.transform(correction, position, position);
-			vertices.add(new Vertex(vertices.size(), new Vector3f(position.x, position.y, position.z), vertexWeights.get(vertices.size())));
+			vertices.add(new WeightedVertex(vertices.size(), new Vector3f(position.x, position.y, position.z), vertexWeights.get(vertices.size())));
 		}
 	}
 
@@ -115,8 +115,8 @@ public class GeometryLoader {
 	}
 	
 
-	private Vertex processVertex(int posIndex, int normIndex, int texIndex) {
-		Vertex currentVertex = vertices.get(posIndex);
+	private WeightedVertex processVertex(int posIndex, int normIndex, int texIndex) {
+		WeightedVertex currentVertex = vertices.get(posIndex);
 		if (!currentVertex.isSet()) {
 			currentVertex.setTextureIndex(texIndex);
 			currentVertex.setNormalIndex(normIndex);
@@ -138,7 +138,7 @@ public class GeometryLoader {
 	private float convertDataToArrays() {
 		float furthestPoint = 0;
 		for (int i = 0; i < vertices.size(); i++) {
-			Vertex currentVertex = vertices.get(i);
+			WeightedVertex currentVertex = vertices.get(i);
 			if (currentVertex.getLength() > furthestPoint) {
 				furthestPoint = currentVertex.getLength();
 			}
@@ -169,16 +169,16 @@ public class GeometryLoader {
 		return furthestPoint;
 	}
 
-	private Vertex dealWithAlreadyProcessedVertex(Vertex previousVertex, int newTextureIndex, int newNormalIndex) {
+	private WeightedVertex dealWithAlreadyProcessedVertex(WeightedVertex previousVertex, int newTextureIndex, int newNormalIndex) {
 		if (previousVertex.hasSameTextureAndNormal(newTextureIndex, newNormalIndex)) {
 			indices.add(previousVertex.getIndex());
 			return previousVertex;
 		} else {
-			Vertex anotherVertex = previousVertex.getDuplicateVertex();
+			WeightedVertex anotherVertex = previousVertex.getDuplicateVertex();
 			if (anotherVertex != null) {
 				return dealWithAlreadyProcessedVertex(anotherVertex, newTextureIndex, newNormalIndex);
 			} else {
-				Vertex duplicateVertex = new Vertex(vertices.size(), previousVertex.getPosition(), previousVertex.getWeightsData());
+				WeightedVertex duplicateVertex = new WeightedVertex(vertices.size(), previousVertex.getPosition(), previousVertex.getWeightsData());
 				duplicateVertex.setTextureIndex(newTextureIndex);
 				duplicateVertex.setNormalIndex(newNormalIndex);
 				previousVertex.setDuplicateVertex(duplicateVertex);
@@ -200,7 +200,7 @@ public class GeometryLoader {
 	}
 
 	private void removeUnusedVertices() {
-		for (Vertex vertex : vertices) {
+		for (WeightedVertex vertex : vertices) {
 			vertex.averageTangents();
 			if (!vertex.isSet()) {
 				vertex.setTextureIndex(0);

+ 0 - 97
src/main/java/eu/tankernn/gameEngine/loader/colladaLoader/Vertex.java

@@ -1,97 +0,0 @@
-package eu.tankernn.gameEngine.loader.colladaLoader;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.lwjgl.util.vector.Vector3f;
-
-public class Vertex {
-	
-	private static final int NO_INDEX = -1;
-	
-	private Vector3f position;
-	private int textureIndex = NO_INDEX;
-	private int normalIndex = NO_INDEX;
-	private Vertex duplicateVertex = null;
-	private int index;
-	private float length;
-	private List<Vector3f> tangents = new ArrayList<Vector3f>();
-	private Vector3f averagedTangent = new Vector3f(0, 0, 0);
-	
-	
-	private VertexSkinData weightsData;
-	
-	public Vertex(int index,Vector3f position, VertexSkinData weightsData){
-		this.index = index;
-		this.weightsData = weightsData;
-		this.position = position;
-		this.length = position.length();
-	}
-	
-	public VertexSkinData getWeightsData(){
-		return weightsData;
-	}
-	
-	public void addTangent(Vector3f tangent){
-		tangents.add(tangent);
-	}
-	
-	public void averageTangents(){
-		if(tangents.isEmpty()){
-			return;
-		}
-		for(Vector3f tangent : tangents){
-			Vector3f.add(averagedTangent, tangent, averagedTangent);
-		}
-		averagedTangent.normalise();
-	}
-	
-	public Vector3f getAverageTangent(){
-		return averagedTangent;
-	}
-	
-	public int getIndex(){
-		return index;
-	}
-	
-	public float getLength(){
-		return length;
-	}
-	
-	public boolean isSet(){
-		return textureIndex!=NO_INDEX && normalIndex!=NO_INDEX;
-	}
-	
-	public boolean hasSameTextureAndNormal(int textureIndexOther,int normalIndexOther){
-		return textureIndexOther==textureIndex && normalIndexOther==normalIndex;
-	}
-	
-	public void setTextureIndex(int textureIndex){
-		this.textureIndex = textureIndex;
-	}
-	
-	public void setNormalIndex(int normalIndex){
-		this.normalIndex = normalIndex;
-	}
-
-	public Vector3f getPosition() {
-		return position;
-	}
-
-	public int getTextureIndex() {
-		return textureIndex;
-	}
-
-	public int getNormalIndex() {
-		return normalIndex;
-	}
-
-	public Vertex getDuplicateVertex() {
-		return duplicateVertex;
-	}
-
-	public void setDuplicateVertex(Vertex duplicateVertex) {
-		this.duplicateVertex = duplicateVertex;
-	}
-
-}

+ 28 - 0
src/main/java/eu/tankernn/gameEngine/loader/colladaLoader/WeightedVertex.java

@@ -0,0 +1,28 @@
+package eu.tankernn.gameEngine.loader.colladaLoader;
+
+import org.lwjgl.util.vector.Vector3f;
+
+import eu.tankernn.gameEngine.loader.obj.Vertex;
+
+public class WeightedVertex extends Vertex {
+	private VertexSkinData weightsData;
+	protected WeightedVertex duplicateVertex = null;
+	
+	public WeightedVertex(int index,Vector3f position, VertexSkinData weightsData){
+		super(index, position);
+		this.weightsData = weightsData;
+	}
+	
+	public VertexSkinData getWeightsData(){
+		return weightsData;
+	}
+
+	public WeightedVertex getDuplicateVertex() {
+		return duplicateVertex;
+	}
+
+	public void setDuplicateVertex(WeightedVertex duplicateVertex) {
+		this.duplicateVertex = duplicateVertex;
+	}
+
+}

+ 17 - 17
src/main/java/eu/tankernn/gameEngine/loader/obj/Vertex.java

@@ -12,29 +12,29 @@ public class Vertex {
 	private Vector3f position;
 	private int textureIndex = NO_INDEX;
 	private int normalIndex = NO_INDEX;
-	private Vertex duplicateVertex = null;
+	protected Vertex duplicateVertex = null;
 	private int index;
 	private float length;
 	private List<Vector3f> tangents = new ArrayList<Vector3f>();
 	private Vector3f averagedTangent = new Vector3f(0, 0, 0);
 	
-	protected Vertex(int index, Vector3f position){
+	public Vertex(int index, Vector3f position){
 		this.index = index;
 		this.position = position;
 		this.length = position.length();
 	}
 	
-	protected void addTangent(Vector3f tangent){
+	public void addTangent(Vector3f tangent){
 		tangents.add(tangent);
 	}
 	
-	protected Vertex duplicate(int newIndex){
+	public Vertex duplicate(int newIndex){
 		Vertex vertex = new Vertex(newIndex, position);
 		vertex.tangents = this.tangents;
 		return vertex;
 	}
 	
-	protected void averageTangents(){
+	public void averageTangents(){
 		if(tangents.isEmpty()){
 			return;
 		}
@@ -44,51 +44,51 @@ public class Vertex {
 		averagedTangent.normalise();
 	}
 	
-	protected Vector3f getAverageTangent(){
+	public Vector3f getAverageTangent(){
 		return averagedTangent;
 	}
 	
-	protected int getIndex(){
+	public int getIndex(){
 		return index;
 	}
 	
-	protected float getLength(){
+	public float getLength(){
 		return length;
 	}
 	
-	protected boolean isSet(){
+	public boolean isSet(){
 		return textureIndex!=NO_INDEX && normalIndex!=NO_INDEX;
 	}
 	
-	protected boolean hasSameTextureAndNormal(int textureIndexOther,int normalIndexOther){
+	public boolean hasSameTextureAndNormal(int textureIndexOther,int normalIndexOther){
 		return textureIndexOther==textureIndex && normalIndexOther==normalIndex;
 	}
 	
-	protected void setTextureIndex(int textureIndex){
+	public void setTextureIndex(int textureIndex){
 		this.textureIndex = textureIndex;
 	}
 	
-	protected void setNormalIndex(int normalIndex){
+	public void setNormalIndex(int normalIndex){
 		this.normalIndex = normalIndex;
 	}
 
-	protected Vector3f getPosition() {
+	public Vector3f getPosition() {
 		return position;
 	}
 
-	protected int getTextureIndex() {
+	public int getTextureIndex() {
 		return textureIndex;
 	}
 
-	protected int getNormalIndex() {
+	public int getNormalIndex() {
 		return normalIndex;
 	}
 
-	protected Vertex getDuplicateVertex() {
+	public Vertex getDuplicateVertex() {
 		return duplicateVertex;
 	}
 
-	protected void setDuplicateVertex(Vertex duplicateVertex) {
+	public void setDuplicateVertex(Vertex duplicateVertex) {
 		this.duplicateVertex = duplicateVertex;
 	}