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); } } }
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); }
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); }
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); } }
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); }
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); }
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); }
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); } }
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); } } }
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); }
protected abstract bool CompleteOperation(AsyncBlock var);