예제 #1
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();
    }
예제 #2
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();
        }
    }
예제 #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();
    }
예제 #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;
    }
예제 #5
0
 public static EditorCommandManager GetInstance()
 {
     if (s_cmdManager == null)
     {
         s_cmdManager = new EditorCommandManager();
     }
     return(s_cmdManager);
 }
예제 #6
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();
    }
예제 #7
0
파일: EditorTool.cs 프로젝트: wachel/block
 public void Init(int w, int h, ModelViewer viewer, Browser browser, EditorCommandManager commandManager, GUISkin skin)
 {
     //width = w;
     //height = h;
     this.viewer         = viewer;
     this.browser        = browser;
     this.commandManager = commandManager;
     this.skin           = skin;
     initBlockType();
 }
예제 #8
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();
    }
예제 #9
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);
    }
예제 #10
0
    public void Init(Camera cam, EditorCommandManager commandManager)
    {
        //计算格子
        List <Vector3> tempLines = new List <Vector3>();

        for (int i = 0; i <= SpaceX * Const.ChunkSize; i++)
        {
            tempLines.Add(new Vector3(i, halfSpaceSize.y, 0) - halfSpaceSize);
            tempLines.Add(new Vector3(i, halfSpaceSize.y, SpaceY * Const.ChunkSize) - halfSpaceSize);
        }
        for (int j = 0; j <= SpaceY * Const.ChunkSize; j++)
        {
            tempLines.Add(new Vector3(0, halfSpaceSize.y, j) - halfSpaceSize);
            tempLines.Add(new Vector3(SpaceX * Const.ChunkSize, halfSpaceSize.y, j) - halfSpaceSize);
        }
        gridLines = tempLines.ToArray();
        //预处理光线
        rays = new Vector3[6][];
        {
            for (int i = 0; i < 6; i++)
            {
                rays[i] = TerrainTool.getRandomRays(9, i);
            }
        }
        DebugTool.Log("预处理光线追踪");

        camera = cam;
        this.commandManager = commandManager;
        blockManager        = new BlockManager();
        blockManager.create(SpaceX * Const.ChunkSize, SpaceY * Const.ChunkSize, SpaceZ * Const.ChunkSize, new BlockTypeFun());
        //blockManager.forEachChunk((BlockChunk chunk, int i, int j, int k) => {
        //    for (int x = 0; x < Const.ChunkSize; x++) {
        //        for (int y = 0; y < Const.ChunkSize; y++) {
        //            for (int z = 0; z < Const.ChunkSize; z++) {
        //                int gx = i * Const.ChunkSize + x;
        //                int gy = j * Const.ChunkSize + y;
        //                int gz = k * Const.ChunkSize + z;
        //                if ((new Vector3(gx, gy, gz) - new Vector3(SpaceX / 2.0f, SpaceY / 2.0f, SpaceZ / 2.0f) * Const.ChunkSize).magnitude < 10) {
        //                    chunk.setBlock(x, y, z, (int)BlockTypeEnum.Sand);
        //                }
        //            }
        //        }
        //    }
        //});

        rtm = new RayCastManager();
        rtm.create(blockManager.SizeX, blockManager.SizeY, blockManager.SizeZ);
        //rtm.moveTo(0, 0, 0, (int gx, int gy, int gz) => {
        //    return blockManager.getBlock(gx, gy, gz) != 0 ? RayCastBlockType.All : RayCastBlockType.Nothing;
        //});
        for (int x = 0; x < SpaceX * Const.ChunkSize; x++)
        {
            for (int y = 0; y < SpaceY * Const.ChunkSize; y++)
            {
                for (int z = 0; z < SpaceZ * Const.ChunkSize; z++)
                {
                    rtm.setBlock(x, y, z, blockManager.getBlock(x, y, z) != 0 ? RayCastBlockType.All : RayCastBlockType.Nothing);
                }
            }
        }

        bDirty = true;

        previewMesh = GLRender.createCubeMesh(0.5f, Color.white);
    }
예제 #11
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();
    }