123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using GameFramework;
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- namespace UnityGameFramework.Runtime
- {
- public sealed partial class DebuggerComponent : GameFrameworkComponent
- {
- private sealed class ReferencePoolInformationWindow : ScrollableDebuggerWindowBase
- {
- private readonly Dictionary<string, List<ReferencePoolInfo>> m_ReferencePoolInfos = new Dictionary<string, List<ReferencePoolInfo>>(StringComparer.Ordinal);
- private readonly Comparison<ReferencePoolInfo> m_NormalClassNameComparer = NormalClassNameComparer;
- private readonly Comparison<ReferencePoolInfo> m_FullClassNameComparer = FullClassNameComparer;
- private bool m_ShowFullClassName = false;
- public override void Initialize(params object[] args)
- {
- }
- protected override void OnDrawScrollableWindow()
- {
- GUILayout.Label("<b>Reference Pool Information</b>");
- GUILayout.BeginVertical("box");
- {
- DrawItem("Enable Strict Check", ReferencePool.EnableStrictCheck.ToString());
- DrawItem("Reference Pool Count", ReferencePool.Count.ToString());
- }
- GUILayout.EndVertical();
- m_ShowFullClassName = GUILayout.Toggle(m_ShowFullClassName, "Show Full Class Name");
- m_ReferencePoolInfos.Clear();
- ReferencePoolInfo[] referencePoolInfos = ReferencePool.GetAllReferencePoolInfos();
- foreach (ReferencePoolInfo referencePoolInfo in referencePoolInfos)
- {
- string assemblyName = referencePoolInfo.Type.Assembly.GetName().Name;
- List<ReferencePoolInfo> results = null;
- if (!m_ReferencePoolInfos.TryGetValue(assemblyName, out results))
- {
- results = new List<ReferencePoolInfo>();
- m_ReferencePoolInfos.Add(assemblyName, results);
- }
- results.Add(referencePoolInfo);
- }
- foreach (KeyValuePair<string, List<ReferencePoolInfo>> assemblyReferencePoolInfo in m_ReferencePoolInfos)
- {
- GUILayout.Label(Utility.Text.Format("<b>Assembly: {0}</b>", assemblyReferencePoolInfo.Key));
- GUILayout.BeginVertical("box");
- {
- GUILayout.BeginHorizontal();
- {
- GUILayout.Label(m_ShowFullClassName ? "<b>Full Class Name</b>" : "<b>Class Name</b>");
- GUILayout.Label("<b>Unused</b>", GUILayout.Width(60f));
- GUILayout.Label("<b>Using</b>", GUILayout.Width(60f));
- GUILayout.Label("<b>Acquire</b>", GUILayout.Width(60f));
- GUILayout.Label("<b>Release</b>", GUILayout.Width(60f));
- GUILayout.Label("<b>Add</b>", GUILayout.Width(60f));
- GUILayout.Label("<b>Remove</b>", GUILayout.Width(60f));
- }
- GUILayout.EndHorizontal();
- if (assemblyReferencePoolInfo.Value.Count > 0)
- {
- assemblyReferencePoolInfo.Value.Sort(m_ShowFullClassName ? m_FullClassNameComparer : m_NormalClassNameComparer);
- foreach (ReferencePoolInfo referencePoolInfo in assemblyReferencePoolInfo.Value)
- {
- DrawReferencePoolInfo(referencePoolInfo);
- }
- }
- else
- {
- GUILayout.Label("<i>Reference Pool is Empty ...</i>");
- }
- }
- GUILayout.EndVertical();
- }
- }
- private void DrawReferencePoolInfo(ReferencePoolInfo referencePoolInfo)
- {
- GUILayout.BeginHorizontal();
- {
- GUILayout.Label(m_ShowFullClassName ? referencePoolInfo.Type.FullName : referencePoolInfo.Type.Name);
- GUILayout.Label(referencePoolInfo.UnusedReferenceCount.ToString(), GUILayout.Width(60f));
- GUILayout.Label(referencePoolInfo.UsingReferenceCount.ToString(), GUILayout.Width(60f));
- GUILayout.Label(referencePoolInfo.AcquireReferenceCount.ToString(), GUILayout.Width(60f));
- GUILayout.Label(referencePoolInfo.ReleaseReferenceCount.ToString(), GUILayout.Width(60f));
- GUILayout.Label(referencePoolInfo.AddReferenceCount.ToString(), GUILayout.Width(60f));
- GUILayout.Label(referencePoolInfo.RemoveReferenceCount.ToString(), GUILayout.Width(60f));
- }
- GUILayout.EndHorizontal();
- }
- private static int NormalClassNameComparer(ReferencePoolInfo a, ReferencePoolInfo b)
- {
- return a.Type.Name.CompareTo(b.Type.Name);
- }
- private static int FullClassNameComparer(ReferencePoolInfo a, ReferencePoolInfo b)
- {
- return a.Type.FullName.CompareTo(b.Type.FullName);
- }
- }
- }
- }
|