From 795c8e6c22d4174d942ad56e70a0acbe507e2ec7 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 9 Aug 2011 22:05:47 +0100
Subject: Add osOwnerSaveAppearance() to help with setting up NPC appearances.
Not yet ready for user use.
Adds regression test.
---
.../Shared/Api/Implementation/OSSL_Api.cs | 51 +++++++++++++++++-----
1 file changed, 41 insertions(+), 10 deletions(-)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
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
return new LSL_Key(UUID.Zero.ToString());
}
+ ///
+ /// Save the current appearance of the NPC permanently to the named notecard.
+ ///
+ ///
+ /// The name of the notecard to which to save the appearance.
+ /// The asset ID of the notecard saved.
public LSL_Key osNpcSaveAppearance(string avatar, string notecardName)
{
CheckThreatLevel(ThreatLevel.High, "osNpcSaveAppearance");
INPCModule npcModule = World.RequestModuleInterface();
- IAvatarFactory appearanceModule = World.RequestModuleInterface();
- if (npcModule != null && appearanceModule != null)
+ if (npcModule != null)
{
UUID avatarId = UUID.Zero;
if (!UUID.TryParse(avatar, out avatarId))
@@ -2163,14 +2168,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (!npcModule.IsNPC(avatarId, m_host.ParentGroup.Scene))
return new LSL_Key(UUID.Zero.ToString());
- appearanceModule.SaveBakedTextures(avatarId);
- ScenePresence sp = m_host.ParentGroup.Scene.GetScenePresence(avatarId);
- OSDMap appearancePacked = sp.Appearance.Pack();
-
- TaskInventoryItem item
- = SaveNotecard(notecardName, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
-
- return new LSL_Key(item.AssetID.ToString());
+ return SaveAppearanceToNotecard(avatarId, notecardName);
}
return new LSL_Key(UUID.Zero.ToString());
@@ -2236,6 +2234,39 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
module.DeleteNPC(new UUID(npc.m_string), World);
}
}
+
+ ///
+ /// Save the current appearance of the script owner permanently to the named notecard.
+ ///
+ /// The name of the notecard to which to save the appearance.
+ /// The asset ID of the notecard saved.
+ public LSL_Key osOwnerSaveAppearance(string notecardName)
+ {
+ CheckThreatLevel(ThreatLevel.High, "osOwnerSaveAppearance");
+
+ return SaveAppearanceToNotecard(m_host.OwnerID, notecardName);
+ }
+
+ protected LSL_Key SaveAppearanceToNotecard(UUID avatarId, string notecardName)
+ {
+ IAvatarFactory appearanceModule = World.RequestModuleInterface();
+
+ if (appearanceModule != null)
+ {
+ appearanceModule.SaveBakedTextures(m_host.OwnerID);
+ ScenePresence sp = m_host.ParentGroup.Scene.GetScenePresence(m_host.OwnerID);
+ OSDMap appearancePacked = sp.Appearance.Pack();
+
+ TaskInventoryItem item
+ = SaveNotecard(notecardName, "Avatar Appearance", Util.GetFormattedXml(appearancePacked as OSD), true);
+
+ return new LSL_Key(item.AssetID.ToString());
+ }
+ else
+ {
+ return new LSL_Key(UUID.Zero.ToString());
+ }
+ }
///
/// Get current region's map texture UUID
--
cgit v1.1