Closed Barina closed 1 year ago
Alright I assumed UnityEditor.Toolbar
derives from some Editor
so I tried to get a Repaint
method and it worked.
My solution:
[InitializeOnLoad]
class MyClass
{
static Action toolbarRepaint;
public MyClass()
{
EditorApplication.update += TryRepaintToolbar;
}
static void TryRepaintToolbar()
{
if (toolbarRepaint != null)
{
toolbarRepaint();
return;
}
Type t = typeof(Editor).Assembly.GetType("UnityEditor.Toolbar");
var tbs = Resources.FindObjectsOfTypeAll(t);
for (int i = 0; i < tbs.Length; i++)
{
UnityEngine.Object tb = tbs[i];
if (tb.GetType() == t)
{
toolbarRepaint = (Action)t.GetMethod("Repaint")?.CreateDelegate(typeof(Action), tb);
return;
}
}
}
}
This will seek for the first UnityEditor.Toolbar
it can find and creates and caches an System.Action
delegate and invokes it on every EditorApplication.update
.
You probably want to unregister when not needed.
Hi, love this asset! Is there a way to force a repaint? to let's say show a timer. I didn't find any. I can register a callback on
EditorApplication.update
but I didn't find what to call..