예제 #1
0
        private static void OnDbgGUI_AnalyseFile(string filename)
        {
            NetDebugFile file = m_mapDbgFile[filename];

            if (file == null)
            {
                file = new NetDebugFile();
                file.Open(NetDebuger.DbgFileDir, filename);
                m_mapDbgFile.Add(filename, file);
            }

            for (int i = 0; i < file.ListAllSampleName.Count; i++)
            {
                string   name  = file.ListAllSampleName[i];
                GUICurve curve = m_mapCurve[filename + ">" + name];

                if (curve == null)
                {
                    curve       = new GUICurve();
                    curve.state = false;
                    m_mapCurve[filename + ">" + name] = curve;
                }

                bool toggle = (bool)curve.state;
                toggle      = GUILayout.Toggle(toggle, name);
                curve.state = toggle;

                if (toggle)
                {
                    OnDbgGUI_ReportFileCurve(curve, file, name);
                }
            }
        }
예제 #2
0
        private static void UpdateProfileSampleList()
        {
            List <NetSampleItem> list = NetDebuger.SampleList;
            int totalCnt = list.Count;

            if (m_profileNextIndex > totalCnt)
            {
                m_mapProfileSampleList = new DictionarySafe <string, List <NetSampleItem> >();
                m_mapProfileCurve      = new DictionarySafe <string, GUICurve>();
                m_profileNextIndex     = 0;
            }


            while (m_profileNextIndex < totalCnt)
            {
                NetSampleItem        item     = list[m_profileNextIndex];
                List <NetSampleItem> listTemp = m_mapProfileSampleList[item.name];

                if (listTemp == null)
                {
                    listTemp = new List <NetSampleItem>();
                    m_mapProfileSampleList.Add(item.name, listTemp);

                    GUICurve curve = new GUICurve();
                    curve.state = false;
                    m_mapProfileCurve.Add(item.name, curve);
                }
                listTemp.Add(item);

                m_profileNextIndex++;
            }
        }
예제 #3
0
        private static void OnDbgGUI_RealtimeProfiler()
        {
            if (m_mapProfileCurve == null)
            {
                m_mapProfileCurve = new DictionarySafe <string, GUICurve>();
            }

            if (m_mapProfileSampleList == null)
            {
                m_mapProfileSampleList = new DictionarySafe <string, List <NetSampleItem> >();
            }

            try
            {
                UpdateProfileSampleList();
            }
            catch (Exception e)
            {
                Debuger.LogError(TAG, "OnDbgGUI_RealtimeProfiler() UpdateProfileSampleList: " + e.Message);
            }



            GUILayout.Label("每屏数据采样个数:" + m_NumPerPage);
            m_NumPerPage = (int)GUILayout.HorizontalSlider(m_NumPerPage, 10, 1800);

            foreach (KeyValuePair <string, List <NetSampleItem> > pair in m_mapProfileSampleList)
            {
                string   name   = pair.Key;
                GUICurve curve  = m_mapProfileCurve[name];
                bool     toggle = (bool)curve.state;
                toggle      = GUILayout.Toggle(toggle, name);
                curve.state = toggle;

                if (toggle)
                {
                    OnGUI_ReportProfiler(curve, pair.Value);
                }
            }
        }
예제 #4
0
        private static void OnGUI_ReportProfiler(GUICurve curve, List <NetSampleItem> list)
        {
            curve.Clear();

            if (list != null)
            {
                int beginIndex = list.Count - (int)m_NumPerPage;
                if (beginIndex < 0)
                {
                    beginIndex = 0;
                }

                List <Vector2> listPoints = NetDebugerGUI.DoAnalyseBasic(list, beginIndex);

                for (int i = 0; i < listPoints.Count; i++)
                {
                    curve.AddPoint(listPoints[i]);
                }
            }


            float minY = m_profilerRangeMinY;
            float maxY = m_profilerRangeMaxY;

            GUILayout.Label("RangeY:");
            GUILayout.BeginHorizontal();
            minY = GUILayout.HorizontalSlider(minY, 0, maxY);
            maxY = GUILayout.HorizontalSlider(maxY, minY, 200);
            GUILayout.EndHorizontal();
            curve.SetRangeY(minY, maxY);
            m_profilerRangeMinY = minY;
            m_profilerRangeMaxY = maxY;


            curve.DrawLayout(GUILayout.Height(200));
            Rect rect = GUILayoutUtility.GetLastRect();

            GUI.Label(rect, string.Format("X:[ {0} , {1} ]\nY:[ {2} , {3} ]", curve.MinX, curve.MaxX, curve.MinY, curve.MaxY));
        }
예제 #5
0
        private static void OnDbgGUI_ReportFileCurve(GUICurve curve, NetDebugFile file, string sampleName)
        {
            if (curve.Length == 0)
            {
                List <NetSampleItem> list       = file.GetSampleList(sampleName);
                List <Vector2>       listPoints = DoAnalyseBasic(list);
                curve.AddRangePoint(listPoints);
            }

            float minY = curve.MinY;
            float maxY = curve.MaxY;

            GUILayout.Label("RangeY:");
            GUILayout.BeginHorizontal();
            minY = GUILayout.HorizontalSlider(minY, 0, maxY);
            maxY = GUILayout.HorizontalSlider(maxY, minY, 200);
            GUILayout.EndHorizontal();
            curve.SetRangeY(minY, maxY);

            curve.DrawLayout(GUILayout.Height(200));
            Rect rect = GUILayoutUtility.GetLastRect();

            GUI.Label(rect, string.Format("X:[ {0} , {1} ]\nY:[ {2} , {3} ]", curve.MinX, curve.MaxX, curve.MinY, curve.MaxY));
        }