Explorar o código

fixed circular ref with setGeomNode, added warning for removeNode being called before cleanup

Joe Shochet %!s(int64=19) %!d(string=hai) anos
pai
achega
4acdfddc44
Modificáronse 1 ficheiros con 6 adicións e 1 borrados
  1. 6 1
      direct/src/actor/Actor.py

+ 6 - 1
direct/src/actor/Actor.py

@@ -177,7 +177,7 @@ class Actor(DirectObject, NodePath):
                 # the root.
                 # the root.
                 root = PandaNode('actor')
                 root = PandaNode('actor')
                 self.assign(NodePath(root))
                 self.assign(NodePath(root))
-                self.setGeomNode(self)
+                self.setGeomNode(NodePath(self))
 
 
             else:
             else:
                 # A standard Actor has a ModelNode at the root, and
                 # A standard Actor has a ModelNode at the root, and
@@ -445,6 +445,11 @@ class Actor(DirectObject, NodePath):
         if not self.isEmpty():
         if not self.isEmpty():
             self.removeNode()
             self.removeNode()
 
 
+    def removeNode(self):
+        if self.__geomNode:
+            self.notify.warning("called actor.removeNode() on %s without calling cleanup()" % self.getName())
+        NodePath.removeNode(self)
+
     def flush(self):
     def flush(self):
         """
         """
         Actor flush function
         Actor flush function