internal void LoadBinaryAsset() { UseGUIDs.Clear(); //var assets = AssetDatabase.LoadAllAssetsAtPath(assetPath); //for (var i = 0;i < assets.Length; i++){ // Debug.Log(i + " : "+ assets[i].name + ":" + assets[i].GetType() + "\n" + // //EditorUtility.GetAssetPath(assets[i]) + "\n" // assets[i].GetHashCode() // ); //} var assetData = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object)); if (assetData is GameObject) { type = FR2_AssetType.MODEL; LoadGameObject(assetData as GameObject); } else if (assetData is TerrainData) { type = FR2_AssetType.TERRAIN; LoadTerrainData(assetData as TerrainData); } //Debug.Log("LoadBinaryAsset :: " + assetData + ":" + type); assetData = null; FR2_Unity.UnloadUnusedAssets(); }
public FR2_Asset(string guid) { this.guid = guid; type = FR2_AssetType.UNKNOWN; UseGUIDs = new List <string>(); ScriptSymbols = new List <string>(); ScriptTokens = new List <string>(); }
internal List <FR2_Asset> FindAssetsOfType(FR2_AssetType type) { var result = new List <FR2_Asset>(); foreach (var item in AssetMap) { if (item.Value.type != type) { continue; } result.Add(item.Value); } return(result); }
internal void LoadAssetInfo() { assetPath = AssetDatabase.GUIDToAssetPath(guid); if (string.IsNullOrEmpty(assetPath)) { state = FR2_AssetState.MISSING; return; } if (!assetPath.StartsWith("Assets/", StringComparison.Ordinal)) { #if FR2_DEBUG Debug.LogWarning("Something wrong ! Should never be here !\n" + assetPath + "\n" + guid); #endif return; } var info = new FileInfo(assetPath); assetName = info.Name; extension = info.Extension.ToLower(); assetFolder = assetPath.Substring(7, Mathf.Max(0, assetPath.Length - assetName.Length - 7)); // 7 = "Assets/".Length loaded = stamp == FR2_Unity.Epoch(info.LastWriteTime); if (Directory.Exists(info.FullName)) { type = FR2_AssetType.FOLDER; } else if (File.Exists(info.FullName)) { if (type == FR2_AssetType.UNKNOWN) { GuessAssetType(); } fileSize = info.Length; inEditor = assetPath.Contains("/Editor/"); inResources = assetPath.Contains("/Resources/"); inStreamingAsset = assetPath.Contains("/StreamingAsset/"); inPlugins = assetPath.StartsWith("Assets/Plugins/", StringComparison.Ordinal); fileInfoHash = info.Length + info.Extension; } else { state = FR2_AssetState.MISSING; } }
// --------------------------------- APIs ------------------------------ internal void GuessAssetType() { if (SCRIPT_EXTENSIONS.Contains(extension)) { type = FR2_AssetType.SCRIPT; } else if (REFERENCABLE_EXTENSIONS.Contains(extension)) { var isUnity = extension == ".unity"; type = isUnity ? FR2_AssetType.SCENE : FR2_AssetType.REFERENCABLE; if (extension == ".asset" || isUnity) { var buffer = new byte[5]; try { var stream = File.OpenRead(assetPath); stream.Read(buffer, 0, 5); stream.Close(); } #if FR2_DEBUG catch (Exception e) { Debug.LogWarning("Guess Asset Type error :: " + e + "\n" + assetPath); #else catch { #endif state = FR2_AssetState.MISSING; return; } var str = string.Empty; foreach (var t in buffer) { str += (char)t; } if (str != "%YAML") { type = FR2_AssetType.BINARY_ASSET; //var assetData = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Object)); //type = assetData is TerrainData ? FR2_AssetType.TERRAIN : FR2_AssetType.BINARY_ASSET; //assetData = null; //FR2_Unity.UnloadUnusedAssets(); } } } else if (extension == ".fbx") { type = FR2_AssetType.MODEL; } else if (extension == ".dll") { type = FR2_AssetType.DLL; } else { type = FR2_AssetType.NON_READABLE; } }