@@ -26,8 +26,6 @@ public abstract class ExportOptionsEditorWindow : EditorWindow
26
26
protected virtual GUIContent WindowTitle { get { return new GUIContent ( DefaultWindowTitle ) ; } }
27
27
28
28
protected string m_exportFileName = "" ;
29
- protected bool m_isTimelineAnim = false ;
30
- protected bool m_singleHierarchyExport = true ;
31
29
32
30
protected UnityEditor . Editor m_innerEditor ;
33
31
protected FbxExportPresetSelectorReceiver m_receiver ;
@@ -62,15 +60,9 @@ protected static T CreateWindow<T>() where T : EditorWindow {
62
60
return ( T ) EditorWindow . GetWindow < T > ( DefaultWindowTitle , focus : true ) ;
63
61
}
64
62
65
- protected virtual void InitializeWindow ( string filename = "" , bool singleHierarchyExport = true , bool isTimelineAnim = false ) {
66
- this . SetTitle ( ) ;
67
- this . SetFilename ( filename ) ;
68
- this . SetAnimationExportType ( isTimelineAnim ) ;
69
- this . SetSingleHierarchyExport ( singleHierarchyExport ) ;
70
- }
71
-
72
- private void SetTitle ( ) {
63
+ protected virtual void InitializeWindow ( string filename = "" ) {
73
64
this . titleContent = WindowTitle ;
65
+ this . SetFilename ( filename ) ;
74
66
}
75
67
76
68
protected void InitializeReceiver ( ) {
@@ -93,21 +85,6 @@ public void SetFilename(string filename){
93
85
m_exportFileName = filename . Remove ( extIndex ) ;
94
86
}
95
87
96
- public void SetAnimationExportType ( bool isTimelineAnim ) {
97
- m_isTimelineAnim = isTimelineAnim ;
98
- }
99
-
100
- public void SetSingleHierarchyExport ( bool singleHierarchy ) {
101
- m_singleHierarchyExport = singleHierarchy ;
102
-
103
- if ( m_innerEditor ) {
104
- var exportModelSettingsEditor = m_innerEditor as ExportModelSettingsEditor ;
105
- if ( exportModelSettingsEditor ) {
106
- exportModelSettingsEditor . SetIsSingleHierarchy ( m_singleHierarchyExport ) ;
107
- }
108
- }
109
- }
110
-
111
88
public void SaveExportSettings ( )
112
89
{
113
90
// save once preset selection is finished
@@ -275,14 +252,21 @@ public class ExportModelEditorWindow : ExportOptionsEditorWindow
275
252
protected override float MinWindowHeight { get { return 260 ; } }
276
253
private UnityEngine . Object [ ] m_toExport ;
277
254
278
- public static void Init ( IEnumerable < UnityEngine . Object > toExport , string filename = "" , bool isTimelineAnim = false )
255
+ private bool m_isTimelineAnim = false ;
256
+ private bool m_singleHierarchyExport = true ;
257
+ private bool m_isPlayableDirector = false ;
258
+
259
+ public static void Init ( IEnumerable < UnityEngine . Object > toExport , string filename = "" , bool isTimelineAnim = false , bool isPlayableDirector = false )
279
260
{
280
261
ExportModelEditorWindow window = CreateWindow < ExportModelEditorWindow > ( ) ;
281
262
int numObjects = window . SetGameObjectsToExport ( toExport ) ;
282
263
if ( string . IsNullOrEmpty ( filename ) ) {
283
264
filename = window . GetFilenameFromObjects ( ) ;
284
265
}
285
- window . InitializeWindow ( filename , singleHierarchyExport : numObjects == 1 , isTimelineAnim : isTimelineAnim ) ;
266
+ window . InitializeWindow ( filename ) ;
267
+ window . SetAnimationExportType ( isTimelineAnim ) ;
268
+ window . SetSingleHierarchyExport ( numObjects == 1 ) ;
269
+ window . SetIsPlayableDirector ( isPlayableDirector ) ;
286
270
window . Show ( ) ;
287
271
}
288
272
@@ -291,6 +275,34 @@ protected int SetGameObjectsToExport(IEnumerable<UnityEngine.Object> toExport){
291
275
return m_toExport . Length ;
292
276
}
293
277
278
+ private void SetAnimationExportType ( bool isTimelineAnim ) {
279
+ m_isTimelineAnim = isTimelineAnim ;
280
+ if ( m_isTimelineAnim ) {
281
+ ExportSettings . instance . exportModelSettings . SetModelAnimIncludeOption ( ExportModelSettingsSerialize . Include . Anim ) ;
282
+ }
283
+ if ( m_innerEditor ) {
284
+ var exportModelSettingsEditor = m_innerEditor as ExportModelSettingsEditor ;
285
+ if ( exportModelSettingsEditor ) {
286
+ exportModelSettingsEditor . DisableIncludeDropdown ( m_isTimelineAnim ) ;
287
+ }
288
+ }
289
+ }
290
+
291
+ private void SetSingleHierarchyExport ( bool singleHierarchy ) {
292
+ m_singleHierarchyExport = singleHierarchy ;
293
+
294
+ if ( m_innerEditor ) {
295
+ var exportModelSettingsEditor = m_innerEditor as ExportModelSettingsEditor ;
296
+ if ( exportModelSettingsEditor ) {
297
+ exportModelSettingsEditor . SetIsSingleHierarchy ( m_singleHierarchyExport ) ;
298
+ }
299
+ }
300
+ }
301
+
302
+ private void SetIsPlayableDirector ( bool isPlayableDirector ) {
303
+ m_isPlayableDirector = isPlayableDirector ;
304
+ }
305
+
294
306
protected string GetFilenameFromObjects ( ) {
295
307
var filename = "" ;
296
308
if ( m_toExport . Length == 1 ) {
@@ -306,18 +318,38 @@ protected override void OnEnable ()
306
318
base . OnEnable ( ) ;
307
319
if ( ! m_innerEditor ) {
308
320
m_innerEditor = UnityEditor . Editor . CreateEditor ( ExportSettings . instance . exportModelSettings ) ;
321
+ this . SetSingleHierarchyExport ( m_singleHierarchyExport ) ;
322
+ this . SetAnimationExportType ( m_isTimelineAnim ) ;
309
323
}
310
324
}
311
325
312
- protected override void Export ( ) {
313
- var filePath = ExportSettings . GetFbxAbsoluteSavePath ( ) ;
326
+ protected override bool DisableNameSelection ( )
327
+ {
328
+ return m_isPlayableDirector ;
329
+ }
314
330
315
- filePath = System . IO . Path . Combine ( filePath , m_exportFileName + ".fbx" ) ;
331
+ protected override void Export ( ) {
332
+ var folderPath = ExportSettings . GetFbxAbsoluteSavePath ( ) ;
333
+ var filePath = System . IO . Path . Combine ( folderPath , m_exportFileName + ".fbx" ) ;
316
334
317
335
if ( ! OverwriteExistingFile ( filePath ) ) {
318
336
return ;
319
337
}
320
338
339
+ if ( m_isPlayableDirector ) {
340
+ foreach ( var obj in m_toExport ) {
341
+ var go = ModelExporter . GetGameObject ( obj ) ;
342
+ if ( ! go ) {
343
+ continue ;
344
+ }
345
+ ModelExporter . ExportAllTimelineClips ( go , folderPath , ExportSettings . instance . exportModelSettings ) ;
346
+ }
347
+ // refresh the asset database so that the file appears in the
348
+ // asset folder view.
349
+ AssetDatabase . Refresh ( ) ;
350
+ return ;
351
+ }
352
+
321
353
if ( ModelExporter . ExportObjects ( filePath , m_toExport , ExportSettings . instance . exportModelSettings , timelineAnim : m_isTimelineAnim ) != null ) {
322
354
// refresh the asset database so that the file appears in the
323
355
// asset folder view.
0 commit comments