ue-mcp 1.2.4 → 1.3.0
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 +4 -3
- package/dist/action-class.js +56 -3
- package/dist/action-class.js.map +1 -1
- package/dist/bridge-timeouts.d.ts +64 -0
- package/dist/bridge-timeouts.js +118 -0
- package/dist/bridge-timeouts.js.map +1 -0
- package/dist/bridge.js +10 -2
- package/dist/bridge.js.map +1 -1
- package/dist/editor-control.d.ts +72 -5
- package/dist/editor-control.js +164 -140
- package/dist/editor-control.js.map +1 -1
- package/dist/editor-target.d.ts +55 -1
- package/dist/editor-target.js +107 -10
- package/dist/editor-target.js.map +1 -1
- package/dist/engine-observer.d.ts +59 -5
- package/dist/engine-observer.js +249 -29
- package/dist/engine-observer.js.map +1 -1
- package/dist/engine-root.d.ts +91 -0
- package/dist/engine-root.js +448 -0
- package/dist/engine-root.js.map +1 -0
- package/dist/epic-enrich.js +16 -1
- package/dist/epic-enrich.js.map +1 -1
- package/dist/feedback-cli.js +4 -0
- package/dist/feedback-cli.js.map +1 -1
- package/dist/feedback-deferred.d.ts +9 -0
- package/dist/feedback-deferred.js +2 -0
- package/dist/feedback-deferred.js.map +1 -1
- package/dist/feedback-fallback.d.ts +99 -0
- package/dist/feedback-fallback.js +173 -0
- package/dist/feedback-fallback.js.map +1 -0
- package/dist/flow/write-methods.js +20 -0
- package/dist/flow/write-methods.js.map +1 -1
- package/dist/lean-context.js +8 -3
- package/dist/lean-context.js.map +1 -1
- package/dist/locking.js +11 -2
- package/dist/locking.js.map +1 -1
- package/dist/project.d.ts +11 -0
- package/dist/project.js +23 -2
- package/dist/project.js.map +1 -1
- package/dist/python-gate.d.ts +95 -0
- package/dist/python-gate.js +175 -0
- package/dist/python-gate.js.map +1 -0
- package/dist/tool-counts.json +16 -16
- package/dist/tools/animation.js +288 -24
- package/dist/tools/animation.js.map +1 -1
- package/dist/tools/asset.js +79 -14
- package/dist/tools/asset.js.map +1 -1
- package/dist/tools/audio.js +59 -5
- package/dist/tools/audio.js.map +1 -1
- package/dist/tools/blueprint.js +29 -12
- package/dist/tools/blueprint.js.map +1 -1
- package/dist/tools/chooser.js +4 -1
- package/dist/tools/chooser.js.map +1 -1
- package/dist/tools/editor.js +81 -43
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/feedback.js +214 -48
- package/dist/tools/feedback.js.map +1 -1
- package/dist/tools/foliage.js +27 -1
- package/dist/tools/foliage.js.map +1 -1
- package/dist/tools/gameplay.js +38 -11
- package/dist/tools/gameplay.js.map +1 -1
- package/dist/tools/gas.js +17 -5
- package/dist/tools/gas.js.map +1 -1
- package/dist/tools/landscape.js +22 -7
- package/dist/tools/landscape.js.map +1 -1
- package/dist/tools/level.js +322 -51
- package/dist/tools/level.js.map +1 -1
- package/dist/tools/material.js +10 -4
- package/dist/tools/material.js.map +1 -1
- package/dist/tools/niagara.js +3 -2
- package/dist/tools/niagara.js.map +1 -1
- package/dist/tools/pcg.js +6 -5
- package/dist/tools/pcg.js.map +1 -1
- package/dist/tools/project.js +47 -20
- package/dist/tools/project.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.js +46 -3
- package/dist/types.js.map +1 -1
- package/dist/ue-mcp.default.yml +493 -125
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/NATIVE_RUNTIME_VISIBILITY.md +53 -0
- package/plugin/ue_mcp_bridge/NATIVE_STATIC_MESH_USAGE_PROGRESS.md +115 -0
- package/plugin/ue_mcp_bridge/README_MassHandlers.md +97 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.cpp +21 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.h +9 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerJsonProperty.h +395 -69
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.cpp +79 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.h +25 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRig.cpp +3 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRigSequencer.cpp +3061 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRetargeterAuthoring.cpp +961 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRigAuthoring.cpp +900 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Pose.cpp +769 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp +44 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_SkeletalLive.cpp +217 -11
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_StateMachine.cpp +551 -24
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Validation.cpp +735 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +352 -73
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.h +8 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkProperties.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.cpp +503 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.h +21 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkUpsert.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Enum.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.cpp +902 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.h +33 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Import.cpp +478 -134
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Mesh.cpp +5 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.cpp +933 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.h +35 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Redirectors.cpp +478 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_RenderTarget.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Sockets.cpp +4 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Struct.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Subobject.cpp +319 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_SoundCue.cpp +3 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +482 -35
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +10 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.cpp +502 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.h +43 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Functions.cpp +89 -7
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Graph.cpp +17 -51
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Internal.h +107 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Properties.cpp +10 -10
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Search.cpp +648 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.cpp +5 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.cpp +252 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.h +10 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +252 -41
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +4 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Build.cpp +250 -27
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIE.cpp +303 -125
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIERuntime.cpp +73 -50
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_RuntimeVisibility.cpp +757 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.cpp +11 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.h +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Batch.cpp +419 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +39 -161
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +66 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTAuthoring.cpp +1323 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BehaviorTree.cpp +1211 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +2 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +60 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +363 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/HandlerEditorState.h +84 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.cpp +1288 -36
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.h +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers_Sculpt.cpp +41 -16
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.cpp +959 -213
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.h +66 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_BatchWrite.cpp +1571 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Convert.cpp +316 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Inspection.cpp +280 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection.cpp +666 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection_Internal.h +63 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Lights.cpp +43 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_MultiLevel.cpp +13 -47
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_PostProcess.cpp +527 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Query.cpp +1169 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Refresh.cpp +723 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Save.cpp +325 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Spatial.cpp +360 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Trace.cpp +178 -58
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Transient.cpp +337 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Volumes.cpp +25 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartition.cpp +10 -9
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartitionSettings.cpp +686 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.cpp +467 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.h +22 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.cpp +452 -175
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.h +5 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Build.cpp +597 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +17 -15
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.cpp +38 -168
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.cpp +39 -30
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +392 -78
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.h +2 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers_Internal.h +83 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.cpp +200 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.h +15 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SplineHandlers.cpp +19 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.cpp +31 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.cpp +307 -69
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.h +84 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Extraction.cpp +8 -41
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Properties.cpp +33 -52
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/ActorSelectorTests.cpp +344 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationControlRigTimelineTests.cpp +60 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationPoseTests.cpp +115 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetBulkReadTests.cpp +177 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetDeleteGuardTests.cpp +276 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPathResolutionTests.cpp +243 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPropertyPersistTests.cpp +213 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetSubobjectTests.cpp +235 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AutomationRunnerTests.cpp +72 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeAuthoringTests.cpp +526 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeNodeTests.cpp +334 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BlueprintHandlerSurfaceTests.cpp +362 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BridgeProtocolTests.cpp +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/CollisionQueryTests.cpp +288 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/DataTableRowWriteTests.cpp +453 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/EditorFunctionCallTests.cpp +223 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/FoliageBatchTests.cpp +147 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GameThreadGateTests.cpp +82 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GasLiveAttributeTests.cpp +183 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LandscapeSampleTests.cpp +119 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelBatchWriteTests.cpp +176 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelComponentTreeInstanceCountTests.cpp +189 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelConvertBrushesTests.cpp +100 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelInstanceProjectionTests.cpp +265 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelPostProcessOverrideTests.cpp +258 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelQueryComponentsTests.cpp +195 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelRefreshTests.cpp +142 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelSaveReportTests.cpp +125 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelScriptHandlersTests.cpp +42 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelStaticMeshUsageTests.cpp +412 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTraceWorldScopeTests.cpp +133 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTransientActorTests.cpp +205 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelWorldPartitionSettingsTests.cpp +168 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTestTypes.h +51 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTests.cpp +379 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MaterialBuildTests.cpp +238 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshBooleanTests.cpp +170 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshGeometryTests.cpp +116 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageSaveExtensionTests.cpp +161 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageWriteGuardTests.cpp +253 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/RuntimeVisibilityTests.cpp +143 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerHandlerTests.cpp +660 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerScrubTests.cpp +50 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SkeletonDiffTests.cpp +685 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/WidgetBlueprintResolveTests.cpp +145 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +80 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerFunctionCall.h +509 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerQuery.h +407 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerUtils.h +1008 -77
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +87 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/MCPEngineStatus.cpp +152 -14
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/Tests/MCPEngineStatusTests.cpp +65 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Public/MCPEngineStatus.h +32 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/UE_MCP_BridgeStatus.Build.cs +2 -0
- package/skills/ue-mcp-animation/SKILL.md +154 -0
- package/skills/ue-mcp-blueprint/SKILL.md +71 -0
|
@@ -152,6 +152,22 @@ void FGameplayHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
152
152
|
// New handlers
|
|
153
153
|
Registry.RegisterHandler(TEXT("get_behavior_tree_info"), &GetBehaviorTreeInfo);
|
|
154
154
|
Registry.RegisterHandler(TEXT("read_behavior_tree_graph"), &ReadBehaviorTreeGraph);
|
|
155
|
+
// #919: pick BT nodes and read only their own UPROPERTY values.
|
|
156
|
+
Registry.RegisterHandler(TEXT("read_bt_node_properties"), &ReadBTNodeProperties);
|
|
157
|
+
// #940: inventory BTTask nodes, FilterClass included.
|
|
158
|
+
Registry.RegisterHandler(TEXT("list_bt_tasks"), &ListBTTasks);
|
|
159
|
+
// #919/#940: one scoped write onto an owned BT node subobject. Registered
|
|
160
|
+
// under both names because a caller reaching for the task-specific one
|
|
161
|
+
// should not have to know it is the general node setter.
|
|
162
|
+
Registry.RegisterHandler(TEXT("set_bt_node_property"), &SetBTNodeProperty);
|
|
163
|
+
Registry.RegisterHandler(TEXT("set_bt_task_property"), &SetBTNodeProperty);
|
|
164
|
+
// #889/#947: author the BT editor graph and recompile it into the runnable
|
|
165
|
+
// tree. Reading and writing node properties only reaches nodes that already
|
|
166
|
+
// exist; these are what put nodes there, reconnect them and reorder them.
|
|
167
|
+
Registry.RegisterHandler(TEXT("list_bt_graph_nodes"), &ListBTGraphNodes);
|
|
168
|
+
Registry.RegisterHandler(TEXT("add_bt_node"), &AddBTNode);
|
|
169
|
+
Registry.RegisterHandler(TEXT("move_bt_node"), &MoveBTNode);
|
|
170
|
+
Registry.RegisterHandler(TEXT("remove_bt_node"), &RemoveBTNode);
|
|
155
171
|
Registry.RegisterHandler(TEXT("add_perception_component"), &AddPerceptionComponent);
|
|
156
172
|
Registry.RegisterHandler(TEXT("configure_ai_perception_sense"), &ConfigureAiPerceptionSense);
|
|
157
173
|
Registry.RegisterHandler(TEXT("add_state_tree_component"), &AddStateTreeComponent);
|
|
@@ -877,13 +893,18 @@ TSharedPtr<FJsonValue> FGameplayHandlers::CreateStateTree(const TSharedPtr<FJson
|
|
|
877
893
|
TSharedPtr<FJsonValue> FGameplayHandlers::GetStateTreeRuntime(const TSharedPtr<FJsonObject>& Params)
|
|
878
894
|
{
|
|
879
895
|
FString ActorLabel;
|
|
880
|
-
if (auto Err =
|
|
896
|
+
if (auto Err = RequireStringAlt(Params, TEXT("actorLabel"), TEXT("actorPath"), ActorLabel)) return Err;
|
|
881
897
|
const FString WorldScope = OptionalString(Params, TEXT("world"), TEXT("pie"));
|
|
882
898
|
UWorld* World = ResolveWorldFromParams(Params, *WorldScope);
|
|
883
899
|
if (!World) return MCPError(FString::Printf(TEXT("World not available for scope '%s'"), *WorldScope));
|
|
884
900
|
|
|
885
|
-
|
|
886
|
-
|
|
901
|
+
FMCPActorSelector ActorSel;
|
|
902
|
+
ActorSel.Match = EMCPActorMatch::LabelNameOrPath;
|
|
903
|
+
ActorSel.WorldLabel = World->IsGameWorld() ? TEXT("PIE") : TEXT("editor");
|
|
904
|
+
TSharedPtr<FJsonValue> ActorErr;
|
|
905
|
+
AActor* Actor = MCPResolveActor(World, Params, ActorErr, ActorSel);
|
|
906
|
+
if (!Actor) return ActorErr;
|
|
907
|
+
ActorLabel = Actor->GetActorLabel();
|
|
887
908
|
|
|
888
909
|
// Find a component that carries StateTree runtime data (by having an
|
|
889
910
|
// InstanceData property of type FStateTreeInstanceData + a StateTreeRef).
|
|
@@ -1232,7 +1253,18 @@ TSharedPtr<FJsonValue> FGameplayHandlers::FindNavPath(const TSharedPtr<FJsonObje
|
|
|
1232
1253
|
// matching navigation filter / agent.
|
|
1233
1254
|
AActor* Context = nullptr;
|
|
1234
1255
|
FString ContextLabel = OptionalString(Params, TEXT("pathfindingContext"));
|
|
1235
|
-
if (!ContextLabel.IsEmpty()
|
|
1256
|
+
if (!ContextLabel.IsEmpty() || Params->HasField(TEXT("pathfindingContextPath")))
|
|
1257
|
+
{
|
|
1258
|
+
// #983: the context actor decides which navigation filter and agent
|
|
1259
|
+
// answer the query, so picking the wrong namesake changes the path.
|
|
1260
|
+
FMCPActorSelector ContextSel;
|
|
1261
|
+
ContextSel.LabelKey = TEXT("pathfindingContext");
|
|
1262
|
+
ContextSel.PathKey = TEXT("pathfindingContextPath");
|
|
1263
|
+
ContextSel.Match = EMCPActorMatch::LabelNameOrPath;
|
|
1264
|
+
TSharedPtr<FJsonValue> ContextErr;
|
|
1265
|
+
Context = MCPResolveActor(World, Params, ContextErr, ContextSel);
|
|
1266
|
+
if (!Context && MCPIsAmbiguousActorError(ContextErr)) return ContextErr;
|
|
1267
|
+
}
|
|
1236
1268
|
|
|
1237
1269
|
UNavigationPath* Path = NavSys->FindPathToLocationSynchronously(World, Start, End, Context);
|
|
1238
1270
|
auto Result = MCPSuccess();
|
|
@@ -1815,72 +1847,9 @@ TSharedPtr<FJsonValue> FGameplayHandlers::SetBehaviorTreeBlackboard(const TShare
|
|
|
1815
1847
|
return MCPResult(Result);
|
|
1816
1848
|
}
|
|
1817
1849
|
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
if (auto Err = RequireStringAlt(Params, TEXT("assetPath"), TEXT("path"), AssetPath)) return Err;
|
|
1822
|
-
|
|
1823
|
-
UObject* Asset = UEditorAssetLibrary::LoadAsset(AssetPath);
|
|
1824
|
-
if (!Asset)
|
|
1825
|
-
{
|
|
1826
|
-
return MCPError(FString::Printf(TEXT("BehaviorTree not found: %s"), *AssetPath));
|
|
1827
|
-
}
|
|
1828
|
-
|
|
1829
|
-
auto Result = MCPSuccess();
|
|
1830
|
-
Result->SetStringField(TEXT("path"), AssetPath);
|
|
1831
|
-
Result->SetStringField(TEXT("name"), Asset->GetName());
|
|
1832
|
-
Result->SetStringField(TEXT("className"), Asset->GetClass()->GetName());
|
|
1833
|
-
|
|
1834
|
-
// Try to read blackboard asset
|
|
1835
|
-
FProperty* BBProp = Asset->GetClass()->FindPropertyByName(TEXT("BlackboardAsset"));
|
|
1836
|
-
if (BBProp)
|
|
1837
|
-
{
|
|
1838
|
-
FObjectProperty* ObjProp = CastField<FObjectProperty>(BBProp);
|
|
1839
|
-
if (ObjProp)
|
|
1840
|
-
{
|
|
1841
|
-
UObject* BB = ObjProp->GetObjectPropertyValue(BBProp->ContainerPtrToValuePtr<void>(Asset));
|
|
1842
|
-
if (BB)
|
|
1843
|
-
{
|
|
1844
|
-
Result->SetStringField(TEXT("blackboardAsset"), BB->GetPathName());
|
|
1845
|
-
|
|
1846
|
-
// Try to read blackboard keys
|
|
1847
|
-
TArray<TSharedPtr<FJsonValue>> KeysArray;
|
|
1848
|
-
FProperty* KeysProp = BB->GetClass()->FindPropertyByName(TEXT("Keys"));
|
|
1849
|
-
if (KeysProp)
|
|
1850
|
-
{
|
|
1851
|
-
FArrayProperty* ArrProp = CastField<FArrayProperty>(KeysProp);
|
|
1852
|
-
if (ArrProp)
|
|
1853
|
-
{
|
|
1854
|
-
FScriptArrayHelper ArrayHelper(ArrProp, ArrProp->ContainerPtrToValuePtr<void>(BB));
|
|
1855
|
-
for (int32 i = 0; i < ArrayHelper.Num(); i++)
|
|
1856
|
-
{
|
|
1857
|
-
TSharedPtr<FJsonObject> KeyObj = MakeShared<FJsonObject>();
|
|
1858
|
-
UObject* KeyEntry = *reinterpret_cast<UObject**>(ArrayHelper.GetRawPtr(i));
|
|
1859
|
-
if (KeyEntry)
|
|
1860
|
-
{
|
|
1861
|
-
FProperty* NameProp = KeyEntry->GetClass()->FindPropertyByName(TEXT("EntryName"));
|
|
1862
|
-
if (NameProp)
|
|
1863
|
-
{
|
|
1864
|
-
FString EntryName;
|
|
1865
|
-
NameProp->ExportTextItem_Direct(EntryName, NameProp->ContainerPtrToValuePtr<void>(KeyEntry), nullptr, KeyEntry, PPF_None);
|
|
1866
|
-
KeyObj->SetStringField(TEXT("name"), EntryName);
|
|
1867
|
-
}
|
|
1868
|
-
else
|
|
1869
|
-
{
|
|
1870
|
-
KeyObj->SetStringField(TEXT("name"), KeyEntry->GetName());
|
|
1871
|
-
}
|
|
1872
|
-
}
|
|
1873
|
-
KeysArray.Add(MakeShared<FJsonValueObject>(KeyObj));
|
|
1874
|
-
}
|
|
1875
|
-
}
|
|
1876
|
-
}
|
|
1877
|
-
Result->SetArrayField(TEXT("blackboardKeys"), KeysArray);
|
|
1878
|
-
}
|
|
1879
|
-
}
|
|
1880
|
-
}
|
|
1881
|
-
|
|
1882
|
-
return MCPResult(Result);
|
|
1883
|
-
}
|
|
1850
|
+
// get_behavior_tree_info and read_behavior_tree_graph moved to
|
|
1851
|
+
// GameplayHandlers_BehaviorTree.cpp, alongside the node-level BT reads and
|
|
1852
|
+
// writes they now share their walker and property reflection with.
|
|
1884
1853
|
|
|
1885
1854
|
TSharedPtr<FJsonValue> FGameplayHandlers::AddPerceptionComponent(const TSharedPtr<FJsonObject>& Params)
|
|
1886
1855
|
{
|
|
@@ -2256,97 +2225,6 @@ TSharedPtr<FJsonValue> FGameplayHandlers::AddSmartObjectComponent(const TSharedP
|
|
|
2256
2225
|
|
|
2257
2226
|
return MCPResult(Result);
|
|
2258
2227
|
}
|
|
2259
|
-
TSharedPtr<FJsonValue> FGameplayHandlers::ReadBehaviorTreeGraph(const TSharedPtr<FJsonObject>& Params)
|
|
2260
|
-
{
|
|
2261
|
-
FString AssetPath;
|
|
2262
|
-
if (auto Err = RequireStringAlt(Params, TEXT("assetPath"), TEXT("path"), AssetPath)) return Err;
|
|
2263
|
-
|
|
2264
|
-
UBehaviorTree* BT = LoadObject<UBehaviorTree>(nullptr, *AssetPath);
|
|
2265
|
-
if (!BT) return MCPError(FString::Printf(TEXT("BehaviorTree not found: %s"), *AssetPath));
|
|
2266
|
-
|
|
2267
|
-
TFunction<TSharedPtr<FJsonObject>(UBTNode*)> Walk;
|
|
2268
|
-
Walk = [&](UBTNode* Node) -> TSharedPtr<FJsonObject>
|
|
2269
|
-
{
|
|
2270
|
-
if (!Node) return nullptr;
|
|
2271
|
-
TSharedPtr<FJsonObject> NObj = MakeShared<FJsonObject>();
|
|
2272
|
-
NObj->SetStringField(TEXT("class"), Node->GetClass()->GetName());
|
|
2273
|
-
NObj->SetStringField(TEXT("name"), Node->GetName());
|
|
2274
|
-
FProperty* NameProp = Node->GetClass()->FindPropertyByName(TEXT("NodeName"));
|
|
2275
|
-
if (NameProp)
|
|
2276
|
-
{
|
|
2277
|
-
FString NodeDisplay;
|
|
2278
|
-
NameProp->ExportText_Direct(NodeDisplay, NameProp->ContainerPtrToValuePtr<void>(Node), nullptr, Node, PPF_None);
|
|
2279
|
-
NObj->SetStringField(TEXT("nodeName"), NodeDisplay);
|
|
2280
|
-
}
|
|
2281
|
-
|
|
2282
|
-
if (UBTCompositeNode* Comp = Cast<UBTCompositeNode>(Node))
|
|
2283
|
-
{
|
|
2284
|
-
NObj->SetStringField(TEXT("kind"), TEXT("composite"));
|
|
2285
|
-
|
|
2286
|
-
TArray<TSharedPtr<FJsonValue>> ChildrenArr;
|
|
2287
|
-
for (const FBTCompositeChild& Child : Comp->Children)
|
|
2288
|
-
{
|
|
2289
|
-
TSharedPtr<FJsonObject> ChildEntry = MakeShared<FJsonObject>();
|
|
2290
|
-
if (Child.ChildComposite)
|
|
2291
|
-
ChildEntry->SetObjectField(TEXT("child"), Walk(Child.ChildComposite));
|
|
2292
|
-
else if (Child.ChildTask)
|
|
2293
|
-
ChildEntry->SetObjectField(TEXT("child"), Walk(Child.ChildTask));
|
|
2294
|
-
|
|
2295
|
-
TArray<TSharedPtr<FJsonValue>> Decs;
|
|
2296
|
-
for (UBTDecorator* D : Child.Decorators)
|
|
2297
|
-
{
|
|
2298
|
-
if (!D) continue;
|
|
2299
|
-
TSharedPtr<FJsonObject> DObj = MakeShared<FJsonObject>();
|
|
2300
|
-
DObj->SetStringField(TEXT("class"), D->GetClass()->GetName());
|
|
2301
|
-
DObj->SetStringField(TEXT("name"), D->GetName());
|
|
2302
|
-
Decs.Add(MakeShared<FJsonValueObject>(DObj));
|
|
2303
|
-
}
|
|
2304
|
-
ChildEntry->SetArrayField(TEXT("decorators"), Decs);
|
|
2305
|
-
ChildrenArr.Add(MakeShared<FJsonValueObject>(ChildEntry));
|
|
2306
|
-
}
|
|
2307
|
-
NObj->SetArrayField(TEXT("children"), ChildrenArr);
|
|
2308
|
-
|
|
2309
|
-
TArray<TSharedPtr<FJsonValue>> Services;
|
|
2310
|
-
for (UBTService* S : Comp->Services)
|
|
2311
|
-
{
|
|
2312
|
-
if (!S) continue;
|
|
2313
|
-
TSharedPtr<FJsonObject> SObj = MakeShared<FJsonObject>();
|
|
2314
|
-
SObj->SetStringField(TEXT("class"), S->GetClass()->GetName());
|
|
2315
|
-
SObj->SetStringField(TEXT("name"), S->GetName());
|
|
2316
|
-
Services.Add(MakeShared<FJsonValueObject>(SObj));
|
|
2317
|
-
}
|
|
2318
|
-
NObj->SetArrayField(TEXT("services"), Services);
|
|
2319
|
-
}
|
|
2320
|
-
else if (Cast<UBTTaskNode>(Node))
|
|
2321
|
-
{
|
|
2322
|
-
NObj->SetStringField(TEXT("kind"), TEXT("task"));
|
|
2323
|
-
}
|
|
2324
|
-
return NObj;
|
|
2325
|
-
};
|
|
2326
|
-
|
|
2327
|
-
auto Result = MCPSuccess();
|
|
2328
|
-
Result->SetStringField(TEXT("assetPath"), AssetPath);
|
|
2329
|
-
Result->SetStringField(TEXT("name"), BT->GetName());
|
|
2330
|
-
if (BT->BlackboardAsset)
|
|
2331
|
-
{
|
|
2332
|
-
Result->SetStringField(TEXT("blackboardAsset"), BT->BlackboardAsset->GetPathName());
|
|
2333
|
-
}
|
|
2334
|
-
if (BT->RootNode)
|
|
2335
|
-
{
|
|
2336
|
-
Result->SetObjectField(TEXT("root"), Walk(BT->RootNode));
|
|
2337
|
-
}
|
|
2338
|
-
TArray<TSharedPtr<FJsonValue>> RootDecs;
|
|
2339
|
-
for (UBTDecorator* D : BT->RootDecorators)
|
|
2340
|
-
{
|
|
2341
|
-
if (!D) continue;
|
|
2342
|
-
TSharedPtr<FJsonObject> DObj = MakeShared<FJsonObject>();
|
|
2343
|
-
DObj->SetStringField(TEXT("class"), D->GetClass()->GetName());
|
|
2344
|
-
DObj->SetStringField(TEXT("name"), D->GetName());
|
|
2345
|
-
RootDecs.Add(MakeShared<FJsonValueObject>(DObj));
|
|
2346
|
-
}
|
|
2347
|
-
Result->SetArrayField(TEXT("rootDecorators"), RootDecs);
|
|
2348
|
-
return MCPResult(Result);
|
|
2349
|
-
}
|
|
2350
2228
|
|
|
2351
2229
|
// ─────────────────────────────────────────────────────────────
|
|
2352
2230
|
// #163 get_navmesh_details - Detailed ARecastNavMesh configuration
|
|
@@ -4,11 +4,55 @@
|
|
|
4
4
|
#include "Dom/JsonValue.h"
|
|
5
5
|
#include "Dom/JsonObject.h"
|
|
6
6
|
|
|
7
|
+
class UBehaviorTree;
|
|
8
|
+
class UBlackboardData;
|
|
9
|
+
class UBTNode;
|
|
10
|
+
|
|
7
11
|
class FGameplayHandlers
|
|
8
12
|
{
|
|
9
13
|
public:
|
|
10
14
|
static void RegisterHandlers(class FMCPHandlerRegistry& Registry);
|
|
11
15
|
|
|
16
|
+
// BehaviorTree introspection primitives, shared by the BT handlers and
|
|
17
|
+
// exercised directly by the automation tests in Private/Tests, which build
|
|
18
|
+
// nodes in memory rather than round-tripping an asset through disk.
|
|
19
|
+
// Definitions live in GameplayHandlers_BehaviorTree.cpp.
|
|
20
|
+
|
|
21
|
+
/** Every key on a Blackboard asset: name, type, sync flag, description. */
|
|
22
|
+
static TArray<TSharedPtr<FJsonValue>> DescribeBlackboardKeys(const UBlackboardData* Blackboard);
|
|
23
|
+
|
|
24
|
+
/** One BT node as JSON: identity, decorator configuration (#888), and the
|
|
25
|
+
* node's own UPROPERTY values when asked for (#919). PropertyFilter holds
|
|
26
|
+
* lowercased property names; empty means "everything the node class adds". */
|
|
27
|
+
static TSharedPtr<FJsonObject> DescribeBTNode(
|
|
28
|
+
UBTNode* Node,
|
|
29
|
+
const FString& NodePath,
|
|
30
|
+
const FString& ParentPath,
|
|
31
|
+
bool bIncludeProperties,
|
|
32
|
+
bool bIncludeInherited,
|
|
33
|
+
const TSet<FString>& PropertyFilter);
|
|
34
|
+
|
|
35
|
+
/** Read one dotted/indexed property path off a BT node. A UE 5.8
|
|
36
|
+
* FValueOrBBKey_* field comes back unpacked into defaultValue + key. */
|
|
37
|
+
static TSharedPtr<FJsonValue> ReadBTNodeProperty(UBTNode* Node, const FString& PropertyPath, FString& OutError);
|
|
38
|
+
|
|
39
|
+
/** Write one dotted/indexed property path on a BT node. A scalar aimed at a
|
|
40
|
+
* FValueOrBBKey_* field lands on its DefaultValue; a class-valued leaf
|
|
41
|
+
* accepts a short name, a /Script path or a Blueprint asset path. */
|
|
42
|
+
static bool WriteBTNodeProperty(UBTNode* Node, const FString& PropertyPath, const TSharedPtr<FJsonValue>& Value, FString& OutError);
|
|
43
|
+
|
|
44
|
+
/** Load a BehaviorTree from a caller-supplied asset path, or null. */
|
|
45
|
+
static UBehaviorTree* LoadBehaviorTree(const FString& AssetPath);
|
|
46
|
+
|
|
47
|
+
/** Every runtime node in a compiled tree, keyed by the structural address
|
|
48
|
+
* the read surface reports ("Root.Children[0].Decorators[1]").
|
|
49
|
+
*
|
|
50
|
+
* #889 authoring addresses editor-graph nodes by guid, but a caller who
|
|
51
|
+
* just read the tree holds these addresses instead, so both surfaces walk
|
|
52
|
+
* this one map rather than growing a second scheme. Defined next to the
|
|
53
|
+
* walker it wraps in GameplayHandlers_BehaviorTree.cpp. */
|
|
54
|
+
static void MapBTNodeAddresses(UBehaviorTree* Tree, TMap<UBTNode*, FString>& OutAddresses);
|
|
55
|
+
|
|
12
56
|
private:
|
|
13
57
|
static TSharedPtr<FJsonValue> CreateSmartObjectDefinition(const TSharedPtr<FJsonObject>& Params);
|
|
14
58
|
// #778: per-player Enhanced Input applied mapping contexts, per PIE world.
|
|
@@ -77,9 +121,30 @@ private:
|
|
|
77
121
|
// Helper to create a blueprint with a given parent class
|
|
78
122
|
static TSharedPtr<FJsonValue> CreateBlueprintWithParent(const FString& Name, const FString& PackagePath, const FString& ParentClassPath, const FString& FriendlyTypeName);
|
|
79
123
|
|
|
80
|
-
// v0.7.11 - BT graph traversal (#124)
|
|
124
|
+
// v0.7.11 - BT graph traversal (#124), decorator configuration added (#888)
|
|
81
125
|
static TSharedPtr<FJsonValue> ReadBehaviorTreeGraph(const TSharedPtr<FJsonObject>& Params);
|
|
82
126
|
|
|
127
|
+
// #919: pick BT nodes by class/name/path/kind and return their UPROPERTY
|
|
128
|
+
// values, instead of an unfiltered whole-asset property dump.
|
|
129
|
+
static TSharedPtr<FJsonValue> ReadBTNodeProperties(const TSharedPtr<FJsonObject>& Params);
|
|
130
|
+
|
|
131
|
+
// #940: inventory BTTask nodes across one asset or a directory, including
|
|
132
|
+
// the UE 5.8 FValueOrBBKey_Class shape of BTTask_MoveTo::FilterClass.
|
|
133
|
+
static TSharedPtr<FJsonValue> ListBTTasks(const TSharedPtr<FJsonObject>& Params);
|
|
134
|
+
|
|
135
|
+
// #919/#940: scoped nested write onto one owned BT node subobject.
|
|
136
|
+
// Registered as both set_bt_node_property and set_bt_task_property.
|
|
137
|
+
static TSharedPtr<FJsonValue> SetBTNodeProperty(const TSharedPtr<FJsonObject>& Params);
|
|
138
|
+
|
|
139
|
+
// #889/#947: BehaviorTree editor-graph authoring. These drive
|
|
140
|
+
// UBehaviorTreeGraph and its node classes, then recompile the graph into
|
|
141
|
+
// the runnable UBTCompositeNode tree, which is the step no reflected
|
|
142
|
+
// runtime API can perform. Definitions in GameplayHandlers_BTAuthoring.cpp.
|
|
143
|
+
static TSharedPtr<FJsonValue> ListBTGraphNodes(const TSharedPtr<FJsonObject>& Params);
|
|
144
|
+
static TSharedPtr<FJsonValue> AddBTNode(const TSharedPtr<FJsonObject>& Params);
|
|
145
|
+
static TSharedPtr<FJsonValue> MoveBTNode(const TSharedPtr<FJsonObject>& Params);
|
|
146
|
+
static TSharedPtr<FJsonValue> RemoveBTNode(const TSharedPtr<FJsonObject>& Params);
|
|
147
|
+
|
|
83
148
|
// #163 - detailed navmesh configuration
|
|
84
149
|
static TSharedPtr<FJsonValue> GetNavmeshDetails(const TSharedPtr<FJsonObject>& Params);
|
|
85
150
|
|