예제 #1
0
        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();
        }
예제 #2
0
    /// <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);
    }
예제 #3
0
 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();
     }
 }
예제 #4
0
    /// <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);
    }
예제 #5
0
    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();
        }
    }
예제 #6
0
        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();
            }
        }