ShatteredSword/src/Utils/EaseFunctions.ts
2020-11-29 19:49:04 -05:00

53 lines
1.4 KiB
TypeScript

export default class EaseFunctions {
static easeInOutSine(x: number): number {
return -(Math.cos(Math.PI * x) - 1) / 2;
}
static easeOutInSine(x: number): number {
return x < 0.5 ? -Math.cos(Math.PI*(x + 0.5))/2 : -Math.cos(Math.PI*(x - 0.5))/2 + 1;
}
static easeOutSine(x: number): number {
return Math.sin((x * Math.PI) / 2);
}
static easeInSine(x: number): number {
return 1 - Math.cos((x * Math.PI) / 2);
}
static easeInOutQuint(x: number): number {
return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;
}
static easeInOutQuad(x: number): number {
return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;
}
static easeOutInQuad(x: number): number {
return x < 0.5 ? this.easeOutIn_OutPow(x, 2) : this.easeOutIn_InPow(x, 2);
}
private static easeOutIn_OutPow(x: number, pow: number): number {
return 0.5 - Math.pow(-2 * x + 1, pow) / 2;
}
private static easeOutIn_InPow(x: number, pow: number): number {
return 0.5 + Math.pow(2 * x - 1, pow) / 2;
}
}
export enum EaseFunctionType {
// SINE
IN_OUT_SINE = "easeInOutSine",
OUT_IN_SINE = "easeOutInSine",
IN_SINE = "easeInSine",
OUT_SINE = "easeOutSine",
// QUAD
IN_OUT_QUAD = "easeInOutQuad",
OUT_IN_QUAD = "easeOutInQuad",
// QUINT
IN_OUT_QUINT = "easeInOutQuint"
}