From d80d57919a4a6bfec80224c1bd80e4a297294bb4 Mon Sep 17 00:00:00 2001 From: Joe Shochet Date: Mon, 17 Sep 2001 17:12:13 +0000 Subject: [PATCH] *** empty log message *** --- direct/src/leveleditor/LevelEditor.py | 73 +++++++++++++++++++++------ 1 file changed, 58 insertions(+), 15 deletions(-) diff --git a/direct/src/leveleditor/LevelEditor.py b/direct/src/leveleditor/LevelEditor.py index a6cd207caa..20ece802db 100644 --- a/direct/src/leveleditor/LevelEditor.py +++ b/direct/src/leveleditor/LevelEditor.py @@ -237,6 +237,7 @@ except NameError: # Precompute class types for type comparisons DNA_CORNICE = DNACornice.getClassType() DNA_DOOR = DNADoor.getClassType() +DNA_FLAT_DOOR = DNAFlatDoor.getClassType() DNA_FLAT_BUILDING = DNAFlatBuilding.getClassType() DNA_NODE = DNANode.getClassType() DNA_GROUP = DNAGroup.getClassType() @@ -1460,7 +1461,7 @@ class LevelEditor(NodePath, PandaObject): newDNALandmarkBuilding.setCode(landmarkType) newDNALandmarkBuilding.setPos(VBase3(0)) newDNALandmarkBuilding.setHpr(VBase3(0)) - newDNADoor = self.createDoor() + newDNADoor = self.createDoor('landmark_door') newDNALandmarkBuilding.add(newDNADoor) # Now place new landmark building in the world self.initDNANode(newDNALandmarkBuilding) @@ -1498,12 +1499,15 @@ class LevelEditor(NodePath, PandaObject): newDNACornice.setColor(self.getCurrent('cornice_color')) return newDNACornice - def createDoor(self): + def createDoor(self, type): if not (self.getCurrent('door_texture')): doorStyles = self.styleManager.attributeDictionary['door_texture'].getList()[:-1] defaultDoorStyle = doorStyles[randint(0, len(doorStyles) - 1)] self.setCurrent('door_texture', defaultDoorStyle) - newDNADoor = DNADoor('door') + if (type == 'landmark_door'): + newDNADoor = DNADoor('door') + elif (type == 'door'): + newDNADoor = DNAFlatDoor('door') newDNADoor.setCode(self.getCurrent('door_texture')) newDNADoor.setColor(self.getCurrent('door_color')) return newDNADoor @@ -1562,7 +1566,7 @@ class LevelEditor(NodePath, PandaObject): def removeDoor(self, door, parent): self.setCurrent('door_color', door.getColor()) - DNARemoveChildOfClass(parent, DNA_DOOR) + DNARemoveChildOfClass(parent, DNA_FLAT_DOOR) def removeWindows(self, windows, parent): # And record number of windows @@ -1601,7 +1605,7 @@ class LevelEditor(NodePath, PandaObject): self.DNATarget = wall self.DNATargetParent = dnaObject elif string.find(menuMode,'door') >= 0: - self.DNATarget = DNAGetChildOfClass(wall, DNA_DOOR) + self.DNATarget = DNAGetChildOfClass(wall, DNA_FLAT_DOOR) self.DNATargetParent = wall elif string.find(menuMode, 'window') >= 0: self.DNATarget = DNAGetChildOfClass(wall, DNA_WINDOWS) @@ -1753,8 +1757,6 @@ class LevelEditor(NodePath, PandaObject): menuMode = 'door_orientation' else: menuMode = 'door_texture' - # MRM: Temp for now - menuMode = 'window_texture' else: # Do window operations if direct.fControl: @@ -1776,6 +1778,7 @@ class LevelEditor(NodePath, PandaObject): if ((objClass.eq(DNA_WALL)) or (objClass.eq(DNA_WINDOWS)) or (objClass.eq(DNA_DOOR)) or + (objClass.eq(DNA_FLAT_DOOR)) or (objClass.eq(DNA_CORNICE)) or (objClass.eq(DNA_PROP)) ): @@ -1813,9 +1816,9 @@ class LevelEditor(NodePath, PandaObject): elif (type == 'sign'): self.DNATarget = self.createSign() elif (type == 'landmark_door'): - self.DNATarget = self.createDoor() + self.DNATarget = self.createDoor('landmark_door') elif (type == 'door'): - self.DNATarget = self.createDoor() + self.DNATarget = self.createDoor('door') elif (type == 'windows'): # Make sure window_count n.e. 0 if self.getCurrent('window_count') == 0: @@ -1881,6 +1884,7 @@ class LevelEditor(NodePath, PandaObject): if ((objClass.eq(DNA_WALL)) or (objClass.eq(DNA_WINDOWS)) or (objClass.eq(DNA_DOOR)) or + (objClass.eq(DNA_FLAT_DOOR)) or (objClass.eq(DNA_CORNICE)) or (objClass.eq(DNA_PROP)) or (objClass.eq(DNA_SIGN)) or @@ -2458,6 +2462,8 @@ class LevelEditor(NodePath, PandaObject): tag = 'window_color:' elif classType.eq(DNA_DOOR): tag = 'door_color:' + elif classType.eq(DNA_FLAT_DOOR): + tag = 'door_color:' elif classType.eq(DNA_CORNICE): tag = 'cornice_color:' elif classType.eq(DNA_PROP): @@ -2718,7 +2724,7 @@ class LevelEditor(NodePath, PandaObject): marker.setColor(0,0,1) marker.setScale(0.5) elif (type == DNASuitPoint.SIDEDOORPOINT): - marker.setColor(0,0.2,0.4) + marker.setColor(0,0.6,0.2) marker.setScale(0.5) # Highlight if necessary if suitPoint in self.visitedPoints: @@ -2747,6 +2753,7 @@ class LevelEditor(NodePath, PandaObject): # Make a new dna edge if DNAClassEqual(self.DNAParent, DNA_VIS_GROUP): zoneId = self.DNAParent.getName() + suitEdge = DNASuitEdge( self.startSuitPoint, self.endSuitPoint, zoneId) DNASTORE.storeSuitEdge(suitEdge) @@ -2763,7 +2770,28 @@ class LevelEditor(NodePath, PandaObject): self.point2edgeDict[point].append(suitEdge) else: self.point2edgeDict[point] = [suitEdge] - + + # If this is a building point, you need edges in both directions + # so just make the other edge automatically + if ((self.startSuitPoint.getPointType() == DNASuitPoint.FRONTDOORPOINT) + or (self.startSuitPoint.getPointType() == DNASuitPoint.SIDEDOORPOINT)): + + suitEdge = DNASuitEdge( + self.endSuitPoint, self.startSuitPoint, zoneId) + DNASTORE.storeSuitEdge(suitEdge) + # Add edge to the current vis group so it can be written out + self.DNAParent.addSuitEdge(suitEdge) + # Draw a line to represent the edge + edgeLine = self.drawSuitEdge(suitEdge, self.NPParent) + # Store the line in a dict so we can hide/show them + self.edgeDict[suitEdge] = edgeLine + + for point in [self.startSuitPoint, self.endSuitPoint]: + if self.point2edgeDict.has_key(point): + self.point2edgeDict[point].append(suitEdge) + else: + self.point2edgeDict[point] = [suitEdge] + print 'Added dnaSuitEdge to zone: ' + zoneId else: print 'Error: DNAParent is not a dnaVisGroup. Did not add edge' @@ -2822,7 +2850,7 @@ class LevelEditor(NodePath, PandaObject): elif (type == DNASuitPoint.FRONTDOORPOINT): marker.setColor(0,0,1) elif (type == DNASuitPoint.SIDEDOORPOINT): - marker.setColor(0,0.2,0.4) + marker.setColor(0,0.6,0.2) for edge in self.edgeDict.values(): edge.clearColor() self.visitedPoints = [] @@ -3014,6 +3042,9 @@ class LevelEditor(NodePath, PandaObject): block=block[2:block.find(':')] print ("associate point with building: " + str(block)) self.selectedSuitPoint.setLandmarkBuildingIndex(int(block)) + marker = self.pointDict[self.selectedSuitPoint] + marker.setColor(1,0,0,1) + marker.setScale(1.0) def findHighestLandmarkBlock(self, dnaRoot, npRoot): npc=npRoot.findAllMatches("**/*:toon_landmark_*") @@ -3111,7 +3142,8 @@ class LevelEditor(NodePath, PandaObject): # Get the suit point for this lb for point, marker in self.pointDict.items(): - if (point.getPointType() == DNASuitPoint.FRONTDOORPOINT): + if ((point.getPointType() == DNASuitPoint.FRONTDOORPOINT) + or (point.getPointType() == DNASuitPoint.SIDEDOORPOINT)): lbIndex = point.getLandmarkBuildingIndex() if (lbIndex == int(block)): marker.setColor(1,0,0,1) @@ -3129,6 +3161,9 @@ class LevelEditor(NodePath, PandaObject): if (point.getPointType() == DNASuitPoint.FRONTDOORPOINT): marker.setColor(0,0,1,1) marker.setScale(0.5) + elif (point.getPointType() == DNASuitPoint.SIDEDOORPOINT): + marker.setColor(0,0.6,0.2,1) + marker.setScale(0.5) self.showLandmarkBlockToggleGroup=None def pdbBreak(self): @@ -3670,7 +3705,7 @@ class LevelStyleManager: windows.add(awning) # Add a door if necessary if style['door_texture']: - door = DNADoor() + door = DNAFlatDoor() # Set the door's attributes door.setCode(style['door_texture']) door.setColor(style['door_color']) @@ -3715,7 +3750,11 @@ class LevelStyleManager: color = child.getColor() print ('door_color: Vec4(%.3f, %.3f, %.3f, 1.0)' % (color[0], color[1], color[2])) - # MRM: Check for awnings here + elif DNAClassEqual(child, DNA_FLAT_DOOR): + print 'door_texture: ' + child.getCode() + color = child.getColor() + print ('door_color: Vec4(%.3f, %.3f, %.3f, 1.0)' % + (color[0], color[1], color[2])) elif DNAClassEqual(child, DNA_CORNICE): print 'cornice_texture: ' + child.getCode() color = child.getColor() @@ -4325,6 +4364,9 @@ class DNAWallStyle: elif DNAClassEqual(child, DNA_DOOR): self.door_texture = child.getCode() self.door_color = child.getColor() + elif DNAClassEqual(child, DNA_FLAT_DOOR): + self.door_texture = child.getCode() + self.door_color = child.getColor() # MRM: Check for awnings here elif DNAClassEqual(child, DNA_CORNICE): self.cornice_texture = child.getCode() @@ -5454,6 +5496,7 @@ class LevelEditorPanel(Pmw.MegaToplevel): if ((objClass.eq(DNA_WALL)) or (objClass.eq(DNA_WINDOWS)) or (objClass.eq(DNA_DOOR)) or + (objClass.eq(DNA_FLAT_DOOR)) or (objClass.eq(DNA_CORNICE)) or (objClass.eq(DNA_PROP)) or (objClass.eq(DNA_SIGN)) or