Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
десериализация PropertyType.Matrix
#1
Нашел у себя ошибку десериализации PropertyType.Matrix, выдает совсем не те результаты, что в L2PE.
В текущей реализации читается подряд 1xMatrix = 4 Plane = 16 Float, но или где-то должен быть offset или хз

Код:
"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
          }
        }
а должно быть

[Изображение: p230s8dqd.PNG]

Есть мысли ?
Минусуя карму, пишите коммент
Ответ
#2
Код:
{
    "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
        }
    }
}

http://jsonlint.com/
Ответ
#3
KID, Смысловое содержание где ? Ну сменил оформление с цитаты на код. Сомневаюсь, что кому-то легче стало
Минусуя карму, пишите коммент
Ответ
#4
А почему вы не предоставили свой метод чтения Float, возможно у вас ошибка там.
Ответ
#5
i_am_kisly, клоун. сериализуй свой "код" и мой "код" на указанном сайте
Ответ
#6
Фишка в том, что эта проблема касается только вложенных свойств.
[SRC="csharp"]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;[/SRC]

Добавлено через 3 минуты
_Buffer.ReadFloat() сводится к BinaryReader.ReadSingle()

Добавлено через 56 минут
KID Написал:i_am_kisly, клоун. сериализуй свой "код" и мой "код" на указанном сайте
Я смотрю ты испытываешь жгучую анальную боль от невалидного json Wink который к делу относится чуть больше, чем никак. И ещё кое что. Это валидация , а не сериализация. Клоун.
Минусуя карму, пишите коммент
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)