You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
1 year ago
|
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
|
||
|
}
|
||
|
}
|