aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes
diff options
context:
space:
mode:
authormingchen2008-06-06 23:20:02 +0000
committermingchen2008-06-06 23:20:02 +0000
commit0fe363ba65d18bd324396fa1482567bc2db65d1e (patch)
tree983da1fbe2de5a4dfb2157d851561c2e55ae7f31 /OpenSim/Region/Environment/Scenes
parent* llSetPrimitiveParams PRIM_FLEXIBLE is now supported. (diff)
downloadopensim-SC_OLD-0fe363ba65d18bd324396fa1482567bc2db65d1e.zip
opensim-SC_OLD-0fe363ba65d18bd324396fa1482567bc2db65d1e.tar.gz
opensim-SC_OLD-0fe363ba65d18bd324396fa1482567bc2db65d1e.tar.bz2
opensim-SC_OLD-0fe363ba65d18bd324396fa1482567bc2db65d1e.tar.xz
*Made Object Counting correct with linked objects and turned the previously protected functions that only return object counts to public so it can be easily used by outside classes.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs24
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs8
2 files changed, 18 insertions, 14 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 4c9257d..589d642 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -214,7 +214,7 @@ namespace OpenSim.Region.Environment.Scenes
214 { 214 {
215 // QuadTree.AddSceneObject(sceneObject); 215 // QuadTree.AddSceneObject(sceneObject);
216 Entities.Add(sceneObject.UUID, sceneObject); 216 Entities.Add(sceneObject.UUID, sceneObject);
217 m_numPrim++; 217 m_numPrim += sceneObject.Children.Count;
218 218
219 return true; 219 return true;
220 } 220 }
@@ -228,14 +228,18 @@ namespace OpenSim.Region.Environment.Scenes
228 /// </summary> 228 /// </summary>
229 /// <param name="sceneObject"></param> 229 /// <param name="sceneObject"></param>
230 /// <returns>true if the object was deleted, false if there was no object to delete</returns> 230 /// <returns>true if the object was deleted, false if there was no object to delete</returns>
231 protected internal bool DeleteSceneObject(LLUUID uuid) 231 protected internal bool DeleteSceneObject(LLUUID uuid, bool resultOfObjectLinked)
232 { 232 {
233 lock (Entities) 233 lock (Entities)
234 { 234 {
235 if (Entities.ContainsKey(uuid)) 235 if (Entities.ContainsKey(uuid))
236 { 236 {
237 Console.WriteLine("REMOVED " + ((SceneObjectGroup)Entities[uuid]).Children.Count + "!");
238 if (!resultOfObjectLinked)
239 {
240 m_numPrim -= ((SceneObjectGroup)Entities[uuid]).Children.Count;
241 }
237 Entities.Remove(uuid); 242 Entities.Remove(uuid);
238 m_numPrim--;
239 243
240 return true; 244 return true;
241 } 245 }
@@ -584,7 +588,7 @@ namespace OpenSim.Region.Environment.Scenes
584 } 588 }
585 } 589 }
586 590
587 protected internal int GetChildAgentCount() 591 public int GetChildAgentCount()
588 { 592 {
589 // some network situations come in where child agents get closed twice. 593 // some network situations come in where child agents get closed twice.
590 if (m_numChildAgents < 0) 594 if (m_numChildAgents < 0)
@@ -595,27 +599,27 @@ namespace OpenSim.Region.Environment.Scenes
595 return m_numChildAgents; 599 return m_numChildAgents;
596 } 600 }
597 601
598 protected internal int GetRootAgentCount() 602 public int GetRootAgentCount()
599 { 603 {
600 return m_numRootAgents; 604 return m_numRootAgents;
601 } 605 }
602 606
603 protected internal int GetTotalObjects() 607 public int GetTotalObjectsCount()
604 { 608 {
605 return m_numPrim; 609 return m_numPrim;
606 } 610 }
607 611
608 protected internal int GetActiveObjects() 612 public int GetActiveObjectsCount()
609 { 613 {
610 return m_physicalPrim; 614 return m_physicalPrim;
611 } 615 }
612 616
613 protected internal int GetActiveScripts() 617 public int GetActiveScriptsCount()
614 { 618 {
615 return m_activeScripts; 619 return m_activeScripts;
616 } 620 }
617 621
618 protected internal int GetScriptLPS() 622 public int GetScriptLPS()
619 { 623 {
620 int returnval = m_scriptLPS; 624 int returnval = m_scriptLPS;
621 m_scriptLPS = 0; 625 m_scriptLPS = 0;
@@ -1437,7 +1441,7 @@ namespace OpenSim.Region.Environment.Scenes
1437 // think it's selected, so it will never send a deselect... 1441 // think it's selected, so it will never send a deselect...
1438 copy.IsSelected = false; 1442 copy.IsSelected = false;
1439 1443
1440 m_numPrim++; 1444 m_numPrim += copy.Children.Count;
1441 1445
1442 copy.StartScripts(); 1446 copy.StartScripts();
1443 copy.ScheduleGroupForFullUpdate(); 1447 copy.ScheduleGroupForFullUpdate();
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 211f320..7d076ef 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -757,13 +757,13 @@ namespace OpenSim.Region.Environment.Scenes
757 m_statsReporter.AddInPackets(0); 757 m_statsReporter.AddInPackets(0);
758 m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount()); 758 m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount());
759 m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount()); 759 m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount());
760 m_statsReporter.SetObjects(m_innerScene.GetTotalObjects()); 760 m_statsReporter.SetObjects(m_innerScene.GetTotalObjectsCount());
761 m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects()); 761 m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjectsCount());
762 frameMS = System.Environment.TickCount - frameMS; 762 frameMS = System.Environment.TickCount - frameMS;
763 m_statsReporter.addFrameMS(frameMS); 763 m_statsReporter.addFrameMS(frameMS);
764 m_statsReporter.addPhysicsMS(physicsMS); 764 m_statsReporter.addPhysicsMS(physicsMS);
765 m_statsReporter.addOtherMS(otherMS); 765 m_statsReporter.addOtherMS(otherMS);
766 m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScripts()); 766 m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScriptsCount());
767 m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS()); 767 m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS());
768 } 768 }
769 } 769 }
@@ -1412,7 +1412,7 @@ namespace OpenSim.Region.Environment.Scenes
1412 /// <returns>true if the object was in the scene, false if it was not</returns> 1412 /// <returns>true if the object was in the scene, false if it was not</returns>
1413 public bool UnlinkSceneObject(LLUUID uuid) 1413 public bool UnlinkSceneObject(LLUUID uuid)
1414 { 1414 {
1415 if (m_innerScene.DeleteSceneObject(uuid)) 1415 if (m_innerScene.DeleteSceneObject(uuid,true))
1416 { 1416 {
1417 m_storageManager.DataStore.RemoveObject(uuid, m_regInfo.RegionID); 1417 m_storageManager.DataStore.RemoveObject(uuid, m_regInfo.RegionID);
1418 1418