本文整理汇总了Python中direct.fsm.StatePush.FunctionCall.pushCurrentState方法的典型用法代码示例。如果您正苦于以下问题:Python FunctionCall.pushCurrentState方法的具体用法?Python FunctionCall.pushCurrentState怎么用?Python FunctionCall.pushCurrentState使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类direct.fsm.StatePush.FunctionCall
的用法示例。
在下文中一共展示了FunctionCall.pushCurrentState方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SiegeManager
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class SiegeManager(DistributedObject, SiegeManagerBase):
TeamJoinableChangedEvent = 'PVPTeamJoinableChanged'
def __init__(self, cr):
DistributedObject.__init__(self, cr)
SiegeManagerBase.__init__(self)
def generate(self):
self._announcerInterest = None
self._siegeTeam = 0
self._siegeTeamUpdater = FunctionCall(self._setSiegeTeam, localAvatar._siegeTeamSV)
self._siegeTeamUpdater.pushCurrentState()
DistributedObject.generate(self)
self._pvpTeamJoinable = { }
base.cr.distributedDistrict.siegeManager = self
def delete(self):
self._siegeTeamUpdater.destroy()
del self._siegeTeamUpdater
self._removeAnnouncerInterest()
del self._pvpTeamJoinable
del base.cr.distributedDistrict.siegeManager
DistributedObject.delete(self)
def setPvpEnabled(self, enabled):
self._pvpEnabled = enabled
def getPvpEnabled(self):
return self._pvpEnabled
def setTeamsJoinable(self, teamJoinableItems):
for (teamId, joinable) in teamJoinableItems:
self._pvpTeamJoinable[teamId] = joinable
messenger.send(SiegeManager.TeamJoinableChangedEvent)
def teamIsJoinable(self, teamId):
if not config.GetBool('want-pvp-team-balance', 1):
return True
return self._pvpTeamJoinable.get(teamId, True)
def sendTalk(self, message):
print 'Seige Manager Sending Message %s' % message
self.sendUpdate('setTalkGroup', [
0,
0,
'',
message,
[],
0])
def sendWLChat(self, message):
self.sendUpdate('sendWLChat', [
message,
0,
0])
def sendSC(self, msgIndex):
self.sendUpdate('sendSC', [
msgIndex])
def setTalkGroup(self, fromAv, fromAC, avatarName, chat, mods, flags):
print 'Seige Manager- SetTalkGroup %s' % chat
teamName = self.getPVPChatTeamName(localAvatar.getSiegeTeam())
(message, scrubbed) = localAvatar.scrubTalk(chat, mods)
base.talkAssistant.receiveShipPVPMessage(fromAv, fromAC, avatarName, teamName, message, scrubbed)
def recvChat(self, avatarId, message, chatFlags, DISLid, name):
teamName = self.getPVPChatTeamName(localAvatar.getSiegeTeam())
if not self.cr.avatarFriendsManager.checkIgnored(avatarId):
displayMess = '%s %s %s' % (name, self.getPVPChatTeamName(localAvatar.getSiegeTeam()), message)
base.talkAssistant.receiveShipPVPMessage(avatarId, DISLid, name, teamName, message)
def recvWLChat(self, avatarId, message, chatFlags, DISLid, name):
teamName = self.getPVPChatTeamName(localAvatar.getSiegeTeam())
if not self.cr.avatarFriendsManager.checkIgnored(avatarId):
displayMess = '%s %s %s' % (name, self.getPVPChatTeamName(localAvatar.getSiegeTeam()), message)
base.talkAssistant.receiveShipPVPMessage(avatarId, DISLid, name, teamName, message)
def recvSpeedChat(self, avatarId, msgIndex, name):
print 'siege manager recvSpeedChat'
if not self.cr.avatarFriendsManager.checkIgnored(avatarId):
displayMess = '%s %s %s' % (name, self.getPVPChatTeamName(localAvatar.getSiegeTeam()), SCDecoders.decodeSCStaticTextMsg(msgIndex))
message = SCDecoders.decodeSCStaticTextMsg(msgIndex)
#.........这里部分代码省略.........
示例2: __init__
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class TaskProfiler:
# this does intermittent profiling of tasks running on the system
# if a task has a spike in execution time, the profile of the spike is logged
notify = directNotify.newCategory("TaskProfiler")
def __init__(self):
self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileTasksSV())
self._enableFC.pushCurrentState()
# table of task name pattern to TaskTracker
self._namePrefix2tracker = {}
self._task = None
def destroy(self):
if taskMgr.getProfileTasks():
self._setEnabled(False)
self._enableFC.destroy()
for tracker in self._namePrefix2tracker.itervalues():
tracker.destroy()
del self._namePrefix2tracker
del self._task
@staticmethod
def GetDefaultSpikeThreshold():
return config.GetFloat('profile-task-spike-threshold', 5.)
@staticmethod
def SetSpikeThreshold(spikeThreshold):
TaskTracker.SpikeThreshold = spikeThreshold
@staticmethod
def GetSpikeThreshold():
return TaskTracker.SpikeThreshold
def logProfiles(self, name=None):
if name:
name = name.lower()
for namePrefix, tracker in self._namePrefix2tracker.iteritems():
if (name and (name not in namePrefix.lower())):
continue
tracker.log()
def flush(self, name):
if name:
name = name.lower()
# flush stored task profiles
for namePrefix, tracker in self._namePrefix2tracker.iteritems():
if (name and (name not in namePrefix.lower())):
continue
tracker.flush()
def _setEnabled(self, enabled):
if enabled:
self.notify.info('task profiler started')
self._taskName = 'profile-tasks-%s' % id(self)
taskMgr.add(self._doProfileTasks, self._taskName, priority=-200)
else:
taskMgr.remove(self._taskName)
del self._taskName
self.notify.info('task profiler stopped')
def _doProfileTasks(self, task=None):
# gather data from the previous frame
# set up for the next frame
if (self._task is not None) and taskMgr._hasProfiledDesignatedTask():
session = taskMgr._getLastTaskProfileSession()
# if we couldn't profile, throw this result out
if session.profileSucceeded():
namePrefix = self._task.getNamePrefix()
if namePrefix not in self._namePrefix2tracker:
self._namePrefix2tracker[namePrefix] = TaskTracker(namePrefix)
tracker = self._namePrefix2tracker[namePrefix]
tracker.addProfileSession(session)
# set up the next task
self._task = taskMgr._getRandomTask()
taskMgr._setProfileTask(self._task)
return task.cont
示例3: SCTerminal
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class SCTerminal(SCElement):
def __init__(self, linkedEmote = None):
SCElement.__init__(self)
self.setLinkedEmote(linkedEmote)
scGui = loader.loadModel(SCMenu.GuiModelName)
self.emotionIcon = scGui.find('**/emotionIcon')
self.setDisabled(False)
self.__numCharges = -1
self._handleWhisperModeSV = StateVar(False)
self._handleWhisperModeFC = None
return
def destroy(self):
self._handleWhisperModeSV.set(False)
if self._handleWhisperModeFC:
self._handleWhisperModeFC.destroy()
self._handleWhisperModeSV.destroy()
SCElement.destroy(self)
def privSetSettingsRef(self, settingsRef):
SCElement.privSetSettingsRef(self, settingsRef)
if self._handleWhisperModeFC is None:
self._handleWhisperModeFC = FunctionCall(self._handleWhisperModeSVChanged, self._handleWhisperModeSV)
self._handleWhisperModeFC.pushCurrentState()
self._handleWhisperModeSV.set(self.settingsRef is not None and not self.isWhisperable())
return
def _handleWhisperModeSVChanged(self, handleWhisperMode):
if handleWhisperMode:
self._wmcListener = DirectObject()
self._wmcListener.accept(self.getEventName(SCWhisperModeChangeEvent), self._handleWhisperModeChange)
elif hasattr(self, '_wmcListener'):
self._wmcListener.ignoreAll()
del self._wmcListener
self.invalidate()
def _handleWhisperModeChange(self, whisperMode):
self.invalidate()
def handleSelect(self):
messenger.send(self.getEventName(SCTerminalSelectedEvent))
if self.hasLinkedEmote() and self.linkedEmoteEnabled():
messenger.send(self.getEventName(SCTerminalLinkedEmoteEvent), [self.linkedEmote])
def isWhisperable(self):
return True
def getLinkedEmote(self):
return self.linkedEmote
def setLinkedEmote(self, linkedEmote):
self.linkedEmote = linkedEmote
self.invalidate()
def hasLinkedEmote(self):
return self.linkedEmote is not None
def linkedEmoteEnabled(self):
if Emote.globalEmote:
return Emote.globalEmote.isEnabled(self.linkedEmote)
def getCharges(self):
return self.__numCharges
def setCharges(self, nCharges):
self.__numCharges = nCharges
if nCharges is 0:
self.setDisabled(True)
def isDisabled(self):
return self.__disabled or self.isWhispering() and not self.isWhisperable()
def setDisabled(self, bDisabled):
self.__disabled = bDisabled
def onMouseClick(self, event):
if not self.isDisabled():
SCElement.onMouseClick(self, event)
self.handleSelect()
def getMinDimensions(self):
width, height = SCElement.getMinDimensions(self)
if self.hasLinkedEmote():
width += 1.3
return (width, height)
def finalize(self, dbArgs = {}):
if not self.isDirty():
return
args = {}
if self.hasLinkedEmote():
self.lastEmoteIconColor = self.getEmoteIconColor()
self.emotionIcon.setColorScale(*self.lastEmoteIconColor)
args.update({'image': self.emotionIcon,
'image_pos': (self.width - 0.6, 0, -self.height * 0.5)})
if self.isDisabled():
args.update({'rolloverColor': (0, 0, 0, 0),
'pressedColor': (0, 0, 0, 0),
'rolloverSound': None,
#.........这里部分代码省略.........
示例4: __init__
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class FrameProfiler:
notify = directNotify.newCategory('FrameProfiler')
# because of precision requirements, all times related to the profile/log
# schedule are stored as integers
Minute = 60
Hour = 60 * Minute
Day = 24 * Hour
def __init__(self):
Hour = FrameProfiler.Hour
# how long to wait between frame profiles
self._period = 2 * FrameProfiler.Minute
if config.GetBool('frequent-frame-profiles', 0):
self._period = 1 * FrameProfiler.Minute
# used to prevent profile from being taken exactly every 'period' seconds
self._jitterMagnitude = self._period * .75
# when to log output
# each entry must be an integer multiple of all previous entries
# as well as an integer multiple of the period
self._logSchedule = [ 1 * FrameProfiler.Hour,
4 * FrameProfiler.Hour,
12 * FrameProfiler.Hour,
1 * FrameProfiler.Day,
] # day schedule proceeds as 1, 2, 4, 8 days, etc.
if config.GetBool('frequent-frame-profiles', 0):
self._logSchedule = [ 1 * FrameProfiler.Minute,
4 * FrameProfiler.Minute,
12 * FrameProfiler.Minute,
24 * FrameProfiler.Minute,
]
for t in self._logSchedule:
assert isInteger(t)
# make sure the period is evenly divisible into each element of the log schedule
assert (t % self._period) == 0
# make sure each element of the schedule is evenly divisible into each subsequent element
for i in xrange(len(self._logSchedule)):
e = self._logSchedule[i]
for j in xrange(i, len(self._logSchedule)):
assert (self._logSchedule[j] % e) == 0
assert isInteger(self._period)
self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileFramesSV())
self._enableFC.pushCurrentState()
def destroy(self):
self._enableFC.set(False)
self._enableFC.destroy()
def _setEnabled(self, enabled):
if enabled:
self.notify.info('frame profiler started')
self._startTime = globalClock.getFrameTime()
self._profileCounter = 0
self._jitter = None
self._period2aggregateProfile = {}
self._id2session = {}
self._id2task = {}
# don't profile process startup
self._task = taskMgr.doMethodLater(self._period, self._scheduleNextProfileDoLater,
'FrameProfilerStart-%s' % serialNum())
else:
self._task.remove()
del self._task
for session in self._period2aggregateProfile.itervalues:
session.release()
del self._period2aggregateProfile
for task in self._id2task.itervalues():
task.remove()
del self._id2task
for session in self._id2session.itervalues():
session.release()
del self._id2session
self.notify.info('frame profiler stopped')
def _scheduleNextProfileDoLater(self, task):
self._scheduleNextProfile()
return task.done
def _scheduleNextProfile(self):
self._profileCounter += 1
self._timeElapsed = self._profileCounter * self._period
assert isInteger(self._timeElapsed)
time = self._startTime + self._timeElapsed
# vary the actual delay between profiles by a random amount to prevent interaction
# with periodic events
jitter = self._jitter
if jitter is None:
jitter = normalDistrib(-self._jitterMagnitude, self._jitterMagnitude)
time += jitter
else:
time -= jitter
jitter = None
self._jitter = jitter
sessionId = serialNum()
session = taskMgr.getProfileSession('FrameProfile-%s' % sessionId)
self._id2session[sessionId] = session
taskMgr.profileFrames(num=1, session=session, callback=Functor(
self._analyzeResults, sessionId))
#.........这里部分代码省略.........
示例5: StateVarSetting
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
1.0,
1.0])
RepairKitHp = StateVarSetting('pvp.shipHeal.repairKit.HP', WeaponGlobals.getAttackHullHP(InventoryType.ShipRepairKit))
RepairKitSp = StateVarSetting('pvp.shipHeal.repairKit.SP', WeaponGlobals.getAttackSailHP(InventoryType.ShipRepairKit))
SinkHpBonusPercent = StateVarSetting('pvp.sinkBonus.hp.percent', 0.80000000000000004)
SinkStreakPeriod = StateVarSetting('pvp.announcements.sinkStreakPeriod', 5)
def updateRepairKitHp(hp):
WeaponGlobals.__skillInfo[InventoryType.ShipRepairKit][WeaponGlobals.HULL_HP_INDEX] = hp
def updateRepairKitSp(sp):
WeaponGlobals.__skillInfo[InventoryType.ShipRepairKit][WeaponGlobals.SAIL_HP_INDEX] = sp
UpdateRepairKitHp = FunctionCall(updateRepairKitHp, RepairKitHp)
UpdateRepairKitHp.pushCurrentState()
UpdateRepairKitSp = FunctionCall(updateRepairKitSp, RepairKitSp)
UpdateRepairKitSp.pushCurrentState()
RepairSpotLocatorNames = [
'repair_spot_0',
'repair_spot_1',
'repair_spot_2',
'repair_spot_3']
repairSpotNamePrefix = 'pvp.shipHeal.repairSpots.spots.'
ShipClass2repairLocators = {
ShipGlobals.INTERCEPTORL1: StateVarSetting(repairSpotNamePrefix + 'interceptorL1', [
0,
1,
2,
3]),
ShipGlobals.INTERCEPTORL2: StateVarSetting(repairSpotNamePrefix + 'interceptorL2', [
示例6: FrameProfiler
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class FrameProfiler():
__module__ = __name__
notify = directNotify.newCategory('FrameProfiler')
Minute = 60
Hour = 60 * Minute
Day = 24 * Hour
def __init__(self):
Hour = FrameProfiler.Hour
self._period = 2 * FrameProfiler.Minute
if config.GetBool('frequent-frame-profiles', 0):
self._period = 1 * FrameProfiler.Minute
self._jitterMagnitude = self._period * 0.75
self._logSchedule = [1 * FrameProfiler.Hour,
4 * FrameProfiler.Hour,
12 * FrameProfiler.Hour,
1 * FrameProfiler.Day]
if config.GetBool('frequent-frame-profiles', 0):
self._logSchedule = [1 * FrameProfiler.Minute,
4 * FrameProfiler.Minute,
12 * FrameProfiler.Minute,
24 * FrameProfiler.Minute]
for t in self._logSchedule:
pass
for i in xrange(len(self._logSchedule)):
e = self._logSchedule[i]
for j in xrange(i, len(self._logSchedule)):
pass
self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileFramesSV())
self._enableFC.pushCurrentState()
def destroy(self):
self._enableFC.set(False)
self._enableFC.destroy()
def _setEnabled(self, enabled):
if enabled:
self.notify.info('frame profiler started')
self._startTime = globalClock.getFrameTime()
self._profileCounter = 0
self._jitter = None
self._period2aggregateProfile = {}
self._id2session = {}
self._id2task = {}
self._task = taskMgr.doMethodLater(self._period, self._scheduleNextProfileDoLater, 'FrameProfilerStart-%s' % serialNum())
else:
self._task.remove()
del self._task
for session in self._period2aggregateProfile.itervalues:
session.release()
del self._period2aggregateProfile
for task in self._id2task.itervalues():
task.remove()
del self._id2task
for session in self._id2session.itervalues():
session.release()
del self._id2session
self.notify.info('frame profiler stopped')
return
def _scheduleNextProfileDoLater(self, task):
self._scheduleNextProfile()
return task.done
def _scheduleNextProfile(self):
self._profileCounter += 1
self._timeElapsed = self._profileCounter * self._period
time = self._startTime + self._timeElapsed
jitter = self._jitter
if jitter is None:
jitter = normalDistrib(-self._jitterMagnitude, self._jitterMagnitude)
time += jitter
else:
time -= jitter
jitter = None
self._jitter = jitter
sessionId = serialNum()
session = taskMgr.getProfileSession('FrameProfile-%s' % sessionId)
self._id2session[sessionId] = session
taskMgr.profileFrames(num=1, session=session, callback=Functor(self._analyzeResults, sessionId))
delay = max(time - globalClock.getFrameTime(), 0.0)
self._task = taskMgr.doMethodLater(delay, self._scheduleNextProfileDoLater, 'FrameProfiler-%s' % serialNum())
return
def _analyzeResults(self, sessionId):
self._id2task[sessionId] = taskMgr.add(Functor(self._doAnalysis, sessionId), 'FrameProfilerAnalysis-%s' % sessionId)
def _doAnalysis(self, sessionId, task):
if hasattr(task, '_generator'):
gen = task._generator
else:
gen = self._doAnalysisGen(sessionId)
task._generator = gen
result = gen.next()
if result == Task.done:
#.........这里部分代码省略.........
示例7: TaskProfiler
# 需要导入模块: from direct.fsm.StatePush import FunctionCall [as 别名]
# 或者: from direct.fsm.StatePush.FunctionCall import pushCurrentState [as 别名]
class TaskProfiler():
__module__ = __name__
notify = directNotify.newCategory('TaskProfiler')
def __init__(self):
self._enableFC = FunctionCall(self._setEnabled, taskMgr.getProfileTasksSV())
self._enableFC.pushCurrentState()
self._namePrefix2tracker = {}
self._task = None
return
def destroy(self):
if taskMgr.getProfileTasks():
self._setEnabled(False)
self._enableFC.destroy()
for tracker in self._namePrefix2tracker.itervalues():
tracker.destroy()
del self._namePrefix2tracker
del self._task
@staticmethod
def GetDefaultSpikeThreshold():
return config.GetFloat('profile-task-spike-threshold', 5.0)
@staticmethod
def SetSpikeThreshold(spikeThreshold):
TaskTracker.SpikeThreshold = spikeThreshold
@staticmethod
def GetSpikeThreshold():
return TaskTracker.SpikeThreshold
def logProfiles(self, name = None):
if name:
name = name.lower()
for namePrefix, tracker in self._namePrefix2tracker.iteritems():
if name and name not in namePrefix.lower():
continue
tracker.log()
def flush(self, name):
if name:
name = name.lower()
for namePrefix, tracker in self._namePrefix2tracker.iteritems():
if name and name not in namePrefix.lower():
continue
tracker.flush()
def _setEnabled(self, enabled):
if enabled:
self.notify.info('task profiler started')
self._taskName = 'profile-tasks-%s' % id(self)
taskMgr.add(self._doProfileTasks, self._taskName, priority=-200)
else:
taskMgr.remove(self._taskName)
del self._taskName
self.notify.info('task profiler stopped')
def _doProfileTasks(self, task = None):
if self._task is not None and taskMgr._hasProfiledDesignatedTask():
session = taskMgr._getLastTaskProfileSession()
if session.profileSucceeded():
namePrefix = self._task.getNamePrefix()
if namePrefix not in self._namePrefix2tracker:
self._namePrefix2tracker[namePrefix] = TaskTracker(namePrefix)
tracker = self._namePrefix2tracker[namePrefix]
tracker.addProfileSession(session)
self._task = taskMgr._getRandomTask()
taskMgr._setProfileTask(self._task)
return task.cont