mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-17 12:12:10 -04:00
more comments, etc
This commit is contained in:
parent
c8913d4b66
commit
4f67da1cd1
@ -151,7 +151,7 @@ class Loader(DirectObject):
|
||||
cb = Loader.Callback(len(modelList), gotList, callback, extraArgs)
|
||||
i=0
|
||||
for modelPath in modelList:
|
||||
request = ModelLoadRequest(Filename(modelPath), loaderOptions)
|
||||
request = ModelLoadRequest(Filename(modelPath), loaderOptions, self.loader)
|
||||
request.setDoneEvent(self.hook)
|
||||
request.setPythonObject((cb, i))
|
||||
i+=1
|
||||
|
@ -184,9 +184,22 @@ class TaskManager:
|
||||
l.append(taskCollection.getTask(i))
|
||||
return l
|
||||
|
||||
def doMethodLater(self, delayTime, funcOrTask, name, priority = None,
|
||||
sort = None, extraArgs = None, taskChain = None,
|
||||
appendTask = False, owner = None, uponDeath = None):
|
||||
def doMethodLater(self, delayTime, funcOrTask, name, extraArgs = None,
|
||||
sort = None, priority = None, taskChain = None,
|
||||
uponDeath = None, appendTask = False, owner = None):
|
||||
|
||||
"""Adds a task to be performed at some time in the future.
|
||||
This is identical to add(), except that the specified
|
||||
delayTime is applied to the Task object first, which means
|
||||
that the task will not begin executing until at least the
|
||||
indicated delayTime (in seconds) has elapsed.
|
||||
|
||||
After delayTime has elapsed, the task will become active, and
|
||||
will run in the soonest possible frame thereafter. If you
|
||||
wish to specify a task that will run in the next frame, use a
|
||||
delayTime of 0.
|
||||
"""
|
||||
|
||||
if delayTime < 0:
|
||||
assert self.notify.warning('doMethodLater: added task: %s with negative delay: %s' % (name, delayTime))
|
||||
|
||||
@ -195,14 +208,58 @@ class TaskManager:
|
||||
self.mgr.add(task)
|
||||
return task
|
||||
|
||||
def add(self, funcOrTask, name, priority = None, sort = None,
|
||||
extraArgs = None, taskChain = None, appendTask = False,
|
||||
owner = None, uponDeath = None):
|
||||
def add(self, funcOrTask, name, sort = None, extraArgs = None,
|
||||
priority = None, uponDeath = None, appendTask = False,
|
||||
taskChain = None, owner = None):
|
||||
|
||||
"""
|
||||
Add a new task to the taskMgr.
|
||||
You can add a Task object or a method that takes one argument.
|
||||
Add a new task to the taskMgr. The task will begin executing
|
||||
immediately, or next frame if its sort value has already
|
||||
passed this frame.
|
||||
|
||||
The parameters are:
|
||||
|
||||
funcOrTask - either an existing Task object (not already added
|
||||
to the task manager), or a callable function object. If this
|
||||
is a function, a new Task object will be created and returned.
|
||||
|
||||
name - the name to assign to the Task.
|
||||
|
||||
sort - the sort value to assign the task. The default sort is
|
||||
0. Within a particular task chain, it is guaranteed that the
|
||||
tasks with a lower sort value will all run before tasks with a
|
||||
higher sort value run.
|
||||
|
||||
extraArgs - the list of arguments to pass to the task
|
||||
function. If this is omitted, the list is just the task
|
||||
object itself.
|
||||
|
||||
priority - the priority at which to run the task. The default
|
||||
priority is 0. For historical purposes, if you specify a
|
||||
priority without also specifying a sort, the priority value is
|
||||
understood to actually be a sort value. (Previously, there
|
||||
was no priority value, only a sort value, and it was called
|
||||
"priority".)
|
||||
|
||||
uponDeath - a function to call when the task terminates,
|
||||
either because it has run to completion, or because
|
||||
|
||||
appendTask - a boolean flag. If this is true, then the task
|
||||
object itself will be appended to the extraArgs list before
|
||||
calling the function.
|
||||
|
||||
taskChain - the name of the task chain to assign the task to.
|
||||
|
||||
owner - an option Python object that is declared as the
|
||||
"owner" of this task for maintenance purposes. The owner must
|
||||
have two methods: owner._addTask(self, task), which is called
|
||||
when the task begins, and owner._clearTask(self, task), which
|
||||
is called when the task terminates.
|
||||
|
||||
The return value is the new Task object that has been added.
|
||||
|
||||
"""
|
||||
|
||||
task = self.__setupTask(funcOrTask, name, priority, sort, extraArgs, taskChain, appendTask, owner, uponDeath)
|
||||
self.mgr.add(task)
|
||||
return task
|
||||
@ -250,6 +307,12 @@ class TaskManager:
|
||||
return task
|
||||
|
||||
def remove(self, taskOrName):
|
||||
"""Removes a task from the task manager. The task is
|
||||
immediately stopped, almost as if it had returned task.done.
|
||||
You may specify either an explicit Task object, or the name of
|
||||
a task. If you specify a name, all tasks with the indicated
|
||||
name are removed. Returns the number of tasks removed. """
|
||||
|
||||
if isinstance(taskOrName, types.StringTypes):
|
||||
tasks = self.mgr.findTasks(taskOrName)
|
||||
return self.mgr.remove(tasks)
|
||||
@ -259,14 +322,21 @@ class TaskManager:
|
||||
self.notify.error('remove takes a string or a Task')
|
||||
|
||||
def removeTasksMatching(self, taskPattern):
|
||||
"""removeTasksMatching(self, string taskPattern)
|
||||
Removes tasks whose names match the pattern, which can include
|
||||
standard shell globbing characters like *, ?, and [].
|
||||
"""Removes all tasks whose names match the pattern, which can
|
||||
include standard shell globbing characters like *, ?, and [].
|
||||
See also remove().
|
||||
|
||||
Returns the number of tasks removed.
|
||||
"""
|
||||
tasks = self.mgr.findTasksMatching(GlobPattern(taskPattern))
|
||||
return self.mgr.remove(tasks)
|
||||
|
||||
def step(self):
|
||||
"""Invokes the task manager for one frame, and then returns.
|
||||
Normally, this executes each task exactly once, though task
|
||||
chains that are in sub-threads or that have frame budgets
|
||||
might execute their tasks differently. """
|
||||
|
||||
self.__doStep()
|
||||
self.mgr.stopThreads()
|
||||
|
||||
@ -292,6 +362,9 @@ class TaskManager:
|
||||
raise KeyboardInterrupt
|
||||
|
||||
def run(self):
|
||||
"""Starts the task manager running. Does not return until an
|
||||
exception is encountered (including KeyboardInterrupt). """
|
||||
|
||||
# Set the clock to have last frame's time in case we were
|
||||
# Paused at the prompt for a long time
|
||||
t = self.globalClock.getFrameTime()
|
||||
@ -362,8 +435,9 @@ class TaskManager:
|
||||
# In the event we want to do frame time managment, this is the
|
||||
# function to replace or overload.
|
||||
def doYield(self, frameStartTime, nextScheduledTaskTime):
|
||||
None
|
||||
|
||||
pass
|
||||
|
||||
"""
|
||||
def doYieldExample(self, frameStartTime, nextScheduledTaskTime):
|
||||
minFinTime = frameStartTime + self.MaxEpochSpeed
|
||||
if nextScheduledTaskTime > 0 and nextScheduledTaskTime < minFinTime:
|
||||
@ -374,6 +448,7 @@ class TaskManager:
|
||||
print ' sleep %s'% (delta)
|
||||
time.sleep(delta)
|
||||
delta = minFinTime - self.globalClock.getRealTime()
|
||||
"""
|
||||
|
||||
if __debug__:
|
||||
# to catch memory leaks during the tests at the bottom of the file
|
||||
|
Loading…
x
Reference in New Issue
Block a user