コード例 #1
0
        public void Execute(UIRenderBuffer renderBuffer, CommandBuffer commandBuffer)
        {
            GetSlotValues(m_Input, m_ValuesTmp);

            Rect rect      = m_Rect[this];
            Rect localRect = new Rect(Vector2.zero, rect.size);

            foreach (var value in m_ValuesTmp)
            {
                value.Invoke(new UIEventData()
                {
                    EventType = UIEventType.Layout, Rect = localRect
                });
            }

            if (((UIGraphObject)owner.owner).threaded)
            {
                waitHandle.Reset(m_ValuesTmp.Count);

                foreach (var a in m_ValuesTmp)
                {
                    var a1 = a;
                    ThreadPool.QueueUserWorkItem(c => a1.Invoke((UIEventData)c), new UIEventData()
                    {
                        EventType = UIEventType.PreRepaint, Rect = localRect, RenderBuffer = renderBuffer, WaitHandle = waitHandle
                    });
                }

                waitHandle.WaitAll();
            }
            else
            {
                foreach (var action in m_ValuesTmp)
                {
                    action.Invoke(new UIEventData()
                    {
                        EventType = UIEventType.PreRepaint, Rect = localRect, RenderBuffer = renderBuffer
                    });
                }
            }


            foreach (var value in m_ValuesTmp)
            {
                try
                {
                    value.Invoke(new UIEventData()
                    {
                        EventType = UIEventType.Repaint, Rect = localRect, RenderBuffer = renderBuffer
                    });
                }
                catch (Exception e)
                {
                    Debug.LogException(e);
                }
            }

            var matrix = m_Matrix[this] * Matrix4x4.Translate(rect.position);

            renderBuffer.Populate(commandBuffer, matrix);

            m_ValuesTmp.Clear();
        }
コード例 #2
0
 private void Awake()
 {
     m_CommandBuffer = new CommandBuffer();
     m_RenderBuffer  = new UIRenderBuffer();
 }