4 系统设计与实现
系统结构如图1所示。此编辑器是基于插件的针对O-GRE的所见即所得编辑器,通过它能够快速构建一个场景模型,也可以把这些场景作为内容载入OGRE应用程序。
4.1 插件技术原理
插件的本质在于不修改程序主体(平台)而对软件功能进行扩展与加强。当插件的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的不便或增加新的功能,实现真正意义上的“即插即用”软件开发。“平台+插件软件”结构是将一个待开发的目标软件分为两部分,一部分为程序的主体或主框架,可定义为平台,另一部分为功能扩展或补充模块,即定义为插件。
4.2 插件的实现方法
该编辑器的插件实现方法是在框架代码中创建接口,这些接口使框架与动态库解耦。插件提供接口的实现。把插件与动态链接库区分开是因为它们的加载方式不同:程序不会直接链接插件,而是在某些目录下查找,如果发现便按照配置文件中定义的方式进行加载。
插件实现过程涉及很多类。下面仅介绍5个类CBaseEditor,CBaseEditorFactory,OgreEditorRoot,CTerrainEdi-tor,CETLEditorFactory,并列出部分代码阐述捕件实现过程,见图2。
CBaseEditor是定义的接口,由其派生的CTerrainEditor是接口的实现,即插件。当点击主界面的ETL按钮时,O- greEditorRoot能够监听到点击该按钮事件的发生,随后调用dllStartPlugin函数。dllStartPlugin函数负责调用创建 CTer-rainEditor对象的工厂,由工厂(CETLEditorFactory)编辑器对象(CTerrainEditor)实例。