logger toggle debug window
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2024-08-16 22:20:09 -04:00
parent b729208fc3
commit 277b9b6ee3
7 changed files with 205 additions and 16 deletions

View File

@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file #maven.buildNumber.plugin properties file
#Fri Aug 16 18:09:29 EDT 2024 #Fri Aug 16 19:38:51 EDT 2024
buildNumber=257 buildNumber=258

View File

@ -601,6 +601,7 @@ Fix ui alignment for item panels in inventory menus (ie dont have to place in co
Netconfig file support Netconfig file support
Fix rotation not sending correctly on initialization of creatures on client Fix rotation not sending correctly on initialization of creatures on client
Fix F2 menu not regaining controls when Xing menu instead of hitting F2 to close Fix F2 menu not regaining controls when Xing menu instead of hitting F2 to close
Logger toggle debug window
# TODO # TODO

View File

@ -21,11 +21,16 @@ public class Logger {
//the level of this log //the level of this log
LogLevel level; LogLevel level;
//The name of the logger
String name;
/** /**
* Creates a logger channel * Creates a logger channel
* @param name The name of the logger
* @param level The level of message to report on this channel * @param level The level of message to report on this channel
*/ */
public Logger(LogLevel level){ public Logger(String name, LogLevel level){
this.name = name;
this.level = level; this.level = level;
} }
@ -118,7 +123,39 @@ public class Logger {
* @param message The message * @param message The message
*/ */
public void PRINT(LogLevel level, String message){ public void PRINT(LogLevel level, String message){
switch(level){
case ERROR:{
this.ERROR(new Exception(message));
} break;
case WARNING:{
this.WARNING(message);
} break;
case INFO:{
this.INFO(message);
} break;
case DEBUG:{
this.DEBUG(message);
} break;
case LOOP_DEBUG:{
this.DEBUG_LOOP(message);
} break;
}
}
/**
* Gets the level of the logger
* @return The level
*/
public LogLevel getLevel(){
return this.level;
}
/**
* Gets the name of the logger
* @return the name
*/
public String getName(){
return this.name;
} }
} }

View File

@ -1,5 +1,8 @@
package electrosphere.logger; package electrosphere.logger;
import java.util.Arrays;
import java.util.List;
import electrosphere.logger.Logger.LogLevel; import electrosphere.logger.Logger.LogLevel;
/** /**
@ -26,18 +29,41 @@ public class LoggerInterface {
* Initializes all logic objects * Initializes all logic objects
*/ */
public static void initLoggers(){ public static void initLoggers(){
loggerStartup = new Logger(LogLevel.WARNING); loggerStartup = new Logger("Startup", LogLevel.WARNING);
loggerNetworking = new Logger(LogLevel.WARNING); loggerNetworking = new Logger("Networking", LogLevel.WARNING);
loggerFileIO = new Logger(LogLevel.WARNING); loggerFileIO = new Logger("File IO", LogLevel.WARNING);
loggerGameLogic = new Logger(LogLevel.WARNING); loggerGameLogic = new Logger("Game Logic", LogLevel.WARNING);
loggerRenderer = new Logger(LogLevel.WARNING); loggerRenderer = new Logger("Renderer", LogLevel.WARNING);
loggerEngine = new Logger(LogLevel.WARNING); loggerEngine = new Logger("Engine", LogLevel.WARNING);
loggerAuth = new Logger(LogLevel.WARNING); loggerAuth = new Logger("Auth", LogLevel.WARNING);
loggerDB = new Logger(LogLevel.WARNING); loggerDB = new Logger("DB", LogLevel.WARNING);
loggerAudio = new Logger(LogLevel.WARNING); loggerAudio = new Logger("Audio", LogLevel.WARNING);
loggerUI = new Logger(LogLevel.WARNING); loggerUI = new Logger("UI", LogLevel.WARNING);
loggerScripts = new Logger(LogLevel.WARNING); loggerScripts = new Logger("Scripts", LogLevel.WARNING);
loggerAI = new Logger(LogLevel.LOOP_DEBUG); loggerAI = new Logger("AI", LogLevel.WARNING);
loggerStartup.INFO("Initialized loggers"); loggerStartup.INFO("Initialized loggers");
} }
/**
* Gets the list of all loggers
* @return The list of all loggers
*/
public static List<Logger> getLoggers(){
Logger[] loggerList = new Logger[]{
loggerAI,
loggerAudio,
loggerAuth,
loggerNetworking,
loggerFileIO,
loggerGameLogic,
loggerRenderer,
loggerEngine,
loggerStartup,
loggerDB,
loggerUI,
loggerScripts,
};
return Arrays.asList(loggerList);
}
} }

View File

@ -0,0 +1,111 @@
package electrosphere.menu.debug;
import electrosphere.engine.Globals;
import electrosphere.logger.Logger;
import electrosphere.logger.LoggerInterface;
import electrosphere.logger.Logger.LogLevel;
import electrosphere.renderer.ui.imgui.ImGuiWindow;
import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback;
import imgui.ImGui;
/**
* Windows for dealing with loggers
*/
public class ImGuiLogger {
//window for viewing information about loggers
protected static ImGuiWindow loggersWindow;
/**
* Creates the windows in this file
*/
protected static void createLoggersWindows(){
createLoggersWindow();
}
/**
* loggers view
*/
protected static void createLoggersWindow(){
loggersWindow = new ImGuiWindow("Loggers");
loggersWindow.setCallback(new ImGuiWindowCallback() {
@Override
public void exec() {
//ui framework text
ImGui.text("Loggers");
ImGui.beginTable("Loggers", 6);
for(Logger logger : LoggerInterface.getLoggers()){
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(logger.getName() + ": ");
ImGui.tableNextColumn();
if(logger.getLevel() == LogLevel.ERROR){
ImGui.text("Error");
} else {
ImGui.pushID(logger.getName() + "error");
if(ImGui.button("Error")){
logger.setLevel(LogLevel.ERROR);
}
ImGui.popID();
}
ImGui.tableNextColumn();
if(logger.getLevel() == LogLevel.WARNING){
ImGui.text("Warning");
} else {
ImGui.pushID(logger.getName() + "warning");
if(ImGui.button("Warning")){
logger.setLevel(LogLevel.WARNING);
}
ImGui.popID();
}
ImGui.tableNextColumn();
if(logger.getLevel() == LogLevel.INFO){
ImGui.text("Info");
} else {
ImGui.pushID(logger.getName() + "info");
if(ImGui.button("Info")){
logger.setLevel(LogLevel.INFO);
}
ImGui.popID();
}
ImGui.tableNextColumn();
if(logger.getLevel() == LogLevel.DEBUG){
ImGui.text("Debug");
} else {
ImGui.pushID(logger.getName() + "debug");
if(ImGui.button("Debug")){
logger.setLevel(LogLevel.DEBUG);
}
ImGui.popID();
}
ImGui.tableNextColumn();
if(logger.getLevel() == LogLevel.LOOP_DEBUG){
ImGui.text("Debug_Loop");
} else {
ImGui.pushID(logger.getName() + "debug_loop");
if(ImGui.button("Debug_Loop")){
logger.setLevel(LogLevel.LOOP_DEBUG);
}
ImGui.popID();
}
}
ImGui.endTable();
}
});
loggersWindow.setOpen(false);
Globals.renderingEngine.getImGuiPipeline().addImGuiWindow(loggersWindow);
}
}

View File

@ -46,6 +46,7 @@ public class ImGuiWindowMacros {
ImGuiControls.createControlsWindows(); ImGuiControls.createControlsWindows();
ImGuiAI.createAIDebugWindow(); ImGuiAI.createAIDebugWindow();
ImGuiAudio.createAudioDebugMenu(); ImGuiAudio.createAudioDebugMenu();
ImGuiLogger.createLoggersWindows();
} }
/** /**
@ -156,6 +157,10 @@ public class ImGuiWindowMacros {
if(ImGui.button("AI State Debug")){ if(ImGui.button("AI State Debug")){
ImGuiAI.aiWindow.setOpen(true); ImGuiAI.aiWindow.setOpen(true);
} }
//logger state control
if(ImGui.button("Loggers")){
ImGuiLogger.loggersWindow.setOpen(true);
}
//close button //close button
if(ImGui.button("Close")){ if(ImGui.button("Close")){
mainDebugWindow.setOpen(false); mainDebugWindow.setOpen(false);

View File

@ -34,7 +34,7 @@ public class MeleeTargetingNode implements AITreeNode {
@Override @Override
public AITreeNodeResult evaluate(Entity entity, Blackboard blackboard){ public AITreeNodeResult evaluate(Entity entity, Blackboard blackboard){
if(MeleeTargetingNode.hasTarget(blackboard)){ if(MeleeTargetingNode.hasTarget(blackboard) && this.targetIsValid(entity)){
return AITreeNodeResult.SUCCESS; return AITreeNodeResult.SUCCESS;
} }
@ -65,6 +65,15 @@ public class MeleeTargetingNode implements AITreeNode {
return null; return null;
} }
/**
* Makes sure the target is valid
* @param entity The target entity
* @return true if valid, false otherwise
*/
private boolean targetIsValid(Entity entity){
return Globals.realmManager.getEntityRealm(entity) != null;
}
/** /**
* checks if the blackboard contains a melee target * checks if the blackboard contains a melee target
* @param blackboard The blackboard * @param blackboard The blackboard