Setting the file. One moment.
Skill 10 · Frost Sequence Camera Orbit
Subchapter 10.25
Also bundled
Frost Sequence Camera Orbitsource/src/core/schedule.ts
TypeScript25 lines994 B
import type { Schedule } from "../frost";
import { ATTACK, SETTLE } from "./motion";
export const FADE_DURATION = 1.5;
export const DEFAULT_SCHEDULE: Readonly<Schedule> = Object.freeze({
logoBreak: 1.5,
form1: 3.8,
break1: 10.375,
form2: 12.675,
break2: 18.5,
fadeOut: 22,
});
export const durationOf = (s: Schedule) => s.fadeOut + FADE_DURATION;
/** Preserve entered beat times, moving only overlaps forward; never truncate the final break. */
export function resolveSchedule(raw: Schedule, breakDuration: number): Schedule {
const breakSpan = 0.3 + breakDuration + 0.6;
const logoBreak = raw.logoBreak;
const form1 = Math.max(raw.form1, logoBreak + breakSpan);
const break1 = Math.max(raw.break1, form1 + SETTLE + ATTACK);
const form2 = Math.max(raw.form2, break1 + breakSpan);
const break2 = Math.max(raw.break2, form2 + SETTLE + ATTACK);
const fadeOut = Math.max(raw.fadeOut, break2 + breakSpan);
return { logoBreak, form1, break1, form2, break2, fadeOut };
}