bevy/crates
Ida Iyes 0cfdbddf2e bevy_dynamic_plugin: make it possible to handle loading errors (#6437)
# Objective

Currently, `bevy_dynamic_plugin` simply panics on error. This makes it impossible to handle failures in applications that use this feature.

For example, I'd like to build an optional expansion for my game, that may not be distributed to all users. I want to use `bevy_dynamic_plugin` for loading it. I want my game to try to load it on startup, but continue without it if it cannot be loaded.

## Solution

 - Make the `dynamically_load_plugin` function return a `Result`, so it can gracefully return loading errors.
 - Create an error enum type, to provide useful information about the kind of error. This adds `thiserror` to the dependencies of `bevy_dynamic_plugin`, but that dependency is already used in other parts of bevy (such as `bevy_asset`), so not a big deal.
 
 I chose not to change the behavior of the builder method in the App extension trait. I kept it as panicking. There is no clean way (that I'm aware of) to make a builder-style API that has fallible methods. So it is either a panic or a warning. I feel the panic is more appropriate.

---

## Changelog

### Changed
 - `bevy_dynamic_plugin::dynamically_load_plugin` now returns `Result` instead of panicking, to allow for error handling
2022-11-01 11:35:44 +00:00
..
bevy_animation add ReflectAsset and ReflectHandle (#5923) 2022-10-28 20:42:33 +00:00
bevy_app Unique plugin (#6411) 2022-10-31 16:12:19 +00:00
bevy_asset Rename Handle::as_weak() to cast_weak() (#5321) 2022-10-28 22:43:14 +00:00
bevy_audio Add a way to toggle AudioSink (#6321) 2022-10-31 15:57:51 +00:00
bevy_core Add serialize feature to bevy_core (#6423) 2022-10-31 21:20:57 +00:00
bevy_core_pipeline Rework ViewTarget to better support post processing (#6415) 2022-10-31 20:22:18 +00:00
bevy_derive Bump Version after Release (#5576) 2022-08-05 02:03:05 +00:00
bevy_diagnostic Add Exponential Moving Average into diagnostics (#4992) 2022-10-24 13:46:37 +00:00
bevy_dylib Bump Version after Release (#5576) 2022-08-05 02:03:05 +00:00
bevy_dynamic_plugin bevy_dynamic_plugin: make it possible to handle loading errors (#6437) 2022-11-01 11:35:44 +00:00
bevy_ecs Speed up Query::get_many and add benchmarks (#6400) 2022-11-01 03:51:41 +00:00
bevy_ecs_compile_fail_tests fix: specify required trybuild patch version (#6333) 2022-10-25 10:21:31 +00:00
bevy_encase_derive Bump Version after Release (#5576) 2022-08-05 02:03:05 +00:00
bevy_gilrs feat: add GamepadInfo, expose gamepad names (#6342) 2022-10-24 14:33:50 +00:00
bevy_gltf fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
bevy_hierarchy Add methods to Query<&Children> and Query<&Parent> to iterate over descendants and ancestors (#6185) 2022-10-31 15:57:50 +00:00
bevy_input Derive Reflect + FromReflect for input types (#6232) 2022-10-26 19:52:20 +00:00
bevy_internal Add serialize feature to bevy_core (#6423) 2022-10-31 21:20:57 +00:00
bevy_log Update tracing-chrome to 0.6.0 (#6398) 2022-10-28 21:51:38 +00:00
bevy_macro_utils fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
bevy_math add serialize feature to bevy_transform (#6379) 2022-10-31 16:12:15 +00:00
bevy_mikktspace Bump Version after Release (#5576) 2022-08-05 02:03:05 +00:00
bevy_pbr Freeing memory held by visible entities vector (#3009) 2022-10-31 15:36:08 +00:00
bevy_ptr Bump Version after Release (#5576) 2022-08-05 02:03:05 +00:00
bevy_reflect add ReflectDefault to std types (#6429) 2022-10-31 16:35:22 +00:00
bevy_render Rework ViewTarget to better support post processing (#6415) 2022-10-31 20:22:18 +00:00
bevy_scene bevy_scene: Serialize entities to map (#6416) 2022-10-31 16:35:18 +00:00
bevy_sprite Remove outdated uses of single-tuple bundles (#6406) 2022-10-29 18:15:28 +00:00
bevy_tasks fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
bevy_text Rename Handle::as_weak() to cast_weak() (#5321) 2022-10-28 22:43:14 +00:00
bevy_time Add FromReflect for Timer (#6422) 2022-10-30 16:02:31 +00:00
bevy_transform add serialize feature to bevy_transform (#6379) 2022-10-31 16:12:15 +00:00
bevy_ui Remove outdated uses of single-tuple bundles (#6406) 2022-10-29 18:15:28 +00:00
bevy_utils Remove Sync bound from Local (#5483) 2022-09-12 04:15:55 +00:00
bevy_window Fix return_after_run example (#6420) 2022-10-31 16:35:20 +00:00
bevy_winit do not set cursor grab on window creation if not asked for (#6381) 2022-10-31 16:12:18 +00:00