Wiki

Clone wiki

UnityUIScrollSnaps / Update Log

Update Log

All versions use Semantic Versioning.

Version 1.1.0 Release 2019/3/21

Added

  • Directional Scroll Snap: Pull Request #14 Loopability! Your items can now appear to be in a loop.
  • Directional Scroll Snap: Pull Request #15 Programmatic population. You can now add and remove items programmatically using functions:
    • AddItemAtEnd
    • AddItemAtStart
    • AddItemAfter
    • AddItemBefore
    • RemoveItem
    • RemoveItemAtStart
    • RemoveItemAtEnd
  • Directional Scroll Snap: Pull Request #15 Public closestItem accessor. Grabs the item whose pivot is closest to the scroll snap's pivot.
  • Directional Scroll Snap: Pull Request #15 Public items accessor. You can now loop throw all of the items "owned" by the scroll snap.
  • Directional Scroll Snap: Pull Request #16 Gizmos. There are now gizmos that show you: the position of the scroll snap's pivot (blue), the items' pivots (cyan), and if your scroll snap is loopable it will show you the position the first child will be in after it has been looped (green).
  • Missing documentation to various classes. Pull Request #24

Fixed

  • Directional Scroll Snap: #5 Snap positions were not always being properly updated in ArrangeItems.
  • Directional Scroll Snap: #7 The Scroll Snap would sometimes continue scrolling infinitely in the wrong direction because it picked the incorrect snap position.
  • Directional Scroll Snap: #9 Not being initialized correctly if the root RectTransform was rotated.
  • Directional Scroll Snap: #10 Not being initialized correctly, and not selecting snap positions correctly if the content/scroll snap was scaled.
  • Menu Item for Directional Scroll Snap: #6 The menu item would throw a NullReference exception when creating a canvas.

Version 1.0.1 Release 2019/1/23

This is a completely rewritten version from the previous Version 0, so instead of a list of updates here's a (not comprehensive) list of features:

  • Directional Scroll Snap Component
    • Configurable Direction, Horizontal Vs Vertical.
    • Configurable Friction value, which informs how long flings last.
    • Works with any and all RectTransform configurations for the Scroll Snap, Content, and Children. No longer shall you have to deal with "The Directional Scroll Snap is controlling some properties". See the Initialization Demo for examples.
  • Item
    • A class used to definite an item which is controlled by the Scroll Snap.
    • Includes information about the RectTransform of the item.
    • Includes information to help layout the scrollsnap (i.e. margin information).
  • Scroller
    • Allows you to calculate things like movement delta or duration based on things like velocity and deceleration rate.
    • Handles the calculations for fling animations.
  • Scroll Snap Utilities
    • A utilities class that holds some more generic functions that don't belong on an object. e.g. WorldPointToLocalPointInRectangle and WorldPointToRelativeToAnchorPoint.
  • Custom Directional Scroll Snap Editor
    • Adds tooltips to the Directional Scroll Snap's in-editor UI
  • Directional Scroll Snap Menu Option
    • Allows you to create the Scroll Snap through the Gameobject and Create menus.
  • Lots and Lots of tests.

Version 0.8.2 Release 2018/9/3

Fixed

  • Directional Scroll Snap: Fixed Issue #1

Version 0.8.1 Release 2018/8/11

Added

  • Directional Scroll Snap: Help URL Link to the Directional Scroll Snap wiki page.
  • OmniDirectional Scroll Snap: Help URL Link to the OmniDirectional Scroll Snap wiki page.
  • Scroller: Help URL Link to the Scroller wiki page.

Version 0.8.0 Released 2018/6/4

Added

  • Directional Scroll Snap: Updates the layout whenever you set the content at runtime.
  • OmniDirectional Scroll Snap: InsertChild function.
  • OmniDirectional Scroll Snap: Two RemoveChild functions.
  • OmniDirectional Scroll Snap: Two MoveChildren functions.
  • OmniDirectional Scroll Snap: Two SetChildPos functions.
  • OmniDirectional Scroll Snap: SetChildSnappability function.
  • OmniDirectional Scroll Snap: SetRectTransformUncalculable function. Used only in the case of adding a decorative object at runtime (an item that never has been and never will be calculable). If you would like to remove a calculable item use the RemoveChild functions.
  • OmniDirectional Scroll Snap: Updates the layout whenever you set the content at runtime.

Changed

  • Directional Scroll Snap: Add Inactive Children to Calculate Filter now defaults to true.
  • OmniDirectional Scroll Snap: Now finds the children from top to bottom and the children from left to right separately (may have caused bugs).v
  • OmniDirectional Scroll Snap: Add Inactive Children to Calculate Filter now defaults to true.

Fixed

  • Directional Scroll Snap: Now tries to loop items whenever you use the JumpToSnapIndex or JumpToSnappableChild functions (if looping is enabled).
  • OmniDirectional Scroll Snap: Default Friction value. Now set to 0.8 by default.

Removed

  • Directional Scroll Snap: Placing items below and to the right of the top left corner of the content (inside the green arrows) is no longer neccessary.
  • Directional Scroll Snap: Arrow & out of bounds gizmos.
  • Directional Scroll Snap: Out of bounds warning.
  • OmniDirectional Scroll Snap: Placing items below and to the right of the top left corner of the content (inside the green arrows) is no longer neccessary.
  • OmniDirectional Scroll Snap: Arrow & out of bounds gizmos.
  • OmniDirectional Scroll Snap: Out of bounds warning.

Version 0.7.0 Released 2018/5/17

Added

  • Directional Scroll Snap: Public Start Item RectTransform variable.
  • Directional Scroll Snap: Public JumpToSnapIndex function.
  • Directional Scroll Snap: Public JumpToSnappableChild function.
  • Directional Scroll Snap: Public Simulate Flings boolean variable. If true the Scroll Snap decides what Snap Position to snap to based on where the Content would land after a fling. If false the Scroll Snap decides what Snap Position to snap to based on where the Content currently is.
  • Directional Scroll Snap: Public Button Animation Duration float. Sets the duration of button animations.
  • Directional Scroll Snap: Public Button Items To Move By int. Tells the Scroll Snap how many items to move by on button press.
  • Directional Scroll Snap: Public Button Always Go To End bool. When enabled the the Scroll Snap will move to the last/first item even if the Items to Move would normally send it past that item. When disabled the Scroll Snap will not move if the movement would send it past.
  • Directional Scroll Snap: Public Button Interpolator InterpolatorType variable. Lets you set a different interpolator for Button input events than other input events, such as touch input.
  • Directional Scroll Snap: Public Button Tension float. Lets you set a different tension for button input events.
  • Directional Scroll Snap: Public Scroll Bar Friction float. Lets you set a different friction for Scroll Bar input events.
  • Directional Scroll Snap: Public Scroll Bar Interpolator InterpolatorType variable. Lets you set a different interpolator for Scroll Bar intput events.
  • Directional Scroll Snap: Public Scroll Bar Tension float. Lets you set a different tension for scroll bar input events.
  • Directional Scroll Snap: Public Scroll Friction float. Lets you set a different friction for Scroll Bar input events.
  • Directional Scroll Snap: Public Scroll Bar Interpolator InterpolatorType variable. Lets you set a different interpolator for Scroll Bar intput events.
  • Directional Scroll Snap: Public Scroll Bar Tension float. Lets you set a different tension for scroll bar input events.
  • Directional Scroll Snap: Public Allow Touch Input bool. Lets you disable/enable touch input.
  • Directional Scroll Snap: Public virtual Impliment Custom Interpolator function. You can override this to impliment custom interpolators.
  • Directional Scroll Snap: Added public set properties to interpolator, friction, tension, minDuration, and maxDuration.
  • Directional Scroll Snap: Public ScrollToSnappableChild function.
  • Examples: Explanation of new Animation System to Directional Example.
  • Examples: Explanation of new Animation SYstem to OmniDirectional Example.
  • Examples: Explanation of Button Settings to Directional Example.
  • OmniDirectional Scroll Snap: Public Start Item RectTransform variable.
  • OmniDirectional Scroll Snap: Public JumpToSnappableChild function.
  • OmniDirectional Scroll Snap: Public Simulate Flings boolean variable. If true the Scroll Snap decides what Snap Position to snap to based on where the Content would land after a fling. If false the Scroll Snap decides what Snap Position to snap to based on where the Content currently is.
  • OmniDirectional Scroll Snap: Public Scroll Bar Friction float. Lets you set a different friction for Scroll Bar input events.
  • OmniDirectional Scroll Snap: Public Scroll Bar Interpolator InterpolatorType variable. Lets you set a different interpolator for Scroll Bar intput events.
  • OmniDirectional Scroll Snap: Public Scroll Bar Tension float. Lets you set a different tension for scroll bar input events.
  • OmniDirectional Scroll Snap: Public Scroll Friction float. Lets you set a different friction for Scroll Bar input events.
  • OmniDirectional Scroll Snap: Public Scroll Bar Interpolator InterpolatorType variable. Lets you set a different interpolator for Scroll Bar intput events.
  • OmniDirectional Scroll Snap: Public Scroll Bar Tension float. Lets you set a different tension for scroll bar input events.
  • OmniDirectional Scroll Snap: Public Allow Touch Input bool. Lets you disable/enable touch input.
  • OmniDirectional Scroll Snap: Public virtual Impliment Custom Interpolator function. You can override this to impliment custom interpolators.
  • OmniDirectional Scroll Snap: Public ScrollToSnappableChild function.
  • OmniDirectional Scroll Snap: Added public set properties to interpolator, friction, tension, minDuration, and maxDuration.
  • Scroller: Flywheel functionality to Flings, this allows the velocity of a new Fling to be added to the current velocity if a Fling is currently in progress.
  • Scroller: CalculateMovementDelta, CalculateDecelerationRate, and CalculateDuration public functions. These public functions allow you to get the estimated movement delta, deceleration rate, or duration, for a Fling based on the given input.
  • Scroller: New DecelerateAccelerate interpolator - and added this as an option in both the OmniDirectional and Directional Scroll snaps.

Changed

  • Directional Scroll Snap: ScrollToSnapPosition and ScrollToNearestSnapPosition now both take in Interpolators.
  • OmniDirectional Scroll Snap: ScrollToNearestSnapPosToNormalizedPos and ScrollToNearestSnapPosToPos now both take in Interpolators.
  • OmniDirectional Scroll Snap: GetClosestChildToNormalizedPosition to GetClosestSnappableChildToNormalizedPosition.
  • Scroller: How Flings work so that now they are more physics based.
  • Scroller: How Interpolators are handled. The class no longer accepts an Interpolator; all individual Scroll Animations take an Interpolator.
  • Scroller: How deceleration for Flings is handled. The class no longer accepts a Friction, all individual flings are now given a deceleration rate instead. This works exactly the same as the Deceleration Rate for a Scroll Rect where a deceleration rate of 0 stops the animation instantly and a deceleration rate of 1 could theoretically allow the animation to continue forever.
  • Scroller: How Animation durations are handled, they are now based on seconds instead of milliseconds.
  • Scroller: The name of the Fling function to StartFling to match the StartScroll function.

Fixed

  • Directional Scroll Snap: Unintended function where scroll wheel/touch pad input during an animation would cause the animation to stop and/or stutter. Now scroll wheel/touch pad input causes the scroll animation to to speed up giving a flywheel like effect.
  • Directional Scroll Snap: Bug where items would be aligned incorrectly along the inverseAxis when moving between them with buttons.
  • Directional Scroll Snap: Bug where GetNormalizedPositionOfChild would return incorrect values for Vertical Scroll Snaps, causing snapping and layout problems.
  • Directional Scroll Snap: Bug where the gizmo for the "looped end item" would be drawn in the incorect position for Vertical Scroll Snaps.
  • Directional Scroll Snap: Bug where m_ViewBounds wouldn't be updated before ResizeContent() was called, causing the content to be resized incorrectly.
  • Directional Scroll Snap: Bug where the Snap To Last Passed would not snap to the correct item if it was supposed to snap to the first or last item.
  • OmniDirectional Scroll Snap: Unintended function where scroll wheel/touch pad input during an animation would cause the animation to stop or stutter. Now scroll wheel/touch pad input causes the scroll animation to to speed up giving a flywheel like effect.

Removed

  • Directional Scroll Snap: Use Velocity public variable.
  • Directional Scroll Snap: Scroll Duration public variable.
  • Directional Scroll Snap: FlingToSnapPosition function.
  • Directional Scroll Snap: FlingToNearestSnapPosition function and all overloads.
  • Directional Scroll Snap: Public access to the Scroller, it will now be stored as a private variable.
  • OmniDirectional Scroll Snap: FlingToNearestSnapPosToNormalizedPos function.
  • OmniDirectional Scroll Snap: FlingToNearestSnapPosToPos function.
  • OmniDirectional Scroll Snap: Use Velocity public variable.
  • OmniDirectional Scroll Snap: Scroll Duration public variable.
  • OmniDirectional Scroll Snap: Public access to the Scroller, it will now be stored as a private variable.
  • Scroller: Some properties of the scroller to streamline the class namely being: friction, minDuration, and maxDuration.
  • Scroller: Setting the final position of an animation.
  • Scroller: Some of the Scroll and Fling overloads to make it more streamlined.
  • Scroller: Min Duration and Max Duration.

Version 0.6.1 Released 2018/4/25

Added

  • Directional Scroll Snap Editor: End Spacing tool tip.
  • OmniDirectional Scroll Snap: Friction get property (readonly float).
  • OmniDirectional Scroll Snap: Interpolator get property (readonly InterpolatorType).
  • OmniDirectional Scroll Snap: Tension get property (readonly float).
  • OmniDirectional Scroll Snap: MinDuration get property (readonly int).
  • OmniDirectional Scroll Snap: MaxDuration get property (readonly int).

Changed

  • Directional Scroll Snap: Optimized looping by making sure it doesn't call any extraneous layout functions.
  • Directional Scroll Snap: Optimized inserting items programmatically by making sure it doesn't call any extraneous layout functions.
  • Directional Scroll Snap: Optimized removing items programmatically by making sure it doesn't call any extraneous layout functions.
  • Directional Scroll Snap: Optimized setting items' start and end spacing programmatically by making sure it doesn't call any extraneous layout functions.
  • Directional Scroll Snap: Optimized setting an item's snappability programmatically by making sure it doesn't call any extraneous layout functions.
  • Directional Scroll Snap: Now uses List.Clear() functions when UpdateLayout() is called instead of setting lists = new List<>();
  • Directional Scroll Snap: m_ChildrenForSnappingFromStartToEnd is now assigned in the GetChildrenFromStartToEnd() function instead of the GetSnapPositions() function.
  • OmniDirectional Scroll Snap: No longer uses viewRect.sizeDelta because it is user-error prone, now uses m_ViewBounds.size or m_ViewBounds.extents wherever viewRect.sizeDelta was used.
  • OmniDirectional Scroll Snap: Setting the normalized position no longer sets the velocity along that axis to zero.
  • OmniDirectional Scroll Snap: Now uses List.Clear() functions when UpdateLayout() is called instead of setting lists = new List<>();
  • OmniDirectional Scroll Snap: Doesn't call UpdateLayout in edit mode unless the Update button is pressed. Allows for easier editting of Layout Groups in edit mode.

Fixed

  • Directional Scroll Snap: No longer gives Child Outside Valid Region warnings when the Scroll Snap is rotated.
  • Directional Scroll Snap: The size & snap positions not being calculated correctly when the Scroll Snap is rotated by making the viewRectSize based on local coordinates.
  • Directional Scroll Snap: ArguementOutOfRangeException when inserting new items into an empty Scroll Snap.
  • Directional Scroll Snap: Bug where children were not being removed from the calculate & snap filters when RemoveChild(RectTransform child, RectTransform newParent) was being called.
  • Directional Scroll Snap: Bug where verticalNormalizedPosition would return the incorrect value. This would cause issues where the Scroll Snap would appear to jump or vibrate under certain circumstances(height of content same as viewport, elastic movement in the vertical direction, and vertical scrollbar assigned).
  • Directional Scroll Snap: Bug where it wouldn't calculate the normalized position of items inside a looping/loopable Scroll Snap correctly.
  • OmniDirectional Scroll Snap: Bug where verticalNormalizedPosition would return the incorrect value. This would cause issues where the Scroll Snap would appear to jump or vibrate under certain sercumstances (height of content same as viewport, elastic movement in the vertical direction, and vertical scrollbar assigned).
  • OmniDirectional Scroll Snap: No longer gives Child Outside Valid Region warnings when the Scroll Snap is rotated.
  • OmniDirectional Scroll Snap: transform.InverseTransformPoint has been changed to viewRect.InverseTransform point.
  • OmniDirectional Scroll Snap: Now calls SetDirtyCaching(); when the viewPort is set.

Removed

  • Directional Scroll Snap: m_TotalScrollableLength; now the total scrollable length is recalculated whenever it is needed, keeping it up to date.
  • Directional Scroll Snap: viewRectSize, now uses m_ViewBounds.size or m_ViewBounds.extents wherever viewRectSize as used.
  • OmniDirectional Scroll Snap: m_TotalScrollableSize; now the total scrollable size is recalculated whenever it is needed, keeping it up to date.

Version 0.6.0 Released 2018/4/16

Added

  • Directional Scroll Snap: Looping functionality.
  • Directional Scroll Snap: Public Loop bool.
  • Directional Scroll Snap: Public EndSpacing int.
  • Directional Scroll Snap: Friction get property (readonly float).
  • Directional Scroll Snap: Interpolator get property (readonly InterpolatorType).
  • Directional Scroll Snap: Tension get property (readonly float).
  • Directional Scroll Snap: MinDuration get property (readonly int).
  • Directional Scroll Snap: MaxDuration get property (readonly int).
  • Directional Scroll Snap: GetChildAtSnapIndex method.
  • Directional Scroll Snap: GetCalculateIndexOfChild method.
  • Directional Scroll Snap: GetChildAtCalculateIndex method.
  • Directional Scroll Snap: InsertChild methods (used for editting the Scroll Snap at runtime).
  • Directional Scroll Snap: RemoveChild methods (used for editting the Scroll Snap at runtime).
  • Directional Scroll Snap: SetChildSnappability method (used for editting the Scroll Snap at runtime).
  • Directional Scroll Snap: SetRectTransformUncalculable (used only in the case of adding a decorative object at runtime [an item that never has been and never will be calculable]).
  • Directional Scroll Snap: SetItemEndSpacing methods (used for editting the Scroll Snap at runtime).
  • Directional Scroll Snap: SetItemStartSpacing methods (used for editting the Scroll Snap at runtime).
  • Examples: Examples of Looping with the Directional Scroll Snap.
  • Scroller: ShiftAnimation method (shifts the start and end positions of the animation).

Changed

  • Directional Scroll Snap: GetChildAtIndex renamed to GetChildAtSnapIndex.
  • Directional Scroll Snap: UpdateLayout should now only be used for getting updated info about the Directional Scroll Snap before it has updated itself (e.g. first frame). If you need to modify the Scroll Snap (e.g. adding items, manipulating spacing, changing an item's snappability, removing items) please use the provided functions.
  • Directional Scroll Snap: Doesn't call UpdateLayout in edit mode unless the Update button is pressed. Allows for easier editting of Layout Groups in edit mode.
  • Directional Scroll Snap: Doesn't UpdateLayout when Enabled if the Content has no children.

Removed

  • Directional Scroll Snap: Set property for addInactiveChildrenToCalculatingFilter.
  • Directional Scroll Snap: Set property for calculateSizeFilterMode.
  • Directional Scroll Snap: Set property for calculatingFilter.
  • Directional Scroll Snap: Set property for addInactiveChildrenToSnapPositionsFilter.
  • Directional Scroll Snap: Set property for snapPositionsFilterMode
  • Directional Scroll Snap: Set property for snapPositionsFilter.
  • Directional Scroll Snap: MissingReferenceException errors for Contents with no children.

Version 0.5.0

Added

  • Update Log.

Updated