Plumb llSetAnimationOverride

This commit is contained in:
Melanie Thielker
2014-09-09 03:01:05 +02:00
parent cf1d58d164
commit f2390f7c72
5 changed files with 54 additions and 0 deletions

View File

@@ -13475,6 +13475,49 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_UrlModule.HttpContentType(new UUID(id),type);
}
}
public void llSetAnimationOverride(LSL_String animState, LSL_String anim)
{
string state = String.Empty;
foreach (KeyValuePair<string, string> kvp in MovementAnimationsForLSL)
{
if (kvp.Value == animState)
{
state = kvp.Key;
break;
}
}
if (state == String.Empty)
{
llShout(ScriptBaseClass.DEBUG_CHANNEL, "Invalid animation state " + animState);
return;
}
if (m_item.PermsGranter == UUID.Zero)
return;
if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_OVERRIDE_ANIMATIONS) == 0)
{
llShout(ScriptBaseClass.DEBUG_CHANNEL, "No permission to override animations");
return;
}
ScenePresence presence = World.GetScenePresence(m_item.PermsGranter);
if (presence == null)
return;
UUID animID = ScriptUtils.GetAssetIdFromItemName(m_host, anim, (int)AssetType.Animation);
if (animID == UUID.Zero)
{
llShout(ScriptBaseClass.DEBUG_CHANNEL, "Animation not found");
return;
}
presence.SetAnimationOverride(state, animID);
}
}
public class NotecardCache