This commit is contained in:
François Autin 2021-05-28 22:58:09 +02:00
commit 41784b3d2e
4 changed files with 161 additions and 126 deletions

View File

@ -18,14 +18,14 @@ void main()
vec2 fragCoordTemp = fragCoord; vec2 fragCoordTemp = fragCoord;
fragCoordTemp = 8. * fragCoordTemp / fragCoordTemp.y-vec2(7,4); fragCoordTemp = 8. * fragCoordTemp / fragCoordTemp.y-vec2(7,4);
perlinNoise = sin(perlinNoise + time); perlinNoise = sin(perlinNoise + time*15);
perlinNoise = mix(perlinNoise,color,0.5f); perlinNoise = mix(perlinNoise,color,0.5f);
vec4 tex = texture(texture1, texCoord); vec4 tex = texture(texture1, texCoord);
if (tex.a == 0.0){ if (tex.a == 0.0){
FragColor = tex; FragColor = tex;
} else{ } else{
FragColor = mix(tex, perlinNoise, 0.5); FragColor = mix(tex, perlinNoise, 0.5f);
FragColor.a = 1.0f; FragColor.a = 1.0f;
} }
} }

View File

@ -0,0 +1,29 @@
{
"arena": [
"arena1.png",
"arena2.png",
"random"
],
"nb_players": [
"1",
"2"
],
"character1": [
"character1.png",
"character2.png",
"random"
],
"character2": [
"character1.png",
"character1_swapcolor.png",
"character2.png",
"character2_swapcolor.png",
"random"
],
"resolution": [
"1280 x 1024",
"1680 x 1050",
"1920 x 1080",
"800 x 600"
]
}

View File

@ -27,14 +27,18 @@ public class Engine {
private boolean running; private boolean running;
private final int width;
private final int height;
/** /**
* Create the engine and initial attributes use .init() to start the engine * Create the engine and initial attributes use .init() to start the engine
*/ */
public Engine() { public Engine(int width, int height, float aspectRatio) {
this.running = false; this.running = false;
this.objectsGl = new ArrayList<>(); this.objectsGl = new ArrayList<>();
float width = 1280.0f; this.width = width;
ObjectGl.projection = Matrix4f.orthographic(-width, width, -width * 9.0f / 16.0f, width * 9.0f / 16.0f, 0.1f, 100.0f); this.height = height;
ObjectGl.projection = Matrix4f.orthographic(-1000, 1000, -1000 * aspectRatio, 1000 * aspectRatio, 0.1f, 100.0f);
ObjectGl.view = Matrix4f.translate(new Vector3f(0.0f, 0.0f, 1.0f)); ObjectGl.view = Matrix4f.translate(new Vector3f(0.0f, 0.0f, 1.0f));
} }
@ -54,8 +58,8 @@ public class Engine {
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); //Compatible MAC glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); //Compatible MAC
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //Le core profile est l'interface 'avancé' d'openGL glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //Le core profile est l'interface 'avancé' d'openGL
int width = 1280; int width = this.width;
int height = 720; int height = this.height;
this.setWindow(glfwCreateWindow(width, height, "Boulevard Combattant", NULL, NULL)); this.setWindow(glfwCreateWindow(width, height, "Boulevard Combattant", NULL, NULL));
assert getWindow() != NULL; assert getWindow() != NULL;
@ -115,7 +119,8 @@ public class Engine {
/** /**
* Add obj to the render queue * Add obj to the render queue
* @param obj *
* @param obj ObjectGl to render
*/ */
public void add_objectGl(ObjectGl obj) { public void add_objectGl(ObjectGl obj) {
objectsGl.add(obj); objectsGl.add(obj);
@ -157,7 +162,7 @@ public class Engine {
}; };
public static void main(String[] args) { public static void main(String[] args) {
Engine engine = new Engine(); Engine engine = new Engine(1280, 720, 9.0f / 16.0f);
int speed = 10; //vitesse déplacement Object int speed = 10; //vitesse déplacement Object
engine.init(); engine.init();
@ -170,7 +175,7 @@ public class Engine {
zangief.setTextureWrap(58, 0, 62, 84, ObjectGl.STICK_TOP); zangief.setTextureWrap(58, 0, 62, 84, ObjectGl.STICK_TOP);
engine.add_objectGl(zangief); engine.add_objectGl(zangief);
zangief.translate(new Vector3f(-5000.0f, 500.0f, 10.0f)); zangief.translate(new Vector3f(-5000.0f, 500.0f, 10.0f));
zangief.setColor(new Vector3f(0.0f, 0.0f, 1.0f)); zangief.setColor(new Vector3f(1.0f, 1.0f, 1.0f));
zangief.useTime = true; zangief.useTime = true;
zangief.setShader("shaders/StylishShaders/BasicVert.glsl", "shaders/StylishShaders/PerlinNoise.glsl"); zangief.setShader("shaders/StylishShaders/BasicVert.glsl", "shaders/StylishShaders/PerlinNoise.glsl");
@ -188,10 +193,10 @@ public class Engine {
// Game logic should fit here // Game logic should fit here
if (present) { if (present) {
gamepadInput(zangief, speed); Input.gamepadInput(zangief, speed);
} }
keyboardInput(zangief, speed); Input.keyboardInput(zangief, speed);
// input(smiley2, speed); // input(smiley2, speed);
/* /*
@ -218,88 +223,4 @@ public class Engine {
if (engine.shouldClose()) engine.setRunning(false); if (engine.shouldClose()) engine.setRunning(false);
} }
} }
private static void gamepadInput(ObjectGl token, int speed) {
ByteBuffer gamepadButton = glfwGetJoystickButtons(GLFW_JOYSTICK_1);
FloatBuffer gamepadAxes = glfwGetJoystickAxes(GLFW_JOYSTICK_1);
assert gamepadAxes != null;
assert gamepadButton != null;
String name = GLFW.glfwGetJoystickName(GLFW_JOYSTICK_1);
System.out.println("GamePad Name :" + name);
// for (int i =0 ; i < gamepadAxes.capacity(); i++) {
// System.out.println(i + " :" + gamepadAxes.get(i));
// }
if (gamepadButton.get(0) ==1 ) { // appuie sur croix(PlayStation) A (Xbox)
token.translate(new Vector3f ( 0.0f, speed * 5.0f, 0.0f));
}
if ( (gamepadAxes.get(2) < -0.1 || gamepadAxes.get(2) > 0.1) ) { // de droite à gauche //joystick gauche
token.translate(new Vector3f (5*speed * gamepadAxes.get(2), 0.0f, 0.0f));
if ( gamepadAxes.get(2) < -0.1 ){
token.setTextureWrap(121,0,57,80, ObjectGl.DEFAULT);
}else if (gamepadAxes.get(2) > 0.1) {
token.setTextureWrap(178,0,62,82, ObjectGl.DEFAULT);
}
}
if ( (gamepadAxes.get(3) < -0.1 || gamepadAxes.get(3) > 0.1) ) { // de haut en bas //joystick gauche
token.translate(new Vector3f (0.0f, -5* speed * gamepadAxes.get(3), 0.0f));
}
/* Buttons
0 : Croix / A
1: rond /B
2: carré / X
3: triangle / Y
4: L1 / LB
5: R1 / RB
6:select
7:start
8:L3
9:R3
10: haut
11: droite
12: bas
13: gauche
*/
/* Axes
0 : left X axe ( right : 1 left -1)
1: left Y axe ( down : 1 , Up -1)
2: right X axe ( right : 1 left -1)
3: right Y axe ( down : 1 , Up -1)
4:L2 / LT : 1 active, -1 unactive
5: R2 /RT : 1 active, -1 unactive
*/
}
public static void keyboardInput(ObjectGl token, int speed) {
boolean keyPressed = false;
if (Input.isKeyDown(GLFW.GLFW_KEY_S)) {
token.setTextureWrap(161,260,56,59, ObjectGl.STICK_BOTTOM);
keyPressed = true;
} else if (Input.isKeyDown(GLFW.GLFW_KEY_W)) {
// token.translate(new Vector3f (0.0f, speed * 5.0f, 0.0f));
keyPressed = true;
}
if (Input.isKeyDown(GLFW.GLFW_KEY_A)) {
token.translate(new Vector3f (speed *-5.0f, 0.0f, 0.0f));
// token.setTextureWrap(121,0,57,80, ObjectGl.STICK_TOP);
token.setTextureWrap(121,0,57,82, ObjectGl.STICK_TOP);
keyPressed = true;
}
else if (Input.isKeyDown(GLFW.GLFW_KEY_D)) {
token.translate(new Vector3f (speed * 5.0f, 0.0f, 0.0f));
// token.setTextureWrap(178,0,62,82, ObjectGl.STICK_TOP);
token.setTextureWrap(178,0,62,82, ObjectGl.STICK_TOP);
keyPressed = true;
}
// if (!keyPressed) token.setTextureWrap(58,0,62,84, ObjectGl.STICK_TOP);
if (!keyPressed) token.setTextureWrap(58,0,62,82, ObjectGl.STICK_TOP);
}
} }

View File

@ -1,8 +1,13 @@
package engine; package engine;
import engine.math.Vector3f;
import engine.object.ObjectGl;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWKeyCallback; import org.lwjgl.glfw.GLFWKeyCallback;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.GL11.*;
@ -19,8 +24,88 @@ public class Input extends GLFWKeyCallback {
if (glGetInteger(GL_POLYGON_MODE) == GL_FILL) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); if (glGetInteger(GL_POLYGON_MODE) == GL_FILL) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
else glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); else glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
} }
public static boolean isKeyDown(int keyCode) { public static boolean isKeyDown(int keyCode) {
return glfwGetKey(Engine.getWindow(), keyCode) == 1; return glfwGetKey(Engine.getWindow(), keyCode) == 1;
} }
public static void gamepadInput(ObjectGl token, int speed) {
ByteBuffer gamepadButton = glfwGetJoystickButtons(GLFW_JOYSTICK_1);
FloatBuffer gamepadAxes = glfwGetJoystickAxes(GLFW_JOYSTICK_1);
assert gamepadAxes != null;
assert gamepadButton != null;
String name = GLFW.glfwGetJoystickName(GLFW_JOYSTICK_1);
System.out.println("GamePad Name :" + name);
// for (int i =0 ; i < gamepadAxes.capacity(); i++) {
// System.out.println(i + " :" + gamepadAxes.get(i));
// }
if (gamepadButton.get(0) ==1 ) { // appuie sur croix(PlayStation) A (Xbox)
token.translate(new Vector3f( 0.0f, speed * 5.0f, 0.0f));
}
if ( (gamepadAxes.get(2) < -0.1 || gamepadAxes.get(2) > 0.1) ) { // de droite à gauche //joystick gauche
token.translate(new Vector3f (5 * speed * gamepadAxes.get(2), 0.0f, 0.0f));
if ( gamepadAxes.get(2) < -0.1 ){
token.setTextureWrap(121,0,57,80, ObjectGl.DEFAULT);
}else if (gamepadAxes.get(2) > 0.1) {
token.setTextureWrap(178,0,62,82, ObjectGl.DEFAULT);
}
}
if ( (gamepadAxes.get(3) < -0.1 || gamepadAxes.get(3) > 0.1) ) { // de haut en bas //joystick gauche
token.translate(new Vector3f (0.0f, -5 * speed * gamepadAxes.get(3), 0.0f));
}
/* Buttons
0 : Croix / A
1: rond /B
2: carré / X
3: triangle / Y
4: L1 / LB
5: R1 / RB
6:select
7:start
8:L3
9:R3
10: haut
11: droite
12: bas
13: gauche
*/
/* Axes
0 : left X axe ( right : 1 left -1)
1: left Y axe ( down : 1 , Up -1)
2: right X axe ( right : 1 left -1)
3: right Y axe ( down : 1 , Up -1)
4:L2 / LT : 1 active, -1 unactive
5: R2 /RT : 1 active, -1 unactive
*/
}
public static void keyboardInput(ObjectGl token, int speed) {
boolean keyPressed = false;
if (Input.isKeyDown(GLFW.GLFW_KEY_S)) {
token.setTextureWrap(161,260,56,59, ObjectGl.STICK_BOTTOM);
keyPressed = true;
} else if (Input.isKeyDown(GLFW.GLFW_KEY_W)) {
keyPressed = true;
}
if (Input.isKeyDown(GLFW.GLFW_KEY_A)) {
token.translate(new Vector3f (speed * -5.0f, 0.0f, 0.0f));
token.setTextureWrap(121,0,57,82, ObjectGl.STICK_TOP);
keyPressed = true;
}
else if (Input.isKeyDown(GLFW.GLFW_KEY_D)) {
token.translate(new Vector3f (speed * 5.0f, 0.0f, 0.0f));
token.setTextureWrap(178,0,62,82, ObjectGl.STICK_TOP);
keyPressed = true;
}
if (!keyPressed) token.setTextureWrap(58,0,62,82, ObjectGl.STICK_TOP);
}
} }