debug rendering paths
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-06-04 21:46:31 -04:00
parent 0cbec44ab5
commit 661300297c
4 changed files with 33 additions and 4 deletions

View File

@ -2102,7 +2102,6 @@ ServerGroundMovementTree supports collidable entities
ServerGroundMovementTree geom work
ServerLODComponent replaces bodies with geometries instead of just destroying the geometries
(06/01/2025 - 06/04/2025)
Fix rebase world origin routine
Non-rigid-body collidables behave as expected
@ -2112,6 +2111,8 @@ Fix physics performance issues
ServerGroundMovementTree actually moves collidable-based entities
Client uses non-rigid-body collidables for farther away entities (via client LOD tree)
Reorder main content draw calls to support non-OIT transparencies better
Content debug supports rendering paths
Rendering ai pathfinding paths

View File

@ -20,6 +20,7 @@ import electrosphere.renderer.actor.mask.ActorTextureMask;
import electrosphere.renderer.ui.imgui.ImGuiWindow;
import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback;
import electrosphere.server.ai.AI;
import electrosphere.server.ai.blackboard.Blackboard;
import electrosphere.server.ai.nodes.plan.PathfindingNode;
import electrosphere.server.datacell.Realm;
import electrosphere.server.datacell.gridded.GriddedDataCellManager;
@ -28,6 +29,7 @@ import electrosphere.server.macro.character.Character;
import electrosphere.server.macro.character.CharacterUtils;
import electrosphere.server.macro.character.goal.CharacterGoal;
import electrosphere.server.macro.character.goal.CharacterGoal.CharacterGoalType;
import electrosphere.server.pathfinding.recast.PathingProgressiveData;
import electrosphere.server.pathfinding.voxel.VoxelPathfinder;
import electrosphere.server.pathfinding.voxel.VoxelPathfinder.PathfinderNode;
import imgui.ImGui;
@ -80,7 +82,12 @@ public class ImGuiAI {
ImGui.indent();
if(ImGui.collapsingHeader(ai.getParent().getId() + " - " + ai.getStatus())){
if(ImGui.button("Draw current pathing")){
throw new Error("Unsupported currently!");
Blackboard blackboard = ai.getBlackboard();
PathingProgressiveData pathData = PathfindingNode.getPathfindingData(blackboard);
if(pathData != null){
List<Vector3d> points = pathData.getPoints();
Globals.renderingEngine.getDebugContentPipeline().setPathPoints(points);
}
}
if(ImGui.button("Send off map")){
Entity entity = ai.getParent();

View File

@ -354,7 +354,7 @@ public class Actor {
* @param frustumCull Controls whether the frustum cull should actually be executed or not
* @return true if it is within the box, false otherwise
*/
static boolean isWithinFrustumBox(RenderPipelineState renderPipelineState, Model model, boolean frustumCull){
private static boolean isWithinFrustumBox(RenderPipelineState renderPipelineState, Model model, boolean frustumCull){
if(!frustumCull){
return true;
}
@ -375,7 +375,7 @@ public class Actor {
* @param frustumCull Controls whether the frustum cull should actually be executed or not
* @return true if it is within the box, false otherwise
*/
static boolean isWithinFrustumBox(RenderPipelineState renderPipelineState, Model model, Vector3d position, boolean frustumCull){
private static boolean isWithinFrustumBox(RenderPipelineState renderPipelineState, Model model, Vector3d position, boolean frustumCull){
if(!frustumCull){
return true;
}

View File

@ -74,6 +74,11 @@ public class DebugContentPipeline implements RenderPipeline {
*/
private List<Entity> macroNavEntities = new LinkedList<Entity>();
/**
* The set of points to visualize a path along
*/
private List<Vector3d> pathPoints = null;
@Override
public void render(OpenGLState openGLState, RenderPipelineState renderPipelineState) {
Globals.profiler.beginCpuSample("DebugContentPipeline.render");
@ -298,6 +303,14 @@ public class DebugContentPipeline implements RenderPipeline {
}
}
//
//Path points rendering
if(this.pathPoints != null && pathPoints.size() > 1){
for(int i = 0; i < pathPoints.size() - 1; i++){
DebugContentPipeline.renderTube(openGLState, renderPipelineState, modelTransformMatrix, pathPoints.get(i), pathPoints.get(i+1), 1, AssetDataStrings.TEXTURE_RED_TRANSPARENT);
}
}
//
//Draw cell colliders data
if(Globals.gameConfigCurrent.getSettings().getGraphicsDebugDrawClientCellColliders()){
@ -617,6 +630,14 @@ public class DebugContentPipeline implements RenderPipeline {
}
}
/**
* Sets the path points to render
* @param pathPoints The set of points to render a path along
*/
public void setPathPoints(List<Vector3d> pathPoints){
this.pathPoints = pathPoints;
}
/**
* Gets the bone debugging pipeline
* @return The bone debugging pipeline