Обзор существующих решений


Скачать 0.66 Mb.
Название Обзор существующих решений
страница 8/10
Тип Обзор
rykovodstvo.ru > Руководство эксплуатация > Обзор
1   2   3   4   5   6   7   8   9   10

{

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)));
1   2   3   4   5   6   7   8   9   10

Похожие:

Обзор существующих решений icon Описание предметной области
Обзор существующих программных продуктов систем обработки данных c использованием ip-телефонии 7
Обзор существующих решений icon Метода очистки
Целью настоящей работы является разработка технических решений по усовершенствованию существующих методов зачистки резервуаров с...
Обзор существующих решений icon Генеральный план совмещенный с проектом планировки пояснительная...
Выявление проблем градостроительного развития территории поселения на основе анализа параметров городской среды, существующих ресурсов...
Обзор существующих решений icon Обзор
Оспаривание решений и действий (бездействия) органов государственной власти, органов местного самоуправления, должностных лиц, государственных...
Обзор существующих решений icon Экспериментальная медицина и детская неврология обзор
Системный обзор вмешательств у детей с церебральным параличом: статус доказательности
Обзор существующих решений icon «Выполнение работ по развитию и оказание услуг по сопровождению Федерального...
Целью работы является анализ справочников фргу на соответствие следующим критериям: актуальность и полнота существующих справочных...
Обзор существующих решений icon Теоретические основы анализа и планирования разработки управленческих решений 5
Методы планирования, используемые при разработке и принятии управленческих решений в организации 9
Обзор существующих решений icon Обзор текущего состояния и особенности государственной инновационной политики
Периодический обзор инновационной деятельности стран Европы, Америки, Азии и Африки, СНГ
Обзор существующих решений icon Методические указания Ростов-на-Дону
Целью данного курса является формирование представления о процессе принятия решений, навыков анализа ситуации при принятии решений,...
Обзор существующих решений icon Экспериментальное народное самолетостроение 2 Глава Предварительный анализ и выбор решений 2
«летающих решений», некоего ковра-самолета «небесного катера» для отдыха и путешествий, не требующего летных удостоверений и сертификации....
Обзор существующих решений icon Марка Сергеева государственные и муниципальные библиотеки иркутской...
Г 72 ежегод аналит обзор / Иркут обл гос универс науч б-ка им. И. И. Молчанова-Сибирского
Обзор существующих решений icon Решение это выбор альтернативы
Чтобы оказать вам помощь в этом, ниже мы рассмотрим типы решений, принимаемых управляющими, используемые способы, научные методы...
Обзор существующих решений icon 2 Анализ выполнения решений международных документов/решений, принятых...
На Рис. 133 наглядно представлена оценка Азербайджанской республики с точки зрения реализации основных направлений Плана действий...
Обзор существующих решений icon Учебное пособие. М.: Издательство "Март", 2004. Предыдущая
Моделирование как метод теории принятия решений и анализ ряда конкретных моделей предмет четвертой части. Приводятся методы принятия...
Обзор существующих решений icon Рабочая программа учебной дисциплины б. 3 Методы принятия управленческих...
Будущий менеджер должен научиться правильно применять готовые компьютерные программы, хорошо разработанную технику анализа количественных...
Обзор существующих решений icon Инструкция по эксплуатации на английском языке
Когда то я уже писал обзор на проектор Unic uc40 и когда увидел BlitzWolf (он же unic uc46) то решил взять его на обзор, что бы посмотреть...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск