Files
ft/Client/Packages/io.github.hatayama.uloopmcp/Editor/Api/McpTools/Screenshot/ScreenshotSchema.cs

56 lines
2.2 KiB
C#

using System.ComponentModel;
namespace io.github.hatayama.uLoopMCP
{
/// <summary>
/// Window name matching modes for FindWindowsByName
/// </summary>
public enum WindowMatchMode
{
/// <summary>
/// Exact match (case-insensitive)
/// </summary>
exact = 0,
/// <summary>
/// Prefix match (case-insensitive)
/// </summary>
prefix = 1,
/// <summary>
/// Contains match (case-insensitive)
/// </summary>
contains = 2
}
public enum CaptureMode
{
window = 0,
rendering = 1
}
public class ScreenshotSchema : BaseToolSchema
{
[Description("Window name to capture (e.g., 'Game', 'Scene', 'Console', 'Inspector', 'Project', 'Hierarchy', or any EditorWindow title). Ignored when CaptureMode is rendering.")]
public string WindowName { get; set; } = "Game";
[Description("Resolution scale multiplier (0.1 to 1.0, where 1.0 is original size)")]
public float ResolutionScale { get; set; } = 1.0f;
[Description("Window name matching mode: exact(0)=exact match, prefix(1)=starts with, contains(2)=partial match. All modes are case-insensitive. Ignored when CaptureMode is rendering.")]
public WindowMatchMode MatchMode { get; set; } = WindowMatchMode.exact;
[Description("Output directory path for saving screenshots. When empty, uses default path (.uloop/outputs/Screenshots/). Accepts absolute paths.")]
public string OutputDirectory { get; set; } = "";
[Description("Capture mode: window(0)=capture EditorWindow including toolbar, rendering(1)=capture game rendering only (PlayMode required, coordinates match simulate-mouse)")]
public CaptureMode CaptureMode { get; set; } = CaptureMode.window;
[Description("Annotate interactive UI elements with names and simulate-mouse coordinates on the screenshot. Only works with CaptureMode=rendering in PlayMode.")]
public bool AnnotateElements { get; set; } = false;
[Description("Return only annotated element JSON without capturing a screenshot image. Requires AnnotateElements=true and CaptureMode=rendering in PlayMode.")]
public bool ElementsOnly { get; set; } = false;
}
}