下午读了《osg开源教程》 ,对callback, EventHandler 理解更好了点。晚上回来试试这两个例子。
callback 是单纯的场景内节点附属功能, 当遍历到某个附带callback的节点,其中重载的operator()函数将被执行,比如修改该节点的坐标等等;
EventHandler 是窗口/视口事件(gui)响应,就是窗口内点下鼠标,或者按下某个键,系统的反馈,比如打印一行输出。
更常见应用是 gui事件驱动的节点回调,实现与用户的交互。
设计思路是 在UpdateCallback 与 EventHandler 之间建立联系:
1 封装一个状态参数 InputStateSetType 分别用于Callback , EventHandler 的构造参数
2 遍历场景,将所有gui事件依次压栈,并保存状态参数
3 进入主循环frame(), 遍历节点,其中包含状态参数的callback的节点会被执行。表现的效果就是gui事件侦测,同时反馈了节点callback动作(即gui事件驱动的节点回调)
------ 运动的camera
伴随场景中节点运动的camera,继承MatrixManipul