Mr_F_
какая еще тысяча if'ов ?
вот смотри, код сохранения\загрузки параметров узла графа сцены в\из файл

//! Serialize
virtual void Serialize(core::ISerializeStream * SerializeStream,u1 IfTrueThanWrite)
{
SerializeStream->OpenSection("SceneNode");
if(IfTrueThanWrite)
{
SerializeStream->SetValue("NodeName",NodeName);
SerializeStream->SetValue("CurrentPosition.X",CurrentPosition.X);
SerializeStream->SetValue("CurrentPosition.Y",CurrentPosition.Y);
SerializeStream->SetValue("CurrentPosition.Z",CurrentPosition.Z);
SerializeStream->SetValue("CurrentRotation.X",CurrentRotation.X);
SerializeStream->SetValue("CurrentRotation.Y",CurrentRotation.Y);
SerializeStream->SetValue("CurrentRotation.Z",CurrentRotation.Z);
SerializeStream->SetValue("CurrentScale.X",CurrentScale.X);
SerializeStream->SetValue("CurrentScale.Y",CurrentScale.Y);
SerializeStream->SetValue("CurrentScale.Z",CurrentScale.Z);
SerializeStream->SetValue("Visible",(s8)Visible);
}
else
{
NodeName = SerializeStream->GetValuejeStringd("NodeName");
CurrentPosition.X = SerializeStream->GetValuef32("CurrentPosition.X");
CurrentPosition.Y = SerializeStream->GetValuef32("CurrentPosition.Y");
CurrentPosition.Z = SerializeStream->GetValuef32("CurrentPosition.Z");
CurrentRotation.X = SerializeStream->GetValuef32("CurrentRotation.X");
CurrentRotation.Y = SerializeStream->GetValuef32("CurrentRotation.Y");
CurrentRotation.Z = SerializeStream->GetValuef32("CurrentRotation.Z");
CurrentScale.X = SerializeStream->GetValuef32("CurrentScale.X");
CurrentScale.Y = SerializeStream->GetValuef32("CurrentScale.Y");
CurrentScale.Z = SerializeStream->GetValuef32("CurrentScale.Z");
Visible = SerializeStream->GetValues8("Visible")?true:false;
NeedToRebuildMatrix = true;
}
SerializeStream->CloseSection();
}
у меня так все обьекты сохраняют\загружают информацию
потом я просто пишу Scene->LoadScene("scene1.dat") и вся сцена загружается из этого файла
если надо - могу написать Scene->SaveScene("somefile.dat") и вся сцена сохранится в этот файл