In the engine, all properties are read, first, as a PropertyTag (Header, Serialize)
The property tag looks like:
Depending on the value of Type, it will also contain one or more of
For EngineVersion >= 503:
The engine defines individual classes for each value type, e.g. FloatProperty , ByteProperty, etc.
Each property class takes the property tag as a constructor parameter, then just read their value type during deserialization.
Type: (BoolProperty|FloatProperty|NameProperty|...)
Standard binary serialization for the value type.
Type: ArrayProperty
InnerType: (BoolProperty|FloatProperty|...)
The data of an ArrayProperty is just a series of child property values with no additional tag for each child property. BoolProperty and StructProperty adjust their serialization behavior in an array.
Property tags will store a BoolProperty's value in the tag, before PropertyGuid in BoolVal
.
Type: BoolProperty
BoolValue: bool
There are no bytes after tag
StructProperties contain structs, so their type definition is more complex. The property's tag will point to struct type in the StructName property. The property has additional struct details provided as additional exports:
Type: StructProperty
StructName: (Vector|Rotator|CustomStruct)