From eccbf8bb6166fe6c388cce76b04d71acb49d3e94 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 13 Apr 2026 23:51:33 +0200 Subject: [PATCH] Add presence validation and update NPC entity creation logic in App.tsx --- src/app/App.tsx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/app/App.tsx b/src/app/App.tsx index fa0bf2f1..f30bd0b5 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -5668,10 +5668,38 @@ export function App({ store, initialStatusMessage }: AppProps) { try { const trimmedModelAssetId = npcModelAssetIdDraft.trim(); const colliderMode = overrides.colliderMode ?? npcColliderModeDraft; + const presence = + npcPresenceModeDraft === "always" + ? createNpcAlwaysPresence() + : createNpcTimeWindowPresence({ + startHour: normalizeTimeOfDayHours( + readFiniteNumberDraft( + npcPresenceStartHourDraft, + "NPC presence start hour" + ) + ), + endHour: normalizeTimeOfDayHours( + readFiniteNumberDraft( + npcPresenceEndHourDraft, + "NPC presence end hour" + ) + ) + }); + + if ( + presence.mode === "timeWindow" && + presence.startHour === presence.endHour + ) { + throw new Error( + "NPC presence window start and end hours must differ." + ); + } + const nextEntity = createNpcEntity({ id: selectedNpc.id, name: selectedNpc.name, actorId: npcActorIdDraft, + presence, position: snapVec3ToGrid( readVec3Draft(entityPositionDraft, "NPC position"), DEFAULT_GRID_SIZE