Скачать 0.66 Mb.
|
{ Ogre::Vector3 needScale = mSceneMgr->getSceneNode(myVector[i])->getScale() * 0.999f; //костыль на скейл mSceneMgr->getSceneNode(myVector[i])->setScale(needScale); } } } void BasicApp::eventModelTranslateLeft() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToLeftButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(0.0f, 0.0f, 0.2f); } } } void BasicApp::eventModelTranslateRight() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToRightButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(0.0f, 0.0f, -0.2f); } } } void BasicApp::eventModelTranslateTop() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToTopButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(-0.2f, 0.0f, 0.0f); } } } void BasicApp::eventModelTranslateBack() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToBackButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(0.2f, 0.0f, 0.0f); } } } void BasicApp::eventModelTranslateUp() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToUpButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(0.0f, 0.2f, 0.0f); } } } void BasicApp::eventModelTranslateDown() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(translateModelToDownButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->translate(0.0f, -0.2f, 0.0f); } } } void BasicApp::eventModelRotateRight() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(rotateRightModelButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->yaw( Ogre::Degree(0.2f) ); } } } void BasicApp::eventModelRotateLeft() { for(int i = 0; i < myVector.size(); i++) { if ( mSceneMgr->getSceneNode(myVector[i])->getShowBoundingBox() && static_cast(rotateLeftModelButton)->isPushed() ) { mSceneMgr->getSceneNode(myVector[i])->yaw( Ogre::Degree(-0.2f) ); } } } void BasicApp::goInAlpha(CEGUI::Window* win) { win->setAlpha( 100.0f / (timer1.getMilliseconds() ) ); //уход в альфу } void BasicApp::goFromAlpha(CEGUI::Window* win) { win->setAlpha( 0.001f * (timer1.getMilliseconds() ) ); //закинуть в функцию выход из альфы } bool BasicApp::keyPressed(const OIS::KeyEvent& ke) { CEGUI::System::getSingleton().injectKeyDown((CEGUI::Key::Scan)ke.key); CEGUI::System::getSingleton().injectChar((CEGUI::Key::Scan)ke.text); mCameraMan->injectKeyDown(ke); return true; } bool BasicApp::keyReleased(const OIS::KeyEvent& ke) { CEGUI::System::getSingleton().injectKeyUp((CEGUI::Key::Scan)ke.key); mCameraMan->injectKeyUp(ke); return true; } bool BasicApp::mouseMoved(const OIS::MouseEvent& me) { CEGUI::System::getSingleton().injectMouseMove(me.state.X.rel, me.state.Y.rel); if (mLMouseDown) { } else if (mRMouseDown) { mCamera->yaw(Ogre::Degree(-me.state.X.rel * mRotSpd)); mCamera->pitch(Ogre::Degree(-me.state.Y.rel * mRotSpd)); } return true; } // Helper function for mouse events CEGUI::MouseButton convertButton(OIS::MouseButtonID id) { switch (id) { case OIS::MB_Left: return CEGUI::LeftButton; case OIS::MB_Right: return CEGUI::RightButton; case OIS::MB_Middle: return CEGUI::MiddleButton; default: return CEGUI::LeftButton; } } bool BasicApp::mousePressed(const OIS::MouseEvent& me, OIS::MouseButtonID id) { CEGUI::System::getSingleton().injectMouseButtonDown(convertButton(id)); if (id == OIS::MB_Left) { CEGUI::Point mousePos = CEGUI::MouseCursor::getSingleton().getPosition(); Ogre::Ray mouseRay = mCamera->getCameraToViewportRay( mousePos.d_x / float(me.state.width), mousePos.d_y / float(me.state.height)); mRayScnQuery->setRay(mouseRay); mRayScnQuery->setSortByDistance(true); Ogre::RaySceneQueryResult& result = mRayScnQuery->execute(); Ogre::RaySceneQueryResult::iterator it = result.begin(); mMovableFound = false; for ( ; it != result.end(); it++) { mMovableFound = it->movable && it->movable->getName() != "" && it->movable->getName() != "PlayerCam"; for(int i = 0; i < myVector.size(); i++) { if (it->movable->getParentSceneNode()->getName() == myVector[i]) { it->movable->getParentSceneNode()->showBoundingBox(true); goDefaultPosition = false; textbox1->setVisible(true); textbox1->setText( encodeRussian (textManager->getFromFile( myVector[i]) ) ); timer1.reset(); //сбрасываем таймер для нулевой альфы goFromAlphaButton = true; break; } } } mLMouseDown = true; } else if (id == OIS::MB_Right) { CEGUI::MouseCursor::getSingleton().hide(); mRMouseDown = true; } return true; } bool BasicApp::mouseReleased(const OIS::MouseEvent& me, OIS::MouseButtonID id) { CEGUI::System::getSingleton().injectMouseButtonUp(convertButton(id)); if (id == OIS::MB_Left) { mLMouseDown = false; } else if (id == OIS::MB_Right) { CEGUI::MouseCursor::getSingleton().show(); mRMouseDown = false; } return true; } void BasicApp::windowResized(Ogre::RenderWindow* rw) //not used { unsigned int width, height, depth; int left, top; rw->getMetrics(width, height, depth, left, top); const OIS::MouseState& ms = mMouse->getMouseState(); ms.width = width; ms.height = height; } void BasicApp::windowClosed(Ogre::RenderWindow* rw) { if (rw == mWindow) { if (mInputMgr) { mInputMgr->destroyInputObject(mMouse); mInputMgr->destroyInputObject(mKeyboard); OIS::InputManager::destroyInputSystem(mInputMgr); mInputMgr = 0; } } } bool BasicApp::setup() { mRoot = new Ogre::Root(mPluginsCfg); setupResources(); if (!configure()) return false; chooseSceneManager(); createCamera(); createViewports(); Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5); createResourceListener(); loadResources(); setupCEGUI(); createScene(); createFrameListener(); mRayScnQuery = mSceneMgr->createRayQuery(Ogre::Ray()); return true; } bool BasicApp::configure() { if (!(mRoot->restoreConfig() || mRoot->showConfigDialog())) { return false; } mWindow = mRoot->initialise(true, "Present3D"); return true; } void BasicApp::chooseSceneManager() { mSceneMgr = mRoot->createSceneManager(Ogre::ST_EXTERIOR_CLOSE); } void BasicApp::createCamera() { mCamera = mSceneMgr->createCamera("DefaultCam"); mCamera->setPosition(Ogre::Vector3(500, 350, 150)); mCamera->lookAt(Ogre::Vector3(0, 0, 150)); mCamera->setNearClipDistance(0.1); mCamera->setFarClipDistance(50000); mCameraMan = new OgreBites::SdkCameraMan(mCamera); } void BasicApp::createScene() { mSceneMgr->setAmbientLight(Ogre::ColourValue(0.7, 0.7, 0.7)); Ogre::Vector3 lightDir(0.55, 0.3, 0.75); lightDir.normalise(); Ogre::Light* light = mSceneMgr->createLight("SceneLight"); // light->setType(Ogre::Light::LT_DIRECTIONAL); light->setType(Ogre::Light::LT_POINT); light->setDirection(lightDir); light->setDiffuseColour(Ogre::ColourValue(0.4, 0.4, 0.4)); light->setSpecularColour(Ogre::ColourValue(0.2, 0.2, 0.2)); light->setPosition(500,350,250); //--------виджет главного окна + менеджер CEGUI::WindowManager &wmgr = CEGUI::WindowManager::getSingleton(); sheetMgr = wmgr.createWindow("DefaultWindow", "sheetMgr"); sheetMainWindow = wmgr.createWindow("DefaultWindow", "sheetMainWindow"); sheetMainMenu = wmgr.createWindow("DefaultWindow", "sheetMainMenu"); //--------кнопка выхода buttonQuit = wmgr.createWindow("OgreTray/Button", "CEGUIDemo/QuitButton"); wchar_t quitText[100] = L"Выход"; buttonQuit->setText( encodeRussian(quitText) ); buttonQuit->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0))); //--------кнопка возвращения камеры на исходную позицию buttonCameraSetPosition = wmgr.createWindow("OgreTray/Button", "CEGUIDemo/buttonCameraSetPosition"); wchar_t cameraText[100] = L"Выберите модель"; buttonCameraSetPosition->setText( encodeRussian(cameraText) ); buttonCameraSetPosition->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0))); buttonCameraSetPosition->setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0.05, 0))); //--------текст модели textbox1 = wmgr.createWindow("OgreTray/StaticText", "CEGUIDemo/TextBox1"); textbox1->setVisible(false); textbox1->setSize(CEGUI::UVector2(CEGUI::UDim(0.35, 0), CEGUI::UDim(0.3, 0))); textbox1->setPosition(CEGUI::UVector2(CEGUI::UDim(0.2, 0), CEGUI::UDim(0.3, 0))); //--------текст тени textShadow = wmgr.createWindow("OgreTray/ListboxItem", "CEGUIDemo/shadowText"); wchar_t shadowText[100] = L"Тени"; textShadow->setText( encodeRussian(shadowText) ); textShadow->setSize(CEGUI::UVector2(CEGUI::UDim(0.1, 0), CEGUI::UDim(0.05, 0))); textShadow->setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0))); checkShadow = wmgr.createWindow("Vanilla/Checkbox", "CEGUIDemo/check"); checkShadow->setSize(CEGUI::UVector2(CEGUI::UDim(0.05, 0), CEGUI::UDim(0.05, 0))); checkShadow->setPosition(CEGUI::UVector2(CEGUI::UDim(0.12, 0), CEGUI::UDim(0, 0))); //главное меню menuButton = wmgr.createWindow("OgreTray/Button", "menuButton"); wchar_t settingsText[100] = L"Настройки"; menuButton->setText( encodeRussian(settingsText) ); menuButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0), CEGUI::UDim(0.05, 0))); menuButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.85, 0), CEGUI::UDim(0, 0))); //Кнопка увеличения скейла scalePlusButton = wmgr.createWindow("but/scalePlusButton", "CEGUIDemo/scalePlusButton"); scalePlusButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); scalePlusButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.8, 0), CEGUI::UDim(0.6, 0))); //Кнопка уменьшения скейла scaleMinusButton = wmgr.createWindow("but/scaleMinusButton", "CEGUIDemo/scaleMinusButton"); scaleMinusButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); scaleMinusButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.8, 0), CEGUI::UDim(0.7, 0))); //Кнопка перемещения модели влево translateModelToLeftButton = wmgr.createWindow("but/moveButton", "CEGUIDemo/translateModelToLeftButton"); translateModelToLeftButton->setRotation( CEGUI::Vector3(0,0,180) ); translateModelToLeftButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToLeftButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.58, 0), CEGUI::UDim(0.7, 0))); //Кнопка перемещения модели вправо translateModelToRightButton = wmgr.createWindow("but/moveButton", "CEGUIDemo/translateModelToRightButton"); translateModelToRightButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToRightButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.72, 0), CEGUI::UDim(0.7, 0))); //Кнопка перемещения модели вперед translateModelToTopButton = wmgr.createWindow("but/moveButton", "CEGUIDemo/translateModelToTopButton"); translateModelToTopButton->setRotation( CEGUI::Vector3(0,0,-90) ); translateModelToTopButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToTopButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.65, 0), CEGUI::UDim(0.6, 0))); //Кнопка перемещения модели назад translateModelToBackButton = wmgr.createWindow("but/moveButton", "CEGUIDemo/translateModelToBackButton"); translateModelToBackButton->setRotation( CEGUI::Vector3(0,0,90) ); translateModelToBackButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToBackButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.65, 0), CEGUI::UDim(0.71, 0))); //Кнопка перемещения модели вверх translateModelToUpButton = wmgr.createWindow("but/topButton", "CEGUIDemo/translateModelToUpButton"); translateModelToUpButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToUpButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.6, 0), CEGUI::UDim(0.64, 0))); //Кнопка перемещения модели вверх translateModelToDownButton = wmgr.createWindow("but/topButton", "CEGUIDemo/translateModelToDownButton"); translateModelToDownButton->setRotation( CEGUI::Vector3(0,0,180) ); translateModelToDownButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); translateModelToDownButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.7, 0), CEGUI::UDim(0.62, 0))); //Кнопка перемещения модели вверх rotateRightModelButton = wmgr.createWindow("but/rotateButton", "CEGUIDemo/rotateRightModelButton"); rotateRightModelButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); rotateRightModelButton->setPosition(CEGUI::UVector2(CEGUI::UDim(0.515, 0), CEGUI::UDim(0.6, 0))); //Кнопка перемещения модели вверх rotateLeftModelButton = wmgr.createWindow("but/rotateButton", "CEGUIDemo/rotateLeftModelButton"); rotateLeftModelButton->setRotation( CEGUI::Vector3(0,180,0) ); rotateLeftModelButton->setSize(CEGUI::UVector2(CEGUI::UDim(0.07, 0), CEGUI::UDim(0.07, 0))); |
Описание предметной области Обзор существующих программных продуктов систем обработки данных c использованием ip-телефонии 7 |
Метода очистки Целью настоящей работы является разработка технических решений по усовершенствованию существующих методов зачистки резервуаров с... |
||
Генеральный план совмещенный с проектом планировки пояснительная... Выявление проблем градостроительного развития территории поселения на основе анализа параметров городской среды, существующих ресурсов... |
Обзор Оспаривание решений и действий (бездействия) органов государственной власти, органов местного самоуправления, должностных лиц, государственных... |
||
Экспериментальная медицина и детская неврология обзор Системный обзор вмешательств у детей с церебральным параличом: статус доказательности |
«Выполнение работ по развитию и оказание услуг по сопровождению Федерального... Целью работы является анализ справочников фргу на соответствие следующим критериям: актуальность и полнота существующих справочных... |
||
Теоретические основы анализа и планирования разработки управленческих решений 5 Методы планирования, используемые при разработке и принятии управленческих решений в организации 9 |
Обзор текущего состояния и особенности государственной инновационной политики Периодический обзор инновационной деятельности стран Европы, Америки, Азии и Африки, СНГ |
||
Методические указания Ростов-на-Дону Целью данного курса является формирование представления о процессе принятия решений, навыков анализа ситуации при принятии решений,... |
Экспериментальное народное самолетостроение 2 Глава Предварительный анализ и выбор решений 2 «летающих решений», некоего ковра-самолета «небесного катера» для отдыха и путешествий, не требующего летных удостоверений и сертификации.... |
||
Марка Сергеева государственные и муниципальные библиотеки иркутской... Г 72 ежегод аналит обзор / Иркут обл гос универс науч б-ка им. И. И. Молчанова-Сибирского |
Решение это выбор альтернативы Чтобы оказать вам помощь в этом, ниже мы рассмотрим типы решений, принимаемых управляющими, используемые способы, научные методы... |
||
2 Анализ выполнения решений международных документов/решений, принятых... На Рис. 133 наглядно представлена оценка Азербайджанской республики с точки зрения реализации основных направлений Плана действий... |
Учебное пособие. М.: Издательство "Март", 2004. Предыдущая Моделирование как метод теории принятия решений и анализ ряда конкретных моделей предмет четвертой части. Приводятся методы принятия... |
||
Рабочая программа учебной дисциплины б. 3 Методы принятия управленческих... Будущий менеджер должен научиться правильно применять готовые компьютерные программы, хорошо разработанную технику анализа количественных... |
Инструкция по эксплуатации на английском языке Когда то я уже писал обзор на проектор Unic uc40 и когда увидел BlitzWolf (он же unic uc46) то решил взять его на обзор, что бы посмотреть... |
Поиск |