Example #1
0
    public void Step()
    {
        int asyncLength = _asyncList.Count;

        for (int i = 0; i < asyncLength; ++i)
        {
            AsyncBlock block = _asyncList[i];
            Assert.IsNotNull(block);
            Assert.IsNotNull(block.request);

            if (!block.request.isDone)
            {
                continue;
            }

            UIView view = _createView((UIView)block.request.asset, block.parent);
            Assert.IsNotNull(view);

            if (block.callback != null)
            {
                block.callback(view);
            }

            _asyncList[i] = null;
        }

        for (int i = asyncLength - 1; i >= 0; --i)
        {
            if (_asyncList[i] == null)
            {
                _asyncList.RemoveAt(i);
            }
        }
    }
Example #2
0
        public bool CreateAsync <T>(string viewPath, OnViewCreated callback, Transform parent = null)
        {
            UIView viewPrefab;

            if (_assetCache.TryGetValue(viewPath, out viewPrefab))
            {
                UIView newView = _createView(viewPrefab, parent);
                if (callback != null)
                {
                    callback(newView);
                }
            }
            else
            {
                ResourceRequest request = Resources.LoadAsync <UIView>(viewPath);

                if (request == null)
                {
                    return(false);
                }
                AsyncBlock block = AsyncBlock.Create(viewPath, request, callback, parent);
                _asyncList.Add(block);
            }

            return(true);
        }
Example #3
0
        public static AsyncBlock Create(ResourceRequest p_request, OnViewCreated p_callback, Transform p_parent)
        {
            AsyncBlock block = new AsyncBlock();

            block.request  = p_request;
            block.callback = p_callback;
            block.parent   = p_parent;
            return(block);
        }
Example #4
0
        protected void AddAsyncBlock(IAsyncResult asyncResult, System.Net.Sockets.Socket socket, int flag)
        {
            AsyncBlock item = new AsyncBlock(asyncResult, socket, flag);

            lock (this._asyncBlocks)
            {
                this._asyncBlocks.Add(item);
            }
        }
Example #5
0
    public bool CreateAsync <T>(string viewPath, OnViewCreated callback, Transform parent = null)
    {
        ResourceRequest request = Resources.LoadAsync <UIView>("GUI/" + viewPath);

        if (request == null)
        {
            return(false);
        }

        AsyncBlock block = AsyncBlock.Create(request, callback, parent);

        _asyncList.Add(block);

        return(true);
    }
Example #6
0
            public static AsyncBlock Create <T>(string name, ResourceRequest p_request, Action <T> p_callback, Transform p_parent) where T : UIView
            {
                AsyncBlock block = new AsyncBlock();

                block.name     = name;
                block.request  = p_request;
                block.parent   = p_parent;
                block.callback = (view) =>
                {
                    if (p_callback != null)
                    {
                        p_callback((T)view);
                    }
                };
                return(block);
            }
Example #7
0
        public bool CreateAsync <T>(AssetRequest assetRequest, Action <T> callback) where T : UIView
        {
            Assert.IsFalse(String.IsNullOrEmpty(assetRequest.path));

            ResourceRequest request = Resources.LoadAsync <T>(assetRequest.path);

            if (request == null)
            {
                return(false);
            }

            AsyncBlock block = AsyncBlock.Create <T>(assetRequest.path, request, callback, assetRequest.parent);

            _asyncList.Add(block);

            return(true);
        }
Example #8
0
        private byte[] EndReadBlock(IAsyncResult async)
        {
            AsyncBlock ablock = async as AsyncBlock;

            if (ablock != null)
            {
                return(ablock.Buffer);
            }
            else
            {
                internalFileStream.EndRead(async);
                ablock = (AsyncBlock)async.AsyncState;
                if (_cache != null)
                {
                    var blockCopy = new byte[ablock.Buffer.Length];
                    Buffer.BlockCopy(ablock.Buffer, 0, blockCopy, 0, ablock.Buffer.Length);
                    _cache.SetBlock(_baseFileName, _level, _version, ablock.BlockNum, blockCopy);
                }
                return(ablock.Buffer);
            }
        }
Example #9
0
        public void Step(float deltaTime)
        {
            int asyncLength = _asyncList.Count;

            for (int i = 0; i < asyncLength; ++i)
            {
                AsyncBlock block = _asyncList[i];
                Assert.IsNotNull(block);
                Assert.IsNotNull(block.request);

                if (!block.request.isDone)
                {
                    continue;
                }

                Assert.IsNotNull(block.request.asset, "Asset: " + block.name + " couldn't be loaded!");

                UIView prefab = (UIView)block.request.asset;
                _assetCache.Add(block.name, prefab);
                UIView view = _createView(prefab, block.parent);
                Assert.IsNotNull(view);

                if (block.callback != null)
                {
                    block.callback(view);
                }

                _asyncList[i] = null;
            }

            for (int i = asyncLength - 1; i >= 0; --i)
            {
                if (_asyncList[i] == null)
                {
                    _asyncList.RemoveAt(i);
                }
            }
        }
Example #10
0
        IAsyncResult BeginReadBlock(byte[] block, int blockNum)
        {
            if (!FileExists)
            {
                return(null);
            }

            if (_cache != null)
            {
                byte[] cachedBlock = _cache.GetBlock(_baseFileName, _level, _version, blockNum);
                if (cachedBlock != null)
                {
                    return new AsyncBlock {
                               Buffer = cachedBlock, BlockNum = blockNum
                    }
                }
                ;
            }
            internalFileStream.Seek(blockNum * Config.SortedBlockSize, SeekOrigin.Begin);
            return(internalFileStream.BeginRead(block, 0, Config.SortedBlockSize, null, new AsyncBlock {
                Buffer = block,
                BlockNum = blockNum
            }));
        }

        byte[] EndReadBlock(IAsyncResult async)
        {
            AsyncBlock ablock = async as AsyncBlock;

            if (ablock != null)
            {
                return(ablock.Buffer);
            }
            else
            {
                internalFileStream.EndRead(async);
                ablock = (AsyncBlock)async.AsyncState;
                if (_cache != null)
                {
                    var blockCopy = (byte[])ablock.Buffer.Clone();

                    _cache.SetBlock(_baseFileName, _level, _version, ablock.BlockNum, blockCopy);
                }
                return(ablock.Buffer);
            }
        }

        byte[] ReadBlock(byte[] block, int blockNum)
        {
            if (_cache != null)
            {
                byte[] cachedBlock = _cache.GetBlock(_baseFileName, _level, _version, blockNum);
                if (cachedBlock != null)
                {
                    return(cachedBlock);
                }
            }
            internalFileStream.Seek(blockNum * Config.SortedBlockSize, SeekOrigin.Begin);
            internalFileStream.Read(block, 0, Config.SortedBlockSize);
            if (_cache != null)
            {
                var blockCopy = (byte[])block.Clone();
                _cache.SetBlock(_baseFileName, _level, _version, blockNum, blockCopy);
            }
            return(block);
        }
Example #11
0
 protected abstract bool CompleteOperation(AsyncBlock var);