Kursach_StealthAction/.gemini/skills/animator-get-data/SKILL.md

348 lines
9.3 KiB
Markdown

---
name: animator-get-data
description: Inspect a Unity `AnimatorController` asset — controller name, every parameter (name, type, defaults), every layer with its state machine, every state, and every transition. Pair with 'animator-modify' to write changes back.
metadata:
generated-by: mcp-plugin-dotnet
---
# Animator / Get Data
Inspect a Unity `AnimatorController` asset. Returns the controller's name plus the full set of parameters, layers, states, and transitions — enough to drive a follow-up 'animator-modify' call with valid names.
## Inputs
- `animatorRef` — reference to the `AnimatorController` asset (path must start with `Assets/` and end with `.controller`).
## Returned fields
- `name` — controller asset name.
- `parameters` — every parameter (name, type, default value).
- `layers` — every layer with its state machine, default state, and weight.
- `states` — every state across all layers (name, speed, motion).
- `transitions` — every transition with its conditions, source, and destination.
## How to Call
```bash
unity-mcp-cli run-tool animator-get-data --input '{
"animatorRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool animator-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool animator-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
If `unity-mcp-cli` is not found, either install it globally (`npm install -g unity-mcp-cli`) or use `npx unity-mcp-cli` instead.
Read the /unity-initial-setup skill for detailed installation instructions.
## Input
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `animatorRef` | `any` | Yes | Reference to the AnimatorController asset. The path should start with 'Assets/' and end with '.controller'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"animatorRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
}
},
"$defs": {
"UnityEngine.EntityId": {
"type": "string",
"pattern": "^[0-9]+$"
},
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"$ref": "#/$defs/UnityEngine.EntityId",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"assetType": {
"$ref": "#/$defs/System.Type",
"description": "Type of the asset."
},
"assetPath": {
"type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'"
},
"assetGuid": {
"type": "string",
"description": "Unique identifier for the asset."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"animatorRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorTools-GetAnimatorDataResponse"
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorParameterInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorParameterInfo"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorParameterInfo": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"defaultFloat": {
"type": "number"
},
"defaultInt": {
"type": "integer"
},
"defaultBool": {
"type": "boolean"
}
},
"required": [
"defaultFloat",
"defaultInt",
"defaultBool"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorLayerInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorLayerInfo"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorLayerInfo": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"defaultWeight": {
"type": "number"
},
"blendingMode": {
"type": "string"
},
"syncedLayerIndex": {
"type": "integer"
},
"iKPass": {
"type": "boolean"
},
"defaultStateName": {
"type": "string"
},
"states": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorStateInfo)"
},
"subStateMachines": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"anyStateTransitions": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorTransitionInfo)"
}
},
"required": [
"defaultWeight",
"syncedLayerIndex",
"iKPass"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorStateInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorStateInfo"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorStateInfo": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"tag": {
"type": "string"
},
"speed": {
"type": "number"
},
"speedParameterActive": {
"type": "boolean"
},
"speedParameter": {
"type": "string"
},
"cycleOffset": {
"type": "number"
},
"cycleOffsetParameterActive": {
"type": "boolean"
},
"cycleOffsetParameter": {
"type": "string"
},
"mirror": {
"type": "boolean"
},
"mirrorParameterActive": {
"type": "boolean"
},
"mirrorParameter": {
"type": "string"
},
"writeDefaultValues": {
"type": "boolean"
},
"motionName": {
"type": "string"
},
"transitions": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorTransitionInfo)"
}
},
"required": [
"speed",
"speedParameterActive",
"cycleOffset",
"cycleOffsetParameterActive",
"mirror",
"mirrorParameterActive",
"writeDefaultValues"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorTransitionInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorTransitionInfo"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorTransitionInfo": {
"type": "object",
"properties": {
"destinationStateName": {
"type": "string"
},
"hasExitTime": {
"type": "boolean"
},
"exitTime": {
"type": "number"
},
"hasFixedDuration": {
"type": "boolean"
},
"duration": {
"type": "number"
},
"offset": {
"type": "number"
},
"canTransitionToSelf": {
"type": "boolean"
},
"conditions": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionInfo)"
}
},
"required": [
"hasExitTime",
"exitTime",
"hasFixedDuration",
"duration",
"offset",
"canTransitionToSelf"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionInfo"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorConditionInfo": {
"type": "object",
"properties": {
"parameter": {
"type": "string"
},
"mode": {
"type": "string"
},
"threshold": {
"type": "number"
}
},
"required": [
"threshold"
]
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"com.IvanMurzak.Unity.MCP.Animation.AnimatorTools-GetAnimatorDataResponse": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"parameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorParameterInfo)"
},
"layers": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Animation.AnimatorLayerInfo)"
}
}
}
},
"required": [
"result"
]
}
```