mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
add replaceMethod()
This commit is contained in:
parent
5ea6a359a4
commit
20a18992d0
@ -76,7 +76,7 @@ class TaskManager:
|
|||||||
MaxEpochSpeed = 1.0/30.0
|
MaxEpochSpeed = 1.0/30.0
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mgr = AsyncTaskManager('TaskManager')
|
self.mgr = AsyncTaskManager.getGlobalPtr()
|
||||||
|
|
||||||
self.resumeFunc = None
|
self.resumeFunc = None
|
||||||
self.globalClock = self.mgr.getClock()
|
self.globalClock = self.mgr.getClock()
|
||||||
@ -168,6 +168,11 @@ class TaskManager:
|
|||||||
indicated name. """
|
indicated name. """
|
||||||
return self.__makeTaskList(self.mgr.findTasks(taskName))
|
return self.__makeTaskList(self.mgr.findTasks(taskName))
|
||||||
|
|
||||||
|
def getAllTasks(self):
|
||||||
|
"""Returns list of all tasks, active and sleeping, in
|
||||||
|
arbitrary order. """
|
||||||
|
return self.__makeTaskList(self.mgr.getTasks())
|
||||||
|
|
||||||
def getTasks(self):
|
def getTasks(self):
|
||||||
"""Returns list of all active tasks in arbitrary order. """
|
"""Returns list of all active tasks in arbitrary order. """
|
||||||
return self.__makeTaskList(self.mgr.getActiveTasks())
|
return self.__makeTaskList(self.mgr.getActiveTasks())
|
||||||
@ -427,6 +432,31 @@ class TaskManager:
|
|||||||
# Set a flag so we will stop before beginning next frame
|
# Set a flag so we will stop before beginning next frame
|
||||||
self.running = False
|
self.running = False
|
||||||
|
|
||||||
|
def __tryReplaceTaskMethod(self, task, oldMethod, newFunction):
|
||||||
|
if not isinstance(task, PythonTask):
|
||||||
|
return
|
||||||
|
|
||||||
|
method = task.getFunction()
|
||||||
|
if (type(method) == types.MethodType):
|
||||||
|
function = method.im_func
|
||||||
|
else:
|
||||||
|
function = method
|
||||||
|
if (function == oldMethod):
|
||||||
|
import new
|
||||||
|
newMethod = new.instancemethod(newFunction,
|
||||||
|
method.im_self,
|
||||||
|
method.im_class)
|
||||||
|
task.setFunction(newMethod)
|
||||||
|
# Found a match
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def replaceMethod(self, oldMethod, newFunction):
|
||||||
|
numFound = 0
|
||||||
|
for task in self.getAllTasks():
|
||||||
|
numFound += self.__tryReplaceTaskMethod(task, oldMethod, newFunction)
|
||||||
|
return numFound
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return str(self.mgr)
|
return str(self.mgr)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user