Add migration logic for NPC targeting in scene and project documents

This commit is contained in:
2026-05-11 21:23:08 +02:00
parent 876a28646c
commit 5d4e67de48

View File

@@ -6283,7 +6283,8 @@ export function migrateSceneDocument(source: unknown): SceneDocument {
source.version !== PLAYER_START_EDGE_ASSIST_SCENE_DOCUMENT_VERSION &&
source.version !== WHITEBOX_FACE_CLIMBABLE_SCENE_DOCUMENT_VERSION &&
source.version !== FOLLOW_ACTOR_PATH_SMOOTH_SCENE_DOCUMENT_VERSION &&
source.version !== ENTITY_TRANSFORMS_SCENE_DOCUMENT_VERSION
source.version !== ENTITY_TRANSFORMS_SCENE_DOCUMENT_VERSION &&
source.version !== NPC_TARGETING_SCENE_DOCUMENT_VERSION
) {
throw new Error(
`Unsupported scene document version: ${String(source.version)}.`
@@ -6303,7 +6304,7 @@ export function migrateSceneDocument(source: unknown): SceneDocument {
}
);
const migratedDocument: SceneDocument = {
let migratedDocument: SceneDocument = {
version: SCENE_DOCUMENT_VERSION,
name: expectString(source.name, "name"),
time: readProjectTimeSettings(source.time, "time", {
@@ -6337,6 +6338,10 @@ export function migrateSceneDocument(source: unknown): SceneDocument {
interactionLinks: readInteractionLinks(source.interactionLinks)
};
if (source.version < NPC_TARGETING_SCENE_DOCUMENT_VERSION) {
migratedDocument = migrateLegacySceneNpcTargetability(migratedDocument);
}
return source.version < PROJECT_SCHEDULER_FOUNDATION_SCENE_DOCUMENT_VERSION
? migrateLegacySceneNpcPresenceToScheduler(migratedDocument)
: migratedDocument;
@@ -6460,7 +6465,7 @@ export function migrateProjectDocument(source: unknown): ProjectDocument {
);
}
const migratedDocument: ProjectDocument = {
let migratedDocument: ProjectDocument = {
version: SCENE_DOCUMENT_VERSION,
name: readProjectName(source.name, "name", {
allowMissing: allowMissingProjectName
@@ -6484,6 +6489,10 @@ export function migrateProjectDocument(source: unknown): ProjectDocument {
foliagePrototypes: readFoliagePrototypes(source.foliagePrototypes, assets)
};
if (source.version < NPC_TARGETING_SCENE_DOCUMENT_VERSION) {
migratedDocument = migrateLegacyProjectNpcTargetability(migratedDocument);
}
return source.version < PROJECT_SCHEDULER_FOUNDATION_SCENE_DOCUMENT_VERSION
? migrateLegacyProjectNpcPresenceToScheduler(migratedDocument)
: migratedDocument;