ue-mcp 0.5.2 → 0.5.4

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.
@@ -1 +1 @@
1
- export declare const SERVER_INSTRUCTIONS = "UE-MCP: Unreal Engine editor bridge (C++ plugin) \u2014 19 category tools covering 300+ actions.\n\nEvery tool takes an \"action\" parameter that selects the operation. Call project(action=\"get_status\") first.\n\n\u2550\u2550\u2550 QUICK START \u2550\u2550\u2550\n1. project(action=\"get_status\") \u2014 check if the editor is connected\n2. If not connected: editor(action=\"start_editor\") to launch UE\n3. level(action=\"get_outliner\") \u2014 see what's in the current level\n4. asset(action=\"list\") \u2014 browse project assets\n5. reflection(action=\"reflect_class\", className=\"StaticMeshActor\") \u2014 understand any UE class\n6. demo(action=\"step\", stepIndex=1) through 19 \u2014 run the Neon Shrine demo to see the bridge in action\n7. demo(action=\"cleanup\") \u2014 clean up after the demo\n\n\u2550\u2550\u2550 TOOLS & ACTIONS \u2550\u2550\u2550\n\nproject \u2014 Project status, config INI, C++ source\n get_status, set_project, get_info, read_config, search_config, list_config_tags,\n set_config, read_cpp_header, read_module, list_modules, search_cpp\n\nasset \u2014 Assets: list, search, CRUD, import, datatables, textures\n list, search, read, read_properties, duplicate, rename, move, delete, save,\n import_static_mesh, import_skeletal_mesh, import_animation, import_texture,\n read_datatable, create_datatable, reimport_datatable, list_textures,\n get_texture_info, set_texture_settings,\n add_socket, remove_socket, list_sockets\n\nblueprint \u2014 Blueprint reading, authoring, compilation\n read, list_variables, list_functions, read_graph, create, add_variable,\n set_variable_properties, create_function, delete_function, rename_function,\n add_node, delete_node, set_node_property, connect_pins, add_component,\n compile, list_node_types, search_node_types, create_interface, add_interface,\n add_event_dispatcher, list_graphs\n\nlevel \u2014 Level actors, selection, components, volumes, lights, splines\n get_outliner, place_actor, delete_actor, get_actor_details, move_actor,\n select, get_selected, add_component, set_component_property,\n get_current, load, save, list, create,\n spawn_volume, list_volumes, set_volume_properties,\n spawn_light, set_light_properties, build_lighting,\n get_spline_info, set_spline_points\n\nmaterial \u2014 Materials, shading, and graph authoring\n read, list_parameters, set_parameter, create_instance, create,\n set_shading_model, set_base_color, connect_texture,\n add_expression, connect_expressions, connect_to_property,\n list_expressions, delete_expression, list_expression_types, recompile\n\nanimation \u2014 Anim assets, skeletons, montages, blendspaces\n read_anim_blueprint, read_montage, read_sequence, read_blendspace, list,\n create_montage, create_anim_blueprint, create_blendspace, add_notify,\n get_skeleton_info, list_sockets, list_skeletal_meshes, get_physics_asset,\n create_sequence, set_bone_keyframes, get_bone_transforms,\n set_montage_sequence, set_montage_properties\n\nlandscape \u2014 Terrain sculpting, painting, layers\n get_info, list_layers, sample, list_splines, get_component,\n sculpt, paint_layer, set_material, add_layer_info, import_heightmap\n\npcg \u2014 Procedural Content Generation graphs\n list_graphs, read_graph, read_node_settings, get_components,\n get_component_details, create_graph, add_node, connect_nodes,\n set_node_settings, remove_node, execute, add_volume\n\nfoliage \u2014 Foliage painting and types\n list_types, get_settings, sample, paint, erase, create_type, set_settings\n\nniagara \u2014 VFX systems and graph authoring\n list, get_info, spawn, set_parameter, create,\n create_emitter, add_emitter, list_emitters, set_emitter_property,\n list_modules, get_emitter_info\n\naudio \u2014 Sound assets and playback\n list, play_at_location, spawn_ambient, create_cue, create_metasound\n\nwidget \u2014 UMG widgets and editor utilities\n read_tree, get_details, set_property (slot.* for layout), list, read_animations,\n create, add_widget, remove_widget, move_widget, list_classes,\n create_utility_widget, run_utility_widget,\n create_utility_blueprint, run_utility_blueprint\n\neditor \u2014 Console, Python, PIE, viewport, sequencer, perf, build pipeline, logs\n execute_command, execute_python, set_property, play_in_editor,\n get_runtime_value, hot_reload, undo, redo,\n get_perf_stats, run_stat, set_scalability, capture_screenshot,\n get_viewport, set_viewport, focus_on_actor,\n create_sequence, get_sequence_info, add_sequence_track, play_sequence,\n build_all, build_geometry, build_hlod, validate_assets,\n get_build_status, cook_content,\n get_log, search_log, get_message_log,\n set_dialog_policy, clear_dialog_policy, get_dialog_policy,\n list_dialogs, respond_to_dialog\n\nreflection \u2014 UE class/struct/enum reflection, gameplay tags\n reflect_class, reflect_struct, reflect_enum, list_classes,\n list_tags, create_tag\n\ngameplay \u2014 Physics, collision, navigation, input, behavior trees, AI, game framework\n set_collision_profile, set_simulate_physics, set_collision_enabled,\n set_physics_properties, rebuild_navigation, get_navmesh_info,\n project_to_nav, spawn_nav_modifier,\n create_input_action, create_input_mapping, list_input_assets,\n list_behavior_trees, get_behavior_tree_info,\n create_blackboard, create_behavior_tree,\n create_eqs_query, list_eqs_queries,\n add_perception, configure_sense,\n create_state_tree, list_state_trees, add_state_tree_component,\n create_smart_object_def, add_smart_object_component,\n create_game_mode, create_game_state, create_player_controller,\n create_player_state, create_hud, set_world_game_mode, get_framework_info\n\ngas \u2014 Gameplay Ability System\n add_asc, create_attribute_set, add_attribute,\n create_ability, set_ability_tags,\n create_effect, set_effect_modifier,\n create_cue, get_info\n\nnetworking \u2014 Replication and networking\n set_replicates, set_property_replicated, configure_net_frequency,\n set_dormancy, set_net_load_on_client, set_always_relevant,\n set_only_relevant_to_owner, configure_cull_distance,\n set_priority, set_replicate_movement, get_info\n\ndemo \u2014 Neon Shrine demo scene\n step, cleanup\n\nfeedback \u2014 Agent feedback submission\n submit\n\n\u2550\u2550\u2550 TIPS \u2550\u2550\u2550\n\u2022 Start with level(action=\"get_outliner\") or asset(action=\"list\") to discover what's in the project.\n\u2022 Use reflection(action=\"reflect_class\") to understand any UE class's properties.\n\u2022 asset(action=\"search\", query=\"/Game/Characters/*\") accepts wildcards.\n\u2022 For BP scripting: blueprint(action=\"search_node_types\") \u2192 blueprint(action=\"add_node\") \u2192 blueprint(action=\"connect_pins\").\n\u2022 editor(action=\"execute_python\") is the escape hatch for any Unreal Python API call.\n\u2022 Animation tools need a skeleton path \u2014 use animation(action=\"list_skeletal_meshes\") to find it.\n\u2022 Editor lifecycle: editor(action=\"stop_editor\") / editor(action=\"start_editor\") / editor(action=\"restart_editor\") manage the UE process.\n\u2022 editor(action=\"hot_reload\") triggers Live Coding compilation without restarting the editor.\n\u2022 editor(action=\"focus_on_actor\", actorLabel=\"MyActor\") snaps the viewport to any actor.\n\u2022 Log output: editor(action=\"get_log\", category=\"LogMCPBridge\") to see bridge-specific logs.\n\n\u2550\u2550\u2550 FEEDBACK \u2550\u2550\u2550\nIf you had to use editor(action=\"execute_python\") as a workaround because a native tool\ncouldn't handle the task, keep a mental note of what you did and why. When your task is\ncomplete, tell the user:\n \"I had to use custom Python scripts to [describe what]. Would you like to submit\n feedback to help improve ue-mcp?\"\nIf the user agrees, call feedback(action=\"submit\") with:\n \u2022 title \u2014 short, generic description of the gap (no project-specific details)\n \u2022 summary \u2014 what was attempted and why the native tool fell short\n \u2022 pythonWorkaround \u2014 the Python code that was used\n \u2022 idealTool \u2014 what tool/action should handle this natively\nThis creates a GitHub issue so the maintainers can add proper support.\n";
1
+ export declare const SERVER_INSTRUCTIONS = "UE-MCP: Unreal Engine editor bridge (C++ plugin) \u2014 19 category tools covering 300+ actions.\n\nEvery tool takes an \"action\" parameter that selects the operation. Call project(action=\"get_status\") first.\n\n\u2550\u2550\u2550 QUICK START \u2550\u2550\u2550\n1. project(action=\"get_status\") \u2014 check if the editor is connected\n2. If not connected: editor(action=\"start_editor\") to launch UE\n3. level(action=\"get_outliner\") \u2014 see what's in the current level\n4. asset(action=\"list\") \u2014 browse project assets\n5. reflection(action=\"reflect_class\", className=\"StaticMeshActor\") \u2014 understand any UE class\n6. demo(action=\"step\", stepIndex=1) through 19 \u2014 run the Neon Shrine demo to see the bridge in action\n7. demo(action=\"cleanup\") \u2014 clean up after the demo\n\n\u2550\u2550\u2550 TOOLS & ACTIONS \u2550\u2550\u2550\n\nproject \u2014 Project status, config INI, C++ source\n get_status, set_project, get_info, read_config, search_config, list_config_tags,\n set_config, read_cpp_header, read_module, list_modules, search_cpp\n\nasset \u2014 Assets: list, search, CRUD, import, export, datatables, textures\n list, search, read, read_properties, duplicate, rename, move, delete, save,\n import_static_mesh, import_skeletal_mesh, import_animation, import_texture,\n read_datatable, create_datatable, reimport_datatable, list_textures,\n get_texture_info, set_texture_settings,\n add_socket, remove_socket, list_sockets\n\nblueprint \u2014 Blueprint reading, authoring, compilation\n read, list_variables, list_functions, read_graph, create, add_variable,\n set_variable_properties, create_function, delete_function, rename_function,\n add_node, delete_node, set_node_property, connect_pins, add_component,\n compile, list_node_types, search_node_types, create_interface, add_interface,\n add_event_dispatcher, list_graphs\n\nlevel \u2014 Level actors, selection, components, volumes, lights, splines\n get_outliner, place_actor, delete_actor, get_actor_details, move_actor,\n select, get_selected, add_component, set_component_property,\n get_current, load, save, list, create,\n spawn_volume, list_volumes, set_volume_properties,\n spawn_light, set_light_properties, build_lighting,\n get_spline_info, set_spline_points\n\nmaterial \u2014 Materials, shading, and graph authoring\n read, list_parameters, set_parameter, create_instance, create,\n set_shading_model, set_base_color, connect_texture,\n add_expression, connect_expressions, connect_to_property,\n list_expressions, delete_expression, list_expression_types, recompile\n\nanimation \u2014 Anim assets, skeletons, montages, blendspaces\n read_anim_blueprint, read_montage, read_sequence, read_blendspace, list,\n create_montage, create_anim_blueprint, create_blendspace, add_notify,\n get_skeleton_info, list_sockets, list_skeletal_meshes, get_physics_asset,\n create_sequence, set_bone_keyframes, get_bone_transforms,\n set_montage_sequence, set_montage_properties\n\nlandscape \u2014 Terrain sculpting, painting, layers\n get_info, list_layers, sample, list_splines, get_component,\n sculpt, paint_layer, set_material, add_layer_info, import_heightmap\n\npcg \u2014 Procedural Content Generation graphs\n list_graphs, read_graph, read_node_settings, get_components,\n get_component_details, create_graph, add_node, connect_nodes,\n set_node_settings, remove_node, execute, add_volume\n\nfoliage \u2014 Foliage painting and types\n list_types, get_settings, sample, paint, erase, create_type, set_settings\n\nniagara \u2014 VFX systems and graph authoring\n list, get_info, spawn, set_parameter, create,\n create_emitter, add_emitter, list_emitters, set_emitter_property,\n list_modules, get_emitter_info\n\naudio \u2014 Sound assets and playback\n list, play_at_location, spawn_ambient, create_cue, create_metasound\n\nwidget \u2014 UMG widgets and editor utilities\n read_tree, get_details, set_property (slot.* for layout), list, read_animations,\n create, add_widget, remove_widget, move_widget, list_classes,\n create_utility_widget, run_utility_widget,\n create_utility_blueprint, run_utility_blueprint\n\neditor \u2014 Console, Python, PIE, viewport, sequencer, perf, build pipeline, logs\n execute_command, execute_python, set_property, play_in_editor,\n get_runtime_value, hot_reload, undo, redo,\n get_perf_stats, run_stat, set_scalability, capture_screenshot,\n get_viewport, set_viewport, focus_on_actor,\n create_sequence, get_sequence_info, add_sequence_track, play_sequence,\n build_all, build_geometry, build_hlod, validate_assets,\n get_build_status, cook_content,\n get_log, search_log, get_message_log,\n set_dialog_policy, clear_dialog_policy, get_dialog_policy,\n list_dialogs, respond_to_dialog\n\nreflection \u2014 UE class/struct/enum reflection, gameplay tags\n reflect_class, reflect_struct, reflect_enum, list_classes,\n list_tags, create_tag\n\ngameplay \u2014 Physics, collision, navigation, input, behavior trees, AI, game framework\n set_collision_profile, set_simulate_physics, set_collision_enabled,\n set_physics_properties, rebuild_navigation, get_navmesh_info,\n project_to_nav, spawn_nav_modifier,\n create_input_action, create_input_mapping, list_input_assets, set_mapping_modifiers,\n list_behavior_trees, get_behavior_tree_info,\n create_blackboard, create_behavior_tree,\n create_eqs_query, list_eqs_queries,\n add_perception, configure_sense,\n create_state_tree, list_state_trees, add_state_tree_component,\n create_smart_object_def, add_smart_object_component,\n create_game_mode, create_game_state, create_player_controller,\n create_player_state, create_hud, set_world_game_mode, get_framework_info\n\ngas \u2014 Gameplay Ability System\n add_asc, create_attribute_set, add_attribute,\n create_ability, set_ability_tags,\n create_effect, set_effect_modifier,\n create_cue, get_info\n\nnetworking \u2014 Replication and networking\n set_replicates, set_property_replicated, configure_net_frequency,\n set_dormancy, set_net_load_on_client, set_always_relevant,\n set_only_relevant_to_owner, configure_cull_distance,\n set_priority, set_replicate_movement, get_info\n\ndemo \u2014 Neon Shrine demo scene\n step, cleanup\n\nfeedback \u2014 Agent feedback submission\n submit\n\n\u2550\u2550\u2550 TIPS \u2550\u2550\u2550\n\u2022 Start with level(action=\"get_outliner\") or asset(action=\"list\") to discover what's in the project.\n\u2022 Use reflection(action=\"reflect_class\") to understand any UE class's properties.\n\u2022 asset(action=\"search\", query=\"/Game/Characters/*\") accepts wildcards.\n\u2022 For BP scripting: blueprint(action=\"search_node_types\") \u2192 blueprint(action=\"add_node\") \u2192 blueprint(action=\"connect_pins\").\n\u2022 editor(action=\"execute_python\") is the escape hatch for any Unreal Python API call.\n\u2022 Animation tools need a skeleton path \u2014 use animation(action=\"list_skeletal_meshes\") to find it.\n\u2022 Editor lifecycle: editor(action=\"stop_editor\") / editor(action=\"start_editor\") / editor(action=\"restart_editor\") manage the UE process.\n\u2022 editor(action=\"hot_reload\") triggers Live Coding compilation without restarting the editor.\n\u2022 editor(action=\"focus_on_actor\", actorLabel=\"MyActor\") snaps the viewport to any actor.\n\u2022 Log output: editor(action=\"get_log\", category=\"LogMCPBridge\") to see bridge-specific logs.\n\n\u2550\u2550\u2550 FEEDBACK \u2550\u2550\u2550\nIf you had to use editor(action=\"execute_python\") as a workaround because a native tool\ncouldn't handle the task, keep a mental note of what you did and why. When your task is\ncomplete, tell the user:\n \"I had to use custom Python scripts to [describe what]. Would you like to submit\n feedback to help improve ue-mcp?\"\nIf the user agrees, call feedback(action=\"submit\") with:\n \u2022 title \u2014 short, generic description of the gap (no project-specific details)\n \u2022 summary \u2014 what was attempted and why the native tool fell short\n \u2022 pythonWorkaround \u2014 the Python code that was used\n \u2022 idealTool \u2014 what tool/action should handle this natively\nThis creates a GitHub issue so the maintainers can add proper support.\n";
@@ -17,7 +17,7 @@ project — Project status, config INI, C++ source
17
17
  get_status, set_project, get_info, read_config, search_config, list_config_tags,
18
18
  set_config, read_cpp_header, read_module, list_modules, search_cpp
19
19
 
20
- asset — Assets: list, search, CRUD, import, datatables, textures
20
+ asset — Assets: list, search, CRUD, import, export, datatables, textures
21
21
  list, search, read, read_properties, duplicate, rename, move, delete, save,
22
22
  import_static_mesh, import_skeletal_mesh, import_animation, import_texture,
23
23
  read_datatable, create_datatable, reimport_datatable, list_textures,
@@ -98,7 +98,7 @@ gameplay — Physics, collision, navigation, input, behavior trees, AI, game fra
98
98
  set_collision_profile, set_simulate_physics, set_collision_enabled,
99
99
  set_physics_properties, rebuild_navigation, get_navmesh_info,
100
100
  project_to_nav, spawn_nav_modifier,
101
- create_input_action, create_input_mapping, list_input_assets,
101
+ create_input_action, create_input_mapping, list_input_assets, set_mapping_modifiers,
102
102
  list_behavior_trees, get_behavior_tree_info,
103
103
  create_blackboard, create_behavior_tree,
104
104
  create_eqs_query, list_eqs_queries,
@@ -98,6 +98,7 @@ export const assetTool = categoryTool("asset", "Asset management: list, search,
98
98
  remove_socket: bp("remove_socket"),
99
99
  list_sockets: bp("list_sockets", (p) => ({ assetPath: p.assetPath })),
100
100
  reload_package: bp("reload_package"),
101
+ export: bp("export_asset"),
101
102
  }, `- list: List assets in directory. Params: directory?, typeFilter?, recursive?
102
103
  - search: Search by name/class/path. Params: query, directory?, maxResults?, searchAll? (set searchAll=true to search all content roots including plugin paths like /GASP/, not just /Game/)
103
104
  - read: Read asset via reflection. Params: assetPath
@@ -123,7 +124,8 @@ export const assetTool = categoryTool("asset", "Asset management: list, search,
123
124
  - add_socket: Add socket to StaticMesh or SkeletalMesh. Params: assetPath, socketName, boneName? (skeletal only), relativeLocation?, relativeRotation?, relativeScale?
124
125
  - remove_socket: Remove socket by name. Params: assetPath, socketName
125
126
  - list_sockets: List sockets on a mesh. Params: assetPath
126
- - reload_package: Force reload an asset package from disk. Params: assetPath`, {
127
+ - reload_package: Force reload an asset package from disk. Params: assetPath
128
+ - export: Export asset to disk file (Texture2D → PNG, StaticMesh → FBX, etc.). Params: assetPath, outputPath`, {
127
129
  assetPath: z.string().optional().describe("Asset path"),
128
130
  directory: z.string().optional(), query: z.string().optional(),
129
131
  maxResults: z.number().optional(), typeFilter: z.string().optional(),
@@ -151,5 +153,6 @@ export const assetTool = categoryTool("asset", "Asset management: list, search,
151
153
  relativeLocation: Vec3.optional().describe("Socket relative location"),
152
154
  relativeRotation: Rotator.optional().describe("Socket relative rotation"),
153
155
  relativeScale: Vec3.optional().describe("Socket relative scale"),
156
+ outputPath: z.string().optional().describe("Absolute file path for export (e.g. C:/output/texture.png)"),
154
157
  });
155
158
  //# sourceMappingURL=asset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/tools/asset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/tools/asset.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
18
18
  list_input_assets: bp("list_input_assets"),
19
19
  read_imc: bp("read_imc"),
20
20
  add_imc_mapping: bp("add_imc_mapping"),
21
+ set_mapping_modifiers: bp("set_mapping_modifiers"),
21
22
  // Behavior Trees
22
23
  list_behavior_trees: bp("list_behavior_trees"),
23
24
  get_behavior_tree_info: bp("get_behavior_tree_info"),
@@ -60,6 +61,7 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
60
61
  - list_input_assets: List input assets. Params: directory?, recursive?
61
62
  - read_imc: Read InputMappingContext mappings. Params: imcPath
62
63
  - add_imc_mapping: Add key mapping to InputMappingContext. Params: imcPath, inputActionPath, key (e.g. "W", "SpaceBar", "LeftMouseButton")
64
+ - set_mapping_modifiers: Set modifiers/triggers on an IMC mapping (persists on save — creates subobjects with correct outer). Params: imcPath, mappingIndex?, modifiers? (array of {type, ...props}), triggers? (array of {type, ...props}). Modifier types: DeadZone (LowerThreshold, UpperThreshold, Type=Axial|Radial), Negate, Scalar, SwizzleAxis, Smooth, ScaleByDeltaTime, FOVScaling, ToWorldSpace, ResponseCurveExponential. Trigger types: Down, Pressed, Released, Hold (HoldTimeThreshold), HoldAndRelease, Tap, Pulse, ChordAction.
63
65
  - inspect_pie: Inspect PIE runtime. No params = list all PIE actors. Params: actorLabel? (detailed info with components)
64
66
  - get_pie_anim_state: Get PIE anim instance state. Params: actorLabel (returns current montage, state machines, anim class)
65
67
  - list_behavior_trees: List BTs. Params: directory?, recursive?
@@ -110,5 +112,8 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
110
112
  imcPath: z.string().optional(),
111
113
  inputActionPath: z.string().optional(),
112
114
  key: z.string().optional(),
115
+ mappingIndex: z.number().optional().describe("Index of mapping in IMC (default 0)"),
116
+ modifiers: z.array(z.record(z.unknown())).optional().describe("Array of modifier objects: {type, ...props}"),
117
+ triggers: z.array(z.record(z.unknown())).optional().describe("Array of trigger objects: {type, ...props}"),
113
118
  });
114
119
  //# sourceMappingURL=gameplay.js.map
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "Unreal Engine MCP server — 19 tools, 300+ actions for AI-driven editor control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3,6 +3,8 @@
3
3
  #include "HandlerUtils.h"
4
4
  #include "AssetRegistry/AssetRegistryModule.h"
5
5
  #include "AssetRegistry/IAssetRegistry.h"
6
+ #include "Exporters/Exporter.h"
7
+ #include "AssetExportTask.h"
6
8
  #include "UObject/UObjectGlobals.h"
7
9
  #include "UObject/UnrealType.h"
8
10
  #include "EditorScriptingUtilities/Public/EditorAssetLibrary.h"
@@ -92,8 +94,9 @@ void FAssetHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
92
94
  Registry.RegisterHandler(TEXT("read_datatable"), &ReadDataTable);
93
95
  Registry.RegisterHandler(TEXT("reimport_datatable"), &ReimportDataTable);
94
96
 
95
- // Generic reimport
97
+ // Generic reimport / export
96
98
  Registry.RegisterHandler(TEXT("reimport_asset"), &ReimportAsset);
99
+ Registry.RegisterHandler(TEXT("export_asset"), &ExportAsset);
97
100
  }
98
101
 
99
102
  TSharedPtr<FJsonValue> FAssetHandlers::ListAssets(const TSharedPtr<FJsonObject>& Params)
@@ -1959,3 +1962,50 @@ TSharedPtr<FJsonValue> FAssetHandlers::ReloadPackage(const TSharedPtr<FJsonObjec
1959
1962
 
1960
1963
  return MCPResult(Result);
1961
1964
  }
1965
+
1966
+ // ---------------------------------------------------------------------------
1967
+ // export_asset — Export an asset to disk (e.g. Texture2D → PNG, StaticMesh → FBX)
1968
+ // ---------------------------------------------------------------------------
1969
+ TSharedPtr<FJsonValue> FAssetHandlers::ExportAsset(const TSharedPtr<FJsonObject>& Params)
1970
+ {
1971
+ FString AssetPath;
1972
+ if (auto Err = RequireStringAlt(Params, TEXT("assetPath"), TEXT("path"), AssetPath)) return Err;
1973
+
1974
+ FString OutputPath;
1975
+ if (auto Err = RequireString(Params, TEXT("outputPath"), OutputPath)) return Err;
1976
+
1977
+ UObject* Asset = UEditorAssetLibrary::LoadAsset(AssetPath);
1978
+ if (!Asset)
1979
+ {
1980
+ return MCPError(FString::Printf(TEXT("Asset not found: %s"), *AssetPath));
1981
+ }
1982
+
1983
+ // Create parent directory if needed
1984
+ FString OutputDir = FPaths::GetPath(OutputPath);
1985
+ if (!OutputDir.IsEmpty())
1986
+ {
1987
+ IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
1988
+ PlatformFile.CreateDirectoryTree(*OutputDir);
1989
+ }
1990
+
1991
+ // Use UE's AssetExportTask — same as unreal.AssetExportTask in Python
1992
+ UAssetExportTask* ExportTask = NewObject<UAssetExportTask>();
1993
+ ExportTask->Object = Asset;
1994
+ ExportTask->Filename = OutputPath;
1995
+ ExportTask->bAutomated = true;
1996
+ ExportTask->bPrompt = false;
1997
+ ExportTask->bReplaceIdentical = true;
1998
+
1999
+ bool bSuccess = UExporter::RunAssetExportTask(ExportTask);
2000
+
2001
+ if (!bSuccess)
2002
+ {
2003
+ return MCPError(FString::Printf(TEXT("Export failed for '%s' to '%s'. The asset type may not have a registered exporter."), *AssetPath, *OutputPath));
2004
+ }
2005
+
2006
+ auto Result = MCPSuccess();
2007
+ Result->SetStringField(TEXT("assetPath"), AssetPath);
2008
+ Result->SetStringField(TEXT("outputPath"), OutputPath);
2009
+ Result->SetStringField(TEXT("assetClass"), Asset->GetClass()->GetName());
2010
+ return MCPResult(Result);
2011
+ }
@@ -46,6 +46,9 @@ private:
46
46
  static TSharedPtr<FJsonValue> SetTextureProperties(const TSharedPtr<FJsonObject>& Params);
47
47
  static TSharedPtr<FJsonValue> ImportTexture(const TSharedPtr<FJsonObject>& Params);
48
48
 
49
+ // Export
50
+ static TSharedPtr<FJsonValue> ExportAsset(const TSharedPtr<FJsonObject>& Params);
51
+
49
52
  // Reimport
50
53
  static TSharedPtr<FJsonValue> ReimportAsset(const TSharedPtr<FJsonObject>& Params);
51
54
 
@@ -48,6 +48,8 @@
48
48
  #include "EnhancedInputComponent.h"
49
49
  #include "InputAction.h"
50
50
  #include "InputMappingContext.h"
51
+ #include "InputModifiers.h"
52
+ #include "InputTriggers.h"
51
53
  #include "BehaviorTree/BehaviorTree.h"
52
54
  #include "BehaviorTree/BehaviorTreeComponent.h"
53
55
  #include "BehaviorTree/BlackboardComponent.h"
@@ -112,6 +114,7 @@ void FGameplayHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
112
114
  Registry.RegisterHandler(TEXT("add_smart_object_component"), &AddSmartObjectComponent);
113
115
  Registry.RegisterHandler(TEXT("read_imc"), &ReadImc);
114
116
  Registry.RegisterHandler(TEXT("add_imc_mapping"), &AddImcMapping);
117
+ Registry.RegisterHandler(TEXT("set_mapping_modifiers"), &SetMappingModifiers);
115
118
  Registry.RegisterHandler(TEXT("inspect_pie"), &InspectPie);
116
119
  Registry.RegisterHandler(TEXT("get_pie_anim_state"), &GetPieAnimState);
117
120
  }
@@ -1959,6 +1962,208 @@ TSharedPtr<FJsonValue> FGameplayHandlers::AddImcMapping(const TSharedPtr<FJsonOb
1959
1962
  return MCPResult(Result);
1960
1963
  }
1961
1964
 
1965
+ // ─────────────────────────────────────────────────────────────
1966
+ // #75 set_mapping_modifiers — Add modifiers/triggers to an IMC mapping
1967
+ // Creates UObject subobjects with IMC as outer so they serialize.
1968
+ // ─────────────────────────────────────────────────────────────
1969
+ TSharedPtr<FJsonValue> FGameplayHandlers::SetMappingModifiers(const TSharedPtr<FJsonObject>& Params)
1970
+ {
1971
+ FString ImcPath;
1972
+ if (auto Err = RequireString(Params, TEXT("imcPath"), ImcPath)) return Err;
1973
+
1974
+ UInputMappingContext* IMC = LoadObject<UInputMappingContext>(nullptr, *ImcPath);
1975
+ if (!IMC)
1976
+ {
1977
+ return MCPError(FString::Printf(TEXT("InputMappingContext not found: %s"), *ImcPath));
1978
+ }
1979
+
1980
+ int32 MappingIndex = OptionalInt(Params, TEXT("mappingIndex"), 0);
1981
+ TArray<FEnhancedActionKeyMapping>& Mappings = const_cast<TArray<FEnhancedActionKeyMapping>&>(IMC->GetMappings());
1982
+ if (!Mappings.IsValidIndex(MappingIndex))
1983
+ {
1984
+ return MCPError(FString::Printf(TEXT("Mapping index %d out of range (count: %d)"), MappingIndex, Mappings.Num()));
1985
+ }
1986
+
1987
+ FEnhancedActionKeyMapping& Mapping = Mappings[MappingIndex];
1988
+
1989
+ // ── Modifiers ──
1990
+ const TArray<TSharedPtr<FJsonValue>>* ModifiersArr = nullptr;
1991
+ if (Params->TryGetArrayField(TEXT("modifiers"), ModifiersArr) && ModifiersArr)
1992
+ {
1993
+ Mapping.Modifiers.Empty();
1994
+ for (const auto& ModVal : *ModifiersArr)
1995
+ {
1996
+ const TSharedPtr<FJsonObject>* ModObj = nullptr;
1997
+ if (!ModVal->TryGetObject(ModObj) || !ModObj) continue;
1998
+
1999
+ FString TypeName;
2000
+ (*ModObj)->TryGetStringField(TEXT("type"), TypeName);
2001
+ if (TypeName.IsEmpty()) continue;
2002
+
2003
+ // Resolve class: "DeadZone" → UInputModifierDeadZone
2004
+ FString ClassName = TypeName;
2005
+ if (!ClassName.StartsWith(TEXT("UInputModifier")))
2006
+ {
2007
+ ClassName = TEXT("UInputModifier") + ClassName;
2008
+ }
2009
+
2010
+ UClass* ModClass = FindClassByShortName(ClassName);
2011
+ if (!ModClass || !ModClass->IsChildOf(UInputModifier::StaticClass()))
2012
+ {
2013
+ continue; // skip unknown modifier types
2014
+ }
2015
+
2016
+ // Create with IMC as outer — this is the key fix for #75
2017
+ UInputModifier* Modifier = NewObject<UInputModifier>(IMC, ModClass);
2018
+
2019
+ // Set properties via reflection
2020
+ for (const auto& Pair : (*ModObj)->Values)
2021
+ {
2022
+ if (Pair.Key == TEXT("type")) continue;
2023
+
2024
+ FProperty* Prop = ModClass->FindPropertyByName(FName(*Pair.Key));
2025
+ if (!Prop) continue;
2026
+
2027
+ void* PropAddr = Prop->ContainerPtrToValuePtr<void>(Modifier);
2028
+
2029
+ if (FFloatProperty* FloatProp = CastField<FFloatProperty>(Prop))
2030
+ {
2031
+ double Val = 0;
2032
+ Pair.Value->TryGetNumber(Val);
2033
+ FloatProp->SetPropertyValue(PropAddr, (float)Val);
2034
+ }
2035
+ else if (FDoubleProperty* DoubleProp = CastField<FDoubleProperty>(Prop))
2036
+ {
2037
+ double Val = 0;
2038
+ Pair.Value->TryGetNumber(Val);
2039
+ DoubleProp->SetPropertyValue(PropAddr, Val);
2040
+ }
2041
+ else if (FBoolProperty* BoolProp = CastField<FBoolProperty>(Prop))
2042
+ {
2043
+ bool Val = false;
2044
+ Pair.Value->TryGetBool(Val);
2045
+ BoolProp->SetPropertyValue(PropAddr, Val);
2046
+ }
2047
+ else if (FEnumProperty* EnumProp = CastField<FEnumProperty>(Prop))
2048
+ {
2049
+ FString EnumStr;
2050
+ if (Pair.Value->TryGetString(EnumStr))
2051
+ {
2052
+ int64 EnumVal = EnumProp->GetEnum()->GetValueByNameString(EnumStr);
2053
+ if (EnumVal != INDEX_NONE)
2054
+ {
2055
+ EnumProp->GetUnderlyingProperty()->SetIntPropertyValue(PropAddr, EnumVal);
2056
+ }
2057
+ }
2058
+ }
2059
+ else if (FByteProperty* ByteProp = CastField<FByteProperty>(Prop))
2060
+ {
2061
+ if (ByteProp->Enum)
2062
+ {
2063
+ FString EnumStr;
2064
+ if (Pair.Value->TryGetString(EnumStr))
2065
+ {
2066
+ int64 EnumVal = ByteProp->Enum->GetValueByNameString(EnumStr);
2067
+ if (EnumVal != INDEX_NONE)
2068
+ {
2069
+ ByteProp->SetPropertyValue(PropAddr, (uint8)EnumVal);
2070
+ }
2071
+ }
2072
+ }
2073
+ else
2074
+ {
2075
+ double Val = 0;
2076
+ Pair.Value->TryGetNumber(Val);
2077
+ ByteProp->SetPropertyValue(PropAddr, (uint8)Val);
2078
+ }
2079
+ }
2080
+ }
2081
+
2082
+ Mapping.Modifiers.Add(Modifier);
2083
+ }
2084
+ }
2085
+
2086
+ // ── Triggers ──
2087
+ const TArray<TSharedPtr<FJsonValue>>* TriggersArr = nullptr;
2088
+ if (Params->TryGetArrayField(TEXT("triggers"), TriggersArr) && TriggersArr)
2089
+ {
2090
+ Mapping.Triggers.Empty();
2091
+ for (const auto& TrigVal : *TriggersArr)
2092
+ {
2093
+ const TSharedPtr<FJsonObject>* TrigObj = nullptr;
2094
+ if (!TrigVal->TryGetObject(TrigObj) || !TrigObj) continue;
2095
+
2096
+ FString TypeName;
2097
+ (*TrigObj)->TryGetStringField(TEXT("type"), TypeName);
2098
+ if (TypeName.IsEmpty()) continue;
2099
+
2100
+ FString ClassName = TypeName;
2101
+ if (!ClassName.StartsWith(TEXT("UInputTrigger")))
2102
+ {
2103
+ ClassName = TEXT("UInputTrigger") + ClassName;
2104
+ }
2105
+
2106
+ UClass* TrigClass = FindClassByShortName(ClassName);
2107
+ if (!TrigClass || !TrigClass->IsChildOf(UInputTrigger::StaticClass()))
2108
+ {
2109
+ continue;
2110
+ }
2111
+
2112
+ UInputTrigger* Trigger = NewObject<UInputTrigger>(IMC, TrigClass);
2113
+
2114
+ // Set properties via reflection (same pattern as modifiers)
2115
+ for (const auto& Pair : (*TrigObj)->Values)
2116
+ {
2117
+ if (Pair.Key == TEXT("type")) continue;
2118
+
2119
+ FProperty* Prop = TrigClass->FindPropertyByName(FName(*Pair.Key));
2120
+ if (!Prop) continue;
2121
+
2122
+ void* PropAddr = Prop->ContainerPtrToValuePtr<void>(Trigger);
2123
+
2124
+ if (FFloatProperty* FloatProp = CastField<FFloatProperty>(Prop))
2125
+ {
2126
+ double Val = 0;
2127
+ Pair.Value->TryGetNumber(Val);
2128
+ FloatProp->SetPropertyValue(PropAddr, (float)Val);
2129
+ }
2130
+ else if (FDoubleProperty* DoubleProp = CastField<FDoubleProperty>(Prop))
2131
+ {
2132
+ double Val = 0;
2133
+ Pair.Value->TryGetNumber(Val);
2134
+ DoubleProp->SetPropertyValue(PropAddr, Val);
2135
+ }
2136
+ else if (FBoolProperty* BoolProp = CastField<FBoolProperty>(Prop))
2137
+ {
2138
+ bool Val = false;
2139
+ Pair.Value->TryGetBool(Val);
2140
+ BoolProp->SetPropertyValue(PropAddr, Val);
2141
+ }
2142
+ }
2143
+
2144
+ Mapping.Triggers.Add(Trigger);
2145
+ }
2146
+ }
2147
+
2148
+ // Save
2149
+ UPackage* Pkg = IMC->GetOutermost();
2150
+ if (Pkg)
2151
+ {
2152
+ Pkg->MarkPackageDirty();
2153
+ FString FileName = FPackageName::LongPackageNameToFilename(Pkg->GetName(), FPackageName::GetAssetPackageExtension());
2154
+ FSavePackageArgs SaveArgs;
2155
+ SaveArgs.TopLevelFlags = RF_Standalone;
2156
+ UPackage::SavePackage(Pkg, nullptr, *FileName, SaveArgs);
2157
+ }
2158
+
2159
+ auto Result = MCPSuccess();
2160
+ Result->SetStringField(TEXT("imcPath"), IMC->GetPathName());
2161
+ Result->SetNumberField(TEXT("mappingIndex"), MappingIndex);
2162
+ Result->SetNumberField(TEXT("modifierCount"), Mapping.Modifiers.Num());
2163
+ Result->SetNumberField(TEXT("triggerCount"), Mapping.Triggers.Num());
2164
+ return MCPResult(Result);
2165
+ }
2166
+
1962
2167
  // ─────────────────────────────────────────────────────────────
1963
2168
  // #54 / #89 / #90 inspect_pie — PIE runtime actor inspection
1964
2169
  // ─────────────────────────────────────────────────────────────
@@ -49,9 +49,10 @@ private:
49
49
  static TSharedPtr<FJsonValue> AddStateTreeComponent(const TSharedPtr<FJsonObject>& Params);
50
50
  static TSharedPtr<FJsonValue> AddSmartObjectComponent(const TSharedPtr<FJsonObject>& Params);
51
51
 
52
- // IMC read/write (#57 / #60)
52
+ // IMC read/write (#57 / #60 / #75)
53
53
  static TSharedPtr<FJsonValue> ReadImc(const TSharedPtr<FJsonObject>& Params);
54
54
  static TSharedPtr<FJsonValue> AddImcMapping(const TSharedPtr<FJsonObject>& Params);
55
+ static TSharedPtr<FJsonValue> SetMappingModifiers(const TSharedPtr<FJsonObject>& Params);
55
56
 
56
57
  // PIE inspection (#54 / #89 / #90)
57
58
  static TSharedPtr<FJsonValue> InspectPie(const TSharedPtr<FJsonObject>& Params);