55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using System.IO;
|
|
using UnityEditor.VersionControl;
|
|
|
|
namespace UnityEditor.Timeline
|
|
{
|
|
static class FileUtility
|
|
{
|
|
internal static bool IsReadOnly(UnityEngine.Object asset)
|
|
{
|
|
return IsReadOnlyImpl(asset);
|
|
}
|
|
|
|
#if UNITY_2021_2_OR_NEWER
|
|
static bool IsReadOnlyImpl(UnityEngine.Object asset)
|
|
{
|
|
string assetPath = AssetDatabase.GetAssetPath(asset);
|
|
if (string.IsNullOrEmpty(assetPath))
|
|
return false;
|
|
|
|
if (Provider.enabled && VersionControlUtils.IsPathVersioned(assetPath))
|
|
{
|
|
return !AssetDatabase.CanOpenForEdit(asset, StatusQueryOptions.UseCachedIfPossible);
|
|
}
|
|
|
|
return (uint)(File.GetAttributes(assetPath) & FileAttributes.ReadOnly) > 0U;
|
|
}
|
|
#else
|
|
static bool IsReadOnlyImpl(UnityEngine.Object asset)
|
|
{
|
|
string assetPath = AssetDatabase.GetAssetPath(asset);
|
|
if (Provider.enabled)
|
|
{
|
|
if (!Provider.isActive)
|
|
return false;
|
|
|
|
Asset vcAsset = Provider.GetAssetByPath(assetPath);
|
|
if (Provider.IsOpenForEdit(vcAsset))
|
|
return false;
|
|
|
|
|
|
//I can't get any of the Provider checks to work, but here we should check for exclusive checkout issues.
|
|
return false;
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(assetPath))
|
|
{
|
|
return (File.GetAttributes(assetPath) & FileAttributes.ReadOnly) != 0;
|
|
}
|
|
return false;
|
|
}
|
|
#endif
|
|
}
|
|
}
|