aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-03-09 02:38:11 +0000
committerJustin Clark-Casey (justincc)2012-03-09 02:38:11 +0000
commit94e58ff6b9368975925cea4697077a8e59162bc0 (patch)
tree1798f25a23316e71182aca5634fcd5eebb4133bf /OpenSim/Region/ScriptEngine
parentrefactor: cleanup SP.HandleAgentSit so that everything is done within one if ... (diff)
downloadopensim-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')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs24
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;