diff options
-rw-r--r-- | OpenSim/Framework/RegionInfo.cs | 41 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/EventManager.cs | 48 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 38 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 19 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 30 |
5 files changed, 117 insertions, 59 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 169b951..e2664dd 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -448,13 +448,17 @@ namespace OpenSim.Framework | |||
448 | public string GetOtherSetting(string key) | 448 | public string GetOtherSetting(string key) |
449 | { | 449 | { |
450 | string val; | 450 | string val; |
451 | m_otherSettings.TryGetValue(key, out val); | 451 | string keylower = key.ToLower(); |
452 | return val; | 452 | if (m_otherSettings.TryGetValue(keylower, out val)) |
453 | return val; | ||
454 | m_log.DebugFormat("[RegionInfo] Could not locate value for parameter {0}", key); | ||
455 | return null; | ||
453 | } | 456 | } |
454 | 457 | ||
455 | public void SetOtherSetting(string key, string value) | 458 | public void SetOtherSetting(string key, string value) |
456 | { | 459 | { |
457 | m_otherSettings[key] = value; | 460 | string keylower = key.ToLower(); |
461 | m_otherSettings[keylower] = value; | ||
458 | } | 462 | } |
459 | 463 | ||
460 | private void ReadNiniConfig(IConfigSource source, string name) | 464 | private void ReadNiniConfig(IConfigSource source, string name) |
@@ -496,12 +500,12 @@ namespace OpenSim.Framework | |||
496 | HashSet<String> allKeys = new HashSet<String>(); | 500 | HashSet<String> allKeys = new HashSet<String>(); |
497 | foreach (string s in config.GetKeys()) | 501 | foreach (string s in config.GetKeys()) |
498 | { | 502 | { |
499 | allKeys.Add(s.ToLower()); | 503 | allKeys.Add(s); |
500 | } | 504 | } |
501 | 505 | ||
502 | // RegionUUID | 506 | // RegionUUID |
503 | // | 507 | // |
504 | allKeys.Remove(("RegionUUID").ToLower()); | 508 | allKeys.Remove("RegionUUID"); |
505 | string regionUUID = config.GetString("RegionUUID", string.Empty); | 509 | string regionUUID = config.GetString("RegionUUID", string.Empty); |
506 | if (regionUUID == String.Empty) | 510 | if (regionUUID == String.Empty) |
507 | { | 511 | { |
@@ -516,7 +520,7 @@ namespace OpenSim.Framework | |||
516 | 520 | ||
517 | // Location | 521 | // Location |
518 | // | 522 | // |
519 | allKeys.Remove(("Location").ToLower()); | 523 | allKeys.Remove("Location"); |
520 | string location = config.GetString("Location", String.Empty); | 524 | string location = config.GetString("Location", String.Empty); |
521 | if (location == String.Empty) | 525 | if (location == String.Empty) |
522 | { | 526 | { |
@@ -532,7 +536,7 @@ namespace OpenSim.Framework | |||
532 | // InternalAddress | 536 | // InternalAddress |
533 | // | 537 | // |
534 | IPAddress address; | 538 | IPAddress address; |
535 | allKeys.Remove(("InternalAddress").ToLower()); | 539 | allKeys.Remove("InternalAddress"); |
536 | if (config.Contains("InternalAddress")) | 540 | if (config.Contains("InternalAddress")) |
537 | { | 541 | { |
538 | address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty)); | 542 | address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty)); |
@@ -546,7 +550,7 @@ namespace OpenSim.Framework | |||
546 | // InternalPort | 550 | // InternalPort |
547 | // | 551 | // |
548 | int port; | 552 | int port; |
549 | allKeys.Remove(("InternalPort").ToLower()); | 553 | allKeys.Remove("InternalPort"); |
550 | if (config.Contains("InternalPort")) | 554 | if (config.Contains("InternalPort")) |
551 | { | 555 | { |
552 | port = config.GetInt("InternalPort", 9000); | 556 | port = config.GetInt("InternalPort", 9000); |
@@ -560,7 +564,7 @@ namespace OpenSim.Framework | |||
560 | 564 | ||
561 | // AllowAlternatePorts | 565 | // AllowAlternatePorts |
562 | // | 566 | // |
563 | allKeys.Remove(("AllowAlternatePorts").ToLower()); | 567 | allKeys.Remove("AllowAlternatePorts"); |
564 | if (config.Contains("AllowAlternatePorts")) | 568 | if (config.Contains("AllowAlternatePorts")) |
565 | { | 569 | { |
566 | m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); | 570 | m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); |
@@ -574,7 +578,7 @@ namespace OpenSim.Framework | |||
574 | 578 | ||
575 | // ExternalHostName | 579 | // ExternalHostName |
576 | // | 580 | // |
577 | allKeys.Remove(("ExternalHostName").ToLower()); | 581 | allKeys.Remove("ExternalHostName"); |
578 | string externalName; | 582 | string externalName; |
579 | if (config.Contains("ExternalHostName")) | 583 | if (config.Contains("ExternalHostName")) |
580 | { | 584 | { |
@@ -599,29 +603,30 @@ namespace OpenSim.Framework | |||
599 | 603 | ||
600 | // RegionType | 604 | // RegionType |
601 | m_regionType = config.GetString("RegionType", String.Empty); | 605 | m_regionType = config.GetString("RegionType", String.Empty); |
602 | allKeys.Remove(("RegionType").ToLower()); | 606 | allKeys.Remove("RegionType"); |
603 | 607 | ||
604 | // Prim stuff | 608 | // Prim stuff |
605 | // | 609 | // |
606 | m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); | 610 | m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); |
607 | allKeys.Remove(("NonphysicalPrimMax").ToLower()); | 611 | allKeys.Remove("NonphysicalPrimMax"); |
608 | m_physPrimMax = config.GetInt("PhysicalPrimMax", 10); | 612 | m_physPrimMax = config.GetInt("PhysicalPrimMax", 10); |
609 | allKeys.Remove(("PhysicalPrimMax").ToLower()); | 613 | allKeys.Remove("PhysicalPrimMax"); |
610 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); | 614 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); |
611 | allKeys.Remove(("ClampPrimSize").ToLower()); | 615 | allKeys.Remove("ClampPrimSize"); |
612 | m_objectCapacity = config.GetInt("MaxPrims", 15000); | 616 | m_objectCapacity = config.GetInt("MaxPrims", 15000); |
613 | allKeys.Remove(("MaxPrims").ToLower()); | 617 | allKeys.Remove("MaxPrims"); |
614 | m_agentCapacity = config.GetInt("MaxAgents", 100); | 618 | m_agentCapacity = config.GetInt("MaxAgents", 100); |
615 | allKeys.Remove(("MaxAgents").ToLower()); | 619 | allKeys.Remove("MaxAgents"); |
616 | 620 | ||
617 | // Multi-tenancy | 621 | // Multi-tenancy |
618 | // | 622 | // |
619 | ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString())); | 623 | ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString())); |
620 | allKeys.Remove(("ScopeID").ToLower()); | 624 | allKeys.Remove("ScopeID"); |
621 | 625 | ||
622 | foreach (String s in allKeys) | 626 | foreach (String s in allKeys) |
623 | { | 627 | { |
624 | m_otherSettings.Add(s, config.GetString(s)); | 628 | string val = config.GetString(s); |
629 | SetOtherSetting(s, config.GetString(s)); | ||
625 | } | 630 | } |
626 | } | 631 | } |
627 | 632 | ||
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index fd35c62..d31d380 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -398,12 +398,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
398 | public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; | 398 | public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; |
399 | public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); | 399 | public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); |
400 | 400 | ||
401 | public delegate void SceneObjectPartUpdated(SceneObjectPart sop); | ||
402 | public event SceneObjectPartUpdated OnSceneObjectPartUpdated; | ||
403 | |||
401 | public delegate void RegionUp(GridRegion region); | 404 | public delegate void RegionUp(GridRegion region); |
402 | public event RegionUp OnRegionUp; | 405 | public event RegionUp OnRegionUp; |
403 | 406 | ||
404 | public delegate void RegionStarted(Scene scene); | 407 | public delegate void RegionStarted(Scene scene); |
405 | public event RegionStarted OnRegionStarted; | 408 | public event RegionStarted OnRegionStarted; |
406 | 409 | ||
410 | public delegate void RegionHeartbeatEnd(Scene scene); | ||
411 | public event RegionHeartbeatEnd OnRegionHeartbeatEnd; | ||
412 | |||
407 | public delegate void LoginsEnabled(string regionName); | 413 | public delegate void LoginsEnabled(string regionName); |
408 | public event LoginsEnabled OnLoginsEnabled; | 414 | public event LoginsEnabled OnLoginsEnabled; |
409 | 415 | ||
@@ -2203,6 +2209,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
2203 | } | 2209 | } |
2204 | } | 2210 | } |
2205 | 2211 | ||
2212 | public void TriggerSceneObjectPartUpdated(SceneObjectPart sop) | ||
2213 | { | ||
2214 | SceneObjectPartUpdated handler = OnSceneObjectPartUpdated; | ||
2215 | if (handler != null) | ||
2216 | { | ||
2217 | foreach (SceneObjectPartUpdated d in handler.GetInvocationList()) | ||
2218 | { | ||
2219 | try | ||
2220 | { | ||
2221 | d(sop); | ||
2222 | } | ||
2223 | catch (Exception e) | ||
2224 | { | ||
2225 | m_log.ErrorFormat( | ||
2226 | "[EVENT MANAGER]: Delegate for TriggerSceneObjectPartUpdated failed - continuing. {0} {1}", | ||
2227 | e.Message, e.StackTrace); | ||
2228 | } | ||
2229 | } | ||
2230 | } | ||
2231 | } | ||
2232 | |||
2206 | public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, | 2233 | public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, |
2207 | int local_id, IClientAPI remote_client) | 2234 | int local_id, IClientAPI remote_client) |
2208 | { | 2235 | { |
@@ -2267,6 +2294,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
2267 | } | 2294 | } |
2268 | } | 2295 | } |
2269 | 2296 | ||
2297 | public void TriggerRegionHeartbeatEnd(Scene scene) | ||
2298 | { | ||
2299 | RegionHeartbeatEnd handler = OnRegionHeartbeatEnd; | ||
2300 | |||
2301 | if (handler != null) | ||
2302 | { | ||
2303 | foreach (RegionHeartbeatEnd d in handler.GetInvocationList()) | ||
2304 | { | ||
2305 | try | ||
2306 | { | ||
2307 | d(scene); | ||
2308 | } | ||
2309 | catch (Exception e) | ||
2310 | { | ||
2311 | m_log.ErrorFormat("[EVENT MANAGER]: Delegate for OnRegionHeartbeatEnd failed - continuing {0} - {1}", | ||
2312 | e.Message, e.StackTrace); | ||
2313 | } | ||
2314 | } | ||
2315 | } | ||
2316 | } | ||
2317 | |||
2270 | public void TriggerLoginsEnabled (string regionName) | 2318 | public void TriggerLoginsEnabled (string regionName) |
2271 | { | 2319 | { |
2272 | LoginsEnabled handler = OnLoginsEnabled; | 2320 | LoginsEnabled handler = OnLoginsEnabled; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 23fee4e..186e01c 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1385,6 +1385,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1385 | RegionInfo.RegionName, e.Message, e.StackTrace); | 1385 | RegionInfo.RegionName, e.Message, e.StackTrace); |
1386 | } | 1386 | } |
1387 | 1387 | ||
1388 | EventManager.TriggerRegionHeartbeatEnd(this); | ||
1389 | |||
1388 | maintc = Util.EnvironmentTickCountSubtract(maintc); | 1390 | maintc = Util.EnvironmentTickCountSubtract(maintc); |
1389 | maintc = (int)(MinFrameTime * 1000) - maintc; | 1391 | maintc = (int)(MinFrameTime * 1000) - maintc; |
1390 | 1392 | ||
@@ -2714,7 +2716,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2714 | client.OnObjectMaterial += m_sceneGraph.PrimMaterial; | 2716 | client.OnObjectMaterial += m_sceneGraph.PrimMaterial; |
2715 | client.OnLinkObjects += LinkObjects; | 2717 | client.OnLinkObjects += LinkObjects; |
2716 | client.OnDelinkObjects += DelinkObjects; | 2718 | client.OnDelinkObjects += DelinkObjects; |
2717 | client.OnObjectDuplicate += m_sceneGraph.DuplicateObject; | 2719 | client.OnObjectDuplicate += DuplicateObject; |
2718 | client.OnObjectDuplicateOnRay += doObjectDuplicateOnRay; | 2720 | client.OnObjectDuplicateOnRay += doObjectDuplicateOnRay; |
2719 | client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags; | 2721 | client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags; |
2720 | client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily; | 2722 | client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily; |
@@ -2841,7 +2843,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2841 | client.OnObjectMaterial -= m_sceneGraph.PrimMaterial; | 2843 | client.OnObjectMaterial -= m_sceneGraph.PrimMaterial; |
2842 | client.OnLinkObjects -= LinkObjects; | 2844 | client.OnLinkObjects -= LinkObjects; |
2843 | client.OnDelinkObjects -= DelinkObjects; | 2845 | client.OnDelinkObjects -= DelinkObjects; |
2844 | client.OnObjectDuplicate -= m_sceneGraph.DuplicateObject; | 2846 | client.OnObjectDuplicate -= DuplicateObject; |
2845 | client.OnObjectDuplicateOnRay -= doObjectDuplicateOnRay; | 2847 | client.OnObjectDuplicateOnRay -= doObjectDuplicateOnRay; |
2846 | client.OnUpdatePrimFlags -= m_sceneGraph.UpdatePrimFlags; | 2848 | client.OnUpdatePrimFlags -= m_sceneGraph.UpdatePrimFlags; |
2847 | client.OnRequestObjectPropertiesFamily -= m_sceneGraph.RequestObjectPropertiesFamily; | 2849 | client.OnRequestObjectPropertiesFamily -= m_sceneGraph.RequestObjectPropertiesFamily; |
@@ -2934,6 +2936,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
2934 | } | 2936 | } |
2935 | 2937 | ||
2936 | /// <summary> | 2938 | /// <summary> |
2939 | /// Duplicates object specified by localID. This is the event handler for IClientAPI. | ||
2940 | /// </summary> | ||
2941 | /// <param name="originalPrim">ID of object to duplicate</param> | ||
2942 | /// <param name="offset"></param> | ||
2943 | /// <param name="flags"></param> | ||
2944 | /// <param name="AgentID">Agent doing the duplication</param> | ||
2945 | /// <param name="GroupID">Group of new object</param> | ||
2946 | public void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID) | ||
2947 | { | ||
2948 | SceneObjectGroup copy = SceneGraph.DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Identity); | ||
2949 | if (copy != null) | ||
2950 | EventManager.TriggerObjectAddedToScene(copy); | ||
2951 | } | ||
2952 | |||
2953 | /// <summary> | ||
2937 | /// Duplicates object specified by localID at position raycasted against RayTargetObject using | 2954 | /// Duplicates object specified by localID at position raycasted against RayTargetObject using |
2938 | /// RayEnd and RayStart to determine what the angle of the ray is | 2955 | /// RayEnd and RayStart to determine what the angle of the ray is |
2939 | /// </summary> | 2956 | /// </summary> |
@@ -2995,19 +3012,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
2995 | 3012 | ||
2996 | // stick in offset format from the original prim | 3013 | // stick in offset format from the original prim |
2997 | pos = pos - target.ParentGroup.AbsolutePosition; | 3014 | pos = pos - target.ParentGroup.AbsolutePosition; |
3015 | SceneObjectGroup copy; | ||
2998 | if (CopyRotates) | 3016 | if (CopyRotates) |
2999 | { | 3017 | { |
3000 | Quaternion worldRot = target2.GetWorldRotation(); | 3018 | Quaternion worldRot = target2.GetWorldRotation(); |
3001 | 3019 | ||
3002 | // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); | 3020 | // SceneObjectGroup obj = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); |
3003 | m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); | 3021 | copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, worldRot); |
3004 | //obj.Rotation = worldRot; | 3022 | //obj.Rotation = worldRot; |
3005 | //obj.UpdateGroupRotationR(worldRot); | 3023 | //obj.UpdateGroupRotationR(worldRot); |
3006 | } | 3024 | } |
3007 | else | 3025 | else |
3008 | { | 3026 | { |
3009 | m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID); | 3027 | copy = m_sceneGraph.DuplicateObject(localID, pos, target.GetEffectiveObjectFlags(), AgentID, GroupID, Quaternion.Identity); |
3010 | } | 3028 | } |
3029 | if (copy != null) | ||
3030 | EventManager.TriggerObjectAddedToScene(copy); | ||
3011 | } | 3031 | } |
3012 | } | 3032 | } |
3013 | } | 3033 | } |
@@ -4292,6 +4312,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
4292 | return m_sceneGraph.GetGroupByPrim(localID); | 4312 | return m_sceneGraph.GetGroupByPrim(localID); |
4293 | } | 4313 | } |
4294 | 4314 | ||
4315 | /// <summary> | ||
4316 | /// Get a scene object group that contains the prim with the given uuid | ||
4317 | /// </summary> | ||
4318 | /// <param name="fullID"></param> | ||
4319 | /// <returns>null if no scene object group containing that prim is found</returns> | ||
4320 | public SceneObjectGroup GetGroupByPrim(UUID fullID) | ||
4321 | { | ||
4322 | return m_sceneGraph.GetGroupByPrim(fullID); | ||
4323 | } | ||
4324 | |||
4295 | public override bool TryGetScenePresence(UUID agentID, out ScenePresence sp) | 4325 | public override bool TryGetScenePresence(UUID agentID, out ScenePresence sp) |
4296 | { | 4326 | { |
4297 | return m_sceneGraph.TryGetScenePresence(agentID, out sp); | 4327 | return m_sceneGraph.TryGetScenePresence(agentID, out sp); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 06de72f..7d801b5 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -301,6 +301,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
301 | /// </summary> | 301 | /// </summary> |
302 | /// | 302 | /// |
303 | /// This method does not send updates to the client - callers need to handle this themselves. | 303 | /// This method does not send updates to the client - callers need to handle this themselves. |
304 | /// Caller should also trigger EventManager.TriggerObjectAddedToScene | ||
304 | /// <param name="sceneObject"></param> | 305 | /// <param name="sceneObject"></param> |
305 | /// <param name="attachToBackup"></param> | 306 | /// <param name="attachToBackup"></param> |
306 | /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param> | 307 | /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param> |
@@ -921,7 +922,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
921 | /// </summary> | 922 | /// </summary> |
922 | /// <param name="fullID"></param> | 923 | /// <param name="fullID"></param> |
923 | /// <returns>null if no scene object group containing that prim is found</returns> | 924 | /// <returns>null if no scene object group containing that prim is found</returns> |
924 | private SceneObjectGroup GetGroupByPrim(UUID fullID) | 925 | public SceneObjectGroup GetGroupByPrim(UUID fullID) |
925 | { | 926 | { |
926 | SceneObjectGroup sog; | 927 | SceneObjectGroup sog; |
927 | lock (SceneObjectGroupsByFullPartID) | 928 | lock (SceneObjectGroupsByFullPartID) |
@@ -1872,22 +1873,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1872 | } | 1873 | } |
1873 | 1874 | ||
1874 | /// <summary> | 1875 | /// <summary> |
1875 | /// Duplicate the given object, Fire and Forget, No rotation, no return wrapper | ||
1876 | /// </summary> | ||
1877 | /// <param name="originalPrim"></param> | ||
1878 | /// <param name="offset"></param> | ||
1879 | /// <param name="flags"></param> | ||
1880 | /// <param name="AgentID"></param> | ||
1881 | /// <param name="GroupID"></param> | ||
1882 | protected internal void DuplicateObject(uint originalPrim, Vector3 offset, uint flags, UUID AgentID, UUID GroupID) | ||
1883 | { | ||
1884 | //m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID); | ||
1885 | |||
1886 | // SceneObjectGroup dupe = DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Zero); | ||
1887 | DuplicateObject(originalPrim, offset, flags, AgentID, GroupID, Quaternion.Identity); | ||
1888 | } | ||
1889 | |||
1890 | /// <summary> | ||
1891 | /// Duplicate the given object. | 1876 | /// Duplicate the given object. |
1892 | /// </summary> | 1877 | /// </summary> |
1893 | /// <param name="originalPrim"></param> | 1878 | /// <param name="originalPrim"></param> |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 36d3588..9b660b6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -235,7 +235,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
235 | 235 | ||
236 | public bool IgnoreUndoUpdate = false; | 236 | public bool IgnoreUndoUpdate = false; |
237 | 237 | ||
238 | private PrimFlags LocalFlags; | 238 | public PrimFlags LocalFlags; |
239 | 239 | ||
240 | private float m_damage = -1.0f; | 240 | private float m_damage = -1.0f; |
241 | private byte[] m_TextureAnimation; | 241 | private byte[] m_TextureAnimation; |
@@ -902,32 +902,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
902 | public Color Color | 902 | public Color Color |
903 | { | 903 | { |
904 | get { return m_color; } | 904 | get { return m_color; } |
905 | set | 905 | set { m_color = value; } |
906 | { | ||
907 | m_color = value; | ||
908 | |||
909 | /* ScheduleFullUpdate() need not be called b/c after | ||
910 | * setting the color, the text will be set, so then | ||
911 | * ScheduleFullUpdate() will be called. */ | ||
912 | //ScheduleFullUpdate(); | ||
913 | } | ||
914 | } | 906 | } |
915 | 907 | ||
916 | public string Text | 908 | public string Text |
917 | { | 909 | { |
918 | get | 910 | get |
919 | { | 911 | { |
920 | string returnstr = m_text; | 912 | if (m_text.Length > 255) |
921 | if (returnstr.Length > 255) | 913 | return m_text.Substring(0, 254); |
922 | { | 914 | return m_text; |
923 | returnstr = returnstr.Substring(0, 254); | ||
924 | } | ||
925 | return returnstr; | ||
926 | } | ||
927 | set | ||
928 | { | ||
929 | m_text = value; | ||
930 | } | 915 | } |
916 | set { m_text = value; } | ||
931 | } | 917 | } |
932 | 918 | ||
933 | 919 | ||
@@ -2743,6 +2729,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2743 | if (ParentGroup == null) | 2729 | if (ParentGroup == null) |
2744 | return; | 2730 | return; |
2745 | 2731 | ||
2732 | ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); | ||
2733 | |||
2746 | ParentGroup.QueueForUpdateCheck(); | 2734 | ParentGroup.QueueForUpdateCheck(); |
2747 | 2735 | ||
2748 | int timeNow = Util.UnixTimeSinceEpoch(); | 2736 | int timeNow = Util.UnixTimeSinceEpoch(); |
@@ -2775,6 +2763,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2775 | if (ParentGroup == null) | 2763 | if (ParentGroup == null) |
2776 | return; | 2764 | return; |
2777 | 2765 | ||
2766 | ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); | ||
2767 | |||
2778 | // This was pulled from SceneViewer. Attachments always receive full updates. | 2768 | // This was pulled from SceneViewer. Attachments always receive full updates. |
2779 | // I could not verify if this is a requirement but this maintains existing behavior | 2769 | // I could not verify if this is a requirement but this maintains existing behavior |
2780 | if (ParentGroup.IsAttachment) | 2770 | if (ParentGroup.IsAttachment) |