sample控件的加载、卸载、切换和信息提取
1、Sample类功能如下:
1、设计了很多虚函数,和响应函数,用于子类重写。
2、其中启动sample函数将被SampleContext类调用,通过这个函数获得SampleContext类的渲染参数。
3、重点为_setup函数。
其中 _setup函数功能如下:
1、启动一个实例。不能直接调用,被SampleContext累调用。
2、其中的window和input等可以通过调用设置。
2、SdkSample类功能如下:
SdkSample类是Sample类和SdkTrayListener接口的子类。进一步实现实例中的相同部分。
SdkTrayListener接口用于监听和响应gui的各种控制。
1、在_setup函数中创建了如下成员变量,并对他们进行配置。
Ogre::Viewport* mViewport; // main viewport
Ogre::Camera* mCamera; // main camera
SdkTrayManager* mTrayMgr; // tray interface manager
SdkCameraMan* mCameraMan; // basic camera controller
ParamsPanel* mDetailsPanel; // sample details panel
2、创建每个sample里面都需要显示的细节信息面板(mDetailsPanel),并对它进行响应和切换管理。
3、对各种gui(mTrayMgr里面创建)、camera控制(mCameraMan)和一些渲染设置进行响应和配置。
其中 _setup函数功能如下:
_setup函数启动程序,比父类多了功能。
1、创建mCamera和mCameraMan。
2、mTrayMgr管理器的new。
3、mDetailsPanel对话框的条目添加和显示设置。
3、Sample_Character类功能如下:
Sample_Character类是Sample_Character实例中的类,也是SdkSample的子类。它的具体功能如下:
1、填写mInfo内容。
2、创建场景(包括3d场景和2d对话框),创建动画动画人物。
3、控制动画和渲染骨骼动画,camera和对话框显示。
4骨骼动画的控制和渲染具体内容在下面成员变量中:
SinbadCharacterController* mChara;
4、SinbadCharacterController类功能如下:
SinbadCharacterController类是Sample_Character实例中的类,它的具体功能如下:
1、这个类是用来控制人物动画相关内容的,包括人物动画切换和渐变,人物对应位移、旋转,camera跟随。
2、动画人物实体模型包括三部分,人物模型,双剑模型,拔剑的家闪光效果
3、动画实现分为top和bottom两部分。闪光效果是代码动态计算的线形纹理。
其中 setupBody函数功能如下:
1、创建人物的实体和节点。
2、创建人物双刀,并绑定到骨骼。
3、创建抽刀的闪光线条。
其中 fadeAnimations函数功能如下:
1、根据切换标志,计算动画切换的渐变。
2、这里的逻辑不严谨。原来我改过,现在只是人眼看不见。遇到首尾不一致的动画,显示时会有距离闪现跳动。
5、Sample_Character.cpp文件
Sample_Character实例中的Sample_Character.cpp文件,编写了控件代码的入口程序。具体原理暂略。 在ogre相关plugin中再学习。
————sample控件 完————