diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 51 |
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 |