1
0
Fork 0
This repository has been archived on 2024-01-06. You can view files and clone it, but cannot push or open issues or pull requests.
Modern-Game-Engine/src/mrdev023/gamestate/MainMenu.java
Florian Richer (MrDev023) 4abf461bf6 Update
2016-03-12 18:01:40 +01:00

102 lines
3 KiB
Java

package mrdev023.gamestate;
import java.util.ArrayList;
import org.lwjgl.glfw.*;
import org.lwjgl.opengl.*;
import mrdev023.entity.*;
import mrdev023.gameengine.*;
import mrdev023.gamestate.main.*;
import mrdev023.math.*;
import mrdev023.model.*;
import mrdev023.opengl.*;
import mrdev023.rendering.*;
import mrdev023.rendering.lights.*;
import mrdev023.utils.*;
public class MainMenu extends Game implements IGameState{
public int time = 0;
public static final float speed = 1.0f;
public ArrayList<Light> lights;
public ArrayList<Mesh> meshs;
public TextFont text;
public void update() {
time+=Timer.getDeltaTime();
}
public void updateKeyboard() {
if(Input.isKeyDown(GLFW.GLFW_KEY_ESCAPE))GameEngine.setIsRunning(false);
Camera camera = GameEngine.getCamera();
Vector3f pos = camera.getPos();
Vector3f rot = camera.getRot();
rot.x += -Input.getDMouse().getY() * Settings.sens;
rot.y += -Input.getDMouse().getX() * Settings.sens;
if(rot.x > 90)rot.x = 90;
if(rot.x < -90)rot.x = -90;
if(Input.isKey(GLFW.GLFW_KEY_W)){
pos.x += Mathf.cos(Mathf.toRadians(rot.y + 90)) * speed;
pos.z += Mathf.sin(Mathf.toRadians(rot.y + 90)) * speed;
}
if(Input.isKey(GLFW.GLFW_KEY_S)){
pos.x += -Mathf.cos(Mathf.toRadians(rot.y + 90)) * speed;
pos.z += -Mathf.sin(Mathf.toRadians(rot.y + 90)) * speed;
}
if(Input.isKey(GLFW.GLFW_KEY_A)){
pos.x += -Mathf.cos(Mathf.toRadians(rot.y)) * speed;
pos.z += -Mathf.sin(Mathf.toRadians(rot.y)) * speed;
}
if(Input.isKey(GLFW.GLFW_KEY_D)){
pos.x += Mathf.cos(Mathf.toRadians(rot.y)) * speed;
pos.z += Mathf.sin(Mathf.toRadians(rot.y)) * speed;
}
if(Input.isKey(GLFW.GLFW_KEY_LEFT_SHIFT)){
pos.y -= speed;
}
if(Input.isKey(GLFW.GLFW_KEY_SPACE)){
pos.y += speed;
}
}
public void updateMouse() {
if(Input.isButtonDown(0))Display.setMouseGrabbed(true);
if(Input.isButtonDown(1))Display.setMouseGrabbed(false);
}
public void init() {
//Ajout de la lumiere sur la scene
lights = new ArrayList<Light>();
lights.add(new AmbientLight(new Vector3f(100,100,100),Color4f.WHITE,Color4f.WHITE));
// lights.add(new AmbientLight(new Vector3f(100,100,100),Color4f.WHITE,Color4f.WHITE));
//Ajout des Objets sur la scene
meshs = new ArrayList<Mesh>();
meshs.add(new Mesh(MeshBuilder.createFloor(400, Color4f.WHITE,Texture.FLOOR),(new Matrix4f()).loadIdentity()));
meshs.add(new Mesh(MeshBuilder.createCube(100, Color4f.WHITE,Texture.WOOD),(new Matrix4f()).loadIdentity().tranlate(0, 200, 0)));
text = new TextFont("Test", 10, 10, 16, Color4f.WHITE);
}
public void render2D() {
}
public void render3D() {
for(Light light : lights){
for(Mesh mesh : meshs){
light.drawLight();
Shader.MAIN.uniform("transform", mesh.getTransform());
mesh.getVao().render3D();
}
}
}
public void renderGUI() {
text.drawText();
}
public void destroy() {
for(Mesh mesh : meshs)mesh.getVao().destroy();
}
}