diff --git a/assets/Models/foliageBlockTemplate1Test1.fbx b/assets/Models/foliageBlockTemplate1Test1.fbx new file mode 100644 index 00000000..93baefed Binary files /dev/null and b/assets/Models/foliageBlockTemplate1Test1.fbx differ diff --git a/assets/Textures/default_texture_map.json b/assets/Textures/default_texture_map.json index e193b81d..7caffd92 100644 --- a/assets/Textures/default_texture_map.json +++ b/assets/Textures/default_texture_map.json @@ -431,6 +431,20 @@ "Textures/skyscraper1.png", "Textures/skyscraper1.png" ] + }, + "Models/foliageBlockTemplate1Test1.fbx" : { + "Plane" : [ + "Textures/leaf3layer1.png", + "Textures/leaf3layer1.png" + ], + "Plane.001" : [ + "Textures/leaf3layer1.png", + "Textures/leaf3layer1.png" + ], + "Plane.002" : [ + "Textures/leaf3layer1.png", + "Textures/leaf3layer1.png" + ] } } } \ No newline at end of file diff --git a/assets/Textures/leaf3layer1.png b/assets/Textures/leaf3layer1.png new file mode 100644 index 00000000..8d31e047 Binary files /dev/null and b/assets/Textures/leaf3layer1.png differ diff --git a/buildNumber.properties b/buildNumber.properties index 96a66728..1d776c13 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Fri Jul 14 20:48:01 EDT 2023 -buildNumber=4 +#Tue Jul 25 19:29:28 EDT 2023 +buildNumber=5 diff --git a/src/main/java/electrosphere/engine/loadingthreads/ArenaLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ArenaLoading.java index 8ed49334..559d249e 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ArenaLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ArenaLoading.java @@ -8,6 +8,7 @@ import org.joml.Vector3d; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; import electrosphere.entity.Entity; +import electrosphere.entity.EntityCreationUtils; import electrosphere.entity.EntityDataStrings; import electrosphere.entity.EntityUtils; import electrosphere.entity.ServerEntityUtils; @@ -150,6 +151,11 @@ public class ArenaLoading { // Entity sword = ItemUtils.spawnBasicItem("Katana"); // EntityUtils.initiallyPositionEntity(sword, new Vector3d(1,0.4f,2)); // EntityUtils.getRotation(sword).set(new Quaternionf().rotationY((float)(Math.PI/2.0))); + + + // Entity leafBlock = EntityCreationUtils.createClientSpatialEntity(); + // EntityCreationUtils.makeEntityDrawable(leafBlock, "Models/foliageBlockTemplate1Test1.fbx"); + // EntityUtils.getPosition(leafBlock).set(3,3,3); //floating island 1 // Entity island1 = ObjectUtils.spawnBasicObject("floatingisland1"); diff --git a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java index e699bc2d..57b75d54 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java @@ -14,8 +14,10 @@ import electrosphere.client.terrain.cells.DrawCellManager; import electrosphere.collision.CollisionEngine; import electrosphere.controls.ControlHandler; import electrosphere.engine.Globals; +import electrosphere.entity.DrawableUtils; import electrosphere.entity.Entity; import electrosphere.entity.EntityCreationUtils; +import electrosphere.entity.EntityDataStrings; import electrosphere.entity.EntityUtils; import electrosphere.entity.state.BehaviorTree; import electrosphere.entity.state.movement.ApplyRotationTree; @@ -28,6 +30,7 @@ import electrosphere.menu.WindowUtils; import electrosphere.net.NetUtils; import electrosphere.net.client.ClientNetworking; import electrosphere.renderer.ui.Window; +import electrosphere.server.datacell.EntityDataCellMapper; public class ClientLoading { @@ -235,6 +238,10 @@ public class ClientLoading { } }); + Entity leafBlob = EntityCreationUtils.createClientSpatialEntity(); + EntityCreationUtils.makeEntityDrawable(leafBlob, "Models/foliageBlockTemplate1Test1.fbx"); + DrawableUtils.makeEntityTransparent(leafBlob); + } static void initDrawCellManager(){ diff --git a/src/main/java/electrosphere/entity/DrawableUtils.java b/src/main/java/electrosphere/entity/DrawableUtils.java new file mode 100644 index 00000000..df5fe41a --- /dev/null +++ b/src/main/java/electrosphere/entity/DrawableUtils.java @@ -0,0 +1,17 @@ +package electrosphere.entity; + +/** + * Utilities to manipulating drawable entities (eg making an entity transparent) + */ +public class DrawableUtils { + + /** + * Edits entity data to make the entity transparent + * @param entity The entity to edit + */ + public static void makeEntityTransparent(Entity entity){ + entity.putData(EntityDataStrings.DRAW_TRANSPARENT_PASS, true); + entity.removeData(EntityDataStrings.DRAW_SOLID_PASS); + } + +} diff --git a/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java b/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java index bf62128a..5e915715 100644 --- a/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java +++ b/src/main/java/electrosphere/entity/state/gravity/ServerGravityTree.java @@ -206,7 +206,6 @@ public class ServerGravityTree implements BehaviorTree { boolean rVal = false; for(Impulse impulse : collidable.getImpulses()){ if(impulse.getType().equals(Collidable.TYPE_TERRAIN)){ - System.out.println(rVal); rVal = true; break; } else if( diff --git a/src/main/java/electrosphere/renderer/RenderingEngine.java b/src/main/java/electrosphere/renderer/RenderingEngine.java index 21f703e7..9ea0e335 100644 --- a/src/main/java/electrosphere/renderer/RenderingEngine.java +++ b/src/main/java/electrosphere/renderer/RenderingEngine.java @@ -15,6 +15,7 @@ import static org.lwjgl.glfw.GLFW.glfwSwapBuffers; import static org.lwjgl.glfw.GLFW.glfwTerminate; import static org.lwjgl.glfw.GLFW.glfwWindowHint; import static org.lwjgl.opengl.GL11.GL_ALWAYS; +import static org.lwjgl.opengl.GL45.GL_LEQUAL; import static org.lwjgl.opengl.GL11.GL_BLEND; import static org.lwjgl.opengl.GL11.GL_COLOR; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; @@ -686,7 +687,9 @@ public class RenderingEngine { // // Set render pipeline state // + renderPipelineState.setUseMeshShader(true); renderPipelineState.setSelectedShader(SelectedShaderEnum.OIT); + glDepthFunc(GL_LEQUAL); // //!!!WARNING!!! @@ -721,6 +724,8 @@ public class RenderingEngine { currentActor.draw(renderPipelineState); } } + //draw all instanced models + Globals.clientInstanceManager.draw(renderPipelineState); // diff --git a/src/main/java/electrosphere/server/terrain/diskmap/ChunkDiskMap.java b/src/main/java/electrosphere/server/terrain/diskmap/ChunkDiskMap.java index 8cce30ba..da89966d 100644 --- a/src/main/java/electrosphere/server/terrain/diskmap/ChunkDiskMap.java +++ b/src/main/java/electrosphere/server/terrain/diskmap/ChunkDiskMap.java @@ -13,6 +13,7 @@ import java.util.zip.DeflaterOutputStream; import java.util.zip.InflaterOutputStream; import electrosphere.engine.Globals; +import electrosphere.logger.LoggerInterface; import electrosphere.net.server.Server; import electrosphere.server.terrain.manager.ServerTerrainChunk; import electrosphere.util.FileUtils; @@ -158,7 +159,7 @@ public class ChunkDiskMap { * @param terrainChunk The terrain chunk */ public void saveToDisk(ServerTerrainChunk terrainChunk){ - System.out.println("Save to disk: " + terrainChunk.getWorldX() + " " + terrainChunk.getWorldY() + " " + terrainChunk.getWorldZ()); + LoggerInterface.loggerEngine.DEBUG("Save to disk: " + terrainChunk.getWorldX() + " " + terrainChunk.getWorldY() + " " + terrainChunk.getWorldZ()); //get the file name for this chunk String fileName = null; String chunkKey = getTerrainChunkKey(terrainChunk.getWorldX(),terrainChunk.getWorldY(),terrainChunk.getWorldZ());