From e14d4e01203708c8d4d6157501de870bcf120c50 Mon Sep 17 00:00:00 2001 From: Justin Butler Date: Fri, 9 Sep 2011 21:30:05 +0000 Subject: [PATCH] adding to remove from attic --- direct/src/distributed/StagedObject.py | 71 ++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 direct/src/distributed/StagedObject.py diff --git a/direct/src/distributed/StagedObject.py b/direct/src/distributed/StagedObject.py new file mode 100755 index 0000000000..2bb4006023 --- /dev/null +++ b/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 +