Changeset 4885 in orxonox.OLD for orxonox/trunk
- Timestamp:
- Jul 18, 2005, 3:36:18 PM (19 years ago)
- Location:
- orxonox/trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/orxonox.kdevelop
r4662 r4885 5 5 <email>orxonox-dev@mail.datacore.ch</email> 6 6 <version>$VERSION$</version> 7 <projectmanagement>KDev AutoProject</projectmanagement>7 <projectmanagement>KDevCustomProject</projectmanagement> 8 8 <primarylanguage>C++</primarylanguage> 9 9 <ignoreparts/> 10 <projectdirectory>.</projectdirectory>11 <absoluteprojectpath>false</absoluteprojectpath>12 <description/>13 <secondaryLanguages/>14 <versioncontrol/>15 10 </general> 16 <kdevautoproject> 17 <general> 18 <activetarget>src/subprojects/particles/particles</activetarget> 19 <useconfiguration>default</useconfiguration> 20 </general> 11 <kdevcustomproject> 21 12 <run> 22 <mainprogram> src/orxonox</mainprogram>13 <mainprogram>orxonox</mainprogram> 23 14 <directoryradio>executable</directoryradio> 24 <customdirectory>/</customdirectory>25 <programargs/>26 <terminal>false</terminal>27 <autocompile>true</autocompile>28 <envvars/>29 <runarguments>30 <orxonox/>31 </runarguments>32 15 </run> 33 <configurations> 34 <optimized> 35 <builddir>optimized</builddir> 36 <ccompiler>GccOptions</ccompiler> 37 <cxxcompiler>GppOptions</cxxcompiler> 38 <f77compiler>G77Options</f77compiler> 39 <cxxflags>-O2 -g0</cxxflags> 40 </optimized> 41 <debug> 42 <configargs>--enable-debug=full</configargs> 43 <builddir>debug</builddir> 44 <ccompiler>GccOptions</ccompiler> 45 <cxxcompiler>GppOptions</cxxcompiler> 46 <f77compiler>G77Options</f77compiler> 47 <cxxflags>-O0 -g3</cxxflags> 48 <envvars/> 49 </debug> 50 <default> 51 <envvars/> 52 </default> 53 </configurations> 54 <make> 55 <envvars> 56 <envvar value="1" name="WANT_AUTOCONF_2_5" /> 57 <envvar value="1" name="WANT_AUTOMAKE_1_6" /> 58 </envvars> 59 <abortonerror>false</abortonerror> 60 <numberofjobs>3</numberofjobs> 61 <dontact>false</dontact> 62 <makebin>make</makebin> 63 <prio>0</prio> 64 </make> 65 </kdevautoproject> 16 </kdevcustomproject> 66 17 <kdevdebugger> 67 18 <general> 68 <dbgshell>libtool</dbgshell> 69 <programargs/> 70 <gdbpath/> 71 <configGdbScript/> 72 <runShellScript/> 73 <runGdbScript/> 74 <breakonloadinglibs>true</breakonloadinglibs> 75 <separatetty>false</separatetty> 76 <floatingtoolbar>false</floatingtoolbar> 19 <dbgshell/> 77 20 </general> 78 <display>79 <staticmembers>false</staticmembers>80 <demanglenames>true</demanglenames>81 <outputradix>10</outputradix>82 </display>83 21 </kdevdebugger> 84 22 <kdevdoctreeview> … … 142 80 <includeTypes>true</includeTypes> 143 81 <includeEnums>true</includeEnums> 144 <includeTypedefs> true</includeTypedefs>82 <includeTypedefs>false</includeTypedefs> 145 83 <automaticCodeCompletion>true</automaticCodeCompletion> 146 84 <automaticArgumentsHint>true</automaticArgumentsHint> … … 150 88 <headerCompletionDelay>250</headerCompletionDelay> 151 89 </codecompletion> 152 <creategettersetter>153 <prefixGet/>154 <prefixSet>set</prefixSet>155 <prefixVariable>m_,_</prefixVariable>156 <parameterName>theValue</parameterName>157 <inlineGet>true</inlineGet>158 <inlineSet>true</inlineSet>159 </creategettersetter>160 90 </kdevcppsupport> 161 91 <kdevfileview> … … 165 95 </groups> 166 96 <tree> 167 <hidepatterns>*.o,* ~</hidepatterns>97 <hidepatterns>*.o,*.lo,*~,*in</hidepatterns> 168 98 <hidenonprojectfiles>false</hidenonprojectfiles> 169 99 </tree> 170 100 </kdevfileview> 171 <cppsupportpart>172 <filetemplates>173 <interfacesuffix>.h</interfacesuffix>174 <implementationsuffix>.cc</implementationsuffix>175 </filetemplates>176 </cppsupportpart>177 <kdevdocumentation>178 <projectdoc>179 <docsystem/>180 <docurl/>181 <usermanualurl/>182 </projectdoc>183 </kdevdocumentation>184 <ctagspart>185 <customArguments/>186 <customTagfilePath/>187 </ctagspart>188 101 </kdevelop> -
orxonox/trunk/src/defs/debug.h
r4852 r4885 69 69 #define DEBUG_MODULE_LIGHT 0 70 70 #define DEBUG_MODULE_PLAYER 1 71 #define DEBUG_MODULE_WEAPON 071 #define DEBUG_MODULE_WEAPON 4 72 72 #define DEBUG_MODULE_MATH 0 73 73 #define DEBUG_MODULE_FONT 1 -
orxonox/trunk/src/lib/sound/sound_engine.cc
r4836 r4885 91 91 * creates a SoundSource at position sourceNode with the SoundBuffer buffer 92 92 */ 93 SoundSource::SoundSource( SoundBuffer* buffer, PNode* sourceNode)93 SoundSource::SoundSource(const PNode* sourceNode, const SoundBuffer* buffer) 94 94 { 95 95 this->setClassID(CL_SOUND_SOURCE, "SoundSource"); … … 106 106 if ((result = alGetError()) != AL_NO_ERROR) 107 107 SoundEngine::PrintALErrorString(result); 108 alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID()); 108 if (this->buffer != NULL) 109 alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID()); 109 110 alSourcef (this->sourceID, AL_PITCH, 1.0 ); 110 111 alSourcef (this->sourceID, AL_GAIN, 1.0 ); … … 121 122 } 122 123 123 124 124 /** 125 125 * Plays back a SoundSource … … 128 128 { 129 129 alSourcePlay(this->sourceID); 130 } 131 132 /** 133 * Plays back buffer on this Source 134 * @param buffer the buffer to play back on this Source 135 */ 136 void SoundSource::play(const SoundBuffer* buffer) 137 { 138 alSourcei (this->sourceID, AL_BUFFER, buffer->getID()); 139 alSourcePlay(this->sourceID); 140 141 if (unlikely(this->buffer != NULL)) 142 alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID()); 130 143 } 131 144 … … 230 243 SoundSource* SoundEngine::createSource(const char* fileName, PNode* sourceNode) 231 244 { 232 return new SoundSource( (SoundBuffer*)ResourceManager::getInstance()->load(fileName, WAV, RP_LEVEL), sourceNode);245 return new SoundSource(sourceNode, (SoundBuffer*)ResourceManager::getInstance()->load(fileName, WAV, RP_LEVEL)); 233 246 } 234 247 -
orxonox/trunk/src/lib/sound/sound_engine.h
r4836 r4885 27 27 28 28 /** @returns the ID of the buffer used in this SoundBuffer */ 29 inline ALuint getID() { return this->bufferID; }29 inline ALuint getID() const { return this->bufferID; } 30 30 31 31 private: … … 40 40 { 41 41 public: 42 SoundSource( SoundBuffer* buffer, PNode* sourceNode= NULL);42 SoundSource(const PNode* sourceNode = NULL, const SoundBuffer* buffer = NULL); 43 43 ~SoundSource(); 44 44 45 45 // user interaction 46 46 void play(); 47 void play(const SoundBuffer* buffer); 47 48 void stop(); 48 49 void pause(); … … 53 54 inline ALuint getID() const { return this->sourceID; } 54 55 /** @returns the SoundBuffer of this Source */ 55 inline SoundBuffer* getBuffer() const { return this->buffer; }56 inline const SoundBuffer* getBuffer() const { return this->buffer; } 56 57 /** @returns the SourceNode of this Source */ 57 inline PNode* getNode() const { return this->sourceNode;}58 inline const PNode* getNode() const { return this->sourceNode;} 58 59 59 60 void setRolloffFactor(ALfloat rolloffFactor); 60 61 61 62 private: 62 ALuint sourceID; //!< The ID of the Source63 SoundBuffer* buffer; //!< The buffer to play in this source.64 PNode* sourceNode; //!< The SourceNode represente the position/velocity... of this source.63 ALuint sourceID; //!< The ID of the Source 64 const SoundBuffer* buffer; //!< The buffer to play in this source. 65 const PNode* sourceNode; //!< The SourceNode represente the position/velocity... of this source. 65 66 }; 66 67 -
orxonox/trunk/src/orxonox.cc
r4872 r4885 51 51 #include <string.h> 52 52 53 int verbose = 3;53 int verbose = 4; 54 54 55 55 using namespace std; -
orxonox/trunk/src/story_entities/world.cc
r4872 r4885 841 841 while( entity != NULL ) 842 842 { 843 if( entity-> bDraw) entity->draw();843 if( entity->isVisible() ) entity->draw(); 844 844 //entity = this->entities->nextElement(); 845 845 entity = iterator->nextElement(); -
orxonox/trunk/src/util/animation/t_animation.h
r4837 r4885 205 205 this->nextKeyFrame = this->keyFrameList->nextElement(this->currentKeyFrame); 206 206 207 printf("%p from:%f to:%f\n", this->currentKeyFrame,this->currentKeyFrame->value, this->nextKeyFrame->value);207 //printf("%p from:%f to:%f\n", this->currentKeyFrame,this->currentKeyFrame->value, this->nextKeyFrame->value); 208 208 this->setAnimFunc(this->currentKeyFrame->animFunc); 209 209 } -
orxonox/trunk/src/util/loading/factory.h
r4836 r4885 15 15 16 16 /*! 17 \file factory.h18 \brief A loadable object handler17 * @file factory.h 18 * @brief A loadable object handler 19 19 */ 20 20 … … 31 31 32 32 /** 33 Creates a factory to a Loadable Class. 34 this should be used at the beginning of all the Classes that should be loadable (in the cc-file) 35 @todo make factoryName a BaseObject-parameter. (else it would be redundant) 33 * Creates a factory to a Loadable Class. 34 * this should be used at the beginning of all the Classes that should be loadable (in the cc-file) 36 35 */ 37 #define CREATE_FACTORY(CLASS_NAME) tFactory<CLASS_NAME>* global_##CLASS_NAME##_Factory = new tFactory<CLASS_NAME>(#CLASS_NAME) 36 #define CREATE_FACTORY(CLASS_NAME) \ 37 tFactory<CLASS_NAME>* global_##CLASS_NAME##_Factory = new tFactory<CLASS_NAME>(#CLASS_NAME) 38 38 39 39 //! The Factory is a loadable object handler … … 48 48 49 49 static void registerFactory( Factory* factory); 50 /** \briefsets the Next factory in the list @param nextFactory the next factory */50 /** sets the Next factory in the list @param nextFactory the next factory */ 51 51 inline void setNext( Factory* nextFactory) { this->next = nextFactory; }; 52 52 /** @returns the first factory */ … … 54 54 /** @returns the next factory */ 55 55 Factory* getNext() const { return this->next; }; 56 57 58 private:59 56 60 57 private: -
orxonox/trunk/src/util/loading/game_loader.cc
r4838 r4885 19 19 #include "campaign.h" 20 20 #include "world.h" 21 #include "player.h"22 21 #include "orxonox.h" 23 22 #include "camera.h" -
orxonox/trunk/src/util/loading/game_loader.h
r4836 r4885 1 1 /*! 2 \file game_loader.h3 2 * @file game_loader.h 3 * loads campaigns, worlds and all other story_entities 4 4 */ 5 5 … … 18 18 class Campaign; 19 19 class World; 20 class Camera;21 class CammandNode;22 20 class Factory; 23 21 class TiXmlElement; -
orxonox/trunk/src/world_entities/player.cc
r4836 r4885 23 23 24 24 #include "weapon_manager.h" 25 #include "weapon.h"26 25 #include "test_gun.h" 27 26 #include "world.h" 28 27 29 28 #include "list.h" 30 #include "stdincl.h"31 29 32 30 #include "event_handler.h" 33 31 34 #include "projectile.h"35 32 #include "event.h" 36 33 … … 41 38 42 39 /** 43 * 40 * creates a new Player 44 41 * @param isFree if the player is free 45 42 */ 46 43 Player::Player() 47 44 { 48 /*49 this is the debug player - actualy we would have to make a new50 class derivated from Player for each player. for now, we just use51 the player.cc for debug also52 */53 45 this->init(); 54 46 … … 75 67 delete this->weaponMan; 76 68 } 77 78 69 79 70 /** … … 119 110 120 111 /** 121 * 112 * loads the Settings of a Player from an XML-element. 122 113 * @param root the XML-element to load the Player's properties from 123 114 */ … … 132 123 133 124 /** 134 * 125 * adds a weapon to the weapon list of player 135 126 * @param weapon to add 136 127 */ … … 219 210 void Player::tick (float time) 220 211 { 221 //printf("%p\n", this);222 //this->getRelCoor().debug();223 224 /* link tick to weapon */225 //this->activeWeapon->tick(time);226 //this->activeWeaponL->tick(time); //FIX FIX DELETE REMOVE227 this->weaponMan->tick(time);228 212 // player controlled movement 229 213 this->move(time); 214 215 this->weaponMan->tick(time); 230 216 // weapon system manipulation 231 this->weapon ();217 this->weaponAction(); 232 218 } 233 219 … … 255 241 if( this->bRight && TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2) 256 242 accel = accel + (orthDirection*acceleration); 257 if( this->bAscend ) 243 if( this->bAscend ) { /* FIXME */ } 258 244 if( this->bDescend) {/* FIXME */} /* @todo up and down player movement */ 259 245 … … 264 250 265 251 /** 266 * 267 */ 268 void Player::weapon ()252 * weapon manipulation by the player 253 */ 254 void Player::weaponAction() 269 255 { 270 256 if( this->bFire) … … 279 265 } 280 266 281 282 /**283 * The connection to the command node284 * @param cmd the Command unit from witch to map285 286 here the commands are mapped to the players movement/weaponary287 */288 void Player::command (Command* cmd)289 {290 PRINTF(3)("recieved command [%s]\n", cmd->cmd);291 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_UP)) this->bUp = !cmd->bUp;292 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_DOWN)) this->bDown = !cmd->bUp;293 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_LEFT)) this->bLeft = !cmd->bUp;294 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_RIGHT)) this->bRight = !cmd->bUp;295 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_FIRE)) this->bFire = !cmd->bUp;296 if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_NEXT_WEAPON)) if(cmd->bUp) this->bWeaponChange = !this->bWeaponChange;297 }298 299 267 /** 300 268 * @todo switch statement ?? … … 303 271 { 304 272 if( event.type == KeyMapper::PEV_UP) 305 {306 273 this->bUp = event.bPressed; 307 }308 274 else if( event.type == KeyMapper::PEV_DOWN) 309 {310 275 this->bDown = event.bPressed; 311 }312 276 else if( event.type == KeyMapper::PEV_RIGHT) 313 {314 277 this->bRight= event.bPressed; 315 }316 278 else if( event.type == KeyMapper::PEV_LEFT) 317 {318 279 this->bLeft = event.bPressed; 319 }320 280 else if( event.type == KeyMapper::PEV_FIRE1) 321 { 322 this->bFire = event.bPressed; 323 } 281 this->bFire = event.bPressed; 324 282 else if( event.type == KeyMapper::PEV_NEXT_WEAPON) 325 {326 283 if( !event.bPressed) this->bWeaponChange = !this->bWeaponChange; 327 } 328 329 } 284 285 } -
orxonox/trunk/src/world_entities/player.h
r4836 r4885 1 1 /*! 2 \file player.h3 *Implements a basic controllable WorldEntity2 * @file player.h 3 * Implements a basic controllable WorldEntity 4 4 */ 5 5 … … 15 15 class WeaponManager; 16 16 class Vector; 17 class World;18 17 class Event; 19 class Crosshair;20 18 21 19 //! Basic controllable WorldEntity 20 /** 21 * this is the debug player - actualy we would have to make a new 22 class derivated from Player for each player. for now, we just use 23 the player.cc for debug also 24 */ 22 25 class Player : public WorldEntity, public PhysicsInterface, public EventListener 23 26 { … … 43 46 virtual void draw(); 44 47 45 virtual void command(Command* cmd);46 47 48 virtual void process(const Event &event); 48 49 … … 50 51 private: 51 52 void move(float time); 52 void weapon ();53 void weaponAction(); 53 54 54 55 55 56 private: 56 bool bUp;//!< up button pressed.57 bool bDown;//!< down button pressed.58 bool bLeft;//!< left button pressed.59 bool bRight;//!< right button pressed.60 bool bAscend;//!< ascend button pressed.61 bool bDescend;//!< descend button presses.62 bool bFire;//!< fire button pressed.63 bool bWeaponChange;//!< weapon change button pressed57 bool bUp; //!< up button pressed. 58 bool bDown; //!< down button pressed. 59 bool bLeft; //!< left button pressed. 60 bool bRight; //!< right button pressed. 61 bool bAscend; //!< ascend button pressed. 62 bool bDescend; //!< descend button presses. 63 bool bFire; //!< fire button pressed. 64 bool bWeaponChange; //!< weapon change button pressed 64 65 65 tList<Weapon>* weapons;//!< a list of weapon 66 Weapon* activeWeapon; //!< the weapon that is currenty activated 67 Weapon* activeWeaponL; //temporary -- FIX THIS 68 WeaponManager* weaponMan; //!< the weapon manager: managing a list of weapon to wepaon-slot mapping 66 WeaponManager* weaponMan; //!< the weapon manager: managing a list of weapon to wepaon-slot mapping 69 67 70 World* myWorld; //!< reference to the world object 71 72 Vector* velocity; //!< the velocity of the player. 73 float travelSpeed; //!< the current speed of the player (to make soft movement) 74 float acceleration; //!< the acceleration of the player. 75 76 Crosshair* crosshair; //!< the crosshair of the player 68 Vector* velocity; //!< the velocity of the player. 69 float travelSpeed; //!< the current speed of the player (to make soft movement) 70 float acceleration; //!< the acceleration of the player. 77 71 }; 78 72 -
orxonox/trunk/src/world_entities/weapons/test_gun.cc
r4836 r4885 50 50 51 51 this->model = (Model*)ResourceManager::getInstance()->load("models/test_gun.obj", OBJ, RP_CAMPAIGN); 52 this->idleTime = 0.2f;53 52 this->leftRight = leftRight; 54 53 … … 92 91 this->animation3->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 93 92 } 94 93 /* 95 94 this->fireSound = (SoundBuffer*)ResourceManager::getInstance()->load("sound/shot1.wav", WAV); 96 95 this->weaponSource = new SoundSource(this->fireSound, this); 97 this->weaponSource->setRolloffFactor(.1); 96 this->weaponSource->setRolloffFactor(.1);*/ 98 97 Projectile* p = new TestBullet(this); 99 // ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, p); 98 99 // ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, p); 100 100 //ObjectManager::getInstance()->debug(); 101 102 this->setStateDuration(WS_SHOOTING, .2); 103 104 this->energy = 100; 105 this->minCharge = 2; 106 107 this->setActionSound(WA_SHOOT, "sound/shot1.wav"); 101 108 } 102 109 … … 145 152 void TestGun::fire() 146 153 { 147 if( !this->hasWeaponIdleTimeElapsed()) 148 { 149 this->weaponIdle(); 150 return; 151 } 152 153 Projectile* pj = new TestBullet(this);//dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET & CL_MASK_LOWLEVEL_CLASS)); 154 weaponSource->play(); 154 this->energyLoaded -= this->minCharge; 155 Projectile* pj = new TestBullet(this);//dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET & CL_MASK_LOWLEVEL_CLASS)); 156 // weaponSource->play(); 155 157 156 158 pj->setAbsCoor(this->getAbsCoor() + this->projectileOffset); … … 158 160 pj->setVelocity(this->getVelocity()); 159 161 State::getWorldEntityList()->add(pj); 160 this->localTime = 0;161 162 162 163 this->animation1->replay(); … … 184 185 void TestGun::destroy () 185 186 {} 186 187 188 /**189 * tick signal for time dependent/driven stuff190 */191 void TestGun::tick (float time)192 {193 this->localTime += time;194 }195 187 196 188 -
orxonox/trunk/src/world_entities/weapons/test_gun.h
r4836 r4885 34 34 class TestGun : public Weapon 35 35 { 36 friend class World;37 38 36 public: 39 37 TestGun (PNode* parent, const Vector& coordinate, const Quaternion& direction, int leftRight); … … 47 45 virtual void destroy(); 48 46 49 virtual void tick(float time);50 47 virtual void weaponIdle(); 51 48 virtual void draw(); -
orxonox/trunk/src/world_entities/weapons/weapon.cc
r4836 r4885 13 13 main-programmer: Patrick Boenzli 14 14 co-programmer: Benjamin Grauer 15 */ 15 16 2005-07-15: Benjamin Grauer: restructurating the entire Class 17 */ 18 19 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON 16 20 17 21 #include "weapon.h" … … 23 27 #include "list.h" 24 28 #include "state.h" 25 26 /** 27 * standard constructor 28 29 creates a new weapon 29 #include "animation3d.h" 30 #include "sound_engine.h" 31 32 /** 33 * standard constructor 34 * 35 * creates a new weapon 30 36 */ 31 37 Weapon::Weapon (PNode* parent, const Vector& coordinate, const Quaternion& direction) 32 38 { 39 this->init(); 33 40 parent->addChild(this, PNODE_ALL); 34 41 this->setRelCoor(coordinate); … … 36 43 } 37 44 38 39 /** 40 * standard deconstructor 45 /** 46 * standard deconstructor 41 47 */ 42 48 Weapon::~Weapon () 43 49 { 44 // model will be deleted from WorldEntity-destructor 45 //this->worldEntities = NULL; 46 47 /* dont delete objectComponentsX here, they will be killed when the pnodes are cleaned out */ 48 49 /* all animations are deleted via the animation player*/ 50 } 51 52 53 /** 54 * enables the weapon 55 56 a weapon can be enabled/disabled because of various reasons. if a weapon is 57 been enabled, it can interact in a world. elswhere it wont react to any 58 action. 59 */ 60 void Weapon::enable() 61 { 62 this->enabled = true; 63 } 64 65 66 /** 67 * disables the weapon 68 69 a weapon can be enabled/disabled because of various reasons. if a weapon is 70 been enabled, it can interact in a world. elswhere it wont react to any 71 action. 72 */ 73 void Weapon::disable() 74 { 75 this->enabled = false; 76 } 77 78 79 /** 80 * checks if the weapon is enabled 81 * @returns true if enabled 82 83 a weapon can be ebabled/disabled because of various reasons. if a weapon is 84 been enabled, it can interact in a world. elswhere it wont react to any 85 action. 86 */ 87 bool Weapon::isEnabled() 88 { 89 return this->enabled; 90 } 91 92 93 /** 94 * sets a new projectile to the weapon 95 * @param new projectile for this weapon 96 97 weapon an projectile are independent, so you can combine them as you want 98 */ 99 void Weapon::setProjectile(Projectile* projectile) 100 { 101 this->projectile = projectile; 102 } 103 104 105 /** 106 * sets a new projectile to the weapon 107 * @returns the current projectile of this weapon 108 109 weapon an projectile are independent, so you can combine them as you want 110 */ 111 Projectile* Weapon::getProjectile() 112 { 113 return this->projectile; 114 } 115 116 117 /** 118 * this activates the weapon 119 120 This is needed, since there can be more than one weapon on a ship. the 121 activation can be connected with an animation. for example the weapon is 122 been armed out. 50 for (int i = 0; i < WS_STATE_COUNT; i++) 51 if (this->animation[i]) 52 delete this->animation[i]; 53 for (int i = 0; i < WA_ACTION_COUNT; i++) 54 if (this->soundBuffers[i]) 55 ResourceManager::getInstance()->unload(this->soundBuffers[i]); 56 } 57 58 /** 59 * initializes the Weapon with ALL default values 60 */ 61 void Weapon::init() 62 { 63 this->currentState = WS_INACTIVE; 64 this->requestedAction = WA_NONE; 65 this->stateDuration = 0.0; 66 for (int i = 0; i < WS_STATE_COUNT; i++) 67 { 68 this->times[i] = 0.0; 69 this->animation[i] = NULL; 70 } 71 for (int i = 0; i < WA_ACTION_COUNT; i++) 72 this->soundBuffers[i] = NULL; 73 74 this->requestedAction = WA_NONE; 75 this->soundSource = new SoundSource(this); 76 77 this->active = true; 78 this->projectile = NULL; 79 80 this->minCharge = 1.0; 81 this->maxCharge = 1.0; 82 this->energyLoaded = .0; 83 this->energyLoadedMax = 10.0; 84 this->energy = .0; 85 this->energyMax = 100.0; 86 } 87 88 89 void Weapon::setActionSound(WeaponAction action, const char* soundFile) 90 { 91 if (action >= WA_ACTION_COUNT) 92 return; 93 else if (soundFile != NULL) 94 { 95 this->soundBuffers[action] = (SoundBuffer*)ResourceManager::getInstance()->load(soundFile, WAV); 96 if (this->soundBuffers[action] != NULL) 97 { 98 PRINTF(4)("Loaded sound %s to action %s\n", soundFile, actionToChar(action)); 99 } 100 else 101 { 102 PRINTF(4)("failed to load sound %s to %s\n", soundFile, actionToChar(action)); 103 } 104 } 105 else 106 this->soundBuffers[action] = NULL; 107 } 108 109 /** 110 * request an action that should be executed, 111 * @param action the next action to take 112 * 113 * This function must be called instead of the actions (like fire/reload...) 114 * to make all the checks needed to have a usefull WeaponSystem. 115 */ 116 void Weapon::requestAction(WeaponAction action) 117 { 118 if (this->requestedAction != WA_NONE) 119 return; 120 else 121 { 122 printf("next action will be %s in %f seconds\n", actionToChar(action), this->stateDuration); 123 this->requestedAction = action; 124 } 125 } 126 127 bool Weapon::execute() 128 { 129 this->stateDuration = this->times[this->requestedAction] + this->stateDuration; 130 131 PRINTF(4)("trying to execute action %s\n", actionToChar(this->requestedAction)); 132 this->debug(); 133 134 switch (this->requestedAction) 135 { 136 case WA_SHOOT: 137 //if (likely(this->currentState != WS_INACTIVE)) 138 { 139 if (this->minCharge <= this->energyLoaded) 140 { 141 if (this->soundBuffers[WA_SHOOT] != NULL) 142 this->soundSource->play(this->soundBuffers[WA_SHOOT]); 143 this->fire(); 144 this->requestedAction = WA_NONE; 145 } 146 else // reload if we still have the charge 147 { 148 this->requestedAction = WA_NONE; 149 this->requestAction(WA_RELOAD); 150 } 151 } 152 break; 153 case WA_CHARGE: 154 if ( this->currentState != WS_INACTIVE && this->energyLoaded >= this->minCharge) 155 { 156 if (this->soundBuffers[WA_CHARGE] != NULL) 157 this->soundSource->play(this->soundBuffers[WA_CHARGE]); 158 this->charge(); 159 this->requestedAction = WA_NONE; 160 } 161 else // deactivate the Weapon if we do not have enough energy 162 { 163 this->requestedAction = WA_NONE; 164 this->requestAction(WA_RELOAD); 165 } 166 break; 167 case WA_RELOAD: 168 //if (this->currentState != WS_INACTIVE && this->energy + this->energyLoaded >= this->minCharge) 169 { 170 if (this->soundBuffers[WA_RELOAD] != NULL) 171 this->soundSource->play(this->soundBuffers[WA_RELOAD]); 172 173 this->reload(); 174 this->requestedAction = WA_NONE; 175 } 176 break; 177 case WA_DEACTIVATE: 178 if (this->currentState != WS_INACTIVE) 179 { 180 if (this->soundBuffers[WA_DEACTIVATE] != NULL) 181 this->soundSource->play(this->soundBuffers[WA_DEACTIVATE]); 182 183 this->deactivate(); 184 this->requestedAction = WA_NONE; 185 } 186 break; 187 case WA_ACTIVATE: 188 if (this->currentState == WS_INACTIVE) 189 { 190 if (this->soundBuffers[WA_ACTIVATE] != NULL) 191 this->soundSource->play(this->soundBuffers[WA_ACTIVATE]); 192 193 this->activate(); 194 this->requestedAction = WA_NONE; 195 } 196 break; 197 } 198 } 199 200 /** 201 * this activates the weapon 123 202 */ 124 203 void Weapon::activate() 125 {} 126 127 128 /** 129 * this deactivates the weapon 130 131 This is needed, since there can be more than one weapon on a ship. the 132 activation can be connected with an animation. for example the weapon is 133 been armed out. 204 { 205 PRINTF(4)("Activating the Weapon %s\n", this->getName()); 206 207 if (this->soundBuffers[WA_ACTIVATE] != NULL) 208 this->soundSource->play(this->soundBuffers[WA_ACTIVATE]); 209 } 210 211 212 /** 213 * this deactivates the weapon 134 214 */ 135 215 void Weapon::deactivate() 136 {} 137 138 /** 139 * asks if the current weapon is active 140 * @returns true if it the weapon is active 141 */ 142 bool Weapon::isActive() 143 {} 144 145 146 147 148 149 150 /** 151 * is called, when the weapon gets hit (=collide with something) 152 * @param from which entity it is been hit 153 * @param where it is been hit 154 155 this may not be used, since it would make the game relay complicated when one 156 can destroy the weapons of enemies or vice versa. 157 */ 158 void Weapon::hit (WorldEntity* entity, const Vector& position) 159 {} 216 { 217 PRINTF(4)("Deactivating the Weapon %s\n", this->getName()); 218 219 if (this->soundBuffers[WA_DEACTIVATE] != NULL) 220 this->soundSource->play(this->soundBuffers[WA_DEACTIVATE]); 221 } 222 223 void Weapon::fire() 224 { 225 this->energyLoaded -= this->minCharge; 226 227 if (this->soundBuffers[WA_SHOOT] != NULL) 228 this->soundSource->play(this->soundBuffers[WA_SHOOT]); 229 } 230 231 void Weapon::reload() 232 { 233 PRINTF(4)("Reloading Weapon %s\n", this->getName()); 234 if (this->energy + this->energyLoaded < this->minCharge) 235 { 236 this->requestAction(WA_DEACTIVATE); 237 return; 238 } 239 240 float chargeSize = this->energyLoadedMax - this->energyLoaded; //!< The energy to be charged 241 242 if (chargeSize > this->energy) 243 { 244 this->energyLoaded += this->energy; 245 this->energy = 0.0; 246 PRINT(3)("Energy empty"); 247 } 248 else 249 { 250 PRINTF(3)("Loaded %f energy into the Guns Buffer\n", chargeSize); 251 this->energyLoaded += chargeSize; 252 this->energy -= chargeSize; 253 } 254 if (this->soundBuffers[WA_RELOAD] != NULL) 255 this->soundSource->play(this->soundBuffers[WA_RELOAD]); 256 257 } 258 259 void Weapon::charge() 260 { 261 if (this->soundBuffers[WA_CHARGE] != NULL) 262 this->soundSource->play(this->soundBuffers[WA_CHARGE]); 263 264 } 160 265 161 266 162 267 /** 163 268 * is called, when the weapon is destroyed 164 165 166 269 * 270 * this is in conjunction with the hit function, so when a weapon is able to get 271 * hit, it can also be destoryed. 167 272 */ 168 273 void Weapon::destroy () … … 171 276 172 277 /** 173 * tick signal for time dependent/driven stuff 174 */ 175 void Weapon::tick (float time) 176 {} 177 178 179 /** 180 * is called, when there is no fire button pressed 181 */ 182 void Weapon::weaponIdle() 183 {} 184 278 * tick signal for time dependent/driven stuff 279 */ 280 void Weapon::tick(float dt) 281 { 282 // setting up the timing properties 283 this->stateDuration -= dt; 284 285 if (this->isActive()) 286 { 287 if (this->stateDuration <= 0.0 && this->requestedAction != WA_NONE) 288 { 289 this->stateDuration = -dt; 290 this->execute(); 291 } 292 } 293 else 294 if (this->requestedAction == WA_ACTIVATE) 295 this->activate(); 296 297 } 185 298 186 299 /** … … 190 303 {} 191 304 305 306 307 308 309 ////////////////////// 310 // HELPER FUNCTIONS // 311 ////////////////////// 312 // inclass 313 /** 314 * checks if the next Action given is valid 315 * @returns if the Action that comes next is valid 316 * @todo more checks 317 */ 318 bool Weapon::nextActionValid() const 319 { 320 if (this->currentState == WS_INACTIVE) 321 { 322 return (this->requestedAction == WA_ACTIVATE || this->requestedAction == WA_NONE); 323 } 324 else 325 return true; 326 327 } 328 329 330 /** 331 * some nice debugging information about this Weapon 332 */ 333 void Weapon::debug() const 334 { 335 PRINT(3)("Weapon-Debug %s, state: %s, nexAction: %s\n", this->getName(), Weapon::stateToChar(this->currentState), Weapon::actionToChar(requestedAction)); 336 PRINT(3)("Energy: max: %f; current: %f; loadedMax: %f; loadedCurrent: %f; chargeMin: %f, chargeMax %f\n", 337 this->energyMax, this->energy, this->energyLoadedMax, this->energyLoaded, this->minCharge, this->maxCharge); 338 } 339 340 341 // static 342 /** 343 * Converts a String into an Action. 344 * @param action the String input holding the Action. 345 * @return The Action if known, WA_NONE otherwise. 346 */ 347 WeaponAction Weapon::charToAction(const char* action) 348 { 349 if (!strcmp(action, "none")) 350 return WA_NONE; 351 else if (!strcmp(action, "shoot")) 352 return WA_SHOOT; 353 else if (!strcmp(action, "charge")) 354 return WA_CHARGE; 355 else if (!strcmp(action, "reload")) 356 return WA_RELOAD; 357 else if (!strcmp(action, "acitvate")) 358 return WA_ACTIVATE; 359 else if (!strcmp(action, "deactivate")) 360 return WA_DEACTIVATE; 361 else if (!strcmp(action, "special1")) 362 return WA_SPECIAL1; 363 else 364 { 365 PRINTF(2)("action %s could not be identified.\n", action); 366 return WA_NONE; 367 } 368 } 369 370 /** 371 * converts an action into a String 372 * @param action the action to convert 373 * @return a String matching the name of the action 374 */ 375 const char* Weapon::actionToChar(WeaponAction action) 376 { 377 switch (action) 378 { 379 case WA_SHOOT: 380 return "shoot"; 381 break; 382 case WA_CHARGE: 383 return "charge"; 384 break; 385 case WA_RELOAD: 386 return "reload"; 387 break; 388 case WA_ACTIVATE: 389 return "activate"; 390 break; 391 case WA_DEACTIVATE: 392 return "deactivate"; 393 break; 394 case WA_SPECIAL1: 395 return "special1"; 396 break; 397 default: 398 return "none"; 399 break; 400 } 401 } 402 403 /** 404 * Converts a String into a State. 405 * @param state the String input holding the State. 406 * @return The State if known, WS_NONE otherwise. 407 */ 408 WeaponState Weapon::charToState(const char* state) 409 { 410 if (!strcmp(state, "none")) 411 return WS_NONE; 412 else if (!strcmp(state, "shooting")) 413 return WS_SHOOTING; 414 else if (!strcmp(state, "charging")) 415 return WS_CHARGING; 416 else if (!strcmp(state, "reloading")) 417 return WS_RELOADING; 418 else if (!strcmp(state, "activating")) 419 return WS_ACTIVATING; 420 else if (!strcmp(state, "deactivating")) 421 return WS_DEACTIVATING; 422 else if (!strcmp(state, "inactive")) 423 return WS_INACTIVE; 424 else if (!strcmp(state, "idle")) 425 return WS_IDLE; 426 else 427 { 428 PRINTF(2)("state %s could not be identified.\n", state); 429 return WS_NONE; 430 } 431 } 432 433 /** 434 * converts a State into a String 435 * @param state the state to convert 436 * @return a String matching the name of the state 437 */ 438 const char* Weapon::stateToChar(WeaponState state) 439 { 440 switch (state) 441 { 442 case WS_SHOOTING: 443 return "shooting"; 444 break; 445 case WS_CHARGING: 446 return "charging"; 447 break; 448 case WS_RELOADING: 449 return "reloading"; 450 break; 451 case WS_ACTIVATING: 452 return "activating"; 453 break; 454 case WS_DEACTIVATING: 455 return "deactivating"; 456 break; 457 case WS_IDLE: 458 return "idle"; 459 break; 460 default: 461 return "none"; 462 break; 463 } 464 } -
orxonox/trunk/src/world_entities/weapons/weapon.h
r4875 r4885 12 12 weapon in this world: 13 13 o sound file/ressource: this is a pointer to the sound-file/ressource. however it may be represented 14 o shooting animation14 o animations 15 15 */ 16 16 … … 39 39 40 40 WA_ACTION_COUNT = 7 //!< This must match the count of enumerations-members. 41 } WeaponAction s;41 } WeaponAction; 42 42 43 43 //! An enumerator defining the States of a Weapon … … 45 45 WS_NONE = 0, //!< No State at all (if set, there is something wrong, or the weapon is not yet availiable) 46 46 WS_SHOOTING = 1, //!< The State of the Shooting 47 WS_CHARGING = 2, //!< The state of charging th weapon 47 48 WS_RELOADING = 3, //!< The State of the Reloading 48 49 WS_ACTIVATING = 4, //!< The State in which the weapon gets activated … … 68 69 class Weapon : public WorldEntity 69 70 { 70 friend class World; 71 public: 72 // INITIALISATION // 73 Weapon (PNode* parent, const Vector& coordinate, const Quaternion& direction); 74 Weapon(const TiXmlElement* root); 75 virtual ~Weapon (); 71 76 72 public: 73 Weapon (PNode* parent, const Vector& coordinate, const Quaternion& direction); 74 Weapon(const TiXmlElement* root); 75 virtual ~Weapon (); 77 void init(); 78 void loadParams(const TiXmlElement* root); 79 //////////////////// 76 80 77 void init(); 78 void loadParams(const TiXmlElement* root); 81 void requestAction(WeaponAction action); 79 82 80 void enable(); 81 void disable(); 82 bool isEnabled(); 83 /** @returns true if the Weapon is Active */ 84 inline bool isActive() const { return this->active; }; 83 85 84 void setProjectile(Projectile* projectile); 85 Projectile* getProjectile(); 86 // FUNCTIONS TO SET THE WEAPONS PROPERTIES. 87 /** @param projectile a projectile for this weapon */ 88 void setProjectile(Projectile* projectile) { this->projectile = projectile; }; 89 /** @returns The projectile if availiable */ 90 Projectile* getProjectile() { return this->projectile; }; 86 91 87 virtual void activate(); 88 virtual void deactivate(); 89 bool isActive(); 92 /** @param state the State to time @param duration the duration of the State */ 93 inline void setStateDuration(const char* state, float duration) { setStateDuration(charToState(state), duration); }; 94 /** @param state the State to time @param duration the duration of the State */ 95 inline void setStateDuration(WeaponState state, float duration) { /*(state < WS_STATE_COUNT)?*/this->times[state] = duration; }; 96 /** @param state The state to query @returns the Time the queried State takes to complete */ 97 inline float getStateDuration(WeaponState state) const { return (state < WS_STATE_COUNT)?this->times[state]:0.0; }; 98 /** @returns true if the time of the currentState is elapsed, false otherwise */ 99 inline bool stateTimeElapsed() const { return (this->stateDuration > this->times[currentState])?true:false; }; 100 /** @returns the current State of the Weapon */ 101 inline WeaponState getCurrentState() const { return this->currentState; }; 102 /** @param energyMax the maximum energy the Weapon can have @param energyLoadedMax the maximum energy in the weapon buffers */ 103 inline void setMaximumEnergy(float energyMax, float energyLoadedMax = 0.0) { this->energyMax = energyMax; this->energyLoadedMax = energyLoadedMax; }; 104 105 void setActionSound(WeaponAction action, const char* soundFile); 106 /** @see void setActionSound(WeaponAction action, const char* soundFile); */ 107 void setActionSound(const char* action, const char* soundFile) { this->setActionSound(charToAction(action), soundFile); }; 108 109 virtual void destroy(); 90 110 91 111 92 /** @param idle time in ms */ 93 inline void setWeaponIdleTime(float idleTime) { this->idleTime = idleTime; }; 94 /** @returns idle time in ms */ 95 inline float getWeaponIdleTime() const { return this->idleTime; }; 96 /** @return true if idletime is elapsed else otherwise */ 97 inline bool hasWeaponIdleTimeElapsed() const { return (this->localTime > this->idleTime)?true:false; }; 112 // FLOW 113 virtual void tick(float dt); 114 virtual void draw(); 98 115 99 /** fires the weapon */ 100 virtual void fire() = 0; 101 virtual void hit (WorldEntity* weapon, const Vector& loc); 102 virtual void destroy(); 116 void debug() const; 103 117 104 virtual void tick(float time); 105 virtual void weaponIdle(); 106 virtual void draw(); 118 protected: 119 // utility: 120 static WeaponAction charToAction(const char* action); 121 static const char* actionToChar(WeaponAction action); 122 static WeaponState charToState(const char* state); 123 static const char* stateToChar(WeaponState state); 107 124 108 protected: 109 float localTime; //<! this is the local time. important for shooting attributes like frequency 110 float idleTime; //<! the time a weapon needs before it can shoot again. eg. shooting frequency or actication/deactivateion delay 111 float slowDownFactor; //<! if the shooting frequency is a linear function of time... 125 //! ACTION: these functions are handled by the Weapon itself, and must be called by requestAction(WeaponAction); 126 bool execute(); 127 virtual void activate(); 128 virtual void deactivate(); 129 virtual void fire(); 130 virtual void reload(); 131 virtual void charge(); 112 132 113 //////////// 114 // PHASES // 115 //////////// 116 WeaponState currentState; //!< The State the weapon is in. 117 float stateTime; //!< how long the state has teken until now. 118 float times[WS_STATE_COUNT]; //!< Times to stay in the different States @see WeaponState. 119 SoundBuffer* soundBuffers[WA_ACTION_COUNT]; //!< SoundBuffers for all actions @see WeaponAction. 120 Animation3D* animation[WS_STATE_COUNT]; //!< Animations for all the States (you can say yourself on what part of the gun this animation acts). 133 private: 134 bool nextActionValid() const; 121 135 122 SoundBuffer* fireSound; 123 SoundSource* weaponSource; 136 protected: 137 SoundSource* soundSource; 138 // it is all about energy 139 float energy; 140 float energyLoaded; 141 float energyMax; 142 float energyLoadedMax; 143 float minCharge; 144 float maxCharge; 124 145 125 float minCharge; 126 float maxCharge; 146 //////////// 147 // PHASES // 148 //////////// 149 private: 150 WeaponState currentState; //!< The State the weapon is in. 151 WeaponAction requestedAction; //!< An action to try to Engage after the currentState ends. 152 float stateDuration; //!< how long the state has taken until now. 153 float times[WS_STATE_COUNT]; //!< Times to stay in the different States @see WeaponState. 154 Animation3D* animation[WS_STATE_COUNT]; //!< Animations for all the States (you can say yourself on what part of the gun this animation acts). 155 SoundBuffer* soundBuffers[WA_ACTION_COUNT]; //!< SoundBuffers for all actions @see WeaponAction. 127 156 128 private: 129 bool enabled; //<! states if the weapon is enabled or not 130 Projectile* projectile; //<! the projectile used for this weapon 131 //WeaponSound sound; 132 }; 157 158 bool hideInactive; //!< Hides the Weapon if it is inactive 159 160 bool active; //!< states wheter the weapon is enabled or not 161 Projectile* projectile; //!< the projectile used for this weapon 162 }; 133 163 134 164 #endif /* _WEAPON_H */ -
orxonox/trunk/src/world_entities/weapons/weapon_manager.cc
r4849 r4885 201 201 if( w1 != NULL ) 202 202 { 203 w1-> deactivate();203 w1->requestAction(WA_DEACTIVATE); 204 204 printf("deactivating %i,%i\n", j,lastConfID); 205 205 } 206 206 if( w2 != NULL) 207 207 { 208 w2-> activate();208 w2->requestAction(WA_ACTIVATE); 209 209 printf("activating %i,%i\n", j, this->currConfID); 210 210 } … … 223 223 { 224 224 firingWeapon = this->configs[this->currConfID].slots[i]; 225 if( firingWeapon != NULL) firingWeapon-> fire();225 if( firingWeapon != NULL) firingWeapon->requestAction(WA_SHOOT); 226 226 } 227 227 this->crosshair->setRotationSpeed(500); -
orxonox/trunk/src/world_entities/world_entity.cc
r4836 r4885 38 38 this->loadParams(root); 39 39 40 this-> bDraw = true;40 this->setVisibiliy(true); 41 41 } 42 42 … … 62 62 63 63 /** 64 * 64 * loads a Model onto a WorldEntity 65 65 * @param fileName the name of the model to load 66 66 */ … … 79 79 80 80 /** 81 * 81 * sets the character attributes of a worldentity 82 82 * @param character attributes 83 84 83 * 84 * these attributes don't have to be set, only use them, if you need them 85 85 */ 86 86 void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr) … … 89 89 90 90 /** 91 * 91 * gets the Character attributes of this worldentity 92 92 * @returns character attributes 93 93 */ … … 95 95 {} 96 96 97 98 /**99 * set the WorldEntity's collision hull100 * @param newhull: a pointer to a completely assembled CollisionCluster101 102 Any previously assigned collision hull will be deleted on reassignment103 */104 /*105 void WorldEntity::setCollision (CollisionCluster* newhull)106 {107 if( newhull == NULL) return;108 if( collisioncluster != NULL) delete collisioncluster;109 collisioncluster = newhull;110 }111 */112 113 114 /**115 * process draw function116 */117 void WorldEntity::processDraw ()118 {119 120 }121 122 /**123 * sets the drawable state of this entity.124 * @param bDraw TRUE if draweable, FALSE otherwise125 */126 void WorldEntity::setDrawable (bool bDraw)127 {128 this->bDraw = bDraw;129 }130 131 132 97 /** 133 98 * this function is called, when two entities collide 134 99 * @param entity: the world entity with whom it collides 135 136 100 * 101 * Implement behaviour like damage application or other miscellaneous collision stuff in this function 137 102 */ 138 103 void WorldEntity::collideWith(WorldEntity* entity) … … 146 111 * @param weapon: the laser/rocket/shoot that hits. 147 112 * @param loc: place where it is hit 148 149 113 * 114 * calculate the damage depending 150 115 */ 151 116 void WorldEntity::hit(WorldEntity* weapon, Vector* loc) {} … … 154 119 /** 155 120 * this is called immediately after the Entity has been constructed and initialized 156 157 158 121 * 122 * Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here. 123 * DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted. 159 124 */ 160 125 void WorldEntity::postSpawn () … … 165 130 /** 166 131 * this method is called by the world if the WorldEntity leaves valid gamespace 167 168 169 132 * 133 * For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a 134 * place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy). 170 135 */ 171 136 void WorldEntity::leftWorld () … … 177 142 * this method is called every frame 178 143 * @param time: the time in seconds that has passed since the last tick 179 180 144 * 145 * Handle all stuff that should update with time inside this method (movement, animation, etc.) 181 146 */ 182 147 void WorldEntity::tick(float time) … … 184 149 } 185 150 186 187 151 /** 188 152 * the entity is drawn onto the screen with this function 189 190 This is a central function of an entity: call it to let the entity painted to the screen. Just override this function with whatever you want to be drawn. 153 * 154 * This is a central function of an entity: call it to let the entity painted to the screen. 155 * Just override this function with whatever you want to be drawn. 191 156 */ 192 157 void WorldEntity::draw() … … 228 193 glPopMatrix(); 229 194 } 230 231 /**232 * this handles incoming command messages233 * @param cmd: a pointer to the incoming Command structure234 235 Put all code that handles Command messages here, this will mainly be called by the assigned CommandNode but can also be used236 to send commands from one WorldEntity to another.237 */238 void WorldEntity::command (Command* cmd)239 {240 } -
orxonox/trunk/src/world_entities/world_entity.h
r4836 r4885 1 1 /*! 2 \file world_entity.h3 *Definition of the basic WorldEntity2 * @file world_entity.h 3 * Definition of the basic WorldEntity 4 4 */ 5 5 … … 8 8 9 9 #include "p_node.h" 10 #include "comincl.h"11 10 #include "resource_manager.h" 12 11 #include "factory.h" … … 16 15 17 16 18 17 // FORWARD DECLARATION 19 18 class CharacterAttributes; 20 19 class SoundEngine; … … 23 22 24 23 25 //! Basi c class from whichall interactive stuff in the world is derived from24 //! Basis-class all interactive stuff in the world is derived from 26 25 class WorldEntity : public PNode 27 26 { 28 friend class World;29 30 27 public: 31 28 WorldEntity(const TiXmlElement* root = NULL); … … 35 32 void loadModel(const char* fileName); 36 33 37 //void setCollision (CollisionCluster* newhull);38 34 39 35 //void addAbility(Ability* ability); 40 36 //void removeAbility(Ability* ability); 41 void setDrawable (bool bDraw); 37 38 /** @param visibility if the Entity should be visible (been draw) */ 39 void setVisibiliy (bool visibility) { this->bVisible = visibility; }; 40 /** @returns true if the entity is visible, false otherwise */ 41 bool isVisible() const { return this->bVisible; }; 42 42 void setCharacterAttributes(CharacterAttributes* charAttr); 43 43 CharacterAttributes* getCharacterAttributes(); … … 48 48 virtual void hit (WorldEntity* weapon, Vector* loc); 49 49 virtual void collideWith (WorldEntity* entity); 50 virtual void command (Command* cmd);51 50 52 51 /** @returns the Count of Faces on this WorldEntity */ 53 52 virtual unsigned int getFaceCount () const { if (this->model) return this->model->getFaceCount(); else return 0; }; 54 53 55 v oid processDraw ();54 virtual void tick (float time); 56 55 virtual void draw (); 57 56 void drawBVTree(int depth, int drawMode); 58 virtual void tick (float time);59 57 60 58 protected: 61 Model* model;//!< The model that should be loaded for this entity.62 CharacterAttributes* charAttr;//!< the character attributes of a world_entity63 BVTree* obbTree;//!< this is the obb tree reference needed for collision detection59 Model* model; //!< The model that should be loaded for this entity. 60 CharacterAttributes* charAttr; //!< the character attributes of a world_entity 61 BVTree* obbTree; //!< this is the obb tree reference needed for collision detection 64 62 65 63 private: 66 bool bCollide; //!< If it should be considered for the collisiontest. 67 bool bDraw; //!< If it should be visible. 68 69 70 71 //CollisionCluster* collisioncluster; //!< The collision-Cluster of this entity. 64 bool bCollide; //!< If it should be considered for the collisiontest. 65 bool bVisible; //!< If it should be visible. 72 66 }; 73 67
Note: See TracChangeset
for help on using the changeset viewer.