mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 08:15:18 -04:00
parent
0972dfa457
commit
15d6e0c543
@ -5,6 +5,7 @@ __all__ = ['Actor']
|
||||
from panda3d.core import *
|
||||
from panda3d.core import Loader as PandaLoader
|
||||
from direct.showbase.DirectObject import DirectObject
|
||||
from direct.showbase.Loader import Loader
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
|
||||
|
||||
@ -1886,6 +1887,9 @@ class Actor(DirectObject, NodePath):
|
||||
else:
|
||||
loaderOptions.setFlags(loaderOptions.getFlags() | LoaderOptions.LFReportErrors)
|
||||
|
||||
# Ensure that custom Python loader hooks are initialized.
|
||||
Loader._loadPythonFileTypes()
|
||||
|
||||
# Pass loaderOptions to specify that we want to
|
||||
# get the skeleton model. This only matters to model
|
||||
# files (like .mb) for which we can choose to extract
|
||||
|
@ -22,6 +22,8 @@ class Loader(DirectObject):
|
||||
notify = directNotify.newCategory("Loader")
|
||||
loaderIndex = 0
|
||||
|
||||
_loadedPythonFileTypes = False
|
||||
|
||||
class Callback:
|
||||
"""Returned by loadModel when used asynchronously. This class is
|
||||
modelled after Future, and can be awaited."""
|
||||
@ -149,8 +151,7 @@ class Loader(DirectObject):
|
||||
Loader.loaderIndex += 1
|
||||
self.accept(self.hook, self.__gotAsyncObject)
|
||||
|
||||
if ConfigVariableBool('loader-support-entry-points', True):
|
||||
self._loadPythonFileTypes()
|
||||
self._loadPythonFileTypes()
|
||||
|
||||
def destroy(self):
|
||||
self.ignore(self.hook)
|
||||
@ -158,7 +159,14 @@ class Loader(DirectObject):
|
||||
del self.base
|
||||
del self.loader
|
||||
|
||||
def _loadPythonFileTypes(self):
|
||||
@classmethod
|
||||
def _loadPythonFileTypes(cls):
|
||||
if cls._loadedPythonFileTypes:
|
||||
return
|
||||
|
||||
if not ConfigVariableBool('loader-support-entry-points', True):
|
||||
return
|
||||
|
||||
import importlib
|
||||
try:
|
||||
pkg_resources = importlib.import_module('pkg_resources')
|
||||
@ -171,6 +179,8 @@ class Loader(DirectObject):
|
||||
for entry_point in pkg_resources.iter_entry_points('panda3d.loaders'):
|
||||
registry.register_deferred_type(entry_point)
|
||||
|
||||
cls._loadedPythonFileTypes = True
|
||||
|
||||
# model loading funcs
|
||||
def loadModel(self, modelPath, loaderOptions = None, noCache = None,
|
||||
allowInstance = False, okMissing = None,
|
||||
|
Loading…
x
Reference in New Issue
Block a user