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); }
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(); }