51 lines
2.6 KiB
C#
51 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace UnityMCP.Editor.Commands
|
|
{
|
|
/// <summary>
|
|
/// Registry for all MCP command handlers
|
|
/// </summary>
|
|
public static class CommandRegistry
|
|
{
|
|
private static readonly Dictionary<string, Func<JObject, object>> _handlers = new()
|
|
{
|
|
// Scene management commands
|
|
{ "GET_SCENE_INFO", _ => SceneCommandHandler.GetSceneInfo() },
|
|
{ "OPEN_SCENE", parameters => SceneCommandHandler.OpenScene(parameters) },
|
|
{ "SAVE_SCENE", _ => SceneCommandHandler.SaveScene() },
|
|
{ "NEW_SCENE", parameters => SceneCommandHandler.NewScene(parameters) },
|
|
{ "CHANGE_SCENE", parameters => SceneCommandHandler.ChangeScene(parameters) },
|
|
|
|
// Asset management commands
|
|
{ "IMPORT_ASSET", parameters => AssetCommandHandler.ImportAsset(parameters) },
|
|
{ "INSTANTIATE_PREFAB", parameters => AssetCommandHandler.InstantiatePrefab(parameters) },
|
|
{ "CREATE_PREFAB", parameters => AssetCommandHandler.CreatePrefab(parameters) },
|
|
{ "APPLY_PREFAB", parameters => AssetCommandHandler.ApplyPrefab(parameters) },
|
|
{ "GET_ASSET_LIST", parameters => AssetCommandHandler.GetAssetList(parameters) },
|
|
|
|
// Object management commands
|
|
{ "GET_OBJECT_PROPERTIES", parameters => ObjectCommandHandler.GetObjectProperties(parameters) },
|
|
{ "GET_COMPONENT_PROPERTIES", parameters => ObjectCommandHandler.GetComponentProperties(parameters) },
|
|
{ "FIND_OBJECTS_BY_NAME", parameters => ObjectCommandHandler.FindObjectsByName(parameters) },
|
|
{ "FIND_OBJECTS_BY_TAG", parameters => ObjectCommandHandler.FindObjectsByTag(parameters) },
|
|
{ "GET_HIERARCHY", _ => ObjectCommandHandler.GetHierarchy() },
|
|
{ "SELECT_OBJECT", parameters => ObjectCommandHandler.SelectObject(parameters) },
|
|
{ "GET_SELECTED_OBJECT", _ => ObjectCommandHandler.GetSelectedObject() },
|
|
|
|
// Editor control commands
|
|
{ "EDITOR_CONTROL", parameters => EditorControlHandler.HandleEditorControl(parameters) }
|
|
};
|
|
|
|
/// <summary>
|
|
/// Gets a command handler by name
|
|
/// </summary>
|
|
/// <param name="commandName">Name of the command to get</param>
|
|
/// <returns>The command handler function if found, null otherwise</returns>
|
|
public static Func<JObject, object> GetHandler(string commandName)
|
|
{
|
|
return _handlers.TryGetValue(commandName, out var handler) ? handler : null;
|
|
}
|
|
}
|
|
} |