コード例 #1
0
 public bool Equals(Text2DPrivateCacheHTML t)
 {
     if (italic != t.italic)
     {
         return(false);
     }
     if (weight != t.weight)
     {
         return(false);
     }
     if (size != t.size)
     {
         return(false);
     }
     if (minSizeAutoFit != t.minSizeAutoFit || maxSizeAutoFit != t.maxSizeAutoFit)
     {
         return(false);
     }
     if (rect.x != t.rect.x || rect.y != t.rect.y)
     {
         return(false);
     }
     if (color != t.color)
     {
         return(false);
     }
     return(true);
 }
コード例 #2
0
        protected override void OnUpdate()
        {
            EntityManager       em  = EntityManager;
            EntityCommandBuffer ecb = new EntityCommandBuffer(Allocator.Temp);

            // Check Native font components
            Entities.With(groupAddNativeFontPrivC).ForEach((Entity e, ref Text2DRenderer tr, ref Text2DStyleNativeFont nf) =>
            {
                if (CheckNativeFontComponents(em, ref tr, ref nf))
                {
                    ecb.AddComponent(e, new Text2DPrivateNative());
                    ecb.AddComponent(e, new Text2DPrivateCacheHTML());
                    ecb.AddBuffer <TextPrivateString>(e);
                    ecb.AddBuffer <TextPrivateFontName>(e);
                }
            });
            ecb.Playback(em);
            ecb.Dispose();

            Entities.ForEach((Entity e, ref Text2DRenderer tr, ref Text2DPrivateNative textP,
                              ref Text2DPrivateCacheHTML textHtmlP, ref Text2DStyleNativeFont nfStyle) =>
            {
                Text2DStyle textStyle = em.GetComponentData <Text2DStyle>(tr.style);
                NativeFont nf         = em.GetComponentData <NativeFont>(nfStyle.font);

                Text2DPrivateCacheHTML temp = new Text2DPrivateCacheHTML();
                temp.size       = textStyle.size;
                temp.color      = textStyle.color;
                temp.weight     = nfStyle.weight;
                temp.italic     = nfStyle.italic;
                temp.cacheIndex = textHtmlP.cacheIndex;
                if (em.HasComponent <Text2DAutoFit>(e))
                {
                    Text2DAutoFit autoFit = em.GetComponentData <Text2DAutoFit>(e);
                    temp.minSizeAutoFit   = autoFit.minSize;
                    temp.maxSizeAutoFit   = autoFit.maxSize;
                }

                if (em.HasComponent <RectTransformFinalSize>(e))
                {
                    temp.rect = em.GetComponentData <RectTransformFinalSize>(e).size;
                }

                string newText     = em.GetBufferAsString <TextString>(e);
                string privText    = em.GetBufferAsString <TextPrivateString>(e);
                string strFontName = em.GetBufferAsString <TextPrivateFontName>(e);

                if (!textHtmlP.Equals(temp) || newText != privText || TextService.GetFontFamilyName(nf.name) != strFontName)
                {
                    // We will need to recreate the text texture in the renderer anyway
                    temp.cacheIndex = -1;
                    // Re-compute text size
                    float newSize = MeasureNativeFontText(em, e, ref textP, newText, TextService.GetFontFamilyName(nf.name), temp.rect);
                    textP.size    = newSize;

                    em.SetBufferFromString <TextPrivateFontName>(e, TextService.GetFontFamilyName(nf.name));

                    //Update private text component
                    em.SetBufferFromString <TextPrivateString>(e, newText);
                }
                textHtmlP = temp;
            });

            ecb = new EntityCommandBuffer(Allocator.Temp);
            // De-init private components
            Entities.With(groupRemoveNativeFontPrivateC).ForEach((Entity e, ref Text2DPrivateNative tr, ref Text2DPrivateCacheHTML nc) =>
            {
                ecb.RemoveComponent <Text2DPrivateNative>(e);
                ecb.RemoveComponent <Text2DPrivateCacheHTML>(e);
                ecb.RemoveComponent <TextPrivateString>(e);
                ecb.RemoveComponent <TextPrivateFontName>(e);
            });
            ecb.Playback(em);
            ecb.Dispose();
        }