Beispiel #1
0
    static void OnAddImageBtn(EditorControl c)
    {     //[添加小图]按钮压下处理函数
        if (!UIAtlasEditorModel.GetInstance().IsProjectExist())
        { //工程不存在
            //提示创建工程的Message
            EditorUtility.DisplayDialog("添加失败",
                                        "请先创建工程",
                                        "确认");
        }
        else
        {//工程存在
            //初始化添加小图对话框信息
            OpenFileDialog openfiledialog1 = new OpenFileDialog();
            InitializeOpenFileDialog(openfiledialog1);

            //显示添加小图对话框
            if (openfiledialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                for (int fi = 0; fi < openfiledialog1.FileNames.Length; fi++)
                {
                    //执行添加小图命令
                    AtlasAddSpriteImageCommand cmd = new AtlasAddSpriteImageCommand();
                    cmd.m_SpriteName = openfiledialog1.FileNames[fi].ToString();
                    EditorCommandManager.GetInstance().Add(cmd);
                    m_bIsOperateSaved = false;

                    RegisterUndo("Add SpriteImage");
                }
            }

            RequestRepaint();
        }
    }
Beispiel #2
0
    static void DeleteSpriteImage(object command)
    {//删除小图
        if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0))
        {
            return;
        }

        List <string> deleteSpriteName = new List <string>();

        foreach (var index in m_spriteListView.SelectItems)
        {
            ListCtrlItem deleteItem = m_spriteListView.Items[index];
            deleteSpriteName.Add(deleteItem.tooltip);
        }

        foreach (var item in deleteSpriteName)
        {
            AtlasDeleteSpriteImageCommand cmd = new AtlasDeleteSpriteImageCommand();
            cmd.m_SpriteName = item;
            EditorCommandManager.GetInstance().Add(cmd);

            RegisterUndo("Delete SpriteImage");
        }

        m_bIsOperateSaved = false;

        RequestRepaint();
    }
Beispiel #3
0
    static void OnClearCurrentProject()
    {//清空当前工程信息
        if ((m_spriteListView == null) || (m_projTreeView == null))
        {
            return;
        }

        //清空小图List
        m_spriteListView.ClearItems();
        m_spriteListView.LastSelectItem = -1;

        //清空工程List
        m_projTreeView.ClearItems();

        //初始化画面显示
        ClearCurrentView();

        //清空命令
        EditorCommandManager.GetInstance().Clear();

        //清空命令计数器
        m_CommandCounter.CommandCounter    = 0;
        m_CommandCounter.PreCommandCounter = 0;

        m_bIsOperateSaved = true;

        RequestRepaint();
    }
Beispiel #4
0
    static void OnUndoRedo()
    {//Undo/Redo 命令响应函数
        int commandCount = 0;

        if (m_CommandCounter == null)
        {
            return;
        }

        if (m_CommandCounter.IsRedo(out commandCount))
        {//当前操作是Redo
            for (int i = 0; i < commandCount; i++)
            {
                EditorCommandManager.GetInstance().PerformRedo();
            }
        }
        else
        {//当前操作是Undo
            for (int i = 0; i < commandCount; i++)
            {
                EditorCommandManager.GetInstance().PerformUndo();
            }
        }

        //更新前次命令计数器
        m_CommandCounter.PreCommandCounter = m_CommandCounter.CommandCounter;
    }
Beispiel #5
0
    static void OnMakeAtlasCommand(bool bRet)
    {//Atlas生成完响应函数
        if (bRet)
        {
            //提示生成成功
            EditorUtility.DisplayDialog("生成成功",
                                        "Atlas生成完毕\n\n" + "相关文件保存至\"" + UIAtlasEditorModel.GetInstance().GetAtlasSavePath() + "\"",
                                        "确认");
            m_bIsOperateSaved = false;
        }
        else
        {
            if (PROJECT_ERROR_TYPE.PROJECT_ERROR_ATLASOUTPU_PATH
                == UIAtlasEditorModel.GetInstance().GetProjectFailedType())
            {//未指定Atlas输出路径
                //显示选择路径对话框
                string savePath = EditorUtility.SaveFolderPanel("请选择Atlas文件的输出路径", "Assets/", "");

                if (savePath.Contains("/Assets"))
                {//路径合法(Unity相对路径)
                    //获取Unity相对路径
                    savePath = savePath.Substring(UnityEngine.Application.dataPath.Length - "Assets".Length);

                    //设定Atlas输出路径
                    UIAtlasEditorModel.GetInstance().SetAtlasSavePath(savePath + "/");

                    //执行“生成Atlas”命令
                    AtlasMakeAtlas cmd = new AtlasMakeAtlas();
                    EditorCommandManager.GetInstance().Add(cmd);

                    m_bIsOperateSaved = false;

                    RegisterUndo("Make Atlas");
                }
                else
                {
                    //提示输出路径错误message
                    EditorUtility.DisplayDialog("生成失败",
                                                "请选择Assets/下的路径",
                                                "确认");
                }
            }
            else if (PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE_IMAGE
                     == UIAtlasEditorModel.GetInstance().GetProjectFailedType())
            {//未添加小图
                //提示添加小图message
                EditorUtility.DisplayDialog("生成失败",
                                            "请添加小图资源",
                                            "确认");
            }
            else
            {
                //do nothing
            }
        }

        RequestRepaint();
    }
Beispiel #6
0
    static void OnMakeAtlasBtn(EditorControl c)
    {     //[生成Atlas]按钮压下处理函数
        if (!UIAtlasEditorModel.GetInstance().IsProjectExist())
        { //工程未创建
            //提示创建工程message
            EditorUtility.DisplayDialog("生成失败",
                                        "请先创建工程",
                                        "确认");
        }
        else
        {//工程已存在
            AtlasMakeAtlas cmd = new AtlasMakeAtlas();
            EditorCommandManager.GetInstance().Add(cmd);
            m_bIsOperateSaved = false;

            RegisterUndo("Make Atlas");
        }

        RequestRepaint();
    }
Beispiel #7
0
    static void OnDisable(EditorRoot root)
    {//窗口无效回调函数
        if (UIAtlasEditorModel.GetInstance().IsProjectExist())
        {
            if (!m_bIsOperateSaved)
            {
                if (EditorUtility.DisplayDialog("保存工程", "是否保存当前工程", "保存", "取消"))
                {
                    OnSaveProjBtn(null);
                }
            }
        }

        UIAtlasTempTextureManager.DestroyInstance();
        UIAtlasEditorModel.GetInstance().DestoryInstance();
        EditorCommandManager.GetInstance().Clear();
        Undo.undoRedoPerformed -= OnUndoRedo;
        GameObject.DestroyImmediate(m_Counter);
        GameObject.DestroyImmediate(m_previewObj);
    }
Beispiel #8
0
    static void OnSpriteInspector(EditorControl c, object target)
    {//小图属性窗口显示
        int    w, h;
        string oldStr     = null;
        string SpriteName = null;

        if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0))
        {
            return;
        }

        ListCtrlItem deleteItem = m_spriteListView.Items[m_spriteListView.LastSelectItem];

        SpriteName = deleteItem.tooltip;

        GUILayout.Space(20f);

        GUILayout.BeginHorizontal();
        GUILayout.Label("宽高比", GUILayout.Width(60f));
        GUILayout.TextField(m_aspecet.ToString(), GUILayout.Width(150));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("宽度", GUILayout.Width(60f));
        GUI.SetNextControlName("宽度");
        oldStr           = m_spriteWidthStr;
        m_spriteWidthStr = GUILayout.TextField(m_spriteWidthStr, GUILayout.Width(150));
        if ((GUI.GetNameOfFocusedControl() == "宽度") && (oldStr != m_spriteWidthStr))
        {
            int.TryParse(m_spriteWidthStr, out w);
            h = (int)(w / m_aspecet);
            m_spriteHeightStr = h.ToString();
        }
        GUILayout.Label("pix", GUILayout.Width(50f));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("高度", GUILayout.Width(60f));
        GUI.SetNextControlName("高度");
        oldStr            = m_spriteHeightStr;
        m_spriteHeightStr = GUILayout.TextField(m_spriteHeightStr, GUILayout.Width(150));
        if ((GUI.GetNameOfFocusedControl() == "高度") && (oldStr != m_spriteHeightStr))
        {
            int.TryParse(m_spriteHeightStr, out h);
            w = (int)(h * m_aspecet);
            m_spriteWidthStr = w.ToString();
        }
        GUILayout.Label("pix", GUILayout.Width(50f));
        GUILayout.EndHorizontal();

        if (Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.Used)
        {
            if (GUI.GetNameOfFocusedControl() == "高度" || GUI.GetNameOfFocusedControl() == "宽度")
            {
                AtlasSpriteImage      spriteImage = null;
                AtlasImageZoomCommand cmd         = null;
                Texture2D             tex         = null;

                int.TryParse(m_spriteWidthStr, out w);
                int.TryParse(m_spriteHeightStr, out h);

                cmd = new AtlasImageZoomCommand();
                UIAtlasEditorModel.GetInstance().GetSpriteImage(SpriteName, out spriteImage);
                tex = UIAtlasEditorModel.GetInstance().GetSpriteTexture(SpriteName);
                if (tex == null)
                {
                    return;
                }

                cmd.m_oldScaleFactor = spriteImage.ZoomScale;
                cmd.m_newScaleFactor = (float)w / (float)tex.width;
                cmd.m_SpriteName     = SpriteName;
                EditorCommandManager.GetInstance().Add(cmd);

                m_bIsOperateSaved = false;

                RegisterUndo("Zoom Image");
            }
        }

        //RequestRepaint();
    }