#if MLA_INPUT_SYSTEM && UNITY_2019_4_OR_NEWER
using System;
using Unity.MLAgents.Actuators;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.LowLevel;
namespace Unity.MLAgents.Extensions.Input
{
///
/// Translates data from any control that extends from .
///
public class Vector2InputActionAdaptor : IRLActionInputAdaptor
{
///
public ActionSpec GetActionSpecForInputAction(InputAction action)
{
// TODO create the action spec based on what controls back the action
return ActionSpec.MakeContinuous(2);
}
///
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);
}
///
public void WriteToHeuristic(InputAction action, in ActionBuffers actionBuffers)
{
var value = action.ReadValue();
var continuousActions = actionBuffers.ContinuousActions;
continuousActions[0] = value.x;
continuousActions[1] = value.y;
}
}
}
#endif // MLA_INPUT_SYSTEM && UNITY_2019_4_OR_NEWER