/// <summary> /// Function registered with VisRen to be called once per frame, we use it to process our queue messages /// and trigger Lua callbacks when speech recognition is complete. /// See https://developers.virtalis.com/blogs/thread-safety-in-visionary-render-plugins /// </summary> /// <param name="dt"></param> /// <param name="ud"></param> public static void Update(double dt, IntPtr ud) { while (MessageQueue.TryDequeue(out var item)) { FFIVarHandle[] args = { FFI.MakeString(item.Callback), FFI.MakeString(item.Param ?? "") }; FFI.Invoke("__callback", args); } }