Example #1
0
        public VectorImageManager(AtlasBase atlas)
        {
            instances.Add(this);

            m_Atlas = atlas;

            m_Registered            = new Dictionary <VectorImage, VectorImageRenderInfo>(32);
            m_RenderInfoPool        = new VectorImageRenderInfoPool();
            m_GradientRemapPool     = new GradientRemapPool();
            m_GradientSettingsAtlas = new GradientSettingsAtlas();
        }
        void Constructor(BaseVisualElementPanel panelObj, UIRenderDevice deviceObj, AtlasBase atlas, VectorImageManager vectorImageMan)
        {
            if (disposed)
            {
                DisposeHelper.NotifyDisposedUsed(this);
            }

            // A reasonable starting depth level suggested here
            m_DirtyTracker.heads     = new List <VisualElement>(8);
            m_DirtyTracker.tails     = new List <VisualElement>(8);
            m_DirtyTracker.minDepths = new int[(int)RenderDataDirtyTypeClasses.Count];
            m_DirtyTracker.maxDepths = new int[(int)RenderDataDirtyTypeClasses.Count];
            m_DirtyTracker.Reset();

            if (m_RenderNodesData.Count < 1)
            {
                m_RenderNodesData.Add(new RenderNodeData()
                {
                    matPropBlock = new MaterialPropertyBlock()
                });
            }

            this.panel              = panelObj;
            this.device             = deviceObj;
            this.atlas              = atlas;
            this.vectorImageManager = vectorImageMan;

            // TODO: Share these across all panels
            vertsPool   = new TempAllocator <Vertex>(8192, 2048, 64 * 1024);
            indicesPool = new TempAllocator <UInt16>(8192 << 1, 2048 << 1, (64 * 1024) << 1);
            jobManager  = new JobManager();

            this.shaderInfoAllocator.Construct();
            this.opacityIdAccelerator = new OpacityIdAccelerator();

            painter = new Implementation.UIRStylePainter(this);

            var rp = panel as BaseRuntimePanel;

            if (rp != null && rp.drawToCameras)
            {
                drawInCameras = true;
                m_StaticIndex = RenderChainStaticIndexAllocator.AllocateIndex(this);
            }
        }
        public UIRStylePainter(RenderChain renderChain)
        {
            m_Owner = renderChain;
            meshGenerationContext = new MeshGenerationContext(this);
            device  = renderChain.device;
            m_Atlas = renderChain.atlas;
            m_VectorImageManager                = renderChain.vectorImageManager;
            m_AllocRawVertsIndicesDelegate      = AllocRawVertsIndices;
            m_AllocThroughDrawMeshDelegate      = AllocThroughDrawMesh;
            m_AllocThroughDrawGradientsDelegate = AllocThroughDrawGradients;
            int meshWriteDataPoolStartingSize = 32;

            m_MeshWriteDataPool = new List <MeshWriteData>(meshWriteDataPoolStartingSize);
            for (int i = 0; i < meshWriteDataPoolStartingSize; i++)
            {
                m_MeshWriteDataPool.Add(new MeshWriteData());
            }
        }
        public void ResetTextures(VisualElement ve)
        {
            AtlasBase       atlas             = this.atlas;
            TextureRegistry registry          = m_TextureRegistry;
            BasicNodePool <TextureEntry> pool = m_TexturePool;

            BasicNode <TextureEntry> current = ve.renderChainData.textures;

            ve.renderChainData.textures = null;
            while (current != null)
            {
                var next = current.next;
                if (current.data.replaced)
                {
                    atlas.ReturnAtlas(ve, current.data.source as Texture2D, current.data.actual);
                }
                else
                {
                    registry.Release(current.data.actual);
                }
                pool.Return(current);
                current = next;
            }
        }
 protected RenderChain(BaseVisualElementPanel panel, UIRenderDevice device, AtlasBase atlas, VectorImageManager vectorImageManager)
 {
     Constructor(panel, device, atlas, vectorImageManager);
 }