123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /*!
- Model Factory.
- create the additional scenenodes for ( bullets, health... )
- Defines the Entities for Quake3
- */
- #ifndef __QUAKE3_FACTORY__H_INCLUDED__
- #define __QUAKE3_FACTORY__H_INCLUDED__
- using namespace irr;
- using namespace scene;
- using namespace gui;
- using namespace video;
- using namespace core;
- using namespace quake3;
- using namespace io;
- //! Defines to which group the entities belong
- enum eItemGroup
- {
- WEAPON,
- AMMO,
- ARMOR,
- HEALTH,
- POWERUP
- };
- //! define a supgroup for the item. for e.q the Weapons
- enum eItemSubGroup
- {
- SUB_NONE = 0,
- GAUNTLET,
- MACHINEGUN,
- SHOTGUN,
- GRENADE_LAUNCHER,
- ROCKET_LAUNCHER,
- LIGHTNING,
- RAILGUN,
- PLASMAGUN,
- BFG,
- GRAPPLING_HOOK,
- NAILGUN,
- PROX_LAUNCHER,
- CHAINGUN,
- };
- //! apply a special effect to the shader
- enum eItemSpecialEffect
- {
- SPECIAL_SFX_NONE = 0,
- SPECIAL_SFX_ROTATE = 1,
- SPECIAL_SFX_BOUNCE = 2,
- SPECIAL_SFX_ROTATE_1 = 4,
- };
- // a list for defining a model
- struct SItemElement
- {
- const c8 *key;
- const c8 *model[2];
- const c8 *sound;
- const c8 *icon;
- const c8 *pickup;
- s32 value;
- eItemGroup group;
- eItemSubGroup sub;
- u32 special;
- };
- //! Get's an entity based on it's key
- const SItemElement * getItemElement ( const stringc& key );
- /*!
- Quake3 Model Factory.
- Takes the mesh buffers and creates scenenodes for their associated shaders
- */
- void Q3ShaderFactory ( Q3LevelLoadParameter &loadParam,
- IrrlichtDevice *device,
- IQ3LevelMesh* mesh,
- eQ3MeshIndex meshIndex,
- ISceneNode *parent,
- IMetaTriangleSelector *meta,
- bool showShaderName
- );
- /*!
- Creates Model based on the entity list
- */
- void Q3ModelFactory ( Q3LevelLoadParameter &loadParam,
- IrrlichtDevice *device,
- IQ3LevelMesh* masterMesh,
- ISceneNode *parent,
- bool showShaderName
- );
- /*!
- so we need a good starting Position in the level.
- we can ask the Quake3 Loader for all entities with class_name "info_player_deathmatch"
- */
- s32 Q3StartPosition ( IQ3LevelMesh* mesh,
- ICameraSceneNode* camera,
- s32 startposIndex,
- const vector3df &translation
- );
- /*!
- gets a accumulated force on a given surface
- */
- vector3df getGravity ( const c8 * surface );
- /*
- Dynamically load the Irrlicht Library
- */
- funcptr_createDevice load_createDevice ( const c8 * filename);
- funcptr_createDeviceEx load_createDeviceEx ( const c8 * filename);
- //! Macro for save Dropping an Element
- #define dropElement(x) if (x) { x->remove(); x = 0; }
- /*
- get the current collision response camera animator
- */
- ISceneNodeAnimatorCollisionResponse* camCollisionResponse( IrrlichtDevice * device );
- //! internal animation
- enum eTimeFireFlag
- {
- FIRED = 1,
- };
- struct TimeFire
- {
- u32 flags;
- u32 next;
- u32 delta;
- };
- void setTimeFire ( TimeFire *t, u32 delta, u32 flags = 0 );
- void checkTimeFire ( TimeFire *t, u32 listSize, u32 now );
- #endif // __QUAKE3_FACTORY__H_INCLUDED__
|