From: <ror...@us...> - 2007-07-20 10:00:15
|
Revision: 110 http://roreditor.svn.sourceforge.net/roreditor/?rev=110&view=rev Author: rorthomas Date: 2007-07-20 03:00:13 -0700 (Fri, 20 Jul 2007) Log Message: ----------- * freeing of objects now working for terraineditor --> open multiple terrains * fixed bug within terrainparser.py Modified Paths: -------------- trunk/lib/ror/terrainparser.py trunk/lib/rorterraineditor/MainFrame.py trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py Modified: trunk/lib/ror/terrainparser.py =================================================================== --- trunk/lib/ror/terrainparser.py 2007-07-20 00:31:37 UTC (rev 109) +++ trunk/lib/ror/terrainparser.py 2007-07-20 10:00:13 UTC (rev 110) @@ -34,7 +34,6 @@ TerrainName = "" TerrainConfig = "" filename = "" - comments = {} trucks = [] loads = [] @@ -62,6 +61,9 @@ def __init__(self, filename): self.filename = filename content = self.loadFile(filename) + self.trucks = [] + self.loads = [] + self.objects = [] log().info("processing terrain file: %s" % filename) self.processTerrnFile(content) self.FixTerrainConfig(os.path.join(os.path.dirname(filename), self.TerrainConfig)) Modified: trunk/lib/rorterraineditor/MainFrame.py =================================================================== --- trunk/lib/rorterraineditor/MainFrame.py 2007-07-20 00:31:37 UTC (rev 109) +++ trunk/lib/rorterraineditor/MainFrame.py 2007-07-20 10:00:13 UTC (rev 110) @@ -214,6 +214,8 @@ self.terrainOgreWin.stickCurrentObjectToGround = self.btnStickToGround.GetValue() def updateObjPosRot(self, event=None): + if self.terrainOgreWin.terrain is None: + return if self.terrainOgreWin.selectedEntry is None: self.statusbar.SetStatusText("", 1) return @@ -242,12 +244,13 @@ # pass def OnChangeTerrainNameChange(self, event=None): - self.terrainOgreWin.TerrainName = self.terrainNamectrl.GetValue() + self.terrainOgreWin.terrain.TerrainName = self.terrainNamectrl.GetValue() def OnChangeWaterLevel(self, event=None): - self.terrainOgreWin.terrain.WaterHeight = self.waterlevelctrl.GetValue() - self.waterLevelText.Label = "Water Level: %0.1f" % (self.terrainOgreWin.terrain.WaterHeight) - self.terrainOgreWin.updateWaterPlane() + if not self.terrainOgreWin.terrain is None: + self.terrainOgreWin.terrain.WaterHeight = self.waterlevelctrl.GetValue() + self.waterLevelText.Label = "Water Level: %0.1f" % (self.terrainOgreWin.terrain.WaterHeight) + self.terrainOgreWin.updateWaterPlane() def OnChangeOgreSettings(self, event): getOgreManager().getRoot().showConfigDialog() @@ -290,7 +293,7 @@ dialog = wx.FileDialog(self, "Open Terrain", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) res = dialog.ShowModal() if res == wx.ID_OK: - self.fileopenmenu.Enable(False) + #self.fileopenmenu.Enable(False) self.filesavemenu.Enable(True) self.filesaveasmenu.Enable(True) filename = dialog.GetPath() @@ -305,11 +308,11 @@ #self.sharedOgreWin2 = RoRTerrainSelectedObjectTopOgreWindow(self.viewsplitterdown, wx.ID_ANY, self.terrainOgreWin) self.terrainOgreWin.LoadTerrain(filename) - - #update some controls if finished loading - self.waterlevelctrl.SetValue(self.terrainOgreWin.terrain.WaterHeight) - self.waterLevelText.Label = "Water Level: %0.1f" % (self.terrainOgreWin.terrain.WaterHeight) - self.terrainNamectrl.SetValue(self.terrainOgreWin.terrain.TerrainName) + if not self.terrainOgreWin.terrain is None: + #update some controls if finished loading + self.waterlevelctrl.SetValue(self.terrainOgreWin.terrain.WaterHeight) + self.waterLevelText.Label = "Water Level: %0.1f" % (self.terrainOgreWin.terrain.WaterHeight) + self.terrainNamectrl.SetValue(self.terrainOgreWin.terrain.TerrainName) def onViewObjectDetails(self, event=None): Modified: trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py =================================================================== --- trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-07-20 00:31:37 UTC (rev 109) +++ trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-07-20 10:00:13 UTC (rev 110) @@ -17,6 +17,7 @@ node = None entity = None data = None + manual = None class RoRTerrainOgreWindow(wxOgreWindow): @@ -219,6 +220,8 @@ self.RotateNode.setPosition(entity.getParentNode().getPosition()) def createArrows(self): + if not self.TranslateNode is None: + return #translation nodes n = self.sceneManager.getRootSceneNode().createChildSceneNode("movearrowsnode") nx = n.createChildSceneNode("movearrowsnodeX") @@ -307,7 +310,42 @@ self.arrowScale = self.selectedEntry.entity.getBoundingRadius() / 100 def free(self): - self.sceneManager.clearScene() + #self.sceneManager.clearScene() + self.sceneManager.destroyAllManualObjects() + + # try to clear things up + #try: + for key in self.entries.keys(): + entry = self.entries[key] + if not entry.node is None: + try: + entry.node.detachAllObjects() + self.sceneManager.destroySceneNode(entry.node.getName()) + except: + print "A" + pass + if not entry.entity is None: + try: + self.sceneManager.destroyEntity(entry.entity) + except: + print "B" + pass + if not entry.data is None: + del entry.data + del self.entries[key] + + + try: + self.waternode.detachAllObjects() + self.sceneManager.destroySceneNode(self.waternode) + self.sceneManager.destroyEntity(self.waterentity) + except: + pass + + self.terrain = None + self.entries = {} + #except: + # pass def updateDataStructures(self): for uuid in self.entries.keys(): @@ -327,7 +365,9 @@ if not self.terrain is None: self.free() + print filename self.terrain = RoRTerrain(filename) + print len(self.terrain.objects) cfgfile = os.path.join(os.path.dirname(filename), self.terrain.TerrainConfig) self.sceneManager.setWorldGeometry(cfgfile) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |