mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
fixes for isOn and isOpen
This commit is contained in:
parent
cee74197ed
commit
1061e277bf
@ -85,10 +85,7 @@ class FourState:
|
|||||||
off (and so is state 2 which is oposite of 4 and therefore
|
off (and so is state 2 which is oposite of 4 and therefore
|
||||||
oposite of 'on').
|
oposite of 'on').
|
||||||
"""
|
"""
|
||||||
self.isOn = 0 # used in debugPrint()
|
assert(self.debugPrint("FourState(names=%s)"%(names)))
|
||||||
assert(self.debugPrint(
|
|
||||||
"FourState(names=%s)"
|
|
||||||
%(names)))
|
|
||||||
self.doLaterTask = None
|
self.doLaterTask = None
|
||||||
self.names = names
|
self.names = names
|
||||||
self.durations = durations
|
self.durations = durations
|
||||||
@ -127,28 +124,25 @@ class FourState:
|
|||||||
)
|
)
|
||||||
self.fsm.enterInitialState()
|
self.fsm.enterInitialState()
|
||||||
|
|
||||||
def setIsOn(self, isOn):
|
#def setIsOn(self, isOn):
|
||||||
assert(self.debugPrint("setIsOn(isOn=%s)"%(isOn,)))
|
# assert(self.debugPrint("setIsOn(isOn=%s)"%(isOn,)))
|
||||||
if self.isOn != isOn:
|
# pass
|
||||||
self.isOn = isOn
|
|
||||||
self.changedOnState()
|
|
||||||
|
|
||||||
def getIsOn(self):
|
#def getIsOn(self):
|
||||||
assert(self.debugPrint("getIsOn() returning %s"%(self.isOn,)))
|
# assert(self.debugPrint("getIsOn() returning %s"%(self.isOn,)))
|
||||||
return self.isOn
|
# return self.stateIndex==4
|
||||||
|
|
||||||
def changedOnState(self):
|
def changedOnState(self, isOn):
|
||||||
"""
|
"""
|
||||||
Allow derived classes to overide this.
|
Allow derived classes to overide this.
|
||||||
"""
|
"""
|
||||||
pass
|
assert(self.debugPrint("changedOnState(isOn=%s)"%(isOn,)))
|
||||||
|
|
||||||
##### state 0 #####
|
##### state 0 #####
|
||||||
|
|
||||||
def enterState0(self):
|
def enterState0(self):
|
||||||
assert(self.debugPrint("enter0()"))
|
assert(self.debugPrint("enter0()"))
|
||||||
self.stateIndex = 0
|
self.stateIndex = 0
|
||||||
self.setIsOn(0)
|
|
||||||
|
|
||||||
def exitState0(self):
|
def exitState0(self):
|
||||||
assert(self.debugPrint("exit0()"))
|
assert(self.debugPrint("exit0()"))
|
||||||
@ -156,8 +150,8 @@ class FourState:
|
|||||||
##### state 1 #####
|
##### state 1 #####
|
||||||
|
|
||||||
def enterState1(self):
|
def enterState1(self):
|
||||||
|
assert(self.debugPrint("enterState1()"))
|
||||||
self.stateIndex = 1
|
self.stateIndex = 1
|
||||||
self.setIsOn(0)
|
|
||||||
|
|
||||||
def exitState1(self):
|
def exitState1(self):
|
||||||
assert(self.debugPrint("exitState1()"))
|
assert(self.debugPrint("exitState1()"))
|
||||||
@ -165,8 +159,8 @@ class FourState:
|
|||||||
##### state 2 #####
|
##### state 2 #####
|
||||||
|
|
||||||
def enterState2(self):
|
def enterState2(self):
|
||||||
|
assert(self.debugPrint("enterState2()"))
|
||||||
self.stateIndex = 2
|
self.stateIndex = 2
|
||||||
self.setIsOn(0)
|
|
||||||
|
|
||||||
def exitState2(self):
|
def exitState2(self):
|
||||||
assert(self.debugPrint("exitState2()"))
|
assert(self.debugPrint("exitState2()"))
|
||||||
@ -174,8 +168,8 @@ class FourState:
|
|||||||
##### state 3 #####
|
##### state 3 #####
|
||||||
|
|
||||||
def enterState3(self):
|
def enterState3(self):
|
||||||
|
assert(self.debugPrint("enterState3()"))
|
||||||
self.stateIndex = 2
|
self.stateIndex = 2
|
||||||
self.setIsOn(0)
|
|
||||||
|
|
||||||
def exitState3(self):
|
def exitState3(self):
|
||||||
assert(self.debugPrint("exitState3()"))
|
assert(self.debugPrint("exitState3()"))
|
||||||
@ -183,15 +177,17 @@ class FourState:
|
|||||||
##### state 4 #####
|
##### state 4 #####
|
||||||
|
|
||||||
def enterState4(self):
|
def enterState4(self):
|
||||||
|
assert(self.debugPrint("enterState4()"))
|
||||||
self.stateIndex = 4
|
self.stateIndex = 4
|
||||||
self.setIsOn(1)
|
self.changedOnState(1)
|
||||||
|
|
||||||
def exitState4(self):
|
def exitState4(self):
|
||||||
assert(self.debugPrint("exitState4()"))
|
assert(self.debugPrint("exitState4()"))
|
||||||
|
self.changedOnState(0)
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
def debugPrint(self, message):
|
def debugPrint(self, message):
|
||||||
"""for debugging"""
|
"""for debugging"""
|
||||||
return self.notify.debug("%d (%d) %s"%(
|
return self.notify.debug("%d (%d) %s"%(
|
||||||
id(self), self.isOn, message))
|
id(self), self.stateIndex==4, message))
|
||||||
|
|
||||||
|
@ -91,7 +91,6 @@ class FourStateAI:
|
|||||||
off (and so is state 2 which is oposite of state 4 and therefore
|
off (and so is state 2 which is oposite of state 4 and therefore
|
||||||
oposite of 'on').
|
oposite of 'on').
|
||||||
"""
|
"""
|
||||||
self.isOn = 0 # used in debugPrint()
|
|
||||||
assert(self.debugPrint(
|
assert(self.debugPrint(
|
||||||
"FourStateAI(names=%s, durations=%s)"
|
"FourStateAI(names=%s, durations=%s)"
|
||||||
%(names, durations)))
|
%(names, durations)))
|
||||||
@ -144,28 +143,46 @@ class FourStateAI:
|
|||||||
del self.fsm
|
del self.fsm
|
||||||
|
|
||||||
def getInitialState(self):
|
def getInitialState(self):
|
||||||
|
assert(self.debugPrint("getInitialState() returning %s"%(self.stateIndex,)))
|
||||||
return self.stateIndex
|
return self.stateIndex
|
||||||
|
|
||||||
|
def setInitialState(self):
|
||||||
|
assert(self.debugPrint("setInitialState()"))
|
||||||
|
self.sendUpdate('setInitialState', [self.getInitialState()])
|
||||||
|
|
||||||
def setIsOn(self, isOn):
|
def setIsOn(self, isOn):
|
||||||
assert(self.debugPrint("setIsOn(isOn=%s)"%(isOn,)))
|
assert(self.debugPrint("setIsOn(isOn=%s)"%(isOn,)))
|
||||||
if self.isOn != isOn:
|
if isOn:
|
||||||
self.isOn = isOn
|
if self.stateIndex == 3:
|
||||||
self.changedOnState()
|
self.stateIndex = 4
|
||||||
|
self.fsm.request(self.states[self.stateIndex])
|
||||||
|
elif self.stateIndex != 4:
|
||||||
|
self.stateIndex = 3
|
||||||
|
self.fsm.request(self.states[self.stateIndex])
|
||||||
|
else:
|
||||||
|
if self.stateIndex == 3:
|
||||||
|
self.stateIndex = 4
|
||||||
|
self.fsm.request(self.states[self.stateIndex])
|
||||||
|
elif self.stateIndex == 4:
|
||||||
|
self.stateIndex = 1
|
||||||
|
self.fsm.request(self.states[self.stateIndex])
|
||||||
|
|
||||||
def getIsOn(self):
|
#def getIsOn(self):
|
||||||
assert(self.debugPrint("getIsOn() returning %s"%(self.isOn,)))
|
# assert(self.debugPrint("getIsOn() returning %s"%(self.stateIndex==4,)))
|
||||||
return self.isOn
|
# return self.stateIndex==4
|
||||||
|
|
||||||
def changedOnState(self):
|
def changedOnState(self, isOn):
|
||||||
"""
|
"""
|
||||||
Allow derived classes to overide this.
|
Allow derived classes to overide this.
|
||||||
|
The self.isOn value has toggled. Call getIsOn() to
|
||||||
|
get the current state.
|
||||||
"""
|
"""
|
||||||
pass
|
assert(self.debugPrint("changedOnState(isOn=%s)"%(isOn,)))
|
||||||
|
|
||||||
##### states #####
|
##### states #####
|
||||||
|
|
||||||
def switchToNextStateTask(self, task):
|
def switchToNextStateTask(self, task):
|
||||||
assert(self.debugPrint("switchToState1Task()"))
|
assert(self.debugPrint("switchToNextStateTask()"))
|
||||||
self.fsm.request(self.states[self.nextStateIndex])
|
self.fsm.request(self.states[self.nextStateIndex])
|
||||||
return Task.done
|
return Task.done
|
||||||
|
|
||||||
@ -174,14 +191,15 @@ class FourStateAI:
|
|||||||
This function is intentionaly simple so that derived classes
|
This function is intentionaly simple so that derived classes
|
||||||
may easily alter the network message.
|
may easily alter the network message.
|
||||||
"""
|
"""
|
||||||
|
assert(self.debugPrint("distributeStateChange()"))
|
||||||
|
self.setInitialState()
|
||||||
self.sendUpdate('setState', [self.stateIndex, globalClockDelta.getRealNetworkTime()])
|
self.sendUpdate('setState', [self.stateIndex, globalClockDelta.getRealNetworkTime()])
|
||||||
|
|
||||||
def enterStateN(self, isOn, stateIndex, nextStateIndex):
|
def enterStateN(self, stateIndex, nextStateIndex):
|
||||||
assert(self.debugPrint("enterStateN(stateIndex=%s, nextStateIndex=%s)"%(
|
assert(self.debugPrint("enterStateN(stateIndex=%s, nextStateIndex=%s)"%(
|
||||||
stateIndex, nextStateIndex)))
|
stateIndex, nextStateIndex)))
|
||||||
self.stateIndex = stateIndex
|
self.stateIndex = stateIndex
|
||||||
self.nextStateIndex = nextStateIndex
|
self.nextStateIndex = nextStateIndex
|
||||||
self.setIsOn(isOn)
|
|
||||||
self.distributeStateChange()
|
self.distributeStateChange()
|
||||||
if self.durations[stateIndex] is not None:
|
if self.durations[stateIndex] is not None:
|
||||||
assert self.doLaterTask is None
|
assert self.doLaterTask is None
|
||||||
@ -191,6 +209,7 @@ class FourStateAI:
|
|||||||
"enterStateN-timer-%s"%id(self))
|
"enterStateN-timer-%s"%id(self))
|
||||||
|
|
||||||
def exitStateN(self):
|
def exitStateN(self):
|
||||||
|
assert(self.debugPrint("exitStateN()"))
|
||||||
if self.doLaterTask:
|
if self.doLaterTask:
|
||||||
taskMgr.remove(self.doLaterTask)
|
taskMgr.remove(self.doLaterTask)
|
||||||
self.doLaterTask=None
|
self.doLaterTask=None
|
||||||
@ -200,7 +219,6 @@ class FourStateAI:
|
|||||||
def enterState0(self):
|
def enterState0(self):
|
||||||
assert(self.debugPrint("enter0()"))
|
assert(self.debugPrint("enter0()"))
|
||||||
self.stateIndex = 0
|
self.stateIndex = 0
|
||||||
self.isOn = 0
|
|
||||||
|
|
||||||
def exitState0(self):
|
def exitState0(self):
|
||||||
assert(self.debugPrint("exit0()"))
|
assert(self.debugPrint("exit0()"))
|
||||||
@ -208,7 +226,8 @@ class FourStateAI:
|
|||||||
##### state 1 #####
|
##### state 1 #####
|
||||||
|
|
||||||
def enterState1(self):
|
def enterState1(self):
|
||||||
self.enterStateN(0, 1, 2)
|
#assert(self.debugPrint("enterState1()"))
|
||||||
|
self.enterStateN(1, 2)
|
||||||
|
|
||||||
def exitState1(self):
|
def exitState1(self):
|
||||||
assert(self.debugPrint("exitState1()"))
|
assert(self.debugPrint("exitState1()"))
|
||||||
@ -217,7 +236,8 @@ class FourStateAI:
|
|||||||
##### state 2 #####
|
##### state 2 #####
|
||||||
|
|
||||||
def enterState2(self):
|
def enterState2(self):
|
||||||
self.enterStateN(0, 2, 3)
|
#assert(self.debugPrint("enterState2()"))
|
||||||
|
self.enterStateN(2, 3)
|
||||||
|
|
||||||
def exitState2(self):
|
def exitState2(self):
|
||||||
assert(self.debugPrint("exitState2()"))
|
assert(self.debugPrint("exitState2()"))
|
||||||
@ -226,7 +246,8 @@ class FourStateAI:
|
|||||||
##### state 3 #####
|
##### state 3 #####
|
||||||
|
|
||||||
def enterState3(self):
|
def enterState3(self):
|
||||||
self.enterStateN(0, 3, 4)
|
#assert(self.debugPrint("enterState3()"))
|
||||||
|
self.enterStateN(3, 4)
|
||||||
|
|
||||||
def exitState3(self):
|
def exitState3(self):
|
||||||
assert(self.debugPrint("exitState3()"))
|
assert(self.debugPrint("exitState3()"))
|
||||||
@ -235,15 +256,18 @@ class FourStateAI:
|
|||||||
##### state 4 #####
|
##### state 4 #####
|
||||||
|
|
||||||
def enterState4(self):
|
def enterState4(self):
|
||||||
self.enterStateN(1, 4, 1)
|
assert(self.debugPrint("enterState4()"))
|
||||||
|
self.enterStateN(4, 1)
|
||||||
|
self.changedOnState(1)
|
||||||
|
|
||||||
def exitState4(self):
|
def exitState4(self):
|
||||||
assert(self.debugPrint("exitState4()"))
|
assert(self.debugPrint("exitState4()"))
|
||||||
self.exitStateN()
|
self.exitStateN()
|
||||||
|
self.changedOnState(0)
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
def debugPrint(self, message):
|
def debugPrint(self, message):
|
||||||
"""for debugging"""
|
"""for debugging"""
|
||||||
return self.notify.debug("%d (%d) %s"%(
|
return self.notify.debug("%d (%d) %s"%(
|
||||||
id(self), self.isOn, message))
|
id(self), self.stateIndex==4, message))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user