using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace gaemstone.ECS.Utility; public class FlecsException : Exception { public FlecsException() : base() { } public FlecsException(string message) : base(message) { } } public class FlecsAbortException : FlecsException { private readonly string _stackTrace = new StackTrace(2, true).ToString(); public override string? StackTrace => _stackTrace; private FlecsAbortException() : base("Abort was called by flecs") { } [UnmanagedCallersOnly] internal static void Callback() => throw new FlecsAbortException(); }