aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/MapAndArray.cs
diff options
context:
space:
mode:
authorUbitUmarov2019-01-06 20:10:43 +0000
committerUbitUmarov2019-01-06 20:10:43 +0000
commit950b605b429e95ffef8a184ff0218a9d36ab608a (patch)
tree7d9260bae7792440969918c3ee511b25a81ec3c3 /OpenSim/Framework/MapAndArray.cs
parentchange its foreach (diff)
downloadopensim-SC-950b605b429e95ffef8a184ff0218a9d36ab608a.zip
opensim-SC-950b605b429e95ffef8a184ff0218a9d36ab608a.tar.gz
opensim-SC-950b605b429e95ffef8a184ff0218a9d36ab608a.tar.bz2
opensim-SC-950b605b429e95ffef8a184ff0218a9d36ab608a.tar.xz
more changes on scenegraph etc
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/MapAndArray.cs28
1 files changed, 9 insertions, 19 deletions
diff --git a/OpenSim/Framework/MapAndArray.cs b/OpenSim/Framework/MapAndArray.cs
index a3ce55e..41874d0 100644
--- a/OpenSim/Framework/MapAndArray.cs
+++ b/OpenSim/Framework/MapAndArray.cs
@@ -41,8 +41,6 @@ namespace OpenSim.Framework
41 { 41 {
42 private Dictionary<TKey, TValue> m_dict; 42 private Dictionary<TKey, TValue> m_dict;
43 private TValue[] m_array; 43 private TValue[] m_array;
44 private int m_lastArrayVersion;
45 private int m_arrayVersion;
46 44
47 /// <summary>Number of values currently stored in the collection</summary> 45 /// <summary>Number of values currently stored in the collection</summary>
48 public int Count { get { return m_dict.Count; } } 46 public int Count { get { return m_dict.Count; } }
@@ -59,9 +57,7 @@ namespace OpenSim.Framework
59 public MapAndArray() 57 public MapAndArray()
60 { 58 {
61 m_dict = new Dictionary<TKey, TValue>(); 59 m_dict = new Dictionary<TKey, TValue>();
62 m_array = new TValue[0]; 60 m_array = null;
63 m_lastArrayVersion = 0;
64 m_arrayVersion = 0;
65 } 61 }
66 62
67 /// <summary> 63 /// <summary>
@@ -71,9 +67,7 @@ namespace OpenSim.Framework
71 public MapAndArray(int capacity) 67 public MapAndArray(int capacity)
72 { 68 {
73 m_dict = new Dictionary<TKey, TValue>(capacity); 69 m_dict = new Dictionary<TKey, TValue>(capacity);
74 m_array = new TValue[0]; 70 m_array = null;
75 m_lastArrayVersion = 0;
76 m_arrayVersion = 0;
77 } 71 }
78 72
79 /// <summary> 73 /// <summary>
@@ -91,7 +85,7 @@ namespace OpenSim.Framework
91 bool containedKey = m_dict.ContainsKey(key); 85 bool containedKey = m_dict.ContainsKey(key);
92 86
93 m_dict[key] = value; 87 m_dict[key] = value;
94 ++m_arrayVersion; 88 m_array = null;
95 89
96 return !containedKey; 90 return !containedKey;
97 } 91 }
@@ -109,7 +103,7 @@ namespace OpenSim.Framework
109 lock (m_syncRoot) 103 lock (m_syncRoot)
110 { 104 {
111 m_dict.Add(key, value); 105 m_dict.Add(key, value);
112 ++m_arrayVersion; 106 m_array = null;
113 return m_dict.Count; 107 return m_dict.Count;
114 } 108 }
115 } 109 }
@@ -124,7 +118,7 @@ namespace OpenSim.Framework
124 lock (m_syncRoot) 118 lock (m_syncRoot)
125 { 119 {
126 bool removed = m_dict.Remove(key); 120 bool removed = m_dict.Remove(key);
127 ++m_arrayVersion; 121 m_array = null;
128 return removed; 122 return removed;
129 } 123 }
130 } 124 }
@@ -163,9 +157,7 @@ namespace OpenSim.Framework
163 lock (m_syncRoot) 157 lock (m_syncRoot)
164 { 158 {
165 m_dict = new Dictionary<TKey, TValue>(); 159 m_dict = new Dictionary<TKey, TValue>();
166 m_array = new TValue[0]; 160 m_array = null;
167 m_lastArrayVersion = 0;
168 m_arrayVersion = 0;
169 } 161 }
170 } 162 }
171 163
@@ -179,12 +171,10 @@ namespace OpenSim.Framework
179 { 171 {
180 lock (m_syncRoot) 172 lock (m_syncRoot)
181 { 173 {
182 if(m_lastArrayVersion != m_arrayVersion) 174 if (m_array == null)
183 { 175 {
184 TValue[] array = new TValue[m_dict.Count]; 176 m_array = new TValue[m_dict.Count];
185 m_dict.Values.CopyTo(array, 0); 177 m_dict.Values.CopyTo(m_array, 0);
186 m_array = array;
187 m_lastArrayVersion = m_arrayVersion;
188 } 178 }
189 return m_array; 179 return m_array;
190 } 180 }