ue-mcp 1.0.70 → 1.0.72
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 +6 -6
- package/dist/tools/editor.js +3 -0
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/gas.js +4 -0
- package/dist/tools/gas.js.map +1 -1
- package/dist/ue-mcp.default.yml +18 -0
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +1 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +2 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIE.cpp +179 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +111 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +7 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +71 -11
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 -->548+<!-- /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 -->548+<!-- /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": 548,
|
|
4
|
+
"bridgeActions": 520,
|
|
5
5
|
"localActions": 28,
|
|
6
6
|
"perTool": {
|
|
7
7
|
"project": 25,
|
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
"niagara": 26,
|
|
17
17
|
"audio": 5,
|
|
18
18
|
"widget": 19,
|
|
19
|
-
"editor":
|
|
19
|
+
"editor": 55,
|
|
20
20
|
"reflection": 8,
|
|
21
21
|
"gameplay": 53,
|
|
22
|
-
"gas":
|
|
22
|
+
"gas": 14,
|
|
23
23
|
"networking": 11,
|
|
24
24
|
"demo": 3,
|
|
25
25
|
"feedback": 1,
|
|
26
26
|
"statetree": 35,
|
|
27
27
|
"plugins": 2
|
|
28
28
|
},
|
|
29
|
-
"generatedAt": "2026-05-
|
|
30
|
-
"version": "1.0.
|
|
29
|
+
"generatedAt": "2026-05-30T20:08:11.289Z",
|
|
30
|
+
"version": "1.0.72"
|
|
31
31
|
}
|
package/dist/tools/editor.js
CHANGED
|
@@ -101,6 +101,7 @@ export const editorTool = categoryTool("editor", "Editor commands, Python execut
|
|
|
101
101
|
get_runtime_value: bp("Read PIE actor property. Params: actorLabel, propertyName (supports dotted paths: component.field or component.struct.field for nested reads on component subobjects, #344/#381)", "get_runtime_value"),
|
|
102
102
|
get_pie_pawn: bp("Resolve the controlled pawn in the active PIE world. Params: playerIndex? (default 0). Returns actorLabel/class/location/rotation (#228/#229)", "get_pie_pawn", (p) => ({ playerIndex: p.playerIndex })),
|
|
103
103
|
invoke_function: bp("Call a BlueprintCallable / Exec UFUNCTION on a target actor or one of its components. Params: actorLabel, functionName, component? (component subobject name; redirects target from the actor to that component, #382), args? (object), actorArgs? (object mapping UObject* parameter name to actor label, resolved against live actors in the active world; #383), world? (editor|pie). Returns out/return params (#228/#229)", "invoke_function", (p) => ({ actorLabel: p.actorLabel, functionName: p.functionName, component: p.component, args: p.args, actorArgs: p.actorArgs, world: p.world })),
|
|
104
|
+
invoke_static_function: bp("Call a static UFUNCTION on a UBlueprintFunctionLibrary (no actor instance). invoke_function needs an actor/component target; this targets the library class CDO instead, so it reaches static *_BlueprintOnly libraries (Voxel sculpt/query/stamp), GeometryScript, Kismet math, any function library. Params: className (short name or /Script/Module.Class path), functionName, args? (name -> JSON value, same marshalling as invoke_function), actorArgs? (name -> actor label for UObject* params that are actors, e.g. the sculpt actor), worldContextParam? (name of a UObject* param to fill with the editor/PIE world; auto-detected for params named WorldContextObject), world? (editor|pie). Returns return/out params under returnValues. Discover libraries + functions with list_function_libraries.", "invoke_static_function", (p) => ({ className: p.className, functionName: p.functionName, args: p.args, actorArgs: p.actorArgs, worldContextParam: p.worldContextParam, world: p.world })),
|
|
104
105
|
list_function_libraries: bp("Enumerate UBlueprintFunctionLibrary subclasses on this build. Filter by name (case-insensitive substring, e.g. 'GeometryScript' / 'Kismet' / 'Animation'). Returns name, module, and (by default) every static BlueprintCallable function on the library with its tooltip. Use to discover what's available for editor.invoke_function (#455). Params: pattern?, includeFunctions?", "list_function_libraries", (p) => ({ pattern: p.pattern, includeFunctions: p.includeFunctions })),
|
|
105
106
|
set_pie_time_scale: bp("Fast-forward PIE game time. Params: factor (>0). Raises WorldSettings caps and calls SetGlobalTimeDilation.", "set_pie_time_scale"),
|
|
106
107
|
hot_reload: bp("Hot reload C++", "hot_reload"),
|
|
@@ -157,6 +158,8 @@ export const editorTool = categoryTool("editor", "Editor commands, Python execut
|
|
|
157
158
|
functionName: z.string().optional(),
|
|
158
159
|
component: z.string().optional().describe("invoke_function: optional component subobject name to call the function on instead of the actor (#382)"),
|
|
159
160
|
actorArgs: z.record(z.string()).optional().describe("invoke_function: map of UObject* parameter name to actor label, resolved against live actors in the active world (#383)"),
|
|
161
|
+
className: z.string().optional().describe("invoke_static_function: UBlueprintFunctionLibrary class - short name or /Script/Module.Class path"),
|
|
162
|
+
worldContextParam: z.string().optional().describe("invoke_static_function: name of a UObject* param to fill with the editor/PIE world (auto-detected for params named WorldContextObject)"),
|
|
160
163
|
world: z.string().optional().describe("invoke_function world scope: editor (default) | pie"),
|
|
161
164
|
propertyName: z.string().optional(),
|
|
162
165
|
value: z.unknown().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/tools/gas.js
CHANGED
|
@@ -10,9 +10,11 @@ export const gasTool = categoryTool("gas", "Gameplay Ability System: abilities,
|
|
|
10
10
|
set_effect_modifier: bp("Add modifier. Params: effectPath, attribute, operation?, magnitude?", "set_effect_modifier"),
|
|
11
11
|
create_cue: bp("Create GameplayCue. Params: name, packagePath?, cueType?", "create_gameplay_cue"),
|
|
12
12
|
get_info: bp("Inspect GAS setup. Params: blueprintPath", "get_gas_info"),
|
|
13
|
+
set_asc_defaults: bp("Wire an AttributeSet onto a Blueprint's ASC component (DefaultStartingData) so attributes exist at runtime. Params: blueprintPath, attributeSet (content path or class name), componentName?, initDataTable? (starting values). Run add_ability_system_component first.", "set_asc_defaults"),
|
|
13
14
|
apply_effect: bp("Apply a GameplayEffect to a live actor's ASC (agnostic stat/damage stimulus - uses the game's own effect). Params: actorLabel, effectClass (content path or class name), level?, setByCaller? ({tag-or-name: magnitude}), world? (auto|pie|editor, default auto)", "apply_effect"),
|
|
14
15
|
set_attribute: bp("Set a gameplay attribute's base value on a live actor's ASC (recalculates CurrentValue through the aggregator). Params: actorLabel, attribute (Health | SetName.Health), value, world?", "set_attribute"),
|
|
15
16
|
get_attribute: bp("Read gameplay attribute base + current values on a live actor's ASC. Omit attribute to list all. Params: actorLabel, attribute?, world?", "get_attribute"),
|
|
17
|
+
init_asc: bp("Initialize a live actor's ASC (InitAbilityActorInfo) and optionally instantiate an AttributeSet so attributes are live - the runtime setup step for testing a bridge-authored GAS actor. Params: actorLabel, attributeSet? (content path or class name), world?", "init_asc"),
|
|
16
18
|
}, undefined, {
|
|
17
19
|
blueprintPath: z.string().optional(),
|
|
18
20
|
name: z.string().optional(),
|
|
@@ -41,5 +43,7 @@ export const gasTool = categoryTool("gas", "Gameplay Ability System: abilities,
|
|
|
41
43
|
setByCaller: z.record(z.number()).optional().describe("apply_effect: SetByCaller magnitudes keyed by gameplay tag or name"),
|
|
42
44
|
value: z.number().optional().describe("set_attribute: new base value"),
|
|
43
45
|
world: z.string().optional().describe("Runtime world scope: auto (default) | pie | editor"),
|
|
46
|
+
attributeSet: z.string().optional().describe("set_asc_defaults / init_asc: AttributeSet content path or class name"),
|
|
47
|
+
initDataTable: z.string().optional().describe("set_asc_defaults: optional DataTable of starting attribute values"),
|
|
44
48
|
});
|
|
45
49
|
//# sourceMappingURL=gas.js.map
|
package/dist/tools/gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tools/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAgB,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAY,YAAY,CAC1C,KAAK,EACL,oEAAoE,EACpE;IACE,OAAO,EAAc,EAAE,CAAC,mEAAmE,EAAE,8BAA8B,CAAC;IAC5H,oBAAoB,EAAE,EAAE,CAAC,oDAAoD,EAAE,sBAAsB,CAAC;IACtG,aAAa,EAAQ,EAAE,CAAC,8EAA8E,EAAE,eAAe,CAAC;IACxH,cAAc,EAAO,EAAE,CAAC,qEAAqE,EAAE,yBAAyB,CAAC;IACzH,gBAAgB,EAAK,EAAE,CAAC,0IAA0I,EAAE,kBAAkB,CAAC;IACvL,aAAa,EAAQ,EAAE,CAAC,uEAAuE,EAAE,wBAAwB,CAAC;IAC1H,mBAAmB,EAAE,EAAE,CAAC,qEAAqE,EAAE,qBAAqB,CAAC;IACrH,UAAU,EAAW,EAAE,CAAC,0DAA0D,EAAE,qBAAqB,CAAC;IAC1G,QAAQ,EAAa,EAAE,CAAC,0CAA0C,EAAE,cAAc,CAAC;IACnF,YAAY,EAAS,EAAE,CAAC,kQAAkQ,EAAE,cAAc,CAAC;IAC3S,aAAa,EAAQ,EAAE,CAAC,wLAAwL,EAAE,eAAe,CAAC;IAClO,aAAa,EAAQ,EAAE,CAAC,yIAAyI,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tools/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAgB,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAY,YAAY,CAC1C,KAAK,EACL,oEAAoE,EACpE;IACE,OAAO,EAAc,EAAE,CAAC,mEAAmE,EAAE,8BAA8B,CAAC;IAC5H,oBAAoB,EAAE,EAAE,CAAC,oDAAoD,EAAE,sBAAsB,CAAC;IACtG,aAAa,EAAQ,EAAE,CAAC,8EAA8E,EAAE,eAAe,CAAC;IACxH,cAAc,EAAO,EAAE,CAAC,qEAAqE,EAAE,yBAAyB,CAAC;IACzH,gBAAgB,EAAK,EAAE,CAAC,0IAA0I,EAAE,kBAAkB,CAAC;IACvL,aAAa,EAAQ,EAAE,CAAC,uEAAuE,EAAE,wBAAwB,CAAC;IAC1H,mBAAmB,EAAE,EAAE,CAAC,qEAAqE,EAAE,qBAAqB,CAAC;IACrH,UAAU,EAAW,EAAE,CAAC,0DAA0D,EAAE,qBAAqB,CAAC;IAC1G,QAAQ,EAAa,EAAE,CAAC,0CAA0C,EAAE,cAAc,CAAC;IACnF,gBAAgB,EAAK,EAAE,CAAC,yQAAyQ,EAAE,kBAAkB,CAAC;IACtT,YAAY,EAAS,EAAE,CAAC,kQAAkQ,EAAE,cAAc,CAAC;IAC3S,aAAa,EAAQ,EAAE,CAAC,wLAAwL,EAAE,eAAe,CAAC;IAClO,aAAa,EAAQ,EAAE,CAAC,yIAAyI,EAAE,eAAe,CAAC;IACnL,QAAQ,EAAa,EAAE,CAAC,iQAAiQ,EAAE,UAAU,CAAC;CACvS,EACD,SAAS,EACT;IACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,yBAAyB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,qEAAqE;IACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAC3F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;IACtG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC/E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAC3H,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAC3F,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACpH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;CACnH,CACF,CAAC"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -2249,6 +2249,12 @@ tasks:
|
|
|
2249
2249
|
description: "Call a BlueprintCallable / Exec UFUNCTION on a target actor or one of its components. Params: actorLabel, functionName, component? (component subobject name; redirects target from the actor to that component, #382), args? (object), actorArgs? (object mapping UObject* parameter name to actor label, resolved against live actors in the active world; #383), world? (editor|pie). Returns out/return params (#228/#229)"
|
|
2250
2250
|
options:
|
|
2251
2251
|
method: invoke_function
|
|
2252
|
+
editor.invoke_static_function:
|
|
2253
|
+
class_path: ue-mcp.bridge
|
|
2254
|
+
group: editor
|
|
2255
|
+
description: "Call a static UFUNCTION on a UBlueprintFunctionLibrary (no actor instance). invoke_function needs an actor/component target; this targets the library class CDO instead, so it reaches static *_BlueprintOnly libraries (Voxel sculpt/query/stamp), GeometryScript, Kismet math, any function library. Params: className (short name or /Script/Module.Class path), functionName, args? (name -> JSON value, same marshalling as invoke_function), actorArgs? (name -> actor label for UObject* params that are actors, e.g. the sculpt actor), worldContextParam? (name of a UObject* param to fill with the editor/PIE world; auto-detected for params named WorldContextObject), world? (editor|pie). Returns return/out params under returnValues. Discover libraries + functions with list_function_libraries."
|
|
2256
|
+
options:
|
|
2257
|
+
method: invoke_static_function
|
|
2252
2258
|
editor.list_function_libraries:
|
|
2253
2259
|
class_path: ue-mcp.bridge
|
|
2254
2260
|
group: editor
|
|
@@ -2927,6 +2933,12 @@ tasks:
|
|
|
2927
2933
|
description: "Inspect GAS setup. Params: blueprintPath"
|
|
2928
2934
|
options:
|
|
2929
2935
|
method: get_gas_info
|
|
2936
|
+
gas.set_asc_defaults:
|
|
2937
|
+
class_path: ue-mcp.bridge
|
|
2938
|
+
group: gas
|
|
2939
|
+
description: "Wire an AttributeSet onto a Blueprint's ASC component (DefaultStartingData) so attributes exist at runtime. Params: blueprintPath, attributeSet (content path or class name), componentName?, initDataTable? (starting values). Run add_ability_system_component first."
|
|
2940
|
+
options:
|
|
2941
|
+
method: set_asc_defaults
|
|
2930
2942
|
gas.apply_effect:
|
|
2931
2943
|
class_path: ue-mcp.bridge
|
|
2932
2944
|
group: gas
|
|
@@ -2945,6 +2957,12 @@ tasks:
|
|
|
2945
2957
|
description: "Read gameplay attribute base + current values on a live actor's ASC. Omit attribute to list all. Params: actorLabel, attribute?, world?"
|
|
2946
2958
|
options:
|
|
2947
2959
|
method: get_attribute
|
|
2960
|
+
gas.init_asc:
|
|
2961
|
+
class_path: ue-mcp.bridge
|
|
2962
|
+
group: gas
|
|
2963
|
+
description: "Initialize a live actor's ASC (InitAbilityActorInfo) and optionally instantiate an AttributeSet so attributes are live - the runtime setup step for testing a bridge-authored GAS actor. Params: actorLabel, attributeSet? (content path or class name), world?"
|
|
2964
|
+
options:
|
|
2965
|
+
method: init_asc
|
|
2948
2966
|
|
|
2949
2967
|
# ── networking ──
|
|
2950
2968
|
networking.set_replicates:
|
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.72",
|
|
4
|
+
"description": "Unreal Engine MCP server - 21 tools, 548+ actions for AI-driven editor control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -114,6 +114,7 @@ void FEditorHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
114
114
|
Registry.RegisterHandler(TEXT("capture_scene_png"), &CaptureScenePng);
|
|
115
115
|
Registry.RegisterHandler(TEXT("get_pie_pawn"), &GetPiePawn);
|
|
116
116
|
Registry.RegisterHandler(TEXT("invoke_function"), &InvokeFunction);
|
|
117
|
+
Registry.RegisterHandler(TEXT("invoke_static_function"), &InvokeStaticFunction);
|
|
117
118
|
Registry.RegisterHandler(TEXT("configure_pie"), &ConfigurePie);
|
|
118
119
|
Registry.RegisterHandler(TEXT("get_pie_config"), &GetPieConfig);
|
|
119
120
|
// #455: discover UBlueprintFunctionLibrary classes (GeometryScript,
|
|
@@ -164,6 +164,8 @@ private:
|
|
|
164
164
|
// #228/#229: PIE pawn lookup + UFUNCTION invocation for PIE actors
|
|
165
165
|
static TSharedPtr<FJsonValue> GetPiePawn(const TSharedPtr<FJsonObject>& Params);
|
|
166
166
|
static TSharedPtr<FJsonValue> InvokeFunction(const TSharedPtr<FJsonObject>& Params);
|
|
167
|
+
// Call a static UFUNCTION on a UBlueprintFunctionLibrary (no actor instance).
|
|
168
|
+
static TSharedPtr<FJsonValue> InvokeStaticFunction(const TSharedPtr<FJsonObject>& Params);
|
|
167
169
|
// #384: configure ULevelEditorPlaySettings (multi-client PIE, net mode, etc.)
|
|
168
170
|
static TSharedPtr<FJsonValue> ConfigurePie(const TSharedPtr<FJsonObject>& Params);
|
|
169
171
|
static TSharedPtr<FJsonValue> GetPieConfig(const TSharedPtr<FJsonObject>& Params);
|
|
@@ -953,6 +953,185 @@ TSharedPtr<FJsonValue> FEditorHandlers::InvokeFunction(const TSharedPtr<FJsonObj
|
|
|
953
953
|
return MCPResult(Result);
|
|
954
954
|
}
|
|
955
955
|
|
|
956
|
+
// Call a static UFUNCTION on a UBlueprintFunctionLibrary, with no actor
|
|
957
|
+
// instance. invoke_function can only reach functions that live on an actor or
|
|
958
|
+
// component; the static *_BlueprintOnly libraries (Voxel sculpt/query/stamp,
|
|
959
|
+
// GeometryScript, Kismet math, etc.) have no instance to target, which
|
|
960
|
+
// previously forced execute_python. This resolves the library class, runs the
|
|
961
|
+
// call on its CDO, and reuses the same arg/return marshalling as InvokeFunction.
|
|
962
|
+
//
|
|
963
|
+
// Params: className (short name or /Script/Module.Class path), functionName,
|
|
964
|
+
// args? (name -> JSON value), actorArgs? (name -> actor label, for UObject*
|
|
965
|
+
// params that are actors), worldContextParam? (name of a UObject* param to fill
|
|
966
|
+
// with the editor/PIE world; auto-detected for params named WorldContextObject),
|
|
967
|
+
// world? (editor|pie). Returns return/out params under returnValues.
|
|
968
|
+
TSharedPtr<FJsonValue> FEditorHandlers::InvokeStaticFunction(const TSharedPtr<FJsonObject>& Params)
|
|
969
|
+
{
|
|
970
|
+
FString ClassName;
|
|
971
|
+
if (auto Err = RequireString(Params, TEXT("className"), ClassName)) return Err;
|
|
972
|
+
FString FunctionName;
|
|
973
|
+
if (auto Err = RequireString(Params, TEXT("functionName"), FunctionName)) return Err;
|
|
974
|
+
|
|
975
|
+
const FString WorldScope = OptionalString(Params, TEXT("world"), TEXT("editor")).ToLower();
|
|
976
|
+
UWorld* World = nullptr;
|
|
977
|
+
if (WorldScope == TEXT("pie"))
|
|
978
|
+
{
|
|
979
|
+
FWorldContext* PieCtx = GEditor ? GEditor->GetPIEWorldContext() : nullptr;
|
|
980
|
+
World = PieCtx ? PieCtx->World() : nullptr;
|
|
981
|
+
if (!World) return MCPError(TEXT("PIE not running - cannot invoke against PIE world"));
|
|
982
|
+
}
|
|
983
|
+
else
|
|
984
|
+
{
|
|
985
|
+
World = GEditor ? GEditor->GetEditorWorldContext().World() : nullptr;
|
|
986
|
+
if (!World) return MCPError(TEXT("No editor world available"));
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// Resolve the function-library class: a /Script/Module.Class path, or a bare
|
|
990
|
+
// class name (with or without the leading U).
|
|
991
|
+
UClass* LibClass = nullptr;
|
|
992
|
+
if (ClassName.Contains(TEXT(".")) || ClassName.StartsWith(TEXT("/")))
|
|
993
|
+
{
|
|
994
|
+
LibClass = LoadObject<UClass>(nullptr, *ClassName);
|
|
995
|
+
}
|
|
996
|
+
if (!LibClass)
|
|
997
|
+
{
|
|
998
|
+
FString Bare = ClassName;
|
|
999
|
+
Bare.RemoveFromStart(TEXT("U"));
|
|
1000
|
+
LibClass = FindFirstObject<UClass>(*Bare, EFindFirstObjectOptions::NativeFirst);
|
|
1001
|
+
}
|
|
1002
|
+
if (!LibClass)
|
|
1003
|
+
{
|
|
1004
|
+
return MCPError(FString::Printf(TEXT("Function library class not found: %s"), *ClassName));
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
UObject* CDO = LibClass->GetDefaultObject();
|
|
1008
|
+
if (!CDO) return MCPError(FString::Printf(TEXT("No CDO for class %s"), *LibClass->GetName()));
|
|
1009
|
+
|
|
1010
|
+
UFunction* Func = LibClass->FindFunctionByName(FName(*FunctionName));
|
|
1011
|
+
if (!Func) return MCPError(FString::Printf(TEXT("Static function '%s' not found on %s"), *FunctionName, *LibClass->GetName()));
|
|
1012
|
+
|
|
1013
|
+
TArray<uint8> ParamBuf;
|
|
1014
|
+
ParamBuf.SetNumZeroed(Func->ParmsSize);
|
|
1015
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1016
|
+
{
|
|
1017
|
+
It->InitializeValue_InContainer(ParamBuf.GetData());
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
auto Cleanup = [&]()
|
|
1021
|
+
{
|
|
1022
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1023
|
+
{
|
|
1024
|
+
It->DestroyValue_InContainer(ParamBuf.GetData());
|
|
1025
|
+
}
|
|
1026
|
+
};
|
|
1027
|
+
|
|
1028
|
+
const TSharedPtr<FJsonObject>* ArgObj = nullptr;
|
|
1029
|
+
Params->TryGetObjectField(TEXT("args"), ArgObj);
|
|
1030
|
+
if (ArgObj && (*ArgObj).IsValid())
|
|
1031
|
+
{
|
|
1032
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1033
|
+
{
|
|
1034
|
+
FProperty* P = *It;
|
|
1035
|
+
if (P->PropertyFlags & CPF_ReturnParm) continue;
|
|
1036
|
+
if ((P->PropertyFlags & CPF_OutParm) && !(P->PropertyFlags & CPF_ReferenceParm)) continue;
|
|
1037
|
+
TSharedPtr<FJsonValue> Val = (*ArgObj)->TryGetField(P->GetName());
|
|
1038
|
+
if (!Val.IsValid()) continue;
|
|
1039
|
+
void* PtrAddr = P->ContainerPtrToValuePtr<void>(ParamBuf.GetData());
|
|
1040
|
+
FString E;
|
|
1041
|
+
if (!MCPJsonProperty::SetJsonOnProperty(P, PtrAddr, Val, E))
|
|
1042
|
+
{
|
|
1043
|
+
Cleanup();
|
|
1044
|
+
return MCPError(FString::Printf(TEXT("Argument '%s': %s"), *P->GetName(), *E));
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
// actorArgs: UObject* params resolved from live actor labels (e.g. the sculpt
|
|
1050
|
+
// actor that a Voxel sculpt op operates on).
|
|
1051
|
+
const TSharedPtr<FJsonObject>* ActorArgObj = nullptr;
|
|
1052
|
+
Params->TryGetObjectField(TEXT("actorArgs"), ActorArgObj);
|
|
1053
|
+
if (ActorArgObj && (*ActorArgObj).IsValid())
|
|
1054
|
+
{
|
|
1055
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1056
|
+
{
|
|
1057
|
+
FProperty* P = *It;
|
|
1058
|
+
if (P->PropertyFlags & CPF_ReturnParm) continue;
|
|
1059
|
+
FObjectProperty* OP = CastField<FObjectProperty>(P);
|
|
1060
|
+
if (!OP) continue;
|
|
1061
|
+
FString ActorArgLabel;
|
|
1062
|
+
if (!(*ActorArgObj)->TryGetStringField(P->GetName(), ActorArgLabel) || ActorArgLabel.IsEmpty()) continue;
|
|
1063
|
+
AActor* RefActor = FindActorByLabel(World, ActorArgLabel);
|
|
1064
|
+
if (!RefActor)
|
|
1065
|
+
{
|
|
1066
|
+
Cleanup();
|
|
1067
|
+
return MCPError(FString::Printf(TEXT("actorArgs[%s]: actor '%s' not found in %s world"), *P->GetName(), *ActorArgLabel, WorldScope == TEXT("pie") ? TEXT("PIE") : TEXT("editor")));
|
|
1068
|
+
}
|
|
1069
|
+
if (!RefActor->IsA(OP->PropertyClass))
|
|
1070
|
+
{
|
|
1071
|
+
if (OP->PropertyClass->IsChildOf(UActorComponent::StaticClass()))
|
|
1072
|
+
{
|
|
1073
|
+
UActorComponent* MatchedComp = nullptr;
|
|
1074
|
+
for (UActorComponent* Comp : RefActor->GetComponents())
|
|
1075
|
+
{
|
|
1076
|
+
if (Comp && Comp->IsA(OP->PropertyClass)) { MatchedComp = Comp; break; }
|
|
1077
|
+
}
|
|
1078
|
+
if (MatchedComp)
|
|
1079
|
+
{
|
|
1080
|
+
OP->SetObjectPropertyValue(P->ContainerPtrToValuePtr<void>(ParamBuf.GetData()), MatchedComp);
|
|
1081
|
+
continue;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
Cleanup();
|
|
1085
|
+
return MCPError(FString::Printf(TEXT("actorArgs[%s]: actor '%s' (%s) is not assignable to expected type %s"), *P->GetName(), *ActorArgLabel, *RefActor->GetClass()->GetName(), *OP->PropertyClass->GetName()));
|
|
1086
|
+
}
|
|
1087
|
+
OP->SetObjectPropertyValue(P->ContainerPtrToValuePtr<void>(ParamBuf.GetData()), RefActor);
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
// World-context injection: static library functions commonly take a UObject*
|
|
1092
|
+
// WorldContextObject. Fill any unset object param matching worldContextParam
|
|
1093
|
+
// (or named WorldContextObject) with the resolved world.
|
|
1094
|
+
const FString WcParam = OptionalString(Params, TEXT("worldContextParam"), TEXT(""));
|
|
1095
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1096
|
+
{
|
|
1097
|
+
FProperty* P = *It;
|
|
1098
|
+
if (P->PropertyFlags & CPF_ReturnParm) continue;
|
|
1099
|
+
FObjectProperty* OP = CastField<FObjectProperty>(P);
|
|
1100
|
+
if (!OP) continue;
|
|
1101
|
+
const FString PName = P->GetName();
|
|
1102
|
+
const bool bIsWc = (!WcParam.IsEmpty() && PName == WcParam) || PName.Contains(TEXT("WorldContext"));
|
|
1103
|
+
if (!bIsWc) continue;
|
|
1104
|
+
void* Addr = P->ContainerPtrToValuePtr<void>(ParamBuf.GetData());
|
|
1105
|
+
if (OP->GetObjectPropertyValue(Addr) != nullptr) continue;
|
|
1106
|
+
if (World->IsA(OP->PropertyClass) || OP->PropertyClass == UObject::StaticClass())
|
|
1107
|
+
{
|
|
1108
|
+
OP->SetObjectPropertyValue(Addr, World);
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
CDO->ProcessEvent(Func, ParamBuf.GetData());
|
|
1113
|
+
|
|
1114
|
+
auto Result = MCPSuccess();
|
|
1115
|
+
Result->SetStringField(TEXT("className"), LibClass->GetName());
|
|
1116
|
+
Result->SetStringField(TEXT("functionName"), FunctionName);
|
|
1117
|
+
|
|
1118
|
+
TSharedPtr<FJsonObject> OutVals = MakeShared<FJsonObject>();
|
|
1119
|
+
for (TFieldIterator<FProperty> It(Func); It && (It->PropertyFlags & CPF_Parm); ++It)
|
|
1120
|
+
{
|
|
1121
|
+
FProperty* P = *It;
|
|
1122
|
+
if (P->PropertyFlags & (CPF_ReturnParm | CPF_OutParm))
|
|
1123
|
+
{
|
|
1124
|
+
FString S;
|
|
1125
|
+
P->ExportTextItem_Direct(S, P->ContainerPtrToValuePtr<void>(ParamBuf.GetData()), nullptr, CDO, PPF_None);
|
|
1126
|
+
OutVals->SetStringField(P->GetName(), S);
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
Result->SetObjectField(TEXT("returnValues"), OutVals);
|
|
1130
|
+
|
|
1131
|
+
Cleanup();
|
|
1132
|
+
return MCPResult(Result);
|
|
1133
|
+
}
|
|
1134
|
+
|
|
956
1135
|
// #384: read/write ULevelEditorPlaySettings via reflection. Direct member
|
|
957
1136
|
// access is blocked because the fields are private; FProperty lookup gives
|
|
958
1137
|
// us the same access path Python's set_editor_property uses.
|
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
#include "Engine/SimpleConstructionScript.h"
|
|
22
22
|
#include "Engine/SCS_Node.h"
|
|
23
23
|
#include "EdGraphSchema_K2.h"
|
|
24
|
+
#include "AbilitySystemComponent.h"
|
|
25
|
+
#include "AttributeSet.h"
|
|
26
|
+
#include "Engine/DataTable.h"
|
|
24
27
|
|
|
25
28
|
void FGasHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
26
29
|
{
|
|
@@ -33,9 +36,11 @@ void FGasHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
33
36
|
Registry.RegisterHandler(TEXT("add_attribute"), &AddAttribute);
|
|
34
37
|
Registry.RegisterHandler(TEXT("set_ability_tags"), &SetAbilityTags);
|
|
35
38
|
Registry.RegisterHandler(TEXT("set_effect_modifier"), &SetEffectModifier);
|
|
39
|
+
Registry.RegisterHandler(TEXT("set_asc_defaults"), &SetAscDefaults);
|
|
36
40
|
Registry.RegisterHandler(TEXT("apply_effect"), &ApplyEffect);
|
|
37
41
|
Registry.RegisterHandler(TEXT("set_attribute"), &SetAttribute);
|
|
38
42
|
Registry.RegisterHandler(TEXT("get_attribute"), &GetAttribute);
|
|
43
|
+
Registry.RegisterHandler(TEXT("init_asc"), &InitAsc);
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
TSharedPtr<FJsonValue> FGasHandlers::CreateGasBlueprint(
|
|
@@ -376,3 +381,109 @@ TSharedPtr<FJsonValue> FGasHandlers::SetEffectModifier(const TSharedPtr<FJsonObj
|
|
|
376
381
|
Result->SetStringField(TEXT("note"), TEXT("GameplayEffect modifier configuration set. Use execute_python for full GE modifier array manipulation."));
|
|
377
382
|
return MCPResult(Result);
|
|
378
383
|
}
|
|
384
|
+
|
|
385
|
+
TSharedPtr<FJsonValue> FGasHandlers::SetAscDefaults(const TSharedPtr<FJsonObject>& Params)
|
|
386
|
+
{
|
|
387
|
+
FString BPPath;
|
|
388
|
+
if (auto Err = RequireString(Params, TEXT("blueprintPath"), BPPath)) return Err;
|
|
389
|
+
|
|
390
|
+
FString AttrSetSpec;
|
|
391
|
+
if (auto Err = RequireStringAlt(Params, TEXT("attributeSet"), TEXT("attributeSetPath"), AttrSetSpec)) return Err;
|
|
392
|
+
|
|
393
|
+
UBlueprint* BP = Cast<UBlueprint>(UEditorAssetLibrary::LoadAsset(BPPath));
|
|
394
|
+
if (!BP) return MCPError(FString::Printf(TEXT("Blueprint not found: %s"), *BPPath));
|
|
395
|
+
|
|
396
|
+
UClass* ASCClass = FindObject<UClass>(nullptr, TEXT("/Script/GameplayAbilities.AbilitySystemComponent"));
|
|
397
|
+
if (!ASCClass) return MCPError(TEXT("AbilitySystemComponent not found. Enable GameplayAbilities plugin."));
|
|
398
|
+
|
|
399
|
+
// Resolve the AttributeSet class from a content path (BP generated class) or
|
|
400
|
+
// a native short name.
|
|
401
|
+
UClass* AttrSetClass = nullptr;
|
|
402
|
+
{
|
|
403
|
+
UClass* AttrBase = UAttributeSet::StaticClass();
|
|
404
|
+
auto Ok = [AttrBase](UClass* C) { return C && C->IsChildOf(AttrBase); };
|
|
405
|
+
if (AttrSetSpec.Contains(TEXT("/")))
|
|
406
|
+
{
|
|
407
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *AttrSetSpec); Ok(C)) AttrSetClass = C;
|
|
408
|
+
if (!AttrSetClass)
|
|
409
|
+
{
|
|
410
|
+
FString AssetName;
|
|
411
|
+
AttrSetSpec.Split(TEXT("/"), nullptr, &AssetName, ESearchCase::CaseSensitive, ESearchDir::FromEnd);
|
|
412
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *(AttrSetSpec + TEXT(".") + AssetName + TEXT("_C"))); Ok(C)) AttrSetClass = C;
|
|
413
|
+
}
|
|
414
|
+
if (!AttrSetClass)
|
|
415
|
+
{
|
|
416
|
+
if (UBlueprint* SetBP = Cast<UBlueprint>(UEditorAssetLibrary::LoadAsset(AttrSetSpec)))
|
|
417
|
+
{
|
|
418
|
+
if (Ok(SetBP->GeneratedClass)) AttrSetClass = SetBP->GeneratedClass;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else if (UClass* C = FindClassByShortName(AttrSetSpec); Ok(C))
|
|
423
|
+
{
|
|
424
|
+
AttrSetClass = C;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
if (!AttrSetClass) return MCPError(FString::Printf(TEXT("AttributeSet class not found: %s"), *AttrSetSpec));
|
|
428
|
+
|
|
429
|
+
// Find the ASC component template on the blueprint's construction script.
|
|
430
|
+
const FString CompName = OptionalString(Params, TEXT("componentName"));
|
|
431
|
+
UAbilitySystemComponent* ASCTemplate = nullptr;
|
|
432
|
+
FString ResolvedComp;
|
|
433
|
+
if (BP->SimpleConstructionScript)
|
|
434
|
+
{
|
|
435
|
+
for (USCS_Node* N : BP->SimpleConstructionScript->GetAllNodes())
|
|
436
|
+
{
|
|
437
|
+
if (!N || !N->ComponentTemplate || !N->ComponentTemplate->IsA(ASCClass)) continue;
|
|
438
|
+
if (!CompName.IsEmpty() && N->GetVariableName() != FName(*CompName)) continue;
|
|
439
|
+
ASCTemplate = Cast<UAbilitySystemComponent>(N->ComponentTemplate);
|
|
440
|
+
ResolvedComp = N->GetVariableName().ToString();
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
if (!ASCTemplate)
|
|
445
|
+
{
|
|
446
|
+
return MCPError(TEXT("No AbilitySystemComponent on the blueprint - run add_ability_system_component first"));
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// Optional init DataTable (production path: starting values at ASC init).
|
|
450
|
+
UDataTable* InitTable = nullptr;
|
|
451
|
+
const FString TablePath = OptionalString(Params, TEXT("initDataTable"));
|
|
452
|
+
if (!TablePath.IsEmpty())
|
|
453
|
+
{
|
|
454
|
+
InitTable = LoadObject<UDataTable>(nullptr, *TablePath);
|
|
455
|
+
if (!InitTable) return MCPError(FString::Printf(TEXT("initDataTable not found: %s"), *TablePath));
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// Idempotency: already wired for this attribute set?
|
|
459
|
+
for (const FAttributeDefaults& D : ASCTemplate->DefaultStartingData)
|
|
460
|
+
{
|
|
461
|
+
if (D.Attributes == AttrSetClass)
|
|
462
|
+
{
|
|
463
|
+
auto Existed = MCPSuccess();
|
|
464
|
+
MCPSetExisted(Existed);
|
|
465
|
+
Existed->SetStringField(TEXT("blueprintPath"), BPPath);
|
|
466
|
+
Existed->SetStringField(TEXT("component"), ResolvedComp);
|
|
467
|
+
Existed->SetStringField(TEXT("attributeSet"), AttrSetClass->GetName());
|
|
468
|
+
return MCPResult(Existed);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
FAttributeDefaults Def;
|
|
473
|
+
Def.Attributes = AttrSetClass;
|
|
474
|
+
Def.DefaultStartingTable = InitTable;
|
|
475
|
+
ASCTemplate->DefaultStartingData.Add(Def);
|
|
476
|
+
|
|
477
|
+
FKismetEditorUtilities::CompileBlueprint(BP);
|
|
478
|
+
SaveAssetPackage(BP);
|
|
479
|
+
|
|
480
|
+
auto Result = MCPSuccess();
|
|
481
|
+
MCPSetCreated(Result);
|
|
482
|
+
Result->SetStringField(TEXT("blueprintPath"), BPPath);
|
|
483
|
+
Result->SetStringField(TEXT("component"), ResolvedComp);
|
|
484
|
+
Result->SetStringField(TEXT("attributeSet"), AttrSetClass->GetName());
|
|
485
|
+
if (InitTable) Result->SetStringField(TEXT("initDataTable"), InitTable->GetPathName());
|
|
486
|
+
Result->SetStringField(TEXT("note"),
|
|
487
|
+
TEXT("Attribute set wired to the ASC's DefaultStartingData. If attributes aren't live at runtime, call gas(action=\"init_asc\", attributeSet=...) after PIE starts."));
|
|
488
|
+
return MCPResult(Result);
|
|
489
|
+
}
|
|
@@ -33,9 +33,16 @@ private:
|
|
|
33
33
|
static TSharedPtr<FJsonValue> SetAbilityTags(const TSharedPtr<FJsonObject>& Params);
|
|
34
34
|
static TSharedPtr<FJsonValue> SetEffectModifier(const TSharedPtr<FJsonObject>& Params);
|
|
35
35
|
|
|
36
|
+
// Wire an AttributeSet (with optional init DataTable) onto a Blueprint's ASC
|
|
37
|
+
// component template via DefaultStartingData. Authoring; in GasHandlers.cpp.
|
|
38
|
+
static TSharedPtr<FJsonValue> SetAscDefaults(const TSharedPtr<FJsonObject>& Params);
|
|
39
|
+
|
|
36
40
|
// Runtime GAS control (operates on a live actor's AbilitySystemComponent,
|
|
37
41
|
// PIE by default). Implemented in GasHandlers_Runtime.cpp.
|
|
38
42
|
static TSharedPtr<FJsonValue> ApplyEffect(const TSharedPtr<FJsonObject>& Params);
|
|
39
43
|
static TSharedPtr<FJsonValue> SetAttribute(const TSharedPtr<FJsonObject>& Params);
|
|
40
44
|
static TSharedPtr<FJsonValue> GetAttribute(const TSharedPtr<FJsonObject>& Params);
|
|
45
|
+
// InitAbilityActorInfo + optionally GetOrCreateAttributeSubobject on a live
|
|
46
|
+
// actor, so a bridge-authored GAS actor has live attributes to test against.
|
|
47
|
+
static TSharedPtr<FJsonValue> InitAsc(const TSharedPtr<FJsonObject>& Params);
|
|
41
48
|
};
|
|
@@ -109,30 +109,29 @@ namespace
|
|
|
109
109
|
Obj->SetNumberField(TEXT("currentValue"), ASC->GetNumericAttribute(Attr));
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
// Resolve a
|
|
113
|
-
|
|
112
|
+
// Resolve a UClass deriving from Base from a content path or short class name.
|
|
113
|
+
// Handles native classes, Blueprint generated classes (path + "_C"), and a
|
|
114
|
+
// Blueprint-asset fallback. Returns nullptr unless the result is a Base subclass.
|
|
115
|
+
UClass* ResolveClassDeriving(const FString& Spec, UClass* Base)
|
|
114
116
|
{
|
|
115
|
-
auto
|
|
117
|
+
auto Ok = [Base](UClass* C) { return C && Base && C->IsChildOf(Base); };
|
|
116
118
|
|
|
117
119
|
if (Spec.Contains(TEXT("/")))
|
|
118
120
|
{
|
|
119
|
-
|
|
120
|
-
if (UClass* C = LoadObject<UClass>(nullptr, *Spec); IsEffect(C)) return C;
|
|
121
|
-
// Blueprint generated class: "/Game/Foo/GE_Bar" -> ".../GE_Bar.GE_Bar_C".
|
|
121
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *Spec); Ok(C)) return C;
|
|
122
122
|
FString AssetName;
|
|
123
123
|
Spec.Split(TEXT("/"), nullptr, &AssetName, ESearchCase::CaseSensitive, ESearchDir::FromEnd);
|
|
124
124
|
const FString ClassPath = Spec + TEXT(".") + AssetName + TEXT("_C");
|
|
125
|
-
if (UClass* C = LoadObject<UClass>(nullptr, *ClassPath);
|
|
126
|
-
// Fall back to loading the Blueprint and taking its generated class.
|
|
125
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *ClassPath); Ok(C)) return C;
|
|
127
126
|
if (UBlueprint* BP = LoadAssetByPath<UBlueprint>(Spec))
|
|
128
127
|
{
|
|
129
|
-
if (
|
|
128
|
+
if (Ok(BP->GeneratedClass)) return BP->GeneratedClass;
|
|
130
129
|
}
|
|
131
130
|
return nullptr;
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
UClass* C = FindClassByShortName(Spec);
|
|
135
|
-
return
|
|
134
|
+
return Ok(C) ? C : nullptr;
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
|
|
@@ -148,7 +147,7 @@ TSharedPtr<FJsonValue> FGasHandlers::ApplyEffect(const TSharedPtr<FJsonObject>&
|
|
|
148
147
|
UAbilitySystemComponent* ASC = ResolveASC(Params, Actor, Err);
|
|
149
148
|
if (!ASC) return Err;
|
|
150
149
|
|
|
151
|
-
UClass* EffectClass =
|
|
150
|
+
UClass* EffectClass = ResolveClassDeriving(EffectSpec, UGameplayEffect::StaticClass());
|
|
152
151
|
if (!EffectClass)
|
|
153
152
|
{
|
|
154
153
|
return MCPError(FString::Printf(
|
|
@@ -298,3 +297,64 @@ TSharedPtr<FJsonValue> FGasHandlers::GetAttribute(const TSharedPtr<FJsonObject>&
|
|
|
298
297
|
Result->SetNumberField(TEXT("count"), Rows.Num());
|
|
299
298
|
return MCPResult(Result);
|
|
300
299
|
}
|
|
300
|
+
|
|
301
|
+
TSharedPtr<FJsonValue> FGasHandlers::InitAsc(const TSharedPtr<FJsonObject>& Params)
|
|
302
|
+
{
|
|
303
|
+
MCP_CHECK_GAME_THREAD();
|
|
304
|
+
|
|
305
|
+
AActor* Actor = nullptr;
|
|
306
|
+
TSharedPtr<FJsonValue> Err;
|
|
307
|
+
UAbilitySystemComponent* ASC = ResolveASC(Params, Actor, Err);
|
|
308
|
+
if (!ASC) return Err;
|
|
309
|
+
|
|
310
|
+
// Establish owner/avatar so abilities activate and effect contexts target
|
|
311
|
+
// correctly. Safe to call again; a game's own pawn may also init the ASC.
|
|
312
|
+
ASC->InitAbilityActorInfo(Actor, Actor);
|
|
313
|
+
|
|
314
|
+
// Optionally guarantee an attribute set exists on the ASC. This is what lets
|
|
315
|
+
// a bridge-authored test actor have live attributes without shipping an init
|
|
316
|
+
// DataTable: spawn the set (with its default values) and register it if it
|
|
317
|
+
// isn't already present. GetOrCreateAttributeSubobject is protected, so use
|
|
318
|
+
// the public GetAttributeSet + AddSpawnedAttribute pair.
|
|
319
|
+
FString CreatedSet;
|
|
320
|
+
const FString AttrSetSpec = OptionalString(Params, TEXT("attributeSet"));
|
|
321
|
+
if (!AttrSetSpec.IsEmpty())
|
|
322
|
+
{
|
|
323
|
+
UClass* AttrSetClass = ResolveClassDeriving(AttrSetSpec, UAttributeSet::StaticClass());
|
|
324
|
+
if (!AttrSetClass)
|
|
325
|
+
{
|
|
326
|
+
return MCPError(FString::Printf(
|
|
327
|
+
TEXT("AttributeSet class not found: %s (pass a content path or class name)"), *AttrSetSpec));
|
|
328
|
+
}
|
|
329
|
+
const UAttributeSet* Existing = ASC->GetAttributeSet(AttrSetClass);
|
|
330
|
+
if (!Existing)
|
|
331
|
+
{
|
|
332
|
+
UAttributeSet* NewSet = NewObject<UAttributeSet>(Actor, AttrSetClass);
|
|
333
|
+
ASC->AddSpawnedAttribute(NewSet);
|
|
334
|
+
CreatedSet = NewSet->GetClass()->GetName();
|
|
335
|
+
}
|
|
336
|
+
else
|
|
337
|
+
{
|
|
338
|
+
CreatedSet = Existing->GetClass()->GetName();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Count attributes now live across all spawned sets.
|
|
343
|
+
int32 AttrCount = 0;
|
|
344
|
+
for (const UAttributeSet* Set : ASC->GetSpawnedAttributes())
|
|
345
|
+
{
|
|
346
|
+
if (!Set) continue;
|
|
347
|
+
for (TFieldIterator<FProperty> It(Set->GetClass()); It; ++It)
|
|
348
|
+
{
|
|
349
|
+
FStructProperty* SProp = CastField<FStructProperty>(*It);
|
|
350
|
+
if (SProp && SProp->Struct == FGameplayAttributeData::StaticStruct()) ++AttrCount;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
auto Result = MCPSuccess();
|
|
355
|
+
Result->SetStringField(TEXT("actorLabel"), Actor->GetActorLabel());
|
|
356
|
+
Result->SetBoolField(TEXT("initialized"), true);
|
|
357
|
+
if (!CreatedSet.IsEmpty()) Result->SetStringField(TEXT("attributeSet"), CreatedSet);
|
|
358
|
+
Result->SetNumberField(TEXT("attributeCount"), AttrCount);
|
|
359
|
+
return MCPResult(Result);
|
|
360
|
+
}
|