Absender: Timo Sandmann
Datum: Mo, 22.10.2007 09:15:41
In-reply-to:
<812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hallo Frank, Am 22.10.2007 um 07:40 schrieb Menzel, Frank IT-OO4:
Hallo Timo,Du hast nun zusätzlich deactivateCalledBehaviours eingebaut. Dies hat nun zur Folge, dass das Verhalten1, welches das Cancel- Verhalten als auch das abzubrechende Verhalten2 aufruft, nicht wieder aktiviert wird nach Zuschlagen der Abbruchbedingung.Zur Verdeutlichung: Verhalten 1 ruft also auf: -Verhalten2 mit data-Verhalten1-cancel-Verhalten ebenfalls mit data-Verhalten1, um Verhalten2 abzubrechenNun trifft Abbruchbedingung des Cancel-Verhaltens zu und Verhalten2 wird abgebrochen. Verhalten2 erreicht nicht die Endestelle mit return_from_behaviour. Das Cancelverhalten erreicht zwar return_from_behaviour, es wird aber scheinbar der caller vorher durch deactivateCalledBehaviours initialisiert und damit Verhalten 1 nach Rückkehr nicht mehr aktiviert.
und das so früh am Morgen... ich glaube, ich weiß aber, was du meinst.Sollte nicht ein Aufruf von bot_cancel_behaviour(NULL) (also kein Caller), das Problem umgehen?
Nach Auskommentieren von deactivateCalledBehaviours funktioniert es wieder.
Aber ohne deactivateCalledBehaviours(), lassen sich keine Verhalten deaktivieren, die andere Verhalten starten, wie z.B. solve_maze(). Da solve_maze() fast nie selbst aktiv ist, sondern nur die vom ihm gestarteten Hilfsverhalten, läuft deactivateBehaviour() dann ins Leere und nichts passiert.
Gruß Timo