Skip to content

Commit

Permalink
line draw features
Browse files Browse the repository at this point in the history
  • Loading branch information
rfresh2 committed Jan 21, 2025
1 parent 670dcd9 commit c0cd221
Show file tree
Hide file tree
Showing 36 changed files with 535 additions and 511 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package xaeroplus.feature.extensions;

import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import xaero.map.gui.GuiSettings;
import xaero.map.gui.ScreenSwitchSettingEntry;
import xaeroplus.settings.SettingLocation;
import xaeroplus.settings.Settings;

public class GuiXaeroPlusOverlaySettings extends GuiSettings {
public GuiXaeroPlusOverlaySettings(Screen parent, Screen escapeScreen) {
super(Component.translatable("xaeroplus.gui.overlay_settings"), parent, escapeScreen);
this.entries = Settings.REGISTRY.getWorldmapConfigSettingEntries(SettingLocation.OVERLAYS);
}

@Override
public void render(GuiGraphics guiGraphics, int par1, int par2, float par3) {
this.renderEscapeScreen(guiGraphics, par1, par2, par3);
super.render(guiGraphics, par1, par2, par3);
}

public static ScreenSwitchSettingEntry getScreenSwitchSettingEntry(Screen parent) {
return new ScreenSwitchSettingEntry(
"xaeroplus.gui.overlay_settings",
GuiXaeroPlusOverlaySettings::new,
null,
true
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ public GuiXaeroPlusWorldMapSettings(Screen parent, Screen escapeScreen) {
super(Component.translatable("xaeroplus.gui.world_map_settings"), parent, escapeScreen);
var mainSettingsEntries = Settings.REGISTRY.getWorldmapConfigSettingEntries(SettingLocation.WORLD_MAP_MAIN);
var chunkHighlightSettingSwitchEntry = GuiXaeroPlusChunkHighlightSettings.getScreenSwitchSettingEntry(parent);
this.entries = new ISettingEntry[mainSettingsEntries.length + 1];
var overlaySettingSwitchEntry = GuiXaeroPlusOverlaySettings.getScreenSwitchSettingEntry(parent);
this.entries = new ISettingEntry[mainSettingsEntries.length + 2];
this.entries[0] = chunkHighlightSettingSwitchEntry;
for (int i = 0; i < mainSettingsEntries.length; i++) {
this.entries[i + 1] = mainSettingsEntries[i];
}
this.entries[1] = overlaySettingSwitchEntry;
System.arraycopy(mainSettingsEntries, 0, this.entries, 2, mainSettingsEntries.length);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,23 @@

import static xaeroplus.util.GuiMapHelper.*;

public class DrawFeature {
public class ChunkHighlightDrawFeature {
private final AsyncLoadingCache<Long, LongList> chunkRenderCache;
private final ChunkHighlightProvider chunkHighlightProvider;
private final HighlightDrawBuffer drawBuffer = new HighlightDrawBuffer();

public DrawFeature(ChunkHighlightProvider chunkHighlightProvider) {
public ChunkHighlightDrawFeature(ChunkHighlightProvider chunkHighlightProvider) {
this.chunkHighlightProvider = chunkHighlightProvider;
this.chunkRenderCache = createChunkHighlightRenderCache(chunkHighlightProvider);
}

private AsyncLoadingCache<Long, LongList> createChunkHighlightRenderCache(final ChunkHighlightProvider chunkHighlightProvider) {
return Caffeine.newBuilder()
this.chunkRenderCache = Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.SECONDS)
.refreshAfterWrite(500, TimeUnit.MILLISECONDS)
.executor(Globals.cacheRefreshExecutorService.get())
.removalListener((k, v, cause) -> markDrawBuffersStale())
// only one key
.buildAsync(k -> loadFeatureHighlightsInWindow(chunkHighlightProvider));
.buildAsync(k -> loadFeatureHighlightsInWindow());
}

private LongList loadFeatureHighlightsInWindow(final ChunkHighlightProvider chunkHighlightProvider) {
private LongList loadFeatureHighlightsInWindow() {
final int windowX, windowZ, windowSize;
var guiMapOptional = getGuiMap();
if (guiMapOptional.isPresent()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

@FunctionalInterface
public interface ChunkHighlightSupplier {
LongList getHighlights(final int windowRegionX, final int windowRegionZ, final int windowRegionSize, ResourceKey<Level> dimension);
LongList getHighlights(final int windowRegionX, final int windowRegionZ, final int windowRegionSize, final ResourceKey<Level> dimension);
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package xaeroplus.feature.render;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import org.joml.Matrix4f;
import xaero.map.region.MapTileChunk;
import xaeroplus.feature.extensions.SeenChunksTrackingMapTileChunk;
import xaeroplus.util.ChunkUtils;

public class MinimapBackgroundDrawHelper {
public class DrawHelper {

public static void addMMBackgroundToBuffer(Matrix4f matrix, VertexConsumer bufferBuilder, final int drawX, final int drawY, final MapTileChunk chunk) {
// Most of the cpu cost in this method is submitting vertices to the buffer
Expand Down Expand Up @@ -64,4 +65,11 @@ public static void fillIntoExistingBuffer(Matrix4f matrix, VertexConsumer buffer
bufferBuilder.vertex(matrix, x2, y1, 0.0F).color(r, g, b, a).endVertex();
bufferBuilder.vertex(matrix, x1, y1, 0.0F).color(r, g, b, a).endVertex();
}

public static void addColoredLineToExistingBuffer(
PoseStack.Pose matrices, VertexConsumer vertexBuffer, float x1, float y1, float x2, float y2, float r, float g, float b, float a
) {
vertexBuffer.vertex(matrices.pose(), x1, y1, 0.0F).color(r, g, b, a).normal(matrices.normal(), x2 - x1, y2 - y1, 0.0F).endVertex();
vertexBuffer.vertex(matrices.pose(), x2, y2, 0.0F).color(r, g, b, a).normal(matrices.normal(), x2 - x1, y2 - y1, 0.0F).endVertex();
}
}
Loading

0 comments on commit c0cd221

Please sign in to comment.