*** empty log message ***

This commit is contained in:
Mark Mine 2000-11-16 01:09:57 +00:00
parent 12442c9a8a
commit 0efa5b1d85
4 changed files with 48 additions and 50 deletions

View File

@ -65,24 +65,22 @@ class DirectSession(PandaObject):
def select(self, nodePath):
dnp = self.selected.select(nodePath)
if dnp:
messenger.send('preSelectNodePath', [dnp])
# Update the readout
self.readout.reparentTo(render2d)
self.readout.setText(dnp.name)
# Show the manipulation widget
self.widget.reparentTo(render)
# Update camera controls coa to this point
# Coa2Camera = Coa2Dnp * Dnp2Camera
mCoa2Camera = dnp.mCoa2Dnp * dnp.getMat(base.camera)
row = mCoa2Camera.getRow(3)
coa = Vec3(row[0], row[1], row[2])
self.cameraControl.updateCoa(coa)
# Adjust widgets size
# This uses the additional scaling factor used to grow and
# shrink the widget
self.widget.setScalingFactor(dnp.getRadius())
# Spawn task to have object handles follow the selected object
taskMgr.removeTasksNamed('followSelectedNodePath')
t = Task.Task(self.followSelectedNodePathTask)

View File

@ -79,7 +79,7 @@
def getAncestry(self):
from PandaObject import *
node = self.node()
if ((node != render.node()) | (node != hidden.node())):
if (self.hasParent()):
ancestry = self.getParent().getAncestry()
ancestry.append(self)
return ancestry

View File

@ -373,15 +373,16 @@ class LevelEditor(NodePath, PandaObject):
self.grid.ignore('insert')
self.ignore('selectedNodePath')
self.ignore('preRemoveNodePath')
self.ignore('preSelectNodePath')
#self.ignore('preSelectNodePath')
self.ignore('toggleMapViz')
self.ignore('setGroupParent')
self.ignore('isolateNodePath')
self.ignore('reparentNodePath')
self.ignore('createNewLevelGroup')
self.ignore('setNodePathName')
self.ignore('manipulateObjectCleanup')
self.ignore('SGESelectNodePath')
self.ignore('SGEIsolateNodePath')
self.ignore('SGESet ParentNodePath')
self.ignore('SGEAdd GroupNodePath')
self.ignore('showAll')
self.ignore('p')
self.disableManipulation()
@ -453,15 +454,16 @@ class LevelEditor(NodePath, PandaObject):
self.show()
self.accept('selectedNodePath', self.selectDNARoot)
self.accept('preRemoveNodePath', self.preRemoveNodePath)
self.accept('preSelectNodePath', self.preSelectNodePath)
self.accept('toggleMapViz', self.toggleMapViz)
self.accept('setGroupParent', self.setGroupParent)
self.accept('isolateNodePath', self.isolateNodePath)
self.accept('reparentNodePath', self.reparentNodePath)
self.accept('createNewLevelGroup', self.createNewLevelGroup)
self.accept('setNodePathName', self.setNodePathName)
self.accept('manipulateObjectCleanup', self.updateSelectedPose)
self.accept('SGESelectNodePath', self.selectNodePath)
self.accept('SGESelectNodePath', self.preSelectNodePath)
self.accept('SGEIsolateNodePath', self.isolateNodePath)
self.accept('SGESet ParentNodePath', self.setGroupParent)
self.accept('SGEAdd GroupNodePath', self.addGroupToSelected)
self.accept('showAll', self.showAll)
self.accept('p',self.plantSelectedNodePath)
self.enableManipulation()
@ -699,14 +701,12 @@ class LevelEditor(NodePath, PandaObject):
# Otherwise, find its dictionary entry
self.selectedLevelObject = (
self.getLevelObject(self.direct.selected.last))
# If not None, determine interaction type
if self.selectedLevelObject:
selectedObjectDNA = self.selectedLevelObject['DNA']
# Default target/menu
target = None
menuType = None
# Interaction type depends on selected object's class
objClass = selectedObjectDNA.__class__.getClassType()
if objClass.eq(DNAFlatBuilding.getClassType()):
@ -774,7 +774,6 @@ class LevelEditor(NodePath, PandaObject):
target = selectedObjectDNA
else:
target = None
elif objClass.eq(DNALandmarkBuilding.getClassType()):
menuType = 'door'
target = self.getDoor(selectedObjectDNA)
@ -787,7 +786,6 @@ class LevelEditor(NodePath, PandaObject):
target = selectedObjectDNA
if self.direct.fControl:
menuType = 'propColor'
# Now spawn apropriate menu task
if ((target != None) | (menuType == 'cornice')):
self.spawnMenuTask(menuType, target)
@ -803,20 +801,21 @@ class LevelEditor(NodePath, PandaObject):
t.initState = t.hidden = aNodePath.isHidden()
t.count = 0
t.uponDeath = self.preSelectDone
#taskMgr.spawnTaskNamed(t, 'preselectNodePath')
taskMgr.spawnTaskNamed(t, 'preselectNodePath')
def preSelectNodePathTask(self, state):
aNodePath = state.aNodePath
initState = state.initState
hidden = state.hidden
count = t.count
if (t.count < 4):
count = state.count
if (state.count < 21):
if (state.count % 5) == 0:
if hidden:
aNodePath.show()
else:
aNodePath.hide()
t.count = count + 1
t.hidden = not t.hidden
state.hidden = not state.hidden
state.count = count + 1
return Task.cont
else:
return Task.done
@ -1740,7 +1739,7 @@ class LevelEditor(NodePath, PandaObject):
def addFlatBuilding(self, buildingType):
# Create new building
#newDNAFlatBuilding = DNAFlatBuilding(buildingType + '_DNARoot')
newDNAFlatBuilding = DNAFlatBuilding(buildingType + '_DNARoot')
newDNAFlatBuilding = DNAFlatBuilding(buildingType)
# Select walls
@ -1792,7 +1791,7 @@ class LevelEditor(NodePath, PandaObject):
self.addFlatBuilding)
def addLandmark(self, landmarkType):
#newDNALandmarkBuilding = DNALandmarkBuilding(landmarkType + '_DNARoot')
newDNALandmarkBuilding = DNALandmarkBuilding(landmarkType + '_DNARoot')
newDNALandmarkBuilding = DNALandmarkBuilding(landmarkType)
newDNALandmarkBuilding.setCode(self.getDNACode(landmarkType))
newDNALandmarkBuilding.setPos(VBase3(0))
@ -1811,7 +1810,7 @@ class LevelEditor(NodePath, PandaObject):
return objectDictionary
def addProp(self, newPropType):
#newDNAProp = DNAProp(newPropType + '_DNARoot')
newDNAProp = DNAProp(newPropType + '_DNARoot')
newDNAProp = DNAProp(newPropType)
newDNAProp.setCode(self.getDNACode(newPropType))
newDNAProp.setPos(VBase3(0))
@ -1821,7 +1820,7 @@ class LevelEditor(NodePath, PandaObject):
self.setPropType(newPropType)
def addStreetModule(self, streetType):
#newDNAStreet = DNAStreet(streetType + '_DNARoot')
newDNAStreet = DNAStreet(streetType + '_DNARoot')
newDNAStreet = DNAStreet(streetType)
newDNAStreet.setCode(self.getDNACode(streetType))
newDNAStreet.setPos(VBase3(0))
@ -1860,6 +1859,10 @@ class LevelEditor(NodePath, PandaObject):
newDNADoor.setColor(colors[randint(0,len(colors) - 1)])
return newDNADoor
def addGroupToSelected(self, aNodePath):
self.setGroupParent(aNodePath)
self.createNewLevelGroup()
def createNewLevelGroup(self):
newGroupParentDNA = DNAGroup('group=' + `self.groupNum`)
# Add it to the level objects
@ -2100,7 +2103,7 @@ class LevelEditor(NodePath, PandaObject):
if (dnaGroup.__class__.getClassType().eq(DNAFlatBuilding.getClassType())):
dnaGroup.setWidth(self.getWallWidth())
newNodePath = dnaGroup.traverse(parent,self.dnaStore)
newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
#newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
# Add it to the level dictionary
self.addObject(newNodePath, dnaGroup)
@ -2128,7 +2131,7 @@ class LevelEditor(NodePath, PandaObject):
if dnaGroup.__class__.getClassType().eq(DNAFlatBuilding.getClassType()):
dnaGroup.setWidth(self.getWallWidth())
newNodePath = dnaGroup.traverse(parent, self.dnaStore)
newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
#newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
# Add it to the level dictionary
self.addObject(newNodePath, dnaGroup)
@ -2215,22 +2218,19 @@ class LevelEditor(NodePath, PandaObject):
# Get rid of default group and root node
self.preRemoveNodePath(self.groupParent)
self.removeNodePath(self.groupParent)
# Clear self.dnaStore
self.dnaStore.resetDNAGroups()
# Reset DNA VIS Groups
self.dnaStore.resetDNAVisGroups()
# Now load in new file
self.groupParent = loadDNAFile(self.dnaStore, filename,
getDefaultCoordinateSystem())
# Make sure the topmost level object gets put under level objects dna
self.groupParentDNA = self.dnaStore.findDNAGroup(
self.groupParent.getBottomArc())
self.levelObjectsDNA.add(self.groupParentDNA)
# No level objects node found, just add the whole thing
self.groupParent.reparentTo(self.levelObjects)
if 0:
newLevelObjects = nodePath.find('**/LevelObjects')
if newLevelObjects.isEmpty():
@ -2245,19 +2245,18 @@ class LevelEditor(NodePath, PandaObject):
# (since there is probably one in the dnafile
self.preRemoveNodePath(self.groupParent)
self.removeNodePath(self.groupParent)
# Now add the children from the DNA File
children = newLevelObjects.getChildren()
for i in range(children.getNumPaths()):
children.getPath(i).reparentTo(self.levelObjects)
# Now create a new top level group with next group number
self.createTopLevelGroup()
# Add these objects to the levelDictionary
numPaths = self.dnaStore.getNumNodeRelations()
for pathNum in range(numPaths):
relation = self.dnaStore.getNodeRelationAt(pathNum)
if relation:
if (relation.getChild() and relation.getParent()):
newNodePath = NodePath(relation)
group = self.dnaStore.findDNAGroup(relation)
if newNodePath.isSingleton():
@ -2266,7 +2265,6 @@ class LevelEditor(NodePath, PandaObject):
self.addObject(newNodePath, group)
else:
print'blah'
self.createNewLevelGroup()
def outputDNADefaultFile(self):
@ -2353,7 +2351,7 @@ class LevelEditor(NodePath, PandaObject):
# Traverse the dna to create the new node path
newNodePath = dnaGroup.traverse(parent, self.dnaStore)
newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
#newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
self.selectNodePath(newNodePath)
# Add it to the levelObjects dictionary
@ -2372,7 +2370,7 @@ class LevelEditor(NodePath, PandaObject):
# Traverse the dna to create the new node path
newNodePath = dnaGroup.traverse(parent, self.dnaStore)
newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
#newNodePath.node().setName(newNodePath.node().getName() + '_DNARoot')
self.selectNodePath(newNodePath)
# Add it to the levelObjects dictionary
@ -3200,7 +3198,8 @@ class LevelEditorPanel(Pmw.MegaToplevel):
self.sceneGraphExplorer = SceneGraphExplorer(
parent = sceneGraphPage,
root = self.levelEditor.getLevelObjects())
root = self.levelEditor.getLevelObjects(),
menuItems = ['Select', 'Isolate', 'Set Parent', 'Add Group'])
self.sceneGraphExplorer.pack(expand = 1, fill = 'both')
def toggleGrid(self):

View File

@ -8,7 +8,9 @@ class SceneGraphExplorer(Pmw.MegaWidget):
"Graphical display of a scene graph"
def __init__(self, root = render, parent = None, **kw):
# Define the megawidget options.
optiondefs = ()
optiondefs = (
('menuItems', ['Select'], None),
)
self.defineoptions(kw, optiondefs)
# Initialise superclass
@ -45,7 +47,7 @@ class SceneGraphExplorer(Pmw.MegaWidget):
self._treeItem = SceneGraphExplorerItem(self.root)
self._node = TreeNode(self._canvas, None, self._treeItem,
['Select Node'])
self['menuItems'])
self._node.expand()
# Check keywords and initialise options based on input values.
@ -113,7 +115,6 @@ class SceneGraphExplorerItem(TreeItem):
messenger.send('SGESelectNodePath', [self.nodePath])
def MenuCommand(self, command):
if (command == 'Select Node'):
messenger.send('SGESelectNodePath', [self.nodePath])
messenger.send('SGE' + command + 'NodePath', [self.nodePath])