navmesh bugfix
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
6c06391245
commit
ccb532f4f7
@ -1517,6 +1517,10 @@ GriddedDataCellManager pathfinding solution
|
|||||||
ServerTerrainManager nullcheck fix
|
ServerTerrainManager nullcheck fix
|
||||||
Fix nav mesh construction params
|
Fix nav mesh construction params
|
||||||
|
|
||||||
|
(04/24/2025)
|
||||||
|
GriddedDataCellManager debugging tools
|
||||||
|
NavMesh bugfix
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package electrosphere.client.ui.menu.debug;
|
package electrosphere.client.ui.menu.debug;
|
||||||
|
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
|
import electrosphere.entity.Entity;
|
||||||
|
import electrosphere.entity.EntityUtils;
|
||||||
import electrosphere.renderer.ui.imgui.ImGuiWindow;
|
import electrosphere.renderer.ui.imgui.ImGuiWindow;
|
||||||
import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback;
|
import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback;
|
||||||
import electrosphere.server.datacell.Realm;
|
import electrosphere.server.datacell.Realm;
|
||||||
@ -46,6 +48,12 @@ public class ImGuiGriddedManager {
|
|||||||
ImGui.text("Playerless tracking map size: " + manager.getCellPlayerlessFrameMap().keySet().size());
|
ImGui.text("Playerless tracking map size: " + manager.getCellPlayerlessFrameMap().keySet().size());
|
||||||
}
|
}
|
||||||
ImGui.text("Cells cleaned last frame: " + manager.getNumCleaned());
|
ImGui.text("Cells cleaned last frame: " + manager.getNumCleaned());
|
||||||
|
if(ImGui.button("Player Data Cell Info")){
|
||||||
|
Entity playerEntity = Globals.playerManager.getFirstPlayer().getPlayerEntity();
|
||||||
|
Realm realm = Globals.realmManager.getEntityRealm(playerEntity);
|
||||||
|
GriddedDataCellManager griddedDataCellManager = (GriddedDataCellManager)realm.getDataCellManager();
|
||||||
|
griddedDataCellManager.printCellInfo(griddedDataCellManager.getDataCellAtPoint(EntityUtils.getPosition(playerEntity)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -763,6 +763,7 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
GriddedDataCellTrackingData trackingData = cellTrackingMap.get(dataCell);
|
GriddedDataCellTrackingData trackingData = cellTrackingMap.get(dataCell);
|
||||||
|
|
||||||
generationService.submit(() -> {
|
generationService.submit(() -> {
|
||||||
|
try {
|
||||||
BlockChunkData blockChunkData = realm.getServerWorldData().getServerBlockManager().getChunk(worldPos.x, worldPos.y, worldPos.z);
|
BlockChunkData blockChunkData = realm.getServerWorldData().getServerBlockManager().getChunk(worldPos.x, worldPos.y, worldPos.z);
|
||||||
ServerTerrainChunk terrainChunk = realm.getServerWorldData().getServerTerrainManager().getChunk(worldPos.x, worldPos.y, worldPos.z);
|
ServerTerrainChunk terrainChunk = realm.getServerWorldData().getServerTerrainManager().getChunk(worldPos.x, worldPos.y, worldPos.z);
|
||||||
targetCell.setTerrainChunk(terrainChunk);
|
targetCell.setTerrainChunk(terrainChunk);
|
||||||
@ -786,6 +787,11 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
|
|
||||||
//set ready
|
//set ready
|
||||||
dataCell.setReady(true);
|
dataCell.setReady(true);
|
||||||
|
} catch(Exception ex){
|
||||||
|
LoggerInterface.loggerEngine.ERROR(ex);
|
||||||
|
} catch (Error ex){
|
||||||
|
LoggerInterface.loggerEngine.ERROR(ex);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1078,4 +1084,20 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager
|
|||||||
throw new UnsupportedOperationException("Unimplemented method 'findPath'");
|
throw new UnsupportedOperationException("Unimplemented method 'findPath'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints information about the provided server data cell
|
||||||
|
* @param serverDataCell The cell
|
||||||
|
*/
|
||||||
|
public void printCellInfo(ServerDataCell serverDataCell){
|
||||||
|
LoggerInterface.loggerEngine.WARNING("Number of players: " + serverDataCell.getPlayers().size());
|
||||||
|
GriddedDataCellTrackingData trackingData = this.cellTrackingMap.get(serverDataCell);
|
||||||
|
if(trackingData == null){
|
||||||
|
LoggerInterface.loggerEngine.WARNING("No tracking data for this cell in the gridded data cell manager");
|
||||||
|
} else {
|
||||||
|
LoggerInterface.loggerEngine.WARNING("Closest player distance: " + trackingData.getClosestPlayer());
|
||||||
|
}
|
||||||
|
LoggerInterface.loggerEngine.WARNING("Should simulate: " + this.shouldSimulate(serverDataCell));
|
||||||
|
LoggerInterface.loggerEngine.WARNING("Cell is ready: " + serverDataCell.isReady());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,10 +105,6 @@ public class NavMeshConstructor {
|
|||||||
polyMesh.flags[i] = 1;
|
polyMesh.flags[i] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PolyMeshDetail polyMeshDetail = recastBuilderResult.getMeshDetail();
|
|
||||||
if(polyMeshDetail == null){
|
|
||||||
throw new Error("Poly mesh detail is null");
|
|
||||||
}
|
|
||||||
|
|
||||||
//set params
|
//set params
|
||||||
NavMeshDataCreateParams params = new NavMeshDataCreateParams();
|
NavMeshDataCreateParams params = new NavMeshDataCreateParams();
|
||||||
@ -119,11 +115,6 @@ public class NavMeshConstructor {
|
|||||||
params.polyFlags = polyMesh.flags;
|
params.polyFlags = polyMesh.flags;
|
||||||
params.polyCount = polyMesh.npolys;
|
params.polyCount = polyMesh.npolys;
|
||||||
params.nvp = polyMesh.nvp;
|
params.nvp = polyMesh.nvp;
|
||||||
params.detailMeshes = polyMeshDetail.meshes;
|
|
||||||
params.detailVerts = polyMeshDetail.verts;
|
|
||||||
params.detailVertsCount = polyMeshDetail.nverts;
|
|
||||||
params.detailTris = polyMeshDetail.tris;
|
|
||||||
params.detailTriCount = polyMeshDetail.ntris;
|
|
||||||
params.walkableHeight = RECAST_AGENT_HEIGHT;
|
params.walkableHeight = RECAST_AGENT_HEIGHT;
|
||||||
params.walkableRadius = RECAST_AGENT_SIZE;
|
params.walkableRadius = RECAST_AGENT_SIZE;
|
||||||
params.walkableClimb = RECAST_AGENT_MAX_CLIMB;
|
params.walkableClimb = RECAST_AGENT_MAX_CLIMB;
|
||||||
@ -133,6 +124,15 @@ public class NavMeshConstructor {
|
|||||||
params.ch = RECAST_CELL_HEIGHT;
|
params.ch = RECAST_CELL_HEIGHT;
|
||||||
params.buildBvTree = true;
|
params.buildBvTree = true;
|
||||||
|
|
||||||
|
PolyMeshDetail polyMeshDetail = recastBuilderResult.getMeshDetail();
|
||||||
|
if(polyMeshDetail != null){
|
||||||
|
params.detailMeshes = polyMeshDetail.meshes;
|
||||||
|
params.detailVerts = polyMeshDetail.verts;
|
||||||
|
params.detailVertsCount = polyMeshDetail.nverts;
|
||||||
|
params.detailTris = polyMeshDetail.tris;
|
||||||
|
params.detailTriCount = polyMeshDetail.ntris;
|
||||||
|
}
|
||||||
|
|
||||||
// params.offMeshConVerts = new float[6];
|
// params.offMeshConVerts = new float[6];
|
||||||
// params.offMeshConVerts[0] = 0.1f;
|
// params.offMeshConVerts[0] = 0.1f;
|
||||||
// params.offMeshConVerts[1] = 0.2f;
|
// params.offMeshConVerts[1] = 0.2f;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user