use notecard reader

master
Christopher 2020-07-10 18:21:52 +02:00
parent 093364de5d
commit 478a8218b3
2 changed files with 8 additions and 24 deletions

View File

@ -71,14 +71,6 @@ namespace OpenSim.Modules.Appearance2Avatar
}
protected string LoadNotecard(SceneObjectPart host, String notecardname)
{
IScriptEngine wComm = m_scene.RequestModuleInterface<IScriptEngine>();
IOSSL_Api _api = (IOSSL_Api)wComm.GetApi(host.UUID, "OSSL");
return _api.osGetNotecard(notecardname);
}
[ScriptInvocation]
public void osAppearance2Avatar(UUID hostID, UUID scriptID, String notecard, String targetAvatar)
{
@ -94,39 +86,31 @@ namespace OpenSim.Modules.Appearance2Avatar
if (notecardItem != null)
{
if (notecardItem.Type != 7)
{
throw new Exception("Given item is not a notecard.");
return;
}
m_log.Info("[" + Name + "] Info: Fetch asset data for notecard.");
String asset = LoadNotecard(_host, notecard);
NoteCardReader _ncReader = new NoteCardReader(m_scene, _host);
String noteCardContend = _ncReader.LoadNotecard(notecard);
if (asset != null)
if(noteCardContend != null)
{
m_log.Info(asset);
m_log.Info(noteCardContend);
m_log.Info("[" + Name + "] Info: Deserialize notecard.");
OSDMap appearanceOsd = (OSDMap)OSDParser.DeserializeLLSDXml(asset);
OSDMap appearanceOsd = (OSDMap)OSDParser.DeserializeLLSDXml(noteCardContend);
AvatarAppearance appearance = new AvatarAppearance();
appearance.Unpack(appearanceOsd);
m_log.Info("[" + Name + "] Info: Overwrite appearance");
sp.Appearance = appearance;
sp.TriggerScenePresenceUpdated();
m_log.Info("[" + Name + "] Info: Send update to clients");
sp.TriggerScenePresenceUpdated();
m_scene.ForEachClient(
client =>
{
sp.SendFullUpdateToClient(client);
});
}
else
{
m_log.Error("[" + Name + "] ERROR: Cant get asset data for appearance notecard");
throw new Exception("Cant get asset data for appearance notecard");
}
}
else
{

View File

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace OpenSim.Modules.Appearance2Avatar.helper
{
class NotecardCache
public class NotecardCache
{
protected class Notecard
{