46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
|
using System.Xml;
|
|||
|
using Roblox.DataTypes;
|
|||
|
|
|||
|
namespace Roblox.XmlFormat.PropertyTokens
|
|||
|
{
|
|||
|
public class NumberSequenceToken : IXmlPropertyToken
|
|||
|
{
|
|||
|
public string Token => "NumberSequence";
|
|||
|
|
|||
|
public bool ReadToken(Property prop, XmlNode token)
|
|||
|
{
|
|||
|
string contents = token.InnerText.Trim();
|
|||
|
string[] buffer = contents.Split(' ');
|
|||
|
|
|||
|
int length = buffer.Length;
|
|||
|
bool valid = (length % 3 == 0);
|
|||
|
|
|||
|
if (valid)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
NumberSequenceKeypoint[] keypoints = new NumberSequenceKeypoint[length / 3];
|
|||
|
|
|||
|
for (int i = 0; i < length; i += 3)
|
|||
|
{
|
|||
|
float Time = float.Parse(buffer[ i ]);
|
|||
|
float Value = float.Parse(buffer[i + 1]);
|
|||
|
float Envelope = float.Parse(buffer[i + 2]);
|
|||
|
|
|||
|
keypoints[i / 3] = new NumberSequenceKeypoint(Time, Value, Envelope);
|
|||
|
}
|
|||
|
|
|||
|
prop.Type = PropertyType.NumberSequence;
|
|||
|
prop.Value = new NumberSequence(keypoints);
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
valid = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return valid;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|