protected override void OnRectTransformDimensionsChange() { base.OnRectTransformDimensionsChange(); CalculateRectTransformDimensions(); var isDirty = (_dirtyAxis & parentControlledAxis) != 0; //We will only set dirty if value of new rect is smaller than preferred size if (isDirty && (_dirtyAxis.HasFlag(DrivenAxis.Vertical) && _cachedRectHeight < m_TotalPreferredSize.y) || (_dirtyAxis.HasFlag(DrivenAxis.Horizontal) && _cachedRectWidth < m_TotalPreferredSize.x)) { isDirty = false; } //Prevent change size while calculating feedback if (isDirty) { SetDirty(); } else { _dirtyAxis &= ~(DrivenAxis.Horizontal | DrivenAxis.Vertical); } }
public virtual void SendFeedback() { if (group != null && group.rectTransform != null && (_dirtyAxis.HasFlag(DrivenAxis.Ignore) || (group.childrenControlledAxis & _dirtyAxis) != 0)) { group.SetElementDirty(this, _dirtyAxis); _dirtyAxis = 0; } }
protected void SetAxisDirty(DrivenAxis dirtyAxis) { if (!isDirty) { MarkLayoutForRebuild(); } _dirtyAxis |= dirtyAxis; }
public virtual void SetElementDirty(IFastLayoutFeedback driven, DrivenAxis dirtyAxis) { if (driven != null && (dirtyAxis.HasFlag(DrivenAxis.Ignore) || (dirtyAxis & childrenControlledAxis) != 0)) { if (!isDirty) { MarkLayoutForRebuild(); } _dirtyChildren.Add(driven); } }
protected virtual void CalculateRectTransformDimensions(bool canDirtyInLayoutRebuild = false) { cachedRectWidth = rectTransform.sizeDelta.x; cachedRectHeight = rectTransform.sizeDelta.y; //Prevent change size while calculating feedback if (!canDirtyInLayoutRebuild && CanvasUpdateRegistry.IsRebuildingLayout()) { _dirtyAxis = DrivenAxis.None; } else { SendFeedback(); } }
public override void SetElementDirty(IFastLayoutFeedback driven, DrivenAxis dirtyAxis) { if (driven != null && (dirtyAxis.HasFlag(DrivenAxis.Ignore) || (dirtyAxis & childrenControlledAxis) != 0)) { if (!isDirty) { MarkLayoutForRebuild(); } //Special case when added element will affect other elements size if (dirtyAxis.HasFlag(DrivenAxis.Ignore) && ((isVertical && m_TotalFlexibleSize.y > 0) || (!isVertical && m_TotalFlexibleSize.x > 0))) { isAxisDirty = true; } _dirtyChildren.Add(driven); } }
protected void SetAxisDirty(DrivenAxis dirtyAxis) { _dirtyAxis |= dirtyAxis; }