Get osNpcCreate() and osNpcLoadAppearance() to generate a script error if appearance notecard does not exist, rather than returning UUID.Zero or silently failing.
parent
d9aaf51561
commit
8af8319b95
|
@ -2346,11 +2346,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
appearance = new AvatarAppearance();
|
||||
appearance.Unpack(appearanceOsd);
|
||||
}
|
||||
else
|
||||
{
|
||||
OSSLError(string.Format("osNpcCreate: Notecard reference '{0}' not found.", notecard));
|
||||
}
|
||||
}
|
||||
|
||||
if (appearance == null)
|
||||
return new LSL_Key(UUID.Zero.ToString());
|
||||
|
||||
UUID ownerID = UUID.Zero;
|
||||
if (owned)
|
||||
ownerID = m_host.OwnerID;
|
||||
|
@ -2415,8 +2416,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
string appearanceSerialized = LoadNotecard(notecard);
|
||||
|
||||
if (appearanceSerialized == null)
|
||||
return;
|
||||
|
||||
OSSLError(string.Format("osNpcCreate: Notecard reference '{0}' not found.", notecard));
|
||||
|
||||
OSDMap appearanceOsd = (OSDMap)OSDParser.DeserializeLLSDXml(appearanceSerialized);
|
||||
// OSD a = OSDParser.DeserializeLLSDXml(appearanceSerialized);
|
||||
// Console.WriteLine("appearanceSerialized {0}", appearanceSerialized);
|
||||
|
|
|
@ -127,11 +127,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
|||
OSSL_Api osslApi = new OSSL_Api();
|
||||
osslApi.Initialize(m_engine, so.RootPart, null);
|
||||
|
||||
string npcRaw
|
||||
= osslApi.osNpcCreate("Jane", "Doe", new LSL_Types.Vector3(128, 128, 128), "not existing notecard name");
|
||||
string npcRaw;
|
||||
bool gotExpectedException = false;
|
||||
try
|
||||
{
|
||||
npcRaw
|
||||
= osslApi.osNpcCreate("Jane", "Doe", new LSL_Types.Vector3(128, 128, 128), "not existing notecard name");
|
||||
}
|
||||
catch (ScriptException)
|
||||
{
|
||||
gotExpectedException = true;
|
||||
}
|
||||
|
||||
UUID npcId = new UUID(npcRaw);
|
||||
Assert.That(npcId, Is.EqualTo(UUID.Zero));
|
||||
Assert.That(gotExpectedException, Is.True);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -233,7 +241,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
|||
string npcRaw
|
||||
= osslApi.osNpcCreate("Jane", "Doe", new LSL_Types.Vector3(128, 128, 128), firstAppearanceNcName);
|
||||
|
||||
osslApi.osNpcLoadAppearance(npcRaw, secondAppearanceNcName);
|
||||
bool gotExpectedException = false;
|
||||
try
|
||||
{
|
||||
osslApi.osNpcLoadAppearance(npcRaw, secondAppearanceNcName);
|
||||
}
|
||||
catch (ScriptException)
|
||||
{
|
||||
gotExpectedException = true;
|
||||
}
|
||||
|
||||
Assert.That(gotExpectedException, Is.True);
|
||||
|
||||
UUID npcId = new UUID(npcRaw);
|
||||
ScenePresence npc = m_scene.GetScenePresence(npcId);
|
||||
|
|
Loading…
Reference in New Issue