示例#1
0
        // Token: 0x06000589 RID: 1417 RVA: 0x0001B8F8 File Offset: 0x00019AF8
        private global::System.Collections.IEnumerator Measure()
        {
            global::System.Collections.Generic.List <global::UnityEngine.GameObject> queue = global::System.Linq.Enumerable.ToList <global::UnityEngine.GameObject>(global::System.Linq.Enumerable.Where <global::UnityEngine.GameObject>(global::System.Linq.Enumerable.Except <global::UnityEngine.GameObject>(global::VRGIN.Helpers.UnityHelper.GetRootNodes(), new global::UnityEngine.GameObject[]
            {
                base.gameObject
            }), (global::UnityEngine.GameObject n) => !n.name.StartsWith("VRGIN") && !n.name.StartsWith("[")));
            yield return(base.StartCoroutine(this.MeasureFramerate(30)));

            double startInterval = this._CurrentInterval;

            global::VRGIN.Core.VRLog.Info("Starting to profile! This might take a while...", global::System.Array.Empty <object>());
            while (queue.Count > 0)
            {
                global::UnityEngine.GameObject obj = global::System.Linq.Enumerable.First <global::UnityEngine.GameObject>(queue);
                queue.RemoveAt(0);
                bool flag = !obj.activeInHierarchy;
                if (!flag)
                {
                    obj.SetActive(false);
                    yield return(base.StartCoroutine(this.MeasureFramerate(30)));

                    obj.SetActive(true);
                    double impact = startInterval / this._CurrentInterval;
                    global::VRGIN.Core.VRLog.Info("{0}{1}: {2:0.00}", new object[]
                    {
                        string.Join("", global::System.Linq.Enumerable.ToArray <string>(global::System.Linq.Enumerable.Repeat <string>(" ", obj.transform.Depth()))),
                        obj.name,
                        impact
                    });
                    bool flag2 = impact > 1.1499999761581421;
                    if (flag2)
                    {
                        queue.InsertRange(0, obj.Children());
                        foreach (global::UnityEngine.Behaviour component in global::System.Linq.Enumerable.Where <global::UnityEngine.Behaviour>(obj.GetComponents <global::UnityEngine.Behaviour>(), (global::UnityEngine.Behaviour c) => c.enabled))
                        {
                            component.enabled = false;
                            yield return(base.StartCoroutine(this.MeasureFramerate(30)));

                            component.enabled = true;
                            impact            = startInterval / this._CurrentInterval;
                            global::VRGIN.Core.VRLog.Info("{0}{1} [{2}]: {3:0.000}", new object[]
                            {
                                string.Join("", global::System.Linq.Enumerable.ToArray <string>(global::System.Linq.Enumerable.Repeat <string>(" ", obj.transform.Depth()))),
                                obj.name,
                                component.GetType().Name,
                                impact
                            });
                            component = null;
                        }
                        global::System.Collections.Generic.IEnumerator <global::UnityEngine.Behaviour> enumerator = null;
                    }
                    yield return(null);

                    obj = null;
                }
            }
            global::VRGIN.Core.VRLog.Info("Done!", global::System.Array.Empty <object>());
            this._Callback();
            global::UnityEngine.Object.Destroy(base.gameObject);
            yield break;
            yield break;
        }