diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 428aeb6..7993d95 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -4636,6 +4636,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4636 | return World.GetLandOwner((float)pos.x, (float)pos.y).ToString(); | 4636 | return World.GetLandOwner((float)pos.x, (float)pos.y).ToString(); |
4637 | } | 4637 | } |
4638 | 4638 | ||
4639 | /// <summary> | ||
4640 | /// According to http://lslwiki.net/lslwiki/wakka.php?wakka=llGetAgentSize | ||
4641 | /// only the height of avatars vary and that says:- | ||
4642 | /// Width (x) and depth (y) are constant. (0.45m and 0.6m respectively). | ||
4643 | /// </summary> | ||
4639 | public LSL_Vector llGetAgentSize(string id) | 4644 | public LSL_Vector llGetAgentSize(string id) |
4640 | { | 4645 | { |
4641 | m_host.AddScriptLPS(1); | 4646 | m_host.AddScriptLPS(1); |
@@ -4647,8 +4652,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4647 | } | 4652 | } |
4648 | else | 4653 | else |
4649 | { | 4654 | { |
4650 | PhysicsVector size = avatar.PhysicsActor.Size; | 4655 | byte[] parms = avatar.Appearance.VisualParams; |
4651 | agentSize = new LSL_Vector(size.X, size.Y, size.Z); | 4656 | // The values here were arrived at from experimentation with the sliders |
4657 | // in edit appearance in SL to find the ones that affected the height and how | ||
4658 | // much they affected it. | ||
4659 | float avatarHeight = 1.23077f // Shortest possible avatar height | ||
4660 | + 0.516945f * (float)parms[25] / 255.0f // Body length | ||
4661 | + 0.072514f * (float)parms[120] / 255.0f // Head size | ||
4662 | + 0.3836f * (float)parms[125] / 255.0f // Leg length | ||
4663 | + 0.076f * (float)parms[148] / 255.0f; // Neck length | ||
4664 | agentSize = new LSL_Vector(0.45, 0.6, avatarHeight); | ||
4652 | } | 4665 | } |
4653 | return agentSize; | 4666 | return agentSize; |
4654 | } | 4667 | } |