EditModePCHelper.cs 993 B

1234567891011121314151617181920212223242526272829303132
  1. using System.Collections;
  2. using System.Reflection;
  3. using UnityEngine.TestTools;
  4. namespace UnityEditor.TestTools.TestRunner
  5. {
  6. internal class EditModePcHelper : TestCommandPcHelper
  7. {
  8. public override void SetEnumeratorPC(IEnumerator enumerator, int pc)
  9. {
  10. GetPCFieldInfo(enumerator).SetValue(enumerator, pc);
  11. }
  12. public override int GetEnumeratorPC(IEnumerator enumerator)
  13. {
  14. if (enumerator == null)
  15. {
  16. return 0;
  17. }
  18. return (int)GetPCFieldInfo(enumerator).GetValue(enumerator);
  19. }
  20. private FieldInfo GetPCFieldInfo(IEnumerator enumerator)
  21. {
  22. var field = enumerator.GetType().GetField("$PC", BindingFlags.NonPublic | BindingFlags.Instance);
  23. if (field == null) // Roslyn
  24. field = enumerator.GetType().GetField("<>1__state", BindingFlags.NonPublic | BindingFlags.Instance);
  25. return field;
  26. }
  27. }
  28. }