Explorar o código

changed comment

Dave Schuyler %!s(int64=20) %!d(string=hai) anos
pai
achega
5f270517e4
Modificáronse 1 ficheiros con 55 adicións e 55 borrados
  1. 55 55
      direct/src/actor/Actor.py

+ 55 - 55
direct/src/actor/Actor.py

@@ -20,7 +20,7 @@ class Actor(DirectObject, NodePath):
     animLoaderOptions =  LoaderOptions(LoaderOptions.LFSearch |
     animLoaderOptions =  LoaderOptions(LoaderOptions.LFSearch |
                                        LoaderOptions.LFReportErrors |
                                        LoaderOptions.LFReportErrors |
                                        LoaderOptions.LFConvertAnim)
                                        LoaderOptions.LFConvertAnim)
-    
+
     def __init__(self, models=None, anims=None, other=None, copy=1):
     def __init__(self, models=None, anims=None, other=None, copy=1):
         """__init__(self, string | string:string{}, string:string{} |
         """__init__(self, string | string:string{}, string:string{} |
         string:(string:string{}){}, Actor=None)
         string:(string:string{}){}, Actor=None)
@@ -42,9 +42,9 @@ class Actor(DirectObject, NodePath):
         Multipart actors expect a dictionary of parts and a dictionary
         Multipart actors expect a dictionary of parts and a dictionary
         of animation dictionaries (partName:(animName:animPath{}){}) as
         of animation dictionaries (partName:(animName:animPath{}){}) as
         below:
         below:
-        
+
             a = Actor(
             a = Actor(
-        
+
                 # part dictionary
                 # part dictionary
                 {"head":"char/dogMM/dogMM_Shorts-head-mod", \
                 {"head":"char/dogMM/dogMM_Shorts-head-mod", \
                  "torso":"char/dogMM/dogMM_Shorts-torso-mod", \
                  "torso":"char/dogMM/dogMM_Shorts-torso-mod", \
@@ -61,7 +61,7 @@ class Actor(DirectObject, NodePath):
 
 
         In addition multipart actor parts need to be connected together
         In addition multipart actor parts need to be connected together
         in a meaningful fashion:
         in a meaningful fashion:
-        
+
             a.attach("head", "torso", "joint-head")
             a.attach("head", "torso", "joint-head")
             a.attach("torso", "legs", "joint-hips")
             a.attach("torso", "legs", "joint-hips")
 
 
@@ -95,7 +95,7 @@ class Actor(DirectObject, NodePath):
         self.__sortedLODNames = []
         self.__sortedLODNames = []
         self.__animControlDict = {}
         self.__animControlDict = {}
         self.__controlJoints = {}
         self.__controlJoints = {}
-        
+
         self.__LODNode = None
         self.__LODNode = None
         self.switches = None
         self.switches = None
 
 
@@ -109,7 +109,7 @@ class Actor(DirectObject, NodePath):
             self.assign(NodePath(root))
             self.assign(NodePath(root))
             self.setGeomNode(self.attachNewNode(ModelNode('actorGeom')))
             self.setGeomNode(self.attachNewNode(ModelNode('actorGeom')))
             self.__hasLOD = 0
             self.__hasLOD = 0
-            
+
             # load models
             # load models
             #
             #
             # four cases:
             # four cases:
@@ -207,7 +207,7 @@ class Actor(DirectObject, NodePath):
         # original position.  It's disturbing to see someone's hands
         # original position.  It's disturbing to see someone's hands
         # disappear; better to cull the whole object or none of it.
         # disappear; better to cull the whole object or none of it.
         self.__geomNode.node().setFinal(1)
         self.__geomNode.node().setFinal(1)
-            
+
     def delete(self):
     def delete(self):
         try:
         try:
             self.Actor_deleted
             self.Actor_deleted
@@ -230,11 +230,11 @@ class Actor(DirectObject, NodePath):
                 # just copy these to ourselve
                 # just copy these to ourselve
                 otherCopy = other.copyTo(self)
                 otherCopy = other.copyTo(self)
             self.setGeomNode(otherCopy.getChild(0))
             self.setGeomNode(otherCopy.getChild(0))
-                
+
             # copy the part dictionary from other
             # copy the part dictionary from other
             self.__copyPartBundles(other)
             self.__copyPartBundles(other)
             self.__subpartDict = copy_module.deepcopy(other.__subpartDict)
             self.__subpartDict = copy_module.deepcopy(other.__subpartDict)
-            
+
             # copy the anim dictionary from other
             # copy the anim dictionary from other
             self.__copyAnimControls(other)
             self.__copyAnimControls(other)
 
 
@@ -304,7 +304,7 @@ class Actor(DirectObject, NodePath):
         for i in range(part.getNumChildren()):
         for i in range(part.getNumChildren()):
             self.__doListJoints(indentLevel + 2, part.getChild(i),
             self.__doListJoints(indentLevel + 2, part.getChild(i),
                                 isIncluded, subset)
                                 isIncluded, subset)
-        
+
 
 
     def getActorInfo(self):
     def getActorInfo(self):
         """
         """
@@ -403,7 +403,7 @@ class Actor(DirectObject, NodePath):
                 return cmp(smap[y[0]], smap[x[0]])
                 return cmp(smap[y[0]], smap[x[0]])
             else:
             else:
                 return cmp (int(y), int(x))
                 return cmp (int(y), int(x))
-                
+
         self.__sortedLODNames.sort(sortFunc)
         self.__sortedLODNames.sort(sortFunc)
 
 
     def getLODNames(self):
     def getLODNames(self):
@@ -413,7 +413,7 @@ class Actor(DirectObject, NodePath):
         Caution - this returns a reference to the list - not your own copy
         Caution - this returns a reference to the list - not your own copy
         """
         """
         return self.__sortedLODNames
         return self.__sortedLODNames
-    
+
     def getPartNames(self):
     def getPartNames(self):
         """
         """
         Return list of Actor part names. If not an multipart actor,
         Return list of Actor part names. If not an multipart actor,
@@ -421,7 +421,7 @@ class Actor(DirectObject, NodePath):
         """
         """
         return self.__partBundleDict.values()[0].keys() + self.__subpartDict.keys()
         return self.__partBundleDict.values()[0].keys() + self.__subpartDict.keys()
 
 
-    
+
     def getGeomNode(self):
     def getGeomNode(self):
         """
         """
         Return the node that contains all actor geometry
         Return the node that contains all actor geometry
@@ -448,7 +448,7 @@ class Actor(DirectObject, NodePath):
             lod = LODNode("lod")
             lod = LODNode("lod")
             self.__LODNode = self.__geomNode.attachNewNode(lod)
             self.__LODNode = self.__geomNode.attachNewNode(lod)
         else:
         else:
-            self.__LODNode = self.__geomNode.attachNewNode(node)            
+            self.__LODNode = self.__geomNode.attachNewNode(node)
         self.__hasLOD = 1
         self.__hasLOD = 1
         self.switches = {}
         self.switches = {}
 
 
@@ -483,8 +483,8 @@ class Actor(DirectObject, NodePath):
             print "c++ switches for %d: in: %d, out: %d" % (eachSwitch,
             print "c++ switches for %d: in: %d, out: %d" % (eachSwitch,
                    self.__LODNode.node().getIn(eachSwitch),
                    self.__LODNode.node().getIn(eachSwitch),
                    self.__LODNode.node().getOut(eachSwitch))
                    self.__LODNode.node().getOut(eachSwitch))
-                                                        
-            
+
+
     def resetLOD(self):
     def resetLOD(self):
         """
         """
         Restore all switch distance info (usually after a useLOD call)"""
         Restore all switch distance info (usually after a useLOD call)"""
@@ -494,9 +494,9 @@ class Actor(DirectObject, NodePath):
             index = sortedKeys.index(eachLod)
             index = sortedKeys.index(eachLod)
             self.__LODNode.node().setSwitch(index, self.switches[eachLod][0],
             self.__LODNode.node().setSwitch(index, self.switches[eachLod][0],
                                      self.switches[eachLod][1])
                                      self.switches[eachLod][1])
-                    
+
     def addLOD(self, lodName, inDist=0, outDist=0):
     def addLOD(self, lodName, inDist=0, outDist=0):
-        """addLOD(self, string) 
+        """addLOD(self, string)
         Add a named node under the LODNode to parent all geometry
         Add a named node under the LODNode to parent all geometry
         of a specific LOD under.
         of a specific LOD under.
         """
         """
@@ -528,7 +528,7 @@ class Actor(DirectObject, NodePath):
             return None
             return None
         else:
         else:
             return lod
             return lod
-        
+
     def hasLOD(self):
     def hasLOD(self):
         """
         """
         Return 1 if the actor has LODs, 0 otherwise
         Return 1 if the actor has LODs, 0 otherwise
@@ -544,7 +544,7 @@ class Actor(DirectObject, NodePath):
                 partBundle.node().updateToNow()
                 partBundle.node().updateToNow()
         else:
         else:
             self.notify.warning('update() - no lod: %d' % lod)
             self.notify.warning('update() - no lod: %d' % lod)
-    
+
     def getFrameRate(self, animName=None, partName=None):
     def getFrameRate(self, animName=None, partName=None):
         """getFrameRate(self, string, string=None)
         """getFrameRate(self, string, string=None)
         Return actual frame rate of given anim name and given part.
         Return actual frame rate of given anim name and given part.
@@ -556,9 +556,9 @@ class Actor(DirectObject, NodePath):
         controls = self.getAnimControls(animName, partName)
         controls = self.getAnimControls(animName, partName)
         if len(controls) == 0:
         if len(controls) == 0:
             return None
             return None
-        
+
         return controls[0].getFrameRate()
         return controls[0].getFrameRate()
-    
+
     def getBaseFrameRate(self, animName=None, partName=None):
     def getBaseFrameRate(self, animName=None, partName=None):
         """getBaseFrameRate(self, string, string=None)
         """getBaseFrameRate(self, string, string=None)
         Return frame rate of given anim name and given part, unmodified
         Return frame rate of given anim name and given part, unmodified
@@ -585,7 +585,7 @@ class Actor(DirectObject, NodePath):
             return None
             return None
 
 
         return controls[0].getPlayRate()
         return controls[0].getPlayRate()
-    
+
     def setPlayRate(self, rate, animName, partName=None):
     def setPlayRate(self, rate, animName, partName=None):
         """setPlayRate(self, float, string, string=None)
         """setPlayRate(self, float, string, string=None)
         Set the play rate of given anim for a given part.
         Set the play rate of given anim for a given part.
@@ -594,8 +594,8 @@ class Actor(DirectObject, NodePath):
         It used to be legal to let the animName default to the
         It used to be legal to let the animName default to the
         currently-playing anim, but this was confusing and could lead
         currently-playing anim, but this was confusing and could lead
         to the wrong anim's play rate getting set.  Better to insist
         to the wrong anim's play rate getting set.  Better to insist
-        on this parameter.       
-        NOTE: sets play rate on all LODs"""       
+        on this parameter.
+        NOTE: sets play rate on all LODs"""
         for control in self.getAnimControls(animName, partName):
         for control in self.getAnimControls(animName, partName):
             control.setPlayRate(rate)
             control.setPlayRate(rate)
 
 
@@ -631,7 +631,7 @@ class Actor(DirectObject, NodePath):
         animTime = self.getDuration(anim)
         animTime = self.getDuration(anim)
         frameTime = animTime * float(frame) / numFrames
         frameTime = animTime * float(frame) / numFrames
         return frameTime
         return frameTime
-        
+
     def getCurrentAnim(self, partName=None):
     def getCurrentAnim(self, partName=None):
         """
         """
         Return the anim currently playing on the actor. If part not
         Return the anim currently playing on the actor. If part not
@@ -722,7 +722,7 @@ class Actor(DirectObject, NodePath):
         # remove the animations
         # remove the animations
         if (partDict.has_key(partName)):
         if (partDict.has_key(partName)):
             del(partDict[partName])
             del(partDict[partName])
-            
+
     def hidePart(self, partName, lodName="lodRoot"):
     def hidePart(self, partName, lodName="lodRoot"):
         """
         """
         Make the given part of the optionally given lod not render,
         Make the given part of the optionally given lod not render,
@@ -879,7 +879,7 @@ class Actor(DirectObject, NodePath):
             self.__controlJoints[bundle.this] = { jointName: node }
             self.__controlJoints[bundle.this] = { jointName: node }
 
 
         return node
         return node
-            
+
     def instance(self, path, partName, jointName, lodName="lodRoot"):
     def instance(self, path, partName, jointName, lodName="lodRoot"):
         """instance(self, NodePath, string, string, key="lodRoot")
         """instance(self, NodePath, string, string, key="lodRoot")
         Instance a nodePath to an actor part at a joint called jointName"""
         Instance a nodePath to an actor part at a joint called jointName"""
@@ -920,7 +920,7 @@ class Actor(DirectObject, NodePath):
         else:
         else:
             Actor.notify.warning("no lod named %s!" % (lodName))
             Actor.notify.warning("no lod named %s!" % (lodName))
 
 
-                    
+
     def drawInFront(self, frontPartName, backPartName, mode,
     def drawInFront(self, frontPartName, backPartName, mode,
                     root=None, lodName=None):
                     root=None, lodName=None):
         """drawInFront(self, string, int, string=None, key=None)
         """drawInFront(self, string, int, string=None, key=None)
@@ -947,7 +947,7 @@ class Actor(DirectObject, NodePath):
         bin, with the indicated drawing order.  This will cause it to
         bin, with the indicated drawing order.  This will cause it to
         be drawn after almost all other geometry.  In this case, the
         be drawn after almost all other geometry.  In this case, the
         backPartName is actually unused.
         backPartName is actually unused.
-        
+
         Takes an optional argument root as the start of the search for the
         Takes an optional argument root as the start of the search for the
         given parts. Also takes optional lod name to refine search for the
         given parts. Also takes optional lod name to refine search for the
         named parts. If root and lod are defined, we search for the given
         named parts. If root and lod are defined, we search for the given
@@ -969,7 +969,7 @@ class Actor(DirectObject, NodePath):
                 root = self
                 root = self
 
 
         frontParts = root.findAllMatches("**/" + frontPartName)
         frontParts = root.findAllMatches("**/" + frontPartName)
-                
+
         if mode > 0:
         if mode > 0:
             # Use the 'fixed' bin instead of reordering the scene
             # Use the 'fixed' bin instead of reordering the scene
             # graph.
             # graph.
@@ -984,13 +984,13 @@ class Actor(DirectObject, NodePath):
             for partNum in range(0, numFrontParts):
             for partNum in range(0, numFrontParts):
                 frontParts[partNum].setDepthWrite(0)
                 frontParts[partNum].setDepthWrite(0)
                 frontParts[partNum].setDepthTest(0)
                 frontParts[partNum].setDepthTest(0)
- 
+
         # Find the back part.
         # Find the back part.
         backPart = root.find("**/" + backPartName)
         backPart = root.find("**/" + backPartName)
         if (backPart.isEmpty()):
         if (backPart.isEmpty()):
             Actor.notify.warning("no part named %s!" % (backPartName))
             Actor.notify.warning("no part named %s!" % (backPartName))
             return
             return
-                
+
         if mode == -3:
         if mode == -3:
             # Draw as a decal.
             # Draw as a decal.
             backPart.node().setEffect(DecalEffect.make())
             backPart.node().setEffect(DecalEffect.make())
@@ -1051,14 +1051,14 @@ class Actor(DirectObject, NodePath):
 
 
         for nodeNum in range(0, numGeomNodes):
         for nodeNum in range(0, numGeomNodes):
             geomNodes.getPath(nodeNum).hideBounds()
             geomNodes.getPath(nodeNum).hideBounds()
-                    
+
 
 
     # actions
     # actions
     def animPanel(self):
     def animPanel(self):
         from direct.showbase import TkGlobal
         from direct.showbase import TkGlobal
         from direct.tkpanels import AnimPanel
         from direct.tkpanels import AnimPanel
         return AnimPanel.AnimPanel(self)
         return AnimPanel.AnimPanel(self)
-    
+
     def stop(self, animName=None, partName=None):
     def stop(self, animName=None, partName=None):
         """stop(self, string=None, string=None)
         """stop(self, string=None, string=None)
         Stop named animation on the given part of the actor.
         Stop named animation on the given part of the actor.
@@ -1066,7 +1066,7 @@ class Actor(DirectObject, NodePath):
         NOTE: stops all LODs"""
         NOTE: stops all LODs"""
         for control in self.getAnimControls(animName, partName):
         for control in self.getAnimControls(animName, partName):
             control.stop()
             control.stop()
-        
+
     def play(self, animName, partName=None, fromFrame=None, toFrame=None):
     def play(self, animName, partName=None, fromFrame=None, toFrame=None):
         """play(self, string, string=None)
         """play(self, string, string=None)
         Play the given animation on the given part of the actor.
         Play the given animation on the given part of the actor.
@@ -1115,7 +1115,7 @@ class Actor(DirectObject, NodePath):
                 control.pingpong(restart, fromFrame, control.getNumFrames() - 1)
                 control.pingpong(restart, fromFrame, control.getNumFrames() - 1)
             else:
             else:
                 control.pingpong(restart, fromFrame, toFrame)
                 control.pingpong(restart, fromFrame, toFrame)
-        
+
     def pose(self, animName, frame, partName=None, lodName=None):
     def pose(self, animName, frame, partName=None, lodName=None):
         """pose(self, string, int, string=None)
         """pose(self, string, int, string=None)
         Pose the actor in position found at given frame in the specified
         Pose the actor in position found at given frame in the specified
@@ -1191,9 +1191,9 @@ class Actor(DirectObject, NodePath):
                 if not isinstance(anim[1], AnimControl):
                 if not isinstance(anim[1], AnimControl):
                     self.__bindAnimToPart(animName, partName, lodName)
                     self.__bindAnimToPart(animName, partName, lodName)
                 return anim[1]
                 return anim[1]
-            
+
         return None
         return None
-        
+
     def getAnimControls(self, animName=None, partName=None, lodName=None):
     def getAnimControls(self, animName=None, partName=None, lodName=None):
         """getAnimControls(self, string, string=None, string=None)
         """getAnimControls(self, string, string=None, string=None)
 
 
@@ -1235,7 +1235,7 @@ class Actor(DirectObject, NodePath):
                     partNameList = [partName]
                     partNameList = [partName]
                 else:
                 else:
                     partNameList = partName
                     partNameList = partName
-                    
+
                 animDictItems = []
                 animDictItems = []
                 for partName in partNameList:
                 for partName in partNameList:
                     animDict = partDict.get(partName)
                     animDict = partDict.get(partName)
@@ -1251,7 +1251,7 @@ class Actor(DirectObject, NodePath):
                         Actor.notify.warning("couldn't find part: %s" % (partName))
                         Actor.notify.warning("couldn't find part: %s" % (partName))
                     else:
                     else:
                         animDictItems.append((partName, animDict))
                         animDictItems.append((partName, animDict))
-                
+
             if animName == None:
             if animName == None:
                 # get all playing animations
                 # get all playing animations
                 for thisPart, animDict in animDictItems:
                 for thisPart, animDict in animDictItems:
@@ -1259,7 +1259,7 @@ class Actor(DirectObject, NodePath):
                         if isinstance(anim[1], AnimControl) and anim[1].isPlaying():
                         if isinstance(anim[1], AnimControl) and anim[1].isPlaying():
                             controls.append(anim[1])
                             controls.append(anim[1])
             else:
             else:
-                # get the named animation only. 
+                # get the named animation only.
                 for thisPart, animDict in animDictItems:
                 for thisPart, animDict in animDictItems:
                     anim = animDict.get(animName)
                     anim = animDict.get(animName)
                     if anim == None:
                     if anim == None:
@@ -1284,7 +1284,7 @@ class Actor(DirectObject, NodePath):
                             controls.append(animControl)
                             controls.append(animControl)
 
 
         return controls
         return controls
-            
+
     def loadModel(self, modelPath, partName="modelRoot", lodName="lodRoot", copy = 1):
     def loadModel(self, modelPath, partName="modelRoot", lodName="lodRoot", copy = 1):
         """loadModel(self, string, string="modelRoot", string="lodRoot",
         """loadModel(self, string, string="modelRoot", string="lodRoot",
         bool = 0)
         bool = 0)
@@ -1355,14 +1355,14 @@ class Actor(DirectObject, NodePath):
                     # animControl, but put None in for the filename.
                     # animControl, but put None in for the filename.
                     self.__animControlDict[lodName][partName][animName] = [None, animControl]
                     self.__animControlDict[lodName][partName][animName] = [None, animControl]
 
 
-            model.removeNode()        
+            model.removeNode()
 
 
     def prepareBundle(self, bundle, partName="modelRoot", lodName="lodRoot"):
     def prepareBundle(self, bundle, partName="modelRoot", lodName="lodRoot"):
         assert partName not in self.__subpartDict
         assert partName not in self.__subpartDict
-        
+
         # Rename the node at the top of the hierarchy, if we
         # Rename the node at the top of the hierarchy, if we
         # haven't already, to make it easier to identify this
         # haven't already, to make it easier to identify this
-        # actor in the scene graph.        
+        # actor in the scene graph.
         if not self.gotName:
         if not self.gotName:
             self.node().setName(bundle.node().getName())
             self.node().setName(bundle.node().getName())
             self.gotName = 1
             self.gotName = 1
@@ -1500,7 +1500,7 @@ class Actor(DirectObject, NodePath):
                         animControlPair[1].getPart().clearControlEffects()
                         animControlPair[1].getPart().clearControlEffects()
                         del(animControlPair[1])
                         del(animControlPair[1])
                         animControlPair.append(None)
                         animControlPair.append(None)
-    
+
     def bindAnim(self, animName, partName="modelRoot", lodName="lodRoot"):
     def bindAnim(self, animName, partName="modelRoot", lodName="lodRoot"):
         """bindAnim(self, string, string='modelRoot', string='lodRoot')
         """bindAnim(self, string, string='modelRoot', string='lodRoot')
         Bind the named animation to the named part and lod
         Bind the named animation to the named part and lod
@@ -1509,7 +1509,7 @@ class Actor(DirectObject, NodePath):
             lodNames = self.__animControlDict.keys()
             lodNames = self.__animControlDict.keys()
         else:
         else:
             lodNames = [lodName]
             lodNames = [lodName]
-        
+
         # loop over all lods
         # loop over all lods
         for thisLod in lodNames:
         for thisLod in lodNames:
             if partName == None:
             if partName == None:
@@ -1519,8 +1519,8 @@ class Actor(DirectObject, NodePath):
             # loop over all parts
             # loop over all parts
             for thisPart in partNames:
             for thisPart in partNames:
                 ac = self.__bindAnimToPart(animName, thisPart, thisLod)
                 ac = self.__bindAnimToPart(animName, thisPart, thisLod)
-            
-            
+
+
     def __bindAnimToPart(self, animName, partName, lodName):
     def __bindAnimToPart(self, animName, partName, lodName):
         """
         """
         for internal use only!
         for internal use only!
@@ -1540,7 +1540,7 @@ class Actor(DirectObject, NodePath):
             # It must be a subpart that hasn't been bound yet.
             # It must be a subpart that hasn't been bound yet.
             animDict = {}
             animDict = {}
             partDict[partName] = animDict
             partDict[partName] = animDict
-            
+
         anim = animDict.get(animName)
         anim = animDict.get(animName)
         if anim == None:
         if anim == None:
             # It must be a subpart that hasn't been bound yet.
             # It must be a subpart that hasn't been bound yet.
@@ -1551,7 +1551,7 @@ class Actor(DirectObject, NodePath):
 
 
         if anim == None:
         if anim == None:
             Actor.notify.error("actor has no animation %s", animName)
             Actor.notify.error("actor has no animation %s", animName)
-            
+
         # only bind if not already bound!
         # only bind if not already bound!
         if anim[1]:
         if anim[1]:
             return anim[1]
             return anim[1]
@@ -1602,7 +1602,7 @@ class Actor(DirectObject, NodePath):
         for lodName in other.__partBundleDict.keys():
         for lodName in other.__partBundleDict.keys():
             self.__partBundleDict[lodName] = {}
             self.__partBundleDict[lodName] = {}
             self.__updateSortedLODNames()
             self.__updateSortedLODNames()
-            # find the lod :Asad:
+            # find the lod Asad
             if lodName == 'lodRoot':
             if lodName == 'lodRoot':
                 partLod = self
                 partLod = self
             else:
             else:
@@ -1614,7 +1614,7 @@ class Actor(DirectObject, NodePath):
                 # find the part in our tree
                 # find the part in our tree
                 #partBundle = self.find("**/" + Actor.partPrefix + partName)
                 #partBundle = self.find("**/" + Actor.partPrefix + partName)
                 # Asad: changed above line to below
                 # Asad: changed above line to below
-                partBundle = partLod.find("**/" + Actor.partPrefix + partName) 
+                partBundle = partLod.find("**/" + Actor.partPrefix + partName)
                 if (partBundle != None):
                 if (partBundle != None):
                     # store the part bundle
                     # store the part bundle
                     self.__partBundleDict[lodName][partName] = partBundle
                     self.__partBundleDict[lodName][partName] = partBundle
@@ -1630,7 +1630,7 @@ class Actor(DirectObject, NodePath):
         bundles in our part bundle dict that have matching names, and
         bundles in our part bundle dict that have matching names, and
         store the resulting anim controls in our own part bundle dict"""
         store the resulting anim controls in our own part bundle dict"""
         for lodName in other.__animControlDict.keys():
         for lodName in other.__animControlDict.keys():
-            self.__animControlDict[lodName] = {}        
+            self.__animControlDict[lodName] = {}
             for partName in other.__animControlDict[lodName].keys():
             for partName in other.__animControlDict[lodName].keys():
                 self.__animControlDict[lodName][partName] = {}
                 self.__animControlDict[lodName][partName] = {}
                 for animName in other.__animControlDict[lodName][partName].keys():
                 for animName in other.__animControlDict[lodName][partName].keys():