public static void Log(string category, ELogVerbosity verbosity, string message) { if (verbosity == ELogVerbosity.Fatal) { string callstack = null; try { callstack = Environment.StackTrace; } catch { } FMessage.OpenDialog("Fatal error from C# (USharp):" + Environment.NewLine + Environment.NewLine + message + Environment.NewLine + Environment.NewLine + "Callstack:" + Environment.NewLine + Environment.NewLine + callstack); } if (string.IsNullOrEmpty(category)) { category = "USharp"; } using (FStringUnsafe messageUnsafe = new FStringUnsafe(message)) using (FStringUnsafe categoryUnsafe = new FStringUnsafe(category)) { Native_FMessageDialog.Log(ref messageUnsafe.Array, ref categoryUnsafe.Array, verbosity); } }
private void OnAssetLoadingCrash() { if (!string.IsNullOrEmpty(loadingAsset)) { FMessage.OpenDialog(string.Format("Crash when loading asset '{0}'", loadingAsset)); } }
private static void ValidateStructSize <T>(Native_SizeOfStruct.Del_SizeOf func, int managedSize) where T : struct { int nativeSize = func(); if (managedSize != nativeSize) { string error = string.Format("Struct size mismatch on '{0}' managed:{1} native:{2}", typeof(T), managedSize, nativeSize); FMessage.Log(ELogVerbosity.Error, error); #if DEBUG System.Diagnostics.Debug.WriteLine(error); System.Diagnostics.Debug.Assert(false, error); #else FMessage.OpenDialog(error); #endif } }