亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Ogre SdkTrays UI c++ code override with c# (.net2.0)

2019-11-17 02:20:23
字體:
來源:轉載
供稿:網友

Ogre SdkTrays UI c++ code override with c# (.net2.0)

c++ snap code

    /*     -----------------------------------------------------------------------------     This source file is part of OGRE     -----------------------------------------------------------------------------     */    #ifndef __SdkTrays_H__    #define __SdkTrays_H__    #include "Ogre.h"    #include "OgreFontManager.h"    #include "OgreBorderPanelOverlayElement.h"    #include "OgreTextAreaOverlayElement.h"    #include <math.h>    #if OGRE_COMPILER == OGRE_COMPILER_MSVC    // TODO - remove this    #   PRagma warning (disable : 4244)    #endif    namespace OgreBites    {       enum TrayLocation   // enumerator values for widget tray anchoring locations       {          TL_TOPLEFT,          TL_TOP,          TL_TOPRIGHT,          TL_LEFT,          TL_CENTER,          TL_RIGHT,          TL_BOTTOMLEFT,          TL_BOTTOM,          TL_BOTTOMRIGHT,          TL_NONE       };       enum ButtonState   // enumerator values for button states       {          BS_UP,          BS_OVER,          BS_DOWN       };       // forward widget class declarations       class Widget;       class Button;       class SelectMenu;       class Label;       class Slider;       class CheckBox;       /*=============================================================================       | Listener class for responding to tray events.       =============================================================================*/       /*=============================================================================       | Abstract base class for all widgets.       =============================================================================*/       class Widget       {       public:                       Widget()          {             mTrayLoc = TL_NONE;             mElement = 0;             mListener = 0;          }          virtual ~Widget() {}          void cleanup()          {             if (mElement) nukeOverlayElement(mElement);             mElement = 0;          }          /*-----------------------------------------------------------------------------          | Static utility method to recursively delete an overlay element plus          | all of its children from the system.          -----------------------------------------------------------------------------*/          static void nukeOverlayElement(Ogre::OverlayElement* element)          {             Ogre::OverlayContainer* container = dynamic_cast<Ogre::OverlayContainer*>(element);             if (container)             {                std::vector<Ogre::OverlayElement*> toDelete;                Ogre::OverlayContainer::ChildIterator children = container->getChildIterator();                while (children.hasMoreElements())                {                   toDelete.push_back(children.getNext());                }                for (unsigned int i = 0; i < toDelete.size(); i++)                {                   nukeOverlayElement(toDelete[i]);                }             }             if (element)             {                Ogre::OverlayContainer* parent = element->getParent();                if (parent) parent->removeChild(element->getName());                Ogre::OverlayManager::getSingleton().destroyOverlayElement(element);             }          }          /*-----------------------------------------------------------------------------          | Static utility method to check if the cursor is over an overlay element.          -----------------------------------------------------------------------------*/          static bool isCursorOver(Ogre::OverlayElement* element, const Ogre::Vector2& cursorPos, Ogre::Real voidBorder = 0)          {             Ogre::OverlayManager& om = Ogre::OverlayManager::getSingleton();                Ogre::Real l = element->_getDerivedLeft() * om.getViewportWidth();                Ogre::Real t = element->_getDerivedTop() * om.getViewportHeight();                Ogre::Real r = l + element->getWidth();                Ogre::Real b = t + element->getHeight();             return (cursorPos.x >= l + voidBorder && cursorPos.x <= r - voidBorder &&                cursorPos.y >= t + voidBorder && cursorPos.y <= b - voidBorder);          }          /*-----------------------------------------------------------------------------          | Static utility method used to get the cursor's offset from the center          | of an overlay element in pixels.          -----------------------------------------------------------------------------*/          static Ogre::Vector2 cursorOffset(Ogre::OverlayElement* element, const Ogre::Vector2& cursorPos)          {             Ogre::OverlayManager& om = Ogre::OverlayManager::getSingleton();             return Ogre::Vector2(cursorPos.x - (element->_getDerivedLeft() * om.getViewportWidth() + element->getWidth() / 2),                cursorPos.y - (element->_getDerivedTop() * om.getViewportHeight() + element->getHeight() / 2));          }                 void resourceGroupLoadStarted(const Ogre::String& groupName, size_t resourceCount)          {             mLoadInc = mGroupLoadProportion / resourceCount;             mLoadBar->setCaption("Loading...");    #if OGRE_PLATFORM != OGRE_PLATFORM_ipHONE             mWindow->update();    #endif          }          void resourceLoadStarted(const Ogre::ResourcePtr& resource)          {             mLoadBar->setComment(resource->getName());    #if OGRE_PLATFORM != OGRE_PLATFORM_IPHONE             mWindow->update();    #endif          }          void resourceLoadEnded()          {             mLoadBar->setProgress(mLoadBar->getProgress() + mLoadInc);    #if OGRE_PLATFORM != OGRE_PLATFORM_IPHONE             mWindow->update();    #endif          }          void worldGeometryStageStarted(const Ogre::String& description)          {             mLoadBar->setComment(description);    #if OGRE_PLATFORM != OGRE_PLATFORM_IPHONE             mWindow->update();    #endif          }          void worldGeometryStageEnded()          {             mLoadBar->setProgress(mLoadBar->getProgress() + mLoadInc);    #if OGRE_PLATFORM != OGRE_PLATFORM_IPHONE             mWindow->update();    #endif          }          void resourceGroupLoadEnded(const Ogre::String& groupName) {}          /*-----------------------------------------------------------------------------          | Toggles visibility of advanced statistics.          -----------------------------------------------------------------------------*/          void labelHit(Label* label)          {             if (mStatsPanel->getOverlayElement()->isVisible())             {                mStatsPanel->getOverlayElement()->hide();                mFpsLabel->getOverlayElement()->setWidth(150);                removeWidgetFromTray(mStatsPanel);             }             else             {                mStatsPanel->getOverlayElement()->show();                mFpsLabel->getOverlayElement()->setWidth(180);                moveWidgetToTray(mStatsPanel, mFpsLabel->getTrayLocation(), locateWidgetInTray(mFpsLabel) + 1);             }          }          /*-----------------------------------------------------------------------------          | Destroys dialog widgets, notifies listener, and ends high priority session.          -----------------------------------------------------------------------------*/          void buttonHit(Button* button)          {             if (mListener)             {                if (button == mOk) mListener->okDialogClosed(mDialog->getText());                else mListener->yesNoDialogClosed(mDialog->getText(), button == mYes);             }             closeDialog();          }          /*-----------------------------------------------------------------------------          | Processes mouse button down events. Returns true if the event was          | consumed and should not be passed on to other handlers.          -----------------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品精品一区二区三区午夜版| 亚洲美女免费精品视频在线观看| 亚洲国产精品福利| 国产精品免费网站| 亚洲视频在线免费观看| 日韩精品中文字幕在线观看| 亚洲大胆人体av| 亚洲品质视频自拍网| 国产视频观看一区| 按摩亚洲人久久| 最近2019年手机中文字幕| 精品国产户外野外| 国产一区二区三区三区在线观看| 日本aⅴ大伊香蕉精品视频| 国产精品中文字幕在线| 欧美日韩国产一区中文午夜| 久久久久久噜噜噜久久久精品| 亚洲qvod图片区电影| www国产91| 国产网站欧美日韩免费精品在线观看| 国产精品美腿一区在线看| 国产精品大陆在线观看| 国产精品久久久久久久久久尿| 国产伦精品免费视频| 国产亚洲精品高潮| 日韩精品在线观看一区二区| 亚洲精品国产欧美| 欧美极品少妇xxxxⅹ免费视频| 国外色69视频在线观看| 青青草99啪国产免费| 亚洲黄色成人网| 亚洲自拍在线观看| 国产人妖伪娘一区91| 懂色aⅴ精品一区二区三区蜜月| 国产自摸综合网| 亚洲国产精品小视频| 国产极品jizzhd欧美| 欧美激情第三页| 亚洲一区久久久| 亚洲电影免费观看高清完整版在线观看| 成人免费淫片aa视频免费| 午夜精品久久久久久99热| 粉嫩av一区二区三区免费野| 中文字幕日韩av综合精品| 免费91在线视频| 日韩在线激情视频| 久久精品这里热有精品| 国产亚洲欧洲在线| 国模精品视频一区二区| 亚洲春色另类小说| 2019中文字幕免费视频| 浅井舞香一区二区| 亚洲欧美成人在线| 97精品在线视频| 久久在线观看视频| 欧美日韩国产一区在线| 欧美大成色www永久网站婷| 久久久av亚洲男天堂| 久久久精品久久| 中文字幕日韩欧美| 亚洲自拍偷拍色片视频| 欧美一区二区大胆人体摄影专业网站| 欧美激情一二三| 欧美精品在线播放| 最近的2019中文字幕免费一页| 午夜精品美女自拍福到在线| 久久久免费精品视频| **欧美日韩vr在线| 97精品视频在线观看| 69久久夜色精品国产69乱青草| 91免费国产视频| 日韩av影视综合网| 国产精品午夜视频| 国产亚洲精品美女| 亚洲品质视频自拍网| 北条麻妃在线一区二区| 日韩美女在线看| 国产午夜精品一区二区三区| 欧美日韩在线第一页| 欧美大人香蕉在线| 国产精品久久久久久久av大片| 亚洲片在线观看| 国产精品美女主播在线观看纯欲| 一区二区三区 在线观看视| 国产亚洲欧洲在线| 久久视频在线免费观看| 国产精品久久久久9999| 成人在线中文字幕| 欧美精品在线播放| 一道本无吗dⅴd在线播放一区| 久久69精品久久久久久国产越南| 亚洲xxx大片| 欧美日韩国产中文精品字幕自在自线| www欧美日韩| 亚洲iv一区二区三区| 日韩一区二区福利| 亚洲精品综合久久中文字幕| 久久大大胆人体| 久久久久久久久久亚洲| 久久99国产综合精品女同| 欧美日韩精品在线播放| 欧美又大又硬又粗bbbbb| 91在线视频九色| 国产精品久久久久久网站| 97视频免费看| 91精品视频免费看| 久久久av电影| 久久成人一区二区| 91高清免费视频| 久久伊人91精品综合网站| 日韩在线视频中文字幕| 国产亚洲精品美女久久久| 国产精品三级久久久久久电影| 亚洲精品福利在线观看| 91精品在线国产| 久久久久久网站| 亚洲伊人一本大道中文字幕| 日韩大陆欧美高清视频区| 在线丨暗呦小u女国产精品| 久久久久久久网站| 91九色单男在线观看| 日韩av片永久免费网站| 国产精品久久久久秋霞鲁丝| 国产精品精品久久久| 青青a在线精品免费观看| 亚洲成色999久久网站| 欧美日韩国产精品一区二区三区四区| 国产在线观看精品一区二区三区| 国外日韩电影在线观看| 久久久久久中文字幕| 欧美日韩国产专区| 51午夜精品视频| 欧美激情视频一区| 亚洲国产天堂久久综合网| 91亚洲国产成人久久精品网站| 亚洲free嫩bbb| 欧美日韩综合视频| 91高清视频在线免费观看| 国产在线视频91| 亚洲国产成人精品女人久久久| 久久久久国产精品免费| 91在线精品播放| 欧美成人三级视频网站| 亚洲精品美女免费| 国产在线精品一区免费香蕉| 91在线视频精品| 国产成人拍精品视频午夜网站| 国产日韩换脸av一区在线观看| 国产精品久久久久福利| 成人黄色短视频在线观看| 久久激情视频久久| 欧美激情一级二级| 91超碰中文字幕久久精品| 日本a级片电影一区二区| 国产精品国产三级国产aⅴ9色| 亚洲人成亚洲人成在线观看| 91影院在线免费观看视频| 亚洲女人天堂视频| 欧美激情一二区| 国内精品一区二区三区| 精品少妇一区二区30p| 4388成人网| 2025国产精品视频| 日韩资源在线观看|