diff --git a/src/app/ProjectSchedulePane.tsx b/src/app/ProjectSchedulePane.tsx
index a9a90eeb..757561c6 100644
--- a/src/app/ProjectSchedulePane.tsx
+++ b/src/app/ProjectSchedulePane.tsx
@@ -615,128 +615,266 @@ export function ProjectSchedulePane({
- {selectedEffectOptions.find(
- (effectOption) => effectOption.id === selectedEffectOptionId
- )?.valueKind === "number" ? (
-
-
Value
-
+
+
+ onSetActorRoutinePathLoop(
+ selectedRoutine.id,
+ event.currentTarget.checked
+ )
+ }
+ />
+ Loop
+
+ {(selectedTargetOption.defaults.actorPathOptions ?? []).length ===
+ 0 ? (
+
+ Paths are available only when this actor has one uniquely
+ bound NPC usage in a scene with enabled authored paths.
+
+ ) : null}
+
+ >
+ ) : (
+ <>
+ {selectedEffectOptions.find(
+ (effectOption) => effectOption.id === selectedEffectOptionId
+ )?.valueKind === "number" ? (
+
+
Value
+
+
+ {selectedEffectOptions.find(
+ (effectOption) =>
+ effectOption.id === selectedEffectOptionId
+ )?.valueLabel ?? "Value"}
+
+
+ effectOption.id === selectedEffectOptionId
+ )?.min ?? 0
+ }
+ step={
+ selectedEffectOptions.find(
+ (effectOption) =>
+ effectOption.id === selectedEffectOptionId
+ )?.step ?? 0.1
+ }
+ defaultValue={getRoutineNumericValue(selectedRoutine) ?? 0}
+ onBlur={(event) =>
+ onSetRoutineNumericValue(
+ selectedRoutine.id,
+ Number(event.currentTarget.value)
+ )
+ }
+ onKeyDown={(event) =>
+ handleCommitOnEnter(event, () =>
+ onSetRoutineNumericValue(
+ selectedRoutine.id,
+ Number(event.currentTarget.value)
+ )
+ )
+ }
+ />
+
+
+ ) : null}
- {selectedEffectOptions.find(
- (effectOption) => effectOption.id === selectedEffectOptionId
- )?.valueKind === "color" ? (
-
-
Value
-
-
- {selectedEffectOptions.find(
- (effectOption) => effectOption.id === selectedEffectOptionId
- )?.valueLabel ?? "Color"}
-
-
- onSetRoutineColorValue(
- selectedRoutine.id,
- event.currentTarget.value
- )
- }
- />
-
-
- ) : null}
+ {selectedEffectOptions.find(
+ (effectOption) => effectOption.id === selectedEffectOptionId
+ )?.valueKind === "color" ? (
+
+
Value
+
+
+ {selectedEffectOptions.find(
+ (effectOption) =>
+ effectOption.id === selectedEffectOptionId
+ )?.valueLabel ?? "Color"}
+
+
+ onSetRoutineColorValue(
+ selectedRoutine.id,
+ event.currentTarget.value
+ )
+ }
+ />
+
+
+ ) : null}
- {selectedEffectOptions.find(
- (effectOption) => effectOption.id === selectedEffectOptionId
- )?.valueKind === "animation" ? (
-
-
Animation
-
- Clip
-
-
-
-
- onSetRoutineAnimationLoop(
- selectedRoutine.id,
- event.currentTarget.checked
- )
- }
- />
- Loop
-
-
- ) : null}
+ {selectedEffectOptions.find(
+ (effectOption) => effectOption.id === selectedEffectOptionId
+ )?.valueKind === "animation" ? (
+
+
Animation
+
+ Clip
+
+
+
+
+ onSetRoutineAnimationLoop(
+ selectedRoutine.id,
+ event.currentTarget.checked
+ )
+ }
+ />
+ Loop
+
+
+ ) : null}
+ >
+ )}