diff --git a/src/main/java/com/goby56/wakes/config/gui/ColorIntervalSlider.java b/src/main/java/com/goby56/wakes/config/gui/ColorIntervalSlider.java index d49b74a..b97081b 100644 --- a/src/main/java/com/goby56/wakes/config/gui/ColorIntervalSlider.java +++ b/src/main/java/com/goby56/wakes/config/gui/ColorIntervalSlider.java @@ -3,6 +3,7 @@ import com.goby56.wakes.WakesClient; import com.goby56.wakes.config.WakesConfig; import com.goby56.wakes.render.enums.WakeColor; +import com.goby56.wakes.simulation.WakeHandler; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.widget.SliderWidget; @@ -111,6 +112,7 @@ private void onColorPicked(WakeColor color) { if (this.activeSection != null) { WakesConfig.wakeColors.set(this.activeSection, color.toHex()); WakesConfig.write(WakesClient.MOD_ID); + WakeHandler.getInstance().ifPresent(WakeHandler::recolorWakes); } } @@ -150,6 +152,7 @@ protected void applyValue() { WakesConfig.wakeColorIntervals.set(i, handles.get(i).value); } WakesConfig.write(WakesClient.MOD_ID); + WakeHandler.getInstance().ifPresent(WakeHandler::recolorWakes); } } diff --git a/src/main/java/com/goby56/wakes/config/gui/ColorPickerScreen.java b/src/main/java/com/goby56/wakes/config/gui/ColorPickerScreen.java index 1ff4090..25451fc 100644 --- a/src/main/java/com/goby56/wakes/config/gui/ColorPickerScreen.java +++ b/src/main/java/com/goby56/wakes/config/gui/ColorPickerScreen.java @@ -1,12 +1,8 @@ package com.goby56.wakes.config.gui; -import eu.midnightdust.lib.config.MidnightConfig; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; -import net.minecraft.client.gui.widget.Positioner; -import net.minecraft.client.gui.widget.TextWidget; import net.minecraft.text.Text; public class ColorPickerScreen extends Screen { diff --git a/src/main/java/com/goby56/wakes/simulation/Brick.java b/src/main/java/com/goby56/wakes/simulation/Brick.java index 92cdde5..8334814 100644 --- a/src/main/java/com/goby56/wakes/simulation/Brick.java +++ b/src/main/java/com/goby56/wakes/simulation/Brick.java @@ -191,6 +191,7 @@ public void populatePixels() { for (int c = 0; c < texRes; c++) { int color = 0; if (node != null) { + // TODO USE SHADERS TO COLOR THE WAKES? float avg = (node.u[0][r + 1][c + 1] + node.u[1][r + 1][c + 1] + node.u[2][r + 1][c + 1]) / 3; color = getPixelColor(avg, waterCol, lightCol, opacity); } diff --git a/src/main/java/com/goby56/wakes/simulation/QuadTree.java b/src/main/java/com/goby56/wakes/simulation/QuadTree.java index 61a614e..cfc69d4 100644 --- a/src/main/java/com/goby56/wakes/simulation/QuadTree.java +++ b/src/main/java/com/goby56/wakes/simulation/QuadTree.java @@ -92,6 +92,16 @@ public boolean insert(WakeNode node) { return false; } + public void recolorWakes() { + if (hasLeaf()) { + brick.populatePixels(); + } + if (children == null) return; + for (var tree : children) { + tree.recolorWakes(); + } + } + public void query(Frustum frustum, ArrayList output, Class type) { if (!frustum.isVisible(this.bounds.toBox((int) yLevel))) { return; diff --git a/src/main/java/com/goby56/wakes/simulation/WakeHandler.java b/src/main/java/com/goby56/wakes/simulation/WakeHandler.java index 5d8bc21..54427c0 100644 --- a/src/main/java/com/goby56/wakes/simulation/WakeHandler.java +++ b/src/main/java/com/goby56/wakes/simulation/WakeHandler.java @@ -73,6 +73,15 @@ public void tick() { } } + public void recolorWakes() { + for (int i = 0; i < this.maxY - this.minY; i++) { + QuadTree tree = this.trees[i]; + if (tree != null) { + tree.recolorWakes(); + } + } + } + public void insert(WakeNode node) { if (resolutionResetScheduled) return; int i = this.getArrayIndex(node.y);