{//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); }
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); }
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); }
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); }
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); }
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; } }
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); }