Для выдергивания инфы из la2 использую Eliot.UElib. Немного наркоманит, но пойдёт. Сегодня заметил явную ошибку:
"TerrainMatrix": {
"XPlane": {
"V": {
"X": 14981480000000,
"Y": 0,
"Z": 0
},
"W": 0
},
"YPlane": {
"V": {
"X": 0.0078125,
"Y": 0,
"Z": 0
},
"W": 0
},
"ZPlane": {
"V": {
"X": 0,
"Y": 0,
"Z": 0
},
"W": 2
},
"WPlane": {
"V": {
"X": 0,
"Y": 0,
"Z": 0.0078125
},
"W": 0
}
}
XYZW - имеют тип float. 14981480000000 - это, мать их, на 12 бит больше, чем вообще возможно.
case PropertyType.Matrix:
{
string xPlane = DeserializeDefaultPropertyValue(PropertyType.Plane, ref deserializeFlags);
string yPlane = DeserializeDefaultPropertyValue(PropertyType.Plane, ref deserializeFlags);
string zPlane = DeserializeDefaultPropertyValue(PropertyType.Plane, ref deserializeFlags);
string wPlane = DeserializeDefaultPropertyValue(PropertyType.Plane, ref deserializeFlags);
propertyValue += "\"XPlane\":{" + xPlane + "}" +
",\"YPlane\":{" + yPlane + "}" +
",\"ZPlane\":{" + zPlane + "}" +
",\"WPlane\":{" + wPlane + "}";
break;
}
case PropertyType.Plane:
{
string w = DeserializeDefaultPropertyValue(PropertyType.FloatProperty, ref deserializeFlags);
string v = DeserializeDefaultPropertyValue(PropertyType.Vector, ref deserializeFlags);
//string w = DeserializeDefaultPropertyValue(PropertyType.FloatProperty, ref deserializeFlags);
propertyValue += "\"V\":{" + v + "},\"W\":" + w;
break;
}
case PropertyType.Vector:
{
string x = DeserializeDefaultPropertyValue(PropertyType.FloatProperty, ref deserializeFlags);
string y = DeserializeDefaultPropertyValue(PropertyType.FloatProperty, ref deserializeFlags);
string z = DeserializeDefaultPropertyValue(PropertyType.FloatProperty, ref deserializeFlags);
propertyValue += "\"X\":" + x +
",\"Y\":" + y +
",\"Z\":" + z;
break;
}
case PropertyType.FloatProperty:
propertyValue = _Buffer.ReadFloat().ToUFloat();
break;
Притом если верить отладочной информации _Buffer.Position меняется с 116 до 120 что как раз равно 32 32 битам float. В чем может быть косяк ?
ПС остальные property после Matrix либа не видит.
если верить сторонним тулзам должно быть так:

всё что за синей линией - не читается