示例#1
0
        private void AddReference(Reference @ref)
        {
            var info = new ReferencePoolInfo(@ref);

            _referenceMap.Add(@ref, info);
            @ref.SetEngine(_owner);
        }
示例#2
0
        private void IncrementReferenceCount(Reference @ref)
        {
            ReferencePoolInfo info = _referenceMap[@ref];

            info.Count         += 1;
            _referenceMap[@ref] = info;
        }
示例#3
0
        private void RehashReference(Reference @ref)
        {
            ReferencePoolInfo info = _referenceMap[@ref];

            _referenceMap.Remove(@ref);
            @ref.ComputeHashCode();
            _referenceMap.Add(@ref, info);
        }
示例#4
0
 public Reference GetPooledReference(Reference target)
 {
     if (_referenceMap.ContainsKey(target))
     {
         ReferencePoolInfo info = _referenceMap[target];
         return(info.Target);
     }
     return(null);
 }
示例#5
0
 private int Comparison(ReferencePoolInfo a, ReferencePoolInfo b)
 {
     if (m_ShowFullClassName)
     {
         return(a.Type.FullName.CompareTo(b.Type.FullName));
     }
     else
     {
         return(a.Type.Name.CompareTo(b.Type.Name));
     }
 }
示例#6
0
 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();
 }
示例#7
0
        public void RemoveReference(Reference @ref)
        {
            if (@ref.Valid == false)
            {
                return;
            }
            if (_referenceMap.ContainsKey(@ref) == false)
            {
                throw new ArgumentException("Reference is not in pool");
            }

            ReferencePoolInfo info = _referenceMap[@ref];

            info.Count -= 1;

            if (info.Count == 0)
            {
                _referenceMap.Remove(@ref);
            }
            else
            {
                _referenceMap[@ref] = info;
            }
        }
示例#8
0
 private void DrawReferencePoolInfo(ReferencePoolInfo referencePoolInfo)
 {
     EditorGUILayout.LabelField(referencePoolInfo.TypeName, Utility.Text.Format("[Unused]{0} [Using]{1} [Acquire]{2} [Release]{3} [Add]{4} [Remove]{5}", referencePoolInfo.UnusedReferenceCount.ToString(), referencePoolInfo.UsingReferenceCount.ToString(), referencePoolInfo.AcquireReferenceCount.ToString(), referencePoolInfo.ReleaseReferenceCount.ToString(), referencePoolInfo.AddReferenceCount.ToString(), referencePoolInfo.RemoveReferenceCount.ToString()));
 }
示例#9
0
 private void DrawReferencePoolInfo(ReferencePoolInfo referencePoolInfo)
 {
     EditorGUILayout.LabelField(m_ShowFullClassName ? referencePoolInfo.Type.FullName : referencePoolInfo.Type.Name, Utility.Text.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", referencePoolInfo.UnusedReferenceCount.ToString(), referencePoolInfo.UsingReferenceCount.ToString(), referencePoolInfo.AcquireReferenceCount.ToString(), referencePoolInfo.ReleaseReferenceCount.ToString(), referencePoolInfo.AddReferenceCount.ToString(), referencePoolInfo.RemoveReferenceCount.ToString()));
 }
 private static int FullClassNameComparer(ReferencePoolInfo a, ReferencePoolInfo b)
 {
     return(a.Type.FullName.CompareTo(b.Type.FullName));
 }