"""This module serves as a container to hold the global
:class:`~.ShowBase.ShowBase` instance, as an alternative to using the builtin
Many of the variables contained in this module are also automatically written
to the :mod:`builtins` module when ShowBase is instantiated, making them
available to any Python code. Importing them from this module instead can make
it easier to see where these variables are coming from.
Note that you cannot directly import :data:`~builtins.base` from this module
since ShowBase may not have been created yet; instead, ShowBase dynamically
adds itself to this module's scope when instantiated."""
__all__ = 
from .ShowBase import ShowBase, WindowControls
from direct.directnotify.DirectNotifyGlobal import directNotify, giveNotify
from panda3d.core import VirtualFileSystem, Notify, ClockObject, PandaSystem
from panda3d.core import ConfigPageManager, ConfigVariableManager
from panda3d.core import NodePath, PGTop
from . import DConfig as config
__dev__ = config.GetBool('want-dev', __debug__)
#: The global instance of the :ref:`virtual-file-system`, as obtained using
vfs = VirtualFileSystem.getGlobalPtr()
#: The default Panda3D output stream for notifications and logging, as
#: obtained using :meth:`panda3d.core.Notify.out()`.
ostream = Notify.out()
#: The clock object used by default for rendering and animation, obtained using
globalClock = ClockObject.getGlobalClock()
#: See :meth:`panda3d.core.ConfigPageManager.getGlobalPtr()`.
cpMgr = ConfigPageManager.getGlobalPtr()
#: See :meth:`panda3d.core.ConfigVariableManager.getGlobalPtr()`.
cvMgr = ConfigVariableManager.getGlobalPtr()
#: See :meth:`panda3d.core.PandaSystem.getGlobalPtr()`.
pandaSystem = PandaSystem.getGlobalPtr()
#: The root of the 2-D scene graph. The coordinate system of this node runs
#: from -1 to 1, with the X axis running from left to right and the Z axis from
#: bottom to top.
render2d = NodePath("render2d")
#: The root of the 2-D scene graph used for GUI rendering. Unlike render2d,
#: which may result in elements being stretched in windows that do not have a
#: square aspect ratio, this node is scaled automatically to ensure that nodes
#: parented to it do not appear stretched.
aspect2d = render2d.attachNewNode(PGTop("aspect2d"))
#: A dummy scene graph that is not being rendered by anything.
hidden = NodePath("hidden")
# Set direct notify categories now that we have config
"""Deprecated alias for :meth:`base.run() <.ShowBase.run>`."""
assert ShowBase.notify.warning("run() is deprecated, use base.run() instead")
"""Opens up a :mod:`direct.tkpanels.Inspector` GUI panel for inspecting an
# Don't use a regular import, to prevent ModuleFinder from picking
# it up as a dependency when building a .p3d package.
Inspector = importlib.import_module('direct.tkpanels.Inspector')
if sys.version_info >= (3, 0):
import __builtin__ as builtins
builtins.inspect = inspect
# this also appears in AIBaseGlobal
if (not __debug__) and __dev__:
ShowBase.notify.error("You must set 'want-dev' to false in non-debug mode.")