protected override void OnDisable() { // Make sure no animation will continue next time the object is enabled, in case the disabling is just temporary _InsertDeleteAnimation = null; base.OnDisable(); }
/// <inheritdoc/> public override void ChangeItemsCount(ItemCountChangeMode changeMode, int itemsCount, int indexIfInsertingOrRemoving = -1, bool contentPanelEndEdgeStationary = false, bool keepVelocity = false) { // No animation should be preserved between count changes. // In case of insertion and removals, we don't touch it, since we expect those to be handled by the AnimatedInsert and AnimatedRemove, respectively if (changeMode == ItemCountChangeMode.RESET) { _InsertDeleteAnimation = null; } base.ChangeItemsCount(changeMode, itemsCount, indexIfInsertingOrRemoving, contentPanelEndEdgeStationary, keepVelocity); }
void OnCurrentInsertDeleteAnimationFinished() { int itemIndex = _InsertDeleteAnimation.itemIndex; if (!_InsertDeleteAnimation.IsInsert) { // The animation was a remove animation => The item needs to be removed at the end of it LazyData.RemoveItems(itemIndex, 1, false); } _InsertDeleteAnimation = null; }
/// <summary>Inserting now, then animating</summary> public void AnimatedInsert(int index, MyModel model) { // Force finish previous animation if (_InsertDeleteAnimation != null) { ForceFinishCurrentAnimation(); if (index > LazyData.Count) { // The previous animation was a removal and this index is not valid anymore return; } } _InsertDeleteAnimation = new InsertDeleteAnimationState(_Params.UseUnscaledTime, index, 0f, 1f); LazyData.InsertOneManuallyCreated(index, model, false); }
/// <summary>Animating removal, then remove</summary> public void AnimatedRemove(int index) { // Force finish previous animation if (_InsertDeleteAnimation != null) { ForceFinishCurrentAnimation(); if (index >= LazyData.Count) { // The previous animation was a removal and this index is not valid anymore return; } } var model = LazyData.GetOrCreate(index); _InsertDeleteAnimation = new InsertDeleteAnimationState(_Params.UseUnscaledTime, index, model.expandedAmount, 0f); }