Files
Alien_Sniper/assets/scripts/framework/animation/EasingSelector.ts
T
2026-07-17 10:54:32 +08:00

42 lines
2.1 KiB
TypeScript

// @structural-rewrite-v1
import { easing, Node, tween, Vec3 } from 'cc';
export function selectAnimationEasing(preferSineOut: boolean, preferSineIn: boolean): (time: number) => number {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const candidates: Array<readonly [
boolean,
(time: number) => number
]> = [
[preferSineOut, easing["sineOut"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown],
[preferSineIn, easing["sineIn"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown],
];
return candidates["find"](([enabled]) => enabled)?.[1] ?? easing["linear"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
}
} while (false);
}
finally {
}
}
export function runNodeTransition(node: Node, channel: 'position' | 'scale', start: Vec3, end: Vec3, delay: number, duration: number, applyImmediately: boolean, easingFunction: (time: number) => number): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const applyStart = channel === 'position' ? () => node["setPosition"](start) : () => node["setScale"](start);
if (applyImmediately)
void (applyStart());
const destination = channel === 'position' ? { "position": end } : { "scale": end };
void (tween(node)["delay"](delay)["call"](applyStart)["to"](duration, destination, { "easing": easingFunction })["start"]());
}
} while (false);
}
finally {
}
}