From da97c5bf0aa171c1eb90e3bd2cc1d8da0fbbfbf5 Mon Sep 17 00:00:00 2001 From: Maxwell Pirtle Date: Fri, 5 May 2023 08:53:47 +0200 Subject: [PATCH] Mark `ActorJoin` dependent with `target_` The `ActorJoin` transition was previously labeled as independent with all other transitions, including those of the actor upon which the join acted. However, this assumption was faulty: the join action is instead dependent with ANY transition executed by the actor joined upon, as the action BECOMES enabled only as soon as the last action run by the actor is executed. --- src/mc/transition/TransitionActorJoin.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mc/transition/TransitionActorJoin.cpp b/src/mc/transition/TransitionActorJoin.cpp index c6e1533998..41eb681eee 100644 --- a/src/mc/transition/TransitionActorJoin.cpp +++ b/src/mc/transition/TransitionActorJoin.cpp @@ -27,7 +27,13 @@ std::string ActorJoinTransition::to_string(bool verbose) const } bool ActorJoinTransition::depends(const Transition* other) const { - // Joining is indep with any other transitions: + // Joining is dependent with any transition whose + // actor is that of the `other` action. , Join i + if (other->aid_ == target_) { + return true; + } + + // Otherwise, joining is indep with any other transitions: // - It is only enabled once the target ends, and after this point it's enabled no matter what // - Other joins don't affect it, and it does not impact on the enabledness of any other transition return false; -- 2.20.1