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