ue-mcp 1.0.72 → 1.0.74
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/dist/plugin-cli.js +366 -15
- package/dist/plugin-cli.js.map +1 -1
- package/dist/tool-counts.json +2 -2
- package/dist/tools/gameplay.js +3 -2
- package/dist/tools/gameplay.js.map +1 -1
- package/dist/ue-mcp.default.yml +1 -1
- package/package.json +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp +18 -6
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +96 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +132 -25
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +5 -4
package/dist/plugin-cli.js
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* uninstall <name> npm uninstall + remove from plugins:
|
|
7
7
|
* list list configured plugins and their status
|
|
8
8
|
* update [name] npm update + re-validate manifests
|
|
9
|
+
* create <name> [--dir path] scaffold a new plugin (superset of every
|
|
10
|
+
* extension shape: inject, provides, flows,
|
|
11
|
+
* and a dormant native C++ module)
|
|
9
12
|
*
|
|
10
13
|
* Editing ue-mcp.yml: js-yaml does not preserve comments. We mitigate by
|
|
11
14
|
* rewriting only the `plugins:` block via a string-level surgery when
|
|
@@ -333,10 +336,13 @@ function cmdCreate() {
|
|
|
333
336
|
const prefix = deriveDefaultPrefix(name);
|
|
334
337
|
writeScaffold(targetDir, name, prefix);
|
|
335
338
|
note(`scaffolded ${name} at ${targetDir}`);
|
|
339
|
+
note(`superset scaffold: inject + provides + flows live; native C++ module dormant under ue/Plugins/${deriveUePluginName(name)}/.`);
|
|
340
|
+
note(`keep the shapes you want, delete the rest. To activate native handlers, uncomment the nativeModule: block in ue-mcp.plugin.yml.`);
|
|
336
341
|
note(`next steps:`);
|
|
337
342
|
console.log(` cd ${path.relative(process.cwd(), targetDir) || "."}`);
|
|
338
343
|
console.log(` npm install`);
|
|
339
344
|
console.log(` npm run build`);
|
|
345
|
+
console.log(` npm run check # validate manifest + task wiring`);
|
|
340
346
|
console.log(` npm publish # when ready`);
|
|
341
347
|
}
|
|
342
348
|
function deriveDefaultPrefix(pkgName) {
|
|
@@ -345,31 +351,59 @@ function deriveDefaultPrefix(pkgName) {
|
|
|
345
351
|
const seed = parts.length > 0 ? parts.map((s) => s[0]).join("").slice(0, 4) : "plg";
|
|
346
352
|
return /^[a-z]/.test(seed) ? seed : `p${seed}`;
|
|
347
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Scaffold a plugin that is a SUPERSET of every extension shape ue-mcp
|
|
356
|
+
* supports, so an author never has to discover a capability before using it:
|
|
357
|
+
*
|
|
358
|
+
* - inject: add prefixed actions onto a built-in category
|
|
359
|
+
* - provides: own a brand-new top-level category (unprefixed actions)
|
|
360
|
+
* - flows: chain tasks/actions into one orchestrated call
|
|
361
|
+
* - nativeModule: ship C++ handlers on the bridge - scaffolded but DORMANT
|
|
362
|
+
*
|
|
363
|
+
* The native C++ module is the one capability that cannot be a live default:
|
|
364
|
+
* declaring `nativeModule:` makes `ue-mcp plugin install` deploy the module and
|
|
365
|
+
* force a UE rebuild. So the C++ skeleton is written to disk under
|
|
366
|
+
* ue/Plugins/<UePlugin>/, but its manifest block is commented out. Uncommenting
|
|
367
|
+
* three lines activates it - no separate "style" flag, no compile tax until the
|
|
368
|
+
* author opts in. The author deletes whatever shape they don't want.
|
|
369
|
+
*/
|
|
348
370
|
function writeScaffold(dir, pkgName, prefix) {
|
|
349
|
-
const
|
|
350
|
-
|
|
371
|
+
const helloClass = "Hello";
|
|
372
|
+
const greetClass = "Greet";
|
|
373
|
+
const uePlugin = deriveUePluginName(pkgName);
|
|
374
|
+
const nativeCategory = `${prefix}_native`;
|
|
375
|
+
// The scaffold's tasks import `ue-mcp/task`, which only exists from the
|
|
351
376
|
// version that introduced it. Default the floor to the running server's
|
|
352
377
|
// version so a freshly scaffolded plugin declares a dependency that can
|
|
353
378
|
// actually resolve the import; an explicit env override still wins.
|
|
354
379
|
const minServer = process.env.UE_MCP_PLUGIN_MIN_SERVER ?? readServerVersion();
|
|
380
|
+
const year = new Date().getFullYear();
|
|
355
381
|
const pkgJson = {
|
|
356
382
|
name: pkgName,
|
|
357
383
|
version: "0.1.0",
|
|
358
384
|
description: `${pkgName} - ue-mcp plugin`,
|
|
359
385
|
type: "module",
|
|
360
386
|
main: "dist/index.js",
|
|
361
|
-
|
|
362
|
-
|
|
387
|
+
// `ue` ships the dormant native C++ source so authors can activate it
|
|
388
|
+
// without re-vendoring; `LICENSE` is included for npm publish hygiene.
|
|
389
|
+
files: ["dist", "ue", "ue-mcp.plugin.yml", "knowledge", "README.md", "LICENSE"],
|
|
390
|
+
keywords: ["ue-mcp-plugin", "unreal-engine"],
|
|
391
|
+
author: "",
|
|
392
|
+
license: "MIT",
|
|
393
|
+
repository: { type: "git", url: "" },
|
|
363
394
|
peerDependencies: {
|
|
364
395
|
"ue-mcp": `>=${minServer}`,
|
|
365
396
|
},
|
|
366
397
|
devDependencies: {
|
|
367
398
|
"ue-mcp": `^${minServer}`,
|
|
399
|
+
"js-yaml": "^4.1.0",
|
|
400
|
+
"@types/js-yaml": "^4.0.9",
|
|
368
401
|
typescript: "^5.7.0",
|
|
369
402
|
},
|
|
370
403
|
scripts: {
|
|
371
404
|
build: "tsc",
|
|
372
|
-
|
|
405
|
+
check: "node scripts/check.mjs",
|
|
406
|
+
prepublishOnly: "npm run build && npm run check",
|
|
373
407
|
},
|
|
374
408
|
};
|
|
375
409
|
fs.writeFileSync(path.join(dir, "package.json"), JSON.stringify(pkgJson, null, 2) + "\n");
|
|
@@ -392,28 +426,87 @@ function writeScaffold(dir, pkgName, prefix) {
|
|
|
392
426
|
const manifestYaml = `actionPrefix: ${prefix}
|
|
393
427
|
minServerVersion: ${minServer}
|
|
394
428
|
|
|
429
|
+
# This scaffold is a SUPERSET: it shows every way a plugin can extend ue-mcp.
|
|
430
|
+
# Keep the shapes you need and delete the rest.
|
|
431
|
+
# 1) inject - add actions onto a built-in category (names are prefixed)
|
|
432
|
+
# 2) provides - own a brand-new top-level category (names are NOT prefixed)
|
|
433
|
+
# 3) flows - chain tasks/actions into one orchestrated call
|
|
434
|
+
# 4) nativeModule (commented, at the bottom) - ship C++ handlers on the bridge
|
|
435
|
+
|
|
436
|
+
# 1) inject: '${prefix}_hello' lands on the built-in 'project' tool, reached as
|
|
437
|
+
# project(action="${prefix}_hello").
|
|
395
438
|
inject:
|
|
396
439
|
project:
|
|
397
440
|
hello:
|
|
398
441
|
task: ${prefix}.hello
|
|
399
|
-
description: "
|
|
442
|
+
description: "Greet by name - a stand-in inject action this scaffold ships with"
|
|
400
443
|
schema:
|
|
401
|
-
name: { type: string }
|
|
444
|
+
name: { type: string, description: "Who to greet (default: world)" }
|
|
445
|
+
|
|
446
|
+
# 2) provides: a category the plugin owns. Actions are NOT prefixed - the
|
|
447
|
+
# category name is the namespace, e.g. ${prefix}(action="greet").
|
|
448
|
+
provides:
|
|
449
|
+
${prefix}:
|
|
450
|
+
description: "${pkgName} - example plugin-owned category"
|
|
451
|
+
actions:
|
|
452
|
+
greet:
|
|
453
|
+
task: ${prefix}.greet
|
|
454
|
+
description: "Greet by name from a plugin-owned category"
|
|
455
|
+
schema:
|
|
456
|
+
name: { type: string, description: "Who to greet (default: world)" }
|
|
402
457
|
|
|
403
458
|
tasks:
|
|
404
459
|
${prefix}.hello:
|
|
405
|
-
class_path: tasks/${
|
|
460
|
+
class_path: tasks/${helloClass}
|
|
461
|
+
${prefix}.greet:
|
|
462
|
+
class_path: tasks/${greetClass}
|
|
463
|
+
|
|
464
|
+
# 3) flows: chain tasks/actions into one call. This one just runs the hello
|
|
465
|
+
# task; expand 'steps' to orchestrate real multi-step work.
|
|
466
|
+
flows:
|
|
467
|
+
${prefix}_demo:
|
|
468
|
+
description: "Example flow: run the hello task"
|
|
469
|
+
steps:
|
|
470
|
+
1:
|
|
471
|
+
task: ${prefix}.hello
|
|
472
|
+
options:
|
|
473
|
+
name: world
|
|
406
474
|
|
|
407
|
-
|
|
475
|
+
# 4) nativeModule: ship C++ handlers that register on the bridge. DORMANT by
|
|
476
|
+
# default - the C++ skeleton already lives under ue/Plugins/${uePlugin}/, but
|
|
477
|
+
# it is not deployed or compiled until you UNCOMMENT this block. Activating it
|
|
478
|
+
# makes 'ue-mcp plugin install' deploy the module and require a UE rebuild.
|
|
479
|
+
# The handlers then surface unprefixed under a '${nativeCategory}' category,
|
|
480
|
+
# e.g. ${nativeCategory}(action="echo").
|
|
481
|
+
# nativeModule:
|
|
482
|
+
# uePluginName: ${uePlugin}
|
|
483
|
+
# minBridgeApi: 1
|
|
484
|
+
# source: ue/Plugins/${uePlugin}
|
|
485
|
+
# category: ${nativeCategory}
|
|
486
|
+
# categoryDescription: "${pkgName} native C++ handlers"
|
|
487
|
+
# handlers:
|
|
488
|
+
# echo:
|
|
489
|
+
# description: "Echo a name back from native C++ (required: name)"
|
|
490
|
+
# schema:
|
|
491
|
+
# name: { type: string, description: "Name to echo" }
|
|
408
492
|
`;
|
|
409
493
|
fs.writeFileSync(path.join(dir, "ue-mcp.plugin.yml"), manifestYaml);
|
|
494
|
+
// ── TypeScript: index stub + the two example tasks ──────────────────────
|
|
495
|
+
fs.mkdirSync(path.join(dir, "src", "tasks"), { recursive: true });
|
|
496
|
+
const indexTs = `// Entry point for the npm package. ue-mcp loads tasks by their manifest
|
|
497
|
+
// class_path, not through this file, so it can stay empty - but package.json's
|
|
498
|
+
// "main" points here, so the build must emit it.
|
|
499
|
+
export {};
|
|
500
|
+
`;
|
|
501
|
+
fs.writeFileSync(path.join(dir, "src", "index.ts"), indexTs);
|
|
410
502
|
const helloTs = `import { UeMcpTask, type TaskResult } from "ue-mcp/task";
|
|
411
503
|
|
|
412
504
|
interface Options {
|
|
413
505
|
name?: string;
|
|
414
506
|
}
|
|
415
507
|
|
|
416
|
-
|
|
508
|
+
/** Backs project(action="${prefix}_hello") and the ${prefix}_demo flow. */
|
|
509
|
+
export default class ${helloClass} extends UeMcpTask<Options> {
|
|
417
510
|
get taskName() { return "${prefix}.hello"; }
|
|
418
511
|
|
|
419
512
|
async execute(): Promise<TaskResult> {
|
|
@@ -422,10 +515,36 @@ export default class ${className} extends UeMcpTask<Options> {
|
|
|
422
515
|
}
|
|
423
516
|
}
|
|
424
517
|
`;
|
|
425
|
-
fs.
|
|
426
|
-
|
|
518
|
+
fs.writeFileSync(path.join(dir, "src", "tasks", `${helloClass}.ts`), helloTs);
|
|
519
|
+
const greetTs = `import { UeMcpTask, type TaskResult } from "ue-mcp/task";
|
|
520
|
+
|
|
521
|
+
interface Options {
|
|
522
|
+
name?: string;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Backs ${prefix}(action="greet") - the plugin-owned category. Swap the body
|
|
527
|
+
* for real work; compose built-ins with \`this.call("level.get_outliner", {})\`.
|
|
528
|
+
*/
|
|
529
|
+
export default class ${greetClass} extends UeMcpTask<Options> {
|
|
530
|
+
get taskName() { return "${prefix}.greet"; }
|
|
531
|
+
|
|
532
|
+
async execute(): Promise<TaskResult> {
|
|
533
|
+
const who = this.options.name ?? "world";
|
|
534
|
+
return { success: true, data: { greeting: \`greetings, \${who}\` } };
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
`;
|
|
538
|
+
fs.writeFileSync(path.join(dir, "src", "tasks", `${greetClass}.ts`), greetTs);
|
|
539
|
+
// ── Pre-publish sanity check ────────────────────────────────────────────
|
|
540
|
+
fs.mkdirSync(path.join(dir, "scripts"), { recursive: true });
|
|
541
|
+
fs.writeFileSync(path.join(dir, "scripts", "check.mjs"), CHECK_SCRIPT);
|
|
542
|
+
// ── Knowledge ───────────────────────────────────────────────────────────
|
|
427
543
|
fs.mkdirSync(path.join(dir, "knowledge"), { recursive: true });
|
|
428
544
|
fs.writeFileSync(path.join(dir, "knowledge", "project.md"), `# ${pkgName} - project actions\n\nDescribe in one screen what your plugin contributes to the project category.\n`);
|
|
545
|
+
// ── Dormant native C++ module ────────────────────────────────────────────
|
|
546
|
+
writeNativeSkeleton(dir, uePlugin, pkgName);
|
|
547
|
+
// ── README / LICENSE / .gitignore ────────────────────────────────────────
|
|
429
548
|
const readme = `# ${pkgName}
|
|
430
549
|
|
|
431
550
|
A ue-mcp plugin. Install with:
|
|
@@ -434,21 +553,253 @@ A ue-mcp plugin. Install with:
|
|
|
434
553
|
ue-mcp plugin install ${pkgName}
|
|
435
554
|
\`\`\`
|
|
436
555
|
|
|
437
|
-
|
|
438
|
-
|
|
556
|
+
## What this scaffold ships
|
|
557
|
+
|
|
558
|
+
It is a **superset** - every way a plugin can extend ue-mcp, wired and working.
|
|
559
|
+
Keep what you want, delete the rest.
|
|
560
|
+
|
|
561
|
+
- **inject** -> \`project(action="${prefix}_hello")\` (an action added onto a built-in category)
|
|
562
|
+
- **provides** -> \`${prefix}(action="greet")\` (a new top-level category this plugin owns)
|
|
563
|
+
- **flows** -> \`${prefix}_demo\` (a chained, one-call orchestration)
|
|
564
|
+
- **nativeModule** -> a C++ handler skeleton under \`ue/Plugins/${uePlugin}/\`, **dormant** until you activate it
|
|
565
|
+
|
|
566
|
+
## Activate the native C++ module
|
|
567
|
+
|
|
568
|
+
The C++ source is already on disk but inert. To turn it on:
|
|
569
|
+
|
|
570
|
+
1. Uncomment the \`nativeModule:\` block at the bottom of \`ue-mcp.plugin.yml\`.
|
|
571
|
+
2. Reinstall (\`ue-mcp plugin install ${pkgName}\`) - this deploys the module into
|
|
572
|
+
your project's \`Plugins/\` and requires a UE rebuild before the editor starts.
|
|
573
|
+
|
|
574
|
+
The handler then surfaces as \`${prefix}_native(action="echo")\`.
|
|
439
575
|
|
|
440
576
|
## Develop
|
|
441
577
|
|
|
442
578
|
\`\`\`bash
|
|
443
579
|
npm install
|
|
444
580
|
npm run build
|
|
581
|
+
npm run check # validate the manifest + task wiring
|
|
445
582
|
\`\`\`
|
|
446
583
|
|
|
447
|
-
See https://
|
|
584
|
+
See https://ue-mcp.com/docs/plugins/ for the full author contract.
|
|
448
585
|
`;
|
|
449
586
|
fs.writeFileSync(path.join(dir, "README.md"), readme);
|
|
587
|
+
fs.writeFileSync(path.join(dir, "LICENSE"), `MIT License
|
|
588
|
+
|
|
589
|
+
Copyright (c) ${year} ${pkgName} authors
|
|
590
|
+
|
|
591
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
592
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
593
|
+
in the Software without restriction, including without limitation the rights
|
|
594
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
595
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
596
|
+
furnished to do so, subject to the following conditions:
|
|
597
|
+
|
|
598
|
+
The above copyright notice and this permission notice shall be included in all
|
|
599
|
+
copies or substantial portions of the Software.
|
|
600
|
+
|
|
601
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
602
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
603
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
604
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
605
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
606
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
607
|
+
SOFTWARE.
|
|
608
|
+
`);
|
|
450
609
|
fs.writeFileSync(path.join(dir, ".gitignore"), `node_modules/\ndist/\n*.tgz\n.DS_Store\n`);
|
|
451
610
|
}
|
|
611
|
+
/**
|
|
612
|
+
* Derive a UE-legal module/plugin name (PascalCase, leading letter) from the
|
|
613
|
+
* npm package name. "voxel-plugin-tools" -> "VoxelPluginTools".
|
|
614
|
+
*/
|
|
615
|
+
function deriveUePluginName(pkgName) {
|
|
616
|
+
const parts = pkgName.replace(/[^a-z0-9]+/gi, " ").trim().split(/\s+/).filter(Boolean);
|
|
617
|
+
const pascal = parts.map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join("");
|
|
618
|
+
return /^[A-Za-z]/.test(pascal) ? pascal : `Plugin${pascal}`;
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* Write a minimal, compile-ready UE C++ module under ue/Plugins/<uePlugin>/.
|
|
622
|
+
* It registers one example handler ("echo") on the bridge via the public
|
|
623
|
+
* UEMCP::RegisterExternalHandler API. Inert until the manifest's nativeModule:
|
|
624
|
+
* block is uncommented.
|
|
625
|
+
*/
|
|
626
|
+
function writeNativeSkeleton(dir, uePlugin, pkgName) {
|
|
627
|
+
const base = path.join(dir, "ue", "Plugins", uePlugin);
|
|
628
|
+
const moduleDir = path.join(base, "Source", uePlugin);
|
|
629
|
+
const publicDir = path.join(moduleDir, "Public");
|
|
630
|
+
const privateDir = path.join(moduleDir, "Private");
|
|
631
|
+
const handlersDir = path.join(privateDir, "Handlers");
|
|
632
|
+
fs.mkdirSync(handlersDir, { recursive: true });
|
|
633
|
+
fs.mkdirSync(publicDir, { recursive: true });
|
|
634
|
+
const uplugin = {
|
|
635
|
+
FileVersion: 3,
|
|
636
|
+
Version: 1,
|
|
637
|
+
VersionName: "0.1.0",
|
|
638
|
+
FriendlyName: uePlugin,
|
|
639
|
+
Description: `Native C++ handlers for the ${pkgName} ue-mcp plugin`,
|
|
640
|
+
Category: "Editor",
|
|
641
|
+
CreatedBy: "",
|
|
642
|
+
EnabledByDefault: true,
|
|
643
|
+
CanContainContent: false,
|
|
644
|
+
Modules: [
|
|
645
|
+
{ Name: uePlugin, Type: "Editor", LoadingPhase: "PostEngineInit" },
|
|
646
|
+
],
|
|
647
|
+
Plugins: [
|
|
648
|
+
{ Name: "UE_MCP_Bridge", Enabled: true },
|
|
649
|
+
],
|
|
650
|
+
};
|
|
651
|
+
fs.writeFileSync(path.join(base, `${uePlugin}.uplugin`), JSON.stringify(uplugin, null, 2) + "\n");
|
|
652
|
+
fs.writeFileSync(path.join(moduleDir, `${uePlugin}.Build.cs`), `using UnrealBuildTool;
|
|
653
|
+
|
|
654
|
+
public class ${uePlugin} : ModuleRules
|
|
655
|
+
{
|
|
656
|
+
\tpublic ${uePlugin}(ReadOnlyTargetRules Target) : base(Target)
|
|
657
|
+
\t{
|
|
658
|
+
\t\tPCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
|
|
659
|
+
|
|
660
|
+
\t\tPublicDependencyModuleNames.AddRange(new string[]
|
|
661
|
+
\t\t{
|
|
662
|
+
\t\t\t"Core",
|
|
663
|
+
\t\t\t"CoreUObject",
|
|
664
|
+
\t\t\t"Engine",
|
|
665
|
+
\t\t\t"Json",
|
|
666
|
+
\t\t\t"JsonUtilities",
|
|
667
|
+
\t\t});
|
|
668
|
+
|
|
669
|
+
\t\t// UE_MCP_Bridge exposes UEMCP::RegisterExternalHandler (MCPHandlerRegistration.h).
|
|
670
|
+
\t\tPrivateDependencyModuleNames.AddRange(new string[]
|
|
671
|
+
\t\t{
|
|
672
|
+
\t\t\t"UE_MCP_Bridge",
|
|
673
|
+
\t\t});
|
|
674
|
+
\t}
|
|
675
|
+
}
|
|
676
|
+
`);
|
|
677
|
+
fs.writeFileSync(path.join(publicDir, `${uePlugin}Module.h`), `#pragma once
|
|
678
|
+
|
|
679
|
+
#include "CoreMinimal.h"
|
|
680
|
+
#include "Modules/ModuleManager.h"
|
|
681
|
+
|
|
682
|
+
DECLARE_LOG_CATEGORY_EXTERN(Log${uePlugin}, Log, All);
|
|
683
|
+
|
|
684
|
+
class F${uePlugin}Module : public IModuleInterface
|
|
685
|
+
{
|
|
686
|
+
public:
|
|
687
|
+
\tvirtual void StartupModule() override;
|
|
688
|
+
\tvirtual void ShutdownModule() override;
|
|
689
|
+
};
|
|
690
|
+
`);
|
|
691
|
+
fs.writeFileSync(path.join(privateDir, `${uePlugin}Module.cpp`), `#include "${uePlugin}Module.h"
|
|
692
|
+
#include "Modules/ModuleManager.h"
|
|
693
|
+
#include "MCPHandlerRegistration.h"
|
|
694
|
+
#include "Handlers/ExampleHandlers.h"
|
|
695
|
+
|
|
696
|
+
DEFINE_LOG_CATEGORY(Log${uePlugin});
|
|
697
|
+
IMPLEMENT_MODULE(F${uePlugin}Module, ${uePlugin})
|
|
698
|
+
|
|
699
|
+
void F${uePlugin}Module::StartupModule()
|
|
700
|
+
{
|
|
701
|
+
\t// Bare method names. When this module is surfaced via nativeModule.category
|
|
702
|
+
\t// in ue-mcp.plugin.yml, ue-mcp routes <category>(action="echo") to "echo".
|
|
703
|
+
\tUEMCP::RegisterExternalHandler(TEXT("echo"), &FExampleHandlers::Echo);
|
|
704
|
+
|
|
705
|
+
\tUE_LOG(Log${uePlugin}, Log, TEXT("[${uePlugin}] Registered 1 handler"));
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
void F${uePlugin}Module::ShutdownModule()
|
|
709
|
+
{
|
|
710
|
+
\tUEMCP::UnregisterExternalHandler(TEXT("echo"));
|
|
711
|
+
}
|
|
712
|
+
`);
|
|
713
|
+
fs.writeFileSync(path.join(handlersDir, "ExampleHandlers.h"), `#pragma once
|
|
714
|
+
|
|
715
|
+
#include "CoreMinimal.h"
|
|
716
|
+
#include "Dom/JsonObject.h"
|
|
717
|
+
#include "Dom/JsonValue.h"
|
|
718
|
+
|
|
719
|
+
/** Example external handler registered on the UE-MCP bridge. */
|
|
720
|
+
class FExampleHandlers
|
|
721
|
+
{
|
|
722
|
+
public:
|
|
723
|
+
\t/** Echo a 'name' param back. Bridge method: "echo". */
|
|
724
|
+
\tstatic TSharedPtr<FJsonValue> Echo(const TSharedPtr<FJsonObject>& Params);
|
|
725
|
+
};
|
|
726
|
+
`);
|
|
727
|
+
fs.writeFileSync(path.join(handlersDir, "ExampleHandlers.cpp"), `#include "Handlers/ExampleHandlers.h"
|
|
728
|
+
|
|
729
|
+
TSharedPtr<FJsonValue> FExampleHandlers::Echo(const TSharedPtr<FJsonObject>& Params)
|
|
730
|
+
{
|
|
731
|
+
\tFString Name = TEXT("world");
|
|
732
|
+
\tif (Params.IsValid())
|
|
733
|
+
\t{
|
|
734
|
+
\t\tParams->TryGetStringField(TEXT("name"), Name);
|
|
735
|
+
\t}
|
|
736
|
+
|
|
737
|
+
\tTSharedPtr<FJsonObject> Result = MakeShared<FJsonObject>();
|
|
738
|
+
\tResult->SetBoolField(TEXT("success"), true);
|
|
739
|
+
\tResult->SetStringField(TEXT("echo"), FString::Printf(TEXT("hello, %s"), *Name));
|
|
740
|
+
\treturn MakeShared<FJsonValueObject>(Result);
|
|
741
|
+
}
|
|
742
|
+
`);
|
|
743
|
+
}
|
|
744
|
+
/**
|
|
745
|
+
* Standalone pre-publish check shipped into scaffolded plugins as
|
|
746
|
+
* scripts/check.mjs. Verifies the manifest parses, every action's task:
|
|
747
|
+
* resolves to a tasks: entry, and every tasks: class_path points at a real
|
|
748
|
+
* source/built file. No build step required - runs on plain node.
|
|
749
|
+
*/
|
|
750
|
+
const CHECK_SCRIPT = `#!/usr/bin/env node
|
|
751
|
+
// Sanity-check a ue-mcp plugin: manifest parses, task references resolve, and
|
|
752
|
+
// every class_path points at a real source or built file.
|
|
753
|
+
import fs from "node:fs";
|
|
754
|
+
import path from "node:path";
|
|
755
|
+
import yaml from "js-yaml";
|
|
756
|
+
|
|
757
|
+
const root = process.cwd();
|
|
758
|
+
const manifestPath = path.join(root, "ue-mcp.plugin.yml");
|
|
759
|
+
let errors = 0;
|
|
760
|
+
const fail = (m) => { console.error(" x " + m); errors++; };
|
|
761
|
+
|
|
762
|
+
if (!fs.existsSync(manifestPath)) {
|
|
763
|
+
console.error("ue-mcp.plugin.yml not found");
|
|
764
|
+
process.exit(1);
|
|
765
|
+
}
|
|
766
|
+
const m = yaml.load(fs.readFileSync(manifestPath, "utf8")) ?? {};
|
|
767
|
+
const tasks = m.tasks ?? {};
|
|
768
|
+
|
|
769
|
+
// Collect every task reference from inject + provides + flows.
|
|
770
|
+
const refs = [];
|
|
771
|
+
for (const [cat, actions] of Object.entries(m.inject ?? {}))
|
|
772
|
+
for (const [a, def] of Object.entries(actions))
|
|
773
|
+
if (def?.task) refs.push(["inject " + cat + "." + a, def.task]);
|
|
774
|
+
for (const [cat, spec] of Object.entries(m.provides ?? {}))
|
|
775
|
+
for (const [a, def] of Object.entries(spec?.actions ?? {}))
|
|
776
|
+
if (def?.task) refs.push(["provides " + cat + "." + a, def.task]);
|
|
777
|
+
for (const [fname, fdef] of Object.entries(m.flows ?? {}))
|
|
778
|
+
for (const [s, step] of Object.entries(fdef?.steps ?? {}))
|
|
779
|
+
if (step?.task) refs.push(["flow " + fname + "." + s, step.task]);
|
|
780
|
+
|
|
781
|
+
for (const [where, task] of refs)
|
|
782
|
+
if (!tasks[task]) fail(where + " references task '" + task + "' with no tasks: entry");
|
|
783
|
+
|
|
784
|
+
for (const [name, def] of Object.entries(tasks)) {
|
|
785
|
+
const seg = String(def.class_path).replace(/\\./g, "/");
|
|
786
|
+
const candidates = [
|
|
787
|
+
path.join(root, "src", seg + ".ts"),
|
|
788
|
+
path.join(root, "dist", seg + ".js"),
|
|
789
|
+
];
|
|
790
|
+
if (!candidates.some((c) => fs.existsSync(c)))
|
|
791
|
+
fail("task '" + name + "' class_path '" + def.class_path + "' resolves to no src/*.ts or dist/*.js");
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
if (m.nativeModule?.source && !fs.existsSync(path.join(root, m.nativeModule.source)))
|
|
795
|
+
fail("nativeModule.source '" + m.nativeModule.source + "' does not exist");
|
|
796
|
+
|
|
797
|
+
if (errors) {
|
|
798
|
+
console.error("\\n" + errors + " problem(s) found.");
|
|
799
|
+
process.exit(1);
|
|
800
|
+
}
|
|
801
|
+
console.log("ue-mcp plugin check: OK");
|
|
802
|
+
`;
|
|
452
803
|
function uePluginEnabled(projectDir, name) {
|
|
453
804
|
const files = fs.readdirSync(projectDir).filter((f) => f.endsWith(".uproject"));
|
|
454
805
|
if (files.length === 0)
|
package/dist/plugin-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-cli.js","sourceRoot":"","sources":["../src/plugin-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-cli.js","sourceRoot":"","sources":["../src/plugin-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-counts.json
CHANGED
package/dist/tools/gameplay.js
CHANGED
|
@@ -36,7 +36,7 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
|
|
|
36
36
|
create_eqs_query: bp("Create EQS query. Params: name, packagePath?", "create_eqs_query"),
|
|
37
37
|
list_eqs_queries: bp("List EQS queries. Params: directory?", "list_eqs_queries"),
|
|
38
38
|
add_perception: bp("Add AIPerceptionComponent. Params: blueprintPath, senses?", "add_perception_component"),
|
|
39
|
-
configure_sense: bp("
|
|
39
|
+
configure_sense: bp("Add + configure an AI perception sense config on the blueprint's AIPerceptionComponent. Params: blueprintPath, senseType (Sight|Hearing|Damage|Touch|Team|Prediction|Blueprint), settings? ({SightRadius: ...}), componentName?", "configure_ai_perception_sense"),
|
|
40
40
|
create_state_tree: bp("Create StateTree. Params: name, packagePath?", "create_state_tree"),
|
|
41
41
|
list_state_trees: bp("List StateTrees. Params: directory?", "list_state_trees"),
|
|
42
42
|
add_state_tree_component: bp("Add StateTreeComponent. Params: blueprintPath", "add_state_tree_component"),
|
|
@@ -93,7 +93,8 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
|
|
|
93
93
|
instanceProperties: z.record(z.unknown()).optional().describe("Property writes to apply to a freshly-spawned behavior instance"),
|
|
94
94
|
senses: z.array(z.string()).optional(),
|
|
95
95
|
senseType: z.string().optional(),
|
|
96
|
-
settings: z.record(z.unknown()).optional(),
|
|
96
|
+
settings: z.record(z.unknown()).optional().describe("configure_sense: per-sense property writes (e.g. {SightRadius: 1500})"),
|
|
97
|
+
componentName: z.string().optional().describe("configure_sense: target AIPerceptionComponent name (default: first found)"),
|
|
97
98
|
parentClass: z.string().optional(),
|
|
98
99
|
defaults: z.record(z.string()).optional(),
|
|
99
100
|
gameModePath: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameplay.js","sourceRoot":"","sources":["../../src/tools/gameplay.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gameplay.js","sourceRoot":"","sources":["../../src/tools/gameplay.ts"],"names":[],"mappings":"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"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -2766,7 +2766,7 @@ tasks:
|
|
|
2766
2766
|
gameplay.configure_sense:
|
|
2767
2767
|
class_path: ue-mcp.bridge
|
|
2768
2768
|
group: gameplay
|
|
2769
|
-
description: "
|
|
2769
|
+
description: "Add + configure an AI perception sense config on the blueprint's AIPerceptionComponent. Params: blueprintPath, senseType (Sight|Hearing|Damage|Touch|Team|Prediction|Blueprint), settings? ({SightRadius: ...}), componentName?"
|
|
2770
2770
|
options:
|
|
2771
2771
|
method: configure_ai_perception_sense
|
|
2772
2772
|
gameplay.create_state_tree:
|
package/package.json
CHANGED
package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp
CHANGED
|
@@ -666,19 +666,31 @@ TSharedPtr<FJsonValue> FAnimationHandlers::ListAnimModifiers(const TSharedPtr<FJ
|
|
|
666
666
|
if (!Seq) return MCPError(FString::Printf(TEXT("AnimSequence not found: %s"), *AssetPath));
|
|
667
667
|
|
|
668
668
|
TArray<TSharedPtr<FJsonValue>> Arr;
|
|
669
|
-
//
|
|
670
|
-
//
|
|
671
|
-
|
|
669
|
+
// AppliedAnimationModifiers is an editor-only TArray<UAnimationModifier*> on the
|
|
670
|
+
// AnimSequence. Enumerate it via reflection (portable across module linkage):
|
|
671
|
+
// each element is an instanced UAnimationModifier subobject.
|
|
672
|
+
FArrayProperty* ModifiersProp = CastField<FArrayProperty>(
|
|
673
|
+
Seq->GetClass()->FindPropertyByName(TEXT("AppliedAnimationModifiers")));
|
|
672
674
|
if (ModifiersProp)
|
|
673
675
|
{
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
676
|
+
FObjectPropertyBase* ElemProp = CastField<FObjectPropertyBase>(ModifiersProp->Inner);
|
|
677
|
+
FScriptArrayHelper Helper(ModifiersProp, ModifiersProp->ContainerPtrToValuePtr<void>(Seq));
|
|
678
|
+
for (int32 i = 0; i < Helper.Num(); ++i)
|
|
679
|
+
{
|
|
680
|
+
UObject* Modifier = ElemProp ? ElemProp->GetObjectPropertyValue(Helper.GetRawPtr(i)) : nullptr;
|
|
681
|
+
if (!Modifier) continue;
|
|
682
|
+
TSharedPtr<FJsonObject> M = MakeShared<FJsonObject>();
|
|
683
|
+
M->SetStringField(TEXT("class"), Modifier->GetClass()->GetName());
|
|
684
|
+
M->SetStringField(TEXT("classPath"), Modifier->GetClass()->GetPathName());
|
|
685
|
+
M->SetStringField(TEXT("name"), Modifier->GetName());
|
|
686
|
+
Arr.Add(MakeShared<FJsonValueObject>(M));
|
|
687
|
+
}
|
|
677
688
|
}
|
|
678
689
|
|
|
679
690
|
TSharedPtr<FJsonObject> Result = MCPSuccess();
|
|
680
691
|
Result->SetStringField(TEXT("assetPath"), AssetPath);
|
|
681
692
|
Result->SetArrayField(TEXT("modifiers"), Arr);
|
|
693
|
+
Result->SetNumberField(TEXT("count"), Arr.Num());
|
|
682
694
|
return MCPResult(Result);
|
|
683
695
|
}
|
|
684
696
|
|
|
@@ -1590,19 +1590,112 @@ TSharedPtr<FJsonValue> FGameplayHandlers::ConfigureAiPerceptionSense(const TShar
|
|
|
1590
1590
|
SenseMap.Add(TEXT("Damage"), TEXT("AISenseConfig_Damage"));
|
|
1591
1591
|
SenseMap.Add(TEXT("Touch"), TEXT("AISenseConfig_Touch"));
|
|
1592
1592
|
SenseMap.Add(TEXT("Team"), TEXT("AISenseConfig_Team"));
|
|
1593
|
+
SenseMap.Add(TEXT("Prediction"), TEXT("AISenseConfig_Prediction"));
|
|
1594
|
+
SenseMap.Add(TEXT("Blueprint"), TEXT("AISenseConfig_Blueprint"));
|
|
1593
1595
|
|
|
1594
1596
|
FString* SenseClassName = SenseMap.Find(SenseType);
|
|
1595
1597
|
if (!SenseClassName)
|
|
1596
1598
|
{
|
|
1597
|
-
return MCPError(FString::Printf(TEXT("Unknown sense type: %s. Available: Sight, Hearing, Damage, Touch, Team"), *SenseType));
|
|
1599
|
+
return MCPError(FString::Printf(TEXT("Unknown sense type: %s. Available: Sight, Hearing, Damage, Touch, Team, Prediction, Blueprint"), *SenseType));
|
|
1598
1600
|
}
|
|
1599
1601
|
|
|
1602
|
+
UClass* SenseCfgClass = FindObject<UClass>(nullptr, *FString::Printf(TEXT("/Script/AIModule.%s"), **SenseClassName));
|
|
1603
|
+
if (!SenseCfgClass)
|
|
1604
|
+
{
|
|
1605
|
+
return MCPError(FString::Printf(TEXT("Sense config class not found: %s. Enable AIModule."), **SenseClassName));
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
UBlueprint* BP = Cast<UBlueprint>(UEditorAssetLibrary::LoadAsset(BPPath));
|
|
1609
|
+
if (!BP) return MCPError(FString::Printf(TEXT("Blueprint not found: %s"), *BPPath));
|
|
1610
|
+
|
|
1611
|
+
// Locate the AIPerceptionComponent template on the construction script.
|
|
1612
|
+
UClass* PercClass = FindObject<UClass>(nullptr, TEXT("/Script/AIModule.AIPerceptionComponent"));
|
|
1613
|
+
const FString CompName = OptionalString(Params, TEXT("componentName"));
|
|
1614
|
+
UObject* PercTemplate = nullptr;
|
|
1615
|
+
FString ResolvedComp;
|
|
1616
|
+
if (BP->SimpleConstructionScript)
|
|
1617
|
+
{
|
|
1618
|
+
for (USCS_Node* N : BP->SimpleConstructionScript->GetAllNodes())
|
|
1619
|
+
{
|
|
1620
|
+
if (!N || !N->ComponentTemplate) continue;
|
|
1621
|
+
const bool bIsPerc = PercClass
|
|
1622
|
+
? N->ComponentTemplate->IsA(PercClass)
|
|
1623
|
+
: N->ComponentTemplate->GetClass()->GetName().Contains(TEXT("AIPerception"));
|
|
1624
|
+
if (!bIsPerc) continue;
|
|
1625
|
+
if (!CompName.IsEmpty() && N->GetVariableName() != FName(*CompName)) continue;
|
|
1626
|
+
PercTemplate = N->ComponentTemplate;
|
|
1627
|
+
ResolvedComp = N->GetVariableName().ToString();
|
|
1628
|
+
break;
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1631
|
+
if (!PercTemplate)
|
|
1632
|
+
{
|
|
1633
|
+
return MCPError(TEXT("No AIPerceptionComponent on the blueprint - run add_perception_component first"));
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
// Add the sense config to SensesConfig via reflection (avoids linking AIModule
|
|
1637
|
+
// headers and matches what the editor's '+' button does).
|
|
1638
|
+
FArrayProperty* SensesProp = CastField<FArrayProperty>(PercTemplate->GetClass()->FindPropertyByName(TEXT("SensesConfig")));
|
|
1639
|
+
FObjectPropertyBase* ElemProp = SensesProp ? CastField<FObjectPropertyBase>(SensesProp->Inner) : nullptr;
|
|
1640
|
+
if (!SensesProp || !ElemProp)
|
|
1641
|
+
{
|
|
1642
|
+
return MCPError(TEXT("SensesConfig object-array property not found on AIPerceptionComponent (engine drift)"));
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
FScriptArrayHelper Helper(SensesProp, SensesProp->ContainerPtrToValuePtr<void>(PercTemplate));
|
|
1646
|
+
for (int32 i = 0; i < Helper.Num(); ++i)
|
|
1647
|
+
{
|
|
1648
|
+
UObject* Existing = ElemProp->GetObjectPropertyValue(Helper.GetRawPtr(i));
|
|
1649
|
+
if (Existing && Existing->GetClass() == SenseCfgClass)
|
|
1650
|
+
{
|
|
1651
|
+
auto Ex = MCPSuccess();
|
|
1652
|
+
MCPSetExisted(Ex);
|
|
1653
|
+
Ex->SetStringField(TEXT("blueprintPath"), BPPath);
|
|
1654
|
+
Ex->SetStringField(TEXT("component"), ResolvedComp);
|
|
1655
|
+
Ex->SetStringField(TEXT("senseType"), SenseType);
|
|
1656
|
+
Ex->SetStringField(TEXT("senseConfig"), SenseCfgClass->GetName());
|
|
1657
|
+
return MCPResult(Ex);
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
UObject* Cfg = NewObject<UObject>(PercTemplate, SenseCfgClass, NAME_None, RF_Transactional);
|
|
1662
|
+
const int32 NewIdx = Helper.AddValue();
|
|
1663
|
+
ElemProp->SetObjectPropertyValue(Helper.GetRawPtr(NewIdx), Cfg);
|
|
1664
|
+
|
|
1665
|
+
// Optional per-sense tuning (e.g. { "SightRadius": 1500 }).
|
|
1666
|
+
TArray<FString> AppliedProps;
|
|
1667
|
+
const TSharedPtr<FJsonObject>* PropsObj = nullptr;
|
|
1668
|
+
if (Params->TryGetObjectField(TEXT("settings"), PropsObj) && PropsObj && (*PropsObj).IsValid())
|
|
1669
|
+
{
|
|
1670
|
+
for (const auto& KV : (*PropsObj)->Values)
|
|
1671
|
+
{
|
|
1672
|
+
FProperty* P = Cfg->GetClass()->FindPropertyByName(FName(*KV.Key));
|
|
1673
|
+
if (!P) continue;
|
|
1674
|
+
FString PErr;
|
|
1675
|
+
if (MCPJsonProperty::SetJsonOnProperty(P, P->ContainerPtrToValuePtr<void>(Cfg), KV.Value, PErr))
|
|
1676
|
+
{
|
|
1677
|
+
AppliedProps.Add(KV.Key);
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
FKismetEditorUtilities::CompileBlueprint(BP);
|
|
1683
|
+
SaveAssetPackage(BP);
|
|
1684
|
+
|
|
1600
1685
|
auto Result = MCPSuccess();
|
|
1686
|
+
MCPSetCreated(Result);
|
|
1601
1687
|
Result->SetStringField(TEXT("blueprintPath"), BPPath);
|
|
1688
|
+
Result->SetStringField(TEXT("component"), ResolvedComp);
|
|
1602
1689
|
Result->SetStringField(TEXT("senseType"), SenseType);
|
|
1603
|
-
Result->SetStringField(TEXT("
|
|
1604
|
-
|
|
1690
|
+
Result->SetStringField(TEXT("senseConfig"), Cfg->GetClass()->GetName());
|
|
1691
|
+
if (AppliedProps.Num() > 0)
|
|
1692
|
+
{
|
|
1693
|
+
TArray<TSharedPtr<FJsonValue>> A;
|
|
1694
|
+
for (const FString& S : AppliedProps) A.Add(MakeShared<FJsonValueString>(S));
|
|
1695
|
+
Result->SetArrayField(TEXT("appliedProperties"), A);
|
|
1696
|
+
}
|
|
1605
1697
|
|
|
1698
|
+
// Rollback: removing the sense again isn't a first-class action; report intent.
|
|
1606
1699
|
return MCPResult(Result);
|
|
1607
1700
|
}
|
|
1608
1701
|
|
|
@@ -24,6 +24,37 @@
|
|
|
24
24
|
#include "AbilitySystemComponent.h"
|
|
25
25
|
#include "AttributeSet.h"
|
|
26
26
|
#include "Engine/DataTable.h"
|
|
27
|
+
#include "GameplayEffect.h"
|
|
28
|
+
#include "GameplayEffectTypes.h"
|
|
29
|
+
#include "ScalableFloat.h"
|
|
30
|
+
#include "GameplayTagsManager.h"
|
|
31
|
+
|
|
32
|
+
// Resolve a FGameplayAttribute by name across every loaded AttributeSet
|
|
33
|
+
// subclass. Accepts a bare property name ("Health") or a qualified
|
|
34
|
+
// "SetClassSubstring.Attribute". Returns an invalid attribute on miss.
|
|
35
|
+
static FGameplayAttribute FindGameplayAttributeByName(const FString& Name)
|
|
36
|
+
{
|
|
37
|
+
FString SetFilter, AttrName = Name;
|
|
38
|
+
if (Name.Contains(TEXT(".")))
|
|
39
|
+
{
|
|
40
|
+
Name.Split(TEXT("."), &SetFilter, &AttrName);
|
|
41
|
+
}
|
|
42
|
+
for (TObjectIterator<UClass> It; It; ++It)
|
|
43
|
+
{
|
|
44
|
+
UClass* C = *It;
|
|
45
|
+
if (C == UAttributeSet::StaticClass() || !C->IsChildOf(UAttributeSet::StaticClass())) continue;
|
|
46
|
+
if (!SetFilter.IsEmpty() && !C->GetName().Contains(SetFilter)) continue;
|
|
47
|
+
for (TFieldIterator<FProperty> P(C); P; ++P)
|
|
48
|
+
{
|
|
49
|
+
FStructProperty* SP = CastField<FStructProperty>(*P);
|
|
50
|
+
if (SP && SP->Struct == FGameplayAttributeData::StaticStruct() && SP->GetName() == AttrName)
|
|
51
|
+
{
|
|
52
|
+
return FGameplayAttribute(SP);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return FGameplayAttribute();
|
|
57
|
+
}
|
|
27
58
|
|
|
28
59
|
void FGasHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
29
60
|
{
|
|
@@ -327,38 +358,70 @@ TSharedPtr<FJsonValue> FGasHandlers::SetAbilityTags(const TSharedPtr<FJsonObject
|
|
|
327
358
|
UObject* CDO = LoadBlueprintCDO<UObject>(AbilityPath, CdoErr);
|
|
328
359
|
if (!CDO) return CdoErr;
|
|
329
360
|
|
|
330
|
-
|
|
361
|
+
// param name -> FGameplayTagContainer UPROPERTY on UGameplayAbility.
|
|
362
|
+
const TArray<TPair<FString, FString>> TagMap = {
|
|
363
|
+
{TEXT("ability_tags"), TEXT("AbilityTags")},
|
|
364
|
+
{TEXT("cancel_abilities_with_tag"), TEXT("CancelAbilitiesWithTag")},
|
|
365
|
+
{TEXT("block_abilities_with_tag"), TEXT("BlockAbilitiesWithTag")},
|
|
366
|
+
{TEXT("activation_required_tags"), TEXT("ActivationRequiredTags")},
|
|
367
|
+
{TEXT("activation_blocked_tags"), TEXT("ActivationBlockedTags")},
|
|
368
|
+
};
|
|
331
369
|
|
|
332
|
-
|
|
333
|
-
TArray<FString>
|
|
334
|
-
|
|
370
|
+
TSharedPtr<FJsonObject> Applied = MakeShared<FJsonObject>();
|
|
371
|
+
TArray<FString> Unsupported;
|
|
372
|
+
bool bAnyApplied = false;
|
|
335
373
|
|
|
336
|
-
for (
|
|
374
|
+
for (const TPair<FString, FString>& Entry : TagMap)
|
|
337
375
|
{
|
|
338
|
-
const TArray<TSharedPtr<FJsonValue>>* TagArray;
|
|
339
|
-
if (Params->TryGetArrayField(*
|
|
376
|
+
const TArray<TSharedPtr<FJsonValue>>* TagArray = nullptr;
|
|
377
|
+
if (!Params->TryGetArrayField(*Entry.Key, TagArray) || !TagArray) continue;
|
|
378
|
+
|
|
379
|
+
FStructProperty* Prop = CastField<FStructProperty>(CDO->GetClass()->FindPropertyByName(*Entry.Value));
|
|
380
|
+
if (!Prop || Prop->Struct != FGameplayTagContainer::StaticStruct())
|
|
381
|
+
{
|
|
382
|
+
// Engine-version drift (e.g. AbilityTags deprecated): report, don't fake.
|
|
383
|
+
Unsupported.Add(Entry.Value);
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
FGameplayTagContainer* Container = Prop->ContainerPtrToValuePtr<FGameplayTagContainer>(CDO);
|
|
388
|
+
Container->Reset();
|
|
389
|
+
TArray<TSharedPtr<FJsonValue>> Wrote;
|
|
390
|
+
for (const TSharedPtr<FJsonValue>& TagVal : *TagArray)
|
|
340
391
|
{
|
|
341
|
-
|
|
342
|
-
if (
|
|
392
|
+
FString TagStr;
|
|
393
|
+
if (!TagVal.IsValid() || !TagVal->TryGetString(TagStr)) continue;
|
|
394
|
+
const FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName(*TagStr), /*ErrorIfNotFound*/ false);
|
|
395
|
+
if (Tag.IsValid())
|
|
343
396
|
{
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
AddedTags.Add(MakeShared<FJsonValueString>(TagStr));
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
TagsSet->SetArrayField(ParamNames[i], AddedTags);
|
|
397
|
+
Container->AddTag(Tag);
|
|
398
|
+
Wrote.Add(MakeShared<FJsonValueString>(TagStr));
|
|
399
|
+
}
|
|
400
|
+
else
|
|
401
|
+
{
|
|
402
|
+
Wrote.Add(MakeShared<FJsonValueString>(TagStr + TEXT(" (unregistered tag - skipped)")));
|
|
354
403
|
}
|
|
355
404
|
}
|
|
405
|
+
Applied->SetArrayField(Entry.Key, Wrote);
|
|
406
|
+
bAnyApplied = true;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
if (bAnyApplied)
|
|
410
|
+
{
|
|
411
|
+
CDO->MarkPackageDirty();
|
|
412
|
+
SaveAssetPackage(CDO);
|
|
356
413
|
}
|
|
357
414
|
|
|
358
415
|
auto Result = MCPSuccess();
|
|
416
|
+
MCPSetUpdated(Result);
|
|
359
417
|
Result->SetStringField(TEXT("abilityPath"), AbilityPath);
|
|
360
|
-
Result->SetObjectField(TEXT("
|
|
361
|
-
|
|
418
|
+
Result->SetObjectField(TEXT("applied"), Applied);
|
|
419
|
+
if (Unsupported.Num() > 0)
|
|
420
|
+
{
|
|
421
|
+
TArray<TSharedPtr<FJsonValue>> U;
|
|
422
|
+
for (const FString& S : Unsupported) U.Add(MakeShared<FJsonValueString>(S));
|
|
423
|
+
Result->SetArrayField(TEXT("unsupportedProperties"), U);
|
|
424
|
+
}
|
|
362
425
|
return MCPResult(Result);
|
|
363
426
|
}
|
|
364
427
|
|
|
@@ -370,15 +433,59 @@ TSharedPtr<FJsonValue> FGasHandlers::SetEffectModifier(const TSharedPtr<FJsonObj
|
|
|
370
433
|
FString Attribute;
|
|
371
434
|
if (auto Err = RequireString(Params, TEXT("attribute"), Attribute)) return Err;
|
|
372
435
|
|
|
373
|
-
FString Operation = OptionalString(Params, TEXT("operation"), TEXT("Additive"));
|
|
374
|
-
double Magnitude = OptionalNumber(Params, TEXT("magnitude"), 0.0);
|
|
436
|
+
const FString Operation = OptionalString(Params, TEXT("operation"), TEXT("Additive"));
|
|
437
|
+
const double Magnitude = OptionalNumber(Params, TEXT("magnitude"), 0.0);
|
|
438
|
+
|
|
439
|
+
TSharedPtr<FJsonValue> CdoErr;
|
|
440
|
+
UGameplayEffect* GE = LoadBlueprintCDO<UGameplayEffect>(EffectPath, CdoErr);
|
|
441
|
+
if (!GE) return CdoErr;
|
|
442
|
+
|
|
443
|
+
const FGameplayAttribute GAttr = FindGameplayAttributeByName(Attribute);
|
|
444
|
+
if (!GAttr.IsValid())
|
|
445
|
+
{
|
|
446
|
+
return MCPError(FString::Printf(
|
|
447
|
+
TEXT("Attribute not found: %s. Use 'SetName.Attribute' (or a unique attribute name); the AttributeSet must be compiled/loaded."), *Attribute));
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
const FString Op = Operation.ToLower();
|
|
451
|
+
EGameplayModOp::Type ModOp;
|
|
452
|
+
if (Op == TEXT("additive") || Op == TEXT("add")) ModOp = EGameplayModOp::Additive;
|
|
453
|
+
else if (Op == TEXT("multiplicative") || Op == TEXT("multiply") || Op == TEXT("multiplicitive")) ModOp = EGameplayModOp::Multiplicitive;
|
|
454
|
+
else if (Op == TEXT("division") || Op == TEXT("divide")) ModOp = EGameplayModOp::Division;
|
|
455
|
+
else if (Op == TEXT("override")) ModOp = EGameplayModOp::Override;
|
|
456
|
+
else return MCPError(FString::Printf(TEXT("Unknown operation '%s' (Additive|Multiplicative|Division|Override)"), *Operation));
|
|
457
|
+
|
|
458
|
+
// Update an existing modifier for the same attribute+op, else append one.
|
|
459
|
+
bool bUpdated = false;
|
|
460
|
+
for (FGameplayModifierInfo& M : GE->Modifiers)
|
|
461
|
+
{
|
|
462
|
+
if (M.Attribute == GAttr && M.ModifierOp == ModOp)
|
|
463
|
+
{
|
|
464
|
+
M.ModifierMagnitude = FGameplayEffectModifierMagnitude(FScalableFloat(static_cast<float>(Magnitude)));
|
|
465
|
+
bUpdated = true;
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if (!bUpdated)
|
|
470
|
+
{
|
|
471
|
+
FGameplayModifierInfo ModInfo;
|
|
472
|
+
ModInfo.Attribute = GAttr;
|
|
473
|
+
ModInfo.ModifierOp = ModOp;
|
|
474
|
+
ModInfo.ModifierMagnitude = FGameplayEffectModifierMagnitude(FScalableFloat(static_cast<float>(Magnitude)));
|
|
475
|
+
GE->Modifiers.Add(ModInfo);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
GE->MarkPackageDirty();
|
|
479
|
+
SaveAssetPackage(GE);
|
|
375
480
|
|
|
376
481
|
auto Result = MCPSuccess();
|
|
482
|
+
MCPSetUpdated(Result);
|
|
377
483
|
Result->SetStringField(TEXT("effectPath"), EffectPath);
|
|
378
|
-
Result->SetStringField(TEXT("attribute"),
|
|
484
|
+
Result->SetStringField(TEXT("attribute"), GAttr.GetName());
|
|
379
485
|
Result->SetStringField(TEXT("operation"), Operation);
|
|
380
486
|
Result->SetNumberField(TEXT("magnitude"), Magnitude);
|
|
381
|
-
Result->
|
|
487
|
+
Result->SetBoolField(TEXT("replacedExisting"), bUpdated);
|
|
488
|
+
Result->SetNumberField(TEXT("modifierCount"), GE->Modifiers.Num());
|
|
382
489
|
return MCPResult(Result);
|
|
383
490
|
}
|
|
384
491
|
|
|
@@ -589,12 +589,13 @@ TSharedPtr<FJsonValue> FNiagaraHandlers::SetEmitterProperty(const TSharedPtr<FJs
|
|
|
589
589
|
bool bSet = false;
|
|
590
590
|
if (PropName.Equals(TEXT("enabled"), ESearchCase::IgnoreCase))
|
|
591
591
|
{
|
|
592
|
-
|
|
593
|
-
// Use mutable access pattern
|
|
592
|
+
const bool bEnabled = Value.ToBool();
|
|
594
593
|
System->Modify();
|
|
595
|
-
//
|
|
594
|
+
// GetEmitterHandles() is const; the editor mutates via a non-const handle.
|
|
595
|
+
FNiagaraEmitterHandle& MutableHandle = const_cast<FNiagaraEmitterHandle&>(Handles[TargetIdx]);
|
|
596
|
+
MutableHandle.SetIsEnabled(bEnabled, *System, /*bRecompileIfChanged*/ true);
|
|
596
597
|
bSet = true;
|
|
597
|
-
Result->
|
|
598
|
+
Result->SetBoolField(TEXT("enabled"), bEnabled);
|
|
598
599
|
}
|
|
599
600
|
|
|
600
601
|
// Try reflection on the EmitterData's properties
|