internal static void DuplicateSelectedAssets()
{
AssetDatabase.Refresh();
Object[] objects = Selection.objects;
bool flag = true;
foreach (Object obj2 in objects)
{
AnimationClip clip = obj2 as AnimationClip;
if (((clip == null) || ((clip.hideFlags & HideFlags.NotEditable) == HideFlags.None)) || !AssetDatabase.Contains(clip))
{
flag = false;
}
}
ArrayList list = new ArrayList();
bool flag2 = false;
if (flag)
{
foreach (Object obj3 in objects)
{
AnimationClip source = obj3 as AnimationClip;
if ((source != null) && ((source.hideFlags & HideFlags.NotEditable) != HideFlags.None))
{
string path = AssetDatabase.GenerateUniqueAssetPath(Path.Combine(Path.GetDirectoryName(AssetDatabase.GetAssetPath(obj3)), source.name) + ".anim");
AnimationClip dest = new AnimationClip();
EditorUtility.CopySerialized(source, dest);
AssetDatabase.CreateAsset(dest, path);
list.Add(path);
}
}
}
else
{
Object[] filtered = Selection.GetFiltered(typeof(Object), SelectionMode.Assets);
foreach (Object obj4 in filtered)
{
string assetPath = AssetDatabase.GetAssetPath(obj4);
string newPath = AssetDatabase.GenerateUniqueAssetPath(assetPath);
if (newPath.Length != 0)
{
flag2 |= !AssetDatabase.CopyAsset(assetPath, newPath);
}
else
{
flag2 |= true;
}
if (!flag2)
{
list.Add(newPath);
}
}
}
AssetDatabase.Refresh();
Object[] objArray6 = new Object[list.Count];
for (int i = 0; i < list.Count; i++)
{
objArray6[i] = AssetDatabase.LoadMainAssetAtPath(list[i] as string);
}
Selection.objects = objArray6;
}