@@ -167,7 +167,8 @@ function check_assignable(sys, sym)
167
167
end
168
168
end
169
169
170
- function compile_functional_affect (affect:: ImperativeAffect , sys; kwargs... )
170
+ function compile_functional_affect (
171
+ affect:: ImperativeAffect , sys; reset_jumps = false , kwargs... )
171
172
#=
172
173
Implementation sketch:
173
174
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...)
247
248
248
249
upd_funs = NamedTuple {mod_names} ((setu .((sys,), first .(mod_pairs))... ,))
249
250
250
- let user_affect = func (affect), ctx = context (affect)
251
+ let user_affect = func (affect), ctx = context (affect), reset_jumps = reset_jumps
251
252
@inline function (integ)
252
253
# update the to-be-mutated values; this ensures that if you do a no-op then nothing happens
253
254
modvals = mod_og_val_fun (integ. u, integ. p, integ. t)
@@ -262,6 +263,8 @@ function compile_functional_affect(affect::ImperativeAffect, sys; kwargs...)
262
263
263
264
# write the new values back to the integrator
264
265
_generated_writeback (integ, upd_funs, upd_vals)
266
+
267
+ reset_jumps && reset_aggregated_jumps! (integ)
265
268
end
266
269
end
267
270
end
0 commit comments