protected override void SelectionChanged(IList <int> selectedIds) { mHeaderState.UpdateItemColumnHeader(this); if (mIsSelectionChangedEventDisabled) { return; } List <UnityEngine.Object> assets = new List <UnityEngine.Object>(); foreach (ChangeInfo changeInfo in GetSelectedChanges(false)) { UnityEngine.Object asset = LoadAsset.FromChangeInfo(changeInfo); if (asset == null) { continue; } assets.Add(asset); } UnityEditor.Selection.objects = assets.ToArray(); }
/// <summary> /// 异步加载 /// </summary> /// <param name="assetName"></param> /// <param name="assetType"></param> /// <param name="listener"></param> private void LoadAsync(string assetName, Type assetType, IResourceListener listener) { //正在被加载 还没加载完成 foreach (LoadAsset item in loadingList) { if (item.AssetName == assetName) { item.AddListener(listener); return; } } //等待的队列里面有 foreach (LoadAsset item in waitingQue) { if (item.AssetName == assetName) { item.AddListener(listener); return; } } //都没有 先创建 LoadAsset asset = new LoadAsset(); asset.AssetName = assetName; asset.AssetType = assetType; asset.AddListener(listener); //添加到等待队列 waitingQue.Enqueue(asset); }
void Update() { if (loadingList.Count > 0) { for (int i = 0; i < loadingList.Count; i++) { if (loadingList[i].IsDone) { LoadAsset asset = loadingList[i]; for (int j = 0; j < asset.Listeners.Count; j++) { asset.Listeners[j].OnLoaded(asset.AssetName, asset.GetAsset); } nameAssetDict.Add(asset.AssetName, asset.GetAsset); loadingList.RemoveAt(i); } } } while (waitingQue.Count > 0 && loadingList.Count < 5) { LoadAsset asset = waitingQue.Dequeue(); loadingList.Add(asset); asset.LoadAsync(); } }
/// <summary> /// 异步加载 /// </summary> /// <param name="assetName">资源名</param> /// <param name="type">资源类型</param> /// <param name="listener">回掉</param> private void LoadAsync(string assetName, Type type, IResourceListener listener) { // 如果正在加载中 添加回掉 foreach (LoadAsset item in m_LoadingList) { if (item.AssetName == assetName) { item.AddListener(listener); return; } } // 如果在等待的队列中 添加回掉 foreach (LoadAsset item in m_WaitingQueue) { if (item.AssetName == assetName) { item.AddListener(listener); return; } } // 都没有 则创建资源 LoadAsset asset = new LoadAsset(); asset.AssetName = assetName; asset.Type = type; asset.AddListener(listener); // 添加到等待队列 m_WaitingQueue.Enqueue(asset); }
void Update() { if (m_LoadingList.Count > 0) { for (int i = 0; i < m_LoadingList.Count; i++) { if (m_LoadingList[i].IsDone) { LoadAsset asset = m_LoadingList[i]; for (int j = 0; j < asset.ListenerList.Count; j++) { asset.ListenerList[j].OnLoaded(asset.AssetName, asset.GetAsset); } m_LoadingList.RemoveAt(i); m_AssetDict.Add(asset.AssetName, asset.GetAsset); } } } while (m_WaitingQueue.Count > 0 && m_LoadingList.Count < 5) { LoadAsset asset = m_WaitingQueue.Dequeue(); m_LoadingList.Add(asset); asset.LoadAsync(); } }
public static async Task HandleIncomingConnections() { bool runServer = true; // While a user hasn't visited the `shutdown` url, keep on handling requests while (runServer) { // Create default admin user MemoryCache.Universe.Add("LoginDetails_mark", "lol123"); // Will wait here until we hear from a connection HttpListenerContext ctx = await listener.GetContextAsync(); HttpListenerRequest req = ctx.Request; HttpListenerResponse resp = ctx.Response; byte[] data = new byte[] {}; // Output requested url to console Console.WriteLine(req.Url.AbsolutePath); // Put the POST / GET data into the state object Query.GetQuery(req); // Determine what sort of file request it is MimeTypes mime = new MimeTypes(); string[] filetype = mime.Determine(req.Url.AbsolutePath); // Is a Binary asset if (filetype[0] == "binary") { // Load the asset LoadAsset asset = new LoadAsset(); data = asset.LoadBinary(req.Url.AbsolutePath); // If not found send a 404 if (data == null) { resp.StatusCode = 404; resp.Close(); continue; } // Write the response info resp.ContentType = filetype[1]; resp.ContentLength64 = data.LongLength; // Is a text file asset } else if (filetype[0] == "text") { // Load the asset LoadAsset asset = new LoadAsset(); data = asset.LoadText(req.Url.AbsolutePath); // If not found send a 404 if (data == null) { resp.StatusCode = 404; resp.Close(); continue; } // Write the response info resp.ContentType = filetype[1]; resp.ContentLength64 = data.LongLength; // Is a controller } else if (filetype[0] == "controller") { // Write the response info resp.StatusCode = 200; resp.ContentType = filetype[1]; resp.ContentEncoding = Encoding.UTF8; // The router will determine which controller to run Router router = new Router(); data = Encoding.UTF8.GetBytes( router.FindRoute(ref req, ref resp) ); // Set the content lenghth resp.ContentLength64 = data.LongLength; } else { // Shutdown - If shutdown url requested w/ POST, then shutdown the server after serving the page if ((req.HttpMethod == "POST") && (req.Url.AbsolutePath == "/shutdown")) { runServer = false; data = Encoding.ASCII.GetBytes("Rizor is now shutdown."); } } // Write out to the response stream (asynchronously), then close it await resp.OutputStream.WriteAsync(data, 0, data.Length); resp.Close(); } }