Add validation for dialogue and sequence IDs in scene document
This commit is contained in:
@@ -5131,6 +5131,8 @@ export function validateSceneDocument(
|
||||
): SceneDocumentValidationResult {
|
||||
const diagnostics: SceneDiagnostic[] = [];
|
||||
const seenIds = new Map<string, string>();
|
||||
const projectSchedulerValidationContext =
|
||||
createProjectSchedulerValidationContextFromSceneDocument(document);
|
||||
|
||||
validateProjectTimeSettings(document.time, diagnostics);
|
||||
validateWorldSettings(document.world, document, diagnostics);
|
||||
@@ -5170,6 +5172,48 @@ export function validateSceneDocument(
|
||||
validateProjectAsset(asset, path, diagnostics);
|
||||
}
|
||||
|
||||
for (const [dialogueKey, dialogue] of Object.entries(document.dialogues.dialogues)) {
|
||||
const path = `dialogues.dialogues.${dialogueKey}`;
|
||||
|
||||
if (dialogue.id !== dialogueKey) {
|
||||
diagnostics.push(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"dialogue-id-mismatch",
|
||||
"Dialogue ids must match their registry key.",
|
||||
`${path}.id`
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
registerAuthoredId(dialogue.id, path, seenIds, diagnostics);
|
||||
validateProjectDialogue(dialogue, path, seenIds, diagnostics);
|
||||
}
|
||||
|
||||
for (const [sequenceKey, sequence] of Object.entries(document.sequences.sequences)) {
|
||||
const path = `sequences.sequences.${sequenceKey}`;
|
||||
|
||||
if (sequence.id !== sequenceKey) {
|
||||
diagnostics.push(
|
||||
createDiagnostic(
|
||||
"error",
|
||||
"sequence-id-mismatch",
|
||||
"Sequence ids must match their registry key.",
|
||||
`${path}.id`
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
registerAuthoredId(sequence.id, path, seenIds, diagnostics);
|
||||
validateProjectSequence(
|
||||
sequence,
|
||||
path,
|
||||
{ dialogues: document.dialogues },
|
||||
projectSchedulerValidationContext,
|
||||
diagnostics
|
||||
);
|
||||
}
|
||||
|
||||
for (const [brushKey, brush] of Object.entries(document.brushes)) {
|
||||
const path = `brushes.${brushKey}`;
|
||||
|
||||
@@ -5566,7 +5610,8 @@ export function validateSceneDocument(
|
||||
|
||||
validateProjectScheduler(
|
||||
document.scheduler,
|
||||
createProjectSchedulerValidationContextFromSceneDocument(document),
|
||||
document.sequences,
|
||||
projectSchedulerValidationContext,
|
||||
diagnostics
|
||||
);
|
||||
|
||||
@@ -5593,6 +5638,8 @@ export function validateProjectDocument(
|
||||
document: ProjectDocument
|
||||
): SceneDocumentValidationResult {
|
||||
const diagnostics: SceneDiagnostic[] = [];
|
||||
const projectSchedulerValidationContext =
|
||||
createProjectSchedulerValidationContextFromProjectDocument(document);
|
||||
|
||||
if (document.name.trim().length === 0) {
|
||||
diagnostics.push(
|
||||
@@ -5628,11 +5675,16 @@ export function validateProjectDocument(
|
||||
}
|
||||
|
||||
validateProjectTimeSettings(document.time, diagnostics);
|
||||
validateProjectResources(document, diagnostics);
|
||||
validateProjectResources(
|
||||
document,
|
||||
projectSchedulerValidationContext,
|
||||
diagnostics
|
||||
);
|
||||
|
||||
validateProjectScheduler(
|
||||
document.scheduler,
|
||||
createProjectSchedulerValidationContextFromProjectDocument(document),
|
||||
document.sequences,
|
||||
projectSchedulerValidationContext,
|
||||
diagnostics
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user