Add generic rendering to the F3 menu
This commit is contained in:
@@ -278,6 +278,7 @@ public class ClientLevelModule implements Closeable, AbstractDataSourceHandler.I
|
||||
|
||||
public final IClientLevelWrapper clientLevelWrapper;
|
||||
public final LodQuadTree quadtree;
|
||||
public final RenderBufferHandler renderBufferHandler;
|
||||
public final LodRenderer lodRenderer;
|
||||
public final GenericObjectRenderer genericRenderer;
|
||||
|
||||
@@ -296,9 +297,9 @@ public class ClientLevelModule implements Closeable, AbstractDataSourceHandler.I
|
||||
0, 0,
|
||||
fullDataSourceProvider);
|
||||
|
||||
RenderBufferHandler renderBufferHandler = new RenderBufferHandler(this.quadtree);
|
||||
this.genericRenderer = new GenericObjectRenderer();
|
||||
this.lodRenderer = new LodRenderer(renderBufferHandler, this.genericRenderer);
|
||||
this.renderBufferHandler = new RenderBufferHandler(this.quadtree);
|
||||
this.lodRenderer = new LodRenderer(this.renderBufferHandler, this.genericRenderer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.seibel.distanthorizons.core.file.fullDatafile.RemoteFullDataSourcePro
|
||||
import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.pos.DhBlockPos;
|
||||
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
|
||||
import com.seibel.distanthorizons.core.render.renderer.GenericObjectRenderer;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
|
||||
@@ -177,5 +178,11 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel
|
||||
ClientLevelModule.ClientRenderState renderState = this.clientside.ClientRenderStateRef.get();
|
||||
return (renderState != null) ? renderState.genericRenderer : null;
|
||||
}
|
||||
@Override
|
||||
public RenderBufferHandler getRenderBufferHandler()
|
||||
{
|
||||
ClientLevelModule.ClientRenderState renderState = this.clientside.ClientRenderStateRef.get();
|
||||
return (renderState != null) ? renderState.renderBufferHandler : null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2;
|
||||
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
|
||||
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
|
||||
import com.seibel.distanthorizons.core.render.renderer.DebugRenderer;
|
||||
import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
@@ -231,6 +232,12 @@ public class DhClientServerLevel extends AbstractDhLevel implements IDhClientLev
|
||||
ClientLevelModule.ClientRenderState renderState = this.clientside.ClientRenderStateRef.get();
|
||||
return (renderState != null) ? renderState.genericRenderer : null;
|
||||
}
|
||||
@Override
|
||||
public RenderBufferHandler getRenderBufferHandler()
|
||||
{
|
||||
ClientLevelModule.ClientRenderState renderState = this.clientside.ClientRenderStateRef.get();
|
||||
return (renderState != null) ? renderState.renderBufferHandler : null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV
|
||||
import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure;
|
||||
import com.seibel.distanthorizons.core.pos.DhBlockPos2D;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
|
||||
import com.seibel.distanthorizons.core.render.renderer.GenericObjectRenderer;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
|
||||
@@ -123,7 +124,12 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel
|
||||
// server-only levels don't support rendering
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderBufferHandler getRenderBufferHandler()
|
||||
{
|
||||
// server-only levels don't support rendering
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//===========//
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour
|
||||
import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2;
|
||||
import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure;
|
||||
import com.seibel.distanthorizons.core.pos.DhChunkPos;
|
||||
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
|
||||
import com.seibel.distanthorizons.core.render.renderer.GenericObjectRenderer;
|
||||
import com.seibel.distanthorizons.core.sql.dto.BeaconBeamDTO;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
|
||||
@@ -75,5 +76,11 @@ public interface IDhLevel extends AutoCloseable
|
||||
*/
|
||||
@Nullable
|
||||
GenericObjectRenderer getGenericRenderer();
|
||||
/**
|
||||
* Will return null if the renderer isn't set up yet. <br>
|
||||
* Not supported on the server-side.
|
||||
*/
|
||||
@Nullable
|
||||
RenderBufferHandler getRenderBufferHandler();
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ package com.seibel.distanthorizons.core.logging.f3;
|
||||
import com.seibel.distanthorizons.core.api.internal.SharedApi;
|
||||
import com.seibel.distanthorizons.core.level.IDhLevel;
|
||||
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
|
||||
import com.seibel.distanthorizons.core.render.renderer.GenericObjectRenderer;
|
||||
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
|
||||
import com.seibel.distanthorizons.core.world.AbstractDhWorld;
|
||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
||||
@@ -42,23 +43,6 @@ public class F3Screen
|
||||
|
||||
|
||||
|
||||
//============//
|
||||
// properties //
|
||||
//============//
|
||||
|
||||
private static WeakReference<RenderBufferHandler> renderBufferHandlerRef = new WeakReference<>(null);
|
||||
public static void setRenderBufferHandler(@Nullable RenderBufferHandler renderBufferHandler)
|
||||
{
|
||||
if (renderBufferHandler != null && renderBufferHandlerRef.get() != null)
|
||||
{
|
||||
LOGGER.warn("multiple RenderBufferHandlers are active at once, the F3 menu may not be accurate.");
|
||||
}
|
||||
|
||||
renderBufferHandlerRef = new WeakReference<>(renderBufferHandler);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=================//
|
||||
// injection point //
|
||||
//=================//
|
||||
@@ -106,23 +90,28 @@ public class F3Screen
|
||||
// chunk updates
|
||||
messageList.add(SharedApi.INSTANCE.getDebugMenuString());
|
||||
messageList.add("");
|
||||
// rendering
|
||||
RenderBufferHandler renderBufferHandler = renderBufferHandlerRef.get();
|
||||
if (renderBufferHandler != null)
|
||||
{
|
||||
messageList.add(renderBufferHandler.getVboRenderDebugMenuString());
|
||||
String showPassString = renderBufferHandler.getShadowPassRenderDebugMenuString();
|
||||
if (showPassString != null)
|
||||
{
|
||||
messageList.add(showPassString);
|
||||
}
|
||||
messageList.add("");
|
||||
}
|
||||
// world / levels
|
||||
messageList.add(world.GetDebugMenuString());
|
||||
for (IDhLevel level : levelIterator)
|
||||
{
|
||||
level.addDebugMenuStringsToList(messageList);
|
||||
// LOD rendering
|
||||
RenderBufferHandler renderBufferHandler = level.getRenderBufferHandler();
|
||||
if (renderBufferHandler != null)
|
||||
{
|
||||
messageList.add(renderBufferHandler.getVboRenderDebugMenuString());
|
||||
String showPassString = renderBufferHandler.getShadowPassRenderDebugMenuString();
|
||||
if (showPassString != null)
|
||||
{
|
||||
messageList.add(showPassString);
|
||||
}
|
||||
}
|
||||
// Generic rendering
|
||||
GenericObjectRenderer genericRenderer = level.getGenericRenderer();
|
||||
if (genericRenderer != null)
|
||||
{
|
||||
messageList.add(genericRenderer.getVboRenderDebugMenuString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -100,9 +100,6 @@ public class RenderBufferHandler implements AutoCloseable
|
||||
{
|
||||
DhApi.overrides.bind(IDhApiShadowCullingFrustum.class, new NeverCullFrustum());
|
||||
}
|
||||
|
||||
|
||||
F3Screen.setRenderBufferHandler(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -417,8 +414,6 @@ public class RenderBufferHandler implements AutoCloseable
|
||||
renderSection.close();
|
||||
}
|
||||
}
|
||||
|
||||
F3Screen.setRenderBufferHandler(null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+29
@@ -27,9 +27,11 @@ import com.seibel.distanthorizons.api.interfaces.render.IDhApiCustomRenderRegist
|
||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
|
||||
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
|
||||
import com.seibel.distanthorizons.core.config.Config;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
|
||||
import com.seibel.distanthorizons.core.pos.DhBlockPos;
|
||||
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
|
||||
import com.seibel.distanthorizons.core.render.glObject.GLState;
|
||||
@@ -613,6 +615,33 @@ public class GenericObjectRenderer implements IDhApiCustomRenderRegister
|
||||
|
||||
|
||||
|
||||
|
||||
//=========//
|
||||
// F3 menu //
|
||||
//=========//
|
||||
|
||||
public String getVboRenderDebugMenuString()
|
||||
{
|
||||
// get counts
|
||||
int totalCount = this.boxGroupById.size();
|
||||
int activeCount = 0;
|
||||
for (long key : this.boxGroupById.keySet())
|
||||
{
|
||||
RenderableBoxGroup renderGroup = this.boxGroupById.get(key);
|
||||
if (renderGroup.active)
|
||||
{
|
||||
activeCount++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String totalCountText = F3Screen.NUMBER_FORMAT.format(totalCount);
|
||||
String activeCountText = F3Screen.NUMBER_FORMAT.format(activeCount);
|
||||
return LodUtil.formatLog("Generic Obj Count: " + activeCountText + "/" + totalCountText);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//================//
|
||||
// helper classes //
|
||||
//================//
|
||||
|
||||
Reference in New Issue
Block a user