Суть проблемы проста и ужасна:
Если выбрана конфигурация Debug, то каким-то странным образом Xors меняет все координаты X на Z и наоборот.
Если выбрала конфигурация Release, то все нормально.
А столкнулся я с проблемой когда сохранял данные в файл. В зависимости от конфигурации он подставляет разные данные:
int SaveGame=xWriteFile(patch);
int i;
xWriteInt(SaveGame,int(Objects.size()));
for (i=0;i<int(Objects.size());i++)
{
xWriteInt(SaveGame, Objects[i].Type);
xWriteFloat(SaveGame, float(Objects[i].x));
xWriteFloat(SaveGame, float(Objects[i].y));
xWriteFloat(SaveGame, float(Objects[i].z));
xWriteFloat(SaveGame, float(Objects[i].ax));
xWriteFloat(SaveGame, float(Objects[i].ay));
xWriteFloat(SaveGame, float(Objects[i].az));
xWriteFloat(SaveGame, float(Objects[i].sx));
xWriteFloat(SaveGame, float(Objects[i].sy));
xWriteFloat(SaveGame, float(Objects[i].sz));
}
xCloseFile(SaveGame);
После этого я загружаю их из файла и получаю, в зависимости от конфигурации разные координаты:
int LoadGame=xReadFile(patch);
int size=xReadInt(LoadGame);
int i;
for (i=0;i<size;i++)
{
int type=xReadInt(LoadGame);
Objects.push_back(Items[type]);
Objects[i].Type=type;
Objects[i].SetPosition(xReadFloat(LoadGame),xReadFloat(LoadGame),xReadFloat(LoadGame));
Objects[i].TurnObject(xReadFloat(LoadGame),xReadFloat(LoadGame),xReadFloat(LoadGame));
Objects[i].ScaleObject(xReadFloat(LoadGame)-1,xReadFloat(LoadGame)-1,xReadFloat(LoadGame)-1);
xEntityFX(Objects[i].Mesh,0);
}
xCloseFile(LoadGame);