bevy_webgl2
bevy_webgl2 copied to clipboard
Text doesn't work if bevy is started within an async function
Maybe the title is a bit inaccurate, but I had trouble rendering text in my game. I looked at the network requests, and saw that the font assets were never requests. Weirdly enough, moving the App::run
call out of the async function where I normally start bevy seems to fix the issue.
I.e. this is what I did before:
fn main() {
wasm_bindgen_futures::spawn_local(async move {
main_async().await.expect("main failed");
})
}
async fn main_async() -> Result<(), Box<dyn std::error::Error>> {
let mut app = App::new();
app.add_plugins(bevy_webgl2::DefaultPlugins);
app.add_startup_system(lobby_startup.system()).run();
Ok(())
}
And this is what works:
fn main() {
let mut app = App::new();
app.add_plugins(bevy_webgl2::DefaultPlugins);
app.add_startup_system(lobby_startup.system()).run();
}
I guess that perhaps running App::run(), which is a blocking call, inside an async function is probably making some other async task unhappy... The only problem is, I don't really understand how to solve this. How can I do async setup before starting bevy if bevy can't be started from an async task and webgl2 doesn't support proper threads?