Mantis#2123. Thank you kindly, Idb for a patch that solves:
Under both DotNetEngine and XEngine, if an agent's UUID is passed as the parameter to llGetObjectMass(), it throws an exception.0.6.0-stable
parent
031eb08b8e
commit
5edaddce6d
|
@ -7393,7 +7393,25 @@ namespace OpenSim.Region.ScriptEngine.Common
|
||||||
UUID key = new UUID();
|
UUID key = new UUID();
|
||||||
if (UUID.TryParse(id, out key))
|
if (UUID.TryParse(id, out key))
|
||||||
{
|
{
|
||||||
return (double)World.GetSceneObjectPart(World.Entities[key].LocalId).GetMass();
|
try
|
||||||
|
{
|
||||||
|
SceneObjectPart obj = World.GetSceneObjectPart(World.Entities[key].LocalId);
|
||||||
|
if (obj != null)
|
||||||
|
return (double)obj.GetMass();
|
||||||
|
// the object is null so the key is for an avatar
|
||||||
|
ScenePresence avatar = World.GetScenePresence(key);
|
||||||
|
if (avatar != null)
|
||||||
|
if (avatar.IsChildAgent)
|
||||||
|
// ref http://www.lslwiki.net/lslwiki/wakka.php?wakka=llGetObjectMass
|
||||||
|
// child agents have a mass of 1.0
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return (double)avatar.PhysicsActor.Mass;
|
||||||
|
}
|
||||||
|
catch (KeyNotFoundException)
|
||||||
|
{
|
||||||
|
return 0; // The Object/Agent not in the region so just return zero
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7169,7 +7169,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
UUID key = new UUID();
|
UUID key = new UUID();
|
||||||
if (UUID.TryParse(id, out key))
|
if (UUID.TryParse(id, out key))
|
||||||
{
|
{
|
||||||
return (double)World.GetSceneObjectPart(World.Entities[key].LocalId).GetMass();
|
try
|
||||||
|
{
|
||||||
|
SceneObjectPart obj = World.GetSceneObjectPart(World.Entities[key].LocalId);
|
||||||
|
if (obj != null)
|
||||||
|
return (double)obj.GetMass();
|
||||||
|
// the object is null so the key is for an avatar
|
||||||
|
ScenePresence avatar = World.GetScenePresence(key);
|
||||||
|
if (avatar != null)
|
||||||
|
if (avatar.IsChildAgent)
|
||||||
|
// reference http://www.lslwiki.net/lslwiki/wakka.php?wakka=llGetObjectMass
|
||||||
|
// child agents have a mass of 1.0
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return (double)avatar.PhysicsActor.Mass;
|
||||||
|
}
|
||||||
|
catch (KeyNotFoundException)
|
||||||
|
{
|
||||||
|
return 0; // The Object/Agent not in the region so just return zero
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue