Add actor presence control effect and related functions

This commit is contained in:
2026-04-14 01:53:16 +02:00
parent 5facb6f136
commit f0bc618649

View File

@@ -59,6 +59,7 @@ import {
type PlayerStartMovementTemplateKind type PlayerStartMovementTemplateKind
} from "../entities/entity-instances"; } from "../entities/entity-instances";
import { import {
createActorControlTargetRef,
createActiveSceneControlTargetRef, createActiveSceneControlTargetRef,
createEntityControlTargetRef, createEntityControlTargetRef,
createInteractionControlTargetRef, createInteractionControlTargetRef,
@@ -67,6 +68,7 @@ import {
createPlayModelAnimationControlEffect, createPlayModelAnimationControlEffect,
createPlaySoundControlEffect, createPlaySoundControlEffect,
createProjectGlobalControlTargetRef, createProjectGlobalControlTargetRef,
createSetActorPresenceControlEffect,
createSetInteractionEnabledControlEffect, createSetInteractionEnabledControlEffect,
createSetLightEnabledControlEffect, createSetLightEnabledControlEffect,
createSetLightIntensityControlEffect, createSetLightIntensityControlEffect,
@@ -136,6 +138,7 @@ import {
PLAYER_START_NAVIGATION_MODE_SCENE_DOCUMENT_VERSION, PLAYER_START_NAVIGATION_MODE_SCENE_DOCUMENT_VERSION,
PLAYER_START_COLLIDER_SETTINGS_SCENE_DOCUMENT_VERSION, PLAYER_START_COLLIDER_SETTINGS_SCENE_DOCUMENT_VERSION,
PATH_FOUNDATION_SCENE_DOCUMENT_VERSION, PATH_FOUNDATION_SCENE_DOCUMENT_VERSION,
PROJECT_SCHEDULER_FOUNDATION_SCENE_DOCUMENT_VERSION,
RUNNER_V1_SCENE_DOCUMENT_VERSION, RUNNER_V1_SCENE_DOCUMENT_VERSION,
SCENE_TRANSITION_ENTITIES_SCENE_DOCUMENT_VERSION, SCENE_TRANSITION_ENTITIES_SCENE_DOCUMENT_VERSION,
SPATIAL_AUDIO_SCENE_DOCUMENT_VERSION, SPATIAL_AUDIO_SCENE_DOCUMENT_VERSION,
@@ -177,6 +180,12 @@ import {
normalizeTimeOfDayHours, normalizeTimeOfDayHours,
type ProjectTimeSettings type ProjectTimeSettings
} from "./project-time-settings"; } from "./project-time-settings";
import {
createEmptyProjectScheduler,
createProjectScheduleEveryDaySelection,
createProjectScheduleRoutine,
type ProjectScheduler
} from "../scheduler/project-scheduler";
import { import {
cloneWorldBackgroundSettings, cloneWorldBackgroundSettings,
createDefaultWorldTimeOfDaySettings, createDefaultWorldTimeOfDaySettings,
@@ -2886,10 +2895,9 @@ function readControlTargetRef(value: unknown, label: string): ControlTargetRef {
switch (kind) { switch (kind) {
case "actor": case "actor":
return { return createActorControlTargetRef(
kind: "actor", expectString(value.actorId, `${label}.actorId`)
actorId: expectString(value.actorId, `${label}.actorId`) );
};
case "entity": { case "entity": {
const entityKind = expectString(value.entityKind, `${label}.entityKind`); const entityKind = expectString(value.entityKind, `${label}.entityKind`);
@@ -2944,6 +2952,14 @@ function readControlEffect(value: unknown, label: string): ControlEffect {
const type = expectString(value.type, `${label}.type`); const type = expectString(value.type, `${label}.type`);
switch (type) { switch (type) {
case "setActorPresence":
return createSetActorPresenceControlEffect({
target: readControlTargetRef(
value.target,
`${label}.target`
) as ReturnType<typeof createActorControlTargetRef>,
active: expectBoolean(value.active, `${label}.active`)
});
case "playModelAnimation": case "playModelAnimation":
return createPlayModelAnimationControlEffect({ return createPlayModelAnimationControlEffect({
target: readControlTargetRef( target: readControlTargetRef(