// IMaskable Implementation /// <summary> /// Method called when Stencil Mask needs to be updated on this element and parents. /// </summary> // public override void RecalculateMasking() // { // //Debug.Log("***** RecalculateMasking() *****"); // // this.m_ShouldRecalculateStencil = true; // SetMaterialDirty(); // } //public override void SetClipRect(Rect clipRect, bool validRect) //{ // //Debug.Log("***** SetClipRect (" + clipRect + ", " + validRect + ") *****"); // base.SetClipRect(clipRect, validRect); //} /// <summary> /// Override of the Cull function to provide for the ability to override the culling of the text object. /// </summary> /// <param name="clipRect"></param> /// <param name="validRect"></param> public override void Cull(Rect clipRect, bool validRect) { // Delay culling check in the event the text layout is dirty and geometry has to be updated. if (m_isLayoutDirty) { TMP_UpdateManager.RegisterTextElementForCullingUpdate(this); m_ClipRect = clipRect; m_ValidRect = validRect; return; } // Get compound rect for the text object and sub text objects in local canvas space. Rect rect = GetCanvasSpaceClippingRect(); // No point culling if geometry bounds have no width or height. if (rect.width == 0 || rect.height == 0) { return; } var cull = !validRect || !clipRect.Overlaps(rect, true); if (m_canvasRenderer.cull != cull) { m_canvasRenderer.cull = cull; onCullStateChanged.Invoke(cull); OnCullingChanged(); // Update any potential sub mesh objects for (int i = 1; i < m_subTextObjects.Length && m_subTextObjects[i] != null; i++) { m_subTextObjects[i].canvasRenderer.cull = cull; } } }
/// <summary> /// Schedule rebuilding of the text geometry. /// </summary> public override void SetVerticesDirty() { //Debug.Log("***** SetVerticesDirty() called on object [" + this.name + "] at frame [" + Time.frameCount + "] *****"); if (this == null || !this.IsActive()) { return; } TMP_UpdateManager.RegisterTextElementForGraphicRebuild(this); }
/// <summary> /// Schedule rebuilding of the text geometry. /// </summary> public override void SetVerticesDirty() { //Debug.Log("SetVerticesDirty()"); if (m_verticesAlreadyDirty || this == null || !this.IsActive()) { return; } TMP_UpdateManager.RegisterTextElementForGraphicRebuild(this); m_verticesAlreadyDirty = true; }
/// <summary> /// Schedule rebuilding of the text geometry. /// </summary> public override void SetVerticesDirty() { if (m_verticesAlreadyDirty || this == null || !this.IsActive()) { return; } //Debug.Log("***** SetVerticesDirty() called on object ID " + GetInstanceID() + ". ***** Dirty = " + m_verticesAlreadyDirty); TMP_UpdateManager.RegisterTextElementForGraphicRebuild(this); m_verticesAlreadyDirty = true; }
/// <summary> /// Schedule updating of the material used by the text object. /// </summary> public override void SetMaterialDirty() { //Debug.Log("SetMaterialDirty()"); if (!this.IsActive()) { return; } m_isMaterialDirty = true; TMP_UpdateManager.RegisterTextElementForGraphicRebuild(this); }