Skip to content

Commit d537242

Browse files
authored
Merge pull request #316 from Unity-Technologies/UNI-39455-use-EditorClip-name-for-filename
UNI-39455 export using editor clip display name in filename
2 parents 6474c10 + 9dd89a7 commit d537242

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

Assets/FbxExporters/Editor/FbxExporter.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ public enum FbxNodeRelationType
189189
/// </summary>
190190
const string UniqueNameFormat = "{0}_{1}";
191191

192+
/// <summary>
193+
/// The animation fbx file format.
194+
/// </summary>
195+
const string AnimFbxFileFormat = "{0}/{1}@{2}.fbx";
196+
192197
/// <summary>
193198
/// Gets the export settings.
194199
/// </summary>
@@ -2963,23 +2968,25 @@ static void OnClipContextClick(MenuCommand command)
29632968
{
29642969
if (obj.GetType().Name.Contains("EditorClip"))
29652970
{
2966-
var selClip = obj.GetType ().GetProperty ("clip").GetValue (obj, null);
2967-
UnityEngine.Timeline.TimelineClip timeLineClip = selClip as UnityEngine.Timeline.TimelineClip;
2971+
var timeLineClip = GetPropertyFromObject<TimelineClip> (obj, "clip");
29682972

2969-
var selClipItem = obj.GetType ().GetProperty ("item").GetValue (obj, null);
2970-
var selClipItemParentTrack = selClipItem.GetType ().GetProperty ("parentTrack").GetValue (selClipItem, null);
2971-
AnimationTrack editorClipAnimationTrack = selClipItemParentTrack as AnimationTrack;
2973+
var selClipItem = GetPropertyFromObject<object>(obj, "item");
2974+
var editorClipAnimationTrack = GetPropertyFromObject<AnimationTrack> (selClipItem, "parentTrack");
29722975

29732976
GameObject animationTrackGObject = UnityEditor.Timeline.TimelineEditor.playableDirector.GetGenericBinding (editorClipAnimationTrack) as GameObject;
29742977

2975-
string filePath = folderPath + "/" + animationTrackGObject.name + "@" + timeLineClip.animationClip.name + ".fbx";
2978+
string filePath = string.Format(AnimFbxFileFormat, folderPath, animationTrackGObject.name, timeLineClip.displayName);
29762979
UnityEngine.Object[] myArray = new UnityEngine.Object[] { animationTrackGObject, timeLineClip.animationClip };
29772980

29782981
ExportObjects (filePath, myArray, AnimationExportType.timelineAnimationClip);
29792982
}
29802983
}
29812984
}
29822985

2986+
private static T GetPropertyFromObject<T>(object obj, string propertyName) where T : class {
2987+
return obj.GetType ().GetProperty (propertyName).GetValue (obj, null) as T;
2988+
}
2989+
29832990
/// <summary>
29842991
/// Add an option "Export all Timeline clips" in the contextual GameObject menu.
29852992
/// </summary>
@@ -3028,7 +3035,7 @@ static void OnGameObjectWithTimelineContextClick(MenuCommand command)
30283035
GameObject atObject = pd.GetGenericBinding(output.sourceObject) as GameObject;
30293036
// One file by animation clip
30303037
foreach (TimelineClip timeLineClip in at.GetClips()) {
3031-
string filePath = folderPath + "/" + atObject.name + "@" + timeLineClip.animationClip.name + ".fbx";
3038+
string filePath = string.Format(AnimFbxFileFormat, folderPath, atObject.name, timeLineClip.animationClip.name);
30323039
UnityEngine.Object[] myArray = new UnityEngine.Object[] { atObject, timeLineClip.animationClip };
30333040
ExportObjects (filePath, myArray, AnimationExportType.timelineAnimationClip);
30343041

0 commit comments

Comments
 (0)