11import sys
22import Pmw
3+ import os
34
45from tkinter import *
56from tkinter import ttk
7+ from tkinter .filedialog import asksaveasfilename
68
79from direct .showbase .TkGlobal import *
810from direct .tkwidgets import Floater
@@ -66,6 +68,11 @@ def __init__(self, levelEditor, parent = None, **kw):
6668 'Save DNA File' ,
6769 label = 'Save DNA' ,
6870 command = DNASerializer .outputDNADefaultFile )
71+ menuBar .addmenuitem ('Level Editor' , 'command' ,
72+ 'Export level as .BAM' ,
73+ label = 'Export as .BAM' ,
74+ command = self .exportToBam )
75+
6976 menuBar .addmenuitem ('Level Editor' , 'separator' )
7077 menuBar .addmenuitem ('Level Editor' , 'command' ,
7178 'Edit Visibility Groups' ,
@@ -84,6 +91,7 @@ def __init__(self, levelEditor, parent = None, **kw):
8491 'Make Street Along Curve' ,
8592 label = 'Make Street Along Curve' ,
8693 command = self .levelEditor .makeStreetAlongCurve )
94+
8795 menuBar .addmenuitem ('Level Editor' , 'separator' )
8896 menuBar .addmenuitem ('Level Editor' , 'command' ,
8997 'Exit Level Editor Panel' ,
@@ -206,7 +214,7 @@ def __init__(self, levelEditor, parent = None, **kw):
206214 'min' : 1 , 'max' : 60
207215 })
208216
209- #self.autoSaverDialogMax = Pmw.Counter(self.autoSaverDialog.interior(),
217+ # self.autoSaverDialogMax = Pmw.Counter(self.autoSaverDialog.interior(),
210218 # labelpos = 'w',
211219 # label_text = 'Max auto save files:',
212220 # entry_width = 10,
@@ -215,7 +223,7 @@ def __init__(self, levelEditor, parent = None, **kw):
215223 # 'min': 0, 'max': 99
216224 # })
217225
218- counters = (self .autoSaverEnable , self .autoSaverDialogInterval )# , self.autoSaverDialogMax)
226+ counters = (self .autoSaverEnable , self .autoSaverDialogInterval ) # , self.autoSaverDialogMax)
219227 Pmw .alignlabels (counters )
220228 for counter in counters :
221229 counter .pack (fill = 'both' , expand = 1 )
@@ -1515,7 +1523,7 @@ def setAutoSaverInterval(self, i):
15151523 try :
15161524 settings ['autosave-enabled' ] = bool (self .autoSaverEnabled .get ())
15171525 settings ['autosave-interval' ] = int (self .autoSaverDialogInterval .get ())
1518- #settings['autosave-max-files'] = float(self.autoSaverDialogMax.get())
1526+ # settings['autosave-max-files'] = float(self.autoSaverDialogMax.get())
15191527 # Reset the autosaver
15201528 AutoSaver .initializeAutoSaver ()
15211529 except ValueError as e :
@@ -1589,3 +1597,19 @@ def toggleDrive(self):
15891597 self .levelEditor .useDriveMode ()
15901598 else :
15911599 self .levelEditor .useDirectFly ()
1600+
1601+ def exportToBam (self ):
1602+ """
1603+ Export level geometry as .bam
1604+ :return:
1605+ """
1606+ path = Filename .expandFrom (userfiles ).toOsSpecific ()
1607+ if not os .path .isdir (path ):
1608+ path = '.'
1609+ fileName = asksaveasfilename (defaultextension = '.dna' ,
1610+ filetypes = (('Panda3D Model Files' , '*.bam' ), ('All files' , '*' )),
1611+ initialdir = path ,
1612+ title = 'Export as .BAM' ,
1613+ parent = self .component ('hull' ))
1614+ if fileName :
1615+ self .levelEditor .getNPToplevel ().writeBamFile (Filename .expandFrom (fileName ))
0 commit comments