--- /dev/null
+#include <irrlicht.h>\r
+#include "exampleHelper.h"\r
+\r
+using namespace irr;\r
+\r
+static video::E_DRIVER_TYPE chooseDriver(const char *arg_)\r
+{\r
+ if (core::stringc(arg_) == "null")\r
+ return video::EDT_NULL;\r
+\r
+ if (IrrlichtDevice::isDriverSupported(video::EDT_OGLES1))\r
+ return video::EDT_OGLES1;\r
+ if (IrrlichtDevice::isDriverSupported(video::EDT_OGLES2))\r
+ return video::EDT_OGLES2;\r
+ return video::EDT_OPENGL;\r
+}\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ SIrrlichtCreationParameters p;\r
+ p.DriverType = chooseDriver(argc > 1 ? argv[1] : "");\r
+ p.WindowSize = core::dimension2du(640, 480);\r
+ p.Vsync = true;\r
+ p.LoggingLevel = ELL_DEBUG;\r
+\r
+ IrrlichtDevice *device = createDeviceEx(p);\r
+ if (!device)\r
+ return 1;\r
+\r
+ device->setWindowCaption(L"Hello World!");\r
+ device->setResizable(true);\r
+\r
+ video::IVideoDriver* driver = device->getVideoDriver();\r
+ scene::ISceneManager* smgr = device->getSceneManager();\r
+ gui::IGUIEnvironment* guienv = device->getGUIEnvironment();\r
+\r
+ guienv->addStaticText(L"sample text", core::rect<s32>(10,10,110,22), false);\r
+\r
+ gui::IGUIButton* button = guienv->addButton(\r
+ core::rect<s32>(10,30,110,30 + 32), 0, -1, L"sample button",\r
+ L"sample tooltip");\r
+\r
+ gui::IGUIEditBox* editbox = guienv->addEditBox(L"",\r
+ core::rect<s32>(10,70,60,70 + 16));\r
+\r
+ const io::path mediaPath = getExampleMediaPath();\r
+\r
+ scene::IAnimatedMesh* mesh = smgr->getMesh(mediaPath + "sydney.md2");\r
+ if (!mesh)\r
+ return 1;\r
+ scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);\r
+ if (node)\r
+ {\r
+ node->setMaterialFlag(video::EMF_LIGHTING, false);\r
+ node->setMD2Animation(scene::EMAT_STAND);\r
+ node->setMaterialTexture(0, driver->getTexture(mediaPath + "sydney.bmp"));\r
+ }\r
+\r
+ smgr->addCameraSceneNode(0, core::vector3df(0,30,-40), core::vector3df(0,5,0));\r
+\r
+ s32 n = 0;\r
+ SEvent event;\r
+ device->getTimer()->start();\r
+\r
+ while (device->run())\r
+ {\r
+ if (device->getTimer()->getTime() >= 1300)\r
+ {\r
+ device->getTimer()->setTime(0);\r
+ ++n;\r
+ if (n == 1) // Tooltip display\r
+ {\r
+ bzero(&event, sizeof(SEvent));\r
+ event.EventType = irr::EET_MOUSE_INPUT_EVENT;\r
+ event.MouseInput.Event = irr::EMIE_MOUSE_MOVED;\r
+ event.MouseInput.X = button->getAbsolutePosition().getCenter().X;\r
+ event.MouseInput.Y = button->getAbsolutePosition().getCenter().Y;\r
+ device->postEventFromUser(event);\r
+ }\r
+ else if (n == 2) // Text input focus\r
+ guienv->setFocus(editbox);\r
+ else if (n == 3) // Keypress for Text input\r
+ {\r
+ bzero(&event, sizeof(SEvent));\r
+ event.EventType = irr::EET_KEY_INPUT_EVENT;\r
+ event.KeyInput.Char = L'a';\r
+ event.KeyInput.Key = KEY_KEY_A;\r
+ event.KeyInput.PressedDown = true;\r
+ device->postEventFromUser(event);\r
+ event.KeyInput.PressedDown = false;\r
+ device->postEventFromUser(event);\r
+ }\r
+ else\r
+ device->closeDevice();\r
+ }\r
+\r
+ driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH,\r
+ video::SColor(255,100,100,150));\r
+ smgr->drawAll();\r
+ guienv->drawAll();\r
+ driver->endScene();\r
+ }\r
+\r
+ if (core::stringw(L"a") != editbox->getText()) {\r
+ device->getLogger()->log("EditBox text mismatch", ELL_INFORMATION);\r
+ return 1;\r
+ }\r
+\r
+ device->getLogger()->log("Done.", ELL_INFORMATION);\r
+ device->drop();\r
+ return 0;\r
+}\r