42 lines
2.1 KiB
TypeScript
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 {
|
|
}
|
|
}
|