预览模式: 普通 | 列表

C/C++点滴

处理“依赖性”操作的UI策略

程序中通常会遇到这样一种操作,这种操作是以之前某个操作的结果为前置条件的。
如果前置条件达成,则操作是合法的,允许执行。否则,执行操作就会引起错误。
假设我们把这个“依赖性”操作封装到一个控件的通知响应函数里面,这里可以使用两种策略保证操作永远只能在前置条件达成时执行。

策略1:控件初始化为不可用的,其通知响应函数里无条件执行我们需要的操作。然后,在程序逻辑的执行过程中,追踪前置条件是否达成。在前置条件达成的地方激活控件,等失去前置条件时再使控件不可用。
策略2:控件永远都是被激活的,但在其通知响应函数里判断我们所需操作的前置条件是否达成,条件达成的时候才执行操作。

这两种策略适用与不同的控件。“组合框”、“复选框”、“滑竿”等可以从外观上直接反映操作的控件比较适合策略1,而“按钮”则更适合策略2一些。

Tags: UI 策略

分类:游戏工具 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 54

关于Material::getTechnique()

      Material类里面有两个getTechnique()函数可以用来获取指定的Technique对象指针。函数声明分别为:

Technique* Material::getTechnique(unsigned short index)  

(暂且称这个函数为函数A)

Technique* Material::getTechnique(const String& name)  

查看更多...

Tags: OGRE 材质系统

分类:OGRE | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 89

      今天创建一个新的Ogre工程时遇到这样一个问题,调用SceneManager::createEntity()时总是蹦出一个异常说"Can't assign default material to SubEntity of xxx(Entity名字). Did you forget to call MaterialManager::initialise()?"

      随即检查了一下初始化代码:创建资源组、添加资源路径、初始化资源组。。。貌似没错啊~~怎么系统会提示说我是否忘记了初始化MaterialManager呢?那么,MaterialManager到底是在哪里被初始化的呢?其实,我还真的不是很清楚。一直以为只要正确初始化了资源组和Root对象,其他所有xxxManager一律会被正确初始化。可是,事实看来并非如此。于是,决定看一下Ogre源代码,一查究竟。

查看更多...

Tags: OGRE 初始化

分类:OGRE | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 124

模型查看器、换装编辑器

      最近完成了两个工具,模型查看器和换装编辑器。进一步完善了我们引擎的工具集。使美术和策划人员得以在可视化的环境下完成对模型材质脚本的编辑、导出工作,以及换装部件和特效的编辑、脚本导出工作。

图片说明:模型查看器,用于模型的查看和材质脚本的编辑、导出。导出的材质支持具有LightMap、NormalMap、SpecularMap的多光源像素级光照效果和RimLighting效果。

图片说明:换装编辑器,引擎换装系统的配套工具,用于换装部件的查看、编辑及其脚本的导出。编辑器配备有一个丰富的特效库,可以在可视化的环境下非常方便的对特效进行骨骼绑定。

 

查看更多...

Tags: 工具 查看器 编辑器 换装

分类:游戏工具 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 328