Skip to content

Commit

Permalink
chunk corruption fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Pannoniae committed Sep 9, 2024
1 parent 23a0fd4 commit 2e1765f
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 15 deletions.
15 changes: 15 additions & 0 deletions BlockGame.sln.DotSettings.user

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion src/main/Game.cs
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ private void init() {
textureManager = new TextureManager(GL, GD);

fxaaShader = new Shader(GL, "shaders/fxaa.vert", "shaders/fxaa.frag");
fxaaShader.use();
g_texelStepLocation = fxaaShader.getUniformLocation("u_texelStep");
g_showEdgesLocation = fxaaShader.getUniformLocation("u_showEdges");
g_fxaaOnLocation = fxaaShader.getUniformLocation("u_fxaaOn");
Expand Down
6 changes: 0 additions & 6 deletions src/render/WorldRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ public WorldRenderer(World world) {
waterShader = new Shader(GL, "shaders/waterShader.vert", "shaders/waterShader.frag");
Game.waterShader = waterShader;

shader.use();
blockTexture = shader.getUniformLocation("blockTexture");
lightTexture = shader.getUniformLocation("lightTexture");
uMVP = shader.getUniformLocation(nameof(uMVP));
Expand All @@ -83,7 +82,6 @@ public WorldRenderer(World world) {
skyColour = shader.getUniformLocation(nameof(skyColour));
//drawDistance = shader.getUniformLocation(nameof(drawDistance));

waterShader.use();
waterBlockTexture = waterShader.getUniformLocation("blockTexture");
waterLightTexture = waterShader.getUniformLocation("lightTexture");
wateruMVP = waterShader.getUniformLocation(nameof(uMVP));
Expand All @@ -96,15 +94,13 @@ public WorldRenderer(World world) {
frustum = world.player.camera.frustum;


shader.use();
shader.setUniform(blockTexture, 0);
shader.setUniform(lightTexture, 1);
//shader.setUniform(drawDistance, dd);

shader.setUniform(fogColour, defaultFogColour);
shader.setUniform(skyColour, defaultClearColour);

waterShader.use();
waterShader.setUniform(waterBlockTexture, 0);
waterShader.setUniform(waterLightTexture, 1);
//shader.setUniform(drawDistance, dd);
Expand All @@ -131,10 +127,8 @@ public void setUniforms() {
fogMinValue = 8 * Chunk.CHUNKSIZE;
}

shader.use();
shader.setUniform(fogMax, fogMaxValue);
shader.setUniform(fogMin, fogMinValue);
waterShader.use();
waterShader.setUniform(waterFogMax, fogMaxValue);
waterShader.setUniform(waterFogMin, fogMinValue);
}
Expand Down
5 changes: 5 additions & 0 deletions src/render/model/Cube.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace BlockGame.model;

public class Cube {

}
2 changes: 1 addition & 1 deletion src/world/PlayerRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void render(double dt, double interp) {
// scale down
Matrix4x4.CreateScale(0.6f, new Vector3(0.5f, 0.5f, 0.5f)) *
// translate into place
Matrix4x4.CreateTranslation(new Vector3(0.75f, (float)(-1.6f - (getLower(interp) * 0.35f)), 1f)) *
Matrix4x4.CreateTranslation(new Vector3(0.75f, (float)(-1.45f - (getLower(interp) * 0.35f)), 1f)) *
// swing translation
Matrix4x4.CreateTranslation((float)(sinSwingSqrt * -0.7f), (float)(circleishThing * 0.35f), (float)(sinSwing * 0.6f));
heldBlockShader.use();
Expand Down
8 changes: 5 additions & 3 deletions src/world/World.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ public World(string name, int seed, bool loadingSave = false) {
}

renderer.initBlockOutline();

// After everything is done, SAVE THE WORLD
// if we don't save the world, some of the chunks might get saved but no level.xnbt
// so the world is corrupted and we have horrible chunkglitches
worldIO.save(this, name, false);
}

public void startMeshing() {
Expand Down Expand Up @@ -396,9 +401,6 @@ private void ReleaseUnmanagedResources() {
public void Dispose() {
// of course, we can save it here since WE call it and not the GC
worldIO.save(this, name);
foreach (var chunk in chunks) {
worldIO.saveChunk(this, chunk.Value);
}
ReleaseUnmanagedResources();
GC.SuppressFinalize(this);
}
Expand Down
10 changes: 6 additions & 4 deletions src/world/WorldIO.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public WorldIO(World world) {
this.world = world;
}

public void save(World world, string filename) {
public void save(World world, string filename, bool saveChunks = true) {
// save metadata
// create level folder
if (!Directory.Exists($"level/{filename}")) {
Expand All @@ -35,9 +35,11 @@ public void save(World world, string filename) {
NBT.writeFile(tag, $"level/{filename}/level.xnbt");

// save chunks
foreach (var chunk in world.chunks.Values) {
//var regionCoord = World.getRegionPos(chunk.coord);
saveChunk(world, chunk);
if (saveChunks) {
foreach (var chunk in world.chunks.Values) {
//var regionCoord = World.getRegionPos(chunk.coord);
saveChunk(world, chunk);
}
}
//regionCache.Clear();
}
Expand Down

0 comments on commit 2e1765f

Please sign in to comment.