public T GetPropertyValue <T>(string p) { return(type.GetPropertyValue <T>(p, this.target)); }
private IEnumerator Execute() { currentProgress = 0.0f; var waitForConnect = WaitForRemoteConnect(10.0); while (waitForConnect.MoveNext()) { yield return(null); } yield return(null); yield return(null); var r = this.reflectionCache; var frameEvents = frameDebuggeUtil.CallMethod <System.Array>("GetFrameEvents", null, null); var breakReasons = frameDebuggeUtil.CallMethod <string[]>("GetBatchBreakCauseStrings", null, null); var frameEventDatas = r.GetTypeObject("UnityEditorInternal.FrameDebuggerEventData"); var evtData = frameDebuggeUtil.CreateInstance(); int count = frameDebuggeUtil.GetPropertyValue <int>("count", null); this.CreateFrameDebuggerEventList(frameEvents); this.frameDebuggerEventDataList = new List <FrameDebuggerEventData>(count); for (int i = 0; i <= count; ++i) { yield return(null); this.frameDebuggerWindowObj.CallMethod <object>("ChangeFrameEventLimit", new object[] { i }); this.frameDebuggerWindowObj.CallMethod <object>("RepaintOnLimitChange", null); int targetFrameIdx = i - 1; if (targetFrameIdx < 0 || targetFrameIdx >= frameEvents.Length) { continue; } // getTargetFrameInfo var eventDataCoroutine = this.TryGetFrameEvnetData(targetFrameIdx, 2.0); while (eventDataCoroutine.MoveNext()) { yield return(null); } var frameData = currentFrameEventData; if (frameData == null) { UnityEngine.Debug.LogWarning("failed capture " + targetFrameIdx); continue; } FrameDebuggerEventData frameInfo = new FrameDebuggerEventData(); frameData.CopyFieldsToObjectByVarName <FrameDebuggerEventData>(ref frameInfo); frameInfo.batchBreakCauseStr = breakReasons[frameInfo.batchBreakCause]; this.CreateShaderPropInfos(frameInfo); frameDebuggerEventDataList.Add(frameInfo); bool isRemoteEnalbed = frameDebuggeUtil.CallMethod <bool>("IsRemoteEnabled", null, null); if (!isRemoteEnalbed) { SetRenderTextureLastChange(frameInfo); // save shader texture ExecuteShaderTextureSave(frameInfo); // capture screen shot ExecuteSaveScreenShot(frameInfo, (i == count)); } } yield return(null); }