fab file loading
	
		
			
	
		
	
	
		
	
		
			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
							
								
									383a3b6ac3
								
							
						
					
					
						commit
						ca9282d2e6
					
				| @ -1543,6 +1543,7 @@ Block area selection | ||||
| Exporting block prefabs to compressed files | ||||
| Minor block fab improvements | ||||
| Fab selection tool | ||||
| Fab selection tool actually loads fab files | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -8,6 +8,8 @@ import electrosphere.client.ui.menu.WindowUtils; | ||||
| import electrosphere.controls.ControlHandler.ControlsState; | ||||
| import electrosphere.engine.Globals; | ||||
| import electrosphere.engine.signal.Signal.SignalType; | ||||
| import electrosphere.game.data.block.BlockFab; | ||||
| import electrosphere.logger.LoggerInterface; | ||||
| import electrosphere.renderer.ui.elements.Window; | ||||
| import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaAlignment; | ||||
| import electrosphere.renderer.ui.elementtypes.ContainerElement.YogaFlexDirection; | ||||
| @ -54,7 +56,8 @@ public class FabMenus { | ||||
| 
 | ||||
|         //attach scrollable after search input for organzation purposes | ||||
|         fabSelectionPanelWindow.addChild(FabSelectionPanel.createFabSelectionPanel((File selectedFile) -> { | ||||
|             System.out.println(selectedFile); | ||||
|             BlockFab fab = BlockFab.read(selectedFile); | ||||
|             LoggerInterface.loggerEngine.WARNING("" + fab.getDimensions()); | ||||
|         })); | ||||
| 
 | ||||
|         Globals.signalSystem.post(SignalType.YOGA_APPLY,fabSelectionPanelWindow); | ||||
|  | ||||
| @ -9,6 +9,7 @@ import java.nio.ShortBuffer; | ||||
| import org.joml.Vector3i; | ||||
| 
 | ||||
| import electrosphere.client.block.BlockChunkData; | ||||
| import electrosphere.logger.LoggerInterface; | ||||
| import electrosphere.util.FileUtils; | ||||
| 
 | ||||
| /** | ||||
| @ -91,4 +92,75 @@ public class BlockFab { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Reads a BlockFab from a specified file | ||||
|      * @param file The file | ||||
|      * @return The BlockFab | ||||
|      */ | ||||
|     public static BlockFab read(File file){ | ||||
|         BlockFab rVal = null; | ||||
|         ByteBuffer buff; | ||||
|         try { | ||||
|             buff = FileUtils.readBufferFromCompressedFile(file); | ||||
|             IntBuffer intView = buff.asIntBuffer(); | ||||
|             int fileVer = intView.get(); | ||||
|             LoggerInterface.loggerFileIO.DEBUG("Read fab file with ver " + fileVer); | ||||
| 
 | ||||
|             int dimX = intView.get(); | ||||
|             int dimY = intView.get(); | ||||
|             int dimZ = intView.get(); | ||||
|             Vector3i dims = new Vector3i(dimX, dimY, dimZ); | ||||
|             buff.position(HEADER_SIZE); | ||||
| 
 | ||||
|             ShortBuffer shortView = buff.asShortBuffer(); | ||||
| 
 | ||||
|             int blockCount = dims.x * dims.y * dims.z; | ||||
|             short[] types = new short[blockCount]; | ||||
|             short[] metadata = new short[blockCount]; | ||||
|             int i = 0; | ||||
|             for(int x = 0; x < dims.x; x++){ | ||||
|                 for(int y = 0; y < dims.y; y++){ | ||||
|                     for(int z = 0; z < dims.z; z++){ | ||||
|                         types[i] = shortView.get(); | ||||
|                         metadata[i] = shortView.get(); | ||||
|                         i++; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             rVal = new BlockFab(); | ||||
|             rVal.dimensions = dims; | ||||
|             rVal.types = types; | ||||
|             rVal.metadata = metadata; | ||||
|         } catch (IOException e) { | ||||
|             LoggerInterface.loggerFileIO.ERROR(e); | ||||
|             throw new Error("Failed to read BlockFab " + file); | ||||
|         } | ||||
|         return rVal; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the dimensions of the fab | ||||
|      * @return The dimensions of the fab | ||||
|      */ | ||||
|     public Vector3i getDimensions() { | ||||
|         return dimensions; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the type data of the fab | ||||
|      * @return The type data | ||||
|      */ | ||||
|     public short[] getTypes() { | ||||
|         return types; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the metadata of the fab | ||||
|      * @return The metadata | ||||
|      */ | ||||
|     public short[] getMetadata() { | ||||
|         return metadata; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user