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

animationController.py (4768B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\client\script\animation\animationController.py
      2 import log
      3 import charactercreator.client.animparams as animparams
      4 INVALID_TRACK_ID = -1
      5 
      6 class AnimationController(object):
      7     __guid__ = 'animation.AnimationController'
      8 
      9     def __init__(self, avatar):
     10         self.animationNetwork = animparams.GetParamsPerAvatar(avatar)
     11         self.entityRef = None
     12         self.controlParameterIDs = self.animationNetwork.GetAllControlParameters()
     13         self.controlParameterValues = {}
     14         self.requestIDs = self.animationNetwork.GetAllRequestIDs()
     15         self.eventTrackIDs = self.animationNetwork.GetAllEventTrackIDs()
     16         self.eventTrackNames = {}
     17         self.targetController = None
     18         self.behaviors = []
     19         self._MapEventTrackNames()
     20         self._MapControlParameterValues()
     21         self.Run()
     22 
     23     def Run(self):
     24         pass
     25 
     26     def Reset(self):
     27         pass
     28 
     29     def Stop(self, stream):
     30         pass
     31 
     32     def _MapEventTrackNames(self):
     33         for name, id in self.eventTrackIDs.iteritems():
     34             self.eventTrackNames[id] = name
     35 
     36     def _MapControlParameterValues(self):
     37         for name, id in self.controlParameterIDs.iteritems():
     38             self.controlParameterValues[id] = self.animationNetwork.GetControlParameterValueByID(id)
     39 
     40     def GetEventTrackID(self, trackName):
     41         return self.eventTrackIDs.get(trackName)
     42 
     43     def GetEventTrackName(self, trackID):
     44         trackName = self.eventTrackNames.get(trackID, 'Unknown')
     45         return trackName
     46 
     47     def GetEventTrackIDs(self):
     48         return self.eventTrackIDs
     49 
     50     def SetControlParameter(self, name, args):
     51         cpID = None
     52         name = 'ControlParameters|' + name
     53         if name not in self.controlParameterIDs:
     54             return
     55         cpID = self.controlParameterIDs[name]
     56         if self.controlParameterValues[cpID] != args and self.animationNetwork is not None:
     57             self.controlParameterValues[cpID] = args
     58             self.animationNetwork.SetControlParameterByID(cpID, args)
     59 
     60     def GetControlParameter(self, name, forceLookup = False):
     61         name = 'ControlParameters|' + name
     62         cpID = self.controlParameterIDs.get(name)
     63         value = self.controlParameterValues.get(cpID)
     64         if value is not None:
     65             return value
     66         self.controlParameterValues[id] = self.animationNetwork.GetControlParameterValueByID(cpID)
     67         log.LogError('Attempted to get a control parameter value %s, but it does not exist!' % name)
     68 
     69     def GetAllControlParameterValues(self, force = False):
     70         if force is True:
     71             self._MapControlParameterValues()
     72         return self.controlParameterValues
     73 
     74     def GetAllControlParameterValuesByName(self, force = False):
     75         if force is True:
     76             self._MapControlParameterValues()
     77         nameDict = {}
     78         for name, id in self.controlParameterIDs.iteritems():
     79             nameDict[name.split('|')[1]] = self.controlParameterValues[id]
     80 
     81         return nameDict
     82 
     83     def BroadcastRequest(self, name):
     84         if self.animationNetwork is not None:
     85             bcID = self.requestIDs.get(name, None)
     86             if bcID:
     87                 self.animationNetwork.BroadcastRequestByID(bcID)
     88             else:
     89                 log.LogError('Attempted to broadcast the %s request, but it does not exist!' % name)
     90 
     91     def SetTargetController(self, animationController):
     92         self.targetController = animationController
     93 
     94     def GetTargetController(self):
     95         return self.targetController
     96 
     97     def _UpdateHook(self):
     98         pass
     99 
    100     def _UpdateTargetHook(self):
    101         pass
    102 
    103     def _UpdateNoTargetHook(self):
    104         pass
    105 
    106     def Update(self):
    107         if self.animationNetwork is not None:
    108             self._UpdateHook()
    109             if self.targetController is not None:
    110                 self._UpdateTargetHook()
    111             else:
    112                 self._UpdateNoTargetHook()
    113             for priority, behavior in self.behaviors:
    114                 behavior.Update(self)
    115 
    116     def AddBehavior(self, behavior, priority = 100):
    117         self.behaviors.append((priority, behavior))
    118         self.behaviors.sort()
    119         behavior.OnAdd(self)
    120 
    121     def RemoveBehavior(self, behavior):
    122         toRemove = None
    123         for priority, myBehavior in self.behaviors:
    124             if myBehavior == behavior:
    125                 toRemove = (priority, myBehavior)
    126                 break
    127 
    128         if toRemove is not None:
    129             self.behaviors.remove(toRemove)
    130 
    131     def ResetBehaviors(self):
    132         for priority, behavior in self.behaviors:
    133             behavior.Reset()
    134 
    135     def SetEntityRef(self, ent):
    136         self.entityRef = ent
    137         self._UpdateEntityInfo()
    138 
    139     def _UpdateEntityInfo(self):
    140         pass