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

View File

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

View File

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

View File

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