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);
		}
	}
Example #2
0
    //---------------------------------------------------------------------
    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);
		}
	}
Example #4
0
    //---------------------------------------------------------------------
    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);
 }