From 61bf2bf2ddce323255d7d009274d8da5a2da54c9 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 2 Jun 2011 18:32:25 +0200 Subject: Make Buoyancy a prim property --- .../Shared/Api/Implementation/LSL_Api.cs | 51 ++++++++++++++-------- 1 file changed, 34 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index f7c44d1..b87bf5a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3453,7 +3453,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { if (!m_host.ParentGroup.IsDeleted) { - m_host.ParentGroup.RootPart.SetBuoyancy((float)buoyancy); + m_host.ParentGroup.RootPart.Buoyancy = (float)buoyancy; } } } @@ -3707,27 +3707,44 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; } } - else if (m_host.SitTargetAvatar == agentID) // Sitting avatar + else { - // When agent is sitting, certain permissions are implicit if requested from sitting agent - int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION | - ScriptBaseClass.PERMISSION_CONTROL_CAMERA | - ScriptBaseClass.PERMISSION_TRACK_CAMERA | - ScriptBaseClass.PERMISSION_TAKE_CONTROLS; + bool sitting = false; + if (m_host.SitTargetAvatar == agentID) + { + sitting = true; + } + else + { + foreach (SceneObjectPart p in m_host.ParentGroup.Parts) + { + if (p.SitTargetAvatar == agentID) + sitting = true; + } + } - if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms + if (sitting) { - m_host.TaskInventory.LockItemsForWrite(true); - m_host.TaskInventory[invItemID].PermsGranter = agentID; - m_host.TaskInventory[invItemID].PermsMask = perm; - m_host.TaskInventory.LockItemsForWrite(false); + // When agent is sitting, certain permissions are implicit if requested from sitting agent + int implicitPerms = ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION | + ScriptBaseClass.PERMISSION_CONTROL_CAMERA | + ScriptBaseClass.PERMISSION_TRACK_CAMERA | + ScriptBaseClass.PERMISSION_TAKE_CONTROLS; - m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams( - "run_time_permissions", new Object[] { - new LSL_Integer(perm) }, - new DetectParams[0])); + if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms + { + m_host.TaskInventory.LockItemsForWrite(true); + m_host.TaskInventory[invItemID].PermsGranter = agentID; + m_host.TaskInventory[invItemID].PermsMask = perm; + m_host.TaskInventory.LockItemsForWrite(false); - return; + m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams( + "run_time_permissions", new Object[] { + new LSL_Integer(perm) }, + new DetectParams[0])); + + return; + } } } -- cgit v1.1