import type { EasingType } from '../types/cutscene'; export const EASING_OPTIONS: EasingType[] = [ 'Linear', 'EaseInSine', 'EaseOutSine', 'EaseInOutSine', 'EaseInQuad', 'EaseOutQuad', 'EaseInOutQuad', 'EaseInCubic', 'EaseOutCubic', 'EaseInOutCubic', ]; export function applyEasing(t: number, easing: EasingType): number { const pi = Math.PI; switch (easing) { case 'Linear': return t; case 'EaseInSine': return 1 - Math.cos((t * pi) / 2); case 'EaseOutSine': return Math.sin((t * pi) / 2); case 'EaseInOutSine': return -(Math.cos(pi * t) - 1) / 2; case 'EaseInQuad': return t * t; case 'EaseOutQuad': return 1 - (1 - t) * (1 - t); case 'EaseInOutQuad': return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2; case 'EaseInCubic': return t * t * t; case 'EaseOutCubic': return 1 - Math.pow(1 - t, 3); case 'EaseInOutCubic':return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2; default: return t; } }