Made widget be shown in black when non-movable object selected

This commit is contained in:
Gyedo Jeon 2008-11-15 02:32:08 +00:00
parent 37df0df5c7
commit ff36eb76cb
2 changed files with 29 additions and 5 deletions

View File

@ -24,6 +24,7 @@ class DirectManipulationControl(DirectObject):
self.fWidgetTop = 0
self.fFreeManip = 1
self.fScaling = 0
self.fMovable = 1
self.mode = None
self.actionEvents = [
['DIRECT-mouse1', self.manipulationStart],
@ -189,15 +190,30 @@ class DirectManipulationControl(DirectObject):
taskMgr.remove('resizeObjectHandles')
def toggleObjectHandlesMode(self):
self.fSetCoa = 1 - self.fSetCoa
if self.fSetCoa:
self.objectHandles.coaModeColor()
if self.fMovable:
self.fSetCoa = 1 - self.fSetCoa
if self.fSetCoa:
self.objectHandles.coaModeColor()
else:
self.objectHandles.manipModeColor()
else:
self.objectHandles.manipModeColor()
self.objectHandles.disabledModeColor()
def removeManipulateObjectTask(self):
taskMgr.remove('manipulateObject')
def enableWidgetMove(self):
self.fMovable = 1
if self.fSetCoa:
self.objectHandles.coaModeColor()
else:
self.objectHandles.manipModeColor()
def disableWidgetMove(self):
self.fMovable = 0
self.objectHandles.disabledModeColor()
#--------------------------------------------------------------------------
# Function: get edit types list for specified objects which indicate
# how editable the objects are
@ -662,9 +678,12 @@ class ObjectHandles(NodePath, DirectObject):
def coaModeColor(self):
self.setColor(.5, .5, .5, 0.5, 1)
def disabledModeColor(self):
self.setColor(0.1,0.1,0.1,0.1,1)
def manipModeColor(self):
self.clearColor()
def toggleWidget(self):
if self.fActive:
self.deactivate()

View File

@ -520,6 +520,11 @@ class DirectSession(DirectObject):
'Selected:' + dnp.getName())
# Show the manipulation widget
self.widget.showWidget()
editTypes = self.manipulationControl.getEditTypes([dnp])
if (editTypes & EDIT_TYPE_UNEDITABLE == EDIT_TYPE_UNEDITABLE):
self.manipulationControl.disableWidgetMove()
else:
self.manipulationControl.enableWidgetMove()
# Update camera controls coa to this point
# Coa2Camera = Coa2Dnp * Dnp2Camera
mCoa2Camera = dnp.mCoa2Dnp * dnp.getMat(self.camera)