SweetDream
高歌一壶新酿酒,醉抱青山不必归。
它们的结构图如下:



Archive

Archive类代表文件容器。FileSystemArchive代表普通的文件容器,也就是文件夹。在Ogre中它还派生了ZipArchive。在上面的UML图中没有给出。Archive中给出了一些存虚函数:比如:

virtual StringVectorPtr list(bool recursive = true ) = 0;
virtual FileInfoListPtr listFileInfo(bool recursive = true ) = 0;
这两个函数用于列出Archive中所有文件的名字或信息。 

virtual StringVectorPtr find(const String& pattern, bool recursive = true) = 0;
virtual FileInfoListPtr findFileInfo(const String& pattern, 
            bool recursive = true) = 0;
这两个函数列出和给定模式匹配的文件的名字或信息。 

virtual void load() = 0;
virtual void unload() = 0;
这两个函数用于载入和卸载Archive,也搞不清楚有什么用,在Archive的具体类FileSystemArchive中也没什么功能,甚至Unload的实现为空。可能载入和卸载只是标记一下,在ArchiveManager中专门有一个map用于对已载入的文件的管理。

还有个比较重要的函数就是:
virtual DataStreamPtr open(const String& filename) const = 0;
它基于给定的文件名打开这个Archive中的一个文件返回这个文件的流.我们就可以通过这个DataStreamPtr来操作文件了。DataStream主要方法是对文件的读取操作,比如readLine等方法。注意因为返回了共享指针,所以这里没有相应得close方法。Ptr对象可以自己控制生命周期。

 

FileSystemArchiveFactory
FileSystemArchiveFactory类用于创建和销毁FileSystemArchive,并规定它的ArchiveTypeFileSystem


ArchiveManager

ArchiveManager类用于管理ArchiveFactory,而且负责Archive的载入。

今天一个网友在群里发了一个OGRE中的鱼,很可爱,贴出来:

posted on 2006-03-09 01:30  SweetDream  阅读(688)  评论(0编辑  收藏  举报