fork download
  1. #include <irrlicht.h>
  2. #include <SPK.h>
  3. #include <SPK_IRR.h>
  4.  
  5. using namespace std;
  6. using namespace irr;
  7. using namespace SPK;
  8. using namespace SPK::IRR;
  9.  
  10. float angleY = 10.0f;
  11. float angleX = -45.0f;
  12. float camPosZ = 5.0f;
  13.  
  14. int deltaTime = 0;
  15.  
  16. const float PI = 3.14159265358979323846f;
  17.  
  18. const string STR_NB_PARTICLES = "NB PARTICLES : ";
  19. const string STR_FPS = "FPS : ";
  20.  
  21. string strNbParticles = STR_NB_PARTICLES;
  22. string strFps = STR_FPS;
  23.  
  24. System* particleSystem = NULL;
  25.  
  26. IrrlichtDevice* device = NULL;
  27. scene::ICameraSceneNode* cam = NULL;
  28.  
  29. bool smokeEnabled = true;
  30.  
  31. class MyEventReceiver : public IEventReceiver
  32. {
  33. public:
  34. MyEventReceiver() :
  35. IEventReceiver(),
  36. init(false)
  37. {}
  38.  
  39. virtual bool OnEvent(const SEvent& event)
  40. {
  41. if(event.EventType==EET_KEY_INPUT_EVENT)
  42. {
  43. if(event.KeyInput.Key == KEY_ESCAPE && event.KeyInput.PressedDown==false)
  44. {
  45. device->closeDevice();
  46. }
  47. }
  48. else if(event.EventType == EET_MOUSE_INPUT_EVENT)
  49. {
  50. if (init)
  51. {
  52. angleX += (oldMouseX - event.MouseInput.X)*0.1f;
  53. angleY += (oldMouseY - event.MouseInput.Y)*0.1f;
  54.  
  55. if(angleY < 1.0f) angleY=1.0f;
  56. if(angleY > 70.0f) angleY=70.0f;
  57. camPosZ -= event.MouseInput.Wheel;
  58. if(camPosZ < 3.0f) camPosZ=3.0f;
  59. if(camPosZ > 18.0f) camPosZ=18.0f;
  60.  
  61. cam->setPosition(core::vector3df(camPosZ*sinf(angleX*core::DEGTORAD)*sinf((90.0f-angleY)*core::DEGTORAD),
  62. camPosZ*cosf((90.0f-angleY)*core::DEGTORAD),camPosZ*cosf(angleX*core::DEGTORAD)*sinf((90.0f-angleY)*core::DEGTORAD)));
  63. cam->setTarget(core::vector3df(0.f, 0.f, 0.f));
  64. }
  65.  
  66. init = true;
  67. oldMouseX=event.MouseInput.X;
  68. oldMouseY=event.MouseInput.Y;
  69.  
  70. return true;
  71. }
  72. return false;
  73. }
  74.  
  75. int oldMouseX,oldMouseY;
  76.  
  77. private :
  78.  
  79. bool init;
  80. };
  81.  
  82. int main(int argc, char *argv[])
  83. {
  84. // IRRLICH ///////////////////////////////////////
  85.  
  86. video::E_DRIVER_TYPE chosenDriver = video::EDT_OPENGL;
  87. MyEventReceiver* evtrcv = new MyEventReceiver;
  88. device = createDevice(chosenDriver,
  89. core::dimension2d<u32>(640,480),
  90. 32,
  91. false,
  92. false,
  93. false,
  94. evtrcv);
  95.  
  96. video::IVideoDriver* driver = device->getVideoDriver();
  97. scene::ISceneManager* smgr = device->getSceneManager();
  98. gui::IGUIEnvironment* guienv = device->getGUIEnvironment();
  99.  
  100. device->setWindowCaption(L"SPARK Fire Demo using Irrlicht");
  101. device->getCursorControl()->setVisible(false);
  102. cam = smgr->addCameraSceneNode(0,core::vector3df(camPosZ*sinf(angleX*core::DEGTORAD)*sinf((90.0f-angleY)*core::DEGTORAD),
  103. camPosZ*cosf((90.0f-angleY)*core::DEGTORAD),camPosZ*cosf(angleX*core::DEGTORAD)*sinf((90.0f-angleY)*core::DEGTORAD)),
  104. core::vector3df());
  105. cam->setNearValue(0.05f);
  106.  
  107. scene::IMesh* sceneryMesh = smgr->getMesh("res/SceneFireCamp.obj");
  108. scene::ISceneNode* sceneryNode = smgr->addMeshSceneNode(sceneryMesh);
  109. sceneryNode->setPosition(core::vector3df(0.0f,-1.5f,0.0f));
  110. sceneryNode->setScale(core::vector3df(0.01f,0.01f,0.01f));
  111.  
  112. smgr->setAmbientLight(video::SColorf(0.15f,0.15f,0.25f));
  113.  
  114. scene::ILightSceneNode* lightNode = smgr->addLightSceneNode();
  115. lightNode->setLightType(video::ELT_SPOT);
  116. video::SLight& lightData = lightNode->getLightData();
  117. lightData.AmbientColor = video::SColorf(0.0f,0.0f,0.0f);
  118. lightData.DiffuseColor = video::SColorf(1.0f,0.75f,0.25f);
  119. lightData.InnerCone = 180.0f;
  120. lightData.OuterCone = 180.0f;
  121. lightData.Attenuation.X = 0.f;
  122. lightData.Attenuation.Y = 0.0f;
  123. lightData.Attenuation.Z = 20.f;
  124.  
  125. randomSeed = device->getTimer()->getRealTime();
  126.  
  127. System::setClampStep(true, 0.1f);
  128. System::useAdaptiveStep(0.001f, 0.01f);
  129.  
  130. // smoke renderer
  131. IRRQuadRenderer* smokeRenderer = IRRQuadRenderer::create(device);
  132. smokeRenderer->setTexturingMode(TEXTURE_2D);
  133. smokeRenderer->setTexture(driver->getTexture("res\\explosion.png"));
  134. smokeRenderer->setAtlasDimensions(2,2); // uses 4 different patterns in the texture
  135. smokeRenderer->setBlending(BLENDING_ALPHA);
  136. smokeRenderer->enableRenderingHint(DEPTH_WRITE,false);
  137. smokeRenderer->setShared(true);
  138.  
  139. ////////////
  140. // Models //
  141. ////////////
  142.  
  143. Interpolator* interpolator = NULL;
  144.  
  145. // smoke model
  146. Model* smokeModel = Model::create(FLAG_RED | FLAG_GREEN | FLAG_BLUE | FLAG_ALPHA | FLAG_SIZE | FLAG_ANGLE | FLAG_TEXTURE_INDEX,
  147. FLAG_SIZE | FLAG_ANGLE,
  148. FLAG_SIZE | FLAG_ANGLE | FLAG_TEXTURE_INDEX,
  149. FLAG_ALPHA);
  150. smokeModel->setParam(PARAM_RED,0.2f);
  151. smokeModel->setParam(PARAM_GREEN,0.2f);
  152. smokeModel->setParam(PARAM_BLUE,0.2f);
  153. smokeModel->setParam(PARAM_SIZE,0.6f,0.8f,1.0f,1.4f);
  154. smokeModel->setParam(PARAM_TEXTURE_INDEX,0.0f,4.0f);
  155. smokeModel->setParam(PARAM_ANGLE,0.0f,PI * 0.5f,0.0f,PI * 0.5f);
  156. smokeModel->setLifeTime(0.5f, 1.f);
  157. smokeModel->setShared(true);
  158.  
  159. interpolator = smokeModel->getInterpolator(PARAM_ALPHA);
  160. interpolator->addEntry(0.0f,0.0f);
  161. interpolator->addEntry(0.4f,0.4f,0.6f);
  162. interpolator->addEntry(0.6f,0.4f,0.6f);
  163. interpolator->addEntry(1.0f,0.0f);
  164.  
  165. //////////////
  166. // Emitters //
  167. //////////////
  168.  
  169. // smoke emitter
  170. RandomEmitter* smokeEmitter = RandomEmitter::create();
  171. smokeEmitter->setZone(AABox::create(Vector3D(0.0f,0.0f,0.0f), Vector3D(2.f, 2.f, 0.2f)));
  172. smokeEmitter->setFlow(350);
  173. smokeEmitter->setForce(0.01f,0.02f);
  174.  
  175. ////////////
  176. // Groups //
  177. ////////////
  178.  
  179. // smoke group
  180. Group* smokeGroup = Group::create(smokeModel, 350);
  181. smokeGroup->addEmitter(smokeEmitter);
  182. smokeGroup->setRenderer(smokeRenderer);
  183. smokeGroup->setGravity(Vector3D(0.0f,0.05f,0.0f));
  184.  
  185. //////////////////////////////////////////////////////////////////////////////////////////////// HERE
  186. ///
  187. //smokeGroup->setTransformOrientationLH(Vector3D(0.f, 1.f, 0.f), Vector3D(0.f, 0.f, 1.f));
  188. //smokeGroup->setTransformOrientationLH(Vector3D(1.f, 0.f, 0.f), Vector3D(0.f, 1.f, 0.f));
  189. //smokeGroup->setTransformOrientationLH(Vector3D(0.f, 0.f, 1.f), Vector3D(1.f, 0.f, 0.f));
  190. smokeGroup->setTransformOrientation(Vector3D(1.f, 0.f, 0.f), 1.5f);
  191. ////////////////////////////////////////////////////////////////////////////////////////////////
  192.  
  193. particleSystem = IRRSystem::create(smgr->getRootSceneNode(),smgr);
  194. particleSystem->addGroup(smokeGroup);
  195.  
  196. while(device->run())
  197. {
  198. driver->beginScene(true, true, video::SColor(0,0,0,0));
  199. smgr->drawAll();
  200. driver->endScene();
  201.  
  202. // clip mouse
  203. if(device->getCursorControl()->getPosition().X < 20)
  204. {
  205. device->getCursorControl()->setPosition(620,device->getCursorControl()->getPosition().Y);
  206. evtrcv->oldMouseX = 620;
  207. }
  208. if(device->getCursorControl()->getPosition().X > 620)
  209. {
  210. device->getCursorControl()->setPosition(20,device->getCursorControl()->getPosition().Y);
  211. evtrcv->oldMouseX = 20;
  212. }
  213. if(device->getCursorControl()->getPosition().Y < 20)
  214. {
  215. device->getCursorControl()->setPosition(device->getCursorControl()->getPosition().X,460);
  216. evtrcv->oldMouseY = 460;
  217. }
  218. if(device->getCursorControl()->getPosition().Y > 460)
  219. {
  220. device->getCursorControl()->setPosition(device->getCursorControl()->getPosition().X,20);
  221. evtrcv->oldMouseY = 20;
  222. }
  223. }
  224. SPKFactory::getInstance().destroyAll();
  225. device->drop();
  226. }
  227.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:22: fatal error: irrlicht.h: No such file or directory
 #include <irrlicht.h>
                      ^
compilation terminated.
stdout
Standard output is empty