136 lines
4.5 KiB
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();
|
|
}
|
|
|
|
}
|