@@ -167,7 +167,8 @@ function check_assignable(sys, sym)
167167 end
168168end
169169
170- function compile_functional_affect (affect:: ImperativeAffect , sys; kwargs... )
170+ function compile_functional_affect (
171+ affect:: ImperativeAffect , sys; reset_jumps = false , kwargs... )
171172 #=
172173 Implementation sketch:
173174 generate observed function (oop), should save to a component array under obs_syms
@@ -247,7 +248,7 @@ function compile_functional_affect(affect::ImperativeAffect, sys; kwargs...)
247248
248249 upd_funs = NamedTuple {mod_names} ((setu .((sys,), first .(mod_pairs))... ,))
249250
250- let user_affect = func (affect), ctx = context (affect)
251+ let user_affect = func (affect), ctx = context (affect), reset_jumps = reset_jumps
251252 @inline function (integ)
252253 # update the to-be-mutated values; this ensures that if you do a no-op then nothing happens
253254 modvals = mod_og_val_fun (integ. u, integ. p, integ. t)
@@ -262,6 +263,8 @@ function compile_functional_affect(affect::ImperativeAffect, sys; kwargs...)
262263
263264 # write the new values back to the integrator
264265 _generated_writeback (integ, upd_funs, upd_vals)
266+
267+ reset_jumps && reset_aggregated_jumps! (integ)
265268 end
266269 end
267270end
0 commit comments