void updateToolBox() { IGUIEnvironment* env = Device->getGUIEnvironment(); IGUIElement* root = env->getRootGUIElement(); IGUIElement* dlg = root->getElementFromId(GUI_ID_DIALOG_ROOT_WINDOW, true); if (!dlg ) return; // update the info we have about the animation of the model IGUIStaticText * aniInfo = (IGUIStaticText *)(dlg->getElementFromId(GUI_ID_ANIMATION_INFO, true)); if (aniInfo) { if ( Model && scene::ESNT_ANIMATED_MESH == Model->getType() ) { scene::IAnimatedMeshSceneNode* animatedModel = (scene::IAnimatedMeshSceneNode*)Model; core::stringw str( (s32)core::round_(animatedModel->getAnimationSpeed()) ); str += L" Frame: "; str += core::stringw((s32)animatedModel->getFrameNr()); aniInfo->setText(str.c_str()); } else aniInfo->setText(L""); } }
void NBEditor::updateProperties() { IGUIElement* prop = state->menu->sidebar->getElementFromId(ENB_GUI_PROP); Node* node = state->project->GetCurrentNode(); if (!prop || !node) { return; } NodeBox* nb = node->GetCurrentNodeBox(); if (!nb) { return; } try { irr::core::stringc name = prop->getElementFromId(ENB_GUI_PROP_NAME)->getText(); nb->name = str_replace(std::string(name.c_str(), name.size()), ' ', '_'); nb->one.X = wcstod(prop->getElementFromId(ENB_GUI_PROP_X1)->getText(), NULL); nb->one.Y = wcstod(prop->getElementFromId(ENB_GUI_PROP_Y1)->getText(), NULL); nb->one.Z = wcstod(prop->getElementFromId(ENB_GUI_PROP_Z1)->getText(), NULL); nb->two.X = wcstod(prop->getElementFromId(ENB_GUI_PROP_X2)->getText(), NULL); nb->two.Y = wcstod(prop->getElementFromId(ENB_GUI_PROP_Y2)->getText(), NULL); nb->two.Z = wcstod(prop->getElementFromId(ENB_GUI_PROP_Z2)->getText(), NULL); node->remesh(); load_ui(); } catch (void* e) { state->device->getGUIEnvironment()->addMessageBox(L"Update failed", L"Please check that the properties contain only numbers."); } }
/* Finally, the third function creates a toolbox window. In this simple mesh viewer, this toolbox only contains a tab control with three edit boxes for changing the scale of the displayed model. */ void createToolBox() { // remove tool box if already there IGUIEnvironment* env = Device->getGUIEnvironment(); IGUIElement* root = env->getRootGUIElement(); IGUIElement* e = root->getElementFromId(GUI_ID_DIALOG_ROOT_WINDOW, true); if (e) e->remove(); // create the toolbox window IGUIWindow* wnd = env->addWindow(core::rect<s32>(600,45,800,480), false, L"Toolset", 0, GUI_ID_DIALOG_ROOT_WINDOW); // create tab control and tabs IGUITabControl* tab = env->addTabControl( core::rect<s32>(2,20,800-602,480-7), wnd, true, true); IGUITab* t1 = tab->addTab(L"Config"); // add some edit boxes and a button to tab one env->addStaticText(L"Scale:", core::rect<s32>(10,20,60,45), false, false, t1); env->addStaticText(L"X:", core::rect<s32>(22,48,40,66), false, false, t1); env->addEditBox(L"1.0", core::rect<s32>(40,46,130,66), true, t1, GUI_ID_X_SCALE); env->addStaticText(L"Y:", core::rect<s32>(22,82,40,96), false, false, t1); env->addEditBox(L"1.0", core::rect<s32>(40,76,130,96), true, t1, GUI_ID_Y_SCALE); env->addStaticText(L"Z:", core::rect<s32>(22,108,40,126), false, false, t1); env->addEditBox(L"1.0", core::rect<s32>(40,106,130,126), true, t1, GUI_ID_Z_SCALE); env->addButton(core::rect<s32>(10,134,85,165), t1, GUI_ID_BUTTON_SET_SCALE, L"Set"); // quick scale buttons env->addButton(core::rect<s32>(65,20,95,40), t1, GUI_ID_BUTTON_SCALE_MUL10, L"* 10"); env->addButton(core::rect<s32>(100,20,130,40), t1, GUI_ID_BUTTON_SCALE_DIV10, L"* 0.1"); updateScaleInfo(Model); // add transparency control env->addStaticText(L"GUI Transparency Control:", core::rect<s32>(10,200,150,225), true, false, t1); IGUIScrollBar* scrollbar = env->addScrollBar(true, core::rect<s32>(10,225,150,240), t1, GUI_ID_SKIN_TRANSPARENCY); scrollbar->setMax(255); scrollbar->setPos(255); // add framerate control env->addStaticText(L":", core::rect<s32>(10,240,150,265), true, false, t1); env->addStaticText(L"Framerate:", core::rect<s32>(12,240,75,265), false, false, t1); // current frame info env->addStaticText(L"", core::rect<s32>(75,240,200,265), false, false, t1, GUI_ID_ANIMATION_INFO); scrollbar = env->addScrollBar(true, core::rect<s32>(10,265,150,280), t1, GUI_ID_SKIN_ANIMATION_FPS); scrollbar->setMax(MAX_FRAMERATE); scrollbar->setMin(-MAX_FRAMERATE); scrollbar->setPos(DEFAULT_FRAMERATE); scrollbar->setSmallStep(1); }
/* Update the display of the model scaling */ void updateScaleInfo(scene::ISceneNode* model) { IGUIElement* toolboxWnd = Device->getGUIEnvironment()->getRootGUIElement()->getElementFromId(GUI_ID_DIALOG_ROOT_WINDOW, true); if (!toolboxWnd) return; if (!model) { toolboxWnd->getElementFromId(GUI_ID_X_SCALE, true)->setText( L"-" ); toolboxWnd->getElementFromId(GUI_ID_Y_SCALE, true)->setText( L"-" ); toolboxWnd->getElementFromId(GUI_ID_Z_SCALE, true)->setText( L"-" ); } else { core::vector3df scale = model->getScale(); toolboxWnd->getElementFromId(GUI_ID_X_SCALE, true)->setText( core::stringw(scale.X).c_str() ); toolboxWnd->getElementFromId(GUI_ID_Y_SCALE, true)->setText( core::stringw(scale.Y).c_str() ); toolboxWnd->getElementFromId(GUI_ID_Z_SCALE, true)->setText( core::stringw(scale.Z).c_str() ); } }
bool viewprt::checkForWindow(s32 element, s32 x, s32 y) { IGUIEnvironment* env = device->getGUIEnvironment(); IGUIElement* root = env->getRootGUIElement(); IGUIElement* e = root->getElementFromId(element, true); if (e) { core::rect< s32 > infos; infos=e->getAbsolutePosition(); return infos.isPointInside(position2d<s32>(x,y)); } return false; }