allow the propagation to handle dynamic access to reactives
Starts the propagation by applying the initial changes
Starts the propagation by applying the initial changes
Locks (and potentially otherwise prepares) all affected reactive values to prevent interfering changes.
Locks (and potentially otherwise prepares) all affected reactive values to prevent interfering changes.
List of affected reactive values
Performs the actual propagation, setting the new (not yet committed) values for each reactive element.
Performs the actual propagation, setting the new (not yet committed) values for each reactive element.
Unlocks (and potentially otherwise reverts the propagation preparations for) each reactive value to allow future turns to run on them.
Unlocks (and potentially otherwise reverts the propagation preparations for) each reactive value to allow future turns to run on them.
Commits all uncommitted changes to the reactive element.
Commits all uncommitted changes to the reactive element.
Call all registered after-commit obverser functions.
Call all registered after-commit obverser functions.
Reverts all uncommitted changes to the reactive element.
Reverts all uncommitted changes to the reactive element.
Schedules a temporarily written change to be committed by the turn.
Schedules a temporarily written change to be committed by the turn.
Basic implementation of the most fundamental propagation steps as defined by AbstractPropagation. Only compatible with spore definitions that store a pulse value and support graph operations.