3D_sampleSWJGL/src/engineTester/MainGameLoop.java

136 lines
4.5 KiB
Java

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<Entity> entities = new ArrayList<Entity>();
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();
}
}