osg dragger 部分代码 简单分析

        最近要自己实现一个osg dragger ,用dragger 来调整自己的图元。从网上没有找到较为完整的dragger代码说明,只能自己想办法了,于是花了一周多的时间来阅读dragger相关源代码,不得不佩服大神的设计,经典!

       在 dragger 的组成上,使用了组合模式,将简单的dragger组合到一起,比如,二维plane dragger 使用了一维translate dragger 和scale dragger ,由多小dragger组成功能更完整的dragger。

       用 dragger 实时调整图元时使用了命令模式和代理模式。将每个对图元的调整封装成一个命令,解耦。另外 dragger 和 被调整的图元实际并未被一起调整,而是使用的代理模式,由dragger调用这个代理来对图元调整,防止多个dragger共同操作一个图元时形成干扰。

       在命令封装上使用了模板模式,每个命令计算其相应的变换矩阵。

       一个dragger 会同时操作多个图元,每个图元被代理包装,放在一个容器内,然后dragger使用迭代器来访问,这里实现了迭代器模式。

       非常经典的代码,阅读之后,受益颇多,大神就是大神!

你可能感兴趣的:(osg dragger 部分代码 简单分析)