aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h')
-rw-r--r--src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h b/src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h
new file mode 100644
index 0000000..d9606ed
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/examples/21.Quake3Explorer/q3factory.h
@@ -0,0 +1,149 @@
1/*!
2 Model Factory.
3 create the additional scenenodes for ( bullets, health... )
4
5 Defines the Entities for Quake3
6*/
7#ifndef __QUAKE3_FACTORY__H_INCLUDED__
8#define __QUAKE3_FACTORY__H_INCLUDED__
9
10using namespace irr;
11using namespace scene;
12using namespace gui;
13using namespace video;
14using namespace core;
15using namespace quake3;
16using namespace io;
17
18
19
20//! Defines to which group the entities belong
21enum eItemGroup
22{
23 WEAPON,
24 AMMO,
25 ARMOR,
26 HEALTH,
27 POWERUP
28};
29
30//! define a supgroup for the item. for e.q the Weapons
31enum eItemSubGroup
32{
33 SUB_NONE = 0,
34 GAUNTLET,
35 MACHINEGUN,
36 SHOTGUN,
37 GRENADE_LAUNCHER,
38 ROCKET_LAUNCHER,
39 LIGHTNING,
40 RAILGUN,
41 PLASMAGUN,
42 BFG,
43 GRAPPLING_HOOK,
44 NAILGUN,
45 PROX_LAUNCHER,
46 CHAINGUN,
47};
48
49//! aplly a special effect to the shader
50enum eItemSpecialEffect
51{
52 SPECIAL_SFX_NONE = 0,
53 SPECIAL_SFX_ROTATE = 1,
54 SPECIAL_SFX_BOUNCE = 2,
55 SPECIAL_SFX_ROTATE_1 = 4,
56};
57
58// a List for defining a model
59struct SItemElement
60{
61 const c8 *key;
62 const c8 *model[2];
63 const c8 *sound;
64 const c8 *icon;
65 const c8 *pickup;
66 s32 value;
67 eItemGroup group;
68 eItemSubGroup sub;
69 u32 special;
70};
71
72
73//! Get's an entity based on it's key
74const SItemElement * getItemElement ( const stringc& key );
75
76/*!
77 Quake3 Model Factory.
78 Takes the mesh buffers and creates scenenodes for their associated shaders
79*/
80void Q3ShaderFactory ( Q3LevelLoadParameter &loadParam,
81 IrrlichtDevice *device,
82 IQ3LevelMesh* mesh,
83 eQ3MeshIndex meshIndex,
84 ISceneNode *parent,
85 IMetaTriangleSelector *meta,
86 bool showShaderName
87 );
88
89
90/*!
91 Creates Model based on the entity list
92*/
93void Q3ModelFactory ( Q3LevelLoadParameter &loadParam,
94 IrrlichtDevice *device,
95 IQ3LevelMesh* masterMesh,
96 ISceneNode *parent,
97 bool showShaderName
98 );
99
100/*!
101 so we need a good starting Position in the level.
102 we can ask the Quake3 Loader for all entities with class_name "info_player_deathmatch"
103*/
104s32 Q3StartPosition ( IQ3LevelMesh* mesh,
105 ICameraSceneNode* camera,
106 s32 startposIndex,
107 const vector3df &translation
108 );
109/*!
110 gets a accumulated force on a given surface
111*/
112vector3df getGravity ( const c8 * surface );
113
114
115/*
116 Dynamically load the Irrlicht Library
117*/
118funcptr_createDevice load_createDevice ( const c8 * filename);
119funcptr_createDeviceEx load_createDeviceEx ( const c8 * filename);
120
121
122//! Macro for save Dropping an Element
123#define dropElement(x) if (x) { x->remove(); x = 0; }
124
125
126/*
127 get the current collision respone camera animator
128*/
129ISceneNodeAnimatorCollisionResponse* camCollisionResponse( IrrlichtDevice * device );
130
131//! internal Animation
132enum eTimeFireFlag
133{
134 FIRED = 1,
135};
136
137struct TimeFire
138{
139 u32 flags;
140 u32 next;
141 u32 delta;
142};
143
144void setTimeFire ( TimeFire *t, u32 delta, u32 flags = 0 );
145void checkTimeFire ( TimeFire *t, u32 listSize, u32 now );
146
147#endif // __QUAKE3_FACTORY__H_INCLUDED__
148
149