NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

blackboards.py (1948B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\monitors\blackboards.py
      2 from behaviors.tasks import Task
      3 from ccpProfile import TimedFunction
      4 
      5 class BlackboardMessageMonitor(Task):
      6 
      7     def CleanUp(self):
      8         if not self.IsInvalid():
      9             self.UnsubscribeToBlackboard(self.attributes.messageAddress, self.OnBlackboardUpdate)
     10             self.SetStatusToInvalid()
     11 
     12     @TimedFunction('behaviors::monitors::blackboards::BlackboardMessageMonitor::OnBlackboardUpdate')
     13     def OnBlackboardUpdate(self, name, message):
     14         if not self.IsInvalid():
     15             self.behaviorTree.RequestReset(requestedBy=self)
     16 
     17     @TimedFunction('behaviors::monitors::blackboards::BlackboardMessageMonitor::OnEnter')
     18     def OnEnter(self):
     19         self.SubscribeToBlackboard(self.attributes.messageAddress, self.OnBlackboardUpdate)
     20         self.SetStatusToSuccess()
     21 
     22 
     23 class BlackboardMessageMonitorBlocking(BlackboardMessageMonitor):
     24 
     25     @TimedFunction('behaviors::monitors::blackboards::BlackboardMessageMonitorBlocking::OnEnter')
     26     def OnEnter(self):
     27         self.SubscribeToBlackboard(self.attributes.messageAddress, self.OnBlackboardUpdate)
     28         message = self.GetLastBlackboardValue(self.attributes.messageAddress)
     29         if message is not None:
     30             self.SetStatusToSuccess()
     31         else:
     32             self.SetStatusToFailed()
     33 
     34 
     35 class BlackboardFlagOnMessageUpdate(Task):
     36 
     37     def OnEnter(self):
     38         self.SubscribeToBlackboard(self.attributes.messageAddress, self.OnBlackboardUpdate)
     39         self.SetStatusToSuccess()
     40 
     41     def CleanUp(self):
     42         if self.IsInvalid():
     43             return
     44         self.UnsubscribeToBlackboard(self.attributes.messageAddress, self.OnBlackboardUpdate)
     45         self.SetStatusToInvalid()
     46 
     47     def OnBlackboardUpdate(self, name, message):
     48         if self.IsInvalid():
     49             return
     50         self.SendBlackboardValue(self.attributes.flagAddress, True)