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 | ||
|  |     } | ||
|  | } |