static void InsertBlankPage() { var obj = Selection.activeGameObject; GameObject panel_root_prefab = AssetDatabase.LoadAssetAtPath("Assets/Zyndo/Prefabs/PanelRoot.prefab", typeof(GameObject)) as GameObject; GameObject page_root = GameObject.Instantiate(panel_root_prefab); page_root.transform.parent = GameObject.Find("Pages").transform; //insert this page between the connected pages //if (obj != null) //{ //} //otherwise, just add it to the pages object //else //{ //add page component and details var page = page_root.AddComponent <Page>(); //calc unique id page.uniquePageID = GameObjectFromTextures.hash6432shift(System.DateTime.Now.Ticks); //place at origin page_root.transform.position = Vector3.zero; //} page_root.name = "Blank_Page_Object"; }
public static void UpdatePanels(bool force = false) { int numImagesProcessed = 0; foreach (var obj in Selection.gameObjects) { string updatedText = String.Format("{0}/{1} Pages Complete", numImagesProcessed, Selection.gameObjects.Length); if (EditorUtility.DisplayCancelableProgressBar("Progress", updatedText, (float)numImagesProcessed / Selection.gameObjects.Length)) { EditorUtility.ClearProgressBar(); return; } //var old_name = obj.name; //obj.name = "temp"; var page = obj.GetComponent <Page>(); if (page.psdAsset == "" || !File.Exists(page.psdAsset)) { page.psdAsset = FindPSDFromHint(obj.name); } var psd_obj = AssetDatabase.LoadAssetAtPath(page.psdAsset, typeof(UnityEngine.Object)); string filePath = AssetDatabase.GetAssetOrScenePath(psd_obj); try { PsdLayerExtractor extractor = new PsdLayerExtractor(null, psd_obj, filePath, null); string curr_md5 = extractor.CalcMd5(); if (curr_md5 != page.md5 || force) { Debug.Log("Checksum inequality. Updating psd asset: " + extractor.PsdFilePath); var psd_name = extractor.PsdFileName.Split('.')[0]; var dataLayers = new List <PSDLayerData>(); ExtractLayers(ref dataLayers, ref extractor); var new_obj = GameObjectFromTextures.CreateUIObject(dataLayers, extractor); new_obj.name = "temp"; //merge in new sprits, but try to retain other settings MergeTwoPanels(obj, new_obj); //update checksum page.md5 = curr_md5; } else { Debug.Log("Checksum equality. Skipping psd asset update: " + extractor.PsdFilePath); } ++numImagesProcessed; } catch (Exception E) { Debug.Log(E.ToString()); } } EditorUtility.ClearProgressBar(); EditorUtility.DisplayDialog("Update Panels", String.Format("{0} Page(s) Complete", numImagesProcessed), "Okay"); }
public static void CreatePanelsFromPSD() { //try to get a sense of how many pages have already been added //var pages = GameObject.Find("Pages"); int counter = 0; //if (pages != null) // counter = pages.transform.childCount; var move_vec = new Vector3(1, 0, 0); //order the selection var assetNames = new List <string>(); foreach (var id in Selection.assetGUIDs) { assetNames.Add(AssetDatabase.GUIDToAssetPath(id)); } var sorted = assetNames.OrderBy(x => x).ToList(); //loop through the asset selection foreach (var id in sorted) { var psd_obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(id); PsdLayerExtractor extractor = new PsdLayerExtractor(null, psd_obj, id, null); var psd_name = extractor.PsdFileName.Split('.')[0]; string updatedText = String.Format("{0}/{1} PSDs Complete: {2}.psd", counter, sorted.Count(), psd_name); if (EditorUtility.DisplayCancelableProgressBar("Progress", updatedText, (float)counter / sorted.Count())) { EditorUtility.ClearProgressBar(); return; } var dataLayers = new List <PSDLayerData>(); ExtractLayers(ref dataLayers, ref extractor); //var textures = new List<Texture>(); //ExtractTextures(textures, extractor); var new_obj = GameObjectFromTextures.CreateUIObject(dataLayers, extractor); //now create the layers on the animator var page_id = new_obj.GetComponent <Page>().uniquePageID; new_obj.GetComponent <Page>().psdAsset = id; //move the panel along x-axis for simplified viz new_obj.transform.position += counter * 10f * move_vec; counter++; } EditorUtility.ClearProgressBar(); }