看了Ogitor的代码后, 自己又实践了一把, 结合N3中学到的一些技巧, 在编辑器中得到了验证.
虽说做的是场景编辑器, 但是其它编辑器也可以用的, 毕竟思想都差不多....对于一个编辑器, 通常是由一个个的"实体"组成, 或者叫"对象". 而"对象"又是由各种"属性"所组成....如果把地形把块对待, 每个地形块做为一个"对象", 高度和纹理编辑当成属性编辑, 那么上面都可以看成是同一种编辑方式了. 还有"摆"的这个操作, 其实本质上了也是对象的位置变换这个属性的变化....由此可以得出: 编辑器的一切操作都是属性编辑
实体不用说了, 相信每个引擎都有Model/Light/Sound之类的对象类.
那么怎么去定义一个属性呢?...下面说说使用属性抽象的好处:
编辑操作
因为对象都是由属性组成的, 所以所有的编辑对象都可以抽象成一种, 那么只需要实现一种编辑方式就可以适用于所有的对象
因为操作是与具体对象相关性不大, 所以扩展新的对象类型对结构的影响很小