private void AddReference(Reference @ref) { var info = new ReferencePoolInfo(@ref); _referenceMap.Add(@ref, info); @ref.SetEngine(_owner); }
private void IncrementReferenceCount(Reference @ref) { ReferencePoolInfo info = _referenceMap[@ref]; info.Count += 1; _referenceMap[@ref] = info; }
private void RehashReference(Reference @ref) { ReferencePoolInfo info = _referenceMap[@ref]; _referenceMap.Remove(@ref); @ref.ComputeHashCode(); _referenceMap.Add(@ref, info); }
public Reference GetPooledReference(Reference target) { if (_referenceMap.ContainsKey(target)) { ReferencePoolInfo info = _referenceMap[target]; return(info.Target); } return(null); }
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)); } }
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(); }
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; } }
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())); }
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)); }