@@ -89,7 +89,7 @@ private void ImportLevelItem(bool multiple = false)
89
89
}
90
90
91
91
// Export models from stage (Assimp)
92
- private void ExportLevelObj ( string fileName , bool selectedOnly )
92
+ private void ExportLevelObj ( string fileName , bool selectedOnly , bool exportSolidOnly , bool exportVisibleOnly )
93
93
{
94
94
int stepCount = 0 ;
95
95
int numSteps = 0 ;
@@ -98,13 +98,33 @@ private void ExportLevelObj(string fileName, bool selectedOnly)
98
98
stepCount = LevelData . TextureBitmaps [ LevelData . leveltexs ] . Length ;
99
99
numSteps = stepCount ;
100
100
}
101
- List < COL > cols = LevelData . geo . COL ;
102
- List < GeoAnimData > anims = LevelData . geo . Anim ;
101
+
102
+ //Sort out level data
103
+ List < LevelItem > items ;
104
+ List < GeoAnimData > anims ;
103
105
if ( selectedOnly )
104
106
{
105
- cols = selectedItems . Items . OfType < LevelItem > ( ) . Select ( a => a . CollisionData ) . ToList ( ) ;
107
+ items = selectedItems . Items . OfType < LevelItem > ( ) . ToList ( ) ;
106
108
anims = selectedItems . Items . OfType < LevelAnim > ( ) . Select ( a => a . GeoAnimationData ) . ToList ( ) ;
107
109
}
110
+ else
111
+ {
112
+ items = LevelData . LevelItems . ToList ( ) ;
113
+ anims = LevelData . geo . Anim ;
114
+ }
115
+
116
+ //Sort out collision and regular models
117
+ if ( exportSolidOnly )
118
+ {
119
+ items = items . Where ( a => a . Solid == true ) . ToList ( ) ;
120
+ }
121
+ else if ( exportVisibleOnly )
122
+ {
123
+ items = items . Where ( a => a . Visible == true ) . ToList ( ) ;
124
+ }
125
+
126
+ List < COL > cols = items . Select ( a => a . CollisionData ) . ToList ( ) ;
127
+
108
128
stepCount += cols . Count ;
109
129
stepCount += anims . Count ;
110
130
@@ -172,7 +192,7 @@ private void ExportLevelObj(string fileName, bool selectedOnly)
172
192
}
173
193
174
194
// Export C structs
175
- private void exportStructs ( string filename , bool selectedOnly )
195
+ private void exportStructs ( string filename , bool selectedOnly , bool exportOnlySolid , bool exportOnlyNonSolid )
176
196
{
177
197
LandTableFormat fmt = LevelData . geo . Format ;
178
198
switch ( fmt )
@@ -209,11 +229,31 @@ private void exportStructs(string filename, bool selectedOnly)
209
229
if ( selectedItem is LevelItem )
210
230
{
211
231
LevelItem levelItem = selectedItem as LevelItem ;
212
- string path = Path . Combine ( filename , levelItem . CollisionData . Model . Name + ".c" ) ;
213
- using ( StreamWriter sw = File . CreateText ( path ) )
232
+
233
+ //Only export based on collision flag
234
+ bool export = true ;
235
+ if ( exportOnlySolid )
214
236
{
215
- WriteStructMetadata ( sw , false , fmt , texnames ) ;
216
- levelItem . CollisionData . Model . ToStructVariables ( sw , usetBasicDXFormatToolStripMenuItem . Checked , labels , texnames ) ;
237
+ if ( levelItem . Solid == false )
238
+ {
239
+ export = false ;
240
+ }
241
+ } else if ( exportOnlyNonSolid )
242
+ {
243
+ if ( levelItem . Solid == true )
244
+ {
245
+ export = false ;
246
+ }
247
+ }
248
+
249
+ if ( export )
250
+ {
251
+ string path = Path . Combine ( filename , levelItem . CollisionData . Model . Name + ".c" ) ;
252
+ using ( StreamWriter sw = File . CreateText ( path ) )
253
+ {
254
+ WriteStructMetadata ( sw , false , fmt , texnames ) ;
255
+ levelItem . CollisionData . Model . ToStructVariables ( sw , usetBasicDXFormatToolStripMenuItem . Checked , labels , texnames ) ;
256
+ }
217
257
}
218
258
}
219
259
else if ( selectedItem is LevelAnim )
0 commit comments