@@ -164,7 +164,8 @@ function check_assignable(sys, sym)
164164 end
165165end
166166
167- function compile_functional_affect (affect:: ImperativeAffect , sys; kwargs... )
167+ function compile_functional_affect (
168+ affect:: ImperativeAffect , sys; reset_jumps = false , kwargs... )
168169 #=
169170 Implementation sketch:
170171 generate observed function (oop), should save to a component array under obs_syms
@@ -244,7 +245,7 @@ function compile_functional_affect(affect::ImperativeAffect, sys; kwargs...)
244245
245246 upd_funs = NamedTuple {mod_names} ((setu .((sys,), first .(mod_pairs))... ,))
246247
247- let user_affect = func (affect), ctx = context (affect)
248+ let user_affect = func (affect), ctx = context (affect), reset_jumps = reset_jumps
248249 @inline function (integ)
249250 # update the to-be-mutated values; this ensures that if you do a no-op then nothing happens
250251 modvals = mod_og_val_fun (integ. u, integ. p, integ. t)
@@ -259,6 +260,8 @@ function compile_functional_affect(affect::ImperativeAffect, sys; kwargs...)
259260
260261 # write the new values back to the integrator
261262 _generated_writeback (integ, upd_funs, upd_vals)
263+
264+ reset_jumps && reset_aggregated_jumps! (integ)
262265 end
263266 end
264267end
0 commit comments