aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/RegionInfo.cs41
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs48
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs38
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs19
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs34
5 files changed, 121 insertions, 59 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index 96f3049..b88895f 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -450,13 +450,17 @@ namespace OpenSim.Framework
450 public string GetOtherSetting(string key) 450 public string GetOtherSetting(string key)
451 { 451 {
452 string val; 452 string val;
453 m_otherSettings.TryGetValue(key, out val); 453 string keylower = key.ToLower();
454 return val; 454 if (m_otherSettings.TryGetValue(keylower, out val))
455 return val;
456 m_log.DebugFormat("[RegionInfo] Could not locate value for parameter {0}", key);
457 return null;
455 } 458 }
456 459
457 public void SetOtherSetting(string key, string value) 460 public void SetOtherSetting(string key, string value)
458 { 461 {
459 m_otherSettings[key] = value; 462 string keylower = key.ToLower();
463 m_otherSettings[keylower] = value;
460 } 464 }
461 465
462 private void ReadNiniConfig(IConfigSource source, string name) 466 private void ReadNiniConfig(IConfigSource source, string name)
@@ -498,12 +502,12 @@ namespace OpenSim.Framework
498 HashSet<String> allKeys = new HashSet<String>(); 502 HashSet<String> allKeys = new HashSet<String>();
499 foreach (string s in config.GetKeys()) 503 foreach (string s in config.GetKeys())
500 { 504 {
501 allKeys.Add(s.ToLower()); 505 allKeys.Add(s);
502 } 506 }
503 507
504 // RegionUUID 508 // RegionUUID
505 // 509 //
506 allKeys.Remove(("RegionUUID").ToLower()); 510 allKeys.Remove("RegionUUID");
507 string regionUUID = config.GetString("RegionUUID", string.Empty); 511 string regionUUID = config.GetString("RegionUUID", string.Empty);
508 if (regionUUID == String.Empty) 512 if (regionUUID == String.Empty)
509 { 513 {
@@ -518,7 +522,7 @@ namespace OpenSim.Framework
518 522
519 // Location 523 // Location
520 // 524 //
521 allKeys.Remove(("Location").ToLower()); 525 allKeys.Remove("Location");
522 string location = config.GetString("Location", String.Empty); 526 string location = config.GetString("Location", String.Empty);
523 if (location == String.Empty) 527 if (location == String.Empty)
524 { 528 {
@@ -534,7 +538,7 @@ namespace OpenSim.Framework
534 // InternalAddress 538 // InternalAddress
535 // 539 //
536 IPAddress address; 540 IPAddress address;
537 allKeys.Remove(("InternalAddress").ToLower()); 541 allKeys.Remove("InternalAddress");
538 if (config.Contains("InternalAddress")) 542 if (config.Contains("InternalAddress"))
539 { 543 {
540 address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty)); 544 address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty));
@@ -548,7 +552,7 @@ namespace OpenSim.Framework
548 // InternalPort 552 // InternalPort
549 // 553 //
550 int port; 554 int port;
551 allKeys.Remove(("InternalPort").ToLower()); 555 allKeys.Remove("InternalPort");
552 if (config.Contains("InternalPort")) 556 if (config.Contains("InternalPort"))
553 { 557 {
554 port = config.GetInt("InternalPort", 9000); 558 port = config.GetInt("InternalPort", 9000);
@@ -562,7 +566,7 @@ namespace OpenSim.Framework
562 566
563 // AllowAlternatePorts 567 // AllowAlternatePorts
564 // 568 //
565 allKeys.Remove(("AllowAlternatePorts").ToLower()); 569 allKeys.Remove("AllowAlternatePorts");
566 if (config.Contains("AllowAlternatePorts")) 570 if (config.Contains("AllowAlternatePorts"))
567 { 571 {
568 m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); 572 m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true);
@@ -576,7 +580,7 @@ namespace OpenSim.Framework
576 580
577 // ExternalHostName 581 // ExternalHostName
578 // 582 //
579 allKeys.Remove(("ExternalHostName").ToLower()); 583 allKeys.Remove("ExternalHostName");
580 string externalName; 584 string externalName;
581 if (config.Contains("ExternalHostName")) 585 if (config.Contains("ExternalHostName"))
582 { 586 {
@@ -601,29 +605,30 @@ namespace OpenSim.Framework
601 605
602 // RegionType 606 // RegionType
603 m_regionType = config.GetString("RegionType", String.Empty); 607 m_regionType = config.GetString("RegionType", String.Empty);
604 allKeys.Remove(("RegionType").ToLower()); 608 allKeys.Remove("RegionType");
605 609
606 // Prim stuff 610 // Prim stuff
607 // 611 //
608 m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); 612 m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256);
609 allKeys.Remove(("NonphysicalPrimMax").ToLower()); 613 allKeys.Remove("NonphysicalPrimMax");
610 m_physPrimMax = config.GetInt("PhysicalPrimMax", 10); 614 m_physPrimMax = config.GetInt("PhysicalPrimMax", 10);
611 allKeys.Remove(("PhysicalPrimMax").ToLower()); 615 allKeys.Remove("PhysicalPrimMax");
612 m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); 616 m_clampPrimSize = config.GetBoolean("ClampPrimSize", false);
613 allKeys.Remove(("ClampPrimSize").ToLower()); 617 allKeys.Remove("ClampPrimSize");
614 m_objectCapacity = config.GetInt("MaxPrims", 15000); 618 m_objectCapacity = config.GetInt("MaxPrims", 15000);
615 allKeys.Remove(("MaxPrims").ToLower()); 619 allKeys.Remove("MaxPrims");
616 m_agentCapacity = config.GetInt("MaxAgents", 100); 620 m_agentCapacity = config.GetInt("MaxAgents", 100);
617 allKeys.Remove(("MaxAgents").ToLower()); 621 allKeys.Remove("MaxAgents");
618 622
619 // Multi-tenancy 623 // Multi-tenancy
620 // 624 //
621 ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString())); 625 ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString()));
622 allKeys.Remove(("ScopeID").ToLower()); 626 allKeys.Remove("ScopeID");
623 627
624 foreach (String s in allKeys) 628 foreach (String s in allKeys)
625 { 629 {
626 m_otherSettings.Add(s, config.GetString(s)); 630 string val = config.GetString(s);
631 SetOtherSetting(s, config.GetString(s));
627 } 632 }
628 } 633 }
629 634
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 74d9e60..57db4d6 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -402,12 +402,18 @@ namespace OpenSim.Region.Framework.Scenes
402 public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; 402 public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy;
403 public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); 403 public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed);
404 404
405 public delegate void SceneObjectPartUpdated(SceneObjectPart sop);
406 public event SceneObjectPartUpdated OnSceneObjectPartUpdated;
407
405 public delegate void RegionUp(GridRegion region); 408 public delegate void RegionUp(GridRegion region);
406 public event RegionUp OnRegionUp; 409 public event RegionUp OnRegionUp;
407 410
408 public delegate void RegionStarted(Scene scene); 411 public delegate void RegionStarted(Scene scene);
409 public event RegionStarted OnRegionStarted; 412 public event RegionStarted OnRegionStarted;
410 413
414 public delegate void RegionHeartbeatEnd(Scene scene);
415 public event RegionHeartbeatEnd OnRegionHeartbeatEnd;
416
411 public delegate void LoginsEnabled(string regionName); 417 public delegate void LoginsEnabled(string regionName);
412 public event LoginsEnabled OnLoginsEnabled; 418 public event LoginsEnabled OnLoginsEnabled;
413 419
@@ -2227,6 +2233,27 @@ namespace OpenSim.Region.Framework.Scenes
2227 } 2233 }
2228 } 2234 }
2229 2235
2236 public void TriggerSceneObjectPartUpdated(SceneObjectPart sop)
2237 {
2238 SceneObjectPartUpdated handler = OnSceneObjectPartUpdated;
2239 if (handler != null)
2240 {
2241 foreach (SceneObjectPartUpdated d in handler.GetInvocationList())
2242 {
2243 try
2244 {
2245 d(sop);
2246 }
2247 catch (Exception e)
2248 {
2249 m_log.ErrorFormat(
2250 "[EVENT MANAGER]: Delegate for TriggerSceneObjectPartUpdated failed - continuing. {0} {1}",
2251 e.Message, e.StackTrace);
2252 }
2253 }
2254 }
2255 }
2256
2230 public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, 2257 public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args,
2231 int local_id, IClientAPI remote_client) 2258 int local_id, IClientAPI remote_client)
2232 { 2259 {
@@ -2291,6 +2318,27 @@ namespace OpenSim.Region.Framework.Scenes
2291 } 2318 }
2292 } 2319 }
2293 2320
2321 public void TriggerRegionHeartbeatEnd(Scene scene)
2322 {
2323 RegionHeartbeatEnd handler = OnRegionHeartbeatEnd;
2324
2325 if (handler != null)
2326 {
2327 foreach (RegionHeartbeatEnd d in handler.GetInvocationList())
2328 {
2329 try
2330 {
2331 d(scene);
2332 }
2333 catch (Exception e)
2334 {
2335 m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionHeartbeatEnd failed - continuing {0} - {1}",
2336 e.Message, e.StackTrace);
2337 }
2338 }
2339 }
2340 }
2341
2294 public void TriggerLoginsEnabled (string regionName) 2342 public void TriggerLoginsEnabled (string regionName)
2295 { 2343 {
2296 LoginsEnabled handler = OnLoginsEnabled; 2344 LoginsEnabled handler = OnLoginsEnabled;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 128954f..03ddbc5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1431,6 +1431,8 @@ namespace OpenSim.Region.Framework.Scenes
1431 RegionInfo.RegionName, e.Message, e.StackTrace); 1431 RegionInfo.RegionName, e.Message, e.StackTrace);
1432 } 1432 }
1433 1433
1434 EventManager.TriggerRegionHeartbeatEnd(this);
1435
1434 maintc = Util.EnvironmentTickCountSubtract(maintc); 1436 maintc = Util.EnvironmentTickCountSubtract(maintc);
1435 maintc = (int)(MinFrameTime * 1000) - maintc; 1437 maintc = (int)(MinFrameTime * 1000) - maintc;
1436 1438
@@ -2837,7 +2839,7 @@ namespace OpenSim.Region.Framework.Scenes
2837 client.OnObjectMaterial += m_sceneGraph.PrimMaterial; 2839 client.OnObjectMaterial += m_sceneGraph.PrimMaterial;
2838 client.OnLinkObjects += LinkObjects; 2840 client.OnLinkObjects += LinkObjects;
2839 client.OnDelinkObjects += DelinkObjects; 2841 client.OnDelinkObjects += DelinkObjects;
2840 client.OnObjectDuplicate += m_sceneGraph.DuplicateObject; 2842 client.OnObjectDuplicate += DuplicateObject;
2841 client.OnObjectDuplicateOnRay += doObjectDuplicateOnRay; 2843 client.OnObjectDuplicateOnRay += doObjectDuplicateOnRay;
2842 client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags; 2844 client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
2843 client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily; 2845 client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
@@ -2965,7 +2967,7 @@ namespace OpenSim.Region.Framework.Scenes
2965 client.OnObjectMaterial -= m_sceneGraph.PrimMaterial; 2967 client.OnObjectMaterial -= m_sceneGraph.PrimMaterial;
2966 client.OnLinkObjects -= LinkObjects; 2968 client.OnLinkObjects -= LinkObjects;
2967 client.OnDelinkObjects -= DelinkObjects; 2969 client.OnDelinkObjects -= DelinkObjects;
2968 client.OnObjectDuplicate -= m_sceneGraph.DuplicateObject; 2970 client.OnObjectDuplicate -= DuplicateObject;
2969 client.OnObjectDuplicateOnRay -= doObjectDuplicateOnRay; 2971 client.OnObjectDuplicateOnRay -= doObjectDuplicateOnRay;
2970 client.OnUpdatePrimFlags -= m_sceneGraph.UpdatePrimFlags; 2972 client.OnUpdatePrimFlags -= m_sceneGraph.UpdatePrimFlags;
2971 client.OnRequestObjectPropertiesFamily -= m_sceneGraph.RequestObjectPropertiesFamily; 2973 client.OnRequestObjectPropertiesFamily -= m_sceneGraph.RequestObjectPropertiesFamily;
@@ -3059,6 +3061,21 @@ namespace OpenSim.Region.Framework.Scenes
3059 } 3061 }
3060 3062
3061 /// <summary> 3063 /// <summary>
3064 /// Duplicates object specified by localID. This is the event handler for IClientAPI.
3065 /// </summary>
3066 /// <param name="originalPrim">ID of object to duplicate</param>
3067 /// <param name="offset"></param>
3068 /// <param name="flags"></param>
3069 /// <param name="AgentID">Agent doing the duplication</param>
3070 /// <param name="GroupID">Group of new object</param>
3071 public void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID)
3072 {
3073 SceneObjectGroup copy = SceneGraph.DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Identity);
3074 if (copy != null)
3075 EventManager.TriggerObjectAddedToScene(copy);
3076 }
3077
3078 /// <summary>
3062 /// Duplicates object specified by localID at position raycasted against RayTargetObject using 3079 /// Duplicates object specified by localID at position raycasted against RayTargetObject using
3063 /// RayEnd and RayStart to determine what the angle of the ray is 3080 /// RayEnd and RayStart to determine what the angle of the ray is
3064 /// </summary> 3081 /// </summary>
@@ -3120,19 +3137,22 @@ namespace OpenSim.Region.Framework.Scenes
3120 3137
3121 // stick in offset format from the original prim 3138 // stick in offset format from the original prim
3122 pos = pos - target.ParentGroup.AbsolutePosition; 3139 pos = pos - target.ParentGroup.AbsolutePosition;
3140 SceneObjectGroup copy;
3123 if (CopyRotates) 3141 if (CopyRotates)
3124 { 3142 {
3125 Quaternion worldRot = target2.GetWorldRotation(); 3143 Quaternion worldRot = target2.GetWorldRotation();
3126 3144
3127 // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); 3145 // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot);
3128 m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); 3146 copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot);
3129 //obj.Rotation = worldRot; 3147 //obj.Rotation = worldRot;
3130 //obj.UpdateGroupRotationR(worldRot); 3148 //obj.UpdateGroupRotationR(worldRot);
3131 } 3149 }
3132 else 3150 else
3133 { 3151 {
3134 m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID); 3152 copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, Quaternion.Identity);
3135 } 3153 }
3154 if (copy != null)
3155 EventManager.TriggerObjectAddedToScene(copy);
3136 } 3156 }
3137 } 3157 }
3138 } 3158 }
@@ -4467,6 +4487,16 @@ namespace OpenSim.Region.Framework.Scenes
4467 return m_sceneGraph.GetGroupByPrim(localID); 4487 return m_sceneGraph.GetGroupByPrim(localID);
4468 } 4488 }
4469 4489
4490 /// <summary>
4491 /// Get a scene object group that contains the prim with the given uuid
4492 /// </summary>
4493 /// <param name="fullID"></param>
4494 /// <returns>null if no scene object group containing that prim is found</returns>
4495 public SceneObjectGroup GetGroupByPrim(UUID fullID)
4496 {
4497 return m_sceneGraph.GetGroupByPrim(fullID);
4498 }
4499
4470 public override bool TryGetScenePresence(UUID agentID, out ScenePresence sp) 4500 public override bool TryGetScenePresence(UUID agentID, out ScenePresence sp)
4471 { 4501 {
4472 return m_sceneGraph.TryGetScenePresence(agentID, out sp); 4502 return m_sceneGraph.TryGetScenePresence(agentID, out sp);
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index aecca27..17563bd 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -343,6 +343,7 @@ namespace OpenSim.Region.Framework.Scenes
343 /// </summary> 343 /// </summary>
344 /// 344 ///
345 /// This method does not send updates to the client - callers need to handle this themselves. 345 /// This method does not send updates to the client - callers need to handle this themselves.
346 /// Caller should also trigger EventManager.TriggerObjectAddedToScene
346 /// <param name="sceneObject"></param> 347 /// <param name="sceneObject"></param>
347 /// <param name="attachToBackup"></param> 348 /// <param name="attachToBackup"></param>
348 /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param> 349 /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param>
@@ -1002,7 +1003,7 @@ namespace OpenSim.Region.Framework.Scenes
1002 /// </summary> 1003 /// </summary>
1003 /// <param name="fullID"></param> 1004 /// <param name="fullID"></param>
1004 /// <returns>null if no scene object group containing that prim is found</returns> 1005 /// <returns>null if no scene object group containing that prim is found</returns>
1005 private SceneObjectGroup GetGroupByPrim(UUID fullID) 1006 public SceneObjectGroup GetGroupByPrim(UUID fullID)
1006 { 1007 {
1007 SceneObjectGroup sog; 1008 SceneObjectGroup sog;
1008 lock (SceneObjectGroupsByFullPartID) 1009 lock (SceneObjectGroupsByFullPartID)
@@ -1993,22 +1994,6 @@ namespace OpenSim.Region.Framework.Scenes
1993 } 1994 }
1994 1995
1995 /// <summary> 1996 /// <summary>
1996 /// Duplicate the given object, Fire and Forget, No rotation, no return wrapper
1997 /// </summary>
1998 /// <param name="originalPrim"></param>
1999 /// <param name="offset"></param>
2000 /// <param name="flags"></param>
2001 /// <param name="AgentID"></param>
2002 /// <param name="GroupID"></param>
2003 protected internal void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID)
2004 {
2005 //m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID);
2006
2007 // SceneObjectGroup dupe = DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Zero);
2008 DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Identity);
2009 }
2010
2011 /// <summary>
2012 /// Duplicate the given object. 1997 /// Duplicate the given object.
2013 /// </summary> 1998 /// </summary>
2014 /// <param name="originalPrim"></param> 1999 /// <param name="originalPrim"></param>
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 5576ec9..0d14963 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -244,7 +244,7 @@ namespace OpenSim.Region.Framework.Scenes
244 244
245 public bool IgnoreUndoUpdate = false; 245 public bool IgnoreUndoUpdate = false;
246 246
247 private PrimFlags LocalFlags; 247 public PrimFlags LocalFlags;
248 248
249 private float m_damage = -1.0f; 249 private float m_damage = -1.0f;
250 private byte[] m_TextureAnimation; 250 private byte[] m_TextureAnimation;
@@ -933,32 +933,18 @@ namespace OpenSim.Region.Framework.Scenes
933 public Color Color 933 public Color Color
934 { 934 {
935 get { return m_color; } 935 get { return m_color; }
936 set 936 set { m_color = value; }
937 {
938 m_color = value;
939
940 /* ScheduleFullUpdate() need not be called b/c after
941 * setting the color, the text will be set, so then
942 * ScheduleFullUpdate() will be called. */
943 //ScheduleFullUpdate();
944 }
945 } 937 }
946 938
947 public string Text 939 public string Text
948 { 940 {
949 get 941 get
950 { 942 {
951 string returnstr = m_text; 943 if (m_text.Length > 255)
952 if (returnstr.Length > 255) 944 return m_text.Substring(0, 254);
953 { 945 return m_text;
954 returnstr = returnstr.Substring(0, 254);
955 }
956 return returnstr;
957 }
958 set
959 {
960 m_text = value;
961 } 946 }
947 set { m_text = value; }
962 } 948 }
963 949
964 950
@@ -2795,6 +2781,10 @@ namespace OpenSim.Region.Framework.Scenes
2795 if (ParentGroup == null) 2781 if (ParentGroup == null)
2796 return; 2782 return;
2797 2783
2784 // When running OpenSim tests, Scene (and EventManager can be null).
2785 // Need to fix tests before we can trigger this here
2786 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2787
2798 ParentGroup.QueueForUpdateCheck(); 2788 ParentGroup.QueueForUpdateCheck();
2799 2789
2800 int timeNow = Util.UnixTimeSinceEpoch(); 2790 int timeNow = Util.UnixTimeSinceEpoch();
@@ -2827,6 +2817,10 @@ namespace OpenSim.Region.Framework.Scenes
2827 if (ParentGroup == null) 2817 if (ParentGroup == null)
2828 return; 2818 return;
2829 2819
2820 // When running OpenSim tests, Scene (and EventManager can be null).
2821 // Need to fix tests before we can trigger this here
2822 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2823
2830 // This was pulled from SceneViewer. Attachments always receive full updates. 2824 // This was pulled from SceneViewer. Attachments always receive full updates.
2831 // I could not verify if this is a requirement but this maintains existing behavior 2825 // I could not verify if this is a requirement but this maintains existing behavior
2832 if (ParentGroup.IsAttachment) 2826 if (ParentGroup.IsAttachment)