public LSL_Integer SetPrimMediaParams(ISceneChildEntity obj, int face, LSL_List rules)
{
IMoapModule module = World.RequestModuleInterface<IMoapModule>();
if (null == module)
throw new Exception("Media on a prim functions not available");
MediaEntry me = module.GetMediaEntry(obj, face) ?? new MediaEntry();
int i = 0;
while (i < rules.Length - 1)
{
int code = rules.GetLSLIntegerItem(i++);
if (code == ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE)
{
me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_CONTROLS)
{
int v = rules.GetLSLIntegerItem(i++);
me.Controls = ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v
? MediaControls.Standard
: MediaControls.Mini;
}
else if (code == ScriptBaseClass.PRIM_MEDIA_CURRENT_URL)
{
me.CurrentURL = rules.GetLSLStringItem(i++);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_HOME_URL)
{
me.HomeURL = rules.GetLSLStringItem(i++);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP)
{
me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY)
{
me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE)
{
me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM)
{
me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT)
{
me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS)
{
me.Width = rules.GetLSLIntegerItem(i++);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS)
{
me.Height = rules.GetLSLIntegerItem(i++);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE)
{
me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++));
}
else if (code == ScriptBaseClass.PRIM_MEDIA_WHITELIST)
{
string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new[] { ',' });
List<string> whiteListUrls = new List<string>();
#if (!ISWIN)
Array.ForEach(
rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); });
#else
Array.ForEach(
rawWhiteListUrls, rawUrl => whiteListUrls.Add(rawUrl.Trim()));
#endif
me.WhiteList = whiteListUrls.ToArray();
}
else if (code == ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT)
{
me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
}
else if (code == ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL)
{
me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
}
}
module.SetMediaEntry(obj, face, me);
return ScriptBaseClass.LSL_STATUS_OK;
}