public Init( DynamicVerticalLayout backing, IEnumerable <IElementData> layoutData, bool renderLatestItemsFirst = false ) { this.backing = backing; this.layoutData = layoutData.ToList(); this.renderLatestItemsFirst = renderLatestItemsFirst; var mask = backing._maskRect; // We need oncePerFrame() because Unity doesn't allow doing operations like gameObject.SetActive() // from OnRectTransformDimensionsChange() // oncePerFrame() performs operation in LateUpdate var maskSize = mask.gameObject.EnsureComponent <OnRectTransformDimensionsChangeForwarder>().rectDimensionsChanged .oncePerFrame() .filter(_ => mask) // mask can go away before late update, so double check it. .map(_ => mask.rect) .toRxVal(mask.rect); maskSize.zip(containerHeight, (_, height) => height).subscribe(dt, height => { backing._container.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height); clearLayout(); updateLayout(); }); dt.track(backing._scrollRect.onValueChanged.subscribe(_ => updateLayout())); }
public StandardBanner(AndroidJavaObject java) { this.java = java; dt.track(ASync.onAppPause.subscribe(paused => { if (paused) { onPause(); } else { onResume(); } })); dt.track(ASync.onAppQuit.subscribe(_ => { destroy(); })); }
public void track( IDisposable a, [CallerMemberName] string callerMemberName = "", [CallerFilePath] string callerFilePath = "", [CallerLineNumber] int callerLineNumber = 0 ) => tracker.track( a, // ReSharper disable ExplicitCallerInfoArgument callerMemberName: callerMemberName, callerFilePath: callerFilePath, callerLineNumber: callerLineNumber // ReSharper restore ExplicitCallerInfoArgument );