Browse Source

showbase: Fix Loader when destroying and recreating ShowBase

rdb 1 year ago
parent
commit
46cf9c0507
2 changed files with 5 additions and 3 deletions
  1. 4 2
      direct/src/showbase/Loader.py
  2. 1 1
      direct/src/showbase/ShowBase.py

+ 4 - 2
direct/src/showbase/Loader.py

@@ -134,13 +134,15 @@ class Loader(DirectObject):
 
         self.hook = "async_loader_%s" % (Loader.loaderIndex)
         Loader.loaderIndex += 1
-        self.accept(self.hook, self.__gotAsyncObject)
 
     def destroy(self):
         self.ignore(self.hook)
         self.loader.stopThreads()
         del self.base
-        del self.loader
+
+    def _init_base(self, base):
+        self.base = base
+        self.accept(self.hook, self.__gotAsyncObject)
 
     @classmethod
     def _loadPythonFileTypes(cls):

+ 1 - 1
direct/src/showbase/ShowBase.py

@@ -437,7 +437,7 @@ class ShowBase(DirectObject.DirectObject):
 
         #: `.Loader.Loader` object.
         self.loader = ShowBaseGlobal.loader
-        self.loader.base = self
+        self.loader._init_base(self)
         self.graphicsEngine.setDefaultLoader(self.loader.loader)
 
         #: The global event manager, as imported from `.EventManagerGlobal`.