Update sequence clip reading to include startMinute, durationMinutes, and lane
This commit is contained in:
@@ -197,7 +197,11 @@ import {
|
||||
createProjectSequence,
|
||||
type ProjectSequenceLibrary
|
||||
} from "../sequencer/project-sequences";
|
||||
import type { SequenceClip } from "../sequencer/project-sequence-steps";
|
||||
import {
|
||||
DEFAULT_IMPULSE_SEQUENCE_CLIP_DURATION_MINUTES,
|
||||
LEGACY_PROJECT_SEQUENCE_DURATION_MINUTES,
|
||||
type SequenceClip
|
||||
} from "../sequencer/project-sequence-steps";
|
||||
import {
|
||||
createScenePath,
|
||||
createScenePathPoint,
|
||||
@@ -3529,9 +3533,35 @@ function readProjectSequenceClip(value: unknown, label: string): SequenceClip {
|
||||
throw new Error(`${label}.stepClass must be held or impulse.`);
|
||||
}
|
||||
|
||||
const startMinute =
|
||||
value.startMinute === undefined
|
||||
? 0
|
||||
: Math.trunc(expectNonNegativeFiniteNumber(value.startMinute, `${label}.startMinute`));
|
||||
const durationMinutes =
|
||||
value.durationMinutes === undefined
|
||||
? stepClass === "held"
|
||||
? LEGACY_PROJECT_SEQUENCE_DURATION_MINUTES
|
||||
: DEFAULT_IMPULSE_SEQUENCE_CLIP_DURATION_MINUTES
|
||||
: Math.max(
|
||||
1,
|
||||
Math.trunc(
|
||||
expectPositiveFiniteNumber(
|
||||
value.durationMinutes,
|
||||
`${label}.durationMinutes`
|
||||
)
|
||||
)
|
||||
);
|
||||
const lane =
|
||||
value.lane === undefined
|
||||
? 0
|
||||
: Math.trunc(expectNonNegativeFiniteNumber(value.lane, `${label}.lane`));
|
||||
|
||||
switch (type) {
|
||||
case "controlEffect":
|
||||
return {
|
||||
startMinute,
|
||||
durationMinutes,
|
||||
lane,
|
||||
stepClass,
|
||||
type: "controlEffect",
|
||||
effect: readControlEffect(value.effect, `${label}.effect`)
|
||||
@@ -3542,6 +3572,9 @@ function readProjectSequenceClip(value: unknown, label: string): SequenceClip {
|
||||
}
|
||||
|
||||
return {
|
||||
startMinute,
|
||||
durationMinutes,
|
||||
lane,
|
||||
stepClass: "impulse",
|
||||
type: "startDialogue",
|
||||
dialogueId: expectString(value.dialogueId, `${label}.dialogueId`)
|
||||
@@ -3552,6 +3585,9 @@ function readProjectSequenceClip(value: unknown, label: string): SequenceClip {
|
||||
}
|
||||
|
||||
return {
|
||||
startMinute,
|
||||
durationMinutes,
|
||||
lane,
|
||||
stepClass: "impulse",
|
||||
type: "teleportPlayer",
|
||||
targetEntityId: expectString(
|
||||
@@ -3565,6 +3601,9 @@ function readProjectSequenceClip(value: unknown, label: string): SequenceClip {
|
||||
}
|
||||
|
||||
return {
|
||||
startMinute,
|
||||
durationMinutes,
|
||||
lane,
|
||||
stepClass: "impulse",
|
||||
type: "toggleVisibility",
|
||||
targetBrushId: expectString(value.targetBrushId, `${label}.targetBrushId`),
|
||||
@@ -3622,6 +3661,18 @@ function readProjectSequenceLibrary(
|
||||
sequenceValue.title,
|
||||
`${label}.sequences.${sequenceKey}.title`
|
||||
),
|
||||
durationMinutes:
|
||||
sequenceValue.durationMinutes === undefined
|
||||
? undefined
|
||||
: Math.max(
|
||||
1,
|
||||
Math.trunc(
|
||||
expectPositiveFiniteNumber(
|
||||
sequenceValue.durationMinutes,
|
||||
`${label}.sequences.${sequenceKey}.durationMinutes`
|
||||
)
|
||||
)
|
||||
),
|
||||
clips: clipsValue.map((clipValue, clipIndex) =>
|
||||
readProjectSequenceClip(
|
||||
clipValue,
|
||||
|
||||
Reference in New Issue
Block a user