diff options
author | Justin Clark-Casey (justincc) | 2012-03-09 02:38:11 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-03-09 02:38:11 +0000 |
commit | 94e58ff6b9368975925cea4697077a8e59162bc0 (patch) | |
tree | 1798f25a23316e71182aca5634fcd5eebb4133bf /OpenSim/Region/ScriptEngine/Shared/Api/Implementation | |
parent | refactor: cleanup SP.HandleAgentSit so that everything is done within one if ... (diff) | |
download | opensim-SC-94e58ff6b9368975925cea4697077a8e59162bc0.zip opensim-SC-94e58ff6b9368975925cea4697077a8e59162bc0.tar.gz opensim-SC-94e58ff6b9368975925cea4697077a8e59162bc0.tar.bz2 opensim-SC-94e58ff6b9368975925cea4697077a8e59162bc0.tar.xz |
Use SP.ParentPart instead of ParentID in places where it's more efficient (saving extra null checks, etc.)
However, it looks like we should retain SP.ParentID since it's much easier to use that in places where another thread could change ParentPart to null.
Otherwise one has to clumsily put ParentPart in a reference, etc. to avoid a race.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 786ae6e..bb374ed 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3825,7 +3825,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3825 | List<String> nametable = new List<String>(); | 3825 | List<String> nametable = new List<String>(); |
3826 | World.ForEachRootScenePresence(delegate(ScenePresence presence) | 3826 | World.ForEachRootScenePresence(delegate(ScenePresence presence) |
3827 | { | 3827 | { |
3828 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) | 3828 | SceneObjectPart sitPart = presence.ParentPart; |
3829 | if (sitPart != null && m_host.ParentGroup.HasChildPrim(sitPart.LocalId)) | ||
3829 | nametable.Add(presence.ControllingClient.Name); | 3830 | nametable.Add(presence.ControllingClient.Name); |
3830 | }); | 3831 | }); |
3831 | 3832 | ||
@@ -4393,22 +4394,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4393 | 4394 | ||
4394 | // Find pushee position | 4395 | // Find pushee position |
4395 | // Pushee Linked? | 4396 | // Pushee Linked? |
4396 | if (pusheeav.ParentID != 0) | 4397 | SceneObjectPart sitPart = pusheeav.ParentPart; |
4397 | { | 4398 | if (sitPart != null) |
4398 | SceneObjectPart parentobj = World.GetSceneObjectPart(pusheeav.ParentID); | 4399 | PusheePos = sitPart.AbsolutePosition; |
4399 | if (parentobj != null) | ||
4400 | { | ||
4401 | PusheePos = parentobj.AbsolutePosition; | ||
4402 | } | ||
4403 | else | ||
4404 | { | ||
4405 | PusheePos = pusheeav.AbsolutePosition; | ||
4406 | } | ||
4407 | } | ||
4408 | else | 4400 | else |
4409 | { | ||
4410 | PusheePos = pusheeav.AbsolutePosition; | 4401 | PusheePos = pusheeav.AbsolutePosition; |
4411 | } | ||
4412 | } | 4402 | } |
4413 | 4403 | ||
4414 | if (!pusheeIsAvatar) | 4404 | if (!pusheeIsAvatar) |
@@ -5603,7 +5593,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5603 | flags |= ScriptBaseClass.AGENT_IN_AIR; | 5593 | flags |= ScriptBaseClass.AGENT_IN_AIR; |
5604 | } | 5594 | } |
5605 | 5595 | ||
5606 | if (agent.ParentID != 0) | 5596 | if (agent.ParentPart != null) |
5607 | { | 5597 | { |
5608 | flags |= ScriptBaseClass.AGENT_ON_OBJECT; | 5598 | flags |= ScriptBaseClass.AGENT_ON_OBJECT; |
5609 | flags |= ScriptBaseClass.AGENT_SITTING; | 5599 | flags |= ScriptBaseClass.AGENT_SITTING; |
@@ -7692,7 +7682,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7692 | World.ForEachRootScenePresence(delegate(ScenePresence presence) | 7682 | World.ForEachRootScenePresence(delegate(ScenePresence presence) |
7693 | { | 7683 | { |
7694 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) | 7684 | if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID)) |
7695 | avatarCount++; | 7685 | avatarCount++; |
7696 | }); | 7686 | }); |
7697 | 7687 | ||
7698 | return m_host.ParentGroup.PrimCount + avatarCount; | 7688 | return m_host.ParentGroup.PrimCount + avatarCount; |