Skip to content

Commit 5fae022

Browse files
committed
N46: seldom_state
1 parent d2b4d61 commit 5fae022

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

content/news/046/index.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,46 @@ If needed, a section can be split into subsections with a "------" delimiter.
7575

7676
## Library Updates
7777

78+
### [seldom_state]
79+
80+
[seldom_state] is a Bevy plugin that adds a `StateMachine` component that you
81+
can add to your entities. The state machine will change the entity's components
82+
based on states, triggers, and transitions that you define. It's useful
83+
for player controllers, animations, simple AI, etc.
84+
85+
This month, [seldom_state] 0.6 was released:
86+
87+
- Triggers don't need to be registered!
88+
- `StateMachine::new(MachineState)` has been replaced with
89+
`StateMachine::default()`, and you must insert the initial state manually
90+
- `MachineState` requires `Component` now instead of `Bundle`
91+
- `MachineState` and `Trigger` no longer require `Reflect`
92+
- `StateMachine`'s
93+
`trans_builder(Trigger, Fn(&Trigger::Ok) -> Option<MyNextState>)` is now
94+
`trans_builder(Trigger, Fn(&MyCurrentState, Trigger::Ok) -> Option<MyNextState>)`,
95+
so you can take information from the current state when building the next!
96+
- `StateMachine` no longer tracks the current state, so you may add and remove
97+
state components manually, as long as it's still in one state. Manual state
98+
changes won't trigger `on_enter` etc events. States that aren't used in any
99+
transitions can be registered manually with `StateMachine::with_state`, else it
100+
will think it isn't in a state and panic.
101+
- Replaced `StateMachine`'s `insert_on_enter(Bundle)` and `remove_on_exit()`
102+
with the more versatile `on_enter(Fn(&mut EntityCommands))`,
103+
`on_exit(Fn(&mut EntityCommands))`, `command_on_enter(Command)`, and
104+
`command_on_exit(Command)`
105+
- `Trigger`s may be combined with combinators `not`, `and`, and `or`
106+
- Transitions have priority in the order they are added
107+
- `Trigger::trigger` accepts `ReadOnlySystemParam` instead of `&SystemParam`, so
108+
you can use `EventReader`, `Local`, etc in your triggers!
109+
- Added an `EventTrigger<E>` that triggers on an event
110+
- `StateMachine::set_trans_logging` sets whether to log state transitions for
111+
debugging
112+
113+
Thanks to [Sera] for coauthoring this update!
114+
115+
[seldom_state]: https://github.com/Seldom-SE/seldom_state
116+
[Sera]: https://github.com/deifactor
117+
78118
## Popular Workgroup Issues in Github
79119

80120
<!-- Up to 10 links to interesting issues -->

0 commit comments

Comments
 (0)