地形类的源码里面关联了其他类的一些东西,其实就是XML读取的帮助类而已
TLBBFileBuffer这个类就是一个内存缓冲而已,简单说就是一个uchar的数组... 用来把2进制文件一次性读取到内存中而已.
我的代码里面只把XML类型的文件读取到内存里面,其他文件比如heightmap等,并没有用这个类来读取
TLBBFileBuffer这个类没什么东西,原理就是: DataStreamPtr mStreamPtr = ResourceGroupManager::getSingleton().openResource( name.c_str(), TLBB_RESOURCE_GROUP);
size_t mSize = mStreamPtr->size(); uchar* mBuffer = new uchar[mSize]; mStreamPtr->read(mBuffer, mSize);
然后所有二进制文件的数据,都保存在mBuffer里面载入XML文件的时候:
// 载入地形XML文件
TiXmlDocument doc;
TLBBFileBuffer fileBuffer(filename);
doc.Parse((char*)fileBuffer.GetBuffer());
GetBuffer()其实返回的就是上面的mBuffer,一个内存数组而已, doc.Parse这个函数可以直接从内存里面解析XML文件, 而Utils工具类,只是一些帮助函数而已,会XML的,自己都可以写头文件: