mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-27 15:25:54 -04:00
parent
518d4777fa
commit
50de135641
@ -410,8 +410,10 @@ class TaskManager:
|
||||
return task
|
||||
|
||||
def __setupTask(self, funcOrTask, name, priority, sort, extraArgs, taskChain, appendTask, owner, uponDeath):
|
||||
wasTask = False
|
||||
if isinstance(funcOrTask, AsyncTask):
|
||||
task = funcOrTask
|
||||
wasTask = True
|
||||
elif hasattr(funcOrTask, '__call__') or \
|
||||
hasattr(funcOrTask, 'cr_await') or \
|
||||
isinstance(funcOrTask, types.GeneratorType):
|
||||
@ -427,8 +429,14 @@ class TaskManager:
|
||||
if hasattr(task, 'setArgs'):
|
||||
# It will only accept arguments if it's a PythonTask.
|
||||
if extraArgs is None:
|
||||
extraArgs = []
|
||||
appendTask = True
|
||||
if wasTask:
|
||||
extraArgs = task.getArgs()
|
||||
#do not append the task to an existing task. It was already there
|
||||
#from the last time it was addeed
|
||||
appendTask = False
|
||||
else:
|
||||
extraArgs = []
|
||||
appendTask = True
|
||||
task.setArgs(extraArgs, appendTask)
|
||||
elif extraArgs is not None:
|
||||
self.notify.error(
|
||||
|
28
tests/task/test_task_arg.py
Normal file
28
tests/task/test_task_arg.py
Normal file
@ -0,0 +1,28 @@
|
||||
from direct.showbase.ShowBase import ShowBase
|
||||
from direct.task import Task
|
||||
from panda3d.core import Vec2
|
||||
|
||||
def test_task_arg():
|
||||
def test(ship, flood, task):
|
||||
ship.y += flood
|
||||
return task.done
|
||||
|
||||
ship = Vec2(2.2, 2)
|
||||
flood = 1
|
||||
|
||||
base = ShowBase(windowType='none')
|
||||
task = base.addTask(test, 'test_task', extraArgs=[ship, flood], appendTask=True)
|
||||
base.taskMgr.step()
|
||||
assert ship.y == 3
|
||||
base.remove_task(task)
|
||||
task = base.addTask(task)
|
||||
base.taskMgr.step()
|
||||
assert ship.y == 4
|
||||
task = base.taskMgr.add(test, 'test_task', extraArgs=[ship, flood], appendTask=True)
|
||||
base.taskMgr.step()
|
||||
assert ship.y == 5
|
||||
base.remove_task(task)
|
||||
task = base.taskMgr.add(task)
|
||||
base.taskMgr.step()
|
||||
assert ship.y == 6
|
||||
|
Loading…
x
Reference in New Issue
Block a user