// Path: src/main/java/engineTester/MainGameLoop.java
// public class MainGameLoop {
// 
// 	private static World world = new World();
// 
// 	public static FileManager fileManager;
// 
// 	public static void main(String[] args) throws URISyntaxException, IOException {
// 		if (args.length == 0) {
// 			System.out.println("Please supply one of the following arguments");
// 			System.out.println("dev - Only for development use!");
// 			System.out.println("launch - For launching after using 'copy' argument");
// 			System.out.println("copy - For copying resources from jar to current dir");
// 		} else {
// 			if (args[0].equalsIgnoreCase("dev")) {
// 				fileManager = new FileManager(false);
// 				world.start();
// 			} else if (args[0].equalsIgnoreCase("copy")) {
// 				fileManager = new FileManager(false);
// 				fileManager.loadFromJar();
// 			} else if (args[0].equalsIgnoreCase("launch")) {
// 				fileManager = new FileManager(true);
// 				world.start();
// 			}
// 		}
// //		world.stop();
// 
// 	}
// }
// 
// Path: src/main/java/models/RawModel.java
// public class RawModel {
// 
// 	private int vaoID;
// 	private int vertexCount;
// 
// 	public RawModel(int vaoID, int vertexCount) {
// 		this.vaoID = vaoID;
// 		this.vertexCount = vertexCount;
// 	}
// 
// 	public int getVaoID() {
// 		return vaoID;
// 	}
// 
// 	public int getVertexCount() {
// 		return vertexCount;
// 	}
// 
// }


import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.EXTTextureFilterAnisotropic;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL14;
import org.lwjgl.opengl.GL15;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL33;
import org.lwjgl.opengl.GLContext;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import de.matthiasmann.twl.utils.PNGDecoder;
import de.matthiasmann.twl.utils.PNGDecoder.Format;
import engineTester.MainGameLoop;
import models.RawModel;
import textures.TextureData;

package renderEngine;




/*
 * Loading 3D models into memory
 */

public class Loader {

	private List<Integer> vaos = new ArrayList<Integer>();
	private List<Integer> vbos = new ArrayList<Integer>();
	private List<Integer> textures = new ArrayList<Integer>();

	public int loadToVAO(float[] positions, float[] textureCoords) {
		int vaoID = createVAO();
		storeDataInAttributeList(0, 2, positions);
		storeDataInAttributeList(1, 2, textureCoords);
		unbindVAO();
		return vaoID;
	}


// Path: src/main/java/engineTester/MainGameLoop.java
// public class MainGameLoop {
// 
// 	private static World world = new World();
// 
// 	public static FileManager fileManager;
// 
// 	public static void main(String[] args) throws URISyntaxException, IOException {
// 		if (args.length == 0) {
// 			System.out.println("Please supply one of the following arguments");
// 			System.out.println("dev - Only for development use!");
// 			System.out.println("launch - For launching after using 'copy' argument");
// 			System.out.println("copy - For copying resources from jar to current dir");
// 		} else {
// 			if (args[0].equalsIgnoreCase("dev")) {
// 				fileManager = new FileManager(false);
// 				world.start();
// 			} else if (args[0].equalsIgnoreCase("copy")) {
// 				fileManager = new FileManager(false);
// 				fileManager.loadFromJar();
// 			} else if (args[0].equalsIgnoreCase("launch")) {
// 				fileManager = new FileManager(true);
// 				world.start();
// 			}
// 		}
// //		world.stop();
// 
// 	}
// }
// 
// Path: src/main/java/models/RawModel.java
// public class RawModel {
// 
// 	private int vaoID;
// 	private int vertexCount;
// 
// 	public RawModel(int vaoID, int vertexCount) {
// 		this.vaoID = vaoID;
// 		this.vertexCount = vertexCount;
// 	}
// 
// 	public int getVaoID() {
// 		return vaoID;
// 	}
// 
// 	public int getVertexCount() {
// 		return vertexCount;
// 	}
// 
// }


// Path: src/main/java/renderEngine/Loader.java
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.EXTTextureFilterAnisotropic;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL14;
import org.lwjgl.opengl.GL15;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL33;
import org.lwjgl.opengl.GLContext;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import de.matthiasmann.twl.utils.PNGDecoder;
import de.matthiasmann.twl.utils.PNGDecoder.Format;
import engineTester.MainGameLoop;
import models.RawModel;
import textures.TextureData;

package renderEngine;




/*
 * Loading 3D models into memory
 */

public class Loader {

	private List<Integer> vaos = new ArrayList<Integer>();
	private List<Integer> vbos = new ArrayList<Integer>();
	private List<Integer> textures = new ArrayList<Integer>();

	public int loadToVAO(float[] positions, float[] textureCoords) {
		int vaoID = createVAO();
		storeDataInAttributeList(0, 2, positions);
		storeDataInAttributeList(1, 2, textureCoords);
		unbindVAO();
		return vaoID;
	}


	public RawModel loadToVAO(float[] positions, float[] textureCoords, float[] normals, int[] indices) {
