|
def | __init__ (self, name, phaseParamMap={}, autoCleanup=True, enterPrefix='enter', exitPrefix='exit', phaseCollideMask=BitMask32.allOn(), fromCollideNode=None) |
|
def | __del__ (self) |
|
def | __repr__ (self) |
|
def | __str__ (self) |
|
def | cleanup (self) |
|
def | reset (self) |
|
def | setPhase (self, aPhase) |
|
def | setPhaseCollideMask (self, mask) |
|
def | __init__ (self, aliasMap={}) |
|
def | getAliasPhase (self, alias) |
|
def | getPhase (self) |
|
def | getPhaseAlias (self, phase) |
|
def | setAlias (self, phase, alias) |
|
def | __init__ (self) |
|
def | accept (self, event, method, extraArgs=[]) |
|
def | acceptOnce (self, event, method, extraArgs=[]) |
|
def | addTask (self, *args, **kwargs) |
|
def | detectLeaks (self) |
|
def | doMethodLater (self, *args, **kwargs) |
|
def | getAllAccepting (self) |
|
def | ignore (self, event) |
|
def | ignoreAll (self) |
|
def | isAccepting (self, event) |
|
def | isIgnoring (self, event) |
|
def | removeAllTasks (self) |
|
def | removeTask (self, taskOrName) |
|
This class defines a PhasedObject,NodePath object that will handle
the phasing of an object in the scene graph according to its
distance from some other collider object(such as an avatar).
Since it's a NodePath, you can parent it to another object in the
scene graph, or even inherit from this class to get its functionality.
What you will need to define to use this class:
- The distances at which you want the phases to load/unload
- Whether you want the object to clean itself up or not when
exitting the largest distance sphere
- What the load/unload functions are
- What sort of events to listen for when a collision occurs
- (Optional) A collision bitmask for the phase collision spheres
- (Optional) A 'from' collision node to collide into our 'into' spheres
You specify the distances and function names by the phaseParamMap
parameter to `__init__()`. For example::
phaseParamMap = {'Alias': distance, ...}
...
def loadPhaseAlias(self):
pass
def unloadPhaseAlias(self):
pass
If the 'fromCollideNode' is supplied, we will set up our own
traverser and only traverse below this node. It will send out
events of the form '<enterPrefix>%in' and '<exitPrefix>%in' in
order to match the main collision traverser's patterns. Note
that this will only be used after a reset or phase change in
order to fully transition to the correct phase in a single pass.
Most of the time, it will be reacting to events from the main
collision traverser.
IMPORTANT:
The following only applies when ``autoCleanup is True``:
If you unload the last phase, by either calling `cleanup()` or
by exiting the last phase's distance, you will need to
explicitly call `reset()` to get the distance phasing to work
again. This was done so if either this node or the collider is
removed from the scene graph (e.g. avatar teleport), the phased
object will clean itself up automatically.