Update validation messages and logic in scene document, project scheduler, and sequencer
This commit is contained in:
@@ -3557,7 +3557,7 @@ function validateInteractionLink(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"invalid-link-sequence-no-impulse-steps",
|
||||
"Interaction link sequences must expose at least one impulse step.",
|
||||
"Interaction link sequences must include at least one start effect.",
|
||||
`${path}.action.sequenceId`
|
||||
)
|
||||
);
|
||||
@@ -3764,11 +3764,15 @@ function validateProjectScheduler(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (routine.target.kind === "actor") {
|
||||
continue;
|
||||
}
|
||||
|
||||
diagnostics.push(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"invalid-project-schedule-routine-effects-empty",
|
||||
"Project schedule routines must resolve at least one held control effect.",
|
||||
"Project sequencer placements must resolve at least one timeline control effect unless they only use start effects.",
|
||||
routine.sequenceId === null ? `${path}.effects` : `${path}.sequenceId`
|
||||
)
|
||||
);
|
||||
@@ -3780,7 +3784,7 @@ function validateProjectScheduler(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"invalid-project-schedule-non-actor-effect-count",
|
||||
"Non-actor schedule routines must currently resolve exactly one held control effect.",
|
||||
"Non-actor sequencer placements must currently resolve exactly one timeline control effect.",
|
||||
routine.sequenceId === null ? `${path}.effects` : `${path}.sequenceId`
|
||||
)
|
||||
);
|
||||
@@ -3832,20 +3836,6 @@ function validateProjectScheduler(
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
routine.target.kind === "actor" &&
|
||||
!resolvedEffects.some((effect) => effect.type === "setActorPresence")
|
||||
) {
|
||||
diagnostics.push(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"invalid-project-schedule-actor-presence-missing",
|
||||
"Actor schedule routines must include an actor presence effect.",
|
||||
routine.sequenceId === null ? `${path}.effects` : `${path}.sequenceId`
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,6 @@ import {
|
||||
getControlEffectResolutionKey,
|
||||
type ControlEffect,
|
||||
type ControlTargetRef,
|
||||
createActorControlTargetRef,
|
||||
createSetActorPresenceControlEffect,
|
||||
getControlTargetRefKey
|
||||
} from "../controls/control-surface";
|
||||
import {
|
||||
@@ -204,19 +202,7 @@ function normalizeProjectScheduleEffects(
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
target.kind === "actor" &&
|
||||
!normalizedEffects.some((effect) => effect.type === "setActorPresence")
|
||||
) {
|
||||
normalizedEffects.push(
|
||||
createSetActorPresenceControlEffect({
|
||||
target,
|
||||
active: true
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (normalizedEffects.length === 0) {
|
||||
if (normalizedEffects.length === 0 && target.kind !== "actor") {
|
||||
throw new Error("Project schedule routines must contain at least one control effect.");
|
||||
}
|
||||
|
||||
|
||||
@@ -155,21 +155,21 @@ export function cloneSequenceSteps(steps: SequenceStep[]): SequenceStep[] {
|
||||
export function getSequenceEffectLabel(effect: SequenceEffect): string {
|
||||
switch (effect.type) {
|
||||
case "controlEffect":
|
||||
return `${effect.stepClass === "held" ? "Held" : "Impulse"}: ${getControlEffectLabel(effect.effect)}`;
|
||||
return getControlEffectLabel(effect.effect);
|
||||
case "startDialogue":
|
||||
return "Impulse: Start Dialogue";
|
||||
return "Start Dialogue";
|
||||
case "teleportPlayer":
|
||||
return "Impulse: Teleport Player";
|
||||
return "Teleport Player";
|
||||
case "startSceneTransition":
|
||||
return "Impulse: Change Scene";
|
||||
return "Change Scene";
|
||||
case "setVisibility":
|
||||
switch (effect.mode) {
|
||||
case "show":
|
||||
return "Impulse: Show";
|
||||
return "Show";
|
||||
case "hide":
|
||||
return "Impulse: Hide";
|
||||
return "Hide";
|
||||
case "toggle":
|
||||
return "Impulse: Toggle Visibility";
|
||||
return "Toggle Visibility";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user