using System.Runtime.CompilerServices; namespace GlitchyEngine; /// /// Provides methods to log messages to the Engine Console. /// public class Log { /// /// The severity of the log message. /// private enum LogLevel { Trace = 0, Debug, Info, Warning, Error, Critical, Off } /// /// Logs a trace message. /// /// The message to log. public static void Trace(string message) { LogMessage_Impl(LogLevel.Trace, message); } /// /// Logs an info message. /// /// The message to log. public static void Info(string message) { LogMessage_Impl(LogLevel.Info, message); } /// /// Logs a warning message. /// /// The message to log. public static void Warning(string message) { LogMessage_Impl(LogLevel.Warning, message); } /// /// Logs an error message. /// /// The message to log. public static void Error(string message) { LogMessage_Impl(LogLevel.Error, message); } /// /// Logs a critical error message. /// /// The message to log. public static void Critical(string message) { LogMessage_Impl(LogLevel.Critical, message); } /// /// Serializes the given object (using ) and logs it as a trace message. /// /// The object to serialize. public static void Trace(object obj) { LogMessage_Impl(LogLevel.Trace, obj.ToString()); } /// /// Serializes the given object (using ) and logs it as an info message. /// /// The object to serialize. public static void Info(object obj) { LogMessage_Impl(LogLevel.Info, obj.ToString()); } /// /// Serializes the given object (using ) and logs it as a warning message. /// /// The object to serialize. public static void Warning(object obj) { LogMessage_Impl(LogLevel.Warning, obj.ToString()); } /// /// Serializes the given object (using ) and logs it as an error message. /// /// The object to serialize. public static void Error(object obj) { LogMessage_Impl(LogLevel.Error, obj.ToString()); } /// /// Serializes the given object (using ) and logs it as a critical error message. /// /// The object to serialize. public static void Critical(object obj) { LogMessage_Impl(LogLevel.Critical, obj.ToString()); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern string LogMessage_Impl(LogLevel logLevel, string message); }