OGITOR 探索打开场景(1)
来源:互联网 发布:手机淘宝没有投诉卖家 编辑:程序博客网 时间:2024/06/08 14:13
探索一下和OGITOR 相关的打开场景操作
void MainWindow::openScene(){ Ogitors::OgitorsRoot *ogRoot = OgitorsRoot::getSingletonPtr(); if(ogRoot->IsSceneLoaded()) mOgreWidget->setSwitchingScene(true); if(!(ogRoot->TerminateScene())) { mOgreWidget->setSwitchingScene(false); return; } int ret = ogRoot->LoadScene(""); if(ret == SCF_CANCEL) return; if( ret != SCF_OK ) { QMessageBox::warning(this,"qtOgitor", tr("Error Loading file") + ": " + CBaseSerializer::GetErrorString((SCENEFILERESULT)ret).c_str(), QMessageBox::Ok); return; } updateRecentFiles();}
探索一下 int ret = ogRoot->LoadScene(""); 这里应该是主要部分
int OgitorsRoot::LoadScene(Ogre::String filename){ setLoadState(LS_LOADING); if(filename != "") filename = OgitorsUtils::QualifyPath(filename); ClearProjectOptions(); mPostSceneUpdateList.clear(); Ogre::UTFString msg = mSystem->Translate("Load in progress..."); mSystem->UpdateLoadProgress(-1, msg); COgitorsSceneSerializer *defaultserializer = OGRE_NEW COgitorsSceneSerializer(); int ret = defaultserializer->Import(filename); if(ret != Ogitors::SCF_OK) { msg = mSystem->Translate("Please load a Scene File..."); mSystem->UpdateLoadProgress(-1, msg); setLoadState(LS_UNLOADED); } OGRE_DELETE defaultserializer; return ret;}
OK, 探索之旅就从这里开始逐步小小地深入一下。
1、setLoadState(LS_LOADING); 设置加载状态,并发送相关事件。
void OgitorsRoot::setLoadState(LoadState state){ if(mLoadState != state) { mLoadState = state; LoadStateChangeEvent evt(state); EventManager::Instance()->sendEvent(this, 0, &evt); }}
2、ClearProjectOptions(); 设置项目的初始值。
void OgitorsRoot::ClearProjectOptions(){ mProjectOptions.IsNewProject = false; mProjectOptions.CreatedIn.clear(); mProjectOptions.ProjectDir.clear(); mProjectOptions.ProjectName.clear(); mProjectOptions.SceneManagerName.clear(); mProjectOptions.TerrainDirectory = "Terrain"; mProjectOptions.HydraxDirectory = "Hydrax"; mProjectOptions.CaelumDirectory = "Caelum"; mProjectOptions.PagedGeometryDirectory = "PagedGeometry"; mProjectOptions.SceneManagerConfigFile = ""; mProjectOptions.ResourceDirectories.clear(); mProjectOptions.CameraSaveCount = 0; for(int i = 0;i < 10;i++) { mProjectOptions.CameraPositions[i] = Vector3::ZERO; mProjectOptions.CameraOrientations[i] = Quaternion::IDENTITY; } for(unsigned int v = 0;v < 31;v++) { mProjectOptions.LayerNames[v] = "Layer " + Ogre::StringConverter::toString(v); mProjectOptions.LayerVisible[v] = true; } mProjectOptions.LayerCount = 1; mProjectOptions.SelectionRectColour = Ogre::ColourValue(0.5f, 0, 1); mProjectOptions.SelectionBBColour = Ogre::ColourValue(1, 1, 1); mProjectOptions.SelectHighlightBBColour = Ogre::ColourValue(0.19f, 0.91f, 0.19f); mProjectOptions.HighlightBBColour = Ogre::ColourValue(0.91f, 0.19f, 0.19f); mProjectOptions.GridColour = Ogre::ColourValue(0.7f, 0.7f, 0.7f); mProjectOptions.GridSpacing = 1.0f; mProjectOptions.SnapAngle = 5.0f; mProjectOptions.CameraSpeed = 1.0f; mProjectOptions.WalkAroundHeight = 2.0f; mProjectOptions.VolumeSelectionDepth = 20.0f; mProjectOptions.ObjectCount = 0;}
3、下面这几行代码用来显示在视口的加载进度信息。
Ogre::UTFString msg = mSystem->Translate("Load in progress..."); mSystem->UpdateLoadProgress(-1, msg);
4、最重要的部分就是这里吧:int ret = defaultserializer->Import(filename);
- OGITOR 探索打开场景(1)
- OGITOR 探索打开场景(2)
- Ogre场景编辑器Ogitor
- Ogitor 场景编辑器之贴花
- Ogitor探索之代码分析(1)---OgreWidget::mouseMoveEvent;OgitorsRoot::OnMouseMove
- 使用Ogitor自带的场景
- Ogre场景编辑器Ogitor源代码的构建
- Ogre场景编辑器Ogitor的使用总结
- Ogre读取Ogitor的scene场景简介
- Ogre读取Ogitor的scene场景简介
- Ogre场景编辑器Ogitor的使用总结
- Ogre场景编辑器Ogitor源代码的构建
- Ogre读取Ogitor的scene场景简介
- Ogre载入Ogitor导出的场景
- Ogitor
- ogitor
- Ogitor 绘制地形图(1)
- Ogitor探索之代码分析(2)---void MainWindow::newScene()
- dreamweaver快捷键大全
- socket.sendUrgentData判断网络远端是否断开连接
- 坑爹的VS 2010 RibbonBar 编辑器
- objective-c一些需要记住的概念
- JavaWeb 应用访问数据库的方法
- OGITOR 探索打开场景(1)
- JSTL对Map集合的操作
- centos6.0安装libpng时出现configure: error: zlib not installed解决办法
- H.264视频的RTP荷载格式
- IE6和IE7不能识别display:inline-block的解决办法
- Wildcard
- 5个iOS应用开发者海外学习资源站推荐
- JAVA中重写自己的hashCode()方法原因
- android JNI笔记