Add NPC support in interaction source entity handling

This commit is contained in:
2026-04-15 10:58:46 +02:00
parent 5a132cb351
commit 9cce99b7db

View File

@@ -481,9 +481,22 @@ type WorldNightEnvironmentNumericField =
type InteractionSourceEntity = Extract< type InteractionSourceEntity = Extract<
EntityInstance, EntityInstance,
{ kind: "triggerVolume" | "interactable" } { kind: "triggerVolume" | "interactable" | "npc" }
>; >;
function getInteractionSourceEntityLabel(
entity: InteractionSourceEntity
): string {
switch (entity.kind) {
case "triggerVolume":
return "Trigger Volume";
case "interactable":
return "Interactable";
case "npc":
return "NPC";
}
}
function getModelInstanceCollisionModeDescription( function getModelInstanceCollisionModeDescription(
mode: ModelInstanceCollisionMode mode: ModelInstanceCollisionMode
): string { ): string {
@@ -1495,7 +1508,9 @@ function isInteractionSourceEntity(
): entity is InteractionSourceEntity { ): entity is InteractionSourceEntity {
return ( return (
entity !== null && entity !== null &&
(entity.kind === "triggerVolume" || entity.kind === "interactable") (entity.kind === "triggerVolume" ||
entity.kind === "interactable" ||
entity.kind === "npc")
); );
} }
@@ -2133,6 +2148,13 @@ export function App({ store, initialStatusMessage }: AppProps) {
editorState.document.interactionLinks, editorState.document.interactionLinks,
selectedInteractable.id selectedInteractable.id
); );
const selectedNpcLinks =
selectedNpc === null
? []
: getInteractionLinksForSource(
editorState.document.interactionLinks,
selectedNpc.id
);
const sceneTargetOptions = sceneList.map((scene) => ({ const sceneTargetOptions = sceneList.map((scene) => ({
id: scene.id, id: scene.id,
name: scene.name name: scene.name