Browse Source

added forceTransition

Darren Ranalli 23 years ago
parent
commit
19f7b146df
1 changed files with 7 additions and 2 deletions
  1. 7 2
      direct/src/fsm/FSM.py

+ 7 - 2
direct/src/fsm/FSM.py

@@ -192,7 +192,8 @@ class FSM(DirectObject):
         self.__enter(aState, enterArgList)
         assert(not self.__internalStateInFlux)
 
-    def request(self, aStateName, enterArgList=[], exitArgList=[]):
+    def request(self, aStateName, enterArgList=[], exitArgList=[],
+                force=0):
         """request(self, string)
         Attempt transition from currentState to given one.
         Return true is transition exists to given state,
@@ -224,7 +225,7 @@ class FSM(DirectObject):
             FSM.notify.error("[%s]: request: %s, no such state" %
                              (self.__name, aStateName))
 
-        if (aStateName in self.__currentState.getTransitions()):
+        if force or (aStateName in self.__currentState.getTransitions()):
             self.__transition(aState,
                               enterArgList,
                               exitArgList)
@@ -261,6 +262,10 @@ class FSM(DirectObject):
             return 0
 
 
+    def forceTransition(self, aStateName, enterArgList=[], exitArgList=[]):
+        """ force a transition """
+        self.request(aStateName, enterArgList, exitArgList, force=1)
+
     def conditional_request(self, aStateName, enterArgList=[], exitArgList=[]):
         """request(self, string)
         Attempt transition from currentState to given one, if it exists.