aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs54
1 files changed, 53 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 7fa25f5..fa9364d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -126,7 +126,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
126 [Serializable] 126 [Serializable]
127 public class OSSL_Api : MarshalByRefObject, IOSSL_Api, IScriptApi 127 public class OSSL_Api : MarshalByRefObject, IOSSL_Api, IScriptApi
128 { 128 {
129// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 129 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
130 130
131 public const string GridInfoServiceConfigSectionName = "GridInfoService"; 131 public const string GridInfoServiceConfigSectionName = "GridInfoService";
132 132
@@ -3151,6 +3151,58 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3151 ((LSL_Api)m_LSL_Api).AttachToAvatar(attachmentPoint); 3151 ((LSL_Api)m_LSL_Api).AttachToAvatar(attachmentPoint);
3152 } 3152 }
3153 3153
3154 public void osForceAttachToAvatarFromInventory(string itemName, int attachmentPoint)
3155 {
3156 CheckThreatLevel(ThreatLevel.High, "osForceAttachToAvatarFromInventory");
3157
3158 IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
3159
3160 if (attachmentsModule == null)
3161 return;
3162
3163 m_host.AddScriptLPS(1);
3164
3165 InitLSL();
3166
3167 TaskInventoryItem item = m_host.Inventory.GetInventoryItem(itemName);
3168
3169 if (item == null)
3170 {
3171 ((LSL_Api)m_LSL_Api).llSay(0, string.Format("Could not find object '{0}'", itemName));
3172 throw new Exception(String.Format("The inventory item '{0}' could not be found", itemName));
3173 }
3174
3175 if (item.InvType != (int)InventoryType.Object)
3176 {
3177 // FIXME: Temporary null check for regression tests since they dont' have the infrastructure to set
3178 // up the api reference.
3179 if (m_LSL_Api != null)
3180 ((LSL_Api)m_LSL_Api).llSay(0, string.Format("Unable to attach, item '{0}' is not an object.", itemName));
3181
3182 throw new Exception(String.Format("The inventory item '{0}' is not an object", itemName));
3183
3184 return;
3185 }
3186
3187 ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
3188
3189 if (sp == null)
3190 return;
3191
3192 InventoryItemBase newItem = World.MoveTaskInventoryItem(sp.UUID, UUID.Zero, m_host, item.ItemID);
3193
3194 if (newItem == null)
3195 {
3196 m_log.ErrorFormat(
3197 "[OSSL API]: Could not create user inventory item {0} for {1}, attach point {2} in {3}",
3198 itemName, m_host.Name, attachmentPoint, World.Name);
3199
3200 return;
3201 }
3202
3203 attachmentsModule.RezSingleAttachmentFromInventory(sp, newItem.ID, (uint)attachmentPoint);
3204 }
3205
3154 public void osForceDetachFromAvatar() 3206 public void osForceDetachFromAvatar()
3155 { 3207 {
3156 CheckThreatLevel(ThreatLevel.High, "osForceDetachFromAvatar"); 3208 CheckThreatLevel(ThreatLevel.High, "osForceDetachFromAvatar");