Browse Source

*** empty log message ***

Mark Mine 25 years ago
parent
commit
5b5562336a
2 changed files with 66 additions and 269 deletions
  1. 3 19
      direct/src/directutil/DirectSession.py
  2. 63 250
      direct/src/leveleditor/LevelEditor.py

+ 3 - 19
direct/src/directutil/DirectSession.py

@@ -34,10 +34,6 @@ class DirectSession(PandaObject):
         self.fControl = 0
         self.fAlt = 0
         self.fShift = 0
-        self.in2DWidget = 0
-
-        self.mouseX = 0
-        self.mouseY = 0
 
         self.pos = VBase3()
         self.hpr = VBase3()
@@ -54,8 +50,7 @@ class DirectSession(PandaObject):
                              ('deselect', self.deselect),
                              ('deselectAll', self.deselectAll),
                              ('highlightAll', self.selected.highlightAll),
-                             ('preRemoveNodePath', self.deselect),
-                             ('in2DWidget', self.in2DWidget)]
+                             ('preRemoveNodePath', self.deselect)]
         self.keyEvents = ['left', 'right', 'up', 'down',
                           'escape', 'space', 'delete',
                           'shift', 'shift-up', 'alt', 'alt-up',
@@ -119,9 +114,6 @@ class DirectSession(PandaObject):
         self.readout.setText(' ')
         taskMgr.removeTasksNamed('followSelectedNodePath')
 
-    def in2DWidget(self):
-        self.in2DWidget = 1
-
     def enable(self):
         # Make sure old tasks are shut down
         self.disable()
@@ -202,18 +194,10 @@ class DirectSession(PandaObject):
 
     def inputHandler(self, input):
 	# Deal with keyboard and mouse input
-	if ((input != 'mouse1-up') & (input != 'mouse2-up') &
-            (input != 'mouse3-up')):
-            self.in2DWidget = 0
-            
         if input == 'mouse1':
-            messenger.send('handle2DMouse1')
-            if not self.in2DWidget:
-                messenger.send('handleMouse1')
+            messenger.send('handleMouse1')
         elif input == 'mouse1-up':
-            messenger.send('handle2DMouse1Up')
-            if not self.in2DWidget:
-                messenger.send('handleMouse1Up')
+            messenger.send('handleMouse1Up')
         elif input == 'mouse2': 
             messenger.send('handleMouse2')
         elif input == 'mouse2-up':

+ 63 - 250
direct/src/leveleditor/LevelEditor.py

@@ -1,77 +1,70 @@
 from PandaObject import *
 from PieMenu import *
 from OnscreenText import *
-from whrandom import *
 from Tkinter import *
 from DirectGeometry import *
 from SceneGraphExplorer import *
 from tkSimpleDialog import askstring
 from tkFileDialog import *
+from whrandom import *
 import Pmw
-import Dial
-import Floater
 import EntryScale
 import VectorWidgets
 import string
 
 
 class LevelEditor(NodePath, PandaObject):
+    """Class used to create a Toontown LevelEditor object"""
     def __init__(self,direct,parent = None):
         # Initialize superclass
         NodePath.__init__(self)
+        # Become the new node path
         self.assign(hidden.attachNewNode( NamedNode('LevelEditor')))
-
         # Record handle to direct session
         self.direct = direct
 	# Make sure direct is running
 	self.direct.enable()
+        # And only the appropriate handles are showing
         self.direct.widget.disableHandles(['x-ring', 'x-disc',
                                            'y-ring', 'y-disc',
                                            'z-post'])
-	# Create level editor dictionaries
+	# CREATE LEVEL EDITOR DICTIONARIES
 	# This dictionary stores information about new objects added
         # to the level
 	self.levelDictionary = {}
-	# This dictionary stores information about module hooks,
-        # grouped by level
-	self.hooksDictionary = {}
 	# This dictionary stores information about the various
         # pie menus in use
 	self.pieMenuDictionary = {}
-	# This dictionary stores all the different color palettes
-	self.colorPaletteDictionary = {}
 	# This dictionary stores info about current and possible
         # object attributes
 	self.attributeDictionary = {}
 	# This dictionary stores pleasing style combinations
 	self.styleDictionary = {}
+	# This dictionary stores all the different color palettes
+	self.colorPaletteDictionary = {}
         # This dictionary stores pointers to the various maps
         self.mapDictionary = {}
         self.activeMap = None
 
 	# DNAStorage instance for storing level DNA info
 	self.dnaStore = DNAStorage()
-	loadDNAFile(self.dnaStore, 'dna/storage.dna',
-                    CSDefault)
-        self.dnaOutputDir = 'ToontownCentral'
-        self.dnaOutputFile = 'toontown_working.dna'
-
+	loadDNAFile(self.dnaStore, 'dna/storage.dna', CSDefault)
 	# Top level DNA Data Object
-	self.levelObjectsDNA = DNAData('LevelObjects')
-
+	self.groupParentDNA = self.levelObjectsDNA = DNAData('LevelObjects')
 	# Create top level node
-	self.levelObjects = self.attachNewNode(NamedNode('LevelObjects'))
-
+	self.groupParent = self.levelObjects = self.attachNewNode(
+            NamedNode('LevelObjects'))
 	# Create a top level group
-	self.createTopLevelGroup()
-
-	# Set used to iterate over module categories
-	self.categorySet = []
+	#self.createTopLevelGroup()
 
 	self.selectedLevelObject = None
 	self.targetDNAObject = None
 	self.activeMenu = None
 
+        self.dnaOutputDir = 'ToontownCentral'
+        self.dnaOutputFile = 'toontown_working.dna'
+
+
         # Get a handle to the grid
 	self.grid = self.direct.grid
         self.showGrid(0)
@@ -125,7 +118,6 @@ class LevelEditor(NodePath, PandaObject):
 	self.enable()
 
     def initializeAttributeDictionary(self):
-
 	# Retrieve lists of available attributes from DNAStorage object
 	# Cornices
 	attributeList = self.getCatalogCodesSuffix('cornice', '_ur')
@@ -175,9 +167,6 @@ class LevelEditor(NodePath, PandaObject):
     def setBuildingHeight(self, height):
 	self.attributeDictionary['buildingHeight'] = height
 
-    def getCategorySet(self):
-	return self.categorySet
-
     def getCorniceColor(self):
 	return self.attributeDictionary['corniceColor']
 
@@ -230,9 +219,6 @@ class LevelEditor(NodePath, PandaObject):
             self.groupParent = nodePath
             self.groupParentDNA = parentDNA
 
-    def getHooksDictionary(self):
-	return self.hooksDictionary
-
     def getLevelDictionary(self):
 	return self.levelDictionary
 
@@ -363,9 +349,25 @@ class LevelEditor(NodePath, PandaObject):
     def getWindowTextures(self):
 	return self.attributeDictionary['windowTextures']
 
-    def destroy(self):
-	self.disable()
-	self.removeNode()
+    def enable(self):
+        self.reparentTo(render)
+	self.show()
+        self.accept('selectedNodePath', self.selectDNARoot)
+	self.accept('preRemoveNodePath', self.preRemoveNodePath)
+	self.accept('toggleMapViz', self.toggleMapViz)
+	self.accept('reparentNodePath', self.reparentNodePath)
+	self.accept('createNewLevelGroup', self.createNewLevelGroup)
+	self.accept('setNodePathName', self.setNodePathName)
+        self.accept('manipulateObjectCleanup', self.updateSelectedPose)
+	self.accept('SGEFlashNodePath', self.flashNodePath)
+        self.accept('SGESelectNodePath', self.selectNodePath)
+        self.accept('SGEIsolateNodePath', self.isolateNodePath)
+        self.accept('SGEToggle VizNodePath', self.toggleNodePathViz)
+        self.accept('SGESet ParentNodePath', self.setGroupParent)
+        self.accept('SGEAdd GroupNodePath', self.addGroupToSelected)
+	self.accept('showAll', self.showAll)
+	self.accept('p',self.plantSelectedNodePath)
+	self.enableManipulation()
 
     def disable(self):
 	self.direct.deselectAll()
@@ -388,6 +390,30 @@ class LevelEditor(NodePath, PandaObject):
 	self.ignore('p')
 	self.disableManipulation()
 
+    def destroy(self):
+	self.disable()
+	self.removeNode()
+
+    def resetLevel(self):
+	# Clear out all objects
+	self.direct.deselectAll()
+	children = self.levelObjects.getChildren()
+        for i in range(children.getNumPaths()):
+            path = children.getPath(i)
+            path.reparentTo(hidden)
+            path.remove()
+
+	# Create fresh DNA Object
+	self.levelObjectsDNA = DNAData('LevelObjects')
+
+	# Create new levelDictionary
+	self.levelDictionary = {}
+
+	# Create root node
+	#self.createTopLevelGroup()
+
+	self.grid.setPosHpr(0,0,0,0,0,0)
+
     def disableManipulation(self):
 	# Disable handling of mouse events
 	self.ignore('handleMouse3')
@@ -462,26 +488,6 @@ class LevelEditor(NodePath, PandaObject):
         self.activeMap = self.mapDictionary[mapName]
         self.activeMap.reparentTo(self.levelMap)
 
-    def enable(self):
-        self.reparentTo(render)
-	self.show()
-        self.accept('selectedNodePath', self.selectDNARoot)
-	self.accept('preRemoveNodePath', self.preRemoveNodePath)
-	self.accept('toggleMapViz', self.toggleMapViz)
-	self.accept('reparentNodePath', self.reparentNodePath)
-	self.accept('createNewLevelGroup', self.createNewLevelGroup)
-	self.accept('setNodePathName', self.setNodePathName)
-        self.accept('manipulateObjectCleanup', self.updateSelectedPose)
-	self.accept('SGEFlashNodePath', self.flashNodePath)
-        self.accept('SGESelectNodePath', self.selectNodePath)
-        self.accept('SGEIsolateNodePath', self.isolateNodePath)
-        self.accept('SGEToggle VizNodePath', self.toggleNodePathViz)
-        self.accept('SGESet ParentNodePath', self.setGroupParent)
-        self.accept('SGEAdd GroupNodePath', self.addGroupToSelected)
-	self.accept('showAll', self.showAll)
-	self.accept('p',self.plantSelectedNodePath)
-	self.enableManipulation()
-
     def enableManipulation(self):
 	# Enable interactive placement of a nodePath
 	# Turn off camera control
@@ -1594,178 +1600,6 @@ class LevelEditor(NodePath, PandaObject):
 	self.styleDictionary = (
             self.attributeDictionary['toontownCentralStyleDictionary'])
 
-    def initializeTheBurrrghStyleDictionary(self):
-	dictionary = {}
-	styleCount = 0
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_blank_ur',
-                      Vec4(0.417323, 0.15711, 0.15711, 1.0),
-                      'window_sm_square_ur',
-                      Vec4(0.874016, 0.654655, 0.329041, 1.0),
-                      'cornice_marble_ur',
-                      Vec4(0.76378, 0.572086, 0.287541, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.874016, 0.610097, 0.610097, 1.0),
-                      'window_sm_shuttered_ur',
-                      Vec4(0.874016, 0.548402, 0.329041, 1.0),
-                      None,
-                      None)
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.913386, 0.540868, 0.540868, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0778138, 0.472441, 0.314961, 1.0),
-                      'cornice_horizontal_ur',
-                      Vec4(1.0, 0.501961, 0.376471, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.913386, 0.540868, 0.540868, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0778138, 0.472441, 0.314961, 1.0),
-                      'cornice_shingles_ur',
-                      Vec4(0.732283, 0.511163, 0.511163, 1.0))
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_blank_ur',
-                      Vec4(0.384314, 0.305635, 0.187618, 1.0),
-                      'window_sm_round_ur',
-                      Vec4(0.779528, 0.489115, 0.293469, 1.0),
-                      'cornice_dental_ur',
-                      Vec4(0.574803, 0.38771, 0.340374, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_bricks_dr',
-                      Vec4(0.629921, 0.471823, 0.237147, 1.0),
-                      'window_sm_shuttered_ur',
-                      Vec4(1.0, 0.627451, 0.376471, 1.0),
-                      None,
-                      None)
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_board_ur',
-                      Vec4(0.929134, 0.153034, 0.153034, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0, 0.532747, 0.317894, 1.0),
-                      'cornice_shingles_ur',
-                      Vec4(0.944882, 0.715146, 0.659565, 1.0))
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_lg_brick_ur',
-                      Vec4(0.166003, 0.440945, 0.276671, 1.0),
-                      'window_md_curtains_ur',
-                      Vec4(0.17258, 0.637795, 0.450208, 1.0),
-                      None,
-                      None)
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_board_ur',
-                      Vec4(0.929134, 0.153034, 0.153034, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0, 0.532747, 0.317894, 1.0),
-                      None,
-                      None)
-
-	# Store this dictionary in the self.attributeDictionary
-	self.attributeDictionary['theBurrrghStyleDictionary'] = dictionary
-
-    def initializeMinniesMelodyLandStyleDictionary(self):
-	dictionary = {}
-	styleCount = 0
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_blank_ur',
-                      Vec4(0.417323, 0.15711, 0.15711, 1.0),
-                      'window_sm_square_ur',
-                      Vec4(0.874016, 0.654655, 0.329041, 1.0),
-                      'cornice_marble_ur',
-                      Vec4(0.76378, 0.572086, 0.287541, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.874016, 0.610097, 0.610097, 1.0),
-                      'window_sm_shuttered_ur',
-                      Vec4(0.874016, 0.548402, 0.329041, 1.0),
-                      None,
-                      None)
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.913386, 0.540868, 0.540868, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0778138, 0.472441, 0.314961, 1.0),
-                      'cornice_horizontal_ur',
-                      Vec4(1.0, 0.501961, 0.376471, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_sm_wood_ur',
-                      Vec4(0.913386, 0.540868, 0.540868, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0778138, 0.472441, 0.314961, 1.0),
-                      'cornice_shingles_ur',
-                      Vec4(0.732283, 0.511163, 0.511163, 1.0))
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_blank_ur',
-                      Vec4(0.384314, 0.305635, 0.187618, 1.0),
-                      'window_sm_round_ur',
-                      Vec4(0.779528, 0.489115, 0.293469, 1.0),
-                      'cornice_dental_ur',
-                      Vec4(0.574803, 0.38771, 0.340374, 1.0))
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_bricks_dr',
-                      Vec4(0.629921, 0.471823, 0.237147, 1.0),
-                      'window_sm_shuttered_ur',
-                      Vec4(1.0, 0.627451, 0.376471, 1.0),
-                      None,
-                      None)
-        
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_board_ur',
-                      Vec4(0.929134, 0.153034, 0.153034, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0, 0.532747, 0.317894, 1.0),
-                      'cornice_shingles_ur',
-                      Vec4(0.944882, 0.715146, 0.659565, 1.0))
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_lg_brick_ur',
-                      Vec4(0.166003, 0.440945, 0.276671, 1.0),
-                      'window_md_curtains_ur',
-                      Vec4(0.17258, 0.637795, 0.450208, 1.0),
-                      None,
-                      None)
-
-        styleCount = styleCount + 1
-        self.addStyle(dictionary, styleCount,
-                      'wall_md_board_ur',
-                      Vec4(0.929134, 0.153034, 0.153034, 1.0),
-                      'window_porthole_ur',
-                      Vec4(0.0, 0.532747, 0.317894, 1.0),
-                      None,
-                      None)
-
-	# Store this dictionary in the self.attributeDictionary
-	self.attributeDictionary['minniesMelodyLandStyleDictionary'] = dictionary
-
     def addDNAGroup(self,dnaGroup):
 	# Add hook to allow placement of a new dna Group of this type
         # by simply hitting the space bar
@@ -2294,8 +2128,7 @@ class LevelEditor(NodePath, PandaObject):
         # Reset DNA VIS Groups
         self.dnaStore.resetDNAVisGroups()
 	# Now load in new file
-	self.groupParent = loadDNAFile(self.dnaStore, filename,
-                                       CSDefault)
+	self.groupParent = loadDNAFile(self.dnaStore, filename, CSDefault)
  	# Make sure the topmost level object gets put under level objects dna
  	self.groupParentDNA = self.dnaStore.findDNAGroup(
             self.groupParent.getBottomArc())
@@ -2935,26 +2768,6 @@ class LevelEditor(NodePath, PandaObject):
                 # Update props placement to reflect current mouse position
                 dnaGroup.setPos(self.direct.selected.last.getPos())
 
-    def resetLevel(self):
-	# Clear out all objects
-	self.direct.deselectAll()
-	children = self.levelObjects.getChildren()
-        for i in range(children.getNumPaths()):
-            path = children.getPath(i)
-            path.reparentTo(hidden)
-            path.remove()
-
-	# Create fresh DNA Object
-	self.levelObjectsDNA = DNAData('LevelObjects')
-
-	# Create new levelDictionary
-	self.levelDictionary = {}
-
-	# Create root node
-	self.createTopLevelGroup()
-
-	self.grid.setPosHpr(0,0,0,0,0,0)
-
     def selectNodePath(self, aNodePath):
         # Select new node path
 	self.direct.select(aNodePath)
@@ -3322,8 +3135,6 @@ class LevelEditorPanel(Pmw.MegaToplevel):
         self.levelEditor.addLandmark(self.landmarkType)
 
     def setPropType(self,name):
-        import pdb
-        pdb.set_trace()
         self.propType = 'prop_' + name
         
     def addProp(self):
@@ -3360,7 +3171,9 @@ class LevelEditorPanel(Pmw.MegaToplevel):
             if ((objClass.eq(DNAWall.getClassType())) |
                 (objClass.eq(DNAWindows.getClassType())) |
                 (objClass.eq(DNADoor.getClassType())) |
-                (objClass.eq(DNACornice.getClassType()))):
+                (objClass.eq(DNACornice.getClassType())) |
+                (objClass.eq(DNAProp.getClassType()))
+                ):
                 self.levelEditor.updateObjColor(
                     self.levelEditor.targetDNAObject,
                     VBase4((color[0]/255.0),