*** empty log message ***

This commit is contained in:
Joe Shochet 2002-02-08 01:16:45 +00:00
parent cdc73110ad
commit de41ee6447
33 changed files with 305 additions and 458 deletions

View File

@ -301,12 +301,18 @@ class Actor(PandaObject, NodePath):
def getPartBundleDict(self):
return self.__partBundleDict
def getLODNames(self):
"""getLODNames(self):
Return list of Actor LOD names. If not an LOD actor,
returns 'lodRoot'"""
return self.__partBundleDict.keys()
returns 'lodRoot'
Sorts them from highest lod to lowest.
"""
lodNames = self.__partBundleDict.keys()
# Reverse sort the doing a string->int
lodNames.sort(lambda x,y : cmp(int(y), int(x)))
return lodNames
def getPartNames(self):
"""getPartNames(self):

View File

@ -92,7 +92,7 @@ class ClusterManager(DirectObject.DirectObject):
def startMoveCamTask(self):
task = Task.Task(self.moveCameraTask,49)
taskMgr.spawnTaskNamed(task, "moveCamTask")
taskMgr.add(task, "moveCamTask")
return None
def moveCameraTask(self,task):
@ -113,7 +113,7 @@ class ClusterManagerSync(ClusterManager):
def startSwapCoordinatorTask(self):
task = Task.Task(self.swapCoordinator,51)
taskMgr.spawnTaskNamed(task, "clientSwapCoordinator")
taskMgr.add(task, "clientSwapCoordinator")
return None
def swapCoordinator(self,task):

View File

@ -45,7 +45,7 @@ class ClusterServer(DirectObject.DirectObject):
def startListenerPollTask(self):
task = Task.Task(self.listenerPoll)
taskMgr.spawnTaskNamed(task, "serverListenerPollTask")
taskMgr.add(task, "serverListenerPollTask")
return None
def listenerPoll(self, task):
@ -69,7 +69,7 @@ class ClusterServer(DirectObject.DirectObject):
def startReaderPollTask(self):
task = Task.Task(self.readerPollUntilEmpty,-10)
taskMgr.spawnTaskNamed(task, "serverReaderPollTask")
taskMgr.add(task, "serverReaderPollTask")
return None
def readerPollUntilEmpty(self, task):
@ -144,7 +144,7 @@ class ClusterServerSync(ClusterServer):
def startListenerPollTask(self):
task = Task.Task(self.listenerPoll,-2)
taskMgr.spawnTaskNamed(task, "serverListenerPollTask")
taskMgr.add(task, "serverListenerPollTask")
return None
def listenerPoll(self, task):
@ -175,7 +175,7 @@ class ClusterServerSync(ClusterServer):
def startReaderPollTask(self):
task = Task.Task(self.readPos,-1)
taskMgr.spawnTaskNamed(task, "serverReadPosTask")
taskMgr.add(task, "serverReadPosTask")
return None
def readPos(self, task):
@ -202,7 +202,7 @@ class ClusterServerSync(ClusterServer):
def startSwapCoordinator(self):
task = Task.Task(self.swapCoordinatorTask, 51)
taskMgr.spawnTaskNamed(task, "serverSwapCoordinator")
taskMgr.add(task, "serverSwapCoordinator")
return None
def swapCoordinatorTask(self, task):

View File

@ -45,10 +45,10 @@ class DirectFastrak(PandaObject):
# Initialize tracker
self.tracker = direct.deviceManager.createTracker(self.device)
# Update task
taskMgr.spawnMethodNamed(self.updateTask, self.name + '-updateTask')
taskMgr.add(self.updateTask, self.name + '-updateTask')
def disable(self):
taskMgr.removeTasksNamed(self.name + '-updateTask')
taskMgr.remove(self.name + '-updateTask')
def destroy(self):
self.disable()

View File

@ -80,10 +80,10 @@ class DirectJoybox(PandaObject):
self.acceptSwitchModeEvent()
self.acceptUprightCameraEvent()
# Update task
taskMgr.spawnMethodNamed(self.updateTask, self.name + '-updateTask')
taskMgr.add(self.updateTask, self.name + '-updateTask')
def disable(self):
taskMgr.removeTasksNamed(self.name + '-updateTask')
taskMgr.remove(self.name + '-updateTask')
# Ignore button events
self.ignoreSwitchModeEvent()
self.ignoreUprightCameraEvent()
@ -189,7 +189,7 @@ class DirectJoybox(PandaObject):
def hideText(state, s = self):
s.readout.setText('')
return Task.done
taskMgr.removeTasksNamed(self.name + '-showMode')
taskMgr.remove(self.name + '-showMode')
# Update display
self.readout.setText(modeText)
t = taskMgr.doMethodLater(3.0, hideText, self.name + '-showMode')

View File

@ -46,10 +46,10 @@ class DirectRadamec(PandaObject):
# Kill existing task
self.disable()
# Update task
taskMgr.spawnMethodNamed(self.updateTask, self.name + '-updateTask')
taskMgr.add(self.updateTask, self.name + '-updateTask')
def disable(self):
taskMgr.removeTasksNamed(self.name + '-updateTask')
taskMgr.remove(self.name + '-updateTask')
def destroy(self):
self.disable()

View File

@ -84,7 +84,7 @@ class DirectCameraControl(PandaObject):
self.spawnMouseRotateTask()
def mouseFlyStop(self):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
stopT = globalClock.getFrameTime()
deltaT = stopT - self.startT
stopF = globalClock.getFrameCount()
@ -111,39 +111,39 @@ class DirectCameraControl(PandaObject):
def spawnXZTranslateOrHPanYZoom(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Spawn the new task
t = Task.Task(self.XZTranslateOrHPanYZoomTask)
# For HPanYZoom
t.zoomSF = Vec3(self.coaMarker.getPos(direct.camera)).length()
taskMgr.spawnTaskNamed(t, 'manipulateCamera')
taskMgr.add(t, 'manipulateCamera')
def spawnXZTranslateOrHPPan(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Spawn new task
taskMgr.spawnMethodNamed(self.XZTranslateOrHPPanTask,
'manipulateCamera')
taskMgr.add(self.XZTranslateOrHPPanTask,
'manipulateCamera')
def spawnXZTranslate(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Spawn new task
taskMgr.spawnMethodNamed(self.XZTranslateTask, 'manipulateCamera')
taskMgr.add(self.XZTranslateTask, 'manipulateCamera')
def spawnHPanYZoom(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Spawn new task
t = Task.Task(self.HPanYZoomTask)
t.zoomSF = Vec3(self.coaMarker.getPos(direct.camera)).length()
taskMgr.spawnTaskNamed(t, 'manipulateCamera')
taskMgr.add(t, 'manipulateCamera')
def spawnHPPan(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Spawn new task
taskMgr.spawnMethodNamed(self.HPPanTask, 'manipulateCamera')
taskMgr.add(self.HPPanTask, 'manipulateCamera')
def XZTranslateOrHPanYZoomTask(self, state):
if direct.fShift:
@ -205,7 +205,7 @@ class DirectCameraControl(PandaObject):
def spawnMouseRotateTask(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Set at markers position in render coordinates
self.camManipRef.setPos(self.coaMarkerPos)
self.camManipRef.setHpr(direct.camera, ZERO_POINT)
@ -214,7 +214,7 @@ class DirectCameraControl(PandaObject):
t.constrainedDir = 'y'
else:
t.constrainedDir = 'x'
taskMgr.spawnTaskNamed(t, 'manipulateCamera')
taskMgr.add(t, 'manipulateCamera')
def mouseRotateTask(self, state):
# If moving outside of center, ignore motion perpendicular to edge
@ -245,7 +245,7 @@ class DirectCameraControl(PandaObject):
def spawnMouseRollTask(self):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Set at markers position in render coordinates
self.camManipRef.setPos(self.coaMarkerPos)
self.camManipRef.setHpr(direct.camera, ZERO_POINT)
@ -253,7 +253,7 @@ class DirectCameraControl(PandaObject):
t.coaCenter = getScreenXY(self.coaMarker)
t.lastAngle = getCrankAngle(t.coaCenter)
t.wrtMat = direct.camera.getMat( self.camManipRef )
taskMgr.spawnTaskNamed(t, 'manipulateCamera')
taskMgr.add(t, 'manipulateCamera')
def mouseRollTask(self, state):
wrtMat = state.wrtMat
@ -383,7 +383,7 @@ class DirectCameraControl(PandaObject):
self.updateCoaMarkerSize()
def uprightCam(self):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
# Pitch camera till upright
@ -395,7 +395,7 @@ class DirectCameraControl(PandaObject):
task = 'manipulateCamera')
def orbitUprightCam(self):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
# Transform camera z axis to render space
@ -439,7 +439,7 @@ class DirectCameraControl(PandaObject):
self.centerCamIn(0.)
def centerCamIn(self, t):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
# Determine marker location
@ -456,7 +456,7 @@ class DirectCameraControl(PandaObject):
t.uponDeath = self.updateCoaMarkerSizeOnDeath
def zoomCam(self, zoomFactor, t):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
# Find a point zoom factor times the current separation
@ -474,7 +474,7 @@ class DirectCameraControl(PandaObject):
def spawnMoveToView(self, view):
# Kill any existing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
# Calc hprOffset
@ -525,7 +525,7 @@ class DirectCameraControl(PandaObject):
def swingCamAboutWidget(self, degrees, t):
# Remove existing camera manipulation task
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# Record undo point
direct.pushUndo([direct.camera])
@ -553,7 +553,7 @@ class DirectCameraControl(PandaObject):
def fitOnWidget(self, nodePath = 'None Given'):
# Fit the node on the screen
# stop any ongoing tasks
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
# How big is the node?
nodeScale = direct.widget.scalingNode.getScale(render)
maxScale = max(nodeScale[0],nodeScale[1],nodeScale[2])
@ -601,16 +601,16 @@ class DirectCameraControl(PandaObject):
# Push state onto undo stack
direct.pushUndo(direct.selected)
# Remove the task to keep the widget attached to the object
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
# Spawn a task to keep the selected objects with the widget
taskMgr.spawnMethodNamed(self.stickToWidgetTask, 'stickToWidget')
taskMgr.add(self.stickToWidgetTask, 'stickToWidget')
# Spawn a task to move the widget
t = direct.widget.lerpPos(Point3(centerVec),
CAM_MOVE_DURATION,
other = direct.camera,
blendType = 'easeInOut',
task = 'moveToFitTask')
t.uponDeath = lambda state: taskMgr.removeTasksNamed('stickToWidget')
t.uponDeath = lambda state: taskMgr.remove('stickToWidget')
def stickToWidgetTask(self, state):
# Move the objects with the widget
@ -636,5 +636,5 @@ class DirectCameraControl(PandaObject):
base.enableMouse()
def removeManipulateCameraTask(self):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')

View File

@ -52,7 +52,7 @@ class DirectManipulationControl(PandaObject):
self.constraint = None
# Check to see if we are moving the object
# We are moving the object if we either wait long enough
taskMgr.spawnTaskNamed(
taskMgr.add(
Task.doLater(MANIPULATION_MOVE_DELAY,
Task.Task(self.switchToMoveMode),
'manip-move-wait'),
@ -62,10 +62,10 @@ class DirectManipulationControl(PandaObject):
watchMouseTask = Task.Task(self.watchMouseTask)
watchMouseTask.initX = direct.dr.mouseX
watchMouseTask.initY = direct.dr.mouseY
taskMgr.spawnTaskNamed(watchMouseTask, 'manip-watch-mouse')
taskMgr.add(watchMouseTask, 'manip-watch-mouse')
def switchToMoveMode(self, state):
taskMgr.removeTasksNamed('manip-watch-mouse')
taskMgr.remove('manip-watch-mouse')
self.mode = 'move'
self.manipulateObject()
return Task.done
@ -73,7 +73,7 @@ class DirectManipulationControl(PandaObject):
def watchMouseTask(self, state):
if (((abs (state.initX - direct.dr.mouseX)) > 0.01) or
((abs (state.initY - direct.dr.mouseY)) > 0.01)):
taskMgr.removeTasksNamed('manip-move-wait')
taskMgr.remove('manip-move-wait')
self.mode = 'move'
self.manipulateObject()
return Task.done
@ -81,9 +81,9 @@ class DirectManipulationControl(PandaObject):
return Task.cont
def manipulationStop(self):
taskMgr.removeTasksNamed('manipulateObject')
taskMgr.removeTasksNamed('manip-move-wait')
taskMgr.removeTasksNamed('manip-watch-mouse')
taskMgr.remove('manipulateObject')
taskMgr.remove('manip-move-wait')
taskMgr.remove('manip-watch-mouse')
# depending on flag.....
if self.mode == 'select':
# Check for object under mouse
@ -123,7 +123,7 @@ class DirectManipulationControl(PandaObject):
if not direct.selected.last:
return
# Clear out old task to make sure
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
# Where are the object handles relative to the selected object
pos = VBase3(0)
hpr = VBase3(0)
@ -136,7 +136,7 @@ class DirectManipulationControl(PandaObject):
t.hpr = hpr
t.base = direct.selected.last
# Spawn the task
taskMgr.spawnTaskNamed(t, 'followSelectedNodePath')
taskMgr.add(t, 'followSelectedNodePath')
def followSelectedNodePathTask(self, state):
direct.widget.setPosHpr(state.base, state.pos, state.hpr)
@ -160,15 +160,15 @@ class DirectManipulationControl(PandaObject):
self.objectHandles.manipModeColor()
def removeManipulateObjectTask(self):
taskMgr.removeTasksNamed('manipulateObject')
taskMgr.remove('manipulateObject')
def manipulateObject(self):
# Only do this if something is selected
if direct.selected:
# Remove the task to keep the widget attached to the object
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
# and the task to highlight the widget
taskMgr.removeTasksNamed('highlightWidgetTask')
taskMgr.remove('highlightWidgetTask')
# Set manipulation flag
self.fManip = 1
# Record undo point
@ -204,7 +204,7 @@ class DirectManipulationControl(PandaObject):
# These are used to rotate about view vector
if t.fMouseX and t.fMouseY:
t.lastAngle = getCrankAngle(t.coaCenter)
taskMgr.spawnTaskNamed(t, 'manipulateObject')
taskMgr.add(t, 'manipulateObject')
def manipulateObjectTask(self, state):
# Widget takes precedence
@ -732,14 +732,14 @@ class ObjectHandles(NodePath,PandaObject):
self.setScale(1)
def multiplyScalingFactorBy(self, factor):
taskMgr.removeTasksNamed('resizeObjectHandles')
taskMgr.remove('resizeObjectHandles')
sf = self.ohScalingFactor = self.ohScalingFactor * factor
self.scalingNode.lerpScale(sf,sf,sf, 0.5,
blendType = 'easeInOut',
task = 'resizeObjectHandles')
def growToFit(self):
taskMgr.removeTasksNamed('resizeObjectHandles')
taskMgr.remove('resizeObjectHandles')
# Increase handles scale until they cover 30% of the min dimension
pos = direct.widget.getPos(direct.camera)
minDim = min(direct.dr.nearWidth, direct.dr.nearHeight)

View File

@ -417,10 +417,10 @@ class DirectSession(PandaObject):
# shrink the widget
self.widget.setScalingFactor(dnp.getRadius())
# Spawn task to have object handles follow the selected object
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
t = Task.Task(self.followSelectedNodePathTask)
t.dnp = dnp
taskMgr.spawnTaskNamed(t, 'followSelectedNodePath')
taskMgr.add(t, 'followSelectedNodePath')
# Send an message marking the event
messenger.send('DIRECT_selectedNodePath', [dnp])
@ -439,7 +439,7 @@ class DirectSession(PandaObject):
self.widget.hideWidget()
self.selectedNPReadout.reparentTo(hidden)
self.selectedNPReadout.setText(' ')
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
self.ancestry = []
# Send an message marking the event
messenger.send('DIRECT_deselectedNodePath', [dnp])
@ -450,7 +450,7 @@ class DirectSession(PandaObject):
self.widget.hideWidget()
self.selectedNPReadout.reparentTo(hidden)
self.selectedNPReadout.setText(' ')
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
def setActiveParent(self, nodePath = None):
# Record new parent
@ -486,7 +486,7 @@ class DirectSession(PandaObject):
def flash(self, nodePath = 'None Given'):
""" Highlight an object by setting it red for a few seconds """
# Clean up any existing task
taskMgr.removeTasksNamed('flashNodePath')
taskMgr.remove('flashNodePath')
# Spawn new task if appropriate
if nodePath == 'None Given':
# If nothing specified, try selected node path
@ -502,7 +502,7 @@ class DirectSession(PandaObject):
# Temporarily set node path color
nodePath.setColor(flashColor)
# Clean up color in a few seconds
t = taskMgr.spawnTaskNamed(
t = taskMgr.add(
Task.doLater(DIRECT_FLASH_DURATION,
# This is just a dummy task
Task.Task(self.flashDummy),
@ -537,7 +537,7 @@ class DirectSession(PandaObject):
def isolate(self, nodePath = 'None Given'):
""" Show a node path and hide its siblings """
# First kill the flashing task to avoid complications
taskMgr.removeTasksNamed('flashNodePath')
taskMgr.remove('flashNodePath')
# Use currently selected node path if node selected
if nodePath == 'None Given':
nodePath = self.selected.last
@ -551,7 +551,7 @@ class DirectSession(PandaObject):
def toggleVis(self, nodePath = 'None Given'):
""" Toggle visibility of node path """
# First kill the flashing task to avoid complications
taskMgr.removeTasksNamed('flashNodePath')
taskMgr.remove('flashNodePath')
if nodePath == 'None Given':
# If nothing specified, try selected node path
nodePath = self.selected.last
@ -691,8 +691,8 @@ class DirectSession(PandaObject):
# UTILITY FUNCTIONS
def message(self, text):
taskMgr.removeTasksNamed('hideDirectMessage')
taskMgr.removeTasksNamed('hideDirectMessageLater')
taskMgr.remove('hideDirectMessage')
taskMgr.remove('hideDirectMessageLater')
self.directMessageReadout.reparentTo(aspect2d)
self.directMessageReadout.setText(text)
self.hideDirectMessageLater()
@ -700,7 +700,7 @@ class DirectSession(PandaObject):
def hideDirectMessageLater(self):
seq = Task.doLater(3.0, Task.Task(self.hideDirectMessage),
'hideDirectMessage')
t = taskMgr.spawnTaskNamed(seq, 'hideDirectMessageLater')
t = taskMgr.add(seq, 'hideDirectMessageLater')
def hideDirectMessage(self, state):
self.directMessageReadout.reparentTo(hidden)
@ -831,14 +831,13 @@ class DisplayRegionList(PandaObject):
def stop(self):
# Kill the existing context task
taskMgr.removeTasksNamed('DIRECTContextTask')
taskMgr.remove('DIRECTContextTask')
def spawnContextTask(self):
taskMgr.spawnTaskNamed(Task.Task(self.contextTask),
'DIRECTContextTask')
taskMgr.add(self.contextTask, 'DIRECTContextTask')
def removeContextTask(self):
taskMgr.removeTasksNamed('DIRECTContextTask')
taskMgr.remove('DIRECTContextTask')
def contextTask(self, state):
# Window Data

View File

@ -18,8 +18,8 @@ def lerpBackgroundColor(r,g,b,duration):
b = sf * state.ec[2] + (1 - sf) * state.sc[2]
setBackgroundColor(r,g,b)
return Task.cont
taskMgr.removeTasksNamed('lerpBackgroundColor')
t = taskMgr.spawnMethodNamed(lerpColor, 'lerpBackgroundColor')
taskMgr.remove('lerpBackgroundColor')
t = taskMgr.add(lerpColor, 'lerpBackgroundColor')
t.time = 0.0
t.duration = duration
t.sc = base.win.getGsg().getColorClearValue()

View File

@ -106,12 +106,12 @@ class Mopath(PandaObject):
self.node = node
self.loop = loop
self.stop()
t = taskMgr.spawnMethodNamed(self.__playTask, self.name + '-play')
t = taskMgr.add(self.__playTask, self.name + '-play')
t.currentTime = time
t.lastTime = globalClock.getFrameTime()
def stop(self):
taskMgr.removeTasksNamed(self.name + '-play')
taskMgr.remove(self.name + '-play')
def __playTask(self, state):
time = globalClock.getFrameTime()

View File

@ -71,11 +71,11 @@ class ClientRepository(DirectObject.DirectObject):
task = Task.Task(self.rawReaderPollUntilEmpty)
# Start with empty string
task.currentRawString = ""
taskMgr.spawnTaskNamed(task, "rawReaderPollTask")
taskMgr.add(task, "rawReaderPollTask")
return None
def stopRawReaderPollTask(self):
taskMgr.removeTasksNamed("rawReaderPollTask")
taskMgr.remove("rawReaderPollTask")
return None
def rawReaderPollUntilEmpty(self, task):
@ -107,12 +107,11 @@ class ClientRepository(DirectObject.DirectObject):
# Stop any tasks we are running now
self.stopRawReaderPollTask()
self.stopReaderPollTask()
task = Task.Task(self.readerPollUntilEmpty)
taskMgr.spawnTaskNamed(task, "readerPollTask")
taskMgr.add(self.readerPollUntilEmpty, "readerPollTask")
return None
def stopReaderPollTask(self):
taskMgr.removeTasksNamed("readerPollTask")
taskMgr.remove("readerPollTask")
return None
def readerPollUntilEmpty(self, task):

View File

@ -122,9 +122,9 @@ class DistributedSmoothNode(DistributedNode.DistributedNode):
elif not self.smoothStarted:
taskName = self.taskName("smooth")
taskMgr.removeTasksNamed(taskName)
taskMgr.remove(taskName)
self.reloadPosition()
taskMgr.spawnMethodNamed(self.doSmoothTask, taskName)
taskMgr.add(self.doSmoothTask, taskName)
self.smoothStarted = 1
return
@ -137,7 +137,7 @@ class DistributedSmoothNode(DistributedNode.DistributedNode):
"""
if self.smoothStarted:
taskName = self.taskName("smooth")
taskMgr.removeTasksNamed(taskName)
taskMgr.remove(taskName)
self.forceToTruePosition()
self.smoothStarted = 0
return

View File

@ -1,103 +1,101 @@
"""ServerRepository module: contains the ServerRepository class"""
from PandaModules import *
from TaskManagerGlobal import *
from MsgTypes import *
import Task
import DirectNotifyGlobal
class ServerRepository:
def __init__(self, tcpPort, udpPort):
self.qcm = QueuedConnectionManager()
self.qcl = QueuedConnectionListener(self.qcm, 0)
self.qcr = QueuedConnectionReader(self.qcm, 0)
self.cw = ConnectionWriter(self.qcm,0)
self.tcpRendezvous = self.qcm.openTCPServerRendezvous(tcpPort, 10)
print self.tcpRendezvous
self.qcl.addConnection(self.tcpRendezvous)
self.startListenerPollTask()
self.startReaderPollTask()
self.startResetPollTask()
return None
def startListenerPollTask(self):
task = Task.Task(self.listenerPoll)
taskMgr.spawnTaskNamed(task, "serverListenerPollTask")
return None
def listenerPoll(self, task):
if self.qcl.newConnectionAvailable():
print "New connection is available"
rendezvous = PointerToConnection()
netAddress = NetAddress()
newConnection = PointerToConnection()
retVal = self.qcl.getNewConnection(rendezvous, netAddress,
newConnection)
if retVal:
# Crazy dereferencing
newConnection=newConnection.p()
self.qcr.addConnection(newConnection)
print "Got a connection!"
self.lastConnection = newConnection
else:
ServerRepository.notify.warning(
"getNewConnection returned false")
return Task.cont
def startReaderPollTask(self):
task = Task.Task(self.readerPollUntilEmpty)
taskMgr.spawnTaskNamed(task, "serverReaderPollTask")
return None
def readerPollUntilEmpty(self, task):
while self.readerPollOnce():
pass
return Task.cont
def readerPollOnce(self):
availGetVal = self.qcr.dataAvailable()
if availGetVal:
datagram = NetDatagram()
readRetVal = self.qcr.getData(datagram)
if readRetVal:
self.handleDatagram(datagram)
else:
ClientRepository.notify.warning("getData returned false")
return availGetVal
def handleDatagram(self, datagram):
print "Server got a datagram!"
dgi = DatagramIterator(datagram)
print dgi.getUint16()
print dgi.getString()
print dgi.getUint32()
print dgi.getUint16()
newDatagram = Datagram()
newDatagram.addUint16(LOGIN_RESPONSE)
newDatagram.addUint8(ord('s'))
self.cw.send(newDatagram, self.lastConnection)
return None
def sendAvatarGenerate(self):
datagram = Datagram()
# Message type is 1
datagram.addUint16(ALL_OBJECT_GENERATE_WITH_REQUIRED)
# Avatar class type is 2
datagram.addUint8(2)
# A sample id
datagram.addUint32(10)
# The only required field is the zone field
datagram.addUint32(999)
self.cw.send(datagram, self.lastConnection)
def startResetPollTask(self):
return None
def resetPollUntilEmpty(self):
return None
def resetPollOnce(self):
return None
"""ServerRepository module: contains the ServerRepository class"""
from PandaModules import *
from TaskManagerGlobal import *
from MsgTypes import *
import Task
import DirectNotifyGlobal
class ServerRepository:
def __init__(self, tcpPort, udpPort):
self.qcm = QueuedConnectionManager()
self.qcl = QueuedConnectionListener(self.qcm, 0)
self.qcr = QueuedConnectionReader(self.qcm, 0)
self.cw = ConnectionWriter(self.qcm,0)
self.tcpRendezvous = self.qcm.openTCPServerRendezvous(tcpPort, 10)
print self.tcpRendezvous
self.qcl.addConnection(self.tcpRendezvous)
self.startListenerPollTask()
self.startReaderPollTask()
self.startResetPollTask()
return None
def startListenerPollTask(self):
taskMgr.add(self.listenerPoll, "serverListenerPollTask")
return None
def listenerPoll(self, task):
if self.qcl.newConnectionAvailable():
print "New connection is available"
rendezvous = PointerToConnection()
netAddress = NetAddress()
newConnection = PointerToConnection()
retVal = self.qcl.getNewConnection(rendezvous, netAddress,
newConnection)
if retVal:
# Crazy dereferencing
newConnection=newConnection.p()
self.qcr.addConnection(newConnection)
print "Got a connection!"
self.lastConnection = newConnection
else:
ServerRepository.notify.warning(
"getNewConnection returned false")
return Task.cont
def startReaderPollTask(self):
taskMgr.add(self.readerPollUntilEmpty, "serverReaderPollTask")
return None
def readerPollUntilEmpty(self, task):
while self.readerPollOnce():
pass
return Task.cont
def readerPollOnce(self):
availGetVal = self.qcr.dataAvailable()
if availGetVal:
datagram = NetDatagram()
readRetVal = self.qcr.getData(datagram)
if readRetVal:
self.handleDatagram(datagram)
else:
ClientRepository.notify.warning("getData returned false")
return availGetVal
def handleDatagram(self, datagram):
print "Server got a datagram!"
dgi = DatagramIterator(datagram)
print dgi.getUint16()
print dgi.getString()
print dgi.getUint32()
print dgi.getUint16()
newDatagram = Datagram()
newDatagram.addUint16(LOGIN_RESPONSE)
newDatagram.addUint8(ord('s'))
self.cw.send(newDatagram, self.lastConnection)
return None
def sendAvatarGenerate(self):
datagram = Datagram()
# Message type is 1
datagram.addUint16(ALL_OBJECT_GENERATE_WITH_REQUIRED)
# Avatar class type is 2
datagram.addUint8(2)
# A sample id
datagram.addUint32(10)
# The only required field is the zone field
datagram.addUint32(999)
self.cw.send(datagram, self.lastConnection)
def startResetPollTask(self):
return None
def resetPollUntilEmpty(self):
return None
def resetPollOnce(self):
return None

View File

@ -319,7 +319,7 @@
return lerpTask
else:
# spawn the lerp task
taskMgr.spawnTaskNamed(lerpTask, taskName)
taskMgr.add(lerpTask, taskName)
return lerpTask
def __autoLerp(self, functorFunc, time, blendType, taskName):

View File

@ -789,18 +789,18 @@ class DirectGuiWidget(DirectGuiBase, NodePath):
#base.mouseWatcherNode.setModifierButtons(mb)
def editStart(self, event):
taskMgr.removeTasksNamed('guiEditTask')
taskMgr.remove('guiEditTask')
vWidget2render2d = self.getPos(render2d)
vMouse2render2d = Point3(event.getMouse()[0], 0, event.getMouse()[1])
editVec = Vec3(vWidget2render2d - vMouse2render2d)
if base.mouseWatcherNode.getModifierButtons().isDown(
KeyboardButton.control()):
t = taskMgr.spawnMethodNamed(self.guiScaleTask, 'guiEditTask')
t = taskMgr.add(self.guiScaleTask, 'guiEditTask')
t.refPos = vWidget2render2d
t.editVecLen = editVec.length()
t.initScale = self.getScale()
else:
t = taskMgr.spawnMethodNamed(self.guiDragTask, 'guiEditTask')
t = taskMgr.add(self.guiDragTask, 'guiEditTask')
t.editVec = editVec
def guiScaleTask(self, state):
@ -827,7 +827,7 @@ class DirectGuiWidget(DirectGuiBase, NodePath):
return Task.cont
def editStop(self, event):
taskMgr.removeTasksNamed('guiEditTask')
taskMgr.remove('guiEditTask')
def setState(self):
if type(self['state']) == type(0):

View File

@ -12,8 +12,8 @@ def dummyCmd(index):
# Define some commands to bind to enter, exit and click events
def shrink(db):
db['text2_text'] = 'Hi!'
taskMgr.removeTasksNamed('shrink')
taskMgr.removeTasksNamed('expand')
taskMgr.remove('shrink')
taskMgr.remove('expand')
# Get a handle on the geometry for the rollover state
rolloverSmiley = db.component('geom2')
rolloverSmiley.setScale(db.component('geom0').getScale()[0])
@ -22,17 +22,17 @@ def shrink(db):
def expand(db):
db['text0_text'] = 'Bye!'
taskMgr.removeTasksNamed('shrink')
taskMgr.removeTasksNamed('expand')
taskMgr.remove('shrink')
taskMgr.remove('expand')
db.component('geom0').setScale(db.component('geom2').getScale()[0])
db.component('geom0').lerpScale(1,1,1, 1, blendType = 'easeInOut',
task = 'expand')
db.component('geom2').clearColor()
def ouch(db):
taskMgr.removeTasksNamed('shrink')
taskMgr.removeTasksNamed('expand')
taskMgr.removeTasksNamed('runAway')
taskMgr.remove('shrink')
taskMgr.remove('expand')
taskMgr.remove('runAway')
db.component('geom0').setScale(db.component('geom2').getScale()[0])
db.component('geom1').setScale(db.component('geom2').getScale()[0])
db['text2_text'] = 'Ouch!'

View File

@ -61,7 +61,7 @@ class DirectScrolledList(DirectFrame):
self.numItemsVisible = self["numItemsVisible"]
def destroy(self):
taskMgr.removeTasksNamed(self.taskName("scroll"))
taskMgr.remove(self.taskName("scroll"))
DirectFrame.destroy(self)
def scrollBy(self, delta):
@ -122,7 +122,7 @@ class DirectScrolledList(DirectFrame):
task.prevTime = 0.0
task.delta = 1
self.scrollBy(task.delta)
taskMgr.spawnTaskNamed(task, self.taskName("scroll"))
taskMgr.add(task, self.taskName("scroll"))
def __decButtonDown(self, event):
task = Task.Task(self.__scrollByTask)
@ -130,10 +130,10 @@ class DirectScrolledList(DirectFrame):
task.prevTime = 0.0
task.delta = -1
self.scrollBy(task.delta)
taskMgr.spawnTaskNamed(task, self.taskName("scroll"))
taskMgr.add(task, self.taskName("scroll"))
def __buttonUp(self, event):
taskMgr.removeTasksNamed(self.taskName("scroll"))
taskMgr.remove(self.taskName("scroll"))
def addItem(self, item):
"""

View File

@ -94,7 +94,7 @@ class Interval(DirectObject):
t0 = self.duration
# Kill ongoing play task
taskMgr.removeTasksNamed(self.name + '-play')
taskMgr.remove(self.name + '-play')
# Start new one
self.offset = t0
self.startT = self.clock.getFrameTime()
@ -110,7 +110,7 @@ class Interval(DirectObject):
assert(t0 <= self.endTime)
# Spawn task
taskMgr.spawnMethodNamed(self.__playTask, self.name + '-play')
taskMgr.add(self.__playTask, self.name + '-play')
def loop(self, t0=0.0, duration=0.0, scale=1.0):
self.accept(self.name + '-loop', self.play,
@ -125,7 +125,7 @@ class Interval(DirectObject):
for stopEvent in self.stopEventList:
messenger.send(stopEvent)
# Kill task
taskMgr.removeTasksNamed(self.name + '-play')
taskMgr.remove(self.name + '-play')
# No more looping.
self.ignore(self.name + '-loop')
return self.curr_t
@ -188,7 +188,7 @@ class Interval(DirectObject):
# So when you drag scale with mouse its like you started a playback
def onPress(s=self,es=es):
# Kill playback task
taskMgr.removeTasksNamed(s.name + '-play')
taskMgr.remove(s.name + '-play')
# INIT interval
s.setT(es.get(), event = IVAL_INIT)
es.onPress = onPress

View File

@ -593,7 +593,7 @@ class LevelEditor(NodePath, PandaObject):
# Disable Pie Menu mouse interaction
self.disableMouse()
# Remove insertion marker task
taskMgr.removeTasksNamed('insertionMarkerTask')
taskMgr.remove('insertionMarkerTask')
def reset(self, fDeleteToplevel = 1, fCreateToplevel = 1,
fUpdateExplorer = 1):
@ -1369,7 +1369,7 @@ class LevelEditor(NodePath, PandaObject):
# Position it
# First kill autoposition task so grid can jump to its final
# destination (part of cleanup
taskMgr.removeTasksNamed('autoPositionGrid')
taskMgr.remove('autoPositionGrid')
# Now find where to put node path
if (hotKey is not None) and nodeClass.eq(DNA_PROP):
# If its a prop and a copy, place it based upon current
@ -2190,8 +2190,7 @@ class LevelEditor(NodePath, PandaObject):
self.insertionMarker.create()
def spawnInsertionMarkerTask(self):
t = Task.Task(self.insertionMarkerTask)
taskMgr.spawnTaskNamed(t, 'insertionMarkerTask')
taskMgr.add(self.insertionMarkerTask, 'insertionMarkerTask')
def insertionMarkerTask(self, state):
self.insertionMarker.setPosHpr(direct.grid, 0,0,0, 0,0,0)
@ -2227,7 +2226,7 @@ class LevelEditor(NodePath, PandaObject):
return 1
def autoPositionGrid(self):
taskMgr.removeTasksNamed('autoPositionGrid')
taskMgr.remove('autoPositionGrid')
# Move grid to prepare for placement of next object
selectedNode = direct.selected.last
if selectedNode:
@ -2266,12 +2265,12 @@ class LevelEditor(NodePath, PandaObject):
t.uponDeath = self.autoPositionCleanup
# Also move the camera
taskMgr.removeTasksNamed('autoMoveDelay')
taskMgr.remove('autoMoveDelay')
handlesToCam = direct.widget.getPos(direct.camera)
handlesToCam = handlesToCam * ( direct.dr.near/handlesToCam[1])
if ((abs(handlesToCam[0]) > (direct.dr.nearWidth * 0.4)) or
(abs(handlesToCam[2]) > (direct.dr.nearHeight * 0.4))):
taskMgr.removeTasksNamed('manipulateCamera')
taskMgr.remove('manipulateCamera')
direct.cameraControl.centerCamIn(0.5)
def autoPositionCleanup(self,state):

View File

@ -35,13 +35,13 @@ class PieMenu(NodePath, PandaObject):
self.action(value)
def removePieMenuTask(self):
taskMgr.removeTasksNamed('pieMenuTask')
taskMgr.remove('pieMenuTask')
self.reparentTo(hidden)
self.lines.reset()
def spawnPieMenuTask(self):
# Make sure no errant tasks lying around
taskMgr.removeTasksNamed('pieMenuTask')
taskMgr.remove('pieMenuTask')
# Where did the user press the button?
self.originX = direct.dr.mouseX
@ -61,8 +61,7 @@ class PieMenu(NodePath, PandaObject):
# Spawn task to update line and select new texture
self.currItem = -1
t = Task.Task(self.pieMenuTask)
taskMgr.spawnTaskNamed(t, 'pieMenuTask')
taskMgr.add(self.pieMenuTask, 'pieMenuTask')
def pieMenuTask(self,state):
mouseX = direct.dr.mouseX

View File

@ -73,7 +73,7 @@ class EventManager:
def restart(self):
taskMgr.spawnTaskNamed(Task.Task(self.eventLoop), 'eventManager')
taskMgr.add(self.eventLoop, 'eventManager')
def shutdown(self):
taskMgr.removeTasksNamed('eventManager')
taskMgr.remove('eventManager')

View File

@ -437,15 +437,14 @@ class ShowBase:
"""enableParticles(self)"""
self.particleMgrEnabled = 1
self.physicsMgrEnabled = 1
self.taskMgr.removeTasksNamed('manager-update')
self.taskMgr.spawnTaskNamed(Task.Task(self.updateManagers),
'manager-update')
self.taskMgr.remove('manager-update')
self.taskMgr.add(self.updateManagers, 'manager-update')
def disableParticles(self):
"""enableParticles(self)"""
self.particleMgrEnabled = 0
self.physicsMgrEnabled = 0
self.taskMgr.removeTasksNamed('manager-update')
self.taskMgr.remove('manager-update')
def toggleParticles(self):
if self.particleMgrEnabled == 0:
@ -555,15 +554,15 @@ class ShowBase:
self.shutdown()
# give the igloop task a reasonably "late" priority,
# so that it will get run after most tasks
self.taskMgr.spawnTaskNamed(Task.Task(self.igloop, 50), 'igloop')
self.taskMgr.add(self.igloop, 'igloop', priority = 50)
# give the dataloop task a reasonably "early" priority,
# so that it will get run before most tasks
self.taskMgr.spawnTaskNamed(Task.Task(self.dataloop, -50), 'dataloop')
self.taskMgr.add(self.dataloop, 'dataloop', priority = -50)
self.eventMgr.restart()
def shutdown(self):
self.taskMgr.removeTasksNamed('igloop')
self.taskMgr.removeTasksNamed('dataloop')
self.taskMgr.remove('igloop')
self.taskMgr.remove('dataloop')
self.eventMgr.shutdown()
def toggleBackface(self):
@ -834,7 +833,7 @@ class ShowBase:
"""
globalClock.setMode(ClockObject.MNonRealTime)
globalClock.setDt(1.0/float(fps))
t = taskMgr.spawnMethodNamed(self._movieTask, namePrefix + '_task')
t = taskMgr.add(self._movieTask, namePrefix + '_task')
t.endT = globalClock.getFrameTime() + duration
t.frameIndex = 1
t.outputString = namePrefix + '_%0' + `sd` + 'd.' + format

View File

@ -5,8 +5,6 @@ import Pmw
import __builtin__
__builtin__.tkroot = Pmw.initialise()
import Task
def tkloop(self):
# Do all the tkinter events waiting on this frame
# dooneevent will return 0 if there are no more events
@ -21,6 +19,6 @@ def tkloop(self):
from TaskManagerGlobal import *
# Spawn this task
taskMgr.spawnTaskNamed(Task.Task(tkloop), "tkloop")
taskMgr.add(tkloop, "tkloop")

View File

@ -48,7 +48,7 @@ class Transitions:
Task.Task(self.__fadeInLerpDone))
# Spawn the sequence
if not block:
taskMgr.spawnTaskNamed(task, self.fadeTaskName)
taskMgr.add(task, self.fadeTaskName)
else:
return task
@ -57,7 +57,7 @@ class Transitions:
As a sequence: Fade in, execute the given task
"""
seq = Task.sequence(self.fadeIn(time, block=1), task)
taskMgr.spawnTaskNamed(seq, 'fadeInTaskSeq')
taskMgr.add(seq, 'fadeInTaskSeq')
def fadeOut(self, t=0.5, block=0):
"""
@ -125,13 +125,13 @@ class Transitions:
seq = Task.sequence(self.fadeOut(time, block=1), task)
# do it
taskMgr.spawnTaskNamed(seq, 'fadeOutTaskSeq')
taskMgr.add(seq, 'fadeOutTaskSeq')
def noFade(self):
"""
Removes any current fade tasks and parents the fade polygon away
"""
taskMgr.removeTasksNamed(self.fadeTaskName)
taskMgr.remove(self.fadeTaskName)
if self.fade != None:
self.fade.reparentTo(hidden)
@ -164,7 +164,7 @@ class Transitions:
Task.Task(self.__irisInLerpDone))
# Spawn the sequence
if not block:
taskMgr.spawnTaskNamed(task, self.irisTaskName)
taskMgr.add(task, self.irisTaskName)
else:
return task
@ -173,7 +173,7 @@ class Transitions:
As a sequence: iris in, execute the given task
"""
seq = Task.sequence(self.irisIn(time, block=1), task)
taskMgr.spawnTaskNamed(seq, 'irisInTaskSeq')
taskMgr.add(seq, 'irisInTaskSeq')
def irisOutLerpDone(self, task):
# This is a helper function to the fadeIn sequence
@ -207,7 +207,7 @@ class Transitions:
Task.Task(self.irisOutLerpDone))
# Spawn the sequence
if not block:
taskMgr.spawnTaskNamed(task, self.irisTaskName)
taskMgr.add(task, self.irisTaskName)
else:
return task
@ -227,13 +227,13 @@ class Transitions:
seq = Task.sequence(self.irisOut(time, block=1), task)
# do it
taskMgr.spawnTaskNamed(seq, 'irisOutTaskSeq')
taskMgr.add(seq, 'irisOutTaskSeq')
def noIris(self):
"""
Removes any current iris tasks and parents the iris polygon away
"""
taskMgr.removeTasksNamed(self.irisTaskName)
taskMgr.remove(self.irisTaskName)
if self.iris != None:
self.iris.reparentTo(hidden)

View File

@ -53,18 +53,6 @@ def print_exc_plus():
# Store the global clock
globalClock = ClockObject.getGlobalClock()
def getTimeFrame():
# WARNING: If you are testing tasks without an igloop,
# you must manually tick the clock
# Ask for the time last frame
t = globalClock.getFrameTime()
# Get the new frame count
f = globalClock.getFrameCount()
return t, f
class Task:
count = 0
@ -120,17 +108,6 @@ def pause(delayTime):
task.delayTime = delayTime
return task
def release():
def func(self):
# A release is immediately done
# TaskManager.notify.debug('release done: ' + self.name)
return done
task = Task(func)
task.name = 'release'
return task
def sequence(*taskList):
return make_sequence(taskList)
@ -240,66 +217,6 @@ def make_loop(taskList):
return task
def makeSpawner(task, taskName, taskMgr):
def func(self):
self.taskMgr.spawnTaskNamed(self.task, self.taskName)
return done
newTask = Task(func)
newTask.name = taskName + "-spawner"
newTask.task = task
newTask.taskName = taskName
newTask.taskMgr = taskMgr
return newTask
def makeSequenceFromTimeline(timelineList, taskMgr):
timeline = []
lastPause = 0
sortedList = list(timelineList)
sortedList.sort()
for triple in sortedList:
t = triple[0] - lastPause
lastPause = triple[0]
task = triple[1]
taskName = triple[2]
timeline.append(pause(t))
timeline.append(makeSpawner(task, taskName, taskMgr))
return make_sequence(timeline)
def timeline(*timelineList):
def func(self):
# Step our sub task manager (returns the number of tasks remaining)
lenTaskList = self.taskMgr.step()
# The sequence start time is the same as our start time
self.sequence.time = self.time
self.sequence.frame = self.frame
if (not self.sequenceDone):
# Execute the sequence for this frame
seqRet = self.sequence(self.sequence)
# See if sequence is done
if (seqRet == done):
self.sequenceDone = 1
# See if the timeline is done
if (lenTaskList == 0):
# TaskManager.notify.debug('timeline done: ' + self.name)
return done
else:
return cont
else:
return cont
else:
return cont
task = Task(func)
task.name = 'timeline'
task.taskMgr = TaskManager()
task.sequence = makeSequenceFromTimeline(timelineList, task.taskMgr)
task.sequenceDone = 0
return task
class TaskManager:
notify = None
@ -308,7 +225,7 @@ class TaskManager:
self.running = 0
self.stepping = 0
self.taskList = []
self.currentTime, self.currentFrame = getTimeFrame()
self.currentTime, self.currentFrame = self.__getTimeFrame()
if (TaskManager.notify == None):
TaskManager.notify = directNotify.newCategory("TaskManager")
self.taskTimerVerbose = 0
@ -324,11 +241,32 @@ class TaskManager:
self.fVerbose = value
messenger.send('TaskManager-setVerbose', sentArgs = [value])
def spawnMethodNamed(self, func, name):
task = Task(func)
return self.spawnTaskNamed(task, name)
def add(self, funcOrTask, name, priority = 0):
"""
Add a new task to the taskMgr.
You can add a Task object or a method that takes one argument.
"""
if isinstance(funcOrTask, Task):
funcOrTask.setPriority(priority)
return self.__spawnTaskNamed(funcOrTask, name)
elif callable(funcOrTask):
return self.__spawnMethodNamed(funcOrTask, name, priority)
else:
self.notify.error('Tried to add a task that was not a Task or a func')
def spawnTaskNamed(self, task, name):
def remove(self, taskOrName):
if type(taskOrName) == type(''):
return self.__removeTasksNamed(taskOrName)
elif isinstance(taskOrName, Task):
return self.__removeTask(taskOrName)
else:
self.notify.error('remove takes a string or a Task')
def __spawnMethodNamed(self, func, name, priority=0):
task = Task(func, priority)
return self.__spawnTaskNamed(task, name)
def __spawnTaskNamed(self, task, name):
if TaskManager.notify.getDebug():
TaskManager.notify.debug('spawning task named: ' + name)
task.name = name
@ -368,17 +306,11 @@ class TaskManager:
task = Task(func)
seq = doLater(delayTime, task, taskName)
seq.laterTask = task
return self.spawnTaskNamed(seq, 'doLater-' + taskName)
return self.__spawnTaskNamed(seq, taskName)
def removeAllTasks(self):
# Make a shallow copy so we do not modify the list in place
taskListCopy = self.taskList[:]
for task in taskListCopy:
self.removeTask(task)
def removeTask(self, task):
# if TaskManager.notify.getDebug():
# TaskManager.notify.debug('removing task: ' + `task`)
def __removeTask(self, task):
if TaskManager.notify.getDebug():
TaskManager.notify.debug('removing task: ' + `task`)
if task in self.taskList:
self.taskList.remove(task)
if task.uponDeath:
@ -388,7 +320,7 @@ class TaskManager:
messenger.send('TaskManager-removeTask',
sentArgs = [task, task.name])
def removeTasksNamed(self, taskName):
def __removeTasksNamed(self, taskName):
if TaskManager.notify.getDebug():
TaskManager.notify.debug('removing tasks named: ' + taskName)
@ -400,7 +332,7 @@ class TaskManager:
# Now iterate through the tasks we need to remove and remove them
for task in removedTasks:
self.removeTask(task)
self.__removeTask(task)
# Return the number of tasks removed
return len(removedTasks)
@ -429,7 +361,7 @@ class TaskManager:
# Now iterate through the tasks we need to remove and remove them
for task in removedTasks:
self.removeTask(task)
self.__removeTask(task)
# Return the number of tasks removed
return len(removedTasks)
@ -437,7 +369,7 @@ class TaskManager:
def step(self):
if TaskManager.notify.getDebug():
TaskManager.notify.debug('step')
self.currentTime, self.currentFrame = getTimeFrame()
self.currentTime, self.currentFrame = self.__getTimeFrame()
for task in self.taskList:
task.setCurrentTimeFrame(self.currentTime, self.currentFrame)
@ -473,9 +405,9 @@ class TaskManager:
if (ret == cont):
continue
elif (ret == done):
self.removeTask(task)
self.__removeTask(task)
elif (ret == exit):
self.removeTask(task)
self.__removeTask(task)
else:
raise StandardError, "Task named %s did not return cont, exit, or done" % task.name
return len(self.taskList)
@ -589,90 +521,8 @@ class TaskManager:
import TaskManagerPanel
return TaskManagerPanel.TaskManagerPanel(self)
"""
import Task
from ShowBaseGlobal import * # to get taskMgr, and run()
# sequence
def seq1(state):
print 'seq1'
return Task.done
def seq2(state):
print 'seq2'
return Task.done
t = Task.sequence(Task.pause(1.0), Task.Task(seq1), Task.release(),
Task.pause(3.0), Task.Task(seq2))
taskMgr.spawnTaskNamed(t, 'sequence')
run()
# If you want it to loop, make a loop
t = Task.loop(Task.pause(1.0), Task.Task(seq1), Task.release(),
Task.pause(3.0), Task.Task(seq2))
taskMgr.spawnTaskNamed(t, 'sequence')
run()
# timeline
def keyframe1(state):
print 'keyframe1'
return Task.done
def keyframe2(state):
print 'keyframe2'
return Task.done
def keyframe3(state):
print 'keyframe3'
return Task.done
testtl = Task.timeline(
(0.5, Task.Task(keyframe1), 'key1'),
(0.6, Task.Task(keyframe2), 'key2'),
(0.7, Task.Task(keyframe3), 'key3')
)
t = taskMgr.spawnTaskNamed(testtl, 'timeline')
run()
# do later - returns a sequence
def foo(state):
print 'later...'
return Task.done
seq = Task.doLater(3.0, Task.Task(foo), 'fooLater')
t = taskMgr.spawnTaskNamed(seq, 'doLater-fooLater')
run()
# tasks with state
# Combined with uponDeath
someValue = 1
def func(state):
if (state.someValue > 10):
print 'true!'
return Task.done
else:
state.someValue = state.someValue + 1
return Task.cont
def deathFunc(state):
print 'Value at death: ', state.someValue
task = Task.Task(func)
# set task state here
task.someValue = someValue
# Use instance variable uponDeath to specify function
# to perform on task removal
# Default value of uponDeath is None
task.uponDeath = deathFunc
t = taskMgr.spawnTaskNamed(task, 'funcTask')
run()
"""
def __getTimeFrame(self):
# WARNING: If you are testing tasks without an igloop,
# you must manually tick the clock
# Ask for the time last frame
return globalClock.getFrameTime(), globalClock.getFrameCount()

View File

@ -28,7 +28,7 @@ class Timer:
self.name = name
self.startT = self.clock.getFrameTime()
self.currT = 0.0
taskMgr.spawnMethodNamed(self.__timerTask, self.name + '-run')
taskMgr.add(self.__timerTask, self.name + '-run')
self.started = 1
def startCallback(self, t, callback):
@ -40,7 +40,7 @@ class Timer:
self.finalT = t
self.startT = self.clock.getFrameTime()
self.currT = 0.0
taskMgr.spawnMethodNamed(self.__timerTask, self.name + '-run')
taskMgr.add(self.__timerTask, self.name + '-run')
self.started = 1
def stop(self):
@ -48,7 +48,7 @@ class Timer:
"""
if (not self.started):
return 0.0
taskMgr.removeTasksNamed(self.name + '-run')
taskMgr.remove(self.name + '-run')
self.started = 0
return self.currT

View File

@ -174,7 +174,7 @@ class AnimPanel(AppShell):
self.stopActorControls()
self.lastT = globalClock.getFrameTime()
self.playList = self.actorControlList[:]
taskMgr.spawnMethodNamed(self.play, self.id + '_UpdateTask')
taskMgr.add(self.play, self.id + '_UpdateTask')
def play(self, task):
if not self.playList:
@ -188,7 +188,7 @@ class AnimPanel(AppShell):
return Task.cont
def stopActorControls(self):
taskMgr.removeTasksNamed(self.id + '_UpdateTask')
taskMgr.remove(self.id + '_UpdateTask')
def getActorControlAt(self, index):
return self.actorControlList[index]

View File

@ -655,18 +655,18 @@ class MopathRecorder(AppShell, PandaObject):
Hook called upon selection of a node path used to select playback
marker if subnode selected
"""
taskMgr.removeTasksNamed(self.name + '-curveEditTask')
taskMgr.remove(self.name + '-curveEditTask')
if nodePath.id() == self.playbackMarker.getChild(0).id():
direct.select(self.playbackMarker)
elif nodePath.id() == self.tangentMarker.getChild(0).id():
direct.select(self.tangentMarker)
elif nodePath.id() == self.playbackMarker.id():
self.tangentGroup.show()
taskMgr.spawnMethodNamed(self.curveEditTask,
taskMgr.add(self.curveEditTask,
self.name + '-curveEditTask')
elif nodePath.id() == self.tangentMarker.id():
self.tangentGroup.show()
taskMgr.spawnMethodNamed(self.curveEditTask,
taskMgr.add(self.curveEditTask,
self.name + '-curveEditTask')
else:
self.tangentGroup.hide()
@ -755,9 +755,9 @@ class MopathRecorder(AppShell, PandaObject):
direct.deselect(self.playbackMarker)
direct.deselect(self.tangentMarker)
# Remove tasks
taskMgr.removeTasksNamed(self.name + '-recordTask')
taskMgr.removeTasksNamed(self.name + '-playbackTask')
taskMgr.removeTasksNamed(self.name + '-curveEditTask')
taskMgr.remove(self.name + '-recordTask')
taskMgr.remove(self.name + '-playbackTask')
taskMgr.remove(self.name + '-curveEditTask')
def createNewPointSet(self):
self.pointSetName = self.name + '-ps-' + `self.pointSetCount`
@ -924,8 +924,8 @@ class MopathRecorder(AppShell, PandaObject):
def toggleRecord(self):
if self.getVariable('Recording', 'Record').get():
# Kill old tasks
taskMgr.removeTasksNamed(self.name + '-recordTask')
taskMgr.removeTasksNamed(self.name + '-curveEditTask')
taskMgr.remove(self.name + '-recordTask')
taskMgr.remove(self.name + '-curveEditTask')
# Remove old curve
self.nurbsCurveDrawer.hide()
# Reset curve fitters
@ -966,13 +966,13 @@ class MopathRecorder(AppShell, PandaObject):
# start flying nodePath along path
self.startPlayback()
# Start new task
t = taskMgr.spawnMethodNamed(
t = taskMgr.add(
self.recordTask, self.name + '-recordTask')
t.startTime = globalClock.getFrameTime()
else:
if self.samplingMode == 'Continuous':
# Kill old task
taskMgr.removeTasksNamed(self.name + '-recordTask')
taskMgr.remove(self.name + '-recordTask')
if ((self.recordingType.get() == 'Refine') or
(self.recordingType.get() == 'Extend')):
# Reparent node path back to parent
@ -1263,7 +1263,7 @@ class MopathRecorder(AppShell, PandaObject):
# Make sure checkbutton is set
self.getVariable('Playback', 'Play').set(1)
# Start new playback task
t = taskMgr.spawnMethodNamed(
t = taskMgr.add(
self.playbackTask, self.name + '-playbackTask')
t.currentTime = self.playbackTime
t.lastTime = globalClock.getFrameTime()
@ -1314,7 +1314,7 @@ class MopathRecorder(AppShell, PandaObject):
def stopPlayback(self):
self.getVariable('Playback', 'Play').set(0)
taskMgr.removeTasksNamed(self.name + '-playbackTask')
taskMgr.remove(self.name + '-playbackTask')
def jumpToStartOfPlayback(self):
self.stopPlayback()

View File

@ -598,7 +598,7 @@ class Placer(AppShell):
self.pushUndo()
# If moving widget kill follow task and update wrts
if self.nodePathMenu.get() == 'widget':
taskMgr.removeTasksNamed('followSelectedNodePath')
taskMgr.remove('followSelectedNodePath')
# Record relationship between selected nodes and widget
direct.selected.getWrtAll()
# Record initial state

View File

@ -185,7 +185,7 @@ class TaskManagerWidget(PandaObject):
parent = self.parent,
default = 'cancel')
if ok:
self.taskMgr.removeTask(self.currentTask)
self.taskMgr.remove(self.currentTask)
self.updateTaskListBox()
def removeMatchingTasks(self):
@ -201,7 +201,7 @@ class TaskManagerWidget(PandaObject):
parent = self.parent,
default = 'cancel')
if ok:
self.taskMgr.removeTasksNamed(name)
self.taskMgr.remove(name)
self.updateTaskListBox()
def onDestroy(self):

View File

@ -606,7 +606,7 @@ class DialWidget(Pmw.MegaWidget):
def knobMouseDown(self,event):
self._onButtonPress()
self.knobSF = 0.0
t = taskMgr.spawnMethodNamed(self.knobComputeVelocity, 'cv')
t = taskMgr.add(self.knobComputeVelocity, 'cv')
t.lastTime = globalClock.getFrameTime()
def knobComputeVelocity(self, state):
@ -633,7 +633,7 @@ class DialWidget(Pmw.MegaWidget):
return -sf
def knobMouseUp(self, event):
taskMgr.removeTasksNamed('cv')
taskMgr.remove('cv')
self.knobSF = 0.0
self._onButtonRelease()

View File

@ -128,7 +128,7 @@ class Floater(Pmw.MegaWidget):
def _startFloaterTask(self,event):
self._fFloaterTask = 1
apply(self.onPress,self['callbackData'])
taskMgr.spawnMethodNamed(self._floaterTask, 'floaterTask')
taskMgr.add(self._floaterTask, 'floaterTask')
def _floaterTask(self, state):
if self.velocity != 0.0:
@ -136,7 +136,7 @@ class Floater(Pmw.MegaWidget):
return Task.cont
def _floaterReset(self, event):
taskMgr.removeTasksNamed('floaterTask')
taskMgr.remove('floaterTask')
self.velocity = 0.0
self.scale.set(0.0)
apply(self.onRelease, self['callbackData'])