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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy