ppo-Pyramids-Training / com.unity.ml-agents.extensions /Runtime /Input /Adaptors /Vector2InputActionAdaptor.cs
| using Unity.MLAgents.Actuators; | |
| using UnityEngine; | |
| using UnityEngine.InputSystem; | |
| using UnityEngine.InputSystem.LowLevel; | |
| namespace Unity.MLAgents.Extensions.Input | |
| { | |
| /// <summary> | |
| /// Translates data from any control that extends from <see cref="InputControl{Vector2}"/>. | |
| /// </summary> | |
| public class Vector2InputActionAdaptor : IRLActionInputAdaptor | |
| { | |
| /// <inheritdoc cref="IRLActionInputAdaptor.GetActionSpecForInputAction"/> | |
| public ActionSpec GetActionSpecForInputAction(InputAction action) | |
| { | |
| // TODO create the action spec based on what controls back the action | |
| return ActionSpec.MakeContinuous(2); | |
| } | |
| /// <inheritdoc cref="IRLActionInputAdaptor.WriteToInputEventForAction"/> | |
| public void WriteToInputEventForAction(InputEventPtr eventPtr, InputAction action, | |
| InputControl control, | |
| ActionSpec actionSpec, | |
| in ActionBuffers actionBuffers) | |
| { | |
| var x = actionBuffers.ContinuousActions[0]; | |
| var y = actionBuffers.ContinuousActions[1]; | |
| control.WriteValueIntoEvent(new Vector2(x, y), eventPtr); | |
| } | |
| /// <inheritdoc cref="IRLActionInputAdaptor.WriteToHeuristic"/> | |
| public void WriteToHeuristic(InputAction action, in ActionBuffers actionBuffers) | |
| { | |
| var value = action.ReadValue<Vector2>(); | |
| var continuousActions = actionBuffers.ContinuousActions; | |
| continuousActions[0] = value.x; | |
| continuousActions[1] = value.y; | |
| } | |
| } | |
| } | |