private void OnGetProjectTreeCompleted(Error error, ProjectItem rootFolder, ProjectAsyncOperation ao, ProjectEventHandler callback) { m_root = rootFolder; for (int i = 0; i < m_staticReferences.Length; ++i) { AssetLibraryReference assetLibrary = m_staticReferences[i]; if (assetLibrary == null) { continue; } assetLibrary.Ordinal = i; m_assetDB.AddLibrary(assetLibrary, i); CleanupTree(m_root, i); MergeAssetLibrary(assetLibrary, i); } AssetItem[] assetItems = m_root.Flatten(true).OfType <AssetItem>().ToArray(); m_idToAssetItem = assetItems.ToDictionary(item => item.ItemID); for (int i = 0; i < assetItems.Length; ++i) { AssetItem assetItem = assetItems[i]; if (assetItem.Parts != null) { for (int j = 0; j < assetItem.Parts.Length; ++j) { PrefabPart prefabPart = assetItem.Parts[j]; if (prefabPart != null) { m_idToAssetItem.Add(prefabPart.PartID, assetItem); } } } } if (callback != null) { callback(error); } ao.Error = error; ao.IsCompleted = true; }