using Unity.MLAgents.Actuators; namespace Unity.MLAgents.Tests.Actuators { internal class TestActuator : IActuator { public ActionBuffers LastActionBuffer; public int[][] Masks; public bool m_HeuristicCalled; public int m_DiscreteBufferSize; public TestActuator(ActionSpec actuatorSpace, string name) { ActionSpec = actuatorSpace; Name = name; } public void OnActionReceived(ActionBuffers actionBuffers) { LastActionBuffer = actionBuffers; } public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) { for (var i = 0; i < Masks.Length; i++) { foreach (var actionIndex in Masks[i]) { actionMask.SetActionEnabled(i, actionIndex, false); } } } public ActionSpec ActionSpec { get; } public string Name { get; } public void ResetData() { } public void Heuristic(in ActionBuffers actionBuffersOut) { m_HeuristicCalled = true; m_DiscreteBufferSize = actionBuffersOut.DiscreteActions.Length; } } }