screenshots refactoring
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				studiorailgun/Renderer/pipeline/head There was a failure building this commit
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	studiorailgun/Renderer/pipeline/head There was a failure building this commit
				
			This commit is contained in:
		
							parent
							
								
									f7887fc875
								
							
						
					
					
						commit
						6da4c001fa
					
				| @ -16,11 +16,6 @@ | |||||||
|                 "Green Grass" |                 "Green Grass" | ||||||
|             ], |             ], | ||||||
|             "texture" : "/Textures/Ground/GrassTileable256.png" |             "texture" : "/Textures/Ground/GrassTileable256.png" | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "id" : 3, |  | ||||||
|             "name" : "baguette", |  | ||||||
|             "texture" : "/Textures/Ground/baguette256.png" |  | ||||||
|         } |         } | ||||||
|     ] |     ] | ||||||
| } | } | ||||||
| @ -522,6 +522,7 @@ gltf Support | |||||||
|   - Fix bad data with human mesh textures not mapping |   - Fix bad data with human mesh textures not mapping | ||||||
|   - Texture loading from gltf file |   - Texture loading from gltf file | ||||||
| 
 | 
 | ||||||
|  | FileUtils sanitation function check if requested file is in game root dir | ||||||
| 
 | 
 | ||||||
| Cellular Automata Fluid Dynamics System | Cellular Automata Fluid Dynamics System | ||||||
|  - Advect force |  - Advect force | ||||||
|  | |||||||
| @ -106,6 +106,7 @@ import electrosphere.renderer.ui.events.ClickEvent; | |||||||
| import electrosphere.renderer.ui.events.KeyboardEvent; | import electrosphere.renderer.ui.events.KeyboardEvent; | ||||||
| import electrosphere.renderer.ui.events.MenuEvent; | import electrosphere.renderer.ui.events.MenuEvent; | ||||||
| import electrosphere.renderer.ui.events.MenuEvent.MenuEventType; | import electrosphere.renderer.ui.events.MenuEvent.MenuEventType; | ||||||
|  | import electrosphere.util.FileUtils; | ||||||
| import electrosphere.renderer.ui.events.MouseEvent; | import electrosphere.renderer.ui.events.MouseEvent; | ||||||
| import electrosphere.renderer.ui.events.ScrollEvent; | import electrosphere.renderer.ui.events.ScrollEvent; | ||||||
| 
 | 
 | ||||||
| @ -1195,7 +1196,10 @@ public class ControlHandler { | |||||||
|         */ |         */ | ||||||
|         menuNavigationControlList.add(controls.get(MENU_CAPTURE_SCREEN)); |         menuNavigationControlList.add(controls.get(MENU_CAPTURE_SCREEN)); | ||||||
|         controls.get(MENU_CAPTURE_SCREEN).setOnPress(new Control.ControlMethod() {public void execute(){ |         controls.get(MENU_CAPTURE_SCREEN).setOnPress(new Control.ControlMethod() {public void execute(){ | ||||||
|             RenderingEngine.screenFramebuffer.getPixels(Globals.renderingEngine.getOpenGLState()); |             FileUtils.writeBufferedImage( | ||||||
|  |                 RenderingEngine.defaultFramebuffer.getPixels(Globals.renderingEngine.getOpenGLState()), | ||||||
|  |                 "Screenshots/" + System.currentTimeMillis() + ".png" | ||||||
|  |             ); | ||||||
|         }}); |         }}); | ||||||
|          |          | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -116,6 +116,7 @@ public class RenderingEngine { | |||||||
|     public static int screenTextureVAO; |     public static int screenTextureVAO; | ||||||
|     public static ShaderProgram screenTextureShaders; |     public static ShaderProgram screenTextureShaders; | ||||||
|     public static ShaderProgram drawChannel; |     public static ShaderProgram drawChannel; | ||||||
|  |     public static Framebuffer defaultFramebuffer; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -320,6 +321,9 @@ public class RenderingEngine { | |||||||
|         screenTextureShaders = ShaderProgram.loadSpecificShader("/Shaders/screentexture/simple1/simple1.vs", "/Shaders/screentexture/simple1/simple1.fs"); |         screenTextureShaders = ShaderProgram.loadSpecificShader("/Shaders/screentexture/simple1/simple1.vs", "/Shaders/screentexture/simple1/simple1.fs"); | ||||||
| //        screenTextureShaders = ShaderProgram.loadSpecificShader("/Shaders/screentexture/drawDepthBuffer/drawDepthBuffer.vs", "/Shaders/screentexture/drawDepthBuffer/drawDepthBuffer.fs"); | //        screenTextureShaders = ShaderProgram.loadSpecificShader("/Shaders/screentexture/drawDepthBuffer/drawDepthBuffer.vs", "/Shaders/screentexture/drawDepthBuffer/drawDepthBuffer.fs"); | ||||||
| 
 | 
 | ||||||
|  |         //default framebuffer | ||||||
|  |         defaultFramebuffer = new Framebuffer(0); | ||||||
|  |          | ||||||
|         //generate framebuffers |         //generate framebuffers | ||||||
|         screenTextureColor = FramebufferUtils.generateScreenTextureColor(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); |         screenTextureColor = FramebufferUtils.generateScreenTextureColor(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); | ||||||
|         screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); |         screenTextureDepth = FramebufferUtils.generateScreenTextureDepth(openGLState, Globals.userSettings.getRenderResolutionX(), Globals.userSettings.getRenderResolutionY()); | ||||||
|  | |||||||
| @ -46,6 +46,14 @@ public class Framebuffer { | |||||||
|         framebufferPointer = glGenFramebuffers(); |         framebufferPointer = glGenFramebuffers(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Creates a framebuffer with a predefined id | ||||||
|  |      * @param framebufferId The predefined framebuffer id | ||||||
|  |      */ | ||||||
|  |     public Framebuffer(int framebufferId){ | ||||||
|  |         this.framebufferPointer = framebufferId; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Sets the texture attached to the framebuffer |      * Sets the texture attached to the framebuffer | ||||||
|      * @param texture The texture attached to the framebuffer |      * @param texture The texture attached to the framebuffer | ||||||
| @ -229,22 +237,27 @@ public class Framebuffer { | |||||||
|      */ |      */ | ||||||
|     public BufferedImage getPixels(OpenGLState openGLState){ |     public BufferedImage getPixels(OpenGLState openGLState){ | ||||||
|         BufferedImage rVal = null; |         BufferedImage rVal = null; | ||||||
|         bind(openGLState); |  | ||||||
|         GL40.glReadBuffer(GL40.GL_COLOR_ATTACHMENT0); |  | ||||||
|         int offsetX = 0; |         int offsetX = 0; | ||||||
|         int offsetY = 0; |         int offsetY = 0; | ||||||
|         int width = openGLState.getViewport().x; |         int width = openGLState.getViewport().x; | ||||||
|         int height = openGLState.getViewport().y; |         int height = openGLState.getViewport().y; | ||||||
|         int pixelFormat = GL40.GL_RGBA; |         int pixelFormat = GL40.GL_RGBA; | ||||||
|         int type = GL40.GL_UNSIGNED_INT; |         int type = GL40.GL_UNSIGNED_INT; | ||||||
|         if(attachTextureMap.containsKey(0)){ | 
 | ||||||
|  | 
 | ||||||
|  |         bind(openGLState); | ||||||
|  |         GL40.glReadBuffer(GL40.GL_COLOR_ATTACHMENT0); | ||||||
|  |         if(this.framebufferPointer == 0){ | ||||||
|  |             //this is the default framebuffer, read from backbuffer because it is default | ||||||
|  |             GL40.glReadBuffer(GL40.GL_BACK); | ||||||
|  |         } else if(attachTextureMap.containsKey(0)){ | ||||||
|             Texture texture = attachTextureMap.get(0); |             Texture texture = attachTextureMap.get(0); | ||||||
|             pixelFormat = texture.getFormat(); |             pixelFormat = texture.getFormat(); | ||||||
|             type = texture.getDataType(); |             type = texture.getDataType(); | ||||||
|             width = texture.getWidth(); |             width = texture.getWidth(); | ||||||
|             height = texture.getHeight(); |             height = texture.getHeight(); | ||||||
|         } else { |         } else { | ||||||
|             throw new IllegalStateException("Tried to get pixels from a framebuffer that does not have a texture attached to attachment point 0."); |             LoggerInterface.loggerRenderer.ERROR(new IllegalStateException("Tried to get pixels from a framebuffer that does not have a texture attached to attachment point 0.")); | ||||||
|         } |         } | ||||||
|         //get pixel data |         //get pixel data | ||||||
|         try { |         try { | ||||||
| @ -262,10 +275,6 @@ public class Framebuffer { | |||||||
|                     int red = buffer.get(i) & 0xFF; |                     int red = buffer.get(i) & 0xFF; | ||||||
|                     int green = buffer.get(i + 1) & 0xFF; |                     int green = buffer.get(i + 1) & 0xFF; | ||||||
|                     int blue = buffer.get(i + 2) & 0xFF; |                     int blue = buffer.get(i + 2) & 0xFF; | ||||||
|                     if(red != 0 || green != 0 || blue != 0){ |  | ||||||
|                         System.out.println(x + " " + y); |  | ||||||
|                         System.out.println(red + " " + green + " " + blue); |  | ||||||
|                     } |  | ||||||
|                     int alpha = 255; |                     int alpha = 255; | ||||||
|                     if(pixelFormat == GL40.GL_RGBA){ |                     if(pixelFormat == GL40.GL_RGBA){ | ||||||
|                         alpha = buffer.get(i + 3) & 0xFF; |                         alpha = buffer.get(i + 3) & 0xFF; | ||||||
| @ -273,19 +282,6 @@ public class Framebuffer { | |||||||
|                     rVal.setRGB(x, height - (y + 1), (alpha << 24) | (red << 16) | (green << 8) | blue); |                     rVal.setRGB(x, height - (y + 1), (alpha << 24) | (red << 16) | (green << 8) | blue); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             //write the buffered image out |  | ||||||
|             try { |  | ||||||
|                 File outputFile = FileUtils.getAssetFile("Screenshots/" + System.currentTimeMillis() + ".png"); |  | ||||||
|                 if(!outputFile.getParentFile().exists()){ |  | ||||||
|                     outputFile.getParentFile().mkdirs(); |  | ||||||
|                 } |  | ||||||
|                 if(!outputFile.exists()){ |  | ||||||
|                     outputFile.createNewFile(); |  | ||||||
|                 } |  | ||||||
|                 ImageIO.write(rVal,"png",outputFile); |  | ||||||
|             } catch (IOException e) { |  | ||||||
|                 LoggerInterface.loggerRenderer.ERROR(e); |  | ||||||
|             } |  | ||||||
|             //memory management |             //memory management | ||||||
|             MemoryUtil.memFree(buffer); |             MemoryUtil.memFree(buffer); | ||||||
|         } catch (OutOfMemoryError e){ |         } catch (OutOfMemoryError e){ | ||||||
|  | |||||||
| @ -3,12 +3,12 @@ package electrosphere.util; | |||||||
| import com.google.gson.Gson; | import com.google.gson.Gson; | ||||||
| import com.google.gson.GsonBuilder; | import com.google.gson.GsonBuilder; | ||||||
| 
 | 
 | ||||||
| import electrosphere.engine.Main; |  | ||||||
| import electrosphere.game.data.creature.type.movement.MovementSystem; | import electrosphere.game.data.creature.type.movement.MovementSystem; | ||||||
| import electrosphere.game.data.creature.type.movement.MovementSystemSerializer; | import electrosphere.game.data.creature.type.movement.MovementSystemSerializer; | ||||||
| import electrosphere.logger.LoggerInterface; | import electrosphere.logger.LoggerInterface; | ||||||
| import electrosphere.util.annotation.AnnotationExclusionStrategy; | import electrosphere.util.annotation.AnnotationExclusionStrategy; | ||||||
| 
 | 
 | ||||||
|  | import java.awt.image.BufferedImage; | ||||||
| import java.io.BufferedReader; | import java.io.BufferedReader; | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| @ -16,27 +16,48 @@ import java.io.InputStream; | |||||||
| import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||||
| import java.nio.file.Files; | import java.nio.file.Files; | ||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
| import java.nio.file.StandardOpenOption; | import java.nio.file.Paths; | ||||||
| import java.util.LinkedList; | import java.util.LinkedList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
| import java.util.logging.Level; |  | ||||||
| import java.util.logging.Logger; |  | ||||||
| 
 | 
 | ||||||
|  | import javax.imageio.ImageIO; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Utilities for dealing with files | ||||||
|  |  */ | ||||||
| public class FileUtils { | public class FileUtils { | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Creates the gson instance | ||||||
|  |      */ | ||||||
|     static { |     static { | ||||||
|  |         //init gson | ||||||
|         GsonBuilder gsonBuilder = new GsonBuilder(); |         GsonBuilder gsonBuilder = new GsonBuilder(); | ||||||
|         gsonBuilder.registerTypeAdapter(MovementSystem.class, new MovementSystemSerializer()); |         gsonBuilder.registerTypeAdapter(MovementSystem.class, new MovementSystemSerializer()); | ||||||
|         gsonBuilder.addDeserializationExclusionStrategy(new AnnotationExclusionStrategy()); |         gsonBuilder.addDeserializationExclusionStrategy(new AnnotationExclusionStrategy()); | ||||||
|         gsonBuilder.addSerializationExclusionStrategy(new AnnotationExclusionStrategy()); |         gsonBuilder.addSerializationExclusionStrategy(new AnnotationExclusionStrategy()); | ||||||
|         gson = gsonBuilder.create(); |         gson = gsonBuilder.create(); | ||||||
|  | 
 | ||||||
|  |         //init gamedir | ||||||
|  |         gameDir = Paths.get("").toFile(); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     //used for serialization/deserialization in file operations | ||||||
|     static Gson gson; |     static Gson gson; | ||||||
| 
 | 
 | ||||||
|  |     //the game's root directory | ||||||
|  |     static File gameDir = null; | ||||||
|  |      | ||||||
|  |     //maximum number of attempt to read the file | ||||||
|     static final int maxReadFails = 3; |     static final int maxReadFails = 3; | ||||||
|  |     //Timeout duration between read attempts | ||||||
|     static final int READ_TIMEOUT_DURATION = 5; |     static final int READ_TIMEOUT_DURATION = 5; | ||||||
|  |     /** | ||||||
|  |      * Reads a file to a string | ||||||
|  |      * @param f The file | ||||||
|  |      * @return The string | ||||||
|  |      */ | ||||||
|     public static String readFileToString(File f){ |     public static String readFileToString(File f){ | ||||||
|         String rVal = ""; |         String rVal = ""; | ||||||
|         BufferedReader reader; |         BufferedReader reader; | ||||||
| @ -113,16 +134,6 @@ public class FileUtils { | |||||||
|     } |     } | ||||||
|      |      | ||||||
|      |      | ||||||
|      |  | ||||||
| //    public static String sanitizeBakedFilePath(String filePath){ |  | ||||||
| //        String rVal = new String(filePath); |  | ||||||
| //        rVal = rVal.trim(); |  | ||||||
| //        if(!rVal.startsWith("/")){ |  | ||||||
| //            rVal = "/" + rVal; |  | ||||||
| //        } |  | ||||||
| //        return rVal; |  | ||||||
| //    } |  | ||||||
|      |  | ||||||
|     /** |     /** | ||||||
|      * Sanitizes a relative file path, guaranteeing that the initial slash is correct |      * Sanitizes a relative file path, guaranteeing that the initial slash is correct | ||||||
|      * @param filePath The raw file path |      * @param filePath The raw file path | ||||||
| @ -139,14 +150,11 @@ public class FileUtils { | |||||||
|         return rVal; |         return rVal; | ||||||
|     } |     } | ||||||
|      |      | ||||||
| //    public static String readStringFromBakedFile(String bakedFilePath){ |     /** | ||||||
| //        String rVal = ""; |      * Serializes an object to a filepath | ||||||
| //        String sanitizedFilePath = sanitizeBakedFilePath(bakedFilePath); |      * @param filePath The filepath | ||||||
| //        rVal = readStreamToString(Main.class.getResourceAsStream(sanitizedFilePath)); |      * @param object The object | ||||||
| //        return rVal; |      */ | ||||||
| //    } |  | ||||||
|      |  | ||||||
|      |  | ||||||
|     public static void serializeObjectToFilePath(String filePath, Object object){ |     public static void serializeObjectToFilePath(String filePath, Object object){ | ||||||
|         Path path = new File(filePath).toPath(); |         Path path = new File(filePath).toPath(); | ||||||
|         try { |         try { | ||||||
| @ -156,12 +164,23 @@ public class FileUtils { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Gets an assets file | ||||||
|  |      * @param pathName The relative path in the assets folder | ||||||
|  |      * @return The file | ||||||
|  |      */ | ||||||
|     public static File getAssetFile(String pathName){ |     public static File getAssetFile(String pathName){ | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         File targetFile = new File("./assets" + sanitizedFilePath); |         File targetFile = new File("./assets" + sanitizedFilePath); | ||||||
|         return targetFile; |         return targetFile; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Gets a save file | ||||||
|  |      * @param saveName The name of the save | ||||||
|  |      * @param pathName The relative path in the save's folder | ||||||
|  |      * @return the file | ||||||
|  |      */ | ||||||
|     public static File getSaveFile(String saveName, String pathName){ |     public static File getSaveFile(String saveName, String pathName){ | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         String fullPath = "./saves/" + saveName + "/" + sanitizedFilePath; |         String fullPath = "./saves/" + saveName + "/" + sanitizedFilePath; | ||||||
| @ -169,29 +188,54 @@ public class FileUtils { | |||||||
|         return targetFile; |         return targetFile; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Gets an asset file as a stream | ||||||
|  |      * @param pathName The path of the file | ||||||
|  |      * @return The stream | ||||||
|  |      * @throws IOException Thrown if Files fails to create the stream | ||||||
|  |      */ | ||||||
|     public static InputStream getAssetFileAsStream(String pathName) throws IOException{ |     public static InputStream getAssetFileAsStream(String pathName) throws IOException{ | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         File targetFile = new File("./assets" + sanitizedFilePath); |         File targetFile = new File("./assets" + sanitizedFilePath); | ||||||
|         return Files.newInputStream(targetFile.toPath()); |         return Files.newInputStream(targetFile.toPath()); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Gets an asset file as a string | ||||||
|  |      * @param pathName The path of the file | ||||||
|  |      * @return The string | ||||||
|  |      * @throws IOException Thrown if Files fails to read the file | ||||||
|  |      */ | ||||||
|     public static String getAssetFileAsString(String pathName) throws IOException{ |     public static String getAssetFileAsString(String pathName) throws IOException{ | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         File targetFile = new File("./assets" + sanitizedFilePath); |         File targetFile = new File("./assets" + sanitizedFilePath); | ||||||
|         return Files.readString(targetFile.toPath()); |         return Files.readString(targetFile.toPath()); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Loads an object from the assets folder | ||||||
|  |      * @param <T> The type of object | ||||||
|  |      * @param pathName The relative path to the file | ||||||
|  |      * @param className The class of the object inside the file | ||||||
|  |      * @return The file | ||||||
|  |      */ | ||||||
|     public static <T>T loadObjectFromAssetPath(String pathName, Class<T> className){ |     public static <T>T loadObjectFromAssetPath(String pathName, Class<T> className){ | ||||||
|         T rVal = null; |         T rVal = null; | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         try { |         try { | ||||||
|             rVal = gson.fromJson(Files.newBufferedReader(getAssetFile(sanitizedFilePath).toPath()), className); |             rVal = gson.fromJson(Files.newBufferedReader(getAssetFile(sanitizedFilePath).toPath()), className); | ||||||
|         } catch (IOException ex) { |         } catch (IOException ex) { | ||||||
|             ex.printStackTrace(); |             LoggerInterface.loggerFileIO.ERROR(ex); | ||||||
|         } |         } | ||||||
|         return rVal; |         return rVal; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Gets an sql script file as a string | ||||||
|  |      * @param pathName The path of the sql script | ||||||
|  |      * @return The file's contents as a string | ||||||
|  |      * @throws IOException Thrown if the engine fails to read the file | ||||||
|  |      */ | ||||||
|     public static String getSQLScriptFileAsString(String pathName) throws IOException { |     public static String getSQLScriptFileAsString(String pathName) throws IOException { | ||||||
|         String sanitizedFilePath = sanitizeFilePath(pathName); |         String sanitizedFilePath = sanitizeFilePath(pathName); | ||||||
|         File targetFile = new File("./src/main/sql" + sanitizedFilePath); |         File targetFile = new File("./src/main/sql" + sanitizedFilePath); | ||||||
| @ -306,7 +350,11 @@ public class FileUtils { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|      |     /** | ||||||
|  |      * Lists the files in a directory | ||||||
|  |      * @param directoryName The path of the directory | ||||||
|  |      * @return A list containing the names of all files inside that directory | ||||||
|  |      */ | ||||||
|     public static List<String> listDirectory(String directoryName){ |     public static List<String> listDirectory(String directoryName){ | ||||||
|         List<String> rVal = new LinkedList<String>(); |         List<String> rVal = new LinkedList<String>(); | ||||||
|         String sanitizedPath = sanitizeFilePath(directoryName); |         String sanitizedPath = sanitizeFilePath(directoryName); | ||||||
| @ -318,6 +366,10 @@ public class FileUtils { | |||||||
|         return rVal; |         return rVal; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Recursively deletes a path | ||||||
|  |      * @param path The path | ||||||
|  |      */ | ||||||
|     public static void recursivelyDelete(String path){ |     public static void recursivelyDelete(String path){ | ||||||
|         File file = new File(path); |         File file = new File(path); | ||||||
|         if(file.isDirectory()){ |         if(file.isDirectory()){ | ||||||
| @ -335,35 +387,28 @@ public class FileUtils { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Writes a buffered image to a given path | ||||||
|  |      * @param image The image | ||||||
|  |      * @param path The path | ||||||
|  |      */ | ||||||
|  |     public static void writeBufferedImage(BufferedImage image, String path){ | ||||||
|  |         //write the buffered image out | ||||||
|  |         try { | ||||||
|  |             File outputFile = FileUtils.getAssetFile(path); | ||||||
|  |             if(!outputFile.getParentFile().exists()){ | ||||||
|  |                 outputFile.getParentFile().mkdirs(); | ||||||
|  |             } | ||||||
|  |             if(!outputFile.exists()){ | ||||||
|  |                 outputFile.createNewFile(); | ||||||
|  |             } | ||||||
|  |             ImageIO.write(image,"png",outputFile); | ||||||
|  |         } catch (IOException e) { | ||||||
|  |             LoggerInterface.loggerRenderer.ERROR(e); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|      |      | ||||||
|      |      | ||||||
|      |      | ||||||
|      |      | ||||||
| //    public static <T>T loadModelObjectFromBakedJsonFile(String fileName, Class<T> 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); |  | ||||||
| //        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; |  | ||||||
| //    } |  | ||||||
|      |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user