1 #include <irrlicht.h>
\r
2 #include "exampleHelper.h"
\r
6 static video::E_DRIVER_TYPE chooseDriver(const char *arg_)
\r
8 if (core::stringc(arg_) == "null")
\r
9 return video::EDT_NULL;
\r
11 if (IrrlichtDevice::isDriverSupported(video::EDT_OGLES1))
\r
12 return video::EDT_OGLES1;
\r
13 if (IrrlichtDevice::isDriverSupported(video::EDT_OGLES2))
\r
14 return video::EDT_OGLES2;
\r
15 return video::EDT_OPENGL;
\r
18 int main(int argc, char *argv[])
\r
20 SIrrlichtCreationParameters p;
\r
21 p.DriverType = chooseDriver(argc > 1 ? argv[1] : "");
\r
22 p.WindowSize = core::dimension2du(640, 480);
\r
24 p.LoggingLevel = ELL_DEBUG;
\r
26 IrrlichtDevice *device = createDeviceEx(p);
\r
30 device->setWindowCaption(L"Hello World!");
\r
31 device->setResizable(true);
\r
33 video::IVideoDriver* driver = device->getVideoDriver();
\r
34 scene::ISceneManager* smgr = device->getSceneManager();
\r
35 gui::IGUIEnvironment* guienv = device->getGUIEnvironment();
\r
37 guienv->addStaticText(L"sample text", core::rect<s32>(10,10,110,22), false);
\r
39 gui::IGUIButton* button = guienv->addButton(
\r
40 core::rect<s32>(10,30,110,30 + 32), 0, -1, L"sample button",
\r
43 gui::IGUIEditBox* editbox = guienv->addEditBox(L"",
\r
44 core::rect<s32>(10,70,60,70 + 16));
\r
46 const io::path mediaPath = getExampleMediaPath();
\r
48 scene::IAnimatedMesh* mesh = smgr->getMesh(mediaPath + "sydney.md2");
\r
51 scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);
\r
54 node->setMaterialFlag(video::EMF_LIGHTING, false);
\r
55 node->setMD2Animation(scene::EMAT_STAND);
\r
56 node->setMaterialTexture(0, driver->getTexture(mediaPath + "sydney.bmp"));
\r
59 smgr->addCameraSceneNode(0, core::vector3df(0,30,-40), core::vector3df(0,5,0));
\r
63 device->getTimer()->start();
\r
65 while (device->run())
\r
67 if (device->getTimer()->getTime() >= 1300)
\r
69 device->getTimer()->setTime(0);
\r
71 if (n == 1) // Tooltip display
\r
73 bzero(&event, sizeof(SEvent));
\r
74 event.EventType = irr::EET_MOUSE_INPUT_EVENT;
\r
75 event.MouseInput.Event = irr::EMIE_MOUSE_MOVED;
\r
76 event.MouseInput.X = button->getAbsolutePosition().getCenter().X;
\r
77 event.MouseInput.Y = button->getAbsolutePosition().getCenter().Y;
\r
78 device->postEventFromUser(event);
\r
80 else if (n == 2) // Text input focus
\r
81 guienv->setFocus(editbox);
\r
82 else if (n == 3) // Keypress for Text input
\r
84 bzero(&event, sizeof(SEvent));
\r
85 event.EventType = irr::EET_KEY_INPUT_EVENT;
\r
86 event.KeyInput.Char = L'a';
\r
87 event.KeyInput.Key = KEY_KEY_A;
\r
88 event.KeyInput.PressedDown = true;
\r
89 device->postEventFromUser(event);
\r
90 event.KeyInput.PressedDown = false;
\r
91 device->postEventFromUser(event);
\r
94 device->closeDevice();
\r
97 driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH,
\r
98 video::SColor(255,100,100,150));
\r
101 driver->endScene();
\r
104 if (core::stringw(L"a") != editbox->getText()) {
\r
105 device->getLogger()->log("EditBox text mismatch", ELL_INFORMATION);
\r
109 device->getLogger()->log("Done.", ELL_INFORMATION);
\r