From 7028cbe09c688437910a25623098762bf0fa592d Mon Sep 17 00:00:00 2001
From: David Walter Seikel
Date: Mon, 28 Mar 2016 22:28:34 +1000
Subject: Move Irrlicht to src/others.
---
.... HelloWorld for Windows Mobile on PC_v8.vcproj | 185 ++++++++
.... HelloWorld for Windows Mobile on PC_v9.vcproj | 184 ++++++++
...elloWorld for Windows Mobile on PC_vc10.vcxproj | 176 +++++++
...elloWorld for Windows Mobile on PC_vc11.vcxproj | 180 ++++++++
.../17.HelloWorld_Mobile/HelloWorld_mobile.sln | 33 ++
.../17.HelloWorld_Mobile/HelloWorld_mobile.vcproj | 198 ++++++++
.../examples/17.HelloWorld_Mobile/main.cpp | 503 +++++++++++++++++++++
7 files changed, 1459 insertions(+)
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v8.vcproj
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v9.vcproj
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc10.vcxproj
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc11.vcxproj
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.sln
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.vcproj
create mode 100644 src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/main.cpp
(limited to 'src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile')
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v8.vcproj b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v8.vcproj
new file mode 100644
index 0000000..be07354
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v8.vcproj
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v9.vcproj b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v9.vcproj
new file mode 100644
index 0000000..acdc249
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_v9.vcproj
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc10.vcxproj b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc10.vcxproj
new file mode 100644
index 0000000..e46cb0c
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc10.vcxproj
@@ -0,0 +1,176 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ 17.HelloWorld_Mobile
+ {2A29B6B1-AFC4-46C7-9944-7052AAE66F7B}
+ My17HelloWorldforWindowsMobileonPC
+ Win32Proj
+
+
+
+ Application
+ Unicode
+ true
+
+
+ Application
+ Unicode
+ true
+
+
+ Application
+ Unicode
+
+
+ Application
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ ..\..\bin\Win32-VisualStudio\
+ ..\..\bin\Win64-VisualStudio\
+ true
+ true
+ ..\..\bin\Win32-VisualStudio\
+ ..\..\bin\Win64-VisualStudio\
+ false
+ false
+ AllRules.ruleset
+ AllRules.ruleset
+
+
+
+
+ AllRules.ruleset
+ AllRules.ruleset
+
+
+
+
+
+
+
+ Disabled
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ EditAndContinue
+
+
+ ..\..\bin\Win32-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win32-visualstudio;%(AdditionalLibraryDirectories)
+ true
+ Console
+
+
+
+
+
+
+ Disabled
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win64-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win64-visualstudio;%(AdditionalLibraryDirectories)
+ true
+ Console
+
+
+
+
+
+
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win32-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win32-visualstudio;%(AdditionalLibraryDirectories)
+ false
+ Console
+ true
+ true
+
+
+
+
+
+
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win64-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win64-visualstudio;%(AdditionalLibraryDirectories)
+ false
+ Console
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc11.vcxproj b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc11.vcxproj
new file mode 100644
index 0000000..27b8ed4
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/17. HelloWorld for Windows Mobile on PC_vc11.vcxproj
@@ -0,0 +1,180 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ 17.HelloWorld_Mobile
+ {2A29B6B1-AFC4-46C7-9944-7052AAE66F7B}
+ My17HelloWorldforWindowsMobileonPC
+ Win32Proj
+
+
+
+ Application
+ Unicode
+ true
+ v110
+
+
+ Application
+ Unicode
+ true
+ v110
+
+
+ Application
+ Unicode
+ v110
+
+
+ Application
+ Unicode
+ v110
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ ..\..\bin\Win32-VisualStudio\
+ ..\..\bin\Win64-VisualStudio\
+ true
+ true
+ ..\..\bin\Win32-VisualStudio\
+ ..\..\bin\Win64-VisualStudio\
+ false
+ false
+ AllRules.ruleset
+ AllRules.ruleset
+
+
+
+
+ AllRules.ruleset
+ AllRules.ruleset
+
+
+
+
+
+
+
+ Disabled
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ EditAndContinue
+
+
+ ..\..\bin\Win32-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win32-visualstudio;%(AdditionalLibraryDirectories)
+ true
+ Console
+
+
+
+
+
+
+ Disabled
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win64-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win64-visualstudio;%(AdditionalLibraryDirectories)
+ true
+ Console
+
+
+
+
+
+
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win32-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win32-visualstudio;%(AdditionalLibraryDirectories)
+ false
+ Console
+ true
+ true
+
+
+
+
+
+
+ ..\..\include;%(AdditionalIncludeDirectories)
+ WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+
+
+ Level3
+ ProgramDatabase
+
+
+ ..\..\bin\Win64-VisualStudio\17.HelloWorld_Mobile.exe
+ ..\..\lib\Win64-visualstudio;%(AdditionalLibraryDirectories)
+ false
+ Console
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.sln b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.sln
new file mode 100644
index 0000000..31932b7
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.sln
@@ -0,0 +1,33 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "17.HelloWorld_mobile", "HelloWorld_mobile.vcproj", "{AD95D5D7-91D2-4030-B28D-23A6FE5C0359}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E08E042A-6C45-411B-92BE-3CC31331019F} = {E08E042A-6C45-411B-92BE-3CC31331019F}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Irrlicht", "..\..\source\Irrlicht\Irrlicht_mobile6.vcproj", "{E08E042A-6C45-411B-92BE-3CC31331019F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ {AD95D5D7-91D2-4030-B28D-23A6FE5C0359}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ {E08E042A-6C45-411B-92BE-3CC31331019F}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.vcproj b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.vcproj
new file mode 100644
index 0000000..dcaca9e
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/HelloWorld_mobile.vcproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/main.cpp b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/main.cpp
new file mode 100644
index 0000000..4fc15cd
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/17.HelloWorld_Mobile/main.cpp
@@ -0,0 +1,503 @@
+/** Example 017 Helloworld mobile
+ This example show Hello World for Windows mobile.
+ It compiles on other platform too. The only differences between the original
+ examples are. You need a GUI, because otherwise you can't quit the application.
+ You need a Filesystem, which is relative based to your executable.
+*/
+
+#include
+
+#if defined ( _IRR_WINDOWS_ )
+ #include
+#endif
+
+using namespace irr;
+using namespace core;
+using namespace scene;
+using namespace video;
+using namespace io;
+using namespace gui;
+
+#pragma comment(lib, "Irrlicht.lib")
+
+class EventReceiver_basic : public IEventReceiver
+{
+private:
+ IrrlichtDevice *Device;
+public:
+ EventReceiver_basic ( IrrlichtDevice *device ): Device ( device ) {}
+
+ virtual bool OnEvent(const SEvent& event)
+ {
+ if (event.EventType == EET_GUI_EVENT)
+ {
+ s32 id = event.GUIEvent.Caller->getID();
+
+ switch(event.GUIEvent.EventType)
+ {
+ case EGET_BUTTON_CLICKED:
+ if (id == 2)
+ {
+ Device->closeDevice();
+ return true;
+ } break;
+ }
+ }
+
+ return false;
+ }
+};
+
+class CSampleSceneNode : public ISceneNode
+{
+ aabbox3d Box;
+ S3DVertex Vertices[4];
+ SMaterial Material;
+public:
+
+ CSampleSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id)
+ : ISceneNode(parent, mgr, id)
+ {
+ Material.Wireframe = false;
+ Material.Lighting = false;
+
+ Vertices[0] = S3DVertex(0,0,10, 1,1,0, SColor(255,0,255,255), 0, 1);
+ Vertices[1] = S3DVertex(10,0,-10, 1,0,0, SColor(255,255,0,255), 1, 1);
+ Vertices[2] = S3DVertex(0,20,0, 0,1,1, SColor(255,255,255,0), 1, 0);
+ Vertices[3] = S3DVertex(-10,0,-10, 0,0,1, SColor(255,0,255,0), 0, 0);
+ Box.reset(Vertices[0].Pos);
+ for (s32 i=1; i<4; ++i)
+ Box.addInternalPoint(Vertices[i].Pos);
+ }
+ virtual void OnRegisterSceneNode()
+ {
+ if (IsVisible)
+ SceneManager->registerNodeForRendering(this);
+
+ ISceneNode::OnRegisterSceneNode();
+ }
+
+ virtual void render()
+ {
+ u16 indices[] = { 0,2,3, 2,1,3, 1,0,3, 2,0,1 };
+ IVideoDriver* driver = SceneManager->getVideoDriver();
+
+ driver->setMaterial(Material);
+ driver->setTransform(ETS_WORLD, AbsoluteTransformation);
+ driver->drawIndexedTriangleList(&Vertices[0], 4, &indices[0], 4);
+ }
+
+ virtual const aabbox3d& getBoundingBox() const
+ {
+ return Box;
+ }
+
+ virtual u32 getMaterialCount()
+ {
+ return 1;
+ }
+
+ virtual SMaterial& getMaterial(u32 i)
+ {
+ return Material;
+ }
+};
+
+/*!
+ Startup a Windows Mobile Device
+*/
+IrrlichtDevice *startup()
+{
+ // both software and burnings video can be used
+ E_DRIVER_TYPE driverType = EDT_SOFTWARE; // EDT_BURNINGSVIDEO;
+
+ // create device
+ IrrlichtDevice *device = 0;
+
+#if defined (_IRR_USE_WINDOWS_CE_DEVICE_)
+ // set to standard mobile fullscreen 240x320
+ device = createDevice(driverType, dimension2d(240, 320), 16, true );
+#else
+ // on PC. use window mode
+ device = createDevice(driverType, dimension2d(240, 320), 16, false );
+#endif
+ if ( 0 == device )
+ return 0;
+
+ IVideoDriver* driver = device->getVideoDriver();
+ ISceneManager* smgr = device->getSceneManager();
+ IGUIEnvironment* guienv = device->getGUIEnvironment();
+
+ // set the filesystem relative to the executable
+#if defined (_IRR_WINDOWS_)
+ {
+ wchar_t buf[255];
+ GetModuleFileNameW ( 0, buf, 255 );
+
+ io::path base = buf;
+ base = base.subString ( 0, base.findLast ( '\\' ) + 1 );
+ device->getFileSystem()->addFileArchive ( base );
+ }
+#endif
+
+ IGUIStaticText *text = guienv->addStaticText(L"FPS: 25",
+ rect(140,15,200,30), false, false, 0, 100 );
+
+ guienv->addButton(core::rect(200,10,238,30), 0, 2, L"Quit");
+
+ // add irrlicht logo
+ guienv->addImage(driver->getTexture("../../media/irrlichtlogo3.png"),
+ core::position2d(0,-2));
+ return device;
+}
+
+/*!
+*/
+int run ( IrrlichtDevice *device )
+{
+ while(device->run())
+ if (device->isWindowActive())
+ {
+ device->getVideoDriver()->beginScene(true, true, SColor(0,100,100,100));
+ device->getSceneManager()->drawAll();
+ device->getGUIEnvironment()->drawAll();
+ device->getVideoDriver()->endScene ();
+
+ IGUIElement *stat = device->getGUIEnvironment()->
+ getRootGUIElement()->getElementFromId ( 100 );
+ if ( stat )
+ {
+ stringw str = L"FPS: ";
+ str += (s32)device->getVideoDriver()->getFPS();
+
+ stat->setText ( str.c_str() );
+ }
+ }
+
+ device->drop();
+ return 0;
+}
+
+/*!
+*/
+int example_customscenenode()
+{
+ // create device
+ IrrlichtDevice *device = startup();
+ if (device == 0)
+ return 1; // could not create selected driver.
+
+ // create engine and camera
+ EventReceiver_basic receiver(device);
+ device->setEventReceiver(&receiver);
+
+ IVideoDriver* driver = device->getVideoDriver();
+ ISceneManager* smgr = device->getSceneManager();
+ IGUIEnvironment* guienv = device->getGUIEnvironment();
+
+
+ smgr->addCameraSceneNode(0, vector3df(0,-40,0), vector3df(0,0,0));
+
+ CSampleSceneNode *myNode =
+ new CSampleSceneNode(smgr->getRootSceneNode(), smgr, 666);
+
+ ISceneNodeAnimator* anim =
+ smgr->createRotationAnimator(vector3df(0.8f, 0, 0.8f));
+
+ if(anim)
+ {
+ myNode->addAnimator(anim);
+ anim->drop();
+ anim = 0; // As I shouldn't refer to it again, ensure that I can't
+ }
+
+ myNode->drop();
+ myNode = 0; // As I shouldn't refer to it again, ensure that I can't
+
+ return run ( device );
+}
+
+class EventReceiver_terrain : public IEventReceiver
+{
+public:
+
+ EventReceiver_terrain(IrrlichtDevice *device, scene::ISceneNode* terrain, scene::ISceneNode* skybox, scene::ISceneNode* skydome) :
+ Device ( device ), Terrain(terrain), Skybox(skybox), Skydome(skydome), showBox(true)
+ {
+ Skybox->setVisible(true);
+ Skydome->setVisible(false);
+ }
+
+ bool OnEvent(const SEvent& event)
+ {
+ if (event.EventType == EET_GUI_EVENT)
+ {
+ s32 id = event.GUIEvent.Caller->getID();
+
+ switch(event.GUIEvent.EventType)
+ {
+ case EGET_BUTTON_CLICKED:
+ if (id == 2)
+ {
+ Device->closeDevice();
+ return true;
+ } break;
+ }
+ }
+
+ // check if user presses the key 'W' or 'D'
+ if (event.EventType == irr::EET_KEY_INPUT_EVENT && !event.KeyInput.PressedDown)
+ {
+ switch (event.KeyInput.Key)
+ {
+ case irr::KEY_KEY_W: // switch wire frame mode
+ Terrain->setMaterialFlag(video::EMF_WIREFRAME,
+ !Terrain->getMaterial(0).Wireframe);
+ Terrain->setMaterialFlag(video::EMF_POINTCLOUD, false);
+ return true;
+ case irr::KEY_KEY_P: // switch wire frame mode
+ Terrain->setMaterialFlag(video::EMF_POINTCLOUD,
+ !Terrain->getMaterial(0).PointCloud);
+ Terrain->setMaterialFlag(video::EMF_WIREFRAME, false);
+ return true;
+ case irr::KEY_KEY_D: // toggle detail map
+ Terrain->setMaterialType(
+ Terrain->getMaterial(0).MaterialType == video::EMT_SOLID ?
+ video::EMT_DETAIL_MAP : video::EMT_SOLID);
+ return true;
+ case irr::KEY_KEY_S: // toggle skies
+ showBox=!showBox;
+ Skybox->setVisible(showBox);
+ Skydome->setVisible(!showBox);
+ return true;
+ default:
+ break;
+ }
+ }
+
+ return false;
+ }
+
+private:
+ IrrlichtDevice *Device;
+ scene::ISceneNode* Terrain;
+ scene::ISceneNode* Skybox;
+ scene::ISceneNode* Skydome;
+ bool showBox;
+};
+
+
+/*
+The start of the main function starts like in most other example. We ask the user
+for the desired renderer and start it up. This time with the advanced parameter handling.
+*/
+int example_terrain()
+{
+ // create device
+ IrrlichtDevice *device = startup();
+ if (device == 0)
+ return 1; // could not create selected driver.
+
+ /*
+ First, we add standard stuff to the scene: A nice irrlicht engine
+ logo, a small help text, a user controlled camera, and we disable
+ the mouse cursor.
+ */
+
+ video::IVideoDriver* driver = device->getVideoDriver();
+ scene::ISceneManager* smgr = device->getSceneManager();
+ gui::IGUIEnvironment* env = device->getGUIEnvironment();
+
+
+ //set other font
+ //env->getSkin()->setFont(env->getFont("../../media/fontlucida.png"));
+
+ // add some help text
+ env->addStaticText(
+ L"Press 'W' to change wireframe mode\nPress 'D' to toggle detail map\nPress 'S' to toggle skybox/skydome",
+ core::rect(5,250,235,320), true, true, 0, -1, true);
+
+ // add camera
+ scene::ICameraSceneNode* camera =
+ smgr->addCameraSceneNodeFPS(0,100.0f,1.2f);
+
+ camera->setPosition(core::vector3df(2700*2,255*2,2600*2));
+ camera->setTarget(core::vector3df(2397*2,343*2,2700*2));
+ camera->setFarValue(42000.0f);
+
+ // disable mouse cursor
+ device->getCursorControl()->setVisible(false);
+
+ /*
+ Here comes the terrain renderer scene node: We add it just like any
+ other scene node to the scene using
+ ISceneManager::addTerrainSceneNode(). The only parameter we use is a
+ file name to the heightmap we use. A heightmap is simply a gray scale
+ texture. The terrain renderer loads it and creates the 3D terrain from
+ it.
+
+ To make the terrain look more big, we change the scale factor of
+ it to (40, 4.4, 40). Because we don't have any dynamic lights in the
+ scene, we switch off the lighting, and we set the file
+ terrain-texture.jpg as texture for the terrain and detailmap3.jpg as
+ second texture, called detail map. At last, we set the scale values for
+ the texture: The first texture will be repeated only one time over the
+ whole terrain, and the second one (detail map) 20 times.
+ */
+
+ // add terrain scene node
+ scene::ITerrainSceneNode* terrain = smgr->addTerrainSceneNode(
+ "../../media/terrain-heightmap.bmp",
+ 0, // parent node
+ -1, // node id
+ core::vector3df(0.f, 0.f, 0.f), // position
+ core::vector3df(0.f, 0.f, 0.f), // rotation
+ core::vector3df(40.f, 4.4f, 40.f), // scale
+ video::SColor ( 255, 255, 255, 255 ), // vertexColor
+ 5, // maxLOD
+ scene::ETPS_17, // patchSize
+ 4 // smoothFactor
+ );
+
+ if ( terrain )
+ {
+ terrain->setMaterialFlag(video::EMF_LIGHTING, false);
+
+ terrain->setMaterialTexture(0,
+ driver->getTexture("../../media/terrain-texture.jpg"));
+ terrain->setMaterialTexture(1,
+ driver->getTexture("../../media/detailmap3.jpg"));
+
+ terrain->setMaterialType(video::EMT_DETAIL_MAP);
+
+ terrain->scaleTexture(1.0f, 20.0f);
+ //terrain->setDebugDataVisible ( true );
+
+ /*
+ To be able to do collision with the terrain, we create a triangle selector.
+ If you want to know what triangle selectors do, just take a look into the
+ collision tutorial. The terrain triangle selector works together with the
+ terrain. To demonstrate this, we create a collision response animator
+ and attach it to the camera, so that the camera will not be able to fly
+ through the terrain.
+ */
+
+ // create triangle selector for the terrain
+ scene::ITriangleSelector* selector
+ = smgr->createTerrainTriangleSelector(terrain, 0);
+ terrain->setTriangleSelector(selector);
+
+ // create collision response animator and attach it to the camera
+ scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
+ selector, camera, core::vector3df(60,100,60),
+ core::vector3df(0,0,0),
+ core::vector3df(0,50,0));
+ selector->drop();
+ camera->addAnimator(anim);
+ anim->drop();
+
+ /* If you need access to the terrain data you can also do this directly via the following code fragment.
+ */
+ scene::CDynamicMeshBuffer* buffer = new scene::CDynamicMeshBuffer(video::EVT_2TCOORDS, video::EIT_16BIT);
+ terrain->getMeshBufferForLOD(*buffer, 0);
+ video::S3DVertex2TCoords* data = (video::S3DVertex2TCoords*)buffer->getVertexBuffer().getData();
+ // Work on data or get the IndexBuffer with a similar call.
+ buffer->drop(); // When done drop the buffer again.
+ }
+
+ /*
+ To make the user be able to switch between normal and wireframe mode,
+ we create an instance of the event receiver from above and let Irrlicht
+ know about it. In addition, we add the skybox which we already used in
+ lots of Irrlicht examples and a skydome, which is shown mutually
+ exclusive with the skybox by pressing 'S'.
+ */
+
+ // create skybox and skydome
+ driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
+
+ scene::ISceneNode* skybox=smgr->addSkyBoxSceneNode(
+ driver->getTexture("../../media/irrlicht2_up.jpg"),
+ driver->getTexture("../../media/irrlicht2_dn.jpg"),
+ driver->getTexture("../../media/irrlicht2_lf.jpg"),
+ driver->getTexture("../../media/irrlicht2_rt.jpg"),
+ driver->getTexture("../../media/irrlicht2_ft.jpg"),
+ driver->getTexture("../../media/irrlicht2_bk.jpg"));
+ scene::ISceneNode* skydome=smgr->addSkyDomeSceneNode(driver->getTexture("../../media/skydome.jpg"),16,8,0.95f,2.0f);
+
+ driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, true);
+
+ // create event receiver
+ EventReceiver_terrain receiver( device, terrain, skybox, skydome);
+ device->setEventReceiver(&receiver);
+
+ return run ( device );
+}
+
+/*
+*/
+int example_helloworld()
+{
+ // create device
+ IrrlichtDevice *device = startup();
+ if (device == 0)
+ return 1; // could not create selected driver.
+
+ IVideoDriver* driver = device->getVideoDriver();
+ ISceneManager* smgr = device->getSceneManager();
+ IGUIEnvironment* guienv = device->getGUIEnvironment();
+
+ IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
+ if (!mesh)
+ {
+ device->drop();
+ return 1;
+ }
+ IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
+
+ /*
+ To let the mesh look a little bit nicer, we change its material. We
+ disable lighting because we do not have a dynamic light in here, and
+ the mesh would be totally black otherwise. Then we set the frame loop,
+ such that the predefined STAND animation is used. And last, we apply a
+ texture to the mesh. Without it the mesh would be drawn using only a
+ color.
+ */
+ if (node)
+ {
+ node->setMaterialFlag(EMF_LIGHTING, false);
+ node->setMD2Animation(scene::EMAT_STAND);
+ node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
+ }
+
+ /*
+ To look at the mesh, we place a camera into 3d space at the position
+ (0, 30, -40). The camera looks from there to (0,5,0), which is
+ approximately the place where our md2 model is.
+ */
+ smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
+
+ EventReceiver_basic receiver(device);
+ device->setEventReceiver(&receiver);
+
+ return run ( device );
+
+}
+
+#if defined (_IRR_USE_WINDOWS_CE_DEVICE_)
+ #pragma comment(linker, "/subsystem:WINDOWSCE /ENTRY:main")
+#elif defined (_IRR_WINDOWS_)
+ #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
+#endif
+
+/*
+*/
+int main()
+{
+ example_helloworld ();
+ example_customscenenode();
+ //example_terrain();
+}
+
+/*
+**/
--
cgit v1.1