public FrameInfoCrawler(ReflectionCache rcache) { this.reflectionCache = rcache; this.frameDebuggeUtil = reflectionCache.GetTypeObject("UnityEditorInternal.FrameDebuggerUtility"); this.frameEventData = reflectionCache.GetTypeObject("UnityEditorInternal.FrameDebuggerEventData"); var frameDebuggerWindowType = this.reflectionCache.GetTypeObject("UnityEditor.FrameDebuggerWindow"); var window = frameDebuggerWindowType.CallMethod <object>("ShowFrameDebuggerWindow", null, null); this.frameDebuggerWindowObj = new ReflectionClassWithObject(frameDebuggerWindowType, window); this.IsRunning = false; this.alreadyWriteTextureDict = new Dictionary <int, TextureUtility.SaveTextureInfo>(); this.savedRenderTexture = new Dictionary <SavedRenderTextureInfo, TextureUtility.SaveTextureInfo>(); this.renderTextureLastChanged = new Dictionary <int, int>(); }
public void Execute(FrameInfoCrawler.CaptureFlag flag, System.Action endCall = null) { this.captureFlag = flag; if (this.reflectionCache == null) { this.reflectionCache = new ReflectionCache(); } this.OnEndAct = endCall; var frameDebuggeUtil = reflectionCache.GetTypeObject("UnityEditorInternal.FrameDebuggerUtility"); // show FrameDebuggerWindow var frameDebuggerWindow = reflectionCache.GetTypeObject("UnityEditor.FrameDebuggerWindow"); object windowObj = frameDebuggerWindow.CallMethod <object>("ShowFrameDebuggerWindow", null, null); frameDebuggerWindow.CallMethod <object>("EnableIfNeeded", windowObj, null); if (crawler == null) { crawler = new FrameInfoCrawler(this.reflectionCache); } crawler.Request(flag, EndCrawler); }
public static List <T> CopyToListFromArray <T>(ReflectionCache cache, System.Array arr) { if (arr == null) { return(null); } List <T> list = new List <T>(arr.Length); if (arr.Length <= 0) { return(list); } foreach (var obj in arr) { T dest = (T)System.Activator.CreateInstance(typeof(T)); var reflectionType = cache.GetTypeObject(obj.GetType()); var reflectionClassWithObject = new ReflectionClassWithObject(reflectionType, obj); reflectionClassWithObject.CopyFieldsToObjectByVarName(ref dest); list.Add(dest); } return(list); }