auto-git:
[change] tests/domain/runtime-project-scheduler.test.ts
This commit is contained in:
@@ -2,7 +2,9 @@ import { describe, expect, it } from "vitest";
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
applyControlEffectToResolvedState,
|
applyControlEffectToResolvedState,
|
||||||
|
createActivateCameraRigOverrideControlEffect,
|
||||||
createActorControlTargetRef,
|
createActorControlTargetRef,
|
||||||
|
createCameraRigControlTargetRef,
|
||||||
createDefaultResolvedControlSource,
|
createDefaultResolvedControlSource,
|
||||||
createEmptyRuntimeResolvedControlState,
|
createEmptyRuntimeResolvedControlState,
|
||||||
createLightControlTargetRef,
|
createLightControlTargetRef,
|
||||||
@@ -395,6 +397,87 @@ describe("runtime project scheduler", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("applies camera rig override scheduler effects over baseline control state and restores fallback when inactive", () => {
|
||||||
|
const cameraRigTarget = createCameraRigControlTargetRef(
|
||||||
|
"entity-camera-rig-main"
|
||||||
|
);
|
||||||
|
const scheduler = createEmptyProjectScheduler();
|
||||||
|
const sequences = createEmptyProjectSequenceLibrary();
|
||||||
|
scheduler.routines["routine-overlook-camera"] = createProjectScheduleRoutine({
|
||||||
|
id: "routine-overlook-camera",
|
||||||
|
title: "Overlook Camera",
|
||||||
|
target: cameraRigTarget,
|
||||||
|
startHour: 18,
|
||||||
|
endHour: 20,
|
||||||
|
effect: createActivateCameraRigOverrideControlEffect({
|
||||||
|
target: cameraRigTarget
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
const baselineResolved = applyControlEffectToResolvedState(
|
||||||
|
createEmptyRuntimeResolvedControlState(),
|
||||||
|
createClearCameraRigOverrideControlEffect({
|
||||||
|
target: cameraRigTarget
|
||||||
|
}),
|
||||||
|
createDefaultResolvedControlSource()
|
||||||
|
);
|
||||||
|
const activeSchedule = resolveRuntimeProjectScheduleState({
|
||||||
|
scheduler,
|
||||||
|
sequences,
|
||||||
|
actorIds: [],
|
||||||
|
dayNumber: 1,
|
||||||
|
timeOfDayHours: 19
|
||||||
|
});
|
||||||
|
const activeResolved = applyRuntimeProjectScheduleToControlState(
|
||||||
|
baselineResolved,
|
||||||
|
activeSchedule,
|
||||||
|
baselineResolved
|
||||||
|
);
|
||||||
|
const inactiveSchedule = resolveRuntimeProjectScheduleState({
|
||||||
|
scheduler,
|
||||||
|
sequences,
|
||||||
|
actorIds: [],
|
||||||
|
dayNumber: 1,
|
||||||
|
timeOfDayHours: 9
|
||||||
|
});
|
||||||
|
const inactiveResolved = applyRuntimeProjectScheduleToControlState(
|
||||||
|
activeResolved,
|
||||||
|
inactiveSchedule,
|
||||||
|
baselineResolved
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(activeSchedule.controls).toEqual([
|
||||||
|
expect.objectContaining({
|
||||||
|
routineId: "routine-overlook-camera",
|
||||||
|
title: "Overlook Camera",
|
||||||
|
resolutionKey: "state:cameraRigOverride:global:project"
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
expect(activeResolved.discrete).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
type: "cameraRigOverride",
|
||||||
|
entityId: "entity-camera-rig-main",
|
||||||
|
source: {
|
||||||
|
kind: "scheduler",
|
||||||
|
scheduleId: "routine-overlook-camera"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
])
|
||||||
|
);
|
||||||
|
expect(inactiveResolved.discrete).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
type: "cameraRigOverride",
|
||||||
|
entityId: null,
|
||||||
|
source: {
|
||||||
|
kind: "default"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
])
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it("resolves actor animation and deterministic follow-path state from the active routine window", () => {
|
it("resolves actor animation and deterministic follow-path state from the active routine window", () => {
|
||||||
const actorTarget = createActorControlTargetRef("actor-patrol");
|
const actorTarget = createActorControlTargetRef("actor-patrol");
|
||||||
const scheduler = createEmptyProjectScheduler();
|
const scheduler = createEmptyProjectScheduler();
|
||||||
|
|||||||
Reference in New Issue
Block a user