Browse Source

adding to remove from attic

Justin Butler 14 years ago
parent
commit
e14d4e0120
1 changed files with 71 additions and 0 deletions
  1. 71 0
      direct/src/distributed/StagedObject.py

+ 71 - 0
direct/src/distributed/StagedObject.py

@@ -0,0 +1,71 @@
+
+class StagedObject:
+    """
+    Use this class as a mixin to provide an interface for onStage/offStage objects.
+
+    The idea here is that a DistributedObject could be present and active due to
+    simple visibility, but we want to hide or otherwise disable it for some reason.
+    """
+    
+    UNKNOWN = -1
+    OFF     = 0
+    ON      = 1
+
+    def __init__(self, initState = UNKNOWN):
+        """
+        Only sets the initial state of this object.  This will not
+        call any "handle" functions.
+        """
+        self.__state = initState
+        pass
+
+    def goOnStage(self, *args, **kw):
+        """
+        If a stage switch is needed, the correct "handle" function
+        will be called.  Otherwise, nothing happens.
+        """
+        # This is the high level function that clients of
+        # your class should call to set the on/off stage state.
+
+        if not self.isOnStage():
+            self.handleOnStage(*args, **kw)
+            pass
+        pass
+    
+    def handleOnStage(self):
+        """
+        Override this function to provide your on/off stage funcitionality.
+        
+        Don't forget to call down to this one, though.
+        """
+        self.__state = StagedObject.ON
+        pass
+    
+    def goOffStage(self, *args, **kw):
+        """
+        If a stage switch is needed, the correct "handle" function
+        will be called.  Otherwise, nothing happens.
+        """
+        # This is the high level function that clients of
+        # your class should call to set the on/off stage state.
+
+        if not self.isOffStage():
+            self.handleOffStage(*args, **kw)
+            pass
+        pass
+    
+    def handleOffStage(self):
+        """
+        Override this function to provide your on/off stage funcitionality.
+        
+        Don't forget to call down to this one, though.
+        """
+        self.__state = StagedObject.OFF
+        pass
+    
+    def isOnStage(self):
+        return self.__state == StagedObject.ON
+
+    def isOffStage(self):
+        return self.__state == StagedObject.OFF
+