diff --git a/src/engine/Entity.jl b/src/engine/Entity.jl index 04d74b9..9519e9c 100644 --- a/src/engine/Entity.jl +++ b/src/engine/Entity.jl @@ -76,18 +76,24 @@ module EntityModule try Base.invokelatest(JulGame.update, script, deltaTime) catch e - Threads.@spawn begin - err_str = string(e) - formatted_err = format_method_error(err_str) # Format MethodError - truncated_err = length(formatted_err) > 1500 ? formatted_err[1:1500] * "..." : formatted_err - - @error "Error occurred" exception=truncated_err - Base.show_backtrace(stderr, catch_backtrace()) + task = @task begin + print_error(e) end + schedule(task) + yield() end end end + function print_error(e) + err_str = string(e) + formatted_err = format_method_error(err_str) # Format MethodError + truncated_err = length(formatted_err) > 1500 ? formatted_err[1:1500] * "..." : formatted_err + + @error "Error occurred" exception=truncated_err + Base.show_backtrace(stderr, catch_backtrace()) + end + function format_method_error(error_msg::String) # Match "MethodError(FUNCTION_NAME, (ARGUMENTS))" if occursin(r"MethodError\((.+?), \((.+)\)\)", error_msg)