27 lines
515 B
TypeScript
27 lines
515 B
TypeScript
import { FEATHER_HANDLE_SCALE, MAX_FEATHER } from "@/lib/masks/feather";
|
|
|
|
export function computeFeatherUpdate({
|
|
startFeather,
|
|
deltaX,
|
|
deltaY,
|
|
directionX,
|
|
directionY,
|
|
}: {
|
|
startFeather: number;
|
|
deltaX: number;
|
|
deltaY: number;
|
|
directionX: number;
|
|
directionY: number;
|
|
}): { feather: number } {
|
|
const projection = deltaX * directionX + deltaY * directionY;
|
|
return {
|
|
feather: Math.max(
|
|
0,
|
|
Math.min(
|
|
MAX_FEATHER,
|
|
Math.round(startFeather + projection / FEATHER_HANDLE_SCALE),
|
|
),
|
|
),
|
|
};
|
|
}
|