OGRESE1 ObjectEditHandler
来源:互联网 发布:淘宝客服年度总结 编辑:程序博客网 时间:2024/06/04 18:57
0. 新建立一个场景
1. InitializeScene
a) OgreSE::Scene::InitializeScene()申请内存,创建新的地形
b) BuildTree建立界面左边的树形结构
c) 实例化 ObjectEditHandler对象 m_pObjectEditHandler
d) ….
2. 主要顺着ObjectEditHandler对象的主线进行。
a) 在Tree结构中选择到mesh文件的时候,当放到地形上面时候,那么就会首先调用
Void CResourceDataTree::OnLButtonUp函数,这里面会执行AddObject创建一个实体对象。然后进入自由编辑模式。
b) 之后,会调用CSceneDataBar::OnAfterTreeItemSelected函数,会调用CSceneDoc::SetObjectSelected函数,这个函数调用CObjectEditHandler::SetObjectSelected设置物体被选择这里将被选择的实体对象插入到m_SelObjects中去,设置挂接移动和缩放指示器的节点/挂接旋转指示器的节点的属性,,然后高亮(显示外接框)显示这个实体对象。
c) 之后,处理鼠标移动的消息,ProcessMouse(CPoint point,float timeSinceLastFrame);
首先获得鼠标指向的地形的坐标点,然后实时地更新。然后调用m_pObjectEditHandler->Process(result.second,timeSinceLastFrame,point,result.first);
具体的参数: 1.pos:鼠标与地形的相交坐标,point:鼠标的位置,result.first鼠标是否能够碰撞到地面。
i) 在框选模式下,生成款选的矩形。返回
j) 在自由位移模式,如果没有和地形相交则返回,否则,
没有按下CTRL,贴地移动物体,实体存在m_SelObjects中,需要遍历,同时直接移动指示器到pos中去。
之后的功能再续
有以下疑问: m_pNode也就是关接指示器的节点在什么时候绑定到了根节点上的,实体对象在什么时候挂接到root上的?
答: M_pNode 在CObjectEditHandler::SetObjectSelected中,被绑定到根节点,
M_pOwner->m_pSceneManager->getRootSceneNode()->addChild(m_pNode);
实体对象绑定的时机:在voidCSceneDoc::AddObject中,调用 CreateStaticEntity函数,有调用,SceneStaticEnity的构造函数,之后调用,pSceneMgr->createEntity(); attachObject(pEntity);
- OGRESE1 ObjectEditHandler
- WinForm中异步刷新窗体
- MFC DLL类型
- ORACLE EBS中附件功能的使用(上传用户操作文档)
- 如何在Console中使用cin、cout、cerr
- 第八章 启动与执行业务流程(二)
- OGRESE1 ObjectEditHandler
- 将Emacs配置成一个C/C++的IDE编程环境
- 第八章 启动与执行业务流程(三)
- QT中如何进行DEBUG和使用cout,cin等
- 把压缩文件嵌入图片中的工具
- PLC通讯协议
- javascript系列---ajax上传文件
- 第八章 启动与执行业务流程(四)
- 芯片W3150A怎样应用于光纤以太网CCD相机系统设计