31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
from fastmcp import Context
|
|
|
|
from models import MCPResponse
|
|
from models.unity_response import parse_resource_response
|
|
from services.registry import mcp_for_unity_resource
|
|
from services.tools import get_unity_instance_from_context
|
|
from transport.unity_transport import send_with_unity_instance
|
|
from transport.legacy.unity_connection import async_send_command_with_retry
|
|
|
|
|
|
class LayersResponse(MCPResponse):
|
|
"""Dictionary of layer indices to layer names."""
|
|
data: dict[int, str] = {}
|
|
|
|
|
|
@mcp_for_unity_resource(
|
|
uri="mcpforunity://project/layers",
|
|
name="project_layers",
|
|
description="All layers defined in the project's TagManager with their indices (0-31). Read this before using add_layer or remove_layer tools.\n\nURI: mcpforunity://project/layers"
|
|
)
|
|
async def get_layers(ctx: Context) -> LayersResponse | MCPResponse:
|
|
"""Get all project layers with their indices."""
|
|
unity_instance = get_unity_instance_from_context(ctx)
|
|
response = await send_with_unity_instance(
|
|
async_send_command_with_retry,
|
|
unity_instance,
|
|
"get_layers",
|
|
{}
|
|
)
|
|
return parse_resource_response(response, LayersResponse)
|