blob: 77d548cb68ea2d786224e18b06d663d90f1c1d92 (
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
// 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__
//#define USE_IRRKLANG
//#define USE_SDL_MIXER
#include <irrlicht.h>
#ifdef _IRR_WINDOWS_
#include <windows.h>
#endif
using namespace irr;
// audio support
#ifdef USE_IRRKLANG
#include <irrKlang.h> // problem here? go to http://www.ambiera.com/irrklang and download
// the irrKlang library or undefine USE_IRRKLANG at the beginning
// of this file.
#ifdef _IRR_WINDOWS_
#pragma comment (lib, "irrKlang.lib")
#endif
#endif
#ifdef USE_SDL_MIXER
# include <SDL/SDL.h>
# include <SDL/SDL_mixer.h>
#endif
const int CAMERA_COUNT = 7;
class CDemo : public IEventReceiver
{
public:
CDemo(bool fullscreen, bool music, bool shadows, bool additive, bool vsync, bool aa, video::E_DRIVER_TYPE driver);
~CDemo();
void run();
virtual bool OnEvent(const SEvent& event);
private:
void createLoadingScreen();
void loadSceneData();
void switchToNextScene();
void shoot();
void createParticleImpacts();
bool fullscreen;
bool music;
bool shadows;
bool additive;
bool vsync;
bool aa;
video::E_DRIVER_TYPE driverType;
IrrlichtDevice *device;
#ifdef USE_IRRKLANG
void startIrrKlang();
irrklang::ISoundEngine* irrKlang;
irrklang::ISoundSource* ballSound;
irrklang::ISoundSource* impactSound;
#endif
#ifdef USE_SDL_MIXER
void startSound();
void playSound(Mix_Chunk *);
void pollSound();
Mix_Music *stream;
Mix_Chunk *ballSound;
Mix_Chunk *impactSound;
#endif
struct SParticleImpact
{
u32 when;
core::vector3df pos;
core::vector3df outVector;
};
int currentScene;
video::SColor backColor;
gui::IGUIStaticText* statusText;
gui::IGUIInOutFader* inOutFader;
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
|