aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/extantz/CDemo.h
blob: 0558a95693024b9fabf1df3fd6323a8e3ac834ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// This is a Demo of the Irrlicht Engine (c) 2006 by N.Gebhardt.
// This file is not documented.

#ifndef __C_DEMO_H_INCLUDED__
#define __C_DEMO_H_INCLUDED__

#ifdef _IRR_WINDOWS_
  #include <windows.h>
#endif

const int CAMERA_COUNT = 7;

class CDemo : public IEventReceiver
{
public:

  CDemo(GLData *gld, bool additive);

  ~CDemo();

  void setup(GLData *gld);
  void preDraw(GLData *gld, u32 now);

  virtual bool OnEvent(const SEvent& event);

private:

  void createLoadingScreen();
  void loadSceneData();
  void switchToNextScene(GLData *gld);
  void shoot();
  void createParticleImpacts();

  bool		 additive;
  IrrlichtDevice *device;

  struct SParticleImpact
  {
    u32		    when;
    core::vector3df pos;
    core::vector3df outVector;
  };

  int currentScene;

  scene::IQ3LevelMesh		  *quakeLevelMesh;
  scene::ISceneNode		  *quakeLevelNode;
  scene::ISceneNode		  *skyboxNode;
  scene::IAnimatedMeshSceneNode	  *model1;
  scene::IAnimatedMeshSceneNode	  *model2;
  scene::IParticleSystemSceneNode *campFire;

  scene::IMetaTriangleSelector *metaSelector;
  scene::ITriangleSelector     *mapSelector;

  s32 sceneStartTime;
  s32 timeForThisScene;

  core::array<SParticleImpact> Impacts;
};

#endif // ifndef __C_DEMO_H_INCLUDED__