mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-14 03:33:49 +01:00
8310a3fbad
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6000 dfc29bdd-3216-0410-991c-e03cc46cb475
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;
|
|
}
|