Skip to content

@aninest/extensions / Snap / setSnapPoint

setSnapPoint()

ts
function setSnapPoint<Animating, Point>(
   anim, 
   snapPoint, 
   shouldSnap): unsubscribe

Adds a point to snap to, across any number of features.

Type Parameters

Animating extends RecursiveAnimatable<unknown>

Point extends PartialRecursive<number, Animating>

Parameters

anim: Animation<Animating>

snapPoint: Point

A point to snap to. Ex: {x: 0.5, y: 0.5}

shouldSnap: ShouldSnap<Animating, Point>

A function which returns whether to snap to the snap point based on the snapPoint and the current state tree. See distanceLessThan for a helper function to create the shouldSnap function for snapping within a certain distance.

Returns

unsubscribe

a function to remove the snap point

Example

ts
// initialize the animation
const anim = createAnimation({x: 0, y: 0}, getLinearInterp(1))
setSnapPoint(anim, {x: 1, y: 1}, distanceLessThan(1))
const s = getStateTree(anim) // {x: 0, y: 0}
// start an interp to (1.5, 1.5) which will get snapped to (1, 1)
modifyTo(anim, {x: 1.5, y: 1.5})

// start of interp to (1.5, 1.5)
const s2 = getStateTree(anim) // {x: 0, y: 0}
updateAnimation(anim, 0.5) // true
const s3 = getStateTree(anim) // {x: 0.75, y: 0.75}
updateAnimation(anim, 0.5) // true
const s4 = getStateTree(anim) // {x: 1.5, y: 1.5}

// start of snap to (1, 1)
updateAnimation(anim, 0.5) // true
const s5 = getStateTree(anim) // {x: 1.25, y: 1.25}
updateAnimation(anim, 0.5) // false
const s6 = getStateTree(anim) // {x: 1, y: 1}

Defined in

../../extensions/src/snap.ts:208