mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 03:15:07 -04:00
castillian support
This commit is contained in:
parent
b6eefd9e23
commit
69e7a0ce44
@ -315,14 +315,14 @@ def intersection(a, b):
|
|||||||
"""
|
"""
|
||||||
if not a: return []
|
if not a: return []
|
||||||
if not b: return []
|
if not b: return []
|
||||||
c = a + b
|
|
||||||
d = []
|
d = []
|
||||||
for i in c:
|
for i in a:
|
||||||
if (i in a) and (i in b):
|
if (i in b) and (i not in d):
|
||||||
# make it unique, like a set
|
d.append(i)
|
||||||
if (i not in d):
|
for i in b:
|
||||||
d.append(i)
|
if (i in a) and (i not in d):
|
||||||
return d
|
d.append(i)
|
||||||
|
return d
|
||||||
|
|
||||||
def union(a, b):
|
def union(a, b):
|
||||||
"""
|
"""
|
||||||
|
@ -115,8 +115,6 @@ def pause(delayTime):
|
|||||||
if (self.time < self.delayTime):
|
if (self.time < self.delayTime):
|
||||||
return cont
|
return cont
|
||||||
else:
|
else:
|
||||||
# Time is up, return done
|
|
||||||
# TaskManager.notify.debug('pause done: ' + self.name)
|
|
||||||
return done
|
return done
|
||||||
task = Task(func)
|
task = Task(func)
|
||||||
task.name = 'pause'
|
task.name = 'pause'
|
||||||
@ -160,7 +158,7 @@ def make_sequence(taskList):
|
|||||||
|
|
||||||
# If we got to the end of the list, this sequence is done
|
# If we got to the end of the list, this sequence is done
|
||||||
if (self.index >= len(self.taskList)):
|
if (self.index >= len(self.taskList)):
|
||||||
TaskManager.notify.debug('sequence done: ' + self.name)
|
assert(TaskManager.notify.debug('sequence done: ' + self.name))
|
||||||
frameFinished = 1
|
frameFinished = 1
|
||||||
taskDoneStatus = done
|
taskDoneStatus = done
|
||||||
|
|
||||||
@ -336,7 +334,7 @@ class TaskManager:
|
|||||||
# is not ready to go, we can return
|
# is not ready to go, we can return
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
TaskManager.notify.debug('__doLaterProcessor: spawning %s' % (dl))
|
assert(TaskManager.notify.debug('__doLaterProcessor: spawning %s' % (dl)))
|
||||||
removedTasks.append(dl)
|
removedTasks.append(dl)
|
||||||
dl.setStartTimeFrame(self.currentTime, self.currentFrame)
|
dl.setStartTimeFrame(self.currentTime, self.currentFrame)
|
||||||
self.__addPendingTask(dl)
|
self.__addPendingTask(dl)
|
||||||
@ -347,8 +345,7 @@ class TaskManager:
|
|||||||
return cont
|
return cont
|
||||||
|
|
||||||
def __spawnDoLater(self, task):
|
def __spawnDoLater(self, task):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('spawning doLater: %s' % (task)))
|
||||||
TaskManager.notify.debug('spawning doLater: %s' % (task))
|
|
||||||
# Add this task to the nameDict
|
# Add this task to the nameDict
|
||||||
nameList = ifAbsentPut(self.nameDict, task.name, [])
|
nameList = ifAbsentPut(self.nameDict, task.name, [])
|
||||||
nameList.append(task)
|
nameList.append(task)
|
||||||
@ -371,8 +368,7 @@ class TaskManager:
|
|||||||
return task
|
return task
|
||||||
|
|
||||||
def doLater(self, delayTime, task, taskName):
|
def doLater(self, delayTime, task, taskName):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('doLater: %s' % (taskName)))
|
||||||
TaskManager.notify.debug('doLater: %s' % (taskName))
|
|
||||||
task.delayTime = delayTime
|
task.delayTime = delayTime
|
||||||
task.name = taskName
|
task.name = taskName
|
||||||
return self.__spawnDoLater(task)
|
return self.__spawnDoLater(task)
|
||||||
@ -386,8 +382,7 @@ class TaskManager:
|
|||||||
Add a new task to the taskMgr.
|
Add a new task to the taskMgr.
|
||||||
You can add a Task object or a method that takes one argument.
|
You can add a Task object or a method that takes one argument.
|
||||||
"""
|
"""
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('add: %s' % (name)))
|
||||||
TaskManager.notify.debug('add: %s' % (name))
|
|
||||||
if isinstance(funcOrTask, Task):
|
if isinstance(funcOrTask, Task):
|
||||||
funcOrTask.setPriority(priority)
|
funcOrTask.setPriority(priority)
|
||||||
return self.__spawnTaskNamed(funcOrTask, name)
|
return self.__spawnTaskNamed(funcOrTask, name)
|
||||||
@ -401,8 +396,7 @@ class TaskManager:
|
|||||||
return self.__spawnTaskNamed(task, name)
|
return self.__spawnTaskNamed(task, name)
|
||||||
|
|
||||||
def __spawnTaskNamed(self, task, name):
|
def __spawnTaskNamed(self, task, name):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('__spawnTaskNamed: %s' % (name)))
|
||||||
TaskManager.notify.debug('__spawnTaskNamed: %s' % (name))
|
|
||||||
# Init params
|
# Init params
|
||||||
task.name = name
|
task.name = name
|
||||||
task.setStartTimeFrame(self.currentTime, self.currentFrame)
|
task.setStartTimeFrame(self.currentTime, self.currentFrame)
|
||||||
@ -413,8 +407,7 @@ class TaskManager:
|
|||||||
return task
|
return task
|
||||||
|
|
||||||
def __addPendingTask(self, task):
|
def __addPendingTask(self, task):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('__addPendingTask: %s' % (task.name)))
|
||||||
TaskManager.notify.debug('__addPendingTask: %s' % (task.name))
|
|
||||||
pri = task.getPriority()
|
pri = task.getPriority()
|
||||||
taskPriList = ifAbsentPut(self.pendingTaskDict, pri, TaskPriorityList(pri))
|
taskPriList = ifAbsentPut(self.pendingTaskDict, pri, TaskPriorityList(pri))
|
||||||
taskPriList.add(task)
|
taskPriList.add(task)
|
||||||
@ -483,8 +476,7 @@ class TaskManager:
|
|||||||
standard shell globbing characters like *, ?, and [].
|
standard shell globbing characters like *, ?, and [].
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('removing tasks matching: ' + taskPattern))
|
||||||
TaskManager.notify.debug('removing tasks matching: ' + taskPattern)
|
|
||||||
num = 0
|
num = 0
|
||||||
keyList = filter(lambda key: fnmatch.fnmatchcase(key, taskPattern), self.nameDict.keys())
|
keyList = filter(lambda key: fnmatch.fnmatchcase(key, taskPattern), self.nameDict.keys())
|
||||||
for key in keyList:
|
for key in keyList:
|
||||||
@ -494,7 +486,7 @@ class TaskManager:
|
|||||||
def __removeTasksEqual(self, task):
|
def __removeTasksEqual(self, task):
|
||||||
# Remove this task from the nameDict (should be a short list)
|
# Remove this task from the nameDict (should be a short list)
|
||||||
if self.__removeTaskFromNameDict(task):
|
if self.__removeTaskFromNameDict(task):
|
||||||
TaskManager.notify.debug('__removeTasksEqual: removing task: %s' % (task))
|
assert(TaskManager.notify.debug('__removeTasksEqual: removing task: %s' % (task)))
|
||||||
# Flag the task for removal from the real list
|
# Flag the task for removal from the real list
|
||||||
task.remove()
|
task.remove()
|
||||||
# Cleanup stuff
|
# Cleanup stuff
|
||||||
@ -506,8 +498,7 @@ class TaskManager:
|
|||||||
def __removeTasksNamed(self, taskName):
|
def __removeTasksNamed(self, taskName):
|
||||||
if not self.nameDict.has_key(taskName):
|
if not self.nameDict.has_key(taskName):
|
||||||
return 0
|
return 0
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('__removeTasksNamed: removing tasks named: %s' % (taskName)))
|
||||||
TaskManager.notify.debug('__removeTasksNamed: removing tasks named: %s' % (taskName))
|
|
||||||
for task in self.nameDict[taskName]:
|
for task in self.nameDict[taskName]:
|
||||||
# Flag for removal
|
# Flag for removal
|
||||||
task.remove()
|
task.remove()
|
||||||
@ -572,7 +563,7 @@ class TaskManager:
|
|||||||
break
|
break
|
||||||
# See if this task has been removed in show code
|
# See if this task has been removed in show code
|
||||||
if task.isRemoved():
|
if task.isRemoved():
|
||||||
TaskManager.notify.debug('__stepThroughList: task is flagged for removal %s' % (task))
|
assert(TaskManager.notify.debug('__stepThroughList: task is flagged for removal %s' % (task)))
|
||||||
task.finishTask(self.fVerbose)
|
task.finishTask(self.fVerbose)
|
||||||
taskPriList.remove(i)
|
taskPriList.remove(i)
|
||||||
# Do not increment the iterator
|
# Do not increment the iterator
|
||||||
@ -584,15 +575,15 @@ class TaskManager:
|
|||||||
# Leave it for next frame, its not done yet
|
# Leave it for next frame, its not done yet
|
||||||
pass
|
pass
|
||||||
elif ((ret == done) or (ret == exit)):
|
elif ((ret == done) or (ret == exit)):
|
||||||
TaskManager.notify.debug('__stepThroughList: task is finished %s' % (task))
|
assert(TaskManager.notify.debug('__stepThroughList: task is finished %s' % (task)))
|
||||||
# Remove the task
|
# Remove the task
|
||||||
if not task.isRemoved():
|
if not task.isRemoved():
|
||||||
TaskManager.notify.debug('__stepThroughList: task not removed %s' % (task))
|
assert(TaskManager.notify.debug('__stepThroughList: task not removed %s' % (task)))
|
||||||
task.remove()
|
task.remove()
|
||||||
task.finishTask(self.fVerbose)
|
task.finishTask(self.fVerbose)
|
||||||
self.__removeTaskFromNameDict(task)
|
self.__removeTaskFromNameDict(task)
|
||||||
else:
|
else:
|
||||||
TaskManager.notify.debug('__stepThroughList: task already removed %s' % (task))
|
assert(TaskManager.notify.debug('__stepThroughList: task already removed %s' % (task)))
|
||||||
self.__removeTaskFromNameDict(task)
|
self.__removeTaskFromNameDict(task)
|
||||||
taskPriList.remove(i)
|
taskPriList.remove(i)
|
||||||
# Do not increment the iterator
|
# Do not increment the iterator
|
||||||
@ -603,8 +594,7 @@ class TaskManager:
|
|||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
def step(self):
|
def step(self):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('step: begin'))
|
||||||
TaskManager.notify.debug('step: begin')
|
|
||||||
self.currentTime, self.currentFrame = self.__getTimeFrame()
|
self.currentTime, self.currentFrame = self.__getTimeFrame()
|
||||||
# Replace keyboard interrupt handler during task list processing
|
# Replace keyboard interrupt handler during task list processing
|
||||||
# so we catch the keyboard interrupt but don't handle it until
|
# so we catch the keyboard interrupt but don't handle it until
|
||||||
@ -616,13 +606,13 @@ class TaskManager:
|
|||||||
# Traverse the task list in order because it is in priority order
|
# Traverse the task list in order because it is in priority order
|
||||||
for taskPriList in self.taskList:
|
for taskPriList in self.taskList:
|
||||||
pri = taskPriList.getPriority()
|
pri = taskPriList.getPriority()
|
||||||
TaskManager.notify.debug('step: running through taskList at pri: %s' % (pri))
|
assert(TaskManager.notify.debug('step: running through taskList at pri: %s' % (pri)))
|
||||||
self.__stepThroughList(taskPriList)
|
self.__stepThroughList(taskPriList)
|
||||||
|
|
||||||
# Now see if that generated any pending tasks for this taskPriList
|
# Now see if that generated any pending tasks for this taskPriList
|
||||||
pendingTasks = self.pendingTaskDict.get(pri, [])
|
pendingTasks = self.pendingTaskDict.get(pri, [])
|
||||||
while pendingTasks:
|
while pendingTasks:
|
||||||
TaskManager.notify.debug('step: running through pending tasks at pri: %s' % (pri))
|
assert(TaskManager.notify.debug('step: running through pending tasks at pri: %s' % (pri)))
|
||||||
# Remove them from the pendingTaskDict
|
# Remove them from the pendingTaskDict
|
||||||
del self.pendingTaskDict[pri]
|
del self.pendingTaskDict[pri]
|
||||||
# Execute them
|
# Execute them
|
||||||
@ -630,7 +620,7 @@ class TaskManager:
|
|||||||
# Add these to the real taskList
|
# Add these to the real taskList
|
||||||
for task in pendingTasks:
|
for task in pendingTasks:
|
||||||
if (task and not task.isRemoved()):
|
if (task and not task.isRemoved()):
|
||||||
TaskManager.notify.debug('step: moving %s from pending to taskList' % (task.name))
|
assert(TaskManager.notify.debug('step: moving %s from pending to taskList' % (task.name)))
|
||||||
self.__addNewTask(task)
|
self.__addNewTask(task)
|
||||||
# See if we generated any more for this pri level
|
# See if we generated any more for this pri level
|
||||||
pendingTasks = self.pendingTaskDict.get(pri, [])
|
pendingTasks = self.pendingTaskDict.get(pri, [])
|
||||||
@ -640,8 +630,7 @@ class TaskManager:
|
|||||||
for taskList in self.pendingTaskDict.values():
|
for taskList in self.pendingTaskDict.values():
|
||||||
for task in taskList:
|
for task in taskList:
|
||||||
if (task and not task.isRemoved()):
|
if (task and not task.isRemoved()):
|
||||||
if TaskManager.notify.getDebug():
|
assert(TaskManager.notify.debug('step: moving %s from pending to taskList' % (task.name)))
|
||||||
TaskManager.notify.debug('step: moving %s from pending to taskList' % (task.name))
|
|
||||||
self.__addNewTask(task)
|
self.__addNewTask(task)
|
||||||
self.pendingTaskDict.clear()
|
self.pendingTaskDict.clear()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user