x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
ExampleLoadingBar.h - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\ogre\sample_include\ExampleLoadingBar.h
旋转
特效
属性
历史版本
/* ----------------------------------------------------------------------------- This source file is part of OGRE (Object-oriented Graphics Rendering Engine) For the latest info, see http://www.ogre3d.org/ Copyright (c) 2000-2006 Torus Knot Software Ltd Also see acknowledgements in Readme.html You may use this sample code for anything you like, it is not covered by the LGPL like the rest of the engine. ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- Filename: ExampleLoadingBar.h Description: Defines an example loading progress bar which you can use during startup, level changes etc to display loading progress. IMPORTANT: Note that this progress bar relies on you having the OgreCore.zip package already added to a resource group called 'Bootstrap' - this provides the basic resources required for the progress bar and will be loaded automatically. */ #include "OgreResourceGroupManager.h" #include "OgreException.h" #include "OgreOverlay.h" #include "OgreOverlayManager.h" #include "OgreRenderWindow.h" using namespace Ogre; /** Defines an example loading progress bar which you can use during startup, level changes etc to display loading progress. @remarks Basically you just need to create an instance of this class, call start() before loading and finish() afterwards. You may also need to stop areas of your scene rendering in between since this method will call RenderWindow::update() to update the display of the bar - we advise using SceneManager's 'special case render queues' for this, see SceneManager::addSpecialCaseRenderQueue for details. @note This progress bar relies on you having the OgreCore.zip package already added to a resource group called 'Bootstrap' - this provides the basic resources required for the progress bar and will be loaded automatically. */ class ExampleLoadingBar : public ResourceGroupListener { protected: RenderWindow* mWindow; Overlay* mLoadOverlay; Real mInitProportion; unsigned short mNumGroupsInit; unsigned short mNumGroupsLoad; Real mProgressBarMaxSize; Real mProgressBarScriptSize; Real mProgressBarInc; OverlayElement* mLoadingBarElement; OverlayElement* mLoadingDescriptionElement; OverlayElement* mLoadingCommentElement; public: ExampleLoadingBar() {} virtual ~ExampleLoadingBar(){} /** Show the loading bar and start listening. @param window The window to update @param numGroupsInit The number of groups you're going to be initialising @param numGroupsLoad The number of groups you're going to be loading @param initProportion The proportion of the progress which will be taken up by initialisation (ie script parsing etc). Defaults to 0.7 since script parsing can often take the majority of the time. */ virtual void start(RenderWindow* window, unsigned short numGroupsInit = 1, unsigned short numGroupsLoad = 1, Real initProportion = 0.70f) { mWindow = window; mNumGroupsInit = numGroupsInit; mNumGroupsLoad = numGroupsLoad; mInitProportion = initProportion; // We need to pre-initialise the 'Bootstrap' group so we can use // the basic contents in the loading screen ResourceGroupManager::getSingleton().initialiseResourceGroup("Bootstrap"); OverlayManager& omgr = OverlayManager::getSingleton(); mLoadOverlay = (Overlay*)omgr.getByName("Core/LoadOverlay"); if (!mLoadOverlay) { OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Cannot find loading overlay", "ExampleLoadingBar::start"); } mLoadOverlay->show(); // Save links to the bar and to the loading text, for updates as we go mLoadingBarElement = omgr.getOverlayElement("Core/LoadPanel/Bar/Progress"); mLoadingCommentElement = omgr.getOverlayElement("Core/LoadPanel/Comment"); mLoadingDescriptionElement = omgr.getOverlayElement("Core/LoadPanel/Description"); OverlayElement* barContainer = omgr.getOverlayElement("Core/LoadPanel/Bar"); mProgressBarMaxSize = barContainer->getWidth(); mLoadingBarElement->setWidth(0); // self is listener ResourceGroupManager::getSingleton().addResourceGroupListener(this); } /** Hide the loading bar and stop listening. */ virtual void finish(void) { // hide loading screen mLoadOverlay->hide(); // Unregister listener ResourceGroupManager::getSingleton().removeResourceGroupListener(this); } // ResourceGroupListener callbacks void resourceGroupScriptingStarted(const String& groupName, size_t scriptCount) { assert(mNumGroupsInit > 0 && "You stated you were not going to init " "any groups, but you did! Divide by zero would follow..."); // Lets assume script loading is 70% mProgressBarInc = mProgressBarMaxSize * mInitProportion / (Real)scriptCount; mProgressBarInc /= mNumGroupsInit; mLoadingDescriptionElement->setCaption("Parsing scripts..."); mWindow->update(); } void scriptParseStarted(const String& scriptName) { mLoadingCommentElement->setCaption(scriptName); mWindow->update(); } void scriptParseEnded(const String& scriptName) { mLoadingBarElement->setWidth( mLoadingBarElement->getWidth() + mProgressBarInc); mWindow->update(); } void resourceGroupScriptingEnded(const String& groupName) { } void resourceGroupLoadStarted(const String& groupName, size_t resourceCount) { assert(mNumGroupsLoad > 0 && "You stated you were not going to load " "any groups, but you did! Divide by zero would follow..."); mProgressBarInc = mProgressBarMaxSize * (1-mInitProportion) / (Real)resourceCount; mProgressBarInc /= mNumGroupsLoad; mLoadingDescriptionElement->setCaption("Loading resources..."); mWindow->update(); } void resourceLoadStarted(const ResourcePtr& resource) { mLoadingCommentElement->setCaption(resource->getName()); mWindow->update(); } void resourceLoadEnded(void) { } void worldGeometryStageStarted(const String& description) { mLoadingCommentElement->setCaption(description); mWindow->update(); } void worldGeometryStageEnded(void) { mLoadingBarElement->setWidth( mLoadingBarElement->getWidth() + mProgressBarInc); mWindow->update(); } void resourceGroupLoadEnded(const String& groupName) { } };
ExampleLoadingBar.h
网页地址
文件地址
上一页
11/35
下一页
下载
( 6 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.