Ejemplo n.º 1
0
        public static void RefreshPartReferers()
        {
#if CC2D_RES
            AssetDatabase.ForceReserializeAssets(m_searchPathPath);
            AssetDatabase.Refresh();
            Dictionary <string, PartReferer> lastPartRefererDict = GetCurrentPartRefererDict();
            int counter   = 0;
            var partPacks = PartList.Static.partPacks;
            foreach (PartPack partPack in partPacks)
            {
                int counter2 = 0;
                foreach (Part partObject in partPack.parts)
                {
                    string partRefPath = InitPartReferer(partObject, lastPartRefererDict);
                    EditorUtility.DisplayProgressBar("Initialize Part Referers", WizardUtils.RelativePartPath(partObject),
                                                     (float)counter / partPacks.Count + (float)counter2 / partPack.parts.Count / partPacks.Count);
                    counter2++;
                }
                counter++;
            }
            counter = 0;
            foreach (var lastPartReferer in lastPartRefererDict)
            {
                AssetDatabase.DeleteAsset(lastPartReferer.Key);
                EditorUtility.DisplayCancelableProgressBar("Delete Unused Part Referers", lastPartReferer.Value.name,
                                                           (float)counter / lastPartRefererDict.Count);
                counter++;
            }
            AssetDatabase.Refresh();
            EditorUtility.UnloadUnusedAssetsImmediate(true);
            EditorUtility.ClearProgressBar();
#endif
        }
Ejemplo n.º 2
0
        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);
        }