mirror of
https://github.com/panda3d/panda3d.git
synced 2026-02-19 21:59:31 -06:00
Improvements to generated API docs, especially in direct tree.
Also add an entry point for pfreeze.
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
"""
|
||||
This package contains the :class:`.Actor` class as well as a
|
||||
distributed variant thereof. Actor is a high-level interface around
|
||||
the lower-level :class:`panda3d.core.Character` implementation.
|
||||
It loads and controls an animated character and manages the animations
|
||||
playing on it.
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
"""
|
||||
This package contains various types of character controllers, handling basic
|
||||
control mechanics and setting up collisions for them.
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
""" This is a deprecated module that creates a global instance of ShowBase. """
|
||||
"""
|
||||
This is a shortcut that instantiates ShowBase automatically on import,
|
||||
opening a graphical window and setting up the scene graph.
|
||||
This example demonstrates its use:
|
||||
|
||||
import direct.directbase.DirectStart
|
||||
run()
|
||||
|
||||
While it may be considered useful for quick prototyping in the interactive
|
||||
Python shell, using it in applications is not considered good style.
|
||||
As such, it has been deprecated starting with Panda3D 1.9. It is equivalent
|
||||
to and may be replaced by the following code:
|
||||
|
||||
from direct.showbase.ShowBase import ShowBase
|
||||
base = ShowBase()
|
||||
"""
|
||||
|
||||
__all__ = []
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
"""
|
||||
This package contains modules to quickly set up a Panda environment for
|
||||
quick prototyping in the interactive Python shell. Merely importing
|
||||
one of these modules will create a :class:`.ShowBase` instance, opening
|
||||
a graphical window and setting up the scene graph.
|
||||
|
||||
The most commonly used module from this package is :mod:`.DirectStart`,
|
||||
importing which executes the following code::
|
||||
|
||||
from direct.showbase.ShowBase import ShowBase
|
||||
base = ShowBase()
|
||||
"""
|
||||
|
||||
@@ -9,10 +9,6 @@ ANALOG_MAX = 0.95
|
||||
ANALOG_DEADBAND = 0.125
|
||||
ANALOG_CENTER = 0.0
|
||||
|
||||
try:
|
||||
myBase = base
|
||||
except:
|
||||
myBase = simbase
|
||||
|
||||
class DirectDeviceManager(VrpnClient, DirectObject):
|
||||
def __init__(self, server = None):
|
||||
@@ -52,8 +48,13 @@ class DirectButtons(ButtonNode, DirectObject):
|
||||
ButtonNode.__init__(self, vrpnClient, device)
|
||||
# Create a unique name for this button object
|
||||
self.name = 'DirectButtons-' + repr(DirectButtons.buttonCount)
|
||||
|
||||
# Attach node to data graph
|
||||
self.nodePath = myBase.dataRoot.attachNewNode(self)
|
||||
try:
|
||||
self._base = base
|
||||
except:
|
||||
self._base = simbase
|
||||
self.nodePath = self._base.dataRoot.attachNewNode(self)
|
||||
|
||||
def __getitem__(self, index):
|
||||
if (index < 0) or (index >= self.getNumButtons()):
|
||||
@@ -64,10 +65,10 @@ class DirectButtons(ButtonNode, DirectObject):
|
||||
return self.getNumButtons()
|
||||
|
||||
def enable(self):
|
||||
self.nodePath.reparentTo(myBase.dataRoot)
|
||||
self.nodePath.reparentTo(self._base.dataRoot)
|
||||
|
||||
def disable(self):
|
||||
self.nodePath.reparentTo(myBase.dataUnused)
|
||||
self.nodePath.reparentTo(self._base.dataUnused)
|
||||
|
||||
def getName(self):
|
||||
return self.name
|
||||
@@ -83,6 +84,12 @@ class DirectButtons(ButtonNode, DirectObject):
|
||||
|
||||
class DirectAnalogs(AnalogNode, DirectObject):
|
||||
analogCount = 0
|
||||
|
||||
_analogDeadband = ConfigVariableDouble('vrpn-analog-deadband', ANALOG_DEADBAND)
|
||||
_analogMin = ConfigVariableDouble('vrpn-analog-min', ANALOG_MIN)
|
||||
_analogMax = ConfigVariableDouble('vrpn-analog-max', ANALOG_MAX)
|
||||
_analogCenter = ConfigVariableDouble('vrpn-analog-center', ANALOG_CENTER)
|
||||
|
||||
def __init__(self, vrpnClient, device):
|
||||
# Keep track of number of analogs created
|
||||
DirectAnalogs.analogCount += 1
|
||||
@@ -90,19 +97,20 @@ class DirectAnalogs(AnalogNode, DirectObject):
|
||||
AnalogNode.__init__(self, vrpnClient, device)
|
||||
# Create a unique name for this analog object
|
||||
self.name = 'DirectAnalogs-' + repr(DirectAnalogs.analogCount)
|
||||
# Attach node to data graph
|
||||
self.nodePath = myBase.dataRoot.attachNewNode(self)
|
||||
# See if any of the general analog parameters are dconfig'd
|
||||
self.analogDeadband = myBase.config.GetFloat('vrpn-analog-deadband',
|
||||
ANALOG_DEADBAND)
|
||||
self.analogMin = myBase.config.GetFloat('vrpn-analog-min',
|
||||
ANALOG_MIN)
|
||||
self.analogMax = myBase.config.GetFloat('vrpn-analog-max',
|
||||
ANALOG_MAX)
|
||||
self.analogCenter = myBase.config.GetFloat('vrpn-analog-center',
|
||||
ANALOG_CENTER)
|
||||
self.analogRange = self.analogMax - self.analogMin
|
||||
|
||||
# Attach node to data graph
|
||||
try:
|
||||
self._base = base
|
||||
except:
|
||||
self._base = simbase
|
||||
self.nodePath = self._base.dataRoot.attachNewNode(self)
|
||||
|
||||
# See if any of the general analog parameters are dconfig'd
|
||||
self.analogDeadband = self._analogDeadband.getValue()
|
||||
self.analogMin = self._analogMin.getValue()
|
||||
self.analogMax = self._analogMax.getValue()
|
||||
self.analogCenter = self._analogCenter.getValue()
|
||||
self.analogRange = self.analogMax - self.analogMin
|
||||
|
||||
def __getitem__(self, index):
|
||||
if (index < 0) or (index >= self.getNumControls()):
|
||||
@@ -113,10 +121,10 @@ class DirectAnalogs(AnalogNode, DirectObject):
|
||||
return self.getNumControls()
|
||||
|
||||
def enable(self):
|
||||
self.nodePath.reparentTo(myBase.dataRoot)
|
||||
self.nodePath.reparentTo(self._base.dataRoot)
|
||||
|
||||
def disable(self):
|
||||
self.nodePath.reparentTo(myBase.dataUnused)
|
||||
self.nodePath.reparentTo(self._base.dataUnused)
|
||||
|
||||
def normalizeWithoutCentering(self, val, minVal = -1, maxVal = 1):
|
||||
#
|
||||
@@ -186,14 +194,19 @@ class DirectTracker(TrackerNode, DirectObject):
|
||||
TrackerNode.__init__(self, vrpnClient, device)
|
||||
# Create a unique name for this tracker object
|
||||
self.name = 'DirectTracker-' + repr(DirectTracker.trackerCount)
|
||||
|
||||
# Attach node to data graph
|
||||
self.nodePath = myBase.dataRoot.attachNewNode(self)
|
||||
try:
|
||||
self._base = base
|
||||
except:
|
||||
self._base = simbase
|
||||
self.nodePath = self._base.dataRoot.attachNewNode(self)
|
||||
|
||||
def enable(self):
|
||||
self.nodePath.reparentTo(myBase.dataRoot)
|
||||
self.nodePath.reparentTo(self._base.dataRoot)
|
||||
|
||||
def disable(self):
|
||||
self.nodePath.reparentTo(myBase.dataUnused)
|
||||
self.nodePath.reparentTo(self._base.dataUnused)
|
||||
|
||||
def getName(self):
|
||||
return self.name
|
||||
@@ -213,8 +226,13 @@ class DirectDials(DialNode, DirectObject):
|
||||
DialNode.__init__(self, vrpnClient, device)
|
||||
# Create a unique name for this dial object
|
||||
self.name = 'DirectDials-' + repr(DirectDials.dialCount)
|
||||
|
||||
# Attach node to data graph
|
||||
self.nodePath = myBase.dataRoot.attachNewNode(self)
|
||||
try:
|
||||
self._base = base
|
||||
except:
|
||||
self._base = simbase
|
||||
self.nodePath = self._base.dataRoot.attachNewNode(self)
|
||||
|
||||
def __getitem__(self, index):
|
||||
"""
|
||||
@@ -227,10 +245,10 @@ class DirectDials(DialNode, DirectObject):
|
||||
return self.getNumDials()
|
||||
|
||||
def enable(self):
|
||||
self.nodePath.reparentTo(myBase.dataRoot)
|
||||
self.nodePath.reparentTo(self._base.dataRoot)
|
||||
|
||||
def disable(self):
|
||||
self.nodePath.reparentTo(myBase.dataUnused)
|
||||
self.nodePath.reparentTo(self._base.dataUnused)
|
||||
|
||||
def getName(self):
|
||||
return self.name
|
||||
@@ -259,14 +277,19 @@ class DirectTimecodeReader(AnalogNode, DirectObject):
|
||||
self.seconds = 0
|
||||
self.minutes = 0
|
||||
self.hours = 0
|
||||
|
||||
# Attach node to data graph
|
||||
self.nodePath = myBase.dataRoot.attachNewNode(self)
|
||||
try:
|
||||
self._base = base
|
||||
except:
|
||||
self._base = simbase
|
||||
self.nodePath = self._base.dataRoot.attachNewNode(self)
|
||||
|
||||
def enable(self):
|
||||
self.nodePath.reparentTo(myBase.dataRoot)
|
||||
self.nodePath.reparentTo(self._base.dataRoot)
|
||||
|
||||
def disable(self):
|
||||
self.nodePath.reparentTo(myBase.dataUnused)
|
||||
self.nodePath.reparentTo(self._base.dataUnused)
|
||||
|
||||
def getName(self):
|
||||
return self.name
|
||||
|
||||
@@ -21,7 +21,7 @@ class DirectRadamec(DirectObject):
|
||||
radamecCount = 0
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('DirectRadamec')
|
||||
|
||||
def __init__(self, device = 'Analog0', nodePath = base.direct.camera):
|
||||
def __init__(self, device = 'Analog0', nodePath = None):
|
||||
# See if device manager has been initialized
|
||||
if base.direct.deviceManager == None:
|
||||
base.direct.deviceManager = DirectDeviceManager()
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
This package contains a high-level interface for VRPN devices.
|
||||
|
||||
Also see the :mod:`panda3d.vprn` module.
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
This package contains notification and logging utilities for Python code.
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
This package contains the DIRECT tools, a set of tkinter tools for exploring
|
||||
and manipulating the Panda3D scene graph. By default, these are disabled,
|
||||
but they can be explicitly enabled using the following PRC configuration::
|
||||
|
||||
want-directtools true
|
||||
want-tk true
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
This package contains assorted utility classes.
|
||||
"""
|
||||
|
||||
@@ -7,19 +7,21 @@ from . import DistributedNode
|
||||
from . import DistributedSmoothNodeBase
|
||||
from direct.task.Task import cont
|
||||
|
||||
config = get_config_showbase()
|
||||
|
||||
# This number defines our tolerance for out-of-sync telemetry packets.
|
||||
# If a packet appears to have originated from more than MaxFuture
|
||||
# seconds in the future, assume we're out of sync with the other
|
||||
# avatar and suggest a resync for both.
|
||||
MaxFuture = base.config.GetFloat("smooth-max-future", 0.2)
|
||||
MaxFuture = config.GetFloat("smooth-max-future", 0.2)
|
||||
|
||||
# How frequently can we suggest a resynchronize with another client?
|
||||
MinSuggestResync = base.config.GetFloat("smooth-min-suggest-resync", 15)
|
||||
MinSuggestResync = config.GetFloat("smooth-min-suggest-resync", 15)
|
||||
|
||||
# These flags indicate whether global smoothing and/or prediction is
|
||||
# allowed or disallowed.
|
||||
EnableSmoothing = base.config.GetBool("smooth-enable-smoothing", 1)
|
||||
EnablePrediction = base.config.GetBool("smooth-enable-prediction", 1)
|
||||
EnableSmoothing = config.GetBool("smooth-enable-smoothing", 1)
|
||||
EnablePrediction = config.GetBool("smooth-enable-prediction", 1)
|
||||
|
||||
# These values represent the amount of time, in seconds, to delay the
|
||||
# apparent position of other avatars, when non-predictive and
|
||||
@@ -27,8 +29,8 @@ EnablePrediction = base.config.GetBool("smooth-enable-prediction", 1)
|
||||
# addition to the automatic delay of the observed average latency from
|
||||
# each avatar, which is intended to compensate for relative clock
|
||||
# skew.
|
||||
Lag = base.config.GetDouble("smooth-lag", 0.2)
|
||||
PredictionLag = base.config.GetDouble("smooth-prediction-lag", 0.0)
|
||||
Lag = config.GetDouble("smooth-lag", 0.2)
|
||||
PredictionLag = config.GetDouble("smooth-prediction-lag", 0.0)
|
||||
|
||||
|
||||
GlobalSmoothing = 0
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
This package contains an implementation of the Distributed Networking
|
||||
API, a high-level networking system that automatically propagates
|
||||
changes made on distributed objects to interested clients.
|
||||
"""
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
|
||||
"""
|
||||
This package contains various Python methods that extend some of Panda's
|
||||
underlying C++ classes.
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
"""
|
||||
This package contains functionality for applying post-processing
|
||||
filters to the result of rendering a 3-D scene. This is done by
|
||||
rendering the scene to an off-screen buffer, and then applying this to
|
||||
a full-screen card that has a shader applied which manipulates the
|
||||
texture values as desired.
|
||||
|
||||
The :class:`.CommonFilters` class contains various filters that are
|
||||
provided out of the box, whereas the :class:`.FilterManager` class
|
||||
is a lower-level class that allows you to set up your own filters.
|
||||
"""
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['ClassicFSM']
|
||||
|
||||
"""Finite State Machine module: contains the ClassicFSM class.
|
||||
|
||||
This module and class exist only for backward compatibility with
|
||||
existing code. New code should use the FSM module instead.
|
||||
.. note::
|
||||
|
||||
This module and class exist only for backward compatibility with
|
||||
existing code. New code should use the :mod:`.FSM` module instead.
|
||||
"""
|
||||
|
||||
__all__ = ['ClassicFSM']
|
||||
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
from direct.showbase.DirectObject import DirectObject
|
||||
import weakref
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"""The new Finite State Machine module. This replaces the module
|
||||
previously called FSM.py (now called ClassicFSM.py).
|
||||
previously called FSM (now called :mod:`.ClassicFSM`).
|
||||
"""
|
||||
|
||||
__all__ = ['FSMException', 'FSM']
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the FourState class."""
|
||||
|
||||
__all__ = ['FourState']
|
||||
|
||||
|
||||
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
#import DistributedObject
|
||||
from . import ClassicFSM
|
||||
@@ -20,7 +18,7 @@ class FourState:
|
||||
Inherit from FourStateFSM and pass in your states. Two of
|
||||
the states should be oposites of each other and the other
|
||||
two should be the transition states between the first two.
|
||||
E.g.
|
||||
E.g::
|
||||
|
||||
+--------+
|
||||
-->| closed | --
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the FourStateAI class. See also :mod:`.FourState`."""
|
||||
|
||||
__all__ = ['FourStateAI']
|
||||
|
||||
|
||||
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
#import DistributedObjectAI
|
||||
from . import ClassicFSM
|
||||
@@ -21,7 +19,7 @@ class FourStateAI:
|
||||
Inherit from FourStateFSM and pass in your states. Two of
|
||||
the states should be oposites of each other and the other
|
||||
two should be the transition states between the first two.
|
||||
E.g.
|
||||
E.g::
|
||||
|
||||
+--------+
|
||||
-->| closed | --
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
"""
|
||||
This package contains implementations of a Finite State Machine, an
|
||||
abstract construct that holds a particular state and can transition
|
||||
between several defined states. These are useful for a range of logic
|
||||
programming tasks.
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""This module contains the DirectButton class."""
|
||||
|
||||
__all__ = ['DirectButton']
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
"""Undocumented Module"""
|
||||
"""A DirectCheckButton is a type of button that toggles between two states
|
||||
when clicked. It also has a separate indicator that can be modified
|
||||
separately."""
|
||||
|
||||
__all__ = ['DirectCheckButton']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""This module defines various dialog windows for the DirectGUI system."""
|
||||
|
||||
__all__ = ['findDialog', 'cleanupDialog', 'DirectDialog', 'OkDialog', 'OkCancelDialog', 'YesNoDialog', 'YesNoCancelDialog', 'RetryCancelDialog']
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the DirectEntry class, a type of DirectGUI widget that accepts
|
||||
text entered using the keyboard."""
|
||||
|
||||
__all__ = ['DirectEntry']
|
||||
|
||||
|
||||
@@ -1,4 +1,17 @@
|
||||
"""Undocumented Module"""
|
||||
"""A DirectFrame is a basic DirectGUI component that acts as the base
|
||||
class for various other components, and can also serve as a basic
|
||||
container to hold other DirectGUI components.
|
||||
|
||||
A DirectFrame can have:
|
||||
|
||||
* A background texture (pass in path to image, or Texture Card)
|
||||
* A midground geometry item (pass in geometry)
|
||||
* A foreground text Node (pass in text string or OnscreenText)
|
||||
|
||||
Each of these has 1 or more states. The same object can be used for
|
||||
all states or each state can have a different text/geom/image (for
|
||||
radio button and check button indicators, for example).
|
||||
"""
|
||||
|
||||
__all__ = ['DirectFrame']
|
||||
|
||||
@@ -19,14 +32,6 @@ class DirectFrame(DirectGuiWidget):
|
||||
DefDynGroups = ('text', 'geom', 'image')
|
||||
def __init__(self, parent = None, **kw):
|
||||
# Inherits from DirectGuiWidget
|
||||
# A Direct Frame can have:
|
||||
# - A background texture (pass in path to image, or Texture Card)
|
||||
# - A midground geometry item (pass in geometry)
|
||||
# - A foreground text Node (pass in text string or Onscreen Text)
|
||||
# Each of these has 1 or more states
|
||||
# The same object can be used for all states or each
|
||||
# state can have a different text/geom/image (for radio button
|
||||
# and check button indicators, for example).
|
||||
optiondefs = (
|
||||
# Define type of DirectGuiWidget
|
||||
('pgFunc', PGItem, None),
|
||||
|
||||
@@ -1,32 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['DirectGuiBase', 'DirectGuiWidget']
|
||||
|
||||
|
||||
from panda3d.core import *
|
||||
from panda3d.direct import get_config_showbase
|
||||
from . import DirectGuiGlobals as DGG
|
||||
from .OnscreenText import *
|
||||
from .OnscreenGeom import *
|
||||
from .OnscreenImage import *
|
||||
from direct.directtools.DirectUtil import ROUND_TO
|
||||
from direct.showbase import DirectObject
|
||||
from direct.task import Task
|
||||
import sys
|
||||
|
||||
if sys.version_info >= (3, 0):
|
||||
stringType = str
|
||||
else:
|
||||
stringType = basestring
|
||||
|
||||
guiObjectCollector = PStatCollector("Client::GuiObjects")
|
||||
|
||||
"""
|
||||
Base class for all Direct Gui items. Handles composite widgets and
|
||||
command line argument parsing.
|
||||
"""
|
||||
|
||||
"""
|
||||
Code Overview:
|
||||
|
||||
1 Each widget defines a set of options (optiondefs) as a list of tuples
|
||||
@@ -101,7 +76,31 @@ Code Overview:
|
||||
are left unused. If so, an error is raised.
|
||||
"""
|
||||
|
||||
__all__ = ['DirectGuiBase', 'DirectGuiWidget']
|
||||
|
||||
|
||||
from panda3d.core import *
|
||||
from panda3d.direct import get_config_showbase
|
||||
from . import DirectGuiGlobals as DGG
|
||||
from .OnscreenText import *
|
||||
from .OnscreenGeom import *
|
||||
from .OnscreenImage import *
|
||||
from direct.directtools.DirectUtil import ROUND_TO
|
||||
from direct.showbase import DirectObject
|
||||
from direct.task import Task
|
||||
import sys
|
||||
|
||||
if sys.version_info >= (3, 0):
|
||||
stringType = str
|
||||
else:
|
||||
stringType = basestring
|
||||
|
||||
guiObjectCollector = PStatCollector("Client::GuiObjects")
|
||||
|
||||
|
||||
class DirectGuiBase(DirectObject.DirectObject):
|
||||
"""Base class of all DirectGUI widgets."""
|
||||
|
||||
def __init__(self):
|
||||
# Default id of all gui object, subclasses should override this
|
||||
self.guiId = 'guiObject'
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = []
|
||||
|
||||
|
||||
"""
|
||||
Global definitions used by Direct Gui Classes and handy constants
|
||||
that can be used during widget construction
|
||||
"""
|
||||
|
||||
__all__ = []
|
||||
|
||||
from panda3d.core import *
|
||||
|
||||
defaultFont = None
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the DirectLabel class."""
|
||||
|
||||
__all__ = ['DirectLabel']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Implements a pop-up menu containing multiple clickable options."""
|
||||
|
||||
__all__ = ['DirectOptionMenu']
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""A DirectRadioButton is a type of button that, similar to a
|
||||
DirectCheckButton, has a separate indicator and can be toggled between
|
||||
two states. However, only one DirectRadioButton in a group can be enabled
|
||||
at a particular time."""
|
||||
|
||||
__all__ = ['DirectRadioButton']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Defines the DirectScrollBar class."""
|
||||
|
||||
__all__ = ['DirectScrollBar']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the DirectScrolledFrame class."""
|
||||
|
||||
__all__ = ['DirectScrolledFrame']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the DirectScrolledList class."""
|
||||
|
||||
__all__ = ['DirectScrolledListItem', 'DirectScrolledList']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Defines the DirectSlider class."""
|
||||
|
||||
__all__ = ['DirectSlider']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the DirectWaitBar class, a progress bar widget."""
|
||||
|
||||
__all__ = ['DirectWaitBar']
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
"""
|
||||
This package contains the DirectGui system, a set of classes
|
||||
responsible for drawing graphical widgets to the 2-D scene graph.
|
||||
|
||||
It is based on the lower-level PGui system, which is implemented in
|
||||
C++.
|
||||
|
||||
For convenience, all of the DirectGui widgets may be imported from a
|
||||
single module as follows::
|
||||
|
||||
from direct.gui.DirectGui import *
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
"""IntervalGlobal module"""
|
||||
"""
|
||||
This module imports all of the other interval modules, to provide a
|
||||
single convenient module from which all interval types can be imported.
|
||||
"""
|
||||
|
||||
# In this unusual case, I'm not going to declare __all__,
|
||||
# since the purpose of this module is to add up the contributions
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""Defines the IntervalManager class as well as the global instance of
|
||||
this class, ivalMgr."""
|
||||
|
||||
__all__ = ['IntervalManager', 'ivalMgr']
|
||||
|
||||
@@ -136,6 +137,5 @@ class IntervalManager(CIntervalManager):
|
||||
assert self.ivals[index] == None or self.ivals[index] == interval
|
||||
self.ivals[index] = interval
|
||||
|
||||
# The global IntervalManager object.
|
||||
#: The global IntervalManager object.
|
||||
ivalMgr = IntervalManager(1)
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""
|
||||
This module defines the various "meta intervals", which execute other
|
||||
intervals either in parallel or in a specified sequential order.
|
||||
"""
|
||||
|
||||
__all__ = ['MetaInterval', 'Sequence', 'Parallel', 'ParallelEndTogether', 'Track']
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['ParticleInterval']
|
||||
|
||||
"""
|
||||
Contains the ParticleInterval class
|
||||
"""
|
||||
|
||||
__all__ = ['ParticleInterval']
|
||||
|
||||
from panda3d.core import *
|
||||
from panda3d.direct import *
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
"""Undocumented Module"""
|
||||
"""
|
||||
Contains the TestInterval class
|
||||
"""
|
||||
|
||||
__all__ = ['TestInterval']
|
||||
|
||||
"""
|
||||
Contains the ParticleInterval class
|
||||
"""
|
||||
|
||||
from panda3d.core import *
|
||||
from panda3d.direct import *
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
"""
|
||||
This package contains the Python implementation of the interval system,
|
||||
which is a mechanism for playing back scripted actions. A range of
|
||||
interval types has been defined to automate motion, animation, sounds,
|
||||
color, function calls, as well as other intervals and arbitrary
|
||||
properties.
|
||||
|
||||
All interval types can be conveniently imported from the
|
||||
:mod:`.IntervalGlobal` module::
|
||||
|
||||
from direct.interval.IntervalGlobal import *
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
This package contains only the :class:`.MotionTrail` class.
|
||||
"""
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
|
||||
"""
|
||||
|
||||
This module is intended to be compiled into the Panda3D runtime
|
||||
distributable, to execute a packaged p3d application, but it can also
|
||||
be run directly via the Python interpreter (if the current Panda3D and
|
||||
Python versions match the version expected by the application). See
|
||||
runp3d.py for a command-line tool to invoke this module.
|
||||
|
||||
The global AppRunner instance may be imported as follows::
|
||||
|
||||
from direct.showbase.AppRunnerGlobal import appRunner
|
||||
|
||||
This will be None if Panda was not run from the runtime environment.
|
||||
"""
|
||||
|
||||
__all__ = ["AppRunner", "dummyAppRunner", "ArgumentError"]
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
"""
|
||||
This package provides the Python interface to functionality relating to
|
||||
the Panda3D Runtime environment.
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
"""
|
||||
This package contains the high-level Python interface to the particle
|
||||
system.
|
||||
|
||||
Also see the :mod:`panda3d.physics` module, which contains the C++
|
||||
implementation of the particle system.
|
||||
"""
|
||||
|
||||
@@ -6,4 +6,6 @@ This is needed for apps that start themselves by importing
|
||||
DirectStart; it provides a place for these apps to look for
|
||||
the AppRunner at startup. """
|
||||
|
||||
#: Contains the global AppRunner instance, or None if this application
|
||||
#: was not run from the runtime environment.
|
||||
appRunner = None
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the Audio3DManager class."""
|
||||
|
||||
__all__ = ['Audio3DManager']
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the BufferViewer class, which is used as a debugging aid
|
||||
when debugging render-to-texture effects. It shows different views at
|
||||
the bottom of the screen showing the various render targets."""
|
||||
|
||||
__all__ = ['BufferViewer']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the BulletinBoard class."""
|
||||
|
||||
__all__ = ['BulletinBoard']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the BulletinBoardWatcher class."""
|
||||
|
||||
__all__ = ['BulletinBoardWatcher']
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""Defines the DirectObject class, a convenient class to inherit from if the
|
||||
object needs to be able to respond to events."""
|
||||
|
||||
__all__ = ['DirectObject']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""This module defines the EventGroup class."""
|
||||
|
||||
__all__ = ['EventGroup']
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the EventManager class. See :mod:`.EventManagerGlobal` for the
|
||||
global eventMgr instance."""
|
||||
|
||||
__all__ = ['EventManager']
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the global :class:`.EventManager` instance."""
|
||||
|
||||
__all__ = ['eventMgr']
|
||||
|
||||
from . import EventManager
|
||||
|
||||
#: The global event manager.
|
||||
eventMgr = EventManager.EventManager()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the Factory class."""
|
||||
|
||||
__all__ = ['Factory']
|
||||
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['deCygwinify', 'getPaths']
|
||||
|
||||
"""This module is used only by the VR Studio programmers who are using
|
||||
the ctattach tools. It is imported before any other package, and its
|
||||
job is to figure out the correct paths to each of the packages.
|
||||
@@ -10,6 +6,8 @@ This module is not needed if you are not using ctattach; in this case
|
||||
all of the Panda packages will be collected under a common directory,
|
||||
which you will presumably have already on your PYTHONPATH. """
|
||||
|
||||
__all__ = ['deCygwinify', 'getPaths']
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains various utility functions."""
|
||||
|
||||
__all__ = ['findClass', 'rebindClass', 'copyFuncs', 'replaceMessengerFunc', 'replaceTaskMgrFunc', 'replaceStateFunc', 'replaceCRFunc', 'replaceAIRFunc', 'replaceIvalFunc']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains utility classes for debugging memory leaks."""
|
||||
|
||||
__all__ = ['FakeObject', '_createGarbage', 'GarbageReport', 'GarbageLogger']
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""This defines the Messenger class, which is responsible for most of the
|
||||
event handling that happens on the Python side."""
|
||||
|
||||
__all__ = ['Messenger']
|
||||
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['setupMirror', 'showFrustum']
|
||||
|
||||
"""This file demonstrates one way to create a mirror effect in Panda.
|
||||
Call setupMirror() to create a mirror in the world that reflects
|
||||
everything in front of it.
|
||||
@@ -23,6 +19,8 @@ surface are possible, like a funhouse mirror. However, the reflection
|
||||
itself is always basically planar; for more accurate convex
|
||||
reflections, you will need to use a sphere map or a cube map."""
|
||||
|
||||
__all__ = ['setupMirror', 'showFrustum']
|
||||
|
||||
from panda3d.core import *
|
||||
from direct.task import Task
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the ObjectPool utility class."""
|
||||
|
||||
__all__ = ['Diff', 'ObjectPool']
|
||||
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
"""Undocumented Module"""
|
||||
"""
|
||||
>>> from direct.showbase import ObjectReport
|
||||
|
||||
>>> o=ObjectReport.ObjectReport('baseline')
|
||||
>>> run()
|
||||
...
|
||||
|
||||
>>> o2=ObjectReport.ObjectReport('')
|
||||
>>> o.diff(o2)
|
||||
"""
|
||||
|
||||
__all__ = ['ExclusiveObjectPool', 'ObjectReport']
|
||||
|
||||
@@ -13,17 +22,6 @@ if sys.version_info >= (3, 0):
|
||||
else:
|
||||
import __builtin__ as builtins
|
||||
|
||||
"""
|
||||
>>> from direct.showbase import ObjectReport
|
||||
|
||||
>>> o=ObjectReport.ObjectReport('baseline')
|
||||
>>> run()
|
||||
...
|
||||
|
||||
>>> o2=ObjectReport.ObjectReport('')
|
||||
>>> o.diff(o2)
|
||||
"""
|
||||
|
||||
class ExclusiveObjectPool(DirectObject.DirectObject):
|
||||
# ObjectPool specialization that excludes particular objects
|
||||
# IDs of objects to globally exclude from reporting
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the OnScreenDebug class."""
|
||||
|
||||
__all__ = ['OnScreenDebug']
|
||||
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['Pool']
|
||||
|
||||
"""
|
||||
|
||||
Pool is a collection of python objects that you can checkin and
|
||||
checkout. This is useful for a cache of objects that are expensive to load
|
||||
and can be reused over and over, like splashes on cannonballs, or
|
||||
@@ -12,12 +7,16 @@ or be the same type.
|
||||
|
||||
Internally the pool is implemented with 2 lists, free items and used items.
|
||||
|
||||
p = Pool([1, 2, 3, 4, 5])
|
||||
x = p.checkout()
|
||||
p.checkin(x)
|
||||
Example::
|
||||
|
||||
p = Pool([1, 2, 3, 4, 5])
|
||||
x = p.checkout()
|
||||
p.checkin(x)
|
||||
|
||||
"""
|
||||
|
||||
__all__ = ['Pool']
|
||||
|
||||
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
|
||||
@@ -116,5 +115,3 @@ class Pool:
|
||||
|
||||
def __repr__(self):
|
||||
return "free = %s\nused = %s" % (self.__free, self.__used)
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the SfxPlayer class, a thin utility class for playing sounds at
|
||||
a particular location."""
|
||||
|
||||
__all__ = ['SfxPlayer']
|
||||
|
||||
@@ -95,6 +96,3 @@ class SfxPlayer:
|
||||
if node is not None:
|
||||
finalVolume *= node.getNetAudioVolume()
|
||||
sfx.setVolume(finalVolume)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['ShadowCaster', 'avatarShadow', 'piratesAvatarShadow', 'arbitraryShadow']
|
||||
|
||||
|
||||
"""Create a cheesy shadow effect by rendering the view of an
|
||||
object (e.g. the local avatar) from a special camera as seen from
|
||||
above (as if from the sun), using a solid gray foreground and a
|
||||
@@ -14,6 +9,8 @@ multitexture rendering techniques. It's not a particularly great
|
||||
way to do shadows.
|
||||
"""
|
||||
|
||||
__all__ = ['ShadowCaster', 'avatarShadow', 'piratesAvatarShadow', 'arbitraryShadow']
|
||||
|
||||
from panda3d.core import *
|
||||
from direct.task import Task
|
||||
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
"""Undocumented Module"""
|
||||
|
||||
__all__ = ['ShadowPlacer']
|
||||
|
||||
"""
|
||||
ShadowPlacer.py places a shadow.
|
||||
|
||||
@@ -10,6 +6,8 @@ Or it may do that later, right now it puts a node on the surface under
|
||||
the its parent node.
|
||||
"""
|
||||
|
||||
__all__ = ['ShadowPlacer']
|
||||
|
||||
from direct.controls.ControlManager import CollisionHandlerRayStart
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from panda3d.core import *
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the TaskThreaded and TaskThread classes."""
|
||||
|
||||
__all__ = ['TaskThreaded', 'TaskThread']
|
||||
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
from direct.task import Task
|
||||
|
||||
from .PythonUtil import SerialNumGen
|
||||
|
||||
|
||||
class TaskThreaded:
|
||||
""" derive from this if you need to do a bunch of CPU-intensive
|
||||
processing and you don't want to hang up the show. Lets you break
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"""Undocumented Module"""
|
||||
"""ThreeUpShow is a variant of ShowBase that defines three cameras covering
|
||||
different parts of the window."""
|
||||
|
||||
__all__ = ['ThreeUpShow']
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
"""Undocumented Module"""
|
||||
"""This module defines various transition effects that can be used to
|
||||
graphically transition between two scenes, such as by fading the screen to
|
||||
a particular color."""
|
||||
|
||||
__all__ = ['Transitions']
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""
|
||||
This module hooks into Python's import mechanism to print out all imports to
|
||||
the standard output as they happen.
|
||||
"""
|
||||
|
||||
__all__ = []
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@ Python code into a standalone executable. It also uses Python's
|
||||
built-in modulefinder module, which it uses to find all of the modules
|
||||
imported directly or indirectly by the original startfile.py.
|
||||
|
||||
Usage:
|
||||
Usage::
|
||||
|
||||
pfreeze.py [opts] [startfile]
|
||||
|
||||
Options:
|
||||
Options::
|
||||
|
||||
-o output
|
||||
Specifies the name of the resulting executable file to produce.
|
||||
@@ -67,88 +67,95 @@ def usage(code, msg = ''):
|
||||
sys.stderr.write(str(msg) + '\n')
|
||||
sys.exit(code)
|
||||
|
||||
# We're not protecting the next part under a __name__ == __main__
|
||||
# check, just so we can import this file directly in ppython.cxx.
|
||||
|
||||
freezer = FreezeTool.Freezer()
|
||||
def main(args=None):
|
||||
if args is None:
|
||||
args = sys.argv[1:]
|
||||
|
||||
basename = None
|
||||
addStartupModules = False
|
||||
freezer = FreezeTool.Freezer()
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'o:i:x:p:P:slkh')
|
||||
except getopt.error as msg:
|
||||
usage(1, msg)
|
||||
basename = None
|
||||
addStartupModules = False
|
||||
|
||||
for opt, arg in opts:
|
||||
if opt == '-o':
|
||||
basename = arg
|
||||
elif opt == '-i':
|
||||
for module in arg.split(','):
|
||||
freezer.addModule(module)
|
||||
elif opt == '-x':
|
||||
for module in arg.split(','):
|
||||
freezer.excludeModule(module)
|
||||
elif opt == '-p':
|
||||
for module in arg.split(','):
|
||||
freezer.handleCustomPath(module)
|
||||
elif opt == '-P':
|
||||
sys.path.append(arg)
|
||||
elif opt == '-s':
|
||||
addStartupModules = True
|
||||
elif opt == '-l':
|
||||
freezer.linkExtensionModules = True
|
||||
elif opt == '-k':
|
||||
freezer.keepTemporaryFiles = True
|
||||
elif opt == '-h':
|
||||
usage(0)
|
||||
try:
|
||||
opts, args = getopt.getopt(args, 'o:i:x:p:P:slkh')
|
||||
except getopt.error as msg:
|
||||
usage(1, msg)
|
||||
|
||||
for opt, arg in opts:
|
||||
if opt == '-o':
|
||||
basename = arg
|
||||
elif opt == '-i':
|
||||
for module in arg.split(','):
|
||||
freezer.addModule(module)
|
||||
elif opt == '-x':
|
||||
for module in arg.split(','):
|
||||
freezer.excludeModule(module)
|
||||
elif opt == '-p':
|
||||
for module in arg.split(','):
|
||||
freezer.handleCustomPath(module)
|
||||
elif opt == '-P':
|
||||
sys.path.append(arg)
|
||||
elif opt == '-s':
|
||||
addStartupModules = True
|
||||
elif opt == '-l':
|
||||
freezer.linkExtensionModules = True
|
||||
elif opt == '-k':
|
||||
freezer.keepTemporaryFiles = True
|
||||
elif opt == '-h':
|
||||
usage(0)
|
||||
else:
|
||||
print('illegal option: ' + flag)
|
||||
sys.exit(1)
|
||||
|
||||
if not basename:
|
||||
usage(1, 'You did not specify an output file.')
|
||||
|
||||
if len(args) > 1:
|
||||
usage(1, 'Only one main file may be specified.')
|
||||
|
||||
outputType = 'exe'
|
||||
bl = basename.lower()
|
||||
if bl.endswith('.mf'):
|
||||
outputType = 'mf'
|
||||
elif bl.endswith('.c'):
|
||||
outputType = 'c'
|
||||
elif bl.endswith('.dll') or bl.endswith('.pyd') or bl.endswith('.so'):
|
||||
basename = os.path.splitext(basename)[0]
|
||||
outputType = 'dll'
|
||||
elif bl.endswith('.exe'):
|
||||
basename = os.path.splitext(basename)[0]
|
||||
|
||||
compileToExe = False
|
||||
if args:
|
||||
startfile = args[0]
|
||||
startmod = startfile
|
||||
if startfile.endswith('.py') or startfile.endswith('.pyw') or \
|
||||
startfile.endswith('.pyc') or startfile.endswith('.pyo'):
|
||||
startmod = os.path.splitext(startfile)[0]
|
||||
|
||||
if outputType == 'dll' or outputType == 'c':
|
||||
freezer.addModule(startmod, filename = startfile)
|
||||
else:
|
||||
freezer.addModule('__main__', filename = startfile)
|
||||
compileToExe = True
|
||||
addStartupModules = True
|
||||
|
||||
elif outputType == 'exe':
|
||||
# We must have a main module when making an executable.
|
||||
usage(1, 'A main file needs to be specified when creating an executable.')
|
||||
|
||||
freezer.done(addStartupModules = addStartupModules)
|
||||
|
||||
if outputType == 'mf':
|
||||
freezer.writeMultifile(basename)
|
||||
elif outputType == 'c':
|
||||
freezer.writeCode(basename)
|
||||
else:
|
||||
print('illegal option: ' + flag)
|
||||
sys.exit(1)
|
||||
freezer.generateCode(basename, compileToExe = compileToExe)
|
||||
|
||||
if not basename:
|
||||
usage(1, 'You did not specify an output file.')
|
||||
return 0
|
||||
|
||||
if len(args) > 1:
|
||||
usage(1, 'Only one main file may be specified.')
|
||||
|
||||
outputType = 'exe'
|
||||
bl = basename.lower()
|
||||
if bl.endswith('.mf'):
|
||||
outputType = 'mf'
|
||||
elif bl.endswith('.c'):
|
||||
outputType = 'c'
|
||||
elif bl.endswith('.dll') or bl.endswith('.pyd') or bl.endswith('.so'):
|
||||
basename = os.path.splitext(basename)[0]
|
||||
outputType = 'dll'
|
||||
elif bl.endswith('.exe'):
|
||||
basename = os.path.splitext(basename)[0]
|
||||
|
||||
compileToExe = False
|
||||
if args:
|
||||
startfile = args[0]
|
||||
startmod = startfile
|
||||
if startfile.endswith('.py') or startfile.endswith('.pyw') or \
|
||||
startfile.endswith('.pyc') or startfile.endswith('.pyo'):
|
||||
startmod = os.path.splitext(startfile)[0]
|
||||
|
||||
if outputType == 'dll' or outputType == 'c':
|
||||
freezer.addModule(startmod, filename = startfile)
|
||||
else:
|
||||
freezer.addModule('__main__', filename = startfile)
|
||||
compileToExe = True
|
||||
addStartupModules = True
|
||||
|
||||
elif outputType == 'exe':
|
||||
# We must have a main module when making an executable.
|
||||
usage(1, 'A main file needs to be specified when creating an executable.')
|
||||
|
||||
freezer.done(addStartupModules = addStartupModules)
|
||||
|
||||
if outputType == 'mf':
|
||||
freezer.writeMultifile(basename)
|
||||
elif outputType == 'c':
|
||||
freezer.writeCode(basename)
|
||||
else:
|
||||
freezer.generateCode(basename, compileToExe = compileToExe)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
This package contains various modules that provide a drop-in substitute
|
||||
for some of the built-in Python modules. These substitutes make better
|
||||
use of Panda3D's virtual file system and threading system.
|
||||
"""
|
||||
|
||||
@@ -4,4 +4,5 @@ __all__ = ['taskMgr']
|
||||
|
||||
from . import Task
|
||||
|
||||
#: The global task manager.
|
||||
taskMgr = Task.TaskManager()
|
||||
|
||||
@@ -24,7 +24,8 @@ def taskCallback(task):
|
||||
spawnNewTask()
|
||||
return Task.done
|
||||
|
||||
taskMgr.removeTasksMatching("taskTester*")
|
||||
if __name__ == '__main__':
|
||||
taskMgr.removeTasksMatching("taskTester*")
|
||||
|
||||
for i in range(numTasks):
|
||||
spawnNewTask()
|
||||
for i in range(numTasks):
|
||||
spawnNewTask()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the Timer class."""
|
||||
|
||||
__all__ = ['Timer']
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
This package contains the Python interface to the task system, which
|
||||
manages scheduled functions that are executed at designated intervals.
|
||||
|
||||
The global task manager object can be imported as a singleton::
|
||||
|
||||
from direct.task.TaskManagerGlobal import taskMgr
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the NotifyPanel class."""
|
||||
|
||||
__all__ = ['NotifyPanel']
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
"""Undocumented Module"""
|
||||
"""This module defines a widget used to display a graphical overview of the
|
||||
scene graph using the tkinter GUI system.
|
||||
|
||||
Requires Pmw."""
|
||||
|
||||
__all__ = ['SceneGraphExplorer', 'SceneGraphExplorerItem', 'explore']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Defines tree widgets for the tkinter GUI system."""
|
||||
|
||||
__all__ = ['TreeNode', 'TreeItem']
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Undocumented Module"""
|
||||
"""Contains the WidgetPropertiesDialog class."""
|
||||
|
||||
__all__ = ['WidgetPropertiesDialog']
|
||||
|
||||
|
||||
@@ -97,6 +97,8 @@ PUBLISHED:
|
||||
|
||||
// Derived classes should override this function to return get_class_type().
|
||||
virtual TypeHandle get_type() const=0;
|
||||
|
||||
// Returns the TypeHandle representing this object's type.
|
||||
MAKE_PROPERTY(type, get_type);
|
||||
|
||||
INLINE int get_type_index() const;
|
||||
|
||||
@@ -1966,6 +1966,10 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP
|
||||
// See if there happens to be a comment before the MAKE_PROPERTY macro.
|
||||
if (make_property->_leading_comment != (CPPCommentBlock *)NULL) {
|
||||
iproperty._comment = trim_blanks(make_property->_leading_comment->_comment);
|
||||
|
||||
} else if (getter->_leading_comment != (CPPCommentBlock *)NULL) {
|
||||
// Take the comment from the getter.
|
||||
iproperty._comment = trim_blanks(getter->_leading_comment->_comment);
|
||||
}
|
||||
|
||||
// Now look for setters.
|
||||
|
||||
@@ -551,6 +551,7 @@ def makewheel(version, output_dir, platform=default_platform):
|
||||
# Add a panda3d-tools directory containing the executables.
|
||||
entry_points = '[console_scripts]\n'
|
||||
entry_points += 'eggcacher = direct.directscripts.eggcacher:main\n'
|
||||
entry_points += 'pfreeze = direct.showutil.pfreeze:main\n'
|
||||
tools_init = ''
|
||||
for file in os.listdir(bin_dir):
|
||||
basename = os.path.splitext(file)[0]
|
||||
|
||||
@@ -51,8 +51,14 @@ make_identity() {
|
||||
/**
|
||||
* Constructs a new LightRampAttrib object. This causes the luminance of the
|
||||
* diffuse lighting contribution to be quantized using a single threshold:
|
||||
* @code if (original_luminance > threshold0) { luminance = level0; } else {
|
||||
* luminance = 0.0; } @endcode
|
||||
*
|
||||
* @code
|
||||
* if (original_luminance > threshold0) {
|
||||
* luminance = level0;
|
||||
* } else {
|
||||
* luminance = 0.0;
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
CPT(RenderAttrib) LightRampAttrib::
|
||||
make_single_threshold(PN_stdfloat thresh0, PN_stdfloat val0) {
|
||||
@@ -65,10 +71,17 @@ make_single_threshold(PN_stdfloat thresh0, PN_stdfloat val0) {
|
||||
|
||||
/**
|
||||
* Constructs a new LightRampAttrib object. This causes the luminance of the
|
||||
* diffuse lighting contribution to be quantized using two thresholds: @code
|
||||
* if (original_luminance > threshold1) { luminance = level1; } else if
|
||||
* (original_luminance > threshold0) { luminance = level0; } else { luminance
|
||||
* = 0.0; } @endcode
|
||||
* diffuse lighting contribution to be quantized using two thresholds:
|
||||
*
|
||||
* @code
|
||||
* if (original_luminance > threshold1) {
|
||||
* luminance = level1;
|
||||
* } else if (original_luminance > threshold0) {
|
||||
* luminance = level0;
|
||||
* } else {
|
||||
* luminance = 0.0;
|
||||
* }
|
||||
* @endcode
|
||||
*/
|
||||
CPT(RenderAttrib) LightRampAttrib::
|
||||
make_double_threshold(PN_stdfloat thresh0, PN_stdfloat val0, PN_stdfloat thresh1, PN_stdfloat val1) {
|
||||
@@ -94,8 +107,11 @@ make_double_threshold(PN_stdfloat thresh0, PN_stdfloat val0, PN_stdfloat thresh1
|
||||
* However, the monitor has finite contrast. Normally, all of that contrast
|
||||
* is used to represent brightnesses in the range 0-1. The HDR0 tone mapping
|
||||
* operator 'steals' one quarter of that contrast to represent brightnesses in
|
||||
* the range 1-infinity. @code FINAL_RGB = (RGB^3 + RGB^2 + RGB) / (RGB^3 +
|
||||
* RGB^2 + RGB + 1) @endcode
|
||||
* the range 1-infinity.
|
||||
*
|
||||
* @code
|
||||
* FINAL_RGB = (RGB^3 + RGB^2 + RGB) / (RGB^3 + RGB^2 + RGB + 1)
|
||||
* @endcode
|
||||
*/
|
||||
CPT(RenderAttrib) LightRampAttrib::
|
||||
make_hdr0() {
|
||||
@@ -117,7 +133,10 @@ make_hdr0() {
|
||||
* However, the monitor has finite contrast. Normally, all of that contrast
|
||||
* is used to represent brightnesses in the range 0-1. The HDR1 tone mapping
|
||||
* operator 'steals' one third of that contrast to represent brightnesses in
|
||||
* the range 1-infinity. @code FINAL_RGB = (RGB^2 + RGB) / (RGB^2 + RGB + 1)
|
||||
* the range 1-infinity.
|
||||
*
|
||||
* @code
|
||||
* FINAL_RGB = (RGB^2 + RGB) / (RGB^2 + RGB + 1)
|
||||
* @endcode
|
||||
*/
|
||||
CPT(RenderAttrib) LightRampAttrib::
|
||||
@@ -140,7 +159,11 @@ make_hdr1() {
|
||||
* However, the monitor has finite contrast. Normally, all of that contrast
|
||||
* is used to represent brightnesses in the range 0-1. The HDR2 tone mapping
|
||||
* operator 'steals' one half of that contrast to represent brightnesses in
|
||||
* the range 1-infinity. @code FINAL_RGB = (RGB) / (RGB + 1) @endcode
|
||||
* the range 1-infinity.
|
||||
*
|
||||
* @code
|
||||
* FINAL_RGB = (RGB) / (RGB + 1)
|
||||
* @endcode
|
||||
*/
|
||||
CPT(RenderAttrib) LightRampAttrib::
|
||||
make_hdr2() {
|
||||
|
||||
@@ -17,12 +17,7 @@
|
||||
#include "linearForce.h"
|
||||
|
||||
/**
|
||||
* a programmable force that takes an evaluator fn.
|
||||
*
|
||||
* NOTE : AS OF Interrogate => Squeak, this class does NOT get FFI'd due to
|
||||
* the function pointer bug, and is currently NOT getting interrogated.
|
||||
* Change this in the makefile when the time is right or this class becomes
|
||||
* needed...
|
||||
* A programmable force that takes an evaluator function.
|
||||
*/
|
||||
class EXPCL_PANDAPHYSICS LinearUserDefinedForce : public LinearForce {
|
||||
PUBLISHED:
|
||||
|
||||
Reference in New Issue
Block a user