Пример #1
0
    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";
    }
Пример #2
0
    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");
    }
Пример #3
0
    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();
    }