using Newtonsoft.Json;
using UAssetAPI.UnrealTypes;
namespace UAssetAPI.Kismet.Bytecode.Expressions
{
///
/// A single Kismet bytecode instruction, corresponding to the instruction.
///
public class EX_SetSet : KismetExpression
{
///
/// The token of this expression.
///
public override EExprToken Token { get { return EExprToken.EX_SetSet; } }
///
/// Set property.
///
[JsonProperty]
public KismetExpression SetProperty;
///
/// Set entries.
///
[JsonProperty]
public KismetExpression[] Elements;
public EX_SetSet()
{
}
///
/// Reads out the expression from a BinaryReader.
///
/// The BinaryReader to read from.
public override void Read(AssetBinaryReader reader)
{
SetProperty = ExpressionSerializer.ReadExpression(reader);
int numEntries = reader.ReadInt32(); // Number of elements
Elements = reader.ReadExpressionArray(EExprToken.EX_EndSet);
}
///
/// Writes the expression to a BinaryWriter.
///
/// The BinaryWriter to write from.
/// The iCode offset of the data that was written.
public override int Write(AssetBinaryWriter writer)
{
int offset = 0;
offset += ExpressionSerializer.WriteExpression(SetProperty, writer);
writer.Write(Elements.Length); offset += sizeof(int);
for (int i = 0; i < Elements.Length; i++)
{
offset += ExpressionSerializer.WriteExpression(Elements[i], writer);
}
offset += ExpressionSerializer.WriteExpression(new EX_EndSet(), writer);
return offset;
}
}
}