UE_StructArray Read_UE_StructArray(ValueInfo value_info, string item_type) { int count = reader.ReadInt32(); if (reader.PeekChar() < 0) { throw new Exception(); } string sa_name = reader.ReadString(); //if (SA_Name != array_name) { throw new Exception(); } string sa_item_type = reader.ReadString(); if (sa_item_type != item_type) { throw new Exception(); } var __valueLength = reader.ReadInt64(); // after struct header terminator. UE_Struct[] item_list = new UE_Struct[count]; string sa_struct_type_string = Read_UE_Struct_Header(); // __valueLength begins here. for (int i = 0; i < count; i++) { item_list[i] = Read_UE_Struct(sa_struct_type_string); } return(new UE_StructArray(value_info.type, item_type, count, item_list, sa_name, sa_item_type, sa_struct_type_string)); }
static void UE_Value(JsonWriter writer, GvasFormat.UE_Value value) { writer.WriteStartObject(); writer.WritePropertyName(JsonNaming.UE_Value.TypeString); writer.WriteValue(value.TypeString); Type value_cs_type = value.GetType(); // Non-container Type if (value_cs_type == typeof(UE_ <bool>)) { writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(((UE_ <bool>)value).Value); } else if (value_cs_type == typeof(UE_ <byte>)) { writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(((UE_ <byte>)value).Value); } else if (value_cs_type == typeof(UE_Enum)) { UE_Enum value_enum = (UE_Enum)value; writer.WritePropertyName(JsonNaming.UE_Enum.EnumType); writer.WriteValue(value_enum.EnumType); writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(value_enum.Value); } else if (value_cs_type == typeof(UE_ <float>)) { writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(((UE_ <float>)value).Value); } else if (value_cs_type == typeof(UE_ <int>)) { writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(((UE_ <int>)value).Value); } else if (value_cs_type == typeof(UE_ <string>)) { writer.WritePropertyName(JsonNaming.UE_Value.Value); writer.WriteValue(((UE_ <string>)value).Value); } // Container Type else if (value_cs_type == typeof(UE_Map)) { UE_Map value_map = (UE_Map)value; writer.WritePropertyName(JsonNaming.UE_Map.KeyType); writer.WriteValue(value_map.KeyType); writer.WritePropertyName(JsonNaming.UE_Map.ValueType); writer.WriteValue(value_map.ValueType); writer.WritePropertyName(JsonNaming.UE_Map.Count); writer.WriteValue(value_map.Count); writer.WritePropertyName(JsonNaming.UE_Map.Map); { writer.WriteStartArray(); foreach (UE_Map_KeyValuePair keyValuePair in value_map.Map) { writer.WriteStartObject(); writer.WritePropertyName(JsonNaming.UE_Map_KeyValuePair.Key); Write.UE_Value(writer, keyValuePair.Key); writer.WritePropertyName(JsonNaming.UE_Map_KeyValuePair.Value); Write.UE_Value(writer, keyValuePair.Value); writer.WriteEndObject(); } writer.WriteEndArray(); } } else if (value_cs_type == typeof(UE_Array)) { UE_Array value_array = (UE_Array)value; writer.WritePropertyName(JsonNaming.UE_Array.ItemType); writer.WriteValue(value_array.ItemType); writer.WritePropertyName(JsonNaming.UE_Array.Count); writer.WriteValue(value_array.Count); writer.WritePropertyName(JsonNaming.UE_Array.ItemList); { writer.WriteStartArray(); foreach (UE_Value item in value_array.ItemList) { Write.UE_Value(writer, item); } writer.WriteEndArray(); } } else if (value_cs_type == typeof(UE_StructArray)) { UE_Array value_array = (UE_Array)value; writer.WritePropertyName(JsonNaming.UE_Array.ItemType); writer.WriteValue(value_array.ItemType); writer.WritePropertyName(JsonNaming.UE_Array.Count); writer.WriteValue(value_array.Count); UE_StructArray value_struct_array = (UE_StructArray)value; writer.WritePropertyName(JsonNaming.UE_StructArray.SA_Name); writer.WriteValue(value_struct_array.SA_Name); writer.WritePropertyName(JsonNaming.UE_StructArray.SA_ItemType); writer.WriteValue(value_struct_array.SA_ItemType); writer.WritePropertyName(JsonNaming.UE_StructArray.SA_StructTypeString); writer.WriteValue(value_struct_array.SA_StructTypeString); writer.WritePropertyName(JsonNaming.UE_Array.ItemList); { writer.WriteStartArray(); foreach (UE_Value item in value_array.ItemList) { Write.UE_Value(writer, item); } writer.WriteEndArray(); } } // Struct Type else if (value_cs_type == typeof(UE_Struct_Vector)) { UE_Struct value_struct = (UE_Struct)value; writer.WritePropertyName(JsonNaming.UE_Struct.StructTypeString); writer.WriteValue(value_struct.StructTypeString); writer.WritePropertyName(JsonNaming.UE_Value.Value); UE_Struct_Vector value_struct_vector = (UE_Struct_Vector)value; { writer.WriteStartArray(); writer.WriteValue(value_struct_vector.X); writer.WriteValue(value_struct_vector.Y); writer.WriteValue(value_struct_vector.Z); writer.WriteEndArray(); } } else if (value_cs_type == typeof(UE_Struct_Quat)) { UE_Struct value_struct = (UE_Struct)value; writer.WritePropertyName(JsonNaming.UE_Struct.StructTypeString); writer.WriteValue(value_struct.StructTypeString); writer.WritePropertyName(JsonNaming.UE_Value.Value); UE_Struct_Quat value_struct_quat = (UE_Struct_Quat)value; { writer.WriteStartArray(); writer.WriteValue(value_struct_quat.A); writer.WriteValue(value_struct_quat.B); writer.WriteValue(value_struct_quat.C); writer.WriteValue(value_struct_quat.D); writer.WriteEndArray(); } } else if (value_cs_type == typeof(UE_Struct_Generic)) { UE_Struct value_struct = (UE_Struct)value; writer.WritePropertyName(JsonNaming.UE_Struct.StructTypeString); writer.WriteValue(value_struct.StructTypeString); writer.WritePropertyName(JsonNaming.UE_Value.Value); UE_Struct_Generic value_struct_generic = (UE_Struct_Generic)value; Write.PropertyList_as_Object(writer, value_struct_generic.PropertyList); } else { throw new NotImplementedException(value_cs_type.ToString()); } writer.WriteEndObject(); }