void LodConfigSerializer::writeLodLevels() { writeChunkHeader(LCCID_LOD_LEVELS, calcLodLevelsSize()); uint32 size = static_cast<uint32>(mLodConfig->levels.size()); writeInts(&size, 1); LodConfig::LodLevelList::iterator it = mLodConfig->levels.begin(); LodConfig::LodLevelList::iterator itEnd = mLodConfig->levels.end(); for(;it != itEnd; it++){ writeFloats(&it->distance, 1); writeInts((Ogre::uint32*)&it->reductionMethod, 1); writeFloats(&it->reductionValue, 1); writeString(it->manualMeshName); } }
//--------------------------------------------------------------------- void Serializer::writeChunkHeader(uint16 id, size_t size) { #if OGRE_SERIALIZER_VALIDATE_CHUNKSIZE if (!mChunkSizeStack.empty()){ size_t pos = mStream->tell(); if (pos != static_cast<size_t>(mChunkSizeStack.back()) && mReportChunkErrors){ LogManager::getSingleton().logMessage("Corrupted chunk detected! Stream name: '" + mStream->getName() + "' Chunk id: " + StringConverter::toString(id)); } mChunkSizeStack.back() = pos + size; } #endif writeShorts(&id, 1); uint32 uint32size = static_cast<uint32>(size); writeInts(&uint32size, 1); }
void LodConfigSerializer::writeLodProfile() { if(mLodConfig->advanced.profile.empty()){ return; } writeChunkHeader(LCCID_PROFILE, calcLodProfileSize()); uint32 size = static_cast<uint32>(mLodConfig->advanced.profile.size()); writeInts(&size, 1); LodProfile::iterator it = mLodConfig->advanced.profile.begin(); LodProfile::iterator itEnd = mLodConfig->advanced.profile.end(); for(;it != itEnd; it++){ writeObject(it->src); writeObject(it->dst); writeFloats(&it->cost, 1); } }
//--------------------------------------------------------------------- void Serializer::writeChunkHeader(uint16 id, size_t size) { writeShorts(&id, 1); uint32 uint32size = static_cast<uint32>(size); writeInts(&uint32size, 1); }
//--------------------------------------------------------------------- void Writer::writeString(const String& string) { uint32 numChars = string.length(); writeInts(&numChars); _write(string.c_str(), sizeof(String::value_type), numChars); }