diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index a24224c74..5eca235fe 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -30,6 +30,7 @@ import com.seibel.distanthorizons.core.config.types.*; import com.seibel.distanthorizons.core.config.types.enums.*; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import com.seibel.distanthorizons.core.pos.DhSectionPos; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper; import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.coreapi.util.StringUtil; @@ -1160,6 +1161,26 @@ public class Config .addListener(UnsafeValuesConfigListener.INSTANCE) .build(); + public static ConfigEntry columnBuilderDebugEnable = new ConfigEntry.Builder() + .set(false) + .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) + .addListener(DebugColumnConfigEventHandler.INSTANCE) + .build(); + public static ConfigEntry columnBuilderDebugDetailLevel = new ConfigEntry.Builder() + .set((int) DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL) + .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) + .addListener(DebugColumnConfigEventHandler.INSTANCE) + .build(); + public static ConfigEntry columnBuilderDebugXPos = new ConfigEntry.Builder() + .set(0) + .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) + .addListener(DebugColumnConfigEventHandler.INSTANCE) + .build(); + public static ConfigEntry columnBuilderDebugZPos = new ConfigEntry.Builder() + .set(0) + .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) + .addListener(DebugColumnConfigEventHandler.INSTANCE) + .build(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/DebugColumnConfigEventHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/DebugColumnConfigEventHandler.java new file mode 100644 index 000000000..9e014f45f --- /dev/null +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/DebugColumnConfigEventHandler.java @@ -0,0 +1,56 @@ +/* + * This file is part of the Distant Horizons mod + * licensed under the GNU LGPL v3 License. + * + * Copyright (C) 2020-2023 James Seibel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.seibel.distanthorizons.core.config.eventHandlers; + +import com.seibel.distanthorizons.api.DhApi; +import com.seibel.distanthorizons.api.enums.config.EHorizontalQuality; +import com.seibel.distanthorizons.api.enums.config.EMaxHorizontalResolution; +import com.seibel.distanthorizons.api.enums.config.EVerticalQuality; +import com.seibel.distanthorizons.api.enums.config.quickOptions.EQualityPreset; +import com.seibel.distanthorizons.api.enums.rendering.ETransparency; +import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy; +import com.seibel.distanthorizons.core.config.Config; +import com.seibel.distanthorizons.core.config.ConfigEntryWithPresetOptions; +import com.seibel.distanthorizons.core.config.eventHandlers.presets.AbstractPresetConfigEventHandler; +import com.seibel.distanthorizons.core.config.listeners.ConfigChangeListener; +import com.seibel.distanthorizons.core.config.listeners.IConfigListener; +import com.seibel.distanthorizons.coreapi.interfaces.config.IConfigEntry; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +public class DebugColumnConfigEventHandler implements IConfigListener +{ + public static DebugColumnConfigEventHandler INSTANCE = new DebugColumnConfigEventHandler(); + + @Override + public void onConfigValueSet() + { + IDhApiRenderProxy renderProxy = DhApi.Delayed.renderProxy; + if (renderProxy != null) + { + renderProxy.clearRenderDataCache(); + } + } + +} diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java index ebb7052a4..6b75be291 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java @@ -180,18 +180,22 @@ public class ColumnRenderBufferBuilder // Variable initialization EDebugRendering debugMode = Config.Client.Advanced.Debugging.debugRendering.get(); - // TODO make a config for this - // can be uncommented to limit which section positions are build and thus, rendered + // can be used to limit which section positions are build and thus, rendered // useful when debugging a specific section -// if (renderSource.sectionPos.getDetailLevel() == 6 -// && renderSource.sectionPos.getZ() == 0 && renderSource.sectionPos.getX() == 0) -// { -// int test = 0; -// } -// else -// { -// return; -// } + boolean enableColumnBufferLimit = Config.Client.Advanced.Debugging.columnBuilderDebugEnable.get(); + if (enableColumnBufferLimit) + { + if (renderSource.sectionPos.getDetailLevel() == Config.Client.Advanced.Debugging.columnBuilderDebugDetailLevel.get() + && renderSource.sectionPos.getX() == Config.Client.Advanced.Debugging.columnBuilderDebugXPos.get() + && renderSource.sectionPos.getZ() == Config.Client.Advanced.Debugging.columnBuilderDebugZPos.get()) + { + int test = 0; + } + else + { + return; + } + } byte detailLevel = renderSource.getDataDetailLevel(); for (int x = 0; x < ColumnRenderSource.SECTION_SIZE; x++) diff --git a/core/src/main/resources/assets/distanthorizons/lang/en_us.json b/core/src/main/resources/assets/distanthorizons/lang/en_us.json index 3adec012b..73b1ab284 100644 --- a/core/src/main/resources/assets/distanthorizons/lang/en_us.json +++ b/core/src/main/resources/assets/distanthorizons/lang/en_us.json @@ -433,6 +433,15 @@ "distanthorizons.config.client.advanced.debugging.allowUnsafeValues.@tooltip": "If enabled, very limited config input validation will be performed. \n\nWarning: enabling this can cause instability or crashing, use at your own risk. \nNote: this option isn't saved between sessions.", + "distanthorizons.config.client.advanced.debugging.columnBuilderDebugEnable": + "Enable Column Builder Limiting", + "distanthorizons.config.client.advanced.debugging.columnBuilderDebugDetailLevel": + "Column Builder Limit - Detail Level", + "distanthorizons.config.client.advanced.debugging.columnBuilderDebugXPos": + "Column Builder Limit - X Pos", + "distanthorizons.config.client.advanced.debugging.columnBuilderDebugZPos": + "Column Builder Limit - Z Pos", + "distanthorizons.config.client.advanced.buffers": "Buffers",