mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 00:32:57 -04:00
parent
518d4777fa
commit
50de135641
@ -410,8 +410,10 @@ class TaskManager:
|
|||||||
return task
|
return task
|
||||||
|
|
||||||
def __setupTask(self, funcOrTask, name, priority, sort, extraArgs, taskChain, appendTask, owner, uponDeath):
|
def __setupTask(self, funcOrTask, name, priority, sort, extraArgs, taskChain, appendTask, owner, uponDeath):
|
||||||
|
wasTask = False
|
||||||
if isinstance(funcOrTask, AsyncTask):
|
if isinstance(funcOrTask, AsyncTask):
|
||||||
task = funcOrTask
|
task = funcOrTask
|
||||||
|
wasTask = True
|
||||||
elif hasattr(funcOrTask, '__call__') or \
|
elif hasattr(funcOrTask, '__call__') or \
|
||||||
hasattr(funcOrTask, 'cr_await') or \
|
hasattr(funcOrTask, 'cr_await') or \
|
||||||
isinstance(funcOrTask, types.GeneratorType):
|
isinstance(funcOrTask, types.GeneratorType):
|
||||||
@ -427,6 +429,12 @@ class TaskManager:
|
|||||||
if hasattr(task, 'setArgs'):
|
if hasattr(task, 'setArgs'):
|
||||||
# It will only accept arguments if it's a PythonTask.
|
# It will only accept arguments if it's a PythonTask.
|
||||||
if extraArgs is None:
|
if extraArgs is None:
|
||||||
|
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 = []
|
extraArgs = []
|
||||||
appendTask = True
|
appendTask = True
|
||||||
task.setArgs(extraArgs, appendTask)
|
task.setArgs(extraArgs, appendTask)
|
||||||
|
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