mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-26 18:50:31 +01:00
85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
|
#include <irrlicht.h>
|
||
|
#include "driverChoice.h"
|
||
|
|
||
|
// include the gui creator element factory
|
||
|
#include "CGUIEditFactory.h"
|
||
|
|
||
|
using namespace irr;
|
||
|
using namespace gui;
|
||
|
|
||
|
#ifdef _MSC_VER
|
||
|
#pragma comment(lib, "Irrlicht.lib")
|
||
|
#endif
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
// ask user for driver
|
||
|
video::E_DRIVER_TYPE driverType=driverChoiceConsole(false);
|
||
|
if (driverType==video::EDT_COUNT)
|
||
|
return 1;
|
||
|
|
||
|
IrrlichtDevice *device = createDevice(driverType, core::dimension2du(800, 600));
|
||
|
video::IVideoDriver* driver = device->getVideoDriver();
|
||
|
scene::ISceneManager* smgr = device->getSceneManager();
|
||
|
gui::IGUIEnvironment *env = device->getGUIEnvironment();
|
||
|
|
||
|
device->setResizable(true);
|
||
|
|
||
|
/*
|
||
|
first we create the factory which can make new GUI elements
|
||
|
and register it with the gui environment.
|
||
|
*/
|
||
|
|
||
|
IGUIElementFactory* factory = new CGUIEditFactory(env);
|
||
|
env->registerGUIElementFactory(factory);
|
||
|
// remember to drop since we created with a create call
|
||
|
factory->drop();
|
||
|
|
||
|
IGUISkin *skin = env->createSkin(EGST_WINDOWS_METALLIC);
|
||
|
env->setSkin(skin);
|
||
|
|
||
|
IGUIFont *font = env->getFont("../../media/lucida.xml");
|
||
|
if (font)
|
||
|
skin->setFont(font);
|
||
|
skin->drop();
|
||
|
|
||
|
// change transparency of skin
|
||
|
for (s32 i=0; i<gui::EGDC_COUNT ; ++i)
|
||
|
{
|
||
|
video::SColor col = env->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i);
|
||
|
col.setAlpha(250);
|
||
|
env->getSkin()->setColor((gui::EGUI_DEFAULT_COLOR)i, col);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
now we add the GUI Editor Workspace
|
||
|
*/
|
||
|
|
||
|
env->addGUIElement("GUIEditor");
|
||
|
|
||
|
while(device->run())
|
||
|
{
|
||
|
if (!device->isWindowMinimized())
|
||
|
{
|
||
|
const core::dimension2d<u32>& screenSize = driver->getScreenSize();
|
||
|
wchar_t caption[512];
|
||
|
swprintf_irr(caption, 512, L"screen (%4u/%4u)", screenSize.Width, screenSize.Height);
|
||
|
device->setWindowCaption(caption);
|
||
|
driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(0,200,200,200));
|
||
|
smgr->drawAll();
|
||
|
env->drawAll();
|
||
|
driver->endScene();
|
||
|
}
|
||
|
|
||
|
// be nice to CPU
|
||
|
device->sleep(10);
|
||
|
if (!device->isWindowActive())
|
||
|
device->sleep(90);
|
||
|
}
|
||
|
|
||
|
device->closeDevice();
|
||
|
device->drop();
|
||
|
|
||
|
return 0;
|
||
|
}
|