ue-mcp 1.0.75 → 1.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/tool-counts.json +5 -5
- package/dist/tools/editor.js +12 -1
- package/dist/tools/editor.js.map +1 -1
- package/dist/ue-mcp.default.yml +19 -1
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +331 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.h +3 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UE-MCP
|
|
2
2
|
|
|
3
|
-
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->
|
|
3
|
+
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->569+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows.
|
|
4
4
|
|
|
5
5
|
```mermaid
|
|
6
6
|
flowchart LR
|
|
@@ -57,7 +57,7 @@ If you prefer to configure manually, add to your MCP client config:
|
|
|
57
57
|
|
|
58
58
|
- [Getting Started](https://db-lyon.github.io/ue-mcp/getting-started/) — Installation, configuration, first run
|
|
59
59
|
- [Architecture](https://db-lyon.github.io/ue-mcp/architecture/) — How the pieces fit together
|
|
60
|
-
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->
|
|
60
|
+
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->569+<!-- /count --> actions
|
|
61
61
|
- [Flows](https://db-lyon.github.io/ue-mcp/flows/) - YAML flow engine, custom tasks, rollback, hooks
|
|
62
62
|
- [Configuration](https://db-lyon.github.io/ue-mcp/configuration/) — `.ue-mcp.json` and MCP client config
|
|
63
63
|
- [Neon Shrine Demo](https://db-lyon.github.io/ue-mcp/neon-shrine-demo/) — Interactive guided demo
|
package/dist/tool-counts.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tools": 21,
|
|
3
|
-
"actions":
|
|
4
|
-
"bridgeActions":
|
|
3
|
+
"actions": 569,
|
|
4
|
+
"bridgeActions": 539,
|
|
5
5
|
"localActions": 30,
|
|
6
6
|
"perTool": {
|
|
7
7
|
"project": 27,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"niagara": 28,
|
|
17
17
|
"audio": 5,
|
|
18
18
|
"widget": 22,
|
|
19
|
-
"editor":
|
|
19
|
+
"editor": 59,
|
|
20
20
|
"reflection": 8,
|
|
21
21
|
"gameplay": 54,
|
|
22
22
|
"gas": 14,
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
"statetree": 35,
|
|
27
27
|
"plugins": 2
|
|
28
28
|
},
|
|
29
|
-
"generatedAt": "2026-06-
|
|
30
|
-
"version": "1.0.
|
|
29
|
+
"generatedAt": "2026-06-06T02:35:43.378Z",
|
|
30
|
+
"version": "1.0.76"
|
|
31
31
|
}
|
package/dist/tools/editor.js
CHANGED
|
@@ -120,7 +120,10 @@ export const editorTool = categoryTool("editor", "Editor commands, Python execut
|
|
|
120
120
|
focus_on_actor: bp("Focus on actor. Params: actorLabel", "focus_viewport_on_actor"),
|
|
121
121
|
create_sequence: bp("Create Level Sequence. Params: name, packagePath?", "create_level_sequence"),
|
|
122
122
|
get_sequence_info: bp("Read sequence. Params: assetPath, includeSectionDetails? (attach sockets, first transform key values per track)", "get_sequence_info"),
|
|
123
|
-
add_sequence_track: bp("Add track. Params: assetPath, trackType, actorLabel?", "add_sequence_track"),
|
|
123
|
+
add_sequence_track: bp("Add an empty track. Params: assetPath, trackType, actorLabel?", "add_sequence_track"),
|
|
124
|
+
add_sequence_section: bp("Add a section to a track (creating the track if needed), set its start/end in seconds, and for a CameraCut track bind it to a camera. Returns the section index + channel names to key. Params: sequencePath, trackType (Transform|Float|Fade|CameraCut|Audio|Event|SkeletalAnimation), actorLabel? (binding scope), startSeconds?, endSeconds?, cameraActorLabel? (#548)", "add_sequence_section", (p) => ({ sequencePath: p.sequencePath ?? p.assetPath, trackType: p.trackType, actorLabel: p.actorLabel, startSeconds: p.startSeconds, endSeconds: p.endSeconds, cameraActorLabel: p.cameraActorLabel })),
|
|
125
|
+
set_sequence_keyframes: bp("Add keyframes to a section channel. Transform channels: Location.X/Y/Z, Rotation.X/Y/Z (or friendly x/y/z, yaw/pitch/roll); Fade/Float: the float channel. Params: sequencePath, trackType, actorLabel?, sectionIndex? (default 0), channel, keyframes ([{seconds, value}]), interpolation? (cubic|linear) (#548)", "set_sequence_keyframes", (p) => ({ sequencePath: p.sequencePath ?? p.assetPath, trackType: p.trackType, actorLabel: p.actorLabel, sectionIndex: p.sectionIndex, channel: p.channel, keyframes: p.keyframes, interpolation: p.interpolation })),
|
|
126
|
+
set_sequence_playback_range: bp("Set a Level Sequence's playback range in seconds. Params: sequencePath, startSeconds, endSeconds (#548)", "set_sequence_playback_range", (p) => ({ sequencePath: p.sequencePath ?? p.assetPath, startSeconds: p.startSeconds, endSeconds: p.endSeconds })),
|
|
124
127
|
play_sequence: bp("Play/stop/pause sequence. Params: assetPath, sequenceAction", "play_sequence", (p) => ({ assetPath: p.assetPath, action: p.sequenceAction ?? "play" })),
|
|
125
128
|
build_all: bp("Build all (geometry, lighting, paths, HLOD)", "build_all"),
|
|
126
129
|
build_geometry: bp("Rebuild BSP geometry", "build_geometry"),
|
|
@@ -177,6 +180,14 @@ export const editorTool = categoryTool("editor", "Editor commands, Python execut
|
|
|
177
180
|
packagePath: z.string().optional(),
|
|
178
181
|
assetPath: z.string().optional(),
|
|
179
182
|
trackType: z.string().optional(),
|
|
183
|
+
sequencePath: z.string().optional().describe("Level Sequence asset path for sequencer authoring (#548)"),
|
|
184
|
+
startSeconds: z.number().optional().describe("Section/playback range start in seconds (#548)"),
|
|
185
|
+
endSeconds: z.number().optional().describe("Section/playback range end in seconds (#548)"),
|
|
186
|
+
cameraActorLabel: z.string().optional().describe("add_sequence_section CameraCut: camera actor to bind (#548)"),
|
|
187
|
+
sectionIndex: z.number().optional().describe("set_sequence_keyframes: target section index (default 0) (#548)"),
|
|
188
|
+
channel: z.string().optional().describe("set_sequence_keyframes: channel name (Location.X, Rotation.Z, yaw, fade...) (#548)"),
|
|
189
|
+
keyframes: z.array(z.object({ seconds: z.number(), value: z.number() })).optional().describe("set_sequence_keyframes: [{seconds, value}] (#548)"),
|
|
190
|
+
interpolation: z.string().optional().describe("set_sequence_keyframes: cubic (default) or linear (#548)"),
|
|
180
191
|
sequenceAction: z.enum(["play", "stop", "pause"]).optional(),
|
|
181
192
|
directory: z.string().optional(),
|
|
182
193
|
platform: z.string().optional(),
|
package/dist/tools/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"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"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -2458,9 +2458,27 @@ tasks:
|
|
|
2458
2458
|
editor.add_sequence_track:
|
|
2459
2459
|
class_path: ue-mcp.bridge
|
|
2460
2460
|
group: editor
|
|
2461
|
-
description: "Add track. Params: assetPath, trackType, actorLabel?"
|
|
2461
|
+
description: "Add an empty track. Params: assetPath, trackType, actorLabel?"
|
|
2462
2462
|
options:
|
|
2463
2463
|
method: add_sequence_track
|
|
2464
|
+
editor.add_sequence_section:
|
|
2465
|
+
class_path: ue-mcp.bridge
|
|
2466
|
+
group: editor
|
|
2467
|
+
description: "Add a section to a track (creating the track if needed), set its start/end in seconds, and for a CameraCut track bind it to a camera. Returns the section index + channel names to key. Params: sequencePath, trackType (Transform|Float|Fade|CameraCut|Audio|Event|SkeletalAnimation), actorLabel? (binding scope), startSeconds?, endSeconds?, cameraActorLabel? (#548)"
|
|
2468
|
+
options:
|
|
2469
|
+
method: add_sequence_section
|
|
2470
|
+
editor.set_sequence_keyframes:
|
|
2471
|
+
class_path: ue-mcp.bridge
|
|
2472
|
+
group: editor
|
|
2473
|
+
description: "Add keyframes to a section channel. Transform channels: Location.X/Y/Z, Rotation.X/Y/Z (or friendly x/y/z, yaw/pitch/roll); Fade/Float: the float channel. Params: sequencePath, trackType, actorLabel?, sectionIndex? (default 0), channel, keyframes ([{seconds, value}]), interpolation? (cubic|linear) (#548)"
|
|
2474
|
+
options:
|
|
2475
|
+
method: set_sequence_keyframes
|
|
2476
|
+
editor.set_sequence_playback_range:
|
|
2477
|
+
class_path: ue-mcp.bridge
|
|
2478
|
+
group: editor
|
|
2479
|
+
description: "Set a Level Sequence's playback range in seconds. Params: sequencePath, startSeconds, endSeconds (#548)"
|
|
2480
|
+
options:
|
|
2481
|
+
method: set_sequence_playback_range
|
|
2464
2482
|
editor.play_sequence:
|
|
2465
2483
|
class_path: ue-mcp.bridge
|
|
2466
2484
|
group: editor
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ue-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Unreal Engine MCP server - 21 tools,
|
|
3
|
+
"version": "1.0.76",
|
|
4
|
+
"description": "Unreal Engine MCP server - 21 tools, 569+ actions for AI-driven editor control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "Tracks/MovieScene3DAttachTrack.h"
|
|
16
16
|
#include "Sections/MovieScene3DAttachSection.h"
|
|
17
17
|
#include "Sections/MovieScene3DTransformSection.h"
|
|
18
|
+
#include "Sections/MovieSceneCameraCutSection.h"
|
|
18
19
|
#include "Channels/MovieSceneDoubleChannel.h"
|
|
19
20
|
#include "Channels/MovieSceneFloatChannel.h"
|
|
20
21
|
#include "Channels/MovieSceneChannelProxy.h"
|
|
@@ -37,6 +38,74 @@ void FSequencerHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
37
38
|
Registry.RegisterHandler(TEXT("get_sequence_info"), &ReadSequenceInfo);
|
|
38
39
|
Registry.RegisterHandler(TEXT("add_sequence_track"), &AddTrack);
|
|
39
40
|
Registry.RegisterHandler(TEXT("play_sequence"), &SequenceControl);
|
|
41
|
+
Registry.RegisterHandler(TEXT("set_sequence_playback_range"), &SetPlaybackRange);
|
|
42
|
+
Registry.RegisterHandler(TEXT("add_sequence_section"), &AddSection);
|
|
43
|
+
Registry.RegisterHandler(TEXT("set_sequence_keyframes"), &SetKeyframes);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ─── #548 sequencer authoring helpers ────────────────────────────────
|
|
47
|
+
namespace
|
|
48
|
+
{
|
|
49
|
+
ULevelSequence* LoadSequence(const TSharedPtr<FJsonObject>& Params, FString& OutPath, FString& OutError)
|
|
50
|
+
{
|
|
51
|
+
if (!Params->TryGetStringField(TEXT("sequencePath"), OutPath))
|
|
52
|
+
{
|
|
53
|
+
if (!Params->TryGetStringField(TEXT("assetPath"), OutPath) && !Params->TryGetStringField(TEXT("path"), OutPath))
|
|
54
|
+
{
|
|
55
|
+
OutError = TEXT("Missing 'sequencePath' parameter");
|
|
56
|
+
return nullptr;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
ULevelSequence* Seq = Cast<ULevelSequence>(UEditorAssetLibrary::LoadAsset(OutPath));
|
|
60
|
+
if (!Seq) { OutError = FString::Printf(TEXT("LevelSequence not found: %s"), *OutPath); return nullptr; }
|
|
61
|
+
return Seq;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Resolve (creating if needed) the actor's possessable binding GUID.
|
|
65
|
+
bool ResolveActorBinding(ULevelSequence* Sequence, UMovieScene* MovieScene, const FString& ActorLabel, FGuid& OutGuid, FString& OutError)
|
|
66
|
+
{
|
|
67
|
+
UWorld* World = GetEditorWorld();
|
|
68
|
+
if (!World) { OutError = TEXT("No editor world available"); return false; }
|
|
69
|
+
AActor* TargetActor = FindActorByLabel(World, ActorLabel);
|
|
70
|
+
if (!TargetActor) { OutError = FString::Printf(TEXT("Actor not found: %s"), *ActorLabel); return false; }
|
|
71
|
+
|
|
72
|
+
for (int32 i = 0; i < MovieScene->GetPossessableCount(); ++i)
|
|
73
|
+
{
|
|
74
|
+
const FMovieScenePossessable& P = MovieScene->GetPossessable(i);
|
|
75
|
+
if (P.GetName() == ActorLabel || P.GetName() == TargetActor->GetName()) { OutGuid = P.GetGuid(); return true; }
|
|
76
|
+
}
|
|
77
|
+
OutGuid = MovieScene->AddPossessable(ActorLabel, TargetActor->GetClass());
|
|
78
|
+
Sequence->BindPossessableObject(OutGuid, *TargetActor, World);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
UClass* ResolveTrackClass(const FString& TrackType)
|
|
83
|
+
{
|
|
84
|
+
if (TrackType.Equals(TEXT("Transform"), ESearchCase::IgnoreCase)) return UMovieScene3DTransformTrack::StaticClass();
|
|
85
|
+
if (TrackType.Equals(TEXT("Float"), ESearchCase::IgnoreCase)) return UMovieSceneFloatTrack::StaticClass();
|
|
86
|
+
if (TrackType.Equals(TEXT("SkeletalAnimation"), ESearchCase::IgnoreCase)) return UMovieSceneSkeletalAnimationTrack::StaticClass();
|
|
87
|
+
if (TrackType.Equals(TEXT("CameraCut"), ESearchCase::IgnoreCase)) return UMovieSceneCameraCutTrack::StaticClass();
|
|
88
|
+
if (TrackType.Equals(TEXT("Audio"), ESearchCase::IgnoreCase)) return UMovieSceneAudioTrack::StaticClass();
|
|
89
|
+
if (TrackType.Equals(TEXT("Event"), ESearchCase::IgnoreCase)) return UMovieSceneEventTrack::StaticClass();
|
|
90
|
+
if (TrackType.Equals(TEXT("Fade"), ESearchCase::IgnoreCase)) return UMovieSceneFadeTrack::StaticClass();
|
|
91
|
+
return nullptr;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Map a friendly channel name to the canonical transform channel name.
|
|
95
|
+
FString CanonicalTransformChannel(const FString& In)
|
|
96
|
+
{
|
|
97
|
+
const FString L = In.ToLower();
|
|
98
|
+
if (L == TEXT("x") || L == TEXT("location.x")) return TEXT("Location.X");
|
|
99
|
+
if (L == TEXT("y") || L == TEXT("location.y")) return TEXT("Location.Y");
|
|
100
|
+
if (L == TEXT("z") || L == TEXT("location.z")) return TEXT("Location.Z");
|
|
101
|
+
if (L == TEXT("roll") || L == TEXT("rotation.x")) return TEXT("Rotation.X");
|
|
102
|
+
if (L == TEXT("pitch") || L == TEXT("rotation.y")) return TEXT("Rotation.Y");
|
|
103
|
+
if (L == TEXT("yaw") || L == TEXT("rotation.z")) return TEXT("Rotation.Z");
|
|
104
|
+
if (L == TEXT("scale.x")) return TEXT("Scale.X");
|
|
105
|
+
if (L == TEXT("scale.y")) return TEXT("Scale.Y");
|
|
106
|
+
if (L == TEXT("scale.z")) return TEXT("Scale.Z");
|
|
107
|
+
return In;
|
|
108
|
+
}
|
|
40
109
|
}
|
|
41
110
|
|
|
42
111
|
TSharedPtr<FJsonValue> FSequencerHandlers::CreateLevelSequence(const TSharedPtr<FJsonObject>& Params)
|
|
@@ -428,3 +497,265 @@ TSharedPtr<FJsonValue> FSequencerHandlers::SequenceControl(const TSharedPtr<FJso
|
|
|
428
497
|
|
|
429
498
|
return MCPResult(Result);
|
|
430
499
|
}
|
|
500
|
+
|
|
501
|
+
// set_sequence_playback_range -- set a Level Sequence's playback range in
|
|
502
|
+
// seconds. (#548) Params: sequencePath, startSeconds, endSeconds.
|
|
503
|
+
TSharedPtr<FJsonValue> FSequencerHandlers::SetPlaybackRange(const TSharedPtr<FJsonObject>& Params)
|
|
504
|
+
{
|
|
505
|
+
FString Path, Err;
|
|
506
|
+
ULevelSequence* Sequence = LoadSequence(Params, Path, Err);
|
|
507
|
+
if (!Sequence) return MCPError(Err);
|
|
508
|
+
UMovieScene* MovieScene = Sequence->GetMovieScene();
|
|
509
|
+
if (!MovieScene) return MCPError(TEXT("Sequence has no MovieScene"));
|
|
510
|
+
|
|
511
|
+
double StartSeconds = 0.0, EndSeconds = 0.0;
|
|
512
|
+
if (!Params->TryGetNumberField(TEXT("startSeconds"), StartSeconds) ||
|
|
513
|
+
!Params->TryGetNumberField(TEXT("endSeconds"), EndSeconds))
|
|
514
|
+
{
|
|
515
|
+
return MCPError(TEXT("Missing 'startSeconds' and/or 'endSeconds'"));
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
const FFrameRate Tick = MovieScene->GetTickResolution();
|
|
519
|
+
const FFrameNumber Start = Tick.AsFrameNumber(StartSeconds);
|
|
520
|
+
const FFrameNumber End = Tick.AsFrameNumber(EndSeconds);
|
|
521
|
+
MovieScene->SetPlaybackRange(TRange<FFrameNumber>(Start, End));
|
|
522
|
+
Sequence->GetOutermost()->MarkPackageDirty();
|
|
523
|
+
|
|
524
|
+
auto Result = MCPSuccess();
|
|
525
|
+
MCPSetUpdated(Result);
|
|
526
|
+
Result->SetStringField(TEXT("sequencePath"), Path);
|
|
527
|
+
Result->SetNumberField(TEXT("startSeconds"), StartSeconds);
|
|
528
|
+
Result->SetNumberField(TEXT("endSeconds"), EndSeconds);
|
|
529
|
+
return MCPResult(Result);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// add_sequence_section -- add a section to a track (creating the track if
|
|
533
|
+
// needed), set its start/end in seconds, and for a CameraCut track bind it to
|
|
534
|
+
// a camera actor. Returns the section index and its channel names. (#548)
|
|
535
|
+
// Params: sequencePath, trackType, actorLabel? (binding scope), startSeconds?,
|
|
536
|
+
// endSeconds?, cameraActorLabel? (CameraCut).
|
|
537
|
+
TSharedPtr<FJsonValue> FSequencerHandlers::AddSection(const TSharedPtr<FJsonObject>& Params)
|
|
538
|
+
{
|
|
539
|
+
FString Path, Err;
|
|
540
|
+
ULevelSequence* Sequence = LoadSequence(Params, Path, Err);
|
|
541
|
+
if (!Sequence) return MCPError(Err);
|
|
542
|
+
UMovieScene* MovieScene = Sequence->GetMovieScene();
|
|
543
|
+
if (!MovieScene) return MCPError(TEXT("Sequence has no MovieScene"));
|
|
544
|
+
|
|
545
|
+
FString TrackType;
|
|
546
|
+
if (auto E = RequireString(Params, TEXT("trackType"), TrackType)) return E;
|
|
547
|
+
UClass* TrackClass = ResolveTrackClass(TrackType);
|
|
548
|
+
if (!TrackClass) return MCPError(FString::Printf(TEXT("Unknown track type: '%s'"), *TrackType));
|
|
549
|
+
|
|
550
|
+
const FString ActorLabel = OptionalString(Params, TEXT("actorLabel"));
|
|
551
|
+
|
|
552
|
+
UMovieSceneTrack* Track = nullptr;
|
|
553
|
+
FGuid BindingGuid;
|
|
554
|
+
if (!ActorLabel.IsEmpty())
|
|
555
|
+
{
|
|
556
|
+
if (!ResolveActorBinding(Sequence, MovieScene, ActorLabel, BindingGuid, Err)) return MCPError(Err);
|
|
557
|
+
Track = MovieScene->FindTrack(TrackClass, BindingGuid);
|
|
558
|
+
if (!Track) Track = MovieScene->AddTrack(TrackClass, BindingGuid);
|
|
559
|
+
}
|
|
560
|
+
else
|
|
561
|
+
{
|
|
562
|
+
for (UMovieSceneTrack* T : MovieScene->GetTracks())
|
|
563
|
+
{
|
|
564
|
+
if (T && T->IsA(TrackClass)) { Track = T; break; }
|
|
565
|
+
}
|
|
566
|
+
if (!Track) Track = MovieScene->AddTrack(TrackClass);
|
|
567
|
+
}
|
|
568
|
+
if (!Track) return MCPError(FString::Printf(TEXT("Failed to resolve/add %s track"), *TrackType));
|
|
569
|
+
|
|
570
|
+
// Resolve the camera binding up front so a bad cameraActorLabel fails before
|
|
571
|
+
// we create an orphan section.
|
|
572
|
+
const FString CameraActorLabel = OptionalString(Params, TEXT("cameraActorLabel"));
|
|
573
|
+
FGuid CamGuid;
|
|
574
|
+
if (!CameraActorLabel.IsEmpty())
|
|
575
|
+
{
|
|
576
|
+
if (!ResolveActorBinding(Sequence, MovieScene, CameraActorLabel, CamGuid, Err)) return MCPError(Err);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
UMovieSceneSection* Section = Track->CreateNewSection();
|
|
580
|
+
if (!Section) return MCPError(TEXT("Failed to create section"));
|
|
581
|
+
Track->AddSection(*Section);
|
|
582
|
+
|
|
583
|
+
const FFrameRate Tick = MovieScene->GetTickResolution();
|
|
584
|
+
double StartSeconds = 0.0, EndSeconds = 0.0;
|
|
585
|
+
const bool bHasStart = Params->TryGetNumberField(TEXT("startSeconds"), StartSeconds);
|
|
586
|
+
const bool bHasEnd = Params->TryGetNumberField(TEXT("endSeconds"), EndSeconds);
|
|
587
|
+
if (bHasStart || bHasEnd)
|
|
588
|
+
{
|
|
589
|
+
const FFrameNumber Start = Tick.AsFrameNumber(StartSeconds);
|
|
590
|
+
const FFrameNumber End = Tick.AsFrameNumber(bHasEnd ? EndSeconds : StartSeconds + 1.0);
|
|
591
|
+
Section->SetRange(TRange<FFrameNumber>(Start, End));
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// CameraCut: bind to the camera actor's possessable resolved above.
|
|
595
|
+
if (!CameraActorLabel.IsEmpty())
|
|
596
|
+
{
|
|
597
|
+
if (UMovieSceneCameraCutSection* CutSection = Cast<UMovieSceneCameraCutSection>(Section))
|
|
598
|
+
{
|
|
599
|
+
CutSection->SetCameraGuid(CamGuid);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
const int32 SectionIndex = Track->GetAllSections().IndexOfByKey(Section);
|
|
604
|
+
|
|
605
|
+
// Enumerate channel names so the caller knows what to key.
|
|
606
|
+
TArray<TSharedPtr<FJsonValue>> ChannelNames;
|
|
607
|
+
FMovieSceneChannelProxy& Proxy = Section->GetChannelProxy();
|
|
608
|
+
for (const FMovieSceneChannelEntry& Entry : Proxy.GetAllEntries())
|
|
609
|
+
{
|
|
610
|
+
TArrayView<const FMovieSceneChannelMetaData> AllMeta = Entry.GetMetaData();
|
|
611
|
+
for (const FMovieSceneChannelMetaData& Meta : AllMeta)
|
|
612
|
+
{
|
|
613
|
+
ChannelNames.Add(MakeShared<FJsonValueString>(Meta.Name.ToString()));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
Sequence->GetOutermost()->MarkPackageDirty();
|
|
618
|
+
|
|
619
|
+
auto Result = MCPSuccess();
|
|
620
|
+
MCPSetCreated(Result);
|
|
621
|
+
Result->SetStringField(TEXT("sequencePath"), Path);
|
|
622
|
+
Result->SetStringField(TEXT("trackType"), TrackType);
|
|
623
|
+
if (!ActorLabel.IsEmpty()) Result->SetStringField(TEXT("bindingGuid"), BindingGuid.ToString());
|
|
624
|
+
Result->SetNumberField(TEXT("sectionIndex"), SectionIndex);
|
|
625
|
+
Result->SetArrayField(TEXT("channels"), ChannelNames);
|
|
626
|
+
return MCPResult(Result);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
// set_sequence_keyframes -- add keyframes to a named channel of a section.
|
|
630
|
+
// Supports transform double channels (Location.X..Scale.Z, plus friendly
|
|
631
|
+
// x/y/z/yaw/pitch/roll) and float channels (Fade/Float). (#548)
|
|
632
|
+
// Params: sequencePath, trackType, actorLabel? (binding scope), sectionIndex?
|
|
633
|
+
// (default 0), channel, keyframes ([{seconds, value}]), interpolation? (cubic|linear).
|
|
634
|
+
TSharedPtr<FJsonValue> FSequencerHandlers::SetKeyframes(const TSharedPtr<FJsonObject>& Params)
|
|
635
|
+
{
|
|
636
|
+
FString Path, Err;
|
|
637
|
+
ULevelSequence* Sequence = LoadSequence(Params, Path, Err);
|
|
638
|
+
if (!Sequence) return MCPError(Err);
|
|
639
|
+
UMovieScene* MovieScene = Sequence->GetMovieScene();
|
|
640
|
+
if (!MovieScene) return MCPError(TEXT("Sequence has no MovieScene"));
|
|
641
|
+
|
|
642
|
+
FString TrackType;
|
|
643
|
+
if (auto E = RequireString(Params, TEXT("trackType"), TrackType)) return E;
|
|
644
|
+
UClass* TrackClass = ResolveTrackClass(TrackType);
|
|
645
|
+
if (!TrackClass) return MCPError(FString::Printf(TEXT("Unknown track type: '%s'"), *TrackType));
|
|
646
|
+
|
|
647
|
+
FString ChannelName;
|
|
648
|
+
if (auto E = RequireString(Params, TEXT("channel"), ChannelName)) return E;
|
|
649
|
+
|
|
650
|
+
const TArray<TSharedPtr<FJsonValue>>* Keyframes = nullptr;
|
|
651
|
+
if (!Params->TryGetArrayField(TEXT("keyframes"), Keyframes) || !Keyframes)
|
|
652
|
+
{
|
|
653
|
+
return MCPError(TEXT("Missing 'keyframes' array ([{seconds, value}, ...])"));
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
const FString ActorLabel = OptionalString(Params, TEXT("actorLabel"));
|
|
657
|
+
UMovieSceneTrack* Track = nullptr;
|
|
658
|
+
if (!ActorLabel.IsEmpty())
|
|
659
|
+
{
|
|
660
|
+
FGuid BindingGuid;
|
|
661
|
+
if (!ResolveActorBinding(Sequence, MovieScene, ActorLabel, BindingGuid, Err)) return MCPError(Err);
|
|
662
|
+
Track = MovieScene->FindTrack(TrackClass, BindingGuid);
|
|
663
|
+
}
|
|
664
|
+
else
|
|
665
|
+
{
|
|
666
|
+
for (UMovieSceneTrack* T : MovieScene->GetTracks())
|
|
667
|
+
{
|
|
668
|
+
if (T && T->IsA(TrackClass)) { Track = T; break; }
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
if (!Track) return MCPError(FString::Printf(TEXT("No %s track found (add a section first)"), *TrackType));
|
|
672
|
+
|
|
673
|
+
const TArray<UMovieSceneSection*>& Sections = Track->GetAllSections();
|
|
674
|
+
if (Sections.Num() == 0) return MCPError(TEXT("Track has no sections (call add_sequence_section first)"));
|
|
675
|
+
int32 SectionIndex = 0;
|
|
676
|
+
Params->TryGetNumberField(TEXT("sectionIndex"), SectionIndex);
|
|
677
|
+
if (SectionIndex < 0 || SectionIndex >= Sections.Num())
|
|
678
|
+
{
|
|
679
|
+
return MCPError(FString::Printf(TEXT("sectionIndex %d out of range (sections=%d)"), SectionIndex, Sections.Num()));
|
|
680
|
+
}
|
|
681
|
+
UMovieSceneSection* Section = Sections[SectionIndex];
|
|
682
|
+
|
|
683
|
+
const FString Canonical = CanonicalTransformChannel(ChannelName);
|
|
684
|
+
const bool bLinear = OptionalString(Params, TEXT("interpolation"), TEXT("cubic")).Equals(TEXT("linear"), ESearchCase::IgnoreCase);
|
|
685
|
+
const FFrameRate Tick = MovieScene->GetTickResolution();
|
|
686
|
+
Section->Modify();
|
|
687
|
+
|
|
688
|
+
int32 KeysAdded = 0;
|
|
689
|
+
FMovieSceneChannelProxy& Proxy = Section->GetChannelProxy();
|
|
690
|
+
|
|
691
|
+
// Try double channels (transform) by metadata name.
|
|
692
|
+
TArrayView<FMovieSceneDoubleChannel*> DoubleChannels = Proxy.GetChannels<FMovieSceneDoubleChannel>();
|
|
693
|
+
TArrayView<const FMovieSceneChannelMetaData> DoubleMeta = Proxy.GetMetaData<FMovieSceneDoubleChannel>();
|
|
694
|
+
bool bMatched = false;
|
|
695
|
+
for (int32 i = 0; i < DoubleChannels.Num(); ++i)
|
|
696
|
+
{
|
|
697
|
+
if (DoubleMeta.IsValidIndex(i) && DoubleMeta[i].Name.ToString().Equals(Canonical, ESearchCase::IgnoreCase))
|
|
698
|
+
{
|
|
699
|
+
for (const TSharedPtr<FJsonValue>& KfVal : *Keyframes)
|
|
700
|
+
{
|
|
701
|
+
const TSharedPtr<FJsonObject>* Kf = nullptr;
|
|
702
|
+
if (!KfVal->TryGetObject(Kf) || !Kf) continue;
|
|
703
|
+
double Sec = 0.0, Val = 0.0;
|
|
704
|
+
(*Kf)->TryGetNumberField(TEXT("seconds"), Sec);
|
|
705
|
+
(*Kf)->TryGetNumberField(TEXT("value"), Val);
|
|
706
|
+
const FFrameNumber Frame = Tick.AsFrameNumber(Sec);
|
|
707
|
+
if (bLinear) DoubleChannels[i]->AddLinearKey(Frame, Val);
|
|
708
|
+
else DoubleChannels[i]->AddCubicKey(Frame, Val);
|
|
709
|
+
++KeysAdded;
|
|
710
|
+
}
|
|
711
|
+
bMatched = true;
|
|
712
|
+
break;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
// Otherwise try float channels (fade/float track). Match by name, or take
|
|
717
|
+
// the only channel when the name doesn't disambiguate.
|
|
718
|
+
if (!bMatched)
|
|
719
|
+
{
|
|
720
|
+
TArrayView<FMovieSceneFloatChannel*> FloatChannels = Proxy.GetChannels<FMovieSceneFloatChannel>();
|
|
721
|
+
TArrayView<const FMovieSceneChannelMetaData> FloatMeta = Proxy.GetMetaData<FMovieSceneFloatChannel>();
|
|
722
|
+
int32 ChosenIdx = INDEX_NONE;
|
|
723
|
+
for (int32 i = 0; i < FloatChannels.Num(); ++i)
|
|
724
|
+
{
|
|
725
|
+
if (FloatMeta.IsValidIndex(i) && FloatMeta[i].Name.ToString().Equals(ChannelName, ESearchCase::IgnoreCase)) { ChosenIdx = i; break; }
|
|
726
|
+
}
|
|
727
|
+
if (ChosenIdx == INDEX_NONE && FloatChannels.Num() == 1) ChosenIdx = 0;
|
|
728
|
+
if (ChosenIdx != INDEX_NONE)
|
|
729
|
+
{
|
|
730
|
+
for (const TSharedPtr<FJsonValue>& KfVal : *Keyframes)
|
|
731
|
+
{
|
|
732
|
+
const TSharedPtr<FJsonObject>* Kf = nullptr;
|
|
733
|
+
if (!KfVal->TryGetObject(Kf) || !Kf) continue;
|
|
734
|
+
double Sec = 0.0, Val = 0.0;
|
|
735
|
+
(*Kf)->TryGetNumberField(TEXT("seconds"), Sec);
|
|
736
|
+
(*Kf)->TryGetNumberField(TEXT("value"), Val);
|
|
737
|
+
const FFrameNumber Frame = Tick.AsFrameNumber(Sec);
|
|
738
|
+
if (bLinear) FloatChannels[ChosenIdx]->AddLinearKey(Frame, (float)Val);
|
|
739
|
+
else FloatChannels[ChosenIdx]->AddCubicKey(Frame, (float)Val);
|
|
740
|
+
++KeysAdded;
|
|
741
|
+
}
|
|
742
|
+
bMatched = true;
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
if (!bMatched)
|
|
747
|
+
{
|
|
748
|
+
return MCPError(FString::Printf(TEXT("Channel '%s' not found on the section. For Transform use Location.X/Rotation.Z/etc or x/yaw; for Fade use the float channel."), *ChannelName));
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
Sequence->GetOutermost()->MarkPackageDirty();
|
|
752
|
+
|
|
753
|
+
auto Result = MCPSuccess();
|
|
754
|
+
MCPSetUpdated(Result);
|
|
755
|
+
Result->SetStringField(TEXT("sequencePath"), Path);
|
|
756
|
+
Result->SetStringField(TEXT("trackType"), TrackType);
|
|
757
|
+
Result->SetStringField(TEXT("channel"), ChannelName);
|
|
758
|
+
Result->SetNumberField(TEXT("sectionIndex"), SectionIndex);
|
|
759
|
+
Result->SetNumberField(TEXT("keysAdded"), KeysAdded);
|
|
760
|
+
return MCPResult(Result);
|
|
761
|
+
}
|
|
@@ -16,4 +16,7 @@ private:
|
|
|
16
16
|
static TSharedPtr<FJsonValue> ReadSequenceInfo(const TSharedPtr<FJsonObject>& Params);
|
|
17
17
|
static TSharedPtr<FJsonValue> AddTrack(const TSharedPtr<FJsonObject>& Params);
|
|
18
18
|
static TSharedPtr<FJsonValue> SequenceControl(const TSharedPtr<FJsonObject>& Params);
|
|
19
|
+
static TSharedPtr<FJsonValue> SetPlaybackRange(const TSharedPtr<FJsonObject>& Params);
|
|
20
|
+
static TSharedPtr<FJsonValue> AddSection(const TSharedPtr<FJsonObject>& Params);
|
|
21
|
+
static TSharedPtr<FJsonValue> SetKeyframes(const TSharedPtr<FJsonObject>& Params);
|
|
19
22
|
};
|