"Games done"
|
@ -2,6 +2,7 @@ package io.github.hydos.ginger;
|
|||
|
||||
import io.github.hydos.ginger.engine.api.*;
|
||||
import io.github.hydos.ginger.engine.cameras.Camera;
|
||||
import io.github.hydos.ginger.engine.elements.GuiTexture;
|
||||
import io.github.hydos.ginger.engine.elements.buttons.TextureButton;
|
||||
import io.github.hydos.ginger.engine.elements.objects.*;
|
||||
import io.github.hydos.ginger.engine.font.*;
|
||||
|
@ -9,6 +10,7 @@ import io.github.hydos.ginger.engine.io.Window;
|
|||
import io.github.hydos.ginger.engine.math.vectors.*;
|
||||
import io.github.hydos.ginger.engine.obj.ModelLoader;
|
||||
import io.github.hydos.ginger.engine.obj.normals.NormalMappedObjLoader;
|
||||
import io.github.hydos.ginger.engine.obj.shapes.StaticCube;
|
||||
import io.github.hydos.ginger.engine.particle.*;
|
||||
import io.github.hydos.ginger.engine.render.MasterRenderer;
|
||||
import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
||||
|
@ -29,19 +31,19 @@ public class Example extends Game{
|
|||
Constants.gravity = -0.000000000005f;
|
||||
Constants.jumpPower = 0.000005f;
|
||||
|
||||
Window.create(1200, 800, "Horse Game 1.0.0", 60);
|
||||
Window.create(1200, 800, "LiteCraft", 60);
|
||||
|
||||
GingerMain.init();
|
||||
|
||||
Window.setBackgroundColour(0.2f, 0.2f, 0.8f);
|
||||
|
||||
|
||||
TexturedModel tModel = ModelLoader.loadModel("Zebra.obj", "stallTexture.png");
|
||||
tModel.getTexture().setReflectivity(1f);
|
||||
tModel.getTexture().setShineDamper(7f);
|
||||
Player player = new Player(tModel, new Vector3f(0,0,-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f));
|
||||
StaticCube.scaleCube(6);
|
||||
TexturedModel dirtModel = ModelLoader.loadGenericCube("block/cubes/soil/dirt.png");
|
||||
dirtModel.getTexture().setReflectivity(10f);
|
||||
Player player = new Player(dirtModel, new Vector3f(0,0,-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f));
|
||||
Camera camera = new Camera(new Vector3f(0,0.1f,0), player);
|
||||
ginger3D = new Ginger();
|
||||
|
||||
data = new GameData(player, camera);
|
||||
data.handleGuis = false;
|
||||
ginger3D.setup(new MasterRenderer(data.camera), data);
|
||||
|
@ -49,8 +51,8 @@ public class Example extends Game{
|
|||
|
||||
FontType font = new FontType(Loader.loadFontAtlas("candara.png"), "candara.fnt");
|
||||
|
||||
GUIText text = new GUIText("Horse Game", 3, font, new Vector2f(0,0), 1f, true);
|
||||
text.setColour(0, 1, 0);
|
||||
GUIText text = new GUIText("LiteCraft", 3, font, new Vector2f(0,0), 1f, true);
|
||||
text.setColour(0, 0, 0);
|
||||
|
||||
Terrain terrain = handleFlatTerrain();
|
||||
|
||||
|
@ -66,6 +68,8 @@ public class Example extends Game{
|
|||
TextureButton playButton = new TextureButton("/textures/guis/purpur.png", new Vector2f(0, 0), new Vector2f(0.25f, 0.1f));
|
||||
playButton.show(data.guis);
|
||||
|
||||
GuiTexture title = new GuiTexture(Loader.loadTextureDirectly("/textures/guis/title.png"), new Vector2f(0, 0.8F), new Vector2f(0.25f, 0.1f));
|
||||
data.guis.add(title);
|
||||
|
||||
while(!Window.closed()) {
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package io.github.hydos.ginger.engine.obj;
|
||||
|
||||
public class ModelData {
|
||||
public class Mesh {
|
||||
|
||||
private float[] vertices;
|
||||
private float[] textureCoords;
|
||||
|
@ -8,7 +8,7 @@ public class ModelData {
|
|||
private int[] indices;
|
||||
private float furthestPoint;
|
||||
|
||||
public ModelData(float[] vertices, float[] textureCoords, float[] normals, int[] indices,
|
||||
public Mesh(float[] vertices, float[] textureCoords, float[] normals, int[] indices,
|
||||
float furthestPoint) {
|
||||
this.vertices = vertices;
|
||||
this.textureCoords = textureCoords;
|
|
@ -1,5 +1,6 @@
|
|||
package io.github.hydos.ginger.engine.obj;
|
||||
|
||||
import io.github.hydos.ginger.engine.obj.shapes.StaticCube;
|
||||
import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
||||
import io.github.hydos.ginger.engine.render.texture.ModelTexture;
|
||||
import io.github.hydos.ginger.engine.utils.Loader;
|
||||
|
@ -7,9 +8,15 @@ import io.github.hydos.ginger.engine.utils.Loader;
|
|||
public class ModelLoader {
|
||||
|
||||
public static TexturedModel loadModel(String objPath, String texturePath) {
|
||||
ModelData data = OBJFileLoader.loadModel(objPath, texturePath);
|
||||
Mesh data = OBJFileLoader.loadModel(objPath, texturePath);
|
||||
TexturedModel tm = new TexturedModel(Loader.loadToVAO(data.getVertices(), data.getIndices(), data.getNormals(), data.getTextureCoords()), new ModelTexture(texturePath));
|
||||
return tm;
|
||||
}
|
||||
|
||||
public static TexturedModel loadGenericCube(String cubeTexture) {
|
||||
Mesh data = StaticCube.getCube();
|
||||
TexturedModel tm = new TexturedModel(Loader.loadToVAO(data.getVertices(), data.getIndices(), data.getNormals(), data.getTextureCoords()), new ModelTexture(cubeTexture));
|
||||
return tm;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,13 +15,13 @@ public class OBJFileLoader {
|
|||
|
||||
public static String resourceLocation = "C:/Users/Hayden/Desktop/Ginger3D/src/main/resources/models/";
|
||||
|
||||
public static ModelData loadModel(String filePath, String texturePath) {
|
||||
public static Mesh loadModel(String filePath, String texturePath) {
|
||||
AIScene scene = null;
|
||||
try {
|
||||
scene = Assimp.aiImportFile(resourceLocation + filePath, Assimp.aiProcess_JoinIdenticalVertices | Assimp.aiProcess_Triangulate);
|
||||
|
||||
if (scene == null) {
|
||||
return new ModelData(new float[0], new float[0], new float[0], new int[0], 1F);
|
||||
return new Mesh(new float[0], new float[0], new float[0], new int[0], 1F);
|
||||
}
|
||||
|
||||
AIMesh mesh = AIMesh.create(scene.mMeshes().get(0));
|
||||
|
@ -65,10 +65,10 @@ public class OBJFileLoader {
|
|||
System.err.println("Couldnt load scene file!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new ModelData(new float[0], new float[0], new float[0], new int[0], 1F);
|
||||
return new Mesh(new float[0], new float[0], new float[0], new int[0], 1F);
|
||||
}
|
||||
|
||||
private static ModelData parseMeshData(Vertex[] vertexList, int[] indicesList, Buffer normals) {
|
||||
private static Mesh parseMeshData(Vertex[] vertexList, int[] indicesList, Buffer normals) {
|
||||
float[] verticies = new float[vertexList.length*3];
|
||||
float[] textureCoords = new float[vertexList.length*2];
|
||||
//texture coords where stored in the vertices so there should be as many as there are vertices
|
||||
|
@ -91,7 +91,7 @@ public class OBJFileLoader {
|
|||
|
||||
}
|
||||
|
||||
return new ModelData(verticies, textureCoords, new float[normals.sizeof()], indicesList, i);
|
||||
return new Mesh(verticies, textureCoords, new float[normals.sizeof()], indicesList, i);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package io.github.hydos.ginger.engine.obj.shapes;
|
||||
|
||||
import io.github.hydos.ginger.engine.obj.Mesh;
|
||||
|
||||
public class StaticCube {
|
||||
|
||||
public static float[] vertices = {
|
||||
-0.5f,0.5f,-0.5f,
|
||||
-0.5f,-0.5f,-0.5f,
|
||||
0.5f,-0.5f,-0.5f,
|
||||
0.5f,0.5f,-0.5f,
|
||||
|
||||
-0.5f,0.5f,0.5f,
|
||||
-0.5f,-0.5f,0.5f,
|
||||
0.5f,-0.5f,0.5f,
|
||||
0.5f,0.5f,0.5f,
|
||||
|
||||
0.5f,0.5f,-0.5f,
|
||||
0.5f,-0.5f,-0.5f,
|
||||
0.5f,-0.5f,0.5f,
|
||||
0.5f,0.5f,0.5f,
|
||||
|
||||
-0.5f,0.5f,-0.5f,
|
||||
-0.5f,-0.5f,-0.5f,
|
||||
-0.5f,-0.5f,0.5f,
|
||||
-0.5f,0.5f,0.5f,
|
||||
|
||||
-0.5f,0.5f,0.5f,
|
||||
-0.5f,0.5f,-0.5f,
|
||||
0.5f,0.5f,-0.5f,
|
||||
0.5f,0.5f,0.5f,
|
||||
|
||||
-0.5f,-0.5f,0.5f,
|
||||
-0.5f,-0.5f,-0.5f,
|
||||
0.5f,-0.5f,-0.5f,
|
||||
0.5f,-0.5f,0.5f
|
||||
|
||||
};
|
||||
|
||||
public static float[] textureCoords = {
|
||||
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0,
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0,
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0,
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0,
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0,
|
||||
0,0,
|
||||
0,1,
|
||||
1,1,
|
||||
1,0
|
||||
|
||||
|
||||
};
|
||||
|
||||
public static int[] indices = {
|
||||
0,1,3,
|
||||
3,1,2,
|
||||
4,5,7,
|
||||
7,5,6,
|
||||
8,9,11,
|
||||
11,9,10,
|
||||
12,13,15,
|
||||
15,13,14,
|
||||
16,17,19,
|
||||
19,17,18,
|
||||
20,21,23,
|
||||
23,21,22
|
||||
|
||||
};
|
||||
|
||||
private static Mesh mesh = null;
|
||||
|
||||
public static void scaleCube(float multiplier) {
|
||||
for(int i = 0; i<vertices.length; i++) {
|
||||
vertices[i] = vertices[i] * multiplier;
|
||||
}
|
||||
mesh = new Mesh(vertices, textureCoords, new float[vertices.length], indices, vertices.length);
|
||||
}
|
||||
|
||||
public static Mesh getCube() {
|
||||
if(mesh == null) {
|
||||
mesh = new Mesh(vertices, textureCoords, new float[vertices.length], indices, vertices.length);
|
||||
}
|
||||
return mesh;
|
||||
}
|
||||
|
||||
}
|
|
@ -49,7 +49,7 @@ public class MasterRenderer {
|
|||
private Map<TexturedModel, List<Entity>> entities = new HashMap<TexturedModel, List<Entity>>();
|
||||
private Map<TexturedModel, List<Entity>> normalMapEntities = new HashMap<TexturedModel, List<Entity>>();
|
||||
|
||||
public static final float FOV = 70f;
|
||||
public static final float FOV = 80f;
|
||||
public static final float NEAR_PLANE = 0.1f;
|
||||
private static final float FAR_PLANE = 1000f;
|
||||
|
||||
|
@ -73,8 +73,8 @@ public class MasterRenderer {
|
|||
}
|
||||
|
||||
public static void enableCulling() {
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glCullFace(GL11.GL_BACK);
|
||||
// GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
// GL11.glCullFace(GL11.GL_BACK);
|
||||
}
|
||||
|
||||
public static void disableCulling() {
|
||||
|
|
After Width: | Height: | Size: 269 B |
After Width: | Height: | Size: 370 B |
After Width: | Height: | Size: 433 B |
After Width: | Height: | Size: 382 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 584 B |
After Width: | Height: | Size: 406 B |
After Width: | Height: | Size: 557 B |
After Width: | Height: | Size: 400 B |
After Width: | Height: | Size: 590 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 411 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 412 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 664 B |
After Width: | Height: | Size: 835 B |
After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 406 B |
After Width: | Height: | Size: 726 B |
After Width: | Height: | Size: 438 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 257 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 281 B |
After Width: | Height: | Size: 278 B |
After Width: | Height: | Size: 289 B |
After Width: | Height: | Size: 277 B |
After Width: | Height: | Size: 280 B |
After Width: | Height: | Size: 268 B |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 296 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 223 B |
After Width: | Height: | Size: 232 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 192 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 205 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 614 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 198 B |
After Width: | Height: | Size: 204 B |
|
@ -0,0 +1,17 @@
|
|||
[LocalizedFileNames]
|
||||
concrete_powder_pink.png=@concrete_powder_pink.png,0
|
||||
concrete_powder_magenta.png=@concrete_powder_magenta.png,0
|
||||
concrete_powder_lime.png=@concrete_powder_lime.png,0
|
||||
concrete_powder_light_blue.png=@concrete_powder_light_blue.png,0
|
||||
concrete_powder_green.png=@concrete_powder_green.png,0
|
||||
concrete_powder_gray.png=@concrete_powder_gray.png,0
|
||||
concrete_powder_cyan.png=@concrete_powder_cyan.png,0
|
||||
concrete_powder_brown.png=@concrete_powder_brown.png,0
|
||||
concrete_powder_red.png=@concrete_powder_red.png,0
|
||||
concrete_powder_black.png=@concrete_powder_black.png,0
|
||||
concrete_powder_white.png=@concrete_powder_white.png,0
|
||||
concrete_powder_blue.png=@concrete_powder_blue.png,0
|
||||
concrete_powder_yellow.png=@concrete_powder_yellow.png,0
|
||||
concrete_powder_silver.png=@concrete_powder_silver.png,0
|
||||
concrete_powder_orange.png=@concrete_powder_orange.png,0
|
||||
concrete_powder_purple.png=@concrete_powder_purple.png,0
|
After Width: | Height: | Size: 633 B |
After Width: | Height: | Size: 305 B |
After Width: | Height: | Size: 406 B |
After Width: | Height: | Size: 381 B |
After Width: | Height: | Size: 608 B |
After Width: | Height: | Size: 710 B |
After Width: | Height: | Size: 726 B |
After Width: | Height: | Size: 813 B |
After Width: | Height: | Size: 690 B |
After Width: | Height: | Size: 643 B |
After Width: | Height: | Size: 665 B |
After Width: | Height: | Size: 735 B |
After Width: | Height: | Size: 960 B |
After Width: | Height: | Size: 957 B |
After Width: | Height: | Size: 418 B |
After Width: | Height: | Size: 654 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 149 B |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 273 B |
After Width: | Height: | Size: 248 B |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 666 B |
After Width: | Height: | Size: 351 B |
After Width: | Height: | Size: 375 B |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 154 B |
After Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 297 B |
After Width: | Height: | Size: 159 B |
After Width: | Height: | Size: 197 B |