Source code for moderngl_window.meta.scene

from moderngl_window.meta.base import ResourceDescription
from moderngl_window.geometry.attributes import AttributeNames

[docs]class SceneDescription(ResourceDescription): """Describes a scene to load. The correct loader is resolved by looking at the file extension. This can be overriden by specifying a ``kind`` that maps directly to a specific loader class. .. code:: python # Wavefront/obj file SceneDescription(path='scenes/cube.obj') # stl file SceneDescription(path='scenes/crater.stl') # GLTF 2 file SceneDescription(path='scenes/sponza.gltf') The user can also override what buffer/attribute names should be used by specifying ``attr_names``. A ``cache`` option is also available as some scene loaders supports converting the file into a different format on the fly to speed up loading. """ default_kind = None resource_type = 'scenes'
[docs] def __init__(self, path=None, kind=None, cache=False, attr_names=AttributeNames, **kwargs): """Create a scene description. Keyword Args: path (str): Path to resource kind (str): Loader kind cache (str): Use the loader caching system if present attr_names (AttributeNames): Attrib name config **kwargs: Optional custom attributes """ if attr_names is None: attr_names = AttributeNames kwargs.update({ "path": path, "kind": kind, "cache": cache, "attr_names": attr_names, }) super().__init__(**kwargs)
@property def cache(self) -> bool: """bool: Use cache feature in scene loader""" return self._kwargs['cache'] @property def attr_names(self) -> AttributeNames: """AttributeNames: Attribute name config""" return self._kwargs['attr_names']