block item no texture
This commit is contained in:
parent
9fe9670248
commit
208f21e445
@ -1,3 +1,3 @@
|
||||
#maven.buildNumber.plugin properties file
|
||||
#Sat Apr 26 19:41:37 EDT 2025
|
||||
buildNumber=621
|
||||
#Sat Apr 26 21:15:56 EDT 2025
|
||||
buildNumber=622
|
||||
|
||||
@ -17,7 +17,6 @@
|
||||
|
||||
+ bug fixes
|
||||
- Terrain edits do not save
|
||||
- Panel does not draw its decoration if target framebuffer is the framebuffer of the window (maybe window isnt drawings its content framebuffer?)
|
||||
- Window does not play nice with its minWidth/minHeight being set differently
|
||||
|
||||
+ unreproducible bugs
|
||||
|
||||
@ -1559,6 +1559,7 @@ Fix inventory item tooltip not clearing
|
||||
More item icons
|
||||
Toolbar preview ui element
|
||||
Fab tool can place fabs
|
||||
Fix block items not having texture
|
||||
|
||||
|
||||
|
||||
|
||||
@ -10,21 +10,39 @@ import electrosphere.renderer.texture.Texture;
|
||||
*/
|
||||
public class BlockTextureAtlas {
|
||||
|
||||
//A map of voxel id -> coordinates in the atlas texture for its texture
|
||||
/**
|
||||
* The id is not in the atlas
|
||||
*/
|
||||
public static final int MISSING = -1;
|
||||
|
||||
/**
|
||||
* A map of voxel id -> coordinates in the atlas texture for its texture
|
||||
*/
|
||||
Map<Integer,Integer> typeCoordMap = new HashMap<Integer,Integer>();
|
||||
|
||||
|
||||
//the actual texture
|
||||
/**
|
||||
* the actual texture
|
||||
*/
|
||||
Texture specular;
|
||||
|
||||
//the normal texture
|
||||
/**
|
||||
* the normal texture
|
||||
*/
|
||||
Texture normal;
|
||||
|
||||
//the width in pixels of a single texture in the atlas
|
||||
/**
|
||||
* the width in pixels of a single texture in the atlas
|
||||
*/
|
||||
public static final int ATLAS_ELEMENT_DIM = 256;
|
||||
//the width in pixels of the whole atlas texture
|
||||
|
||||
/**
|
||||
* the width in pixels of the whole atlas texture
|
||||
*/
|
||||
public static final int ATLAS_DIM = 8192;
|
||||
//number of textures per row in the atlas
|
||||
|
||||
/**
|
||||
* number of textures per row in the atlas
|
||||
*/
|
||||
public static final int ELEMENTS_PER_ROW = ATLAS_DIM / ATLAS_ELEMENT_DIM;
|
||||
|
||||
/**
|
||||
@ -74,7 +92,7 @@ public class BlockTextureAtlas {
|
||||
* @return the index in the atlas of the texture of the provided voxel type
|
||||
*/
|
||||
public int getVoxelTypeOffset(int voxelTypeId){
|
||||
return typeCoordMap.containsKey(voxelTypeId) ? typeCoordMap.get(voxelTypeId) : -1;
|
||||
return typeCoordMap.containsKey(voxelTypeId) ? typeCoordMap.get(voxelTypeId) : MISSING;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ 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;
|
||||
|
||||
@ -156,6 +156,13 @@ public class InitialAssetLoading {
|
||||
//construct texture atlas from buffered image
|
||||
Globals.blockTextureAtlas.setSpecular(atlasQueuedTexture.getTexture());
|
||||
Globals.blockTextureAtlas.setNormal(atlasQueuedTexture.getTexture());
|
||||
|
||||
//update block item models based on atlas values
|
||||
for(BlockType blockType : Globals.gameConfigCurrent.getBlockData().getTypes()){
|
||||
String typeId = "block:" + blockType.getName();
|
||||
Item item = Globals.gameConfigCurrent.getItemMap().getItem(typeId);
|
||||
item.getGraphicsTemplate().getModel().getUniforms().get(RenderUtils.MESH_NAME_BLOCK_SINGLE).put("blockAtlasIndex",Globals.blockTextureAtlas.getVoxelTypeOffset(blockType.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -6,6 +6,8 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import electrosphere.client.block.BlockChunkData;
|
||||
import electrosphere.client.block.cells.BlockTextureAtlas;
|
||||
import electrosphere.controls.cursor.CursorState;
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.engine.assetmanager.AssetDataStrings;
|
||||
@ -14,6 +16,7 @@ import electrosphere.game.data.common.CommonEntityType;
|
||||
import electrosphere.game.data.common.item.SpawnItemDescription;
|
||||
import electrosphere.game.data.graphics.GraphicsTemplate;
|
||||
import electrosphere.game.data.graphics.NonproceduralModel;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.renderer.RenderUtils;
|
||||
|
||||
/**
|
||||
@ -142,6 +145,9 @@ public class Item extends CommonEntityType {
|
||||
//set uniforms for the model
|
||||
Map<String,Map<String,Object>> meshUniformMap = new HashMap<String,Map<String,Object>>();
|
||||
Map<String,Object> uniforms = new HashMap<String,Object>();
|
||||
if(Globals.blockTextureAtlas.getVoxelTypeOffset(blockType.getId()) == BlockTextureAtlas.MISSING && blockType.getId() != BlockChunkData.BLOCK_TYPE_EMPTY){
|
||||
LoggerInterface.loggerEngine.WARNING("Block type " + blockType.getId() + " missing in BlockTextureAtlas");
|
||||
}
|
||||
uniforms.put("blockAtlasIndex",Globals.blockTextureAtlas.getVoxelTypeOffset(blockType.getId()));
|
||||
meshUniformMap.put(RenderUtils.MESH_NAME_BLOCK_SINGLE,uniforms);
|
||||
modelData.setUniforms(meshUniformMap);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user