/****************************************************************************** * Copyright (c) 2008 Marco Della Vedova, Matteo Foppiano * and Pimods contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.pixelinstrument.net/license/cpl-v10.html ******************************************************************************/ package net.sf.robocode.bv3d.model; import java.util.ArrayList; import net.sf.robocode.bv3d.math.Vertex3f; /** * @author Marco Della Vedova - pixelinstrument.net * @author Matteo Foppiano - pixelinstrument.net * */ public class Model { private Vertex3f vertex[]; private Vertex3f normal[]; private Vertex3f uv[]; private ModelGroup group[]; private ModelMaterial material[]; public Model() {} public void setGroups(ArrayList g) { this.group = new ModelGroup[g.size()]; // System.out.println( "--> # of groups: " + g.size() ); for (int i = 0; i < group.length; i++) { this.group[i] = (ModelGroup) g.get(i); } } public void setVertex(ArrayList v) { this.vertex = new Vertex3f[v.size()]; for (int i = 0; i < this.vertex.length; i++) { this.vertex[i] = (Vertex3f) v.get(i); } } public void setNormals(ArrayList n) { this.normal = new Vertex3f[n.size()]; for (int i = 0; i < this.normal.length; i++) { this.normal[i] = (Vertex3f) n.get(i); } } public void setUV(ArrayList uv) { this.uv = new Vertex3f[uv.size()]; for (int i = 0; i < this.uv.length; i++) { this.uv[i] = (Vertex3f) uv.get(i); } } public void setMaterials(ArrayList m) { this.material = new ModelMaterial[m.size()]; for (int i = 0; i < this.material.length; i++) { this.material[i] = (ModelMaterial) m.get(i); } } public Vertex3f[] getVertex() { return(this.vertex); } public Vertex3f[] getNormals() { return(this.normal); } public Vertex3f[] getUV() { return(this.uv); } public ModelMaterial getMaterial(int m) { return(this.material[m]); } public int getNumberOfMaterials() { return(this.material.length); } public int getNumberOfGroups() { return(this.group.length); } public ModelGroup getGroup(int i) { return(this.group[i]); } public Vertex3f getDimension() { float minX, maxX; float minY, maxY; float minZ, maxZ; minX = maxX = this.vertex[0].x; minY = maxY = this.vertex[0].y; minZ = maxZ = this.vertex[0].z; for (int i = 1; i < this.vertex.length; i++) { if (this.vertex[i].x < minX) { minX = this.vertex[i].x; } else if (this.vertex[i].x > maxX) { maxX = this.vertex[i].x; } if (this.vertex[i].y < minY) { minY = this.vertex[i].y; } else if (this.vertex[i].y > maxY) { maxY = this.vertex[i].y; } if (this.vertex[i].z < minZ) { minZ = this.vertex[i].z; } else if (this.vertex[i].z > maxZ) { maxZ = this.vertex[i].z; } } return(new Vertex3f(maxX - minX, maxY - minY, maxZ - minZ)); } public float getDimensionX() { float minX, maxX; minX = maxX = this.vertex[0].x; for (int i = 1; i < this.vertex.length; i++) { if (this.vertex[i].x < minX) { minX = this.vertex[i].x; } else if (this.vertex[i].x > maxX) { maxX = this.vertex[i].x; } } return(maxX - minX); } public float getDimensionY() { float minY, maxY; minY = maxY = this.vertex[0].y; for (int i = 1; i < this.vertex.length; i++) { if (this.vertex[i].y < minY) { minY = this.vertex[i].y; } else if (this.vertex[i].y > maxY) { maxY = this.vertex[i].y; } } return(maxY - minY); } public float getDimensionZ() { float minZ, maxZ; minZ = maxZ = this.vertex[0].z; for (int i = 1; i < this.vertex.length; i++) { if (this.vertex[i].z < minZ) { minZ = this.vertex[i].z; } else if (this.vertex[i].z > maxZ) { maxZ = this.vertex[i].z; } } return(maxZ - minZ); } }