diff --git a/.gitignore b/.gitignore
index e06eedb0..d6112e45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,10 @@
/src/main/resources/Config/localconfig.json
/src/main/resources/Config/keybinds.json
+/dependency-reduced-pom.xml
+
+/Models
+/Models/**.*
+
/Telephone-*.jar
-/hs_err_pid*
\ No newline at end of file
+/hs_err_pid*
diff --git a/pom.xml b/pom.xml
index 786ec3db..01711d08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -171,6 +171,26 @@
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
+
+ package
+
+ shade
+
+
+
+
+ electrosphere.main.Main
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/electrosphere/game/server/simulation/Simulation.java b/src/main/java/electrosphere/game/server/simulation/Simulation.java
index a9099f40..4f1794d6 100644
--- a/src/main/java/electrosphere/game/server/simulation/Simulation.java
+++ b/src/main/java/electrosphere/game/server/simulation/Simulation.java
@@ -6,6 +6,7 @@ import electrosphere.game.server.creature.type.CreatureType;
import electrosphere.game.server.creature.type.model.CreatureTypeMap;
import electrosphere.game.server.culture.Culture;
import electrosphere.game.server.culture.religion.Religion;
+import electrosphere.util.FileLoadingUtils;
import electrosphere.util.Utilities;
import java.util.LinkedList;
import java.util.List;
@@ -23,8 +24,8 @@ public class Simulation {
}
void init(){
- CreatureTypeMap creatureTypeMap = Utilities.loadObjectFromBakedJsonFile("Data/creatures.json", CreatureTypeMap.class);
- CivilizationMap civilizationMap = Utilities.loadObjectFromBakedJsonFile("Data/civilization.json", CivilizationMap.class);
+ CreatureTypeMap creatureTypeMap = FileLoadingUtils.loadModelObjectFromBakedJsonFile("Data/creatures.json", CreatureTypeMap.class);
+ CivilizationMap civilizationMap = FileLoadingUtils.loadModelObjectFromBakedJsonFile("Data/civilization.json", CivilizationMap.class);
}
public void simulate(){
diff --git a/src/main/java/electrosphere/game/server/terrain/manager/ServerTerrainManager.java b/src/main/java/electrosphere/game/server/terrain/manager/ServerTerrainManager.java
index 7c14cf00..84fa18b6 100644
--- a/src/main/java/electrosphere/game/server/terrain/manager/ServerTerrainManager.java
+++ b/src/main/java/electrosphere/game/server/terrain/manager/ServerTerrainManager.java
@@ -5,6 +5,7 @@ import electrosphere.game.terrain.processing.TerrainInterpolator;
import electrosphere.main.Globals;
import electrosphere.game.server.terrain.generation.TerrainGen;
import electrosphere.game.server.terrain.models.TerrainModel;
+import electrosphere.util.FileLoadingUtils;
import electrosphere.util.Utilities;
import java.io.File;
import java.io.IOException;
@@ -90,7 +91,7 @@ public class ServerTerrainManager {
public void load(){
Gson gson = new Gson();
- model = gson.fromJson(Utilities.readFileToString(new File(Globals.mainConfig.loadTerrainLocation)), TerrainModel.class);
+ model = FileLoadingUtils.loadModelObjectFromBakedJsonFile(Globals.mainConfig.loadTerrainLocation, TerrainModel.class);
}
public float[][] getTerrainAtChunk(int x, int y){
diff --git a/src/main/java/electrosphere/main/Globals.java b/src/main/java/electrosphere/main/Globals.java
index 40870316..46f5824a 100644
--- a/src/main/java/electrosphere/main/Globals.java
+++ b/src/main/java/electrosphere/main/Globals.java
@@ -40,6 +40,7 @@ import electrosphere.renderer.ui.WidgetUtils;
import electrosphere.renderer.ui.font.FontUtils;
import electrosphere.renderer.ui.font.RawFontMap;
import electrosphere.renderer.ui.font.TextBox;
+import electrosphere.util.FileLoadingUtils;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@@ -236,7 +237,7 @@ public class Globals {
// try {
//deserializes the texture map from its default path using gson
//also done in one line
- textureMapDefault = Utilities.loadObjectFromBakedJsonFile("/Textures/default_texture_map.json", TextureMap.class);
+ textureMapDefault = FileLoadingUtils.loadModelObjectFromBakedJsonFile("Textures/default_texture_map.json", TextureMap.class);
// textureMapDefault = gson.fromJson(Files.newBufferedReader(new File(Thread.currentThread().getContextClassLoader().getResource("Textures/default_texture_map.json").getFile()).toPath()), TextureMap.class); //only the best of coding practices :)
// } catch (IOException ex) { ex.printStackTrace(); } //TODO: handle better :tm:
//entity type map
@@ -266,7 +267,7 @@ public class Globals {
//create default lights
lightDirectionalDefault = new DirectionalLight(new Vector3f(0,-1f,0));
assetManager.registerModelToSpecificString(ModelUtils.createBitmapDisplay(), AssetDataStrings.ASSET_STRING_BITMAP_FONT);
- RawFontMap fontMap = Utilities.loadObjectFromBakedJsonFile("/Textures/Fonts/myFontMap.json", RawFontMap.class);
+ RawFontMap fontMap = FileLoadingUtils.loadModelObjectFromBakedJsonFile("Textures/Fonts/myFontMap.json", RawFontMap.class);
FontUtils.setFontDataMap(fontMap);
//black texture for backgrouns
blackTexture = new Texture("Textures/b1.png");
@@ -285,7 +286,7 @@ public class Globals {
}
static void initEntityTypeMap(){
- CreatureTypeList typeList = Utilities.loadObjectFromBakedJsonFile("/Data/entity_map.json", CreatureTypeList.class);
+ CreatureTypeList typeList = FileLoadingUtils.loadModelObjectFromBakedJsonFile("Data/entity_map.json", CreatureTypeList.class);
for(CreatureType type : typeList.getTypes()){
entityTypeMap.put(type.getId(), type);
}
diff --git a/src/main/java/electrosphere/main/Main.java b/src/main/java/electrosphere/main/Main.java
index 81ebead8..d1bf484b 100644
--- a/src/main/java/electrosphere/main/Main.java
+++ b/src/main/java/electrosphere/main/Main.java
@@ -18,6 +18,7 @@ import electrosphere.game.state.LoadingThread;
import electrosphere.game.state.SimulationState;
import electrosphere.game.state.SimulationState.SimulationStateMachine;
import electrosphere.renderer.RenderingEngine;
+import electrosphere.util.FileLoadingUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
@@ -286,7 +287,7 @@ public class Main {
public static void initControlHandler(){
// ControlHandler.generateExampleControlsMap();
- Globals.controlHandler = Utilities.loadObjectFromBakedJsonFile("/Config/keybinds.json",ControlHandler.class);
+ Globals.controlHandler = FileLoadingUtils.loadModelObjectFromBakedJsonFile("/Config/keybinds.json",ControlHandler.class);
}
diff --git a/src/main/java/electrosphere/renderer/Model.java b/src/main/java/electrosphere/renderer/Model.java
index 4b84f786..690f00e3 100644
--- a/src/main/java/electrosphere/renderer/Model.java
+++ b/src/main/java/electrosphere/renderer/Model.java
@@ -56,7 +56,7 @@ public class Model {
AnimNode root_anim_node;
- public static Model create_model_from_aiscene(AIScene s){
+ public static Model createModelFromAiscene(AIScene s){
Model rVal = new Model();
//
//set the scene
diff --git a/src/main/java/electrosphere/renderer/ModelUtils.java b/src/main/java/electrosphere/renderer/ModelUtils.java
index 13075b64..13f07080 100644
--- a/src/main/java/electrosphere/renderer/ModelUtils.java
+++ b/src/main/java/electrosphere/renderer/ModelUtils.java
@@ -154,7 +154,7 @@ public class ModelUtils {
m.parent = rVal;
Material groundMat = new Material();
- Texture groundTex = new Texture("Textures/Ground/Dirt1.png");
+ Texture groundTex = new Texture("/Textures/Ground/Dirt1.png");
groundMat.set_diffuse(groundTex);
groundMat.set_specular(groundTex);
m.set_material(groundMat);
@@ -318,7 +318,7 @@ public class ModelUtils {
m.parent = rVal;
Material groundMat = new Material();
- Texture groundTex = new Texture("Textures/Ground/Dirt1.png");
+ Texture groundTex = new Texture("/Textures/Ground/Dirt1.png");
groundMat.set_diffuse(groundTex);
groundMat.set_specular(groundTex);
m.set_material(groundMat);
@@ -486,7 +486,7 @@ public class ModelUtils {
m.parent = rVal;
Material groundMat = new Material();
- Texture groundTex = new Texture("Textures/Ground/Dirt1.png");
+ Texture groundTex = new Texture("/Textures/Ground/Dirt1.png");
groundMat.set_diffuse(groundTex);
groundMat.set_specular(groundTex);
m.set_material(groundMat);
@@ -606,7 +606,7 @@ public class ModelUtils {
m.nodeID = AssetDataStrings.ASSET_STRING_BITMAP_FONT_MESH_NAME;
Material uiMat = new Material();
- Texture uiTex = new Texture("Textures/Fonts/myfont1-harsher.png");
+ Texture uiTex = new Texture("/Textures/Fonts/myfont1-harsher.png");
uiMat.set_diffuse(uiTex);
uiMat.set_specular(uiTex);
m.set_material(uiMat);
diff --git a/src/main/java/electrosphere/renderer/ShaderProgram.java b/src/main/java/electrosphere/renderer/ShaderProgram.java
index 7a8b7deb..44eb856d 100644
--- a/src/main/java/electrosphere/renderer/ShaderProgram.java
+++ b/src/main/java/electrosphere/renderer/ShaderProgram.java
@@ -1,9 +1,11 @@
package electrosphere.renderer;
import electrosphere.main.Main;
+import electrosphere.util.FileLoadingUtils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import org.lwjgl.opengl.GL20;
@@ -63,7 +65,7 @@ public class ShaderProgram {
//
String tempForReadingShaders = "";
try {
- BufferedReader br = new BufferedReader(new FileReader(Main.class.getResource(vertex_shader_path).getFile()));
+ BufferedReader br = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream(vertex_shader_path)));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
@@ -82,7 +84,7 @@ public class ShaderProgram {
String vertexShaderSource = tempForReadingShaders;
//This try-catch block reads the FragmentShader source into memory
try {
- BufferedReader br = new BufferedReader(new FileReader(Main.class.getResource(fragment_shader_path).getFile()));
+ BufferedReader br = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream(fragment_shader_path)));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
@@ -280,43 +282,8 @@ public class ShaderProgram {
//
//Read in shader programs
//
- String tempForReadingShaders = "";
- try {
- BufferedReader br = new BufferedReader(new FileReader(Main.class.getResource(vertex_shader_path).getFile()));
- try {
- StringBuilder sb = new StringBuilder();
- String line = br.readLine();
-
- while (line != null) {
- sb.append(line);
- sb.append(System.lineSeparator());
- line = br.readLine();
- }
- tempForReadingShaders = sb.toString();
- } finally {
- br.close();
- }
- } catch (IOException e) {
- }
- String vertexShaderSource = tempForReadingShaders;
- //This try-catch block reads the FragmentShader source into memory
- try {
- BufferedReader br = new BufferedReader(new FileReader(Main.class.getResource(fragment_shader_path).getFile()));
- try {
- StringBuilder sb = new StringBuilder();
- String line = br.readLine();
- while (line != null) {
- sb.append(line);
- sb.append(System.lineSeparator());
- line = br.readLine();
- }
- tempForReadingShaders = sb.toString();
- } finally {
- br.close();
- }
- } catch (IOException e) {
- }
- String fragmentShaderSource = tempForReadingShaders;
+ String vertexShaderSource = FileLoadingUtils.readStringFromBakedFile(vertex_shader_path);
+ String fragmentShaderSource = FileLoadingUtils.readStringFromBakedFile(fragment_shader_path);
//Creates a new shader object and assigns its 'pointer' to the integer "vertexShader"
rVal.vertexShader = glCreateShader(GL_VERTEX_SHADER);
//This alerts openGL to the presence of a vertex shader and points the shader at its source
diff --git a/src/main/java/electrosphere/renderer/texture/Texture.java b/src/main/java/electrosphere/renderer/texture/Texture.java
index ad016cb5..f0094ec3 100644
--- a/src/main/java/electrosphere/renderer/texture/Texture.java
+++ b/src/main/java/electrosphere/renderer/texture/Texture.java
@@ -5,6 +5,8 @@
*/
package electrosphere.renderer.texture;
+import electrosphere.main.Main;
+import electrosphere.util.FileLoadingUtils;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
@@ -49,7 +51,7 @@ public class Texture {
width = 1;
height = 1;
try {
- BufferedImage image_data = ImageIO.read(new File(Thread.currentThread().getContextClassLoader().getResource(path).getFile()));
+ BufferedImage image_data = ImageIO.read(Main.class.getResourceAsStream(FileLoadingUtils.sanitizeBakedFilePath(path)));
if (
image_data.getType() == BufferedImage.TYPE_3BYTE_BGR ||
image_data.getType() == BufferedImage.TYPE_INT_RGB
diff --git a/src/main/java/electrosphere/util/FileLoadingUtils.java b/src/main/java/electrosphere/util/FileLoadingUtils.java
new file mode 100644
index 00000000..889eb201
--- /dev/null
+++ b/src/main/java/electrosphere/util/FileLoadingUtils.java
@@ -0,0 +1,154 @@
+package electrosphere.util;
+
+import com.google.gson.Gson;
+import electrosphere.main.Main;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.concurrent.TimeUnit;
+
+public class FileLoadingUtils {
+
+
+
+ static final int maxReadFails = 3;
+ static final int READ_TIMEOUT_DURATION = 5;
+ public static String readFileToString(File f){
+ String rVal = "";
+ BufferedReader reader;
+ try {
+ reader = Files.newBufferedReader(f.toPath());
+ int failCounter = 0;
+ boolean reading = true;
+ StringBuilder builder = new StringBuilder("");
+ while(reading){
+ if(reader.ready()){
+ failCounter = 0;
+ int nextValue = reader.read();
+ if(nextValue == -1){
+ reading = false;
+ } else {
+ builder.append((char)nextValue);
+ }
+ } else {
+ failCounter++;
+ if(failCounter > maxReadFails){
+ reading = false;
+ } else {
+ try {
+ TimeUnit.MILLISECONDS.sleep(READ_TIMEOUT_DURATION);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+ rVal = builder.toString();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ return rVal;
+ }
+
+
+ public static String readStreamToString(InputStream resourceInputStream){
+ String rVal = "";
+ BufferedReader reader;
+ try {
+ reader = new BufferedReader(new InputStreamReader(resourceInputStream));
+ int failCounter = 0;
+ boolean reading = true;
+ StringBuilder builder = new StringBuilder("");
+ while(reading){
+ if(reader.ready()){
+ failCounter = 0;
+ int nextValue = reader.read();
+ if(nextValue == -1){
+ reading = false;
+ } else {
+ builder.append((char)nextValue);
+ }
+ } else {
+ failCounter++;
+ if(failCounter > maxReadFails){
+ reading = false;
+ } else {
+ try {
+ TimeUnit.MILLISECONDS.sleep(READ_TIMEOUT_DURATION);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+ rVal = builder.toString();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ return rVal;
+ }
+
+
+
+ public static String sanitizeBakedFilePath(String filePath){
+ String rVal = new String(filePath);
+ rVal = rVal.trim();
+ if(!rVal.startsWith("/")){
+ rVal = "/" + rVal;
+ }
+ return rVal;
+ }
+
+ public static String readStringFromBakedFile(String bakedFilePath){
+ String rVal = "";
+ String sanitizedFilePath = sanitizeBakedFilePath(bakedFilePath);
+ rVal = readStreamToString(Main.class.getResourceAsStream(sanitizedFilePath));
+ return rVal;
+ }
+
+
+ public static void serializeObjectToFilePath(String filePath, Object object){
+ Path path = new File(filePath).toPath();
+ Gson gson = new Gson();
+ try {
+ Files.write(path, gson.toJson(object).getBytes());
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ public static T loadModelObjectFromBakedJsonFile(String fileName, Class className){
+ T rVal = null;
+ String sanitizedFilePath = sanitizeBakedFilePath(fileName);
+ String rawJSON = readStreamToString(Main.class.getResourceAsStream(sanitizedFilePath));
+ Gson gson = new Gson();
+ rVal = gson.fromJson(rawJSON, className);
+ return rVal;
+ }
+
+ public static File unpackBakedFileToFilePath(String bakedFilePath){
+ String sanitizedFilePath = sanitizeBakedFilePath(bakedFilePath);
+ System.out.println(bakedFilePath);
+ if(!Files.exists(new File("./Models").toPath())){
+ try {
+ Files.createDirectory(new File("./Models").toPath());
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+ File targetFile = new File("." + sanitizedFilePath);
+ try {
+ Files.write(targetFile.toPath(), Main.class.getResourceAsStream(sanitizedFilePath).readAllBytes(),StandardOpenOption.CREATE,StandardOpenOption.WRITE);
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ return targetFile;
+ }
+
+}
diff --git a/src/main/java/electrosphere/util/ModelLoader.java b/src/main/java/electrosphere/util/ModelLoader.java
index 0651a37d..64af3db9 100644
--- a/src/main/java/electrosphere/util/ModelLoader.java
+++ b/src/main/java/electrosphere/util/ModelLoader.java
@@ -1,6 +1,7 @@
package electrosphere.util;
import electrosphere.main.Globals;
+import electrosphere.main.Main;
import electrosphere.renderer.Material;
import electrosphere.renderer.Mesh;
import electrosphere.renderer.Model;
@@ -11,6 +12,8 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
@@ -24,8 +27,10 @@ public class ModelLoader {
public static Model load_Model_From_File(String fileName){
Model rVal;
AIScene scene;
- File file = new File(Thread.currentThread().getContextClassLoader().getResource(fileName).getFile());
- scene = aiImportFile(file.getAbsolutePath(),
+// File file = new File(Thread.currentThread().getContextClassLoader().getResource(fileName).getFile());
+// Main.class.getResourceAsStream(fileName).readAllBytes();
+ File toRead = FileLoadingUtils.unpackBakedFileToFilePath(fileName);
+ scene = aiImportFile(toRead.getAbsolutePath(),
aiProcess_GenSmoothNormals |
aiProcess_JoinIdenticalVertices |
aiProcess_Triangulate |
@@ -34,14 +39,14 @@ public class ModelLoader {
if(scene == null){
throw new IllegalStateException(aiGetErrorString());
}
- rVal = Model.create_model_from_aiscene(scene);
- attempt_add_textures_from_pathname(fileName, rVal);
+ rVal = Model.createModelFromAiscene(scene);
+ attemptAddTexturesFromPathname(fileName, rVal);
return rVal;
}
//TODO: this logic should exclusively use functions provided in the TextureMap class
//this way if we change the underlying structure of the TextureMap it doesn't fuck over this logic
- static void attempt_add_textures_from_pathname(String path, Model m){
+ static void attemptAddTexturesFromPathname(String path, Model m){
//first we get the default texture map that's global
TextureMap global_map = Globals.textureMapDefault;
//then we try to get the path of our model from the map
diff --git a/src/main/java/electrosphere/util/Utilities.java b/src/main/java/electrosphere/util/Utilities.java
index 57b5f7cd..36457c9e 100644
--- a/src/main/java/electrosphere/util/Utilities.java
+++ b/src/main/java/electrosphere/util/Utilities.java
@@ -82,7 +82,7 @@ public class Utilities {
- public static void save_test_texture_map_to_location(String s){
+ public static void saveTestTextureMapToLocation(String s){
TextureMap t = new TextureMap();
t.add_model("model1");
t.add_mesh_to_model("model1", "mesh1");
@@ -104,87 +104,11 @@ public class Utilities {
}
}
- static final int maxReadFails = 3;
- static final int READ_TIMEOUT_DURATION = 5;
- public static String readFileToString(File f){
- String rVal = "";
- BufferedReader reader;
- try {
- reader = Files.newBufferedReader(f.toPath());
- int failCounter = 0;
- boolean reading = true;
- StringBuilder builder = new StringBuilder("");
- while(reading){
- if(reader.ready()){
- failCounter = 0;
- int nextValue = reader.read();
- if(nextValue == -1){
- reading = false;
- } else {
- builder.append((char)nextValue);
- }
- } else {
- failCounter++;
- if(failCounter > maxReadFails){
- reading = false;
- } else {
- try {
- TimeUnit.MILLISECONDS.sleep(READ_TIMEOUT_DURATION);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- rVal = builder.toString();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- return rVal;
- }
-
- public static String readBakedResourceToString(InputStream resourceInputStream){
- String rVal = "";
- BufferedReader reader;
- try {
- reader = new BufferedReader(new InputStreamReader(resourceInputStream));
- int failCounter = 0;
- boolean reading = true;
- StringBuilder builder = new StringBuilder("");
- while(reading){
- if(reader.ready()){
- failCounter = 0;
- int nextValue = reader.read();
- if(nextValue == -1){
- reading = false;
- } else {
- builder.append((char)nextValue);
- }
- } else {
- failCounter++;
- if(failCounter > maxReadFails){
- reading = false;
- } else {
- try {
- TimeUnit.MILLISECONDS.sleep(READ_TIMEOUT_DURATION);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- rVal = builder.toString();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- return rVal;
- }
-
public static void loadMainConfig(){
if(Main.class.getResource("/Config/localconfig.json") != null){
- Globals.mainConfig = loadObjectFromBakedJsonFile("/Config/localconfig.json", MainConfig.class);
+ Globals.mainConfig = FileLoadingUtils.loadModelObjectFromBakedJsonFile("/Config/localconfig.json", MainConfig.class);
if(Globals.mainConfig.version != MainConfig.CONFIG_FILE_VERSION){
//dynamically generate config and save it
MainConfig.generateMainConfig();
@@ -194,15 +118,6 @@ public class Utilities {
}
}
-
- public static T loadObjectFromBakedJsonFile(String fileName, Class className){
- T rVal = null;
- String rawJSON = Utilities.readBakedResourceToString(Main.class.getResourceAsStream(fileName));
- Gson gson = new Gson();
- rVal = gson.fromJson(rawJSON, className);
- return rVal;
- }
-
public static void saveObjectToBakedJsonFile(String fileName, Object object){
URL resourceUrl = Main.class.getResource(fileName);
File file = new File("");
@@ -219,15 +134,4 @@ public class Utilities {
System.exit(1);
}
}
-
- public static void saveObjectToJsonFile(String fileName, Object object){
- Path path = new File(Main.class.getResource(fileName).getPath()).toPath();
- Gson gson = new Gson();
- try {
- Files.write(path, gson.toJson(object).getBytes());
- } catch (IOException ex) {
- ex.printStackTrace();
- System.exit(1);
- }
- }
}
diff --git a/src/main/java/electrosphere/util/worldviewer/TerrainViewer.java b/src/main/java/electrosphere/util/worldviewer/TerrainViewer.java
index 6379509f..c805f029 100644
--- a/src/main/java/electrosphere/util/worldviewer/TerrainViewer.java
+++ b/src/main/java/electrosphere/util/worldviewer/TerrainViewer.java
@@ -6,6 +6,7 @@ import electrosphere.game.server.terrain.manager.ServerTerrainManager;
import electrosphere.game.server.terrain.models.TerrainModel;
import electrosphere.main.Globals;
import electrosphere.main.Main;
+import electrosphere.util.FileLoadingUtils;
import electrosphere.util.Utilities;
import java.awt.Color;
import java.awt.Graphics;
@@ -38,7 +39,7 @@ public class TerrainViewer {
// terrainModel = terrainManager.getModel();
// Utilities.saveObjectToBakedJsonFile("/Config/testingTerrain.json", terrainModel);
- terrainModel = Utilities.loadObjectFromBakedJsonFile("/Config/testingTerrain.json", TerrainModel.class);
+ terrainModel = FileLoadingUtils.loadModelObjectFromBakedJsonFile("/Config/testingTerrain.json", TerrainModel.class);
Simulation simulation = new Simulation();
diff --git a/src/main/resources/Data/entity_map.json b/src/main/resources/Data/entity_map.json
index 684c4ab9..2b002a0c 100644
--- a/src/main/resources/Data/entity_map.json
+++ b/src/main/resources/Data/entity_map.json
@@ -2,7 +2,7 @@
"types": [
{
"id" : 0,
- "modelPath" : "Models/person1walkanim.fbx",
+ "modelPath" : "/Models/person1walkanim.fbx",
"hitboxes" : [
{
"type": "hurt",
@@ -58,7 +58,7 @@
},
{
"id" : 2,
- "modelPath" : "Models/katana1alt.fbx",
+ "modelPath" : "/Models/katana1alt.fbx",
"hitboxes" : [
{
"type": "hit",
diff --git a/src/main/resources/Textures/default_texture_map.json b/src/main/resources/Textures/default_texture_map.json
index 61cd5131..151bd348 100644
--- a/src/main/resources/Textures/default_texture_map.json
+++ b/src/main/resources/Textures/default_texture_map.json
@@ -2,48 +2,48 @@
"texture_map": {
"Models/plane.fbx": {
"Cube": [
- "Textures/Ground/Dirt1.png",
- "Textures/Ground/Dirt1.png"
+ "/Textures/Ground/Dirt1.png",
+ "/Textures/Ground/Dirt1.png"
]
},
"Models/arcdock5deg1notex.fbx": {
"Cube": [
- "Textures/w1.png",
- "Textures/w1.png"
+ "/Textures/w1.png",
+ "/Textures/w1.png"
]
},
"Models/Wheat1.fbx": {
"Stalk": [
- "Textures/Wheat1stretch.png",
- "Textures/Wheat1stretch.png"
+ "/Textures/Wheat1stretch.png",
+ "/Textures/Wheat1stretch.png"
]
},
"Models/unitsphere.fbx": {
"Sphere": [
- "Textures/transparent_blue.png",
- "Textures/transparent_blue.png"
+ "/Textures/transparent_blue.png",
+ "/Textures/transparent_blue.png"
]
},
"Models/unitsphere_1.fbx": {
"Sphere": [
- "Textures/transparent_red.png",
- "Textures/transparent_red.png"
+ "/Textures/transparent_red.png",
+ "/Textures/transparent_red.png"
]
},
"Models/katana1alt.fbx": {
"SwordMesh": [
- "Textures/katana1.png",
- "Textures/katana1.png"
+ "/Textures/katana1.png",
+ "/Textures/katana1.png"
]
},
"Models/tree1.fbx": {
"Cube.002": [
- "Textures/Branch.png",
- "Textures/Branch.png"
+ "/Textures/Branch.png",
+ "/Textures/Branch.png"
],
"Cylinder": [
- "Textures/Branch.png",
- "Textures/Branch.png"
+ "/Textures/Branch.png",
+ "/Textures/Branch.png"
]
}
}