Add integration tests for NPC entity and presence scheduling (Ana Nanto)

This commit is contained in:
2026-04-27 17:24:42 +02:00
parent 76c0136a32
commit 144a05aca1

View File

@@ -7,8 +7,15 @@ import {
} from "../../src/document/scene-document"; } from "../../src/document/scene-document";
import { import {
createPlayerStartEntity, createPlayerStartEntity,
createSceneEntryEntity createSceneEntryEntity,
createNpcEntity
} from "../../src/entities/entity-instances"; } from "../../src/entities/entity-instances";
import {
createActorControlTargetRef,
createSetActorPresenceControlEffect
} from "../../src/controls/control-surface";
import { createProjectScheduleRoutine } from "../../src/scheduler/project-scheduler";
import { createProjectSequence } from "../../src/sequencer/project-sequences";
const { MockViewportHost, viewportHostInstances } = vi.hoisted(() => { const { MockViewportHost, viewportHostInstances } = vi.hoisted(() => {
const viewportHostInstances: Array<{ const viewportHostInstances: Array<{
@@ -145,6 +152,11 @@ function createSceneTransitionProject() {
}, },
yawDegrees: 90 yawDegrees: 90
}); });
const ana = createNpcEntity({
id: "entity-npc-ana-nanto",
actorId: "Ana Nanto"
});
const anaTarget = createActorControlTargetRef(ana.actorId);
const housePlayerStart = createPlayerStartEntity({ const housePlayerStart = createPlayerStartEntity({
id: "entity-player-start-house", id: "entity-player-start-house",
position: { position: {
@@ -173,7 +185,8 @@ function createSceneTransitionProject() {
[outdoorScene.id]: { [outdoorScene.id]: {
...outdoorScene, ...outdoorScene,
entities: { entities: {
[outdoorPlayerStart.id]: outdoorPlayerStart [outdoorPlayerStart.id]: outdoorPlayerStart,
[ana.id]: ana
} }
}, },
[houseScene.id]: { [houseScene.id]: {
@@ -184,6 +197,29 @@ function createSceneTransitionProject() {
} }
} }
}; };
projectDocument.sequences.sequences["sequence-ana-presence"] =
createProjectSequence({
id: "sequence-ana-presence",
title: "Ana Presence",
effects: [
{
stepClass: "held",
type: "controlEffect",
effect: createSetActorPresenceControlEffect({
target: anaTarget,
active: true
})
}
]
});
projectDocument.scheduler.routines["routine-ana-presence"] =
createProjectScheduleRoutine({
id: "routine-ana-presence",
title: "Ana Presence",
target: anaTarget,
sequenceId: "sequence-ana-presence",
effects: []
});
return projectDocument; return projectDocument;
} }