| using System; |
|
|
| namespace Unity.MLAgents |
| { |
| internal class RecursionChecker : IDisposable |
| { |
| private bool m_IsRunning; |
| private string m_MethodName; |
|
|
| public RecursionChecker(string methodName) |
| { |
| m_MethodName = methodName; |
| } |
|
|
| public IDisposable Start() |
| { |
| if (m_IsRunning) |
| { |
| throw new UnityAgentsException( |
| $"{m_MethodName} called recursively. " + |
| "This might happen if you call EnvironmentStep() or EndEpisode() from custom " + |
| "code such as CollectObservations() or OnActionReceived()." |
| ); |
| } |
| m_IsRunning = true; |
| return this; |
| } |
|
|
| public void Dispose() |
| { |
| |
| m_IsRunning = false; |
| } |
| } |
| } |
|
|