Exemple #1
0
{//Atlas编辑器工程实现
    #region 工程相关处理函数
    public bool NewPorject(string projectName)
    {//创建工程
        bool bRet = true;

        //清空当前工程
        ClearCurrentProject();

        //创建工程对象
        if (null == m_Project)
        {
            m_Project      = new AtlasProject();
            m_Project.Name = Path.GetFileNameWithoutExtension(projectName);
            m_Project.Path = projectName;
        }

        //执行新建工程回调
        if (onNewProject != null)
        {
            onNewProject();
        }

        //设定工程类型
        m_Project.ProjectType = PROJECT_TYPE.PROJECT_TYPE_NEW;

        return(bRet);
    }
Exemple #2
0
    public bool LoadProject(string projectName)
    {//打开工程
        bool bRet = true;

        do
        {
            //清空当前工程
            ClearCurrentProject();

            //创建新工程
            m_Project = new AtlasProject();

            //读取工程文件
            m_Project.Load(projectName);

            //依次载入工程中全部小图
            List <AtlasSpriteImage> sprites = m_Project.GetAllSprites();
            foreach (var sprite in sprites)
            {
                LoadSpriteImage(sprite.Path);
                if (onSpriteImageLoad != null)
                {
                    onSpriteImageLoad(sprite.Path);
                }
            }

            //设定工程类型
            m_Project.ProjectType = PROJECT_TYPE.PROJECT_TYPE_EXIST;

            WriteRecentOpenProjectPath(m_Project.Path);
        } while (false);


        return(bRet);
    }
Exemple #3
0
    private PREFAB_EXIST_INFO CheckProjectWithoutPrefab(AtlasProject project)
    {
        PREFAB_EXIST_INFO prefabInfo = PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_IN_SEARCHDIR;

        if (null == project)
        {
            return(prefabInfo);
        }

        if (!File.Exists(project.DescribePath))
        {
            prefabInfo = PREFAB_EXIST_INFO.PREFAB_FILE_NOT_EXIST;
        }
        else
        {
            if (!project.DescribePath.Contains(m_inputInfo.AtlasPrefabDir))
            {
                prefabInfo = PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_NOTIN_SEARCHDIR;
            }
            else
            {
                prefabInfo = PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_IN_SEARCHDIR;
            }
        }

        return(prefabInfo);
    }
Exemple #4
0
    public CONSISTENCY_ANALYSE_ERROR_TYPE AnalyseSingleAtlasConsistent(AtlasProject project, out AtlasConsistencyAnalyseResult analyseResult)
    {
        CONSISTENCY_ANALYSE_ERROR_TYPE errorType = CONSISTENCY_ANALYSE_ERROR_TYPE.CONSISTENCY_ANALYSE_ERROR_NONE;

        analyseResult = null;

        if (null == project)
        {
            return(CONSISTENCY_ANALYSE_ERROR_TYPE.CONSISTENCY_ANALYSE_ERROR_TARGETPROJECT_ERROR);
        }

        errorType = CheckProjectConsistencyInfo(project, out analyseResult);

        return(errorType);
    }
Exemple #5
0
    private List <string> GetAllSpritePathInProject(AtlasProject project)
    {
        List <string> spriteNameTbl = new List <string>();

        if (null == project)
        {
            return(spriteNameTbl);
        }

        List <AtlasSpriteImage> spriteTable = project.GetAllSprites();

        foreach (var item in spriteTable)
        {
            spriteNameTbl.Add(item.Path);
        }

        return(spriteNameTbl);
    }
Exemple #6
0
    private void CheckUnConsistentSpriteInProject(AtlasProject project, out bool isAtlasConsistent, out List <SpriteConsistencyInfo> consistencyInfoTbl)
    {
        consistencyInfoTbl = new List <SpriteConsistencyInfo>();
        isAtlasConsistent  = true;

        if (null == project)
        {
            return;
        }

        List <string> spriteNameTblInProject = GetAllSpritePathInProject(project);
        List <string> spriteNameTblInPrefab  = GetAllSpriteNameInPrefab(project.DescribePath);

        //查找project
        foreach (var item in spriteNameTblInProject)
        {
            SpriteConsistencyInfo newConsistencyInfo = new SpriteConsistencyInfo();
            string spriteNameWithoutExt = Path.GetFileNameWithoutExtension(item);

            if (spriteNameTblInPrefab.Contains(spriteNameWithoutExt))
            {
                if (!File.Exists(@item))
                {
                    newConsistencyInfo.SpriteName      = spriteNameWithoutExt;
                    newConsistencyInfo.ProjectPath     = project.Path;
                    newConsistencyInfo.ExistInProject  = true;
                    newConsistencyInfo.ExistInPrefab   = true;
                    newConsistencyInfo.ExistInSourceAB = false;
                    newConsistencyInfo.IsConsistent    = false;

                    consistencyInfoTbl.Add(newConsistencyInfo);
                }

                //从prefab中移除该Sprite
                spriteNameTblInPrefab.Remove(spriteNameWithoutExt);
            }
            else
            {
                if (!File.Exists(item))
                {
                    newConsistencyInfo.ExistInSourceAB = false;
                }
                else
                {
                    newConsistencyInfo.ExistInSourceAB = true;
                }

                newConsistencyInfo.SpriteName     = spriteNameWithoutExt;
                newConsistencyInfo.ProjectPath    = project.Path;
                newConsistencyInfo.ExistInProject = true;
                newConsistencyInfo.ExistInPrefab  = false;
                newConsistencyInfo.IsConsistent   = false;

                consistencyInfoTbl.Add(newConsistencyInfo);
            }
        }

        //查找prefab
        if (spriteNameTblInPrefab.Count != 0)
        {
            List <string> sourcePicFilePath = UniversalEditorUtility.GetAllFileNameWithoutExtension(m_inputInfo.SourceSpriteDir);

            foreach (var item in spriteNameTblInPrefab)
            {
                SpriteConsistencyInfo newConsistencyInfo = new SpriteConsistencyInfo();
                if (!sourcePicFilePath.Contains(item))
                {
                    newConsistencyInfo.ExistInSourceAB = false;
                }
                else
                {
                    newConsistencyInfo.ExistInSourceAB = true;
                }

                newConsistencyInfo.SpriteName     = item;
                newConsistencyInfo.ProjectPath    = project.Path;
                newConsistencyInfo.ExistInProject = false;
                newConsistencyInfo.ExistInPrefab  = true;
                newConsistencyInfo.IsConsistent   = false;

                consistencyInfoTbl.Add(newConsistencyInfo);
            }
        }


        if (0 == consistencyInfoTbl.Count)
        {
            isAtlasConsistent = true;
        }
        else
        {
            isAtlasConsistent = false;
        }
    }
Exemple #7
0
    private CONSISTENCY_ANALYSE_ERROR_TYPE CheckProjectConsistencyInfo(AtlasProject project, out AtlasConsistencyAnalyseResult analyseResult)
    {
        CONSISTENCY_ANALYSE_ERROR_TYPE errorType = CONSISTENCY_ANALYSE_ERROR_TYPE.CONSISTENCY_ANALYSE_ERROR_NONE;

        analyseResult = new AtlasConsistencyAnalyseResult();

        if (null == project)
        {
            return(CONSISTENCY_ANALYSE_ERROR_TYPE.CONSISTENCY_ANALYSE_ERROR_TARGETPROJECT_ERROR);
        }

        PREFAB_EXIST_INFO prefabInfo = PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_IN_SEARCHDIR;

        prefabInfo = CheckProjectWithoutPrefab(project);

        if (PREFAB_EXIST_INFO.PREFAB_FILE_NOT_EXIST == prefabInfo)
        {//Prefab不存在
            AtlasConsistencyInfo consistencyInfo = new AtlasConsistencyInfo();

            consistencyInfo.ConsistencyType = ATLASCONSISTENCY_TYPE.ATLAS_UNCONSISTENT_FOR_PREFAB_NOT_EXIST;
            consistencyInfo.AtlasFilePath   = project.Path;

            analyseResult.AnalyseResult = ANALYSERESULT_TYPE.ANALYSERESULT_UNCONSISTENT;
            analyseResult.ConsistencyInfo.Add(consistencyInfo);
        }
        else
        {//prefab存在
            bool isSpriteConsistent = true;
            List <SpriteConsistencyInfo> spriteConsistencyInfoTbl = null;

            CheckUnConsistentSpriteInProject(project, out isSpriteConsistent, out spriteConsistencyInfoTbl);
            if (isSpriteConsistent)
            {     //sprite一致
                if (PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_NOTIN_SEARCHDIR == prefabInfo)
                { //Prefab不在查找目录内
                    AtlasConsistencyInfo consistencyInfo = new AtlasConsistencyInfo();

                    consistencyInfo.ConsistencyType = ATLASCONSISTENCY_TYPE.ATLAS_CONSISTENT_WITH_PREFAB_NOTIN_SEARCHPATH_WARNING;
                    consistencyInfo.AtlasFilePath   = project.Path;

                    analyseResult.AnalyseResult = ANALYSERESULT_TYPE.ANALYSERESULT_CONSISTENT_WITH_WARNING;
                    analyseResult.ConsistencyInfo.Add(consistencyInfo);
                }
                else
                {
                    analyseResult.AnalyseResult = ANALYSERESULT_TYPE.ANALYSERESULT_CONSISTENT;
                }
            }
            else
            {//Sprite不一致
                AtlasConsistencyInfo consistencyInfo = new AtlasConsistencyInfo();

                if (PREFAB_EXIST_INFO.PREFAB_FILE_EXIST_NOTIN_SEARCHDIR == prefabInfo)
                {//Prefab不在查找目录内
                    consistencyInfo.ConsistencyType = ATLASCONSISTENCY_TYPE.ATLAS_UNCONSISTENT_FOR_SPRITE_NOT_SAME_WITH_PREFAB_NOTIN_SEARCHPATH_WARNING;
                }
                else
                {//Prefab在查找目录内
                    consistencyInfo.ConsistencyType = ATLASCONSISTENCY_TYPE.ATLAS_UNCONSISTENT_FOR_SPRITE_NOT_SAME;
                }
                consistencyInfo.AtlasFilePath            = project.Path;
                consistencyInfo.SpriteConsistencyInfoTbl = spriteConsistencyInfoTbl;

                analyseResult.AnalyseResult = ANALYSERESULT_TYPE.ANALYSERESULT_UNCONSISTENT;
                analyseResult.ConsistencyInfo.Add(consistencyInfo);
            }
        }

        return(errorType);
    }