Browse Source

*** empty log message ***

Joe Shochet 25 years ago
parent
commit
391268ed64
3 changed files with 13 additions and 9 deletions
  1. 12 4
      direct/src/fsm/FSM.py
  2. 0 0
      direct/src/fsm/State.py
  3. 1 5
      direct/src/showbase/ShowBase.py

+ 12 - 4
direct/src/showbase/FSM.py → direct/src/fsm/FSM.py

@@ -97,7 +97,7 @@ class FSM(DirectObject):
     def __exitCurrent(self, argList):
     def __exitCurrent(self, argList):
         """__exitCurrent(self)
         """__exitCurrent(self)
         Exit the current state"""
         Exit the current state"""
-        FSM.notify.info("exiting %s" % self.__currentState.getName())
+        FSM.notify.debug("exiting %s" % self.__currentState.getName())
         self.__currentState.exit(argList)
         self.__currentState.exit(argList)
         messenger.send(self.getName() + '_' +
         messenger.send(self.getName() + '_' +
                        self.__currentState.getName() + '_exited')
                        self.__currentState.getName() + '_exited')
@@ -107,11 +107,11 @@ class FSM(DirectObject):
         """__enter(self, State)
         """__enter(self, State)
         Enter a given state, if it exists"""
         Enter a given state, if it exists"""
         if (aState in self.__states):
         if (aState in self.__states):
+            FSM.notify.debug("entering %s" % aState.getName())
             self.__currentState = aState
             self.__currentState = aState
             aState.enter(argList)
             aState.enter(argList)
             messenger.send(self.getName() + '_' +
             messenger.send(self.getName() + '_' +
                            aState.getName() + '_entered')
                            aState.getName() + '_entered')
-            FSM.notify.info("entering %s" % aState.getName())
         else:
         else:
             FSM.notify.error("enter: no such state")
             FSM.notify.error("enter: no such state")
 
 
@@ -125,14 +125,22 @@ class FSM(DirectObject):
         """request(self, string)
         """request(self, string)
         Attempt transition from currentState to given one.
         Attempt transition from currentState to given one.
         Return true is transition exists to given state,
         Return true is transition exists to given state,
-        false otherwise"""
+        false otherwise. 
+        """
         if (aStateName in self.__currentState.getTransitions()):
         if (aStateName in self.__currentState.getTransitions()):
             self.__transition(self.getStateNamed(aStateName),
             self.__transition(self.getStateNamed(aStateName),
                               enterArgList,
                               enterArgList,
                               exitArgList)
                               exitArgList)
             return 1
             return 1
+        # We can implicitly always transition to our final state.
+        elif (aStateName == self.__finalState.getName()):
+            FSM.notify.debug("implicit transition to final state: %s" % aStateName)
+            self.__transition(self.getStateNamed(aStateName),
+                              enterArgList,
+                              exitArgList)
+            return 1
         else:
         else:
-            FSM.notify.info("no transition exists to %s" % aStateName)
+            FSM.notify.debug("no transition exists to %s" % aStateName)
             return 0
             return 0
 
 
 
 

+ 0 - 0
direct/src/showbase/State.py → direct/src/fsm/State.py


+ 1 - 5
direct/src/showbase/ShowBase.py

@@ -110,7 +110,7 @@ class ShowBase:
         return Task.cont
         return Task.cont
     
     
     def restart(self):
     def restart(self):
-        #self.shutdown()
+        self.shutdown()
         self.taskMgr.spawnTaskNamed(Task.Task(self.igloop), 'igloop')
         self.taskMgr.spawnTaskNamed(Task.Task(self.igloop), 'igloop')
         self.eventMgr.restart()
         self.eventMgr.restart()
 
 
@@ -166,7 +166,3 @@ class ShowBase:
     def run(self):
     def run(self):
         self.taskMgr.run()
         self.taskMgr.run()
 
 
-if __name__ == '__main__':
-    base = ShowBase()
-    base.run()
-