Ejemplo n.º 1
0
        /// <summary>
        /// Writes an FBlueprintText to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public virtual int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            writer.Write((byte)TextLiteralType); offset += sizeof(byte);
            switch (TextLiteralType)
            {
            case EBlueprintTextLiteralType.Empty:
                break;

            case EBlueprintTextLiteralType.LocalizedText:
                offset += ExpressionSerializer.WriteExpression(LocalizedSource, writer);
                offset += ExpressionSerializer.WriteExpression(LocalizedKey, writer);
                offset += ExpressionSerializer.WriteExpression(LocalizedNamespace, writer);
                break;

            case EBlueprintTextLiteralType.InvariantText:     // IsCultureInvariant
                offset += ExpressionSerializer.WriteExpression(InvariantLiteralString, writer);
                break;

            case EBlueprintTextLiteralType.LiteralString:
                offset += ExpressionSerializer.WriteExpression(LiteralString, writer);
                break;

            case EBlueprintTextLiteralType.StringTableEntry:
                offset += writer.XFER_OBJECT_POINTER(StringTableAsset);
                offset += ExpressionSerializer.WriteExpression(StringTableId, writer);
                offset += ExpressionSerializer.WriteExpression(StringTableKey, writer);
                break;

            default:
                throw new NotImplementedException("Unimplemented blueprint text literal type " + TextLiteralType);
            }
            return(offset);
        }
Ejemplo n.º 2
0
        public override void Write(AssetBinaryWriter writer)
        {
            base.Write(writer);

            writer.Write(Enum.Index);
            MainSerializer.WriteFProperty(UnderlyingProp, writer);
        }
Ejemplo n.º 3
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                if (Value.Count > 0)
                {
                    writer.Write(Value.Keys.ElementAt(0).PropertyType);
                    writer.Write(Value[0].PropertyType);
                }
                else
                {
                    writer.Write(KeyType);
                    writer.Write(ValueType);
                }
                writer.WritePropertyGuid(PropertyGuid);
            }

            int here = (int)writer.BaseStream.Position;

            writer.Write(KeysToRemove?.Length ?? 0);
            if (KeysToRemove != null)
            {
                for (int i = 0; i < KeysToRemove.Length; i++)
                {
                    var entry = KeysToRemove[i];
                    entry.Offset = writer.BaseStream.Position;
                    entry.Write(writer, false);
                }
            }

            writer.Write(Value.Count);
            WriteRawMap(writer, Value);
            return((int)writer.BaseStream.Position - here);
        }
Ejemplo n.º 4
0
        public override void Write(AssetBinaryWriter writer)
        {
            base.Write(writer);

            writer.Write(Enum.Index);
            writer.Write(UnderlyingProp.Index);
        }
Ejemplo n.º 5
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.Write(StructType);
                if (writer.Asset.EngineVersion >= UE4Version.VER_UE4_STRUCT_GUID_IN_PROPERTY_TAG)
                {
                    writer.Write(StructGUID.ToByteArray());
                }
                writer.WritePropertyGuid(PropertyGuid);
            }

            MainSerializer.PropertyTypeRegistry.TryGetValue(StructType.Value.Value, out RegistryEntry targetEntry);
            bool hasCustomStructSerialization = targetEntry != null && targetEntry.HasCustomStructSerialization;

            if (StructType.Value.Value == "RichCurveKey" && writer.Asset.EngineVersion < UE4Version.VER_UE4_SERIALIZE_RICH_CURVE_KEY)
            {
                hasCustomStructSerialization = false;
            }

            if (targetEntry != null && hasCustomStructSerialization)
            {
                return(WriteOnce(writer));
            }
            if (Value.Count == 0 && !SerializeNone)
            {
                return(0);
            }
            return(WriteNTPL(writer));
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Writes the expression to a BinaryWriter.
 /// </summary>
 /// <param name="writer">The BinaryWriter to write from.</param>
 /// <returns>The iCode offset of the data that was written.</returns>
 public override int Write(AssetBinaryWriter writer)
 {
     writer.Write(Value.X);
     writer.Write(Value.Y);
     writer.Write(Value.Z);
     return(sizeof(float) * 3);
 }
Ejemplo n.º 7
0
 public virtual void Write(AssetBinaryWriter writer)
 {
     if (writer.Asset.GetCustomVersion <FFrameworkObjectVersion>() < FFrameworkObjectVersion.RemoveUField_Next)
     {
         writer.Write(Next.Index);
     }
 }
Ejemplo n.º 8
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            this.ShouldSerializeStructsDifferently = false;

            if (Value.Length > 0)
            {
                ArrayType = Value[0].PropertyType;
            }

            if (includeHeader)
            {
                writer.Write(ArrayType);
                writer.WritePropertyGuid(PropertyGuid);
            }

            var removedItemsDummy = new ArrayPropertyData(new FName("ElementsToRemove"));

            removedItemsDummy.ShouldSerializeStructsDifferently = false;
            removedItemsDummy.ArrayType = ArrayType;
            removedItemsDummy.Value     = ElementsToRemove;

            int leng1 = removedItemsDummy.Write(writer, false);

            return(leng1 + base.Write(writer, false));
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Writes the expression to a BinaryWriter.
 /// </summary>
 /// <param name="writer">The BinaryWriter to write from.</param>
 /// <returns>The iCode offset of the data that was written.</returns>
 public override int Write(AssetBinaryWriter writer)
 {
     writer.Write(Pitch);
     writer.Write(Yaw);
     writer.Write(Roll);
     return(sizeof(int) * 3);
 }
Ejemplo n.º 10
0
 protected int WriteExpressionInput(AssetBinaryWriter writer, bool includeHeader)
 {
     writer.Write(OutputIndex);
     writer.Write(InputName);
     writer.Write(Extras); // always 0s
     writer.Write(ExpressionName);
     return((sizeof(int) * 2) * 2 + sizeof(int) + 20);
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            writer.Write((byte)ConversionType); offset += sizeof(byte);
            offset += ExpressionSerializer.WriteExpression(Target, writer);
            return(offset);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += ExpressionSerializer.WriteExpression(ArrayVariable, writer);
            offset += ExpressionSerializer.WriteExpression(ArrayIndex, writer);
            return(offset);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            writer.Write(CodeOffset); offset += sizeof(uint);
            offset += ExpressionSerializer.WriteExpression(BooleanExpression, writer);
            return(offset);
        }
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += writer.XFER_PROP_POINTER(DestinationProperty);
            offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer);
            return(offset);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += ExpressionSerializer.WriteExpression(Delegate, writer);
            offset += ExpressionSerializer.WriteExpression(DelegateToAdd, writer);
            return(offset);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += ExpressionSerializer.WriteExpression(VariableExpression, writer);
            offset += ExpressionSerializer.WriteExpression(AssignmentExpression, writer);
            return(offset);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += writer.XFER_OBJECT_POINTER(ClassPtr);
            offset += ExpressionSerializer.WriteExpression(TargetExpression, writer);
            return(offset);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += writer.XFERPTR(StructMemberExpression);
            offset += ExpressionSerializer.WriteExpression(StructExpression, writer);
            return(offset);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            writer.Write(LineNumber); offset += sizeof(ushort);
            writer.Write(DebugMode); offset  += sizeof(bool);
            offset += ExpressionSerializer.WriteExpression(AssertExpression, writer);
            return(offset);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += writer.XFER_FUNC_NAME(FunctionName);
            offset += ExpressionSerializer.WriteExpression(Delegate, writer);
            offset += ExpressionSerializer.WriteExpression(ObjectTerm, writer);
            return(offset);
        }
Ejemplo n.º 21
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.WritePropertyGuid(PropertyGuid);
            }

            return(WriteExpressionInput(writer, false));
        }
Ejemplo n.º 22
0
 private int WriteOnce(AssetBinaryWriter writer)
 {
     if (Value.Count != 1)
     {
         throw new InvalidOperationException("Structs with type " + StructType.Value.Value + " must have exactly one entry");
     }
     Value[0].Offset = writer.BaseStream.Position;
     return(Value[0].Write(writer, false));
 }
Ejemplo n.º 23
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.WritePropertyGuid(PropertyGuid);
            }

            return(Value.Write(writer, false));
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Writes the expression to a BinaryWriter.
        /// </summary>
        /// <param name="writer">The BinaryWriter to write from.</param>
        /// <returns>The iCode offset of the data that was written.</returns>
        public override int Write(AssetBinaryWriter writer)
        {
            int offset = 0;

            offset += ExpressionSerializer.WriteExpression(ObjectExpression, writer);
            writer.Write(Offset); offset += sizeof(uint);
            offset += writer.XFER_PROP_POINTER(RValuePointer);
            offset += ExpressionSerializer.WriteExpression(ContextExpression, writer);
            return(offset);
        }
Ejemplo n.º 25
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.WritePropertyGuid(PropertyGuid);
            }

            writer.Write(Value);
            return(sizeof(ulong));
        }
Ejemplo n.º 26
0
 private void WriteRawMap(AssetBinaryWriter writer, TMap <PropertyData, PropertyData> map)
 {
     foreach (var entry in map)
     {
         entry.Key.Offset = writer.BaseStream.Position;
         entry.Key.Write(writer, false);
         entry.Value.Offset = writer.BaseStream.Position;
         entry.Value.Write(writer, false);
     }
 }
Ejemplo n.º 27
0
 public override void Write(AssetBinaryWriter writer)
 {
     base.Write(writer);
     writer.Write((int)ArrayDim);
     writer.Write(ElementSize);
     writer.Write((ulong)PropertyFlags);
     writer.Write(RepIndex);
     writer.Write(RepNotifyFunc);
     writer.Write((byte)BlueprintReplicationCondition);
 }
Ejemplo n.º 28
0
 public override void Write(AssetBinaryWriter writer)
 {
     base.Write(writer);
     writer.Write(FieldSize);
     writer.Write(ByteOffset);
     writer.Write(ByteMask);
     writer.Write(FieldMask);
     writer.Write(NativeBool);
     writer.Write(Value);
 }
Ejemplo n.º 29
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.WritePropertyGuid(PropertyGuid);
            }

            writer.Write(Value.ToByteArray());
            return(16);
        }
Ejemplo n.º 30
0
        public override int Write(AssetBinaryWriter writer, bool includeHeader)
        {
            if (includeHeader)
            {
                writer.WritePropertyGuid(PropertyGuid);
            }

            writer.Write(X);
            writer.Write(Y);
            return(sizeof(float) * 2);
        }