| | #if MLA_INPUT_SYSTEM |
| |
|
| | using Unity.MLAgents.Actuators; |
| | using Unity.MLAgents.Policies; |
| | using UnityEngine.InputSystem; |
| | using UnityEngine.Profiling; |
| |
|
| | namespace Unity.MLAgents.Extensions.Input |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | public class InputActionActuator : IActuator, IBuiltInActuator |
| | { |
| | readonly BehaviorParameters m_BehaviorParameters; |
| | readonly InputAction m_Action; |
| | readonly IRLActionInputAdaptor m_InputAdaptor; |
| | InputActuatorEventContext m_InputActuatorEventContext; |
| | InputDevice m_Device; |
| | InputControl m_Control; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public InputActionActuator(InputDevice inputDevice, BehaviorParameters behaviorParameters, |
| | InputAction action, |
| | IRLActionInputAdaptor adaptor, |
| | InputActuatorEventContext inputActuatorEventContext) |
| | { |
| | m_BehaviorParameters = behaviorParameters; |
| | Name = $"InputActionActuator-{action.name}"; |
| | m_Action = action; |
| | m_InputAdaptor = adaptor; |
| | m_InputActuatorEventContext = inputActuatorEventContext; |
| | ActionSpec = adaptor.GetActionSpecForInputAction(m_Action); |
| | m_Device = inputDevice; |
| | m_Control = m_Device?.GetChildControl(m_Action.name); |
| | } |
| |
|
| | |
| | public void OnActionReceived(ActionBuffers actionBuffers) |
| | { |
| | Profiler.BeginSample("InputActionActuator.OnActionReceived"); |
| | if (!m_BehaviorParameters.IsInHeuristicMode()) |
| | { |
| | using (m_InputActuatorEventContext.GetEventForFrame(out var eventPtr)) |
| | { |
| | m_InputAdaptor.WriteToInputEventForAction(eventPtr, m_Action, m_Control, ActionSpec, actionBuffers); |
| | } |
| | } |
| | Profiler.EndSample(); |
| | } |
| |
|
| | |
| | public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) |
| | { |
| | |
| | } |
| |
|
| | |
| | public ActionSpec ActionSpec { get; } |
| |
|
| | |
| | public string Name { get; } |
| |
|
| | |
| | public void ResetData() |
| | { |
| | |
| | } |
| |
|
| | |
| | public void Heuristic(in ActionBuffers actionBuffersOut) |
| | { |
| | Profiler.BeginSample("InputActionActuator.Heuristic"); |
| | m_InputAdaptor.WriteToHeuristic(m_Action, actionBuffersOut); |
| | Profiler.EndSample(); |
| | } |
| |
|
| | |
| | public BuiltInActuatorType GetBuiltInActuatorType() |
| | { |
| | return BuiltInActuatorType.InputActionActuator; |
| | } |
| | } |
| | } |
| |
|
| | #endif // MLA_INPUT_SYSTEM |
| |
|