aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs51
1 files changed, 41 insertions, 10 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 07b36de..a05c623 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2147,14 +2147,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2147 return new LSL_Key(UUID.Zero.ToString()); 2147 return new LSL_Key(UUID.Zero.ToString());
2148 } 2148 }
2149 2149
2150 /// <summary>
2151 /// Save the current appearance of the NPC permanently to the named notecard.
2152 /// </summary>
2153 /// <param name="avatar"></param>
2154 /// <param name="notecardName">The name of the notecard to which to save the appearance.</param>
2155 /// <returns>The asset ID of the notecard saved.</returns>
2150 public LSL_Key osNpcSaveAppearance(string avatar, string notecardName) 2156 public LSL_Key osNpcSaveAppearance(string avatar, string notecardName)
2151 { 2157 {
2152 CheckThreatLevel(ThreatLevel.High, "osNpcSaveAppearance"); 2158 CheckThreatLevel(ThreatLevel.High, "osNpcSaveAppearance");
2153 2159
2154 INPCModule npcModule = World.RequestModuleInterface<INPCModule>(); 2160 INPCModule npcModule = World.RequestModuleInterface<INPCModule>();
2155 IAvatarFactory appearanceModule = World.RequestModuleInterface<IAvatarFactory>();
2156 2161
2157 if (npcModule != null && appearanceModule != null) 2162 if (npcModule != null)
2158 { 2163 {
2159 UUID avatarId = UUID.Zero; 2164 UUID avatarId = UUID.Zero;
2160 if (!UUID.TryParse(avatar, out avatarId)) 2165 if (!UUID.TryParse(avatar, out avatarId))
@@ -2163,14 +2168,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2163 if (!npcModule.IsNPC(avatarId, m_host.ParentGroup.Scene)) 2168 if (!npcModule.IsNPC(avatarId, m_host.ParentGroup.Scene))
2164 return new LSL_Key(UUID.Zero.ToString()); 2169 return new LSL_Key(UUID.Zero.ToString());
2165 2170
2166 appearanceModule.SaveBakedTextures(avatarId); 2171 return SaveAppearanceToNotecard(avatarId, notecardName);
2167 ScenePresence sp = m_host.ParentGroup.Scene.GetScenePresence(avatarId);
2168 OSDMap appearancePacked = sp.Appearance.Pack();
2169
2170 TaskInventoryItem item
2171 = SaveNotecard(notecardName, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
2172
2173 return new LSL_Key(item.AssetID.ToString());
2174 } 2172 }
2175 2173
2176 return new LSL_Key(UUID.Zero.ToString()); 2174 return new LSL_Key(UUID.Zero.ToString());
@@ -2236,6 +2234,39 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2236 module.DeleteNPC(new UUID(npc.m_string), World); 2234 module.DeleteNPC(new UUID(npc.m_string), World);
2237 } 2235 }
2238 } 2236 }
2237
2238 /// <summary>
2239 /// Save the current appearance of the script owner permanently to the named notecard.
2240 /// </summary>
2241 /// <param name="notecardName">The name of the notecard to which to save the appearance.</param>
2242 /// <returns>The asset ID of the notecard saved.</returns>
2243 public LSL_Key osOwnerSaveAppearance(string notecardName)
2244 {
2245 CheckThreatLevel(ThreatLevel.High, "osOwnerSaveAppearance");
2246
2247 return SaveAppearanceToNotecard(m_host.OwnerID, notecardName);
2248 }
2249
2250 protected LSL_Key SaveAppearanceToNotecard(UUID avatarId, string notecardName)
2251 {
2252 IAvatarFactory appearanceModule = World.RequestModuleInterface<IAvatarFactory>();
2253
2254 if (appearanceModule != null)
2255 {
2256 appearanceModule.SaveBakedTextures(m_host.OwnerID);
2257 ScenePresence sp = m_host.ParentGroup.Scene.GetScenePresence(m_host.OwnerID);
2258 OSDMap appearancePacked = sp.Appearance.Pack();
2259
2260 TaskInventoryItem item
2261 = SaveNotecard(notecardName, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
2262
2263 return new LSL_Key(item.AssetID.ToString());
2264 }
2265 else
2266 {
2267 return new LSL_Key(UUID.Zero.ToString());
2268 }
2269 }
2239 2270
2240 /// <summary> 2271 /// <summary>
2241 /// Get current region's map texture UUID 2272 /// Get current region's map texture UUID