public void SetTracks(dynamic tracksData, bool render = true)
{
FastList<int> tracks = new FastList<int>();
// decode string
if (JsTypeOf(tracksData) == JsTypes.@string)
{
try
{
tracksData = JSON.parse((string)tracksData);
}
catch
{
tracksData = new[] { 0 };
}
}
// decode array
if (JsTypeOf(tracksData) == JsTypes.number)
{
tracks.Add((int)tracksData);
}
else if (tracksData.length)
{
for (var i = 0; i < tracksData.length; i++)
{
int value;
if (JsTypeOf(tracksData[i]) == JsTypes.number)
{
value = (int)tracksData[i];
}
else
{
value = Std.ParseInt(tracksData[i].ToString());
}
if (value >= 0)
{
tracks.Add(value);
}
}
}
TrackIndexes = tracks.ToArray();
if (render)
{
Render();
}
}