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; } } }