aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Land
diff options
context:
space:
mode:
authorMelanie2011-04-01 07:44:43 +0100
committerMelanie2011-04-01 07:44:43 +0100
commit329fa73695b496a30e9192888371855802769a16 (patch)
treef581712c3317119b70005beecbe7e4a8d86fb6bc /OpenSim/Region/CoreModules/World/Land
parentMake the login service's call to the sim time out quicker so we have a (diff)
parentWhen a new parcel is created, make sure the prim counts are updated. (diff)
downloadopensim-SC-329fa73695b496a30e9192888371855802769a16.zip
opensim-SC-329fa73695b496a30e9192888371855802769a16.tar.gz
opensim-SC-329fa73695b496a30e9192888371855802769a16.tar.bz2
opensim-SC-329fa73695b496a30e9192888371855802769a16.tar.xz
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Land')
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs161
-rw-r--r--OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs61
4 files changed, 205 insertions, 21 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 50040ff..b5517a1 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -722,7 +722,7 @@ namespace OpenSim.Region.CoreModules.World.Land
722 ILandObject landUnderPrim = GetLandObject(position.X, position.Y); 722 ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
723 if (landUnderPrim != null) 723 if (landUnderPrim != null)
724 { 724 {
725 landUnderPrim.AddPrimToCount(obj); 725 ((LandObject)landUnderPrim).AddPrimToCount(obj);
726 } 726 }
727 } 727 }
728 728
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
index 1e824bd..e87153b 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
@@ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.World.Land
243 } 243 }
244 244
245 remote_client.SendLandProperties(seq_id, 245 remote_client.SendLandProperties(seq_id,
246 snap_selection, request_result, LandData, 246 snap_selection, request_result, this,
247 (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, 247 (float)m_scene.RegionInfo.RegionSettings.ObjectBonus,
248 GetParcelMaxPrimCount(this), 248 GetParcelMaxPrimCount(this),
249 GetSimulatorMaxPrimCount(this), regionFlags); 249 GetSimulatorMaxPrimCount(this), regionFlags);
diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
index 62fd2b0..854d1ca 100644
--- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
@@ -45,14 +45,13 @@ namespace OpenSim.Region.CoreModules.World.Land
45 public int Owner = 0; 45 public int Owner = 0;
46 public int Group = 0; 46 public int Group = 0;
47 public int Others = 0; 47 public int Others = 0;
48 public Dictionary <UUID, int> Users = 48 public int Selected = 0;
49 new Dictionary <UUID, int>(); 49 public Dictionary <UUID, int> Users = new Dictionary <UUID, int>();
50 } 50 }
51 51
52 public class PrimCountModule : IPrimCountModule, INonSharedRegionModule 52 public class PrimCountModule : IPrimCountModule, INonSharedRegionModule
53 { 53 {
54// private static readonly ILog m_log = 54 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
55// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
56 55
57 private Scene m_Scene; 56 private Scene m_Scene;
58 private Dictionary<UUID, PrimCounts> m_PrimCounts = 57 private Dictionary<UUID, PrimCounts> m_PrimCounts =
@@ -64,7 +63,6 @@ namespace OpenSim.Region.CoreModules.World.Land
64 private Dictionary<UUID, ParcelCounts> m_ParcelCounts = 63 private Dictionary<UUID, ParcelCounts> m_ParcelCounts =
65 new Dictionary<UUID, ParcelCounts>(); 64 new Dictionary<UUID, ParcelCounts>();
66 65
67
68 /// <value> 66 /// <value>
69 /// For now, a simple simwide taint to get this up. Later parcel based 67 /// For now, a simple simwide taint to get this up. Later parcel based
70 /// taint to allow recounting a parcel if only ownership has changed 68 /// taint to allow recounting a parcel if only ownership has changed
@@ -96,6 +94,7 @@ namespace OpenSim.Region.CoreModules.World.Land
96 OnObjectBeingRemovedFromScene; 94 OnObjectBeingRemovedFromScene;
97 m_Scene.EventManager.OnParcelPrimCountTainted += 95 m_Scene.EventManager.OnParcelPrimCountTainted +=
98 OnParcelPrimCountTainted; 96 OnParcelPrimCountTainted;
97 m_Scene.EventManager.OnLandObjectAdded += delegate(ILandObject lo) { OnParcelPrimCountTainted(); };
99 } 98 }
100 99
101 public void RegionLoaded(Scene scene) 100 public void RegionLoaded(Scene scene)
@@ -123,6 +122,11 @@ namespace OpenSim.Region.CoreModules.World.Land
123 { 122 {
124 if (!m_Tainted) 123 if (!m_Tainted)
125 AddObject(obj); 124 AddObject(obj);
125// else
126// m_log.DebugFormat(
127// "[PRIM COUNT MODULE]: Ignoring OnParcelPrimCountAdd() for {0} on {1} since count is tainted",
128// obj.Name, m_Scene.RegionInfo.RegionName);
129
126 } 130 }
127 } 131 }
128 132
@@ -133,11 +137,18 @@ namespace OpenSim.Region.CoreModules.World.Land
133 { 137 {
134 if (!m_Tainted) 138 if (!m_Tainted)
135 RemoveObject(obj); 139 RemoveObject(obj);
140// else
141// m_log.DebugFormat(
142// "[PRIM COUNT MODULE]: Ignoring OnObjectBeingRemovedFromScene() for {0} on {1} since count is tainted",
143// obj.Name, m_Scene.RegionInfo.RegionName);
136 } 144 }
137 } 145 }
138 146
139 private void OnParcelPrimCountTainted() 147 private void OnParcelPrimCountTainted()
140 { 148 {
149// m_log.DebugFormat(
150// "[PRIM COUNT MODULE]: OnParcelPrimCountTainted() called on {0}", m_Scene.RegionInfo.RegionName);
151
141 lock (m_TaintLock) 152 lock (m_TaintLock)
142 m_Tainted = true; 153 m_Tainted = true;
143 } 154 }
@@ -163,7 +174,7 @@ namespace OpenSim.Region.CoreModules.World.Land
163 // NOTE: Call under Taint Lock 174 // NOTE: Call under Taint Lock
164 private void AddObject(SceneObjectGroup obj) 175 private void AddObject(SceneObjectGroup obj)
165 { 176 {
166// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} to prim count", obj.Name); 177// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} {1} to prim count", obj.Name, obj.UUID);
167 178
168 if (obj.IsAttachment) 179 if (obj.IsAttachment)
169 return; 180 return;
@@ -208,16 +219,25 @@ namespace OpenSim.Region.CoreModules.World.Land
208 else 219 else
209 parcelCounts.Others += partCount; 220 parcelCounts.Others += partCount;
210 } 221 }
222
223 if (obj.IsSelected)
224 parcelCounts.Selected += partCount;
211 } 225 }
212 } 226 }
213 227
214 // NOTE: Call under Taint Lock 228 // NOTE: Call under Taint Lock
215 private void RemoveObject(SceneObjectGroup obj) 229 private void RemoveObject(SceneObjectGroup obj)
216 { 230 {
231// m_log.DebugFormat("[PRIM COUNT MODULE]: Removing object {0} {1} from prim count", obj.Name, obj.UUID);
232
233 // Currently this is being done by tainting the count instead.
217 } 234 }
218 235
219 public IPrimCounts GetPrimCounts(UUID parcelID) 236 public IPrimCounts GetPrimCounts(UUID parcelID)
220 { 237 {
238// m_log.DebugFormat(
239// "[PRIM COUNT MODULE]: GetPrimCounts for parcel {0} in {1}", parcelID, m_Scene.RegionInfo.RegionName);
240
221 PrimCounts primCounts; 241 PrimCounts primCounts;
222 242
223 lock (m_PrimCounts) 243 lock (m_PrimCounts)
@@ -239,7 +259,7 @@ namespace OpenSim.Region.CoreModules.World.Land
239 /// <returns></returns> 259 /// <returns></returns>
240 public int GetOwnerCount(UUID parcelID) 260 public int GetOwnerCount(UUID parcelID)
241 { 261 {
242// m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); 262 int count = 0;
243 263
244 lock (m_TaintLock) 264 lock (m_TaintLock)
245 { 265 {
@@ -248,9 +268,14 @@ namespace OpenSim.Region.CoreModules.World.Land
248 268
249 ParcelCounts counts; 269 ParcelCounts counts;
250 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 270 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
251 return counts.Owner; 271 count = counts.Owner;
252 } 272 }
253 return 0; 273
274// m_log.DebugFormat(
275// "[PRIM COUNT MODULE]: GetOwnerCount for parcel {0} in {1} returning {2}",
276// parcelID, m_Scene.RegionInfo.RegionName, count);
277
278 return count;
254 } 279 }
255 280
256 /// <summary> 281 /// <summary>
@@ -260,6 +285,8 @@ namespace OpenSim.Region.CoreModules.World.Land
260 /// <returns></returns> 285 /// <returns></returns>
261 public int GetGroupCount(UUID parcelID) 286 public int GetGroupCount(UUID parcelID)
262 { 287 {
288 int count = 0;
289
263 lock (m_TaintLock) 290 lock (m_TaintLock)
264 { 291 {
265 if (m_Tainted) 292 if (m_Tainted)
@@ -267,9 +294,14 @@ namespace OpenSim.Region.CoreModules.World.Land
267 294
268 ParcelCounts counts; 295 ParcelCounts counts;
269 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 296 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
270 return counts.Group; 297 count = counts.Group;
271 } 298 }
272 return 0; 299
300// m_log.DebugFormat(
301// "[PRIM COUNT MODULE]: GetGroupCount for parcel {0} in {1} returning {2}",
302// parcelID, m_Scene.RegionInfo.RegionName, count);
303
304 return count;
273 } 305 }
274 306
275 /// <summary> 307 /// <summary>
@@ -279,6 +311,61 @@ namespace OpenSim.Region.CoreModules.World.Land
279 /// <returns></returns> 311 /// <returns></returns>
280 public int GetOthersCount(UUID parcelID) 312 public int GetOthersCount(UUID parcelID)
281 { 313 {
314 int count = 0;
315
316 lock (m_TaintLock)
317 {
318 if (m_Tainted)
319 Recount();
320
321 ParcelCounts counts;
322 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
323 count = counts.Others;
324 }
325
326// m_log.DebugFormat(
327// "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",
328// parcelID, m_Scene.RegionInfo.RegionName, count);
329
330 return count;
331 }
332
333 /// <summary>
334 /// Get the number of selected prims.
335 /// </summary>
336 /// <param name="parcelID"></param>
337 /// <returns></returns>
338 public int GetSelectedCount(UUID parcelID)
339 {
340 int count = 0;
341
342 lock (m_TaintLock)
343 {
344 if (m_Tainted)
345 Recount();
346
347 ParcelCounts counts;
348 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
349 count = counts.Selected;
350 }
351
352// m_log.DebugFormat(
353// "[PRIM COUNT MODULE]: GetSelectedCount for parcel {0} in {1} returning {2}",
354// parcelID, m_Scene.RegionInfo.RegionName, count);
355
356 return count;
357 }
358
359 /// <summary>
360 /// Get the total count of owner, group and others prims on the parcel.
361 /// FIXME: Need to do selected prims once this is reimplemented.
362 /// </summary>
363 /// <param name="parcelID"></param>
364 /// <returns></returns>
365 public int GetTotalCount(UUID parcelID)
366 {
367 int count = 0;
368
282 lock (m_TaintLock) 369 lock (m_TaintLock)
283 { 370 {
284 if (m_Tainted) 371 if (m_Tainted)
@@ -286,9 +373,18 @@ namespace OpenSim.Region.CoreModules.World.Land
286 373
287 ParcelCounts counts; 374 ParcelCounts counts;
288 if (m_ParcelCounts.TryGetValue(parcelID, out counts)) 375 if (m_ParcelCounts.TryGetValue(parcelID, out counts))
289 return counts.Others; 376 {
377 count = counts.Owner;
378 count += counts.Group;
379 count += counts.Others;
380 }
290 } 381 }
291 return 0; 382
383// m_log.DebugFormat(
384// "[PRIM COUNT MODULE]: GetTotalCount for parcel {0} in {1} returning {2}",
385// parcelID, m_Scene.RegionInfo.RegionName, count);
386
387 return count;
292 } 388 }
293 389
294 /// <summary> 390 /// <summary>
@@ -298,6 +394,8 @@ namespace OpenSim.Region.CoreModules.World.Land
298 /// <returns></returns> 394 /// <returns></returns>
299 public int GetSimulatorCount(UUID parcelID) 395 public int GetSimulatorCount(UUID parcelID)
300 { 396 {
397 int count = 0;
398
301 lock (m_TaintLock) 399 lock (m_TaintLock)
302 { 400 {
303 if (m_Tainted) 401 if (m_Tainted)
@@ -308,10 +406,15 @@ namespace OpenSim.Region.CoreModules.World.Land
308 { 406 {
309 int val; 407 int val;
310 if (m_SimwideCounts.TryGetValue(owner, out val)) 408 if (m_SimwideCounts.TryGetValue(owner, out val))
311 return val; 409 count = val;
312 } 410 }
313 } 411 }
314 return 0; 412
413// m_log.DebugFormat(
414// "[PRIM COUNT MODULE]: GetOthersCount for parcel {0} in {1} returning {2}",
415// parcelID, m_Scene.RegionInfo.RegionName, count);
416
417 return count;
315 } 418 }
316 419
317 /// <summary> 420 /// <summary>
@@ -322,6 +425,8 @@ namespace OpenSim.Region.CoreModules.World.Land
322 /// <returns></returns> 425 /// <returns></returns>
323 public int GetUserCount(UUID parcelID, UUID userID) 426 public int GetUserCount(UUID parcelID, UUID userID)
324 { 427 {
428 int count = 0;
429
325 lock (m_TaintLock) 430 lock (m_TaintLock)
326 { 431 {
327 if (m_Tainted) 432 if (m_Tainted)
@@ -332,10 +437,15 @@ namespace OpenSim.Region.CoreModules.World.Land
332 { 437 {
333 int val; 438 int val;
334 if (counts.Users.TryGetValue(userID, out val)) 439 if (counts.Users.TryGetValue(userID, out val))
335 return val; 440 count = val;
336 } 441 }
337 } 442 }
338 return 0; 443
444// m_log.DebugFormat(
445// "[PRIM COUNT MODULE]: GetUserCount for user {0} in parcel {1} in region {2} returning {3}",
446// userID, parcelID, m_Scene.RegionInfo.RegionName, count);
447
448 return count;
339 } 449 }
340 450
341 // NOTE: This method MUST be called while holding the taint lock! 451 // NOTE: This method MUST be called while holding the taint lock!
@@ -367,6 +477,7 @@ namespace OpenSim.Region.CoreModules.World.Land
367 if (!m_OwnerMap.ContainsKey(k)) 477 if (!m_OwnerMap.ContainsKey(k))
368 m_PrimCounts.Remove(k); 478 m_PrimCounts.Remove(k);
369 } 479 }
480
370 m_Tainted = false; 481 m_Tainted = false;
371 } 482 }
372 } 483 }
@@ -408,6 +519,22 @@ namespace OpenSim.Region.CoreModules.World.Land
408 return m_Parent.GetOthersCount(m_ParcelID); 519 return m_Parent.GetOthersCount(m_ParcelID);
409 } 520 }
410 } 521 }
522
523 public int Selected
524 {
525 get
526 {
527 return m_Parent.GetSelectedCount(m_ParcelID);
528 }
529 }
530
531 public int Total
532 {
533 get
534 {
535 return m_Parent.GetTotalCount(m_ParcelID);
536 }
537 }
411 538
412 public int Simulator 539 public int Simulator
413 { 540 {
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
index c9d393f..5a60f22 100644
--- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
+++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
@@ -78,9 +78,11 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
78 Assert.That(pc.Owner, Is.EqualTo(0)); 78 Assert.That(pc.Owner, Is.EqualTo(0));
79 Assert.That(pc.Group, Is.EqualTo(0)); 79 Assert.That(pc.Group, Is.EqualTo(0));
80 Assert.That(pc.Others, Is.EqualTo(0)); 80 Assert.That(pc.Others, Is.EqualTo(0));
81 Assert.That(pc.Total, Is.EqualTo(0));
82 Assert.That(pc.Selected, Is.EqualTo(0));
81 Assert.That(pc.Users[m_userId], Is.EqualTo(0)); 83 Assert.That(pc.Users[m_userId], Is.EqualTo(0));
82 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 84 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
83 Assert.That(pc.Simulator, Is.EqualTo(0)); 85 Assert.That(pc.Simulator, Is.EqualTo(0));
84 86
85 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); 87 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
86 m_scene.AddNewSceneObject(sog, false); 88 m_scene.AddNewSceneObject(sog, false);
@@ -88,6 +90,8 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
88 Assert.That(pc.Owner, Is.EqualTo(3)); 90 Assert.That(pc.Owner, Is.EqualTo(3));
89 Assert.That(pc.Group, Is.EqualTo(0)); 91 Assert.That(pc.Group, Is.EqualTo(0));
90 Assert.That(pc.Others, Is.EqualTo(0)); 92 Assert.That(pc.Others, Is.EqualTo(0));
93 Assert.That(pc.Total, Is.EqualTo(3));
94 Assert.That(pc.Selected, Is.EqualTo(0));
91 Assert.That(pc.Users[m_userId], Is.EqualTo(3)); 95 Assert.That(pc.Users[m_userId], Is.EqualTo(3));
92 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 96 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
93 Assert.That(pc.Simulator, Is.EqualTo(3)); 97 Assert.That(pc.Simulator, Is.EqualTo(3));
@@ -99,12 +103,39 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
99 Assert.That(pc.Owner, Is.EqualTo(5)); 103 Assert.That(pc.Owner, Is.EqualTo(5));
100 Assert.That(pc.Group, Is.EqualTo(0)); 104 Assert.That(pc.Group, Is.EqualTo(0));
101 Assert.That(pc.Others, Is.EqualTo(0)); 105 Assert.That(pc.Others, Is.EqualTo(0));
106 Assert.That(pc.Total, Is.EqualTo(5));
107 Assert.That(pc.Selected, Is.EqualTo(0));
102 Assert.That(pc.Users[m_userId], Is.EqualTo(5)); 108 Assert.That(pc.Users[m_userId], Is.EqualTo(5));
103 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 109 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
104 Assert.That(pc.Simulator, Is.EqualTo(5)); 110 Assert.That(pc.Simulator, Is.EqualTo(5));
105 } 111 }
106 112
107 /// <summary> 113 /// <summary>
114 /// Test count after a parcel owner owned copied object is added.
115 /// </summary>
116 [Test]
117 public void TestCopiedOwnerObject()
118 {
119 TestHelper.InMethod();
120// log4net.Config.XmlConfigurator.Configure();
121
122 IPrimCounts pc = m_lo.PrimCounts;
123
124 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
125 m_scene.AddNewSceneObject(sog, false);
126 m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity);
127
128 Assert.That(pc.Owner, Is.EqualTo(6));
129 Assert.That(pc.Group, Is.EqualTo(0));
130 Assert.That(pc.Others, Is.EqualTo(0));
131 Assert.That(pc.Total, Is.EqualTo(6));
132 Assert.That(pc.Selected, Is.EqualTo(0));
133 Assert.That(pc.Users[m_userId], Is.EqualTo(6));
134 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
135 Assert.That(pc.Simulator, Is.EqualTo(6));
136 }
137
138 /// <summary>
108 /// Test count after a parcel owner owned object is removed. 139 /// Test count after a parcel owner owned object is removed.
109 /// </summary> 140 /// </summary>
110 [Test] 141 [Test]
@@ -123,9 +154,35 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
123 Assert.That(pc.Owner, Is.EqualTo(1)); 154 Assert.That(pc.Owner, Is.EqualTo(1));
124 Assert.That(pc.Group, Is.EqualTo(0)); 155 Assert.That(pc.Group, Is.EqualTo(0));
125 Assert.That(pc.Others, Is.EqualTo(0)); 156 Assert.That(pc.Others, Is.EqualTo(0));
157 Assert.That(pc.Total, Is.EqualTo(1));
158 Assert.That(pc.Selected, Is.EqualTo(0));
126 Assert.That(pc.Users[m_userId], Is.EqualTo(1)); 159 Assert.That(pc.Users[m_userId], Is.EqualTo(1));
127 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); 160 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
128 Assert.That(pc.Simulator, Is.EqualTo(1)); 161 Assert.That(pc.Simulator, Is.EqualTo(1));
129 } 162 }
163
164 /// <summary>
165 /// Test the count is correct after is has been tainted.
166 /// </summary>
167 [Test]
168 public void TestTaint()
169 {
170 TestHelper.InMethod();
171 IPrimCounts pc = m_lo.PrimCounts;
172
173 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
174 m_scene.AddNewSceneObject(sog, false);
175
176 m_pcm.TaintPrimCount();
177
178 Assert.That(pc.Owner, Is.EqualTo(3));
179 Assert.That(pc.Group, Is.EqualTo(0));
180 Assert.That(pc.Others, Is.EqualTo(0));
181 Assert.That(pc.Total, Is.EqualTo(3));
182 Assert.That(pc.Selected, Is.EqualTo(0));
183 Assert.That(pc.Users[m_userId], Is.EqualTo(3));
184 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
185 Assert.That(pc.Simulator, Is.EqualTo(3));
186 }
130 } 187 }
131} \ No newline at end of file 188} \ No newline at end of file