Exemplo n.º 1
0
    public PROJECT_ERROR_TYPE ModifyRefTableAfterRemoveSprite(string[] spritePathTable)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (null == spritePathTable)
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITEIMAGE_PATH);
        }

        foreach (var spriteItem in spritePathTable)
        {     //遍历全部移动Sprite
            foreach (var refAssetItem in ReferenceTable)
            { //遍历全部反依赖项目,并删除移动Sprite
                refAssetItem.ReferencingSprite.Remove(System.IO.Path.GetFileNameWithoutExtension(spriteItem));
            }
        }


        //删除无用反依赖记录
        for (int i = ReferenceTable.Count - 1; i >= 0; i--)
        {
            if (0 == ReferenceTable[i].ReferencingSprite.Count)
            {
                ReferenceTable.RemoveAt(i);
            }
        }


        return(errorType);
    }
Exemplo n.º 2
0
    public PROJECT_ERROR_TYPE UpdateAtlasReferenceTable(List <ReferenceInfo> refTable)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (null == refTable)
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_REFERENCEFILE_ERROR);
        }

        foreach (var refItem in refTable)
        {         //遍历所有反依赖项
            foreach (var refingSpriteItem in refItem.ReferencingSprite)
            {     //遍历每个反依赖项中引用的Sprite
                foreach (var spriteItem in spriteImages)
                { //遍历Atals中所有的Sprite
                    if (System.IO.Path.GetFileNameWithoutExtension(spriteItem.Path) == refingSpriteItem)
                    {
                        if (!spriteItem.ReferenceTable.Contains(refItem.ReferenceFilePath))
                        {
                            spriteItem.ReferenceTable.Add(refItem.ReferenceFilePath);
                        }
                        break;
                    }
                }
            }
        }

        ReferenceTable    = refTable;
        referenceTableBak = ReferenceTable;

        return(errorType);
    }
Exemplo n.º 3
0
    public PROJECT_ERROR_TYPE Save(bool test)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (string.IsNullOrEmpty(Path))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_PROJECTFILE_PATHERROR);
        }

        do
        {
            //制作持久化对象
            AtlasSerializeObject obj = GetSerializeObject();
            if (null == obj)
            {
                break;
            }

            obj.SaveAtlasSerializeObject(Path, obj);

            IsModify = false;
        } while (false);

        return(errorType);
    }
Exemplo n.º 4
0
    private bool IsProjectFailed(PROJECT_ERROR_TYPE errorType)
    {
        bool bRet = false;

        if (errorType != PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE)
        {
            bRet = true;
        }

        return(bRet);
    }
Exemplo n.º 5
0
    public PROJECT_ERROR_TYPE GetProjectFailedType()
    {//获取工程失败类型
        PROJECT_ERROR_TYPE type = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (m_Project != null)
        {
            type = m_Project.ProjectFailedType;
        }

        return(type);
    }
Exemplo n.º 6
0
    public PROJECT_ERROR_TYPE AddItemToAtlasReferenceTable(ReferenceInfo refItem)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (string.IsNullOrEmpty(refItem.ReferenceFilePath))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_REFERENCEFILE_ERROR);
        }

        ReferenceTable.Add(refItem);

        return(errorType);
    }
Exemplo n.º 7
0
    public PROJECT_ERROR_TYPE ModifyRefTableAfterAddSprite(AtlasSpriteImage[] spriteImageTable)
    {
        PROJECT_ERROR_TYPE errorType  = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;
        AtlasSpriteImage   tempSprite = null;
        ReferenceInfo      refInfo    = null;

        if (null == spriteImageTable)
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITEIMAGE_PATH);
        }

        foreach (var spriteItem in spriteImageTable)
        {
            if (!FindSprite(spriteItem.Path, ref tempSprite))
            {
                continue;
            }

            //更新Sprite反依赖
            tempSprite.ReferenceTable = spriteItem.ReferenceTable;

            //更新Atlas反依赖
            foreach (var assetItem in spriteItem.ReferenceTable)
            {
                if (!FindRefAssetFile(assetItem, ref refInfo))
                {
                    ReferenceInfo newInfo = new ReferenceInfo();
                    newInfo.ReferenceFilePath = assetItem;
                    newInfo.ReferencingSprite.Add(System.IO.Path.GetFileNameWithoutExtension(spriteItem.Path));

                    ReferenceTable.Add(newInfo);
                }
                else
                {
                    if (!FindRefAssetSprite(assetItem, System.IO.Path.GetFileNameWithoutExtension(spriteItem.Path)))
                    {
                        refInfo.ReferencingSprite.Add(System.IO.Path.GetFileNameWithoutExtension(spriteItem.Path));
                    }
                }
            }
        }

        return(errorType);
    }
Exemplo n.º 8
0
    public PROJECT_ERROR_TYPE GetSpriteImageZoom(string spritePath, out float scaleFactor)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        scaleFactor = 0f;
        if (string.IsNullOrEmpty(spritePath))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITEIMAGE_PATH);
        }

        AtlasSpriteImage spriteImage = null;

        if (GetSpriteImage(spritePath, out spriteImage))
        {
            scaleFactor = spriteImage.ZoomScale;
        }

        return(errorType);
    }
Exemplo n.º 9
0
    public PROJECT_ERROR_TYPE AddItemToSpriteReferenceTable(string spritePath, string refItem)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (string.IsNullOrEmpty(spritePath))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_REFERENCEFILE_ERROR);
        }

        foreach (var item in spriteImages)
        {
            if (item.Path == spritePath)
            {
                item.ReferenceTable.Add(refItem);
                break;
            }
        }

        return(errorType);
    }
Exemplo n.º 10
0
    public PROJECT_ERROR_TYPE AddSpriteImage(AtlasSpriteImage spriteImage)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (null == spriteImage)
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_UNKNOWN);
        }

        do
        {
            if (CheckSpriteImagePath(spriteImage.Path))
            {
                foreach (var sprite in spriteImages)
                {
                    if (sprite.Path == spriteImage.Path)
                    {
                        //更新错误类型
                        errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITE_EXIST;
                        break;
                    }
                }
                if (IsProjectFailed(errorType))
                {
                    break;
                }
                AtlasSpriteImage newSpriteImage = spriteImage;
                //添加小图
                spriteImages.Add(newSpriteImage);
                IsModify = true;
            }
            else
            {
                errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITEIMAGE_PATH;
                break;
            }
        } while (false);

        return(errorType);
    }
Exemplo n.º 11
0
    public PROJECT_ERROR_TYPE GetSpriteRefTable(string spritePath, ref List <string> refAssetList)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        refAssetList = new List <string>();

        if (string.IsNullOrEmpty(spritePath))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_SPRITEIMAGE_PATH);
        }

        foreach (var item in spriteImages)
        {
            if (item.Path == spritePath)
            {
                refAssetList = item.ReferenceTable;
                break;
            }
        }

        return(errorType);
    }
Exemplo n.º 12
0
    //public bool Load(string path)
    //{//读取工程文件

    //    bool bRet = true;

    //    if (string.IsNullOrEmpty(path))
    //    {
    //        errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_LOAD_ERRORPATH;
    //        return false;
    //    }

    //    do
    //    {
    //        AtlasSerializeObject obj = null;

    //        AtlasSerializeObject.LoadAtlasSerializeObject(path, out obj);
    //        if(null == obj)
    //        {
    //            bRet = false;
    //            errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_PROJECTFILE_ERROR;

    //            break;
    //        }

    //        //更新小图信息
    //        ApplySerializeObject(obj);

    //        //更新工程名,工程路径
    //        Path = path;
    //        Name = System.IO.Path.GetFileNameWithoutExtension(path);
    //        imagePath = atlasSavePath + name + ".png";
    //        describePath = atlasSavePath + name + ".prefab";

    //        //更新工程类型、是否修改
    //        ProjectType = PROJECT_TYPE.PROJECT_TYPE_EXIST;

    //        IsModify = false;

    //    } while (false);

    //    return bRet;
    //}

    public PROJECT_ERROR_TYPE Load(string path)
    {
        PROJECT_ERROR_TYPE errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE;

        if (string.IsNullOrEmpty(path))
        {
            return(PROJECT_ERROR_TYPE.PROJECT_ERROR_LOAD_ERRORPATH);
        }

        do
        {
            AtlasSerializeObject obj = null;

            AtlasSerializeObject.LoadAtlasSerializeObject(path, out obj);
            if (null == obj)
            {
                errorType = PROJECT_ERROR_TYPE.PROJECT_ERROR_PROJECTFILE_ERROR;
                break;
            }

            //更新小图信息
            ApplySerializeObject(obj);

            //更新工程名,工程路径
            Path         = path;
            Name         = System.IO.Path.GetFileNameWithoutExtension(path);
            imagePath    = atlasSavePath + name + ".png";
            describePath = atlasSavePath + name + ".prefab";

            //更新工程类型、是否修改
            ProjectType = PROJECT_TYPE.PROJECT_TYPE_EXIST;

            IsModify = false;
        } while (false);

        return(errorType);
    }