Allow the osNpcCreate() function to accept a notecard name or asset for initial appearance
parent
d23d37d2aa
commit
0a1bbc27d2
|
@ -2130,20 +2130,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, LSL_Key cloneFrom)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.High, "osNpcCreate");
|
||||
//QueueUserWorkItem
|
||||
|
||||
INPCModule module = World.RequestModuleInterface<INPCModule>();
|
||||
if (module != null)
|
||||
{
|
||||
ScenePresence clonePresence = World.GetScenePresence(new UUID(cloneFrom.m_string));
|
||||
if (clonePresence == null)
|
||||
AvatarAppearance appearance = null;
|
||||
|
||||
UUID cloneId;
|
||||
if (UUID.TryParse(cloneFrom, out cloneId))
|
||||
{
|
||||
ScenePresence clonePresence = World.GetScenePresence(new UUID(cloneFrom.m_string));
|
||||
if (clonePresence != null)
|
||||
appearance = clonePresence.Appearance;
|
||||
}
|
||||
|
||||
if (appearance == null)
|
||||
{
|
||||
string appearanceSerialized = LoadNotecard(cloneFrom.m_string);
|
||||
|
||||
if (appearanceSerialized != null)
|
||||
{
|
||||
OSDMap appearanceOsd = (OSDMap)OSDParser.DeserializeLLSDXml(appearanceSerialized);
|
||||
appearance = new AvatarAppearance();
|
||||
appearance.Unpack(appearanceOsd);
|
||||
}
|
||||
}
|
||||
|
||||
if (appearance == null)
|
||||
return new LSL_Key(UUID.Zero.ToString());
|
||||
|
||||
UUID x = module.CreateNPC(firstname,
|
||||
lastname,
|
||||
new Vector3((float) position.x, (float) position.y, (float) position.z),
|
||||
World,
|
||||
clonePresence.Appearance);
|
||||
appearance);
|
||||
|
||||
return new LSL_Key(x.ToString());
|
||||
}
|
||||
|
|
|
@ -78,11 +78,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
|||
/// <summary>
|
||||
/// Test creation of an NPC where the appearance data comes from a notecard
|
||||
/// </summary>
|
||||
//[Test]
|
||||
[Test]
|
||||
public void TestOsNpcCreateFromNotecard()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
// log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
// Store an avatar with a different height from default in a notecard.
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
|
|
Loading…
Reference in New Issue