bevy/crates
Connor King 1260b7bcf1
StateTransitionEvent (#11089)
# Objective

- Make it possible to react to arbitrary state changes
- this will be useful regardless of the other changes to states
currently being discussed

## Solution

- added `StateTransitionEvent<S>` struct
- previously, this would have been impossible:

```rs
#[derive(States, Eq, PartialEq, Hash, Copy, Clone, Default)]
enum MyState {
  #[default]
  Foo,
  Bar(MySubState),
}

enum MySubState {
  Spam,
  Eggs,
}

app.add_system(Update, on_enter_bar);

fn on_enter_bar(trans: EventReader<StateTransition<MyState>>){
  for (befoare, after) in trans.read() {
    match before, after {
      MyState::Foo, MyState::Bar(_) => info!("detected transition foo => bar");
      _, _ => ();
    }
  }
}
```

---

## Changelog

- Added
  - `StateTransitionEvent<S>` - Fired on state changes of `S`

## Migration Guide

N/A no breaking changes

---------

Co-authored-by: Federico Rinaldi <gisquerin@gmail.com>
2024-01-08 22:27:00 +00:00
..
bevy_a11y
bevy_animation support all types of animation interpolation from gltf (#10755) 2023-12-31 18:01:50 +00:00
bevy_app StateTransitionEvent (#11089) 2024-01-08 22:27:00 +00:00
bevy_asset Add reserve_handle to Assets. (#10939) 2024-01-08 22:17:29 +00:00
bevy_audio Reorder impl to be the same as the trait (#11076) 2023-12-24 17:43:55 +00:00
bevy_core Replace or document ignored doctests (#11040) 2024-01-01 16:50:56 +00:00
bevy_core_pipeline Implement minimal reflection probes. (#10057) 2024-01-08 22:09:17 +00:00
bevy_derive Reexport winit::platform::android::activity::* in bevy_winit (#11011) 2023-12-19 20:15:03 +00:00
bevy_diagnostic Replace or document ignored doctests (#11040) 2024-01-01 16:50:56 +00:00
bevy_dylib
bevy_dynamic_plugin
bevy_ecs StateTransitionEvent (#11089) 2024-01-08 22:27:00 +00:00
bevy_ecs_compile_fail_tests
bevy_encase_derive
bevy_gilrs
bevy_gizmos Fix: Gizmos crash due to the persistence policy being set to Unload. Change it to Keep (#11192) 2024-01-03 11:03:18 +00:00
bevy_gltf assets should be kept on CPU by default (#11212) 2024-01-05 05:53:47 +00:00
bevy_hierarchy Rename "AddChild" to "PushChild" (#11194) 2024-01-04 16:06:14 +00:00
bevy_input Extend Touches with clear and reset methods (#10930) 2024-01-04 23:13:29 +00:00
bevy_internal Implement minimal reflection probes. (#10057) 2024-01-08 22:09:17 +00:00
bevy_log Print to stderr from panic handler in LogPlugin (#11170) 2024-01-01 17:10:20 +00:00
bevy_macro_utils Replace or document ignored doctests (#11040) 2024-01-01 16:50:56 +00:00
bevy_macros_compile_fail_tests
bevy_math Add libm feature to bevy_math (#11238) 2024-01-06 22:01:57 +00:00
bevy_mikktspace Replace calculation with function call (#11077) 2023-12-23 17:32:26 +00:00
bevy_pbr Implement minimal reflection probes. (#10057) 2024-01-08 22:09:17 +00:00
bevy_ptr Simplify equality assertions (#10988) 2023-12-16 23:58:41 +00:00
bevy_reflect Implement TypePath for EntityHash (#11195) 2024-01-04 18:28:31 +00:00
bevy_reflect_compile_fail_tests
bevy_render Mul<f32> for ScalingMode (#11030) 2024-01-08 22:24:32 +00:00
bevy_scene Change SceneSpawner::spawn_dynamic_sync to return InstanceID (#11239) 2024-01-06 22:26:32 +00:00
bevy_sprite assets should be kept on CPU by default (#11212) 2024-01-05 05:53:47 +00:00
bevy_tasks Replace or document ignored doctests (#11040) 2024-01-01 16:50:56 +00:00
bevy_text Unload render assets from RAM (#10520) 2024-01-03 03:31:04 +00:00
bevy_time Replace or document ignored doctests (#11040) 2024-01-01 16:50:56 +00:00
bevy_transform Rename "AddChild" to "PushChild" (#11194) 2024-01-04 16:06:14 +00:00
bevy_ui Made the remaining types from bevy_ui to reflect the Default trait if… (#11199) 2024-01-03 18:57:05 +00:00
bevy_utils Add static assertions to bevy_utils for compile-time checks (#11182) 2024-01-02 22:08:30 +00:00
bevy_window Remove CanvasParentResizePlugin (#11057) 2023-12-21 20:01:22 +00:00
bevy_winit Fix perf degradation on web builds (#11227) 2024-01-06 19:40:13 +00:00