|
@@ -43,9 +43,11 @@ class Placer(Pmw.MegaToplevel):
|
|
|
self.nodePathNames = ['selected', 'camera']
|
|
self.nodePathNames = ['selected', 'camera']
|
|
|
|
|
|
|
|
self.refNodePathDict = {}
|
|
self.refNodePathDict = {}
|
|
|
|
|
+ self.refNodePathDict['parent'] = self['nodePath'].getParent()
|
|
|
self.refNodePathDict['render'] = render
|
|
self.refNodePathDict['render'] = render
|
|
|
self.refNodePathDict['camera'] = camera
|
|
self.refNodePathDict['camera'] = camera
|
|
|
- self.refNodePathNames = ['self', 'render', 'camera', 'selected', 'coa']
|
|
|
|
|
|
|
+ self.refNodePathNames = ['self', 'parent', 'render',
|
|
|
|
|
+ 'camera', 'selected', 'coa']
|
|
|
|
|
|
|
|
# Initial state
|
|
# Initial state
|
|
|
self.initPos = Vec3(0)
|
|
self.initPos = Vec3(0)
|
|
@@ -107,7 +109,7 @@ class Placer(Pmw.MegaToplevel):
|
|
|
self.nodePathMenu.pack(side = 'left', expand = 0)
|
|
self.nodePathMenu.pack(side = 'left', expand = 0)
|
|
|
|
|
|
|
|
modeMenu = Pmw.OptionMenu(menuFrame,
|
|
modeMenu = Pmw.OptionMenu(menuFrame,
|
|
|
- items = ('Absolute', 'Relative To:',
|
|
|
|
|
|
|
+ items = ('Relative To:',
|
|
|
'Orbit:'),
|
|
'Orbit:'),
|
|
|
initialitem = 'Relative To:',
|
|
initialitem = 'Relative To:',
|
|
|
command = self.setMovementMode,
|
|
command = self.setMovementMode,
|
|
@@ -342,25 +344,16 @@ class Placer(Pmw.MegaToplevel):
|
|
|
# Set prefix
|
|
# Set prefix
|
|
|
namePrefix = ''
|
|
namePrefix = ''
|
|
|
self.movementMode = movementMode
|
|
self.movementMode = movementMode
|
|
|
- if (movementMode == 'Absolute'):
|
|
|
|
|
- namePrefix = 'Absolute '
|
|
|
|
|
- elif (movementMode == 'Relative To:'):
|
|
|
|
|
|
|
+ if (movementMode == 'Relative To:'):
|
|
|
namePrefix = 'Relative '
|
|
namePrefix = 'Relative '
|
|
|
- elif (movementMode == 'Orbit'):
|
|
|
|
|
- namePrefix = 'Orbit'
|
|
|
|
|
- # Enable/disable wrt menu
|
|
|
|
|
- if (movementMode == 'Absolute'):
|
|
|
|
|
- self.refNodePathMenu.configure(entry_foreground = 'gray50')
|
|
|
|
|
- self.refNodePathMenu.configure(entry_background = '#E0E0E0')
|
|
|
|
|
- else:
|
|
|
|
|
- self.refNodePathMenu.configure(entry_foreground = 'Black')
|
|
|
|
|
- self.refNodePathMenu.configure(entry_background = 'SystemWindow')
|
|
|
|
|
|
|
+ elif (movementMode == 'Orbit:'):
|
|
|
|
|
+ namePrefix = 'Orbit '
|
|
|
# Update pos widgets
|
|
# Update pos widgets
|
|
|
self.posX['text'] = namePrefix + 'X'
|
|
self.posX['text'] = namePrefix + 'X'
|
|
|
self.posY['text'] = namePrefix + 'Y'
|
|
self.posY['text'] = namePrefix + 'Y'
|
|
|
self.posZ['text'] = namePrefix + 'Z'
|
|
self.posZ['text'] = namePrefix + 'Z'
|
|
|
# Update hpr widgets
|
|
# Update hpr widgets
|
|
|
- if (movementMode == 'Orbit'):
|
|
|
|
|
|
|
+ if (movementMode == 'Orbit:'):
|
|
|
namePrefix = 'Orbit delta '
|
|
namePrefix = 'Orbit delta '
|
|
|
self.hprH['text'] = namePrefix + 'H'
|
|
self.hprH['text'] = namePrefix + 'H'
|
|
|
self.hprP['text'] = namePrefix + 'P'
|
|
self.hprP['text'] = namePrefix + 'P'
|
|
@@ -468,7 +461,7 @@ class Placer(Pmw.MegaToplevel):
|
|
|
return
|
|
return
|
|
|
# Get node path's name
|
|
# Get node path's name
|
|
|
name = nodePath.getName()
|
|
name = nodePath.getName()
|
|
|
- if((name == 'render') | (name == 'camera')):
|
|
|
|
|
|
|
+ if name in ['parent', 'render', 'camera']:
|
|
|
dictName = name
|
|
dictName = name
|
|
|
else:
|
|
else:
|
|
|
# Generate a unique name for the dict
|
|
# Generate a unique name for the dict
|
|
@@ -491,18 +484,14 @@ class Placer(Pmw.MegaToplevel):
|
|
|
# Update temp CS
|
|
# Update temp CS
|
|
|
self.updateAuxiliaryCoordinateSystems()
|
|
self.updateAuxiliaryCoordinateSystems()
|
|
|
# Update widgets
|
|
# Update widgets
|
|
|
- if self.movementMode == 'Absolute':
|
|
|
|
|
- pos.assign(np.getPos())
|
|
|
|
|
- hpr.assign(np.getHpr())
|
|
|
|
|
- scale.assign(np.getScale())
|
|
|
|
|
- elif self.movementMode == 'Orbit:':
|
|
|
|
|
|
|
+ if self.movementMode == 'Orbit:':
|
|
|
pos.assign(self.posOffset)
|
|
pos.assign(self.posOffset)
|
|
|
hpr.assign(ZERO_VEC)
|
|
hpr.assign(ZERO_VEC)
|
|
|
scale.assign(np.getScale())
|
|
scale.assign(np.getScale())
|
|
|
elif self.refCS:
|
|
elif self.refCS:
|
|
|
pos.assign(np.getPos(self.refCS))
|
|
pos.assign(np.getPos(self.refCS))
|
|
|
hpr.assign(np.getHpr(self.refCS))
|
|
hpr.assign(np.getHpr(self.refCS))
|
|
|
- scale.assign(np.getScale(self.refCS))
|
|
|
|
|
|
|
+ scale.assign(np.getScale())
|
|
|
self.updatePosWidgets(pos)
|
|
self.updatePosWidgets(pos)
|
|
|
self.updateHprWidgets(hpr)
|
|
self.updateHprWidgets(hpr)
|
|
|
self.updateScaleWidgets(scale)
|
|
self.updateScaleWidgets(scale)
|
|
@@ -531,8 +520,6 @@ class Placer(Pmw.MegaToplevel):
|
|
|
def xform(self, value, axis):
|
|
def xform(self, value, axis):
|
|
|
if axis in ['sx', 'sy', 'sz']:
|
|
if axis in ['sx', 'sy', 'sz']:
|
|
|
self.xformScale(value,axis)
|
|
self.xformScale(value,axis)
|
|
|
- elif self.movementMode == 'Absolute':
|
|
|
|
|
- self.xformAbsolute(value, axis)
|
|
|
|
|
elif self.movementMode == 'Relative To:':
|
|
elif self.movementMode == 'Relative To:':
|
|
|
self.xformRelative(value, axis)
|
|
self.xformRelative(value, axis)
|
|
|
elif self.movementMode == 'Orbit:':
|
|
elif self.movementMode == 'Orbit:':
|
|
@@ -550,24 +537,7 @@ class Placer(Pmw.MegaToplevel):
|
|
|
messenger.send('manipulateObjectCleanup')
|
|
messenger.send('manipulateObjectCleanup')
|
|
|
# Update placer to reflect new state
|
|
# Update placer to reflect new state
|
|
|
self.updatePlacer()
|
|
self.updatePlacer()
|
|
|
-
|
|
|
|
|
|
|
|
|
|
- def xformAbsolute(self, value, axis):
|
|
|
|
|
- nodePath = self['nodePath']
|
|
|
|
|
- if nodePath != None:
|
|
|
|
|
- if axis == 'x':
|
|
|
|
|
- nodePath.setX(value)
|
|
|
|
|
- elif axis == 'y':
|
|
|
|
|
- nodePath.setY(value)
|
|
|
|
|
- elif axis == 'z':
|
|
|
|
|
- nodePath.setZ(value)
|
|
|
|
|
- elif axis == 'h':
|
|
|
|
|
- nodePath.setH(value)
|
|
|
|
|
- elif axis == 'p':
|
|
|
|
|
- nodePath.setP(value)
|
|
|
|
|
- elif axis == 'r':
|
|
|
|
|
- nodePath.setR(value)
|
|
|
|
|
-
|
|
|
|
|
def xformRelative(self, value, axis):
|
|
def xformRelative(self, value, axis):
|
|
|
nodePath = self['nodePath']
|
|
nodePath = self['nodePath']
|
|
|
if (nodePath != None) & (self.refCS != None):
|
|
if (nodePath != None) & (self.refCS != None):
|