diff --git a/direct/src/showbase/Loader.py b/direct/src/showbase/Loader.py index 141c71a368..0a1e60f01e 100644 --- a/direct/src/showbase/Loader.py +++ b/direct/src/showbase/Loader.py @@ -126,7 +126,7 @@ class Loader(DirectObject): yield await req # special methods - def __init__(self, base): + def __init__(self, base=None): self.base = base self.loader = PandaLoader.getGlobalPtr() @@ -136,8 +136,6 @@ class Loader(DirectObject): Loader.loaderIndex += 1 self.accept(self.hook, self.__gotAsyncObject) - self._loadPythonFileTypes() - def destroy(self): self.ignore(self.hook) self.loader.stopThreads() @@ -229,6 +227,10 @@ class Loader(DirectObject): """ assert Loader.notify.debug("Loading model: %s" % (modelPath,)) + + if not self._loadedPythonFileTypes: + self._loadPythonFileTypes() + if loaderOptions is None: loaderOptions = LoaderOptions() else: @@ -416,6 +418,9 @@ class Loader(DirectObject): a callback is used, the model is saved asynchronously, and the true/false status is passed to the callback function. """ + if not self._loadedPythonFileTypes: + self._loadPythonFileTypes() + if loaderOptions is None: loaderOptions = LoaderOptions() else: diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index 0ffbc6fba8..f35d7dea2a 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -436,9 +436,9 @@ class ShowBase(DirectObject.DirectObject): self.useTrackball() #: `.Loader.Loader` object. - self.loader = Loader.Loader(self) + self.loader = ShowBaseGlobal.loader + self.loader.base = self self.graphicsEngine.setDefaultLoader(self.loader.loader) - ShowBaseGlobal.loader = self.loader #: The global event manager, as imported from `.EventManagerGlobal`. self.eventMgr = eventMgr diff --git a/direct/src/showbase/ShowBaseGlobal.py b/direct/src/showbase/ShowBaseGlobal.py index 4cd4e8623b..fe891e9c1b 100644 --- a/direct/src/showbase/ShowBaseGlobal.py +++ b/direct/src/showbase/ShowBaseGlobal.py @@ -62,7 +62,8 @@ aspect2d = render2d.attachNewNode(PGTop("aspect2d")) #: A dummy scene graph that is not being rendered by anything. hidden = NodePath("hidden") -loader: Loader +#: The global Loader instance for models, textures, etc. +loader = Loader() # Set direct notify categories now that we have config directNotify.setDconfigLevels()