ue-mcp 0.5.2 → 0.5.3

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,\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,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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
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