示例#1
0
        Texture2D ILibaryHandle.GetTexture2d(string objName)
        {
            string       _type    = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_Texture2D];
            FileStateObj stateObj = GetFileStateObj(_type, objName);

            if (stateObj != null)
            {
                if (stateObj.m_Asset == null)
                {
                    stateObj.m_Asset = ResLibaryTool.readLocalTexture2d(stateObj.m_Path);
                    stateObj.m_Quote = 0;
                }
                Texture2D t = (Texture2D)stateObj.m_Asset;
                if (t != null && stateObj.m_ExistStatus == AssetExistStatusEnum.Quote)
                {
                    stateObj.m_Quote++;
                }
                if (stateObj.m_ExistStatus == AssetExistStatusEnum.Once)
                {
                    stateObj.m_Asset = null;
                }
                return(t);
            }

            return(null);
        }
示例#2
0
        Sprite ILibaryHandle.GetSprite(string objName)
        {
            string       _type    = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_Texture2D];
            FileStateObj stateObj = GetFileStateObj(_type, objName);

            if (stateObj != null)
            {
                Sprite spr = null;
                if (stateObj.m_Asset == null)
                {
                    Texture2D t = ((ILibaryHandle)this).GetTexture2d(objName);
                    if (t != null)
                    {
                        stateObj.m_Asset = Sprite.Create(t, new Rect(0, 0, t.width, t.height), Vector2.zero);
                    }
                }
                spr = (Sprite)stateObj.m_Asset;
                if (spr != null && stateObj.m_ExistStatus == AssetExistStatusEnum.Quote)
                {
                    stateObj.m_Quote++;
                }
                if (stateObj.m_ExistStatus == AssetExistStatusEnum.Once)
                {
                    stateObj.m_Asset = null;
                }
                return(spr);
            }

            return(null);
        }
示例#3
0
        string ILibaryHandle.GetTextAsset(string objName)
        {
            string       _type    = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_TextAsset];
            FileStateObj stateObj = GetFileStateObj(_type, objName);

            if (stateObj != null)
            {
                string path = stateObj.m_Path;
                string str  = null;
                if (stateObj.m_Asset == null)
                {
                    stateObj.m_Asset = ResLibaryTool.LoadFileStr(path);
                }
                ;
                str = (string)stateObj.m_Asset;
                if (str != null && stateObj.m_ExistStatus == AssetExistStatusEnum.Quote)
                {
                    stateObj.m_Quote++;
                }
                if (stateObj.m_ExistStatus == AssetExistStatusEnum.Once)
                {
                    stateObj.m_Asset = null;
                }
                return(str);
            }
            return(null);
        }
        private IEnumerator InitLibaryAssetSetting(List <ResourceSettingStateObj> list, int iterationsPerFrame = 200)
        {
            int iterations = 0;
            HashSet <ResourceSettingStateObj> array = new HashSet <ResourceSettingStateObj>(list);

            foreach (var item in array)
            {
                string _type = item.m_Type;
                if (!resourceDict.ContainsKey(_type))
                {
                    resourceDict[_type] = new Dictionary <string, FileStateObj>();
                }
                Dictionary <string, FileStateObj> dict = resourceDict[_type];
                FileStateObj resobj = new FileStateObj(item);


                dict[item.m_Name] = resobj;
                LibaryStateObj libaryObj = new LibaryStateObj();
                libaryObj.m_Name   = item.m_Name;
                libaryObj.m_Status = LibaryStatusEnum.DIR_STREAMINGASSET;
                libaryObj.m_Type   = item.m_Type;
                libaryObj.m_Path   = resobj.m_Path;

                if (item.m_ExistStatus == AssetExistStatusEnum.Globle && ResLibaryConfig.ExistTypeNameToType.ContainsKey(resobj.m_Type))
                {
                    switch (ResLibaryConfig.ExistTypeNameToEnum[resobj.m_Type])
                    {
                    case LibaryTypeEnum.LibaryType_Texture2D:
                    case LibaryTypeEnum.LibaryType_TextAsset:
                    case LibaryTypeEnum.LibaryType_Sprite:
                        resobj.m_Asset = ((ILibaryHandle)this).GetUnityObject(_type, resobj.m_Name);
                        break;

                    default:
                        break;
                    }
                }
                if (UpdateAssetCallback != null)
                {
                    UpdateAssetCallback(libaryObj);
                }
                //ResLibaryMgr.Instance.UpdateLibary(libaryObj);
                if (iterationsPerFrame > 0 && ++iterations % iterationsPerFrame == 0)
                {
                    yield return(1);
                }
            }
        }
示例#5
0
        LibaryExistStatusEnum ILibaryHandle.TryGetObject(LibaryTypeEnum libaryTypeEnum, string objName, out object data)
        {
            data = null;
            LibaryExistStatusEnum libaryExistStatusEnum = LibaryExistStatusEnum.NONE;

            if (!ResLibaryConfig.ExistType.ContainsKey(libaryTypeEnum))
            {
                return(libaryExistStatusEnum);
            }
            string _type = ResLibaryConfig.ExistType[libaryTypeEnum];

            switch (libaryTypeEnum)
            {
            case LibaryTypeEnum.LibaryType_Texture2D:
                libaryExistStatusEnum = LibaryExistStatusEnum.LibaryExistStatus_UnityEngineObject;
                data = ((ILibaryHandle)this).GetTextAsset(objName);
                break;

            case LibaryTypeEnum.LibaryType_TextAsset:
                libaryExistStatusEnum = LibaryExistStatusEnum.LibaryExistStatus_NotUnityEngineObject_TextAsset;
                data = ((ILibaryHandle)this).GetTexture2d(objName);
                break;

            case LibaryTypeEnum.LibaryType_AudioClip:
                libaryExistStatusEnum = LibaryExistStatusEnum.LibaryExistStatus_NotUnityEngineObject_NotRead_FilePath;
                FileStateObj fobjAudio = GetFileStateObj(_type, objName);
                if (fobjAudio != null)
                {
                    data = fobjAudio.m_Path;
                }
                break;

            case LibaryTypeEnum.LibaryType_VideoClip:
            case LibaryTypeEnum.LibaryType_MovieTexture:
                libaryExistStatusEnum = LibaryExistStatusEnum.LibaryExistStatus_NotUnityEngineObject_NotRead_FilePath;
                FileStateObj fobjVideo = GetFileStateObj(_type, objName);
                if (fobjVideo != null)
                {
                    data = fobjVideo.m_Path;
                }
                break;
            }
            return(libaryExistStatusEnum);
        }
示例#6
0
        public void UpdateLibary(string localUrl, AssetExistStatusEnum assetStatus = AssetExistStatusEnum.Quote)
        {
            FileInfo file = new FileInfo(localUrl);

            if (file.Exists)
            {
                string       existension = file.Extension;
                FileStateObj fileObj     = null;
                if (ResLibaryConfig.ResourceTxtExts.Contains(existension))
                {
                    fileObj        = new FileStateObj();
                    fileObj.m_Path = localUrl;
                    fileObj.m_Type = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_TextAsset];
                    if (assetStatus == AssetExistStatusEnum.Globle)
                    {
                        fileObj.m_Asset = ResLibaryTool.LoadFileStr(localUrl);
                    }
                }
                else if (ResLibaryConfig.ResourceImgExts.Contains(existension))
                {
                    fileObj        = new FileStateObj();
                    fileObj.m_Path = localUrl;
                    fileObj.m_Type = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_Texture2D];
                    FileStateObj sfObj = new FileStateObj();
                    sfObj.m_Path = localUrl;
                    sfObj.m_Type = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_Sprite];
                    if (assetStatus == AssetExistStatusEnum.Globle)
                    {
                        Texture2D tex2d = ResLibaryTool.readLocalTexture2d(localUrl);
                        fileObj.m_Asset = tex2d;
                        sfObj.m_Asset   = Sprite.Create(tex2d, new Rect(0, 0, tex2d.width, tex2d.height), Vector2.zero);
                    }
                    string fullFileName = System.IO.Path.GetFileName(localUrl);
                    //int position = fullFileName.LastIndexOf(".");
                    string fileName = System.IO.Path.GetFileNameWithoutExtension(localUrl);//fullFileName.Substring(0, position - 1);
                    sfObj.m_Name = fileName;
                    if (!resourceDict.ContainsKey(sfObj.m_Type))
                    {
                        resourceDict[sfObj.m_Type] = new Dictionary <string, FileStateObj>();
                    }
                    Dictionary <string, FileStateObj> dict = resourceDict[sfObj.m_Type];
                    dict[sfObj.m_Name] = sfObj;
                    LibaryStateObj libaryObj = new LibaryStateObj();
                    libaryObj.m_Name   = sfObj.m_Name;
                    libaryObj.m_Status = LibaryStatusEnum.DIR_FILE;
                    libaryObj.m_Type   = sfObj.m_Type;
                    libaryObj.m_Path   = localUrl;
                    if (UpdateAssetCallback != null)
                    {
                        UpdateAssetCallback(libaryObj);
                    }
                    //ResLibaryMgr.Instance.UpdateLibary(libaryObj);
                }
                else if (ResLibaryConfig.ResourceVideoExts.Contains(existension))
                {
                    fileObj         = new FileStateObj();
                    fileObj.m_Path  = localUrl;
                    fileObj.m_Type  = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_VideoClip];
                    fileObj.m_Asset = localUrl;
                }
                else if (ResLibaryConfig.ResourceAudioExts.Contains(existension))
                {
                    fileObj         = new FileStateObj();
                    fileObj.m_Path  = localUrl;
                    fileObj.m_Type  = ResLibaryConfig.ExistType[LibaryTypeEnum.LibaryType_AudioClip];
                    fileObj.m_Asset = localUrl;
                }
                if (fileObj != null)
                {
                    string fullFileName = System.IO.Path.GetFileName(localUrl);
                    //int position = fullFileName.LastIndexOf(".");
                    string fileName = System.IO.Path.GetFileNameWithoutExtension(localUrl);//fullFileName.Substring(0, position - 1);
                    fileObj.m_Name = fileName;
                    if (!resourceDict.ContainsKey(fileObj.m_Type))
                    {
                        resourceDict[fileObj.m_Type] = new Dictionary <string, FileStateObj>();
                    }
                    Dictionary <string, FileStateObj> dict = resourceDict[fileObj.m_Type];
                    dict[fileObj.m_Name] = fileObj;
                    LibaryStateObj libaryObj = new LibaryStateObj();
                    libaryObj.m_Name   = fileObj.m_Name;
                    libaryObj.m_Status = LibaryStatusEnum.DIR_FILE;
                    libaryObj.m_Type   = fileObj.m_Type;
                    libaryObj.m_Path   = localUrl;
                    if (UpdateAssetCallback != null)
                    {
                        UpdateAssetCallback(libaryObj);
                    }
                    //ResLibaryMgr.Instance.UpdateLibary(libaryObj);
                }
            }
        }