Refactor project sequence handling and add whitebox brush geometry support
This commit is contained in:
@@ -4731,6 +4731,30 @@ export function App({ store, initialStatusMessage }: AppProps) {
|
||||
};
|
||||
};
|
||||
|
||||
const createProjectSequenceControlStepFromOption = (
|
||||
targetKey: string,
|
||||
effectOptionId: ProjectScheduleEffectOptionId,
|
||||
previousStep?: Extract<ProjectSequence["effects"][number], { type: "controlEffect" }> | null
|
||||
): Extract<ProjectSequence["effects"][number], { type: "controlEffect" }> => {
|
||||
const targetOption = resolveSequenceControlTargetOption(targetKey);
|
||||
|
||||
if (targetOption === null) {
|
||||
throw new Error("The selected sequence control target no longer exists.");
|
||||
}
|
||||
|
||||
return {
|
||||
stepClass: getProjectSequenceControlStepClassForEffectOptionId(
|
||||
effectOptionId
|
||||
),
|
||||
type: "controlEffect",
|
||||
effect: createProjectScheduleEffectFromOption({
|
||||
targetOption,
|
||||
effectOptionId,
|
||||
previousEffect: previousStep?.effect ?? null
|
||||
})
|
||||
};
|
||||
};
|
||||
|
||||
const updateProjectSequence = (
|
||||
sequenceId: string,
|
||||
label: string,
|
||||
@@ -4837,16 +4861,19 @@ export function App({ store, initialStatusMessage }: AppProps) {
|
||||
});
|
||||
};
|
||||
|
||||
const handleAddProjectSequenceControlStep = (
|
||||
const handleAddProjectSequenceControlEffect = (
|
||||
sequenceId: string,
|
||||
targetKey: string
|
||||
targetKey: string,
|
||||
effectOptionId: ProjectScheduleEffectOptionId
|
||||
) => {
|
||||
updateProjectSequence(
|
||||
sequenceId,
|
||||
"Add project sequence effect",
|
||||
"Added sequence effect.",
|
||||
(sequence) => {
|
||||
sequence.effects.push(createDefaultProjectSequenceControlStep(targetKey));
|
||||
sequence.effects.push(
|
||||
createProjectSequenceControlStepFromOption(targetKey, effectOptionId)
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
@@ -11956,7 +11983,7 @@ export function App({ store, initialStatusMessage }: AppProps) {
|
||||
}
|
||||
)
|
||||
}
|
||||
onAddControlStep={handleAddProjectSequenceControlStep}
|
||||
onAddControlEffect={handleAddProjectSequenceControlEffect}
|
||||
onAddDialogueStep={handleAddProjectSequenceDialogueStep}
|
||||
onAddTeleportStep={handleAddProjectSequenceTeleportStep}
|
||||
onAddSceneTransitionStep={
|
||||
|
||||
@@ -86,7 +86,11 @@ interface ProjectSequencerPaneProps {
|
||||
onSetRoutinePriority(routineId: string, priority: number): void;
|
||||
onSetRoutineSequenceId(routineId: string, sequenceId: string | null): void;
|
||||
onSetSequenceTitle(sequenceId: string, title: string): void;
|
||||
onAddControlStep(sequenceId: string, targetKey: string): void;
|
||||
onAddControlEffect(
|
||||
sequenceId: string,
|
||||
targetKey: string,
|
||||
effectOptionId: ProjectScheduleEffectOptionId
|
||||
): void;
|
||||
onAddDialogueStep(sequenceId: string, dialogueId: string): void;
|
||||
onAddTeleportStep(sequenceId: string, targetEntityId: string): void;
|
||||
onAddSceneTransitionStep(sequenceId: string, targetKey: string): void;
|
||||
@@ -403,7 +407,7 @@ export function ProjectSequencerPane({
|
||||
onSetRoutinePriority,
|
||||
onSetRoutineSequenceId,
|
||||
onSetSequenceTitle,
|
||||
onAddControlStep,
|
||||
onAddControlEffect,
|
||||
onAddDialogueStep,
|
||||
onAddTeleportStep,
|
||||
onAddSceneTransitionStep,
|
||||
@@ -673,7 +677,7 @@ export function ProjectSequencerPane({
|
||||
onAddSequence={onAddSequence}
|
||||
onDeleteSequence={onDeleteSequence}
|
||||
onSetSequenceTitle={onSetSequenceTitle}
|
||||
onAddControlStep={onAddControlStep}
|
||||
onAddControlEffect={onAddControlEffect}
|
||||
onAddDialogueStep={onAddDialogueStep}
|
||||
onAddTeleportStep={onAddTeleportStep}
|
||||
onAddSceneTransitionStep={onAddSceneTransitionStep}
|
||||
|
||||
Reference in New Issue
Block a user