【转】ogitor小结 - 数据牛仔 - 博客园
来源:互联网 发布:宝马氧传感器数据 编辑:程序博客网 时间:2024/04/28 11:10
ogitor小结
由于没有帮助文档,自己只能照着代码看qtogitor的编写流程和框架,这里抽空总结一下:
1)先谈谈dragdrop问题。在qtogitor当中,主要相应dragdrop是在ogrewidget类中,也就是我们的渲染窗口了。里面有相应drag和drop的四个函数,而他的drag和drop调用的是ogitorsroot里面的dragdrop,由于在注册ogitorsroot的时候我们注册了dragdropHandlermap(PS:ogtior用了很多相关容器)的找到对应的evt->source()对应的widget,然后调用对应的widget的处理dragdrop的函数,当然在这其中还包括了根据屏幕位置找到物体三维位置(当然这时一entity为搜索路线)等等。下面以qtogitor如何创建实体为例(由于用SVN导致工作目录路径的更好,导致一些source不能调试,耽误了很多时间,以后再也不能犯这种错误了):
MainWindow::addDockWidgets ----含有---mEntityViewWidget = new EntityViewWidget(parent);【listWidget = new QListWidget(this);OgitorsRoot::getSingletonPtr()->RegisterDragDropHandler((void*)listWidget, this);】先讲解一下,这个是加入MESH文件的widget,listwidget主要是指那些图片所对应的list,然后我们注册了listWidget所对应的dragdrop,至于这个组建的初始化有在 MainWindow::openSceneOptions中调用prepareview()准备。这里主要完成注册功能。
现在来追逐Entity的生成:(以dragEnterEvent为例)
OgreWidget::dragEnterEvent---含有----OgitorsRoot::getSingletonPtr()->OnDragEnter(source)---含有---if(it->first == source)找到我们注册的组件,由于这些组件的父类都是EntityViewWidget,所以我们调用的是EntityViewWidget::OnDragEnter()----含有------mDragData.Object = factory->CreateObject(&parent, mDragData.Parameters);找到我们需要创建的实体编辑的factory,用factory创建CEntityEditor,也就是编辑对象,这里面也包含我们右边属性栏显示的那些参数,这还不够,我们要创建ogreEntity,这个主要是调用CEntityEditor的load()函数来实现;来看看 CEntityEditor::load(),他首先调用了CNodeEditor::load()创建来创建场景节点Node,然后回到CEntityEditor::load()创建我们的ogre实体对象,并且加入到Node当中。
相信你看了头大,这是CHINAGRAPH回来之后每天泡实验室才走清楚的路线,只有知道了在哪创建实体,我才能随意添加一些功能把我的系统集成进去,现在这个目标终于实现了。至于dragdrop的其他几个函数主要有映射二维屏幕坐标到三维屏幕坐标,查找最合适优先级最高的viewport窗口等等。我想,知道了Editor的用途举一反三,其他的也就差不多游刃有余了。
PS1:特地给ogitor小组发了一个建议,回的很效率,期待以后的版本出来教程或参考文献。
PS2:今天下午做组成原理实验好郁闷,由于学生都是教师用书,然后布线他们都不动脑筋,我这个助教表示鸭梨好大,而且自己也不知道怎么在机器指令运行过程中测寄存器堆的数据,明天上午再去跟着指令微码测试一下数据总线,但愿成功。
ogitor小结 - 数据牛仔 - 博客园
- 【转】ogitor小结 - 数据牛仔 - 博客园
- 【转】Ogitor中Gizmo的绘制技巧 - 战魂小筑 - C++博客
- Ogitor
- ogitor
- 【转】牛仔文化与历史背景
- 【转】初探ogitor中的属性窗口 - 野猪的日志 - 网易博客
- 牛仔很忙
- 牛仔很忙
- 博客园2008年度小结
- Ogitor编译
- 牛仔的彷惶
- 牛仔网股评
- 博客文章小结
- Ogitor中文语言包
- Ogitor代码分析
- Ogitor代码分析
- Ogitor编译全过程
- Ogitor源代码构建
- [zt] C++多线程编程入门
- 管理员给点积分好吗
- 什么叫手机通宝?
- 常用校验码(奇偶校验码、海明校验码、CRC校验码)
- 【每天读一点英文】gnuhpc注释版:Learning:A Lifelong Career
- 【转】ogitor小结 - 数据牛仔 - 博客园
- java 环境变量
- 易出错的地方---笔记1
- 程序员需要具备的基本技能
- Django中使用tiny_mce
- Oracle DDL锁处理
- 育儿书籍阅读顺序的建议
- 改变父母的十本书
- 运用PHP定时自动更新网站首页HTML的方法