|
@@ -71,27 +71,17 @@ class DirectJoybox(PandaObject):
|
|
|
# Accept button events
|
|
# Accept button events
|
|
|
self.acceptSwitchModeEvent()
|
|
self.acceptSwitchModeEvent()
|
|
|
self.acceptUprightCameraEvent()
|
|
self.acceptUprightCameraEvent()
|
|
|
- # If moving widget update wrt info
|
|
|
|
|
- if self.nodePath.id() == direct.widget.id():
|
|
|
|
|
- # Kill follow task
|
|
|
|
|
- taskMgr.removeTasksNamed('followSelectedNodePath')
|
|
|
|
|
- # Record relationship between selected nodes and widget
|
|
|
|
|
- direct.selected.getWrtAll()
|
|
|
|
|
# Update task
|
|
# Update task
|
|
|
taskMgr.spawnMethodNamed(self.updateTask, self.name + '-updateTask')
|
|
taskMgr.spawnMethodNamed(self.updateTask, self.name + '-updateTask')
|
|
|
|
|
|
|
|
def disable(self):
|
|
def disable(self):
|
|
|
taskMgr.removeTasksNamed(self.name + '-updateTask')
|
|
taskMgr.removeTasksNamed(self.name + '-updateTask')
|
|
|
- if self.nodePath.id() == direct.widget.id():
|
|
|
|
|
- # Restart followSelectedNodePath task
|
|
|
|
|
- direct.manipulationControl.spawnFollowSelectedNodePathTask()
|
|
|
|
|
|
|
+ # Ignore button events
|
|
|
self.ignoreSwitchModeEvent()
|
|
self.ignoreSwitchModeEvent()
|
|
|
self.ignoreUprightCameraEvent()
|
|
self.ignoreUprightCameraEvent()
|
|
|
|
|
|
|
|
def destroy(self):
|
|
def destroy(self):
|
|
|
self.disable()
|
|
self.disable()
|
|
|
- self.ignore('selectedNodePath')
|
|
|
|
|
- self.ignore('deselectNodePath')
|
|
|
|
|
self.tempCS.removeNode()
|
|
self.tempCS.removeNode()
|
|
|
|
|
|
|
|
def addButtonEvents(self):
|
|
def addButtonEvents(self):
|
|
@@ -105,26 +95,6 @@ class DirectJoybox(PandaObject):
|
|
|
|
|
|
|
|
def setNodePath(self, nodePath):
|
|
def setNodePath(self, nodePath):
|
|
|
self.nodePath = nodePath
|
|
self.nodePath = nodePath
|
|
|
- if self.nodePath.id() == direct.widget.id():
|
|
|
|
|
- # Kill follow task
|
|
|
|
|
- taskMgr.removeTasksNamed('followSelectedNodePath')
|
|
|
|
|
- # Record relationship between selected nodes and widget
|
|
|
|
|
- direct.selected.getWrtAll()
|
|
|
|
|
- # Watch for newly selected objects
|
|
|
|
|
- self.accept('selectedNodePath', self.selectionHook)
|
|
|
|
|
- # Watch for deselections
|
|
|
|
|
- self.accept('deselectNodePath', self.selectionHook)
|
|
|
|
|
- else:
|
|
|
|
|
- self.ignore('selectedNodePath')
|
|
|
|
|
- self.ignore('deselectNodePath')
|
|
|
|
|
-
|
|
|
|
|
- def selectionHook(self, dnp):
|
|
|
|
|
- if direct.selected.getSelectedAsList():
|
|
|
|
|
- print 'enable'
|
|
|
|
|
- self.enable()
|
|
|
|
|
- else:
|
|
|
|
|
- print 'disable'
|
|
|
|
|
- self.disable()
|
|
|
|
|
|
|
|
|
|
def getNodePath(self):
|
|
def getNodePath(self):
|
|
|
return self.nodePath
|
|
return self.nodePath
|
|
@@ -146,16 +116,6 @@ class DirectJoybox(PandaObject):
|
|
|
def updateTask(self, state):
|
|
def updateTask(self, state):
|
|
|
self.updateVals()
|
|
self.updateVals()
|
|
|
self.updateFunc()
|
|
self.updateFunc()
|
|
|
- if self.nodePath.id() == direct.widget.id():
|
|
|
|
|
- if direct.manipulationControl.fSetCoa:
|
|
|
|
|
- # Update coa based on current widget position
|
|
|
|
|
- direct.selected.last.mCoa2Dnp.assign(
|
|
|
|
|
- direct.widget.getMat(direct.selected.last))
|
|
|
|
|
- # Update wrt info
|
|
|
|
|
- direct.selected.getWrtAll()
|
|
|
|
|
- else:
|
|
|
|
|
- # Move the objects with the widget
|
|
|
|
|
- direct.selected.moveWrtWidgetAll()
|
|
|
|
|
return Task.cont
|
|
return Task.cont
|
|
|
|
|
|
|
|
def updateVals(self):
|
|
def updateVals(self):
|