- Rename
add_simple_reactor -> add_world_reactor
,add_world_reactor -> add_world_reactor
,add_world_reactor_with -> add_world_reactor_with
.
App::add_simple_reactor
extension method as shorthand for registering a persistent reactor.
- Major rework of reaction trees. System commands, system events, and reactions now run in-line in the normal Bevy command flow. Only recursively invoked system commands are 'rearranged' to run outside the scope of their predecessors' deferred commands.
- Added
React::trigger_mutation
method for triggering mutations in an exclusive context.
- Added
syscall_once
for when you only need to run a system once. - Added
syscall_with_validation
andsyscall_once_with_validation
for validating syscalls the first time they are run. - Added error message when accessing
ReactCommands
beforeReactPlugin
has been added. - Added
RawCallbackSystem
as a system-runner helper that doesn't require boxing the system. Used this to optimize system command spawning. - Added perf warning for when a large number of reactors are registered that are triggered by a specific entity.
- Added infinite loop detection to reaction trees.
- Adjusted reaction reader APIs. Instead of
read()
andtry_read()
, useentity()
andget()
for entity-only readers.
- Added
entity
andget_entity
methods to theEntityEvent
reader.
- Optimized
World::react
method. - Split reaction reader method
.read()
into.read()
(panicking) and.try_read()
(returnsOption
).
- Callback system cleanup now properly runs between the system and when its commands are flushed/applied.
- Update to Bevy v0.14.
- Added
.react()
extension method toApp
andWorld
.
- Implement
CommandsSyscallExt
forEntityCommands
.
set_if_not_eq
->set_if_neq
- Removed
bevy_fn_plugin
dependency.
- Avoid redundant despawns, which cause Bevy error B0003.
- Added
ReactiveMut::set_single_if_not_eq
. - Added
.react()
extension method forEntityCommands
.
- The
Reactive
andReactiveMut
system param's 'single' methods now return the single entity's id.
- Added
EntityWorldReactor
for entity-associated reactions, withEntityLocal
that can read per-entity custom data in reactors.
- Added
Reactive
andReactiveMut
system parameters for easier access toReact
components.
- Rename
*_mut_noreact
to*_noreact
for simplicity. - Rework
ReactCommands
to be derived fromCommands
instead of its own system parameter. AddCommands::react
extension method for obtainingReactCommands
instances.
- Added
AnyEntityEventTrigger
with associatedany_entity_event
helper method.
EntityEvent::read()
now returnsOption<(Entity, &T)>
instead of `&Option<(Entity, T)>.
- Loosen
set_if_not_eq
requirement fromEq
toPartialEq
.
- Panic if duplicate world reactors are added to an app.
- Added
broadcast
andentity_event
methods toReactWorldExt
.
- Rename
SystemCommandCallback::from_system
->SystemCommandCallback::new
andSystemCommandCallback::new
->SystemCommandCallback::with
. - Rename
BroadcastEventTrigger
->BroadcastTrigger
.
- Added
WorldReactor
trait withReactor
system param. - Added
ReactAppExt
andReactWorldExt
.
AutoDespawner
now usesdespawn_recursive
.- Optimized entity-specific reactors.
- Moved entity event reactor handles so they are stored on entities, ensuring they are cleaned up automatically when entities despawn.
- Component removal reactors are now triggered even if the entity was despawned. This matches Bevy's
RemovedComponents
behavior.
- Impl
From<RevokeToken>
forSystemCommand
. - Added
ReactorMode
for more versatile and efficient reactor management.
- Removed docs and files related to the 'reactive web' concept, which will not be pursued.
ReactCommands::register_and_run_once
- All
ReactCommands
actions are now deferred to ensure there is no partial mutation of the react state when a given command is applied.
- Remove
syscall
fromSpawnedSyscallCommandsExt
.
- Add
Commands::syscall
for scheduling system calls from within systems.
- Update to Bevy v0.13
- Bug where reactive events were being processed before the event data was spawned.
- Add reactivity primitives.
- Reserve crates.io name.