private static Dictionary <string, PartReferer> GetCurrentPartRefererDict() { Dictionary <string, PartReferer> lastPartRefererDict = new Dictionary <string, PartReferer>(); int counter = 0; if (EditorUtils.MakeSureAssetFolderExist(CC2D_RES_PATH)) { string[] foundPartReferers = AssetDatabase.FindAssets(SEARCH_PARTREFERER_FILTER, m_searchPartRefererPath); foreach (var partRefGuid in foundPartReferers) { string partRefPath = AssetDatabase.GUIDToAssetPath(partRefGuid); PartReferer partRefObject = AssetDatabase.LoadAssetAtPath <PartReferer>(partRefPath); lastPartRefererDict.Add(partRefPath, partRefObject); EditorUtility.DisplayProgressBar("Load Current Part Referers", partRefObject.name, (float)counter / foundPartReferers.Length); counter++; } EditorUtility.ClearProgressBar(); } return(lastPartRefererDict); }
private static string InitPartReferer(Part partObject, Dictionary <string, PartReferer> lastPartRefererDict) { string relativePartRefPath = WizardUtils.RelativePartPath(partObject); string partRefPath = CC2D_RES_PATH + "/" + relativePartRefPath; if (EditorUtils.MakeSureAssetFolderExist(partRefPath.Remove(partRefPath.LastIndexOf("/")))) { if (lastPartRefererDict.TryGetValue(partRefPath, out PartReferer result)) { AssignPartReferer(partObject, result); lastPartRefererDict.Remove(partRefPath); } else { PartReferer newPartReferer = ScriptableObject.CreateInstance <PartReferer>(); AssignPartReferer(partObject, newPartReferer); AssetDatabase.CreateAsset(newPartReferer, partRefPath); } partObject.datapath = CC2D_RES_FOLDER + "/" + relativePartRefPath.Remove(relativePartRefPath.LastIndexOf(".asset")); } return(partRefPath); }