package engineTester; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.vecmath.Vector3f; import org.lwjgl.openvr.Texture; import entities.Camera; import entities.Entity; import entities.Light; import entities.Player; import models.RawModel; import models.TexturedModel; import renderEngine.DisplayManager; import renderEngine.DisplayManagerDraw; import renderEngine.Loader; import renderEngine.MasterRenderer; import renderEngine.OBJLoader; import renderEngine.EntityRenderer; import shaders.StaticShader; import terrains.Terrain; import terrains.TerrainTexture; import terrains.TerrainTexturePack; import textures.ModelTexture; /** * This class contains the main method and is used to test the engine. * * @author Karl * */ public class MainGameLoop { /** * Loads up the position data for two triangles (which together make a quad) * into a VAO. This VAO is then rendered to the screen every frame. * * @param args */ public static void main(String[] args) { DisplayManager manager = new DisplayManager(); Loader loader = new Loader(); manager.init(); TexturedModel staticModel = new TexturedModel(OBJLoader.loadObjModel("tree", loader), new ModelTexture(loader.loadTexture("tree"))); //ModelTexture texture = staticModel.getTexture(); //texture.setShineDamper(10); //texture.setReflectivity(1); TexturedModel grassModel = new TexturedModel(OBJLoader.loadObjModel("grassModel", loader), new ModelTexture(loader.loadTexture("grassTexture"))); grassModel.getTexture().setHasTransparency(true); grassModel.getTexture().setUseFakeLighting(true); TexturedModel flowerModel = new TexturedModel(OBJLoader.loadObjModel("grassModel", loader), new ModelTexture(loader.loadTexture("flower"))); flowerModel.getTexture().setHasTransparency(true); flowerModel.getTexture().setUseFakeLighting(true); TexturedModel fernModel = new TexturedModel(OBJLoader.loadObjModel("fern", loader), new ModelTexture(loader.loadTexture("fern"))); fernModel.getTexture().setHasTransparency(true); Light light = new Light(new Vector3f(3000,2000,2000), new Vector3f(1,1,1)); TerrainTexture backgroundTexture = new TerrainTexture(loader.loadTexture("grass")); TerrainTexture rTexture = new TerrainTexture(loader.loadTexture("dirt")); TerrainTexture gTexture = new TerrainTexture(loader.loadTexture("grassFlowers")); TerrainTexture bTexture = new TerrainTexture(loader.loadTexture("path")); TerrainTexturePack texturePack = new TerrainTexturePack(backgroundTexture, rTexture, gTexture, bTexture); TerrainTexture blendMap = new TerrainTexture(loader.loadTexture("blendMap")); Terrain terrain = new Terrain(0,-1,loader, texturePack, blendMap); Terrain terrain2 = new Terrain(-1,-1,loader, texturePack, blendMap); Camera camera = new Camera(); List entities = new ArrayList(); Random random = new Random(); for (int iii=0; iii<500; iii++) { entities.add(new Entity(staticModel, new Vector3f(random.nextFloat()*800 - 400, 0, random.nextFloat() * -600), new Vector3f(0,0,0),3)); entities.add(new Entity(grassModel, new Vector3f(random.nextFloat()*800 - 400, 0, random.nextFloat() * -600), new Vector3f(0,0,0),1)); entities.add(new Entity(fernModel, new Vector3f(random.nextFloat()*800 - 400, 0, random.nextFloat() * -600), new Vector3f(0,0,0),0.6f)); entities.add(new Entity(flowerModel, new Vector3f(random.nextFloat()*800 - 400, 0, random.nextFloat() * -600), new Vector3f(0,0,0),1.5f)); } TexturedModel stanfordBunnyModel = new TexturedModel(OBJLoader.loadObjModel("bunny", loader), new ModelTexture(loader.loadTexture("white"))); Player player = new Player(stanfordBunnyModel, new Vector3f(0,0,-50), new Vector3f(0,0,0), 1); MasterRenderer renderer = new MasterRenderer(); manager.setDrawer(new DisplayManagerDraw() { @Override public void draw() { //entity.increasePosition(0.0f, 0, -0.01f); //entity.increaseRotation(0, 0, 0.01f); //entity.increaseRotation(0.01f, 0.02f, 0.0f); camera.move(); player.move(); renderer.processTerrain(terrain); renderer.processTerrain(terrain2); renderer.processEntity(player); for (Entity entity : entities) { renderer.processEntity(entity); } renderer.render(light, camera); } }); manager.loop(); renderer.cleanUp(); loader.cleanUp(); manager.unInit(); } }