Exemple #1
0
        void Destructor()
        {
            if (m_StaticIndex >= 0)
            {
                RenderChainStaticIndexAllocator.FreeIndex(m_StaticIndex);
            }
            m_StaticIndex = -1;

            UIRUtility.Destroy(m_DefaultMat);
            UIRUtility.Destroy(m_DefaultWorldSpaceMat);
            m_DefaultMat = m_DefaultWorldSpaceMat = null;

            Font.textureRebuilt -= OnFontReset;
            painter?.Dispose();
            m_TextUpdatePainter?.Dispose();
            atlasManager?.Dispose();
            vectorImageManager?.Dispose();
            shaderInfoAllocator.Dispose();
            device?.Dispose();

            painter             = null;
            m_TextUpdatePainter = null;
            atlasManager        = null;
            shaderInfoAllocator = new UIRVEShaderInfoAllocator();
            device = null;

            m_ActiveRenderNodes = 0;
            m_RenderNodesData.Clear();
        }
        protected void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                Font.textureRebuilt -= OnFontReset;
                painter?.Dispose();
                m_TextUpdatePainter?.Dispose();
                atlasManager?.Dispose();
                device?.Dispose();

                painter             = null;
                m_TextUpdatePainter = null;
                atlasManager        = null;
                device = null;
            }
            else
            {
                DisposeHelper.NotifyMissingDispose(this);
            }

            disposed = true;
        }
        void Destructor()
        {
            Font.textureRebuilt -= OnFontReset;
            painter?.Dispose();
            m_TextUpdatePainter?.Dispose();
            atlasManager?.Dispose();
            vectorImageManager?.Dispose();
            shaderInfoAllocator.Dispose();
            device?.Dispose();

            painter             = null;
            m_TextUpdatePainter = null;
            atlasManager        = null;
            shaderInfoAllocator = new UIRVEShaderInfoAllocator();
            device = null;
        }
        private void ProcessTextRegen(bool timeSliced)
        {
            if ((timeSliced && m_DirtyTextRemaining == 0) || m_TextElementCount == 0)
            {
                return;
            }

            s_TextRegenSampler.Begin();
            if (m_TextUpdatePainter == null)
            {
                m_TextUpdatePainter = new Implementation.UIRTextUpdatePainter();
            }

            var dirty = m_FirstTextElement;

            m_DirtyTextStartIndex = timeSliced ? m_DirtyTextStartIndex % m_TextElementCount : 0;
            for (int i = 0; i < m_DirtyTextStartIndex; i++)
            {
                dirty = dirty.renderChainData.nextText;
            }
            if (dirty == null)
            {
                dirty = m_FirstTextElement;
            }

            int maxCount = timeSliced ? Math.Min(50, m_DirtyTextRemaining) : m_TextElementCount;

            for (int i = 0; i < maxCount; i++)
            {
                Implementation.RenderEvents.ProcessRegenText(this, dirty, m_TextUpdatePainter, device, ref m_Stats);
                dirty = dirty.renderChainData.nextText;
                m_DirtyTextStartIndex++;
                if (dirty == null)
                {
                    dirty = m_FirstTextElement;
                    m_DirtyTextStartIndex = 0;
                }
            }

            m_DirtyTextRemaining = Math.Max(0, m_DirtyTextRemaining - maxCount);
            if (m_DirtyTextRemaining > 0)
            {
                (panel as BaseVisualElementPanel)?.OnVersionChanged(m_FirstTextElement, VersionChangeType.Transform); // Force a window refresh
            }
            s_TextRegenSampler.End();
        }