Changeset 9939 for code/trunk/src/orxonox
- Timestamp:
- Dec 21, 2013, 11:16:54 PM (11 years ago)
- Location:
- code/trunk
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/orxonox/MoodManager.h
r9667 r9939 51 51 52 52 private: 53 virtual voidmoodChanged(const std::string& mood) = 0;53 virtual bool moodChanged(const std::string& mood) = 0; 54 54 55 55 static void changedMood(const std::string& mood); -
code/trunk/src/orxonox/controllers/NewHumanController.cc
r9667 r9939 443 443 444 444 if (pawn) 445 pawn->setAimPosition( mouseRay.getOrigin() + mouseRay.getDirection() * 1200 );445 pawn->setAimPosition( mouseRay.getOrigin() + mouseRay.getDirection() * 3000 ); 446 446 447 447 if( this->getControllableEntity() && this->getControllableEntity()->getTarget() != 0 ) -
code/trunk/src/orxonox/gamestates/GSMainMenu.cc
r9667 r9939 85 85 { 86 86 if (GameMode::playsSound()) 87 this->ambient_->destroy(); 87 this->ambient_->destroy(); //CHECK Thilo destroy ?preDestroy()? !!!!!!! 88 88 89 89 InputManager::getInstance().destroyState("MainMenuHackery"); -
code/trunk/src/orxonox/gametypes/Gametype.cc
r9667 r9939 171 171 entity->setOrientation(oldentity->getWorldOrientation()); 172 172 } 173 174 173 it->first->startControl(entity); 175 174 } -
code/trunk/src/orxonox/graphics/ParticleEmitter.cc
r9667 r9939 45 45 RegisterClass(ParticleEmitter); 46 46 47 ParticleEmitter::ParticleEmitter(Context* context) : StaticEntity(context)47 ParticleEmitter::ParticleEmitter(Context* context) : MovableEntity(context) 48 48 { 49 49 RegisterObject(ParticleEmitter); -
code/trunk/src/orxonox/graphics/ParticleEmitter.h
r9667 r9939 33 33 34 34 #include <string> 35 #include "worldentities/ StaticEntity.h"35 #include "worldentities/MovableEntity.h" 36 36 37 37 namespace orxonox 38 38 { 39 class _OrxonoxExport ParticleEmitter : public StaticEntity39 class _OrxonoxExport ParticleEmitter : public MovableEntity 40 40 { 41 41 public: -
code/trunk/src/orxonox/infos/PlayerInfo.cc
r9667 r9939 229 229 return; 230 230 231 this->controllableEntity_->getController()->setActive(false); 231 Controller* tmp =this->controllableEntity_->getController(); 232 if (tmp == NULL) 233 { 234 orxout(verbose) << "PlayerInfo: pauseControl, Controller is NULL " << endl; 235 return; 236 } 237 tmp->setActive(false); 232 238 //this->controllableEntity_->getController()->setControllableEntity(NULL); 233 239 this->controllableEntity_->setController(0); -
code/trunk/src/orxonox/interfaces/RadarViewable.h
r9667 r9939 63 63 virtual void setRadarName(const std::string& name) 64 64 { 65 // The following if-clause hides objects with radarname "HIDDEN" 66 if (name == "HIDDEN") 67 { 68 this->bVisibility_ = 0; 69 this->settingsChanged(); 70 } 65 71 if (this->radarName_ != name) 66 72 { -
code/trunk/src/orxonox/items/MultiStateEngine.cc
r9667 r9939 61 61 this->defEngineSndNormal_->setLooping(true); 62 62 this->defEngineSndBoost_->setLooping(true); 63 this->defEngineSndNormal_->setVolume(0.8f); 64 this->defEngineSndBoost_->setVolume(0.5f); 63 65 this->lua_ = new LuaState(); 64 66 } -
code/trunk/src/orxonox/sound/AmbientSound.cc
r8861 r9939 79 79 } 80 80 81 voidAmbientSound::setAmbientSource(const std::string& source)81 bool AmbientSound::setAmbientSource(const std::string& source) 82 82 { 83 83 this->ambientSource_ = source; 84 this->moodChanged(MoodManager::getInstance().getMood());84 return(this->moodChanged(MoodManager::getInstance().getMood())); 85 85 } 86 86 87 voidAmbientSound::moodChanged(const std::string& mood)87 bool AmbientSound::moodChanged(const std::string& mood) 88 88 { 89 89 if (GameMode::playsSound()) … … 95 95 orxout(user_info) << "Loading ambient sound " << path << "..." << endl; // TODO: make this output internal if we implement sound streaming 96 96 this->setSource(path); 97 98 // all went fine 99 return true; 97 100 } 98 101 else 99 102 { 100 103 orxout(internal_warning, context::sound) << this->ambientSource_ << ": Not a valid name! Ambient sound will not change." << endl; 104 105 // everything went southways 106 return false; 101 107 } 102 108 } 109 return false; 103 110 } 104 111 -
code/trunk/src/orxonox/sound/AmbientSound.h
r7856 r9939 54 54 void pause(); 55 55 56 voidsetAmbientSource(const std::string& source);56 bool setAmbientSource(const std::string& source); 57 57 inline const std::string& getAmbientSource() const 58 58 { return this->ambientSource_; } … … 68 68 void preDestroy(); 69 69 float getRealVolume(); 70 voidmoodChanged(const std::string& mood);70 bool moodChanged(const std::string& mood); 71 71 inline void ambientSourceChanged() 72 72 { this->setAmbientSource(this->ambientSource_); } -
code/trunk/src/orxonox/sound/BaseSound.cc
r9667 r9939 47 47 BaseSound::BaseSound() 48 48 : bPooling_(false) 49 , volume_( 1.0)49 , volume_(0.7) 50 50 , bLooping_(false) 51 51 , state_(Stopped) -
code/trunk/src/orxonox/sound/SoundManager.cc
r9667 r9939 218 218 .description("Defines the overall volume.") 219 219 .callback(this, &SoundManager::checkSoundVolumeValidity); 220 SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 1.0f)220 SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 0.7f) 221 221 .description("Defines the ambient volume.") 222 222 .callback(this, &SoundManager::checkAmbientVolumeValidity); -
code/trunk/src/orxonox/sound/WorldAmbientSound.cc
r9667 r9939 33 33 #include "core/XMLPort.h" 34 34 #include "AmbientSound.h" 35 #include "core/command/ConsoleCommand.h" 36 #include <exception> 37 35 38 36 39 namespace orxonox 37 40 { 41 SetConsoleCommand("WorldAmbientSound", "nextsong", &WorldAmbientSound::nextSong); 42 38 43 RegisterClass(WorldAmbientSound); 39 44 … … 44 49 this->ambientSound_ = new AmbientSound(); 45 50 this->registerVariables(); 51 soundList_.push_back("Earth.ogg"); 52 soundList_.push_back("Jupiter.ogg"); 53 soundList_.push_back("Mars.ogg"); 54 soundList_.push_back("allgorythm-lift_up.ogg"); 55 soundList_.push_back("allgorythm-resonance_blaster.ogg"); 56 soundList_.push_back("AlphaCentauri.ogg"); 57 soundList_.push_back("Asteroid_rocks.ogg"); 58 soundList_.push_back("Ganymede.ogg"); 59 soundList_.push_back("luke_grey_-_hypermode.ogg"); 60 46 61 } 47 48 62 WorldAmbientSound::~WorldAmbientSound() 49 63 { … … 51 65 { 52 66 this->ambientSound_->destroy(); 67 WorldAmbientSound::soundList_.clear(); 53 68 } 54 69 } … … 94 109 this->ambientSound_->stop(); 95 110 } 111 112 void WorldAmbientSound::nextSong() 113 { 114 115 //HACK: Assuption - there is only one WorldAmbientSound in a level and only one level is used. 116 for (ObjectList<WorldAmbientSound>::iterator it = ObjectList<WorldAmbientSound>::begin(); 117 it != ObjectList<WorldAmbientSound>::end(); ++it) 118 { 119 while(it->ambientSound_->setAmbientSource(WorldAmbientSound::soundList_[WorldAmbientSound::soundNumber_]) == false){ 120 WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size(); 121 } 122 WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size(); 123 } 124 } 96 125 } -
code/trunk/src/orxonox/sound/WorldAmbientSound.h
r9667 r9939 34 34 #include "core/BaseObject.h" 35 35 #include "network/synchronisable/Synchronisable.h" 36 #include <string> 37 #include <vector> 38 36 39 37 40 namespace orxonox … … 54 57 void play(); 55 58 59 //This function changes the current ambient song. 60 //You can call nextSong() active in the level 61 //by pressing the key 'M'. 62 static void nextSong(); 63 56 64 private: 57 65 void registerVariables(); 58 66 67 //Vector with the diffrent available level sounds. 68 //The sound names are pushed in the WorldAmbientSound-constructor. 69 static std::vector<std::string> soundList_; 70 71 // This value will be initialized below, don't make this into 72 // a const, since we want to change it in nextSong(). 73 static int soundNumber_; 74 75 59 76 AmbientSound* ambientSound_; 60 77 }; 78 79 // This is an initialization for the soundnumber variable. Since it is 80 // static, we have to initialize it this way. 81 int WorldAmbientSound::soundNumber_ = 0; 82 std::vector<std::string> WorldAmbientSound::soundList_; 83 61 84 } 62 85 -
code/trunk/src/orxonox/sound/WorldSound.cc
r9667 r9939 81 81 alSourcef(this->audioSource_, AL_REFERENCE_DISTANCE, refDist); 82 82 // TODO: 500 is very magical here. Derive something better 83 alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 500);83 alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 20); 84 84 } 85 85 this->tick(0); // update position, orientation and velocity -
code/trunk/src/orxonox/weaponsystem/WeaponMode.cc
r9667 r9939 79 79 this->defSndWpnFire_ = new WorldSound(this->getContext()); 80 80 this->defSndWpnFire_->setLooping(false); 81 this->defSndWpnFire_->setVolume(0.8f); 81 82 this->bSoundAttached_ = false; 82 83 } -
code/trunk/src/orxonox/worldentities/BigExplosion.cc
r9667 r9939 43 43 RegisterClass(BigExplosion); 44 44 45 BigExplosion::BigExplosion(Context* context) : StaticEntity(context)45 BigExplosion::BigExplosion(Context* context) : MobileEntity(context) 46 46 { 47 47 RegisterObject(BigExplosion); 48 49 if ( GameMode::showsGraphics() && ( !this->getScene() || !this->getScene()->getSceneManager() ) ) 50 ThrowException(AbortLoading, "Can't create BigExplosion, no scene or no scene manager given."); 51 52 this->bStop_ = false; 53 this->LOD_ = LODParticle::Normal; 54 55 if ( GameMode::showsGraphics() ) 56 { 57 try 58 { 59 this->init(); 60 } 61 catch (const std::exception& ex) 62 { 63 orxout(internal_error) << "Couldn't load particle effect in BigExplosion: " << ex.what() << endl; 64 this->initZero(); 65 } 66 } 67 else 68 { 69 this->initZero(); 70 } 71 72 if (GameMode::isMaster()) 73 { 74 this->destroyTimer_.setTimer(rnd(2, 4), false, createExecutor(createFunctor(&BigExplosion::stop, this))); 75 } 76 77 this->registerVariables(); 78 } 79 80 BigExplosion::BigExplosion(Context* context, Vector3 initVelocity) : MobileEntity(context) 81 { 82 RegisterObject(BigExplosion); 83 this->setVelocity(initVelocity); 48 84 49 85 if ( GameMode::showsGraphics() && ( !this->getScene() || !this->getScene()->getSceneManager() ) ) … … 100 136 this->debris4_->setSyncMode(0); 101 137 102 this->explosion_ = new StaticEntity(this->getContext());138 this->explosion_ = new MobileEntity(this->getContext()); 103 139 this->explosion_->setSyncMode(0); 104 140 … … 148 184 this->debrisEntity4_->attach(debris4_); 149 185 186 // /////////////////////// 187 // TODO: particleSpawner is a static entity. It should probably be dynamic, for better explosions. 188 // 150 189 ParticleSpawner* effect = new ParticleSpawner(this->getContext()); 190 orxout() << "vel " << this->getVelocity() << endl; 191 // effect->setVelocity(this->getVelocity()); 151 192 effect->setDestroyAfterLife(true); 152 193 effect->setSource("Orxonox/explosion2b"); … … 155 196 156 197 ParticleSpawner* effect2 = new ParticleSpawner(this->getContext()); 198 // effect2->setVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1))*rnd(10, 200)); 157 199 effect2->setDestroyAfterLife(true); 158 200 effect2->setSource("Orxonox/smoke6"); -
code/trunk/src/orxonox/worldentities/BigExplosion.h
r9667 r9939 22 22 * Author: 23 23 * Benjamin de Capitani 24 * Co-authors: 24 * Co-authors:§ 25 25 * ... 26 26 * … … 33 33 34 34 #include "tools/Timer.h" 35 #include " StaticEntity.h"35 #include "MobileEntity.h" 36 36 37 37 namespace orxonox 38 38 { 39 class _OrxonoxExport BigExplosion : public StaticEntity39 class _OrxonoxExport BigExplosion : public MobileEntity 40 40 { 41 41 public: 42 42 BigExplosion(Context* context); 43 BigExplosion(Context* context, Vector3 initVelocity); 43 44 virtual ~BigExplosion(); 44 45 … … 60 61 bool bStop_; 61 62 62 StaticEntity* explosion_;63 MobileEntity* explosion_; 63 64 64 65 MovableEntity* debrisEntity1_; -
code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
r9667 r9939 46 46 #include "weaponsystem/WeaponPack.h" 47 47 #include "weaponsystem/WeaponSet.h" 48 #include "sound/WorldSound.h" 48 49 49 50 #include "controllers/FormationController.h" … … 100 101 101 102 this->setSyncMode(ObjectDirection::Bidirectional); // needed to synchronise e.g. aimposition 103 104 if (GameMode::isMaster()) 105 { 106 this->explosionSound_ = new WorldSound(this->getContext()); 107 this->explosionSound_->setVolume(1.0f); 108 } 109 else 110 { 111 this->explosionSound_ = 0; 112 } 102 113 } 103 114 … … 109 120 this->weaponSystem_->destroy(); 110 121 } 122 111 123 } 112 124 … … 135 147 XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f); 136 148 149 XMLPortParam(Pawn, "explosionSound", setExplosionSound, getExplosionSound, xmlelement, mode); 150 137 151 XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode ); 138 152 } 153 139 154 140 155 void Pawn::registerVariables() … … 290 305 void Pawn::kill() 291 306 { 292 307 this->damage(this->health_); 293 308 this->death(); 294 309 } … … 314 329 if (this->getGametype() && this->getGametype()->allowPawnDeath(this, this->lastHitOriginator_)) 315 330 { 316 // Set bAlive_ to false and wait for PawnManager to do the destruction 331 explosionSound_->play(); 332 // Set bAlive_ to false and wait for PawnManager to do the destruction 317 333 this->bAlive_ = false; 318 334 … … 365 381 this->setDestroyWhenPlayerLeft(false); 366 382 367 BigExplosion* chunk = new BigExplosion(this->getContext()); 383 orxout() << "big explosion: " << this->getVelocity() << endl; 384 BigExplosion* chunk = new BigExplosion(this->getContext(), this->getVelocity()); 368 385 chunk->setPosition(this->getPosition()); 386 // chunk->setVelocity(this->getVelocity()); 369 387 370 388 } … … 376 394 effect->setPosition(this->getPosition()); 377 395 effect->setOrientation(this->getOrientation()); 396 effect->setVelocity(this->getVelocity()); 378 397 effect->setDestroyAfterLife(true); 379 398 effect->setSource("Orxonox/explosion2b"); … … 384 403 effect->setPosition(this->getPosition()); 385 404 effect->setOrientation(this->getOrientation()); 405 effect->setVelocity(this->getVelocity()); 386 406 effect->setDestroyAfterLife(true); 387 407 effect->setSource("Orxonox/smoke6"); … … 392 412 effect->setPosition(this->getPosition()); 393 413 effect->setOrientation(this->getOrientation()); 414 effect->setVelocity(this->getVelocity()); 394 415 effect->setDestroyAfterLife(true); 395 416 effect->setSource("Orxonox/sparks"); … … 527 548 528 549 550 void Pawn::setExplosionSound(const std::string &explosionSound) 551 { 552 if(explosionSound_ ) 553 explosionSound_->setSource(explosionSound); 554 else 555 assert(0); // This should never happen, because soundpointer is only available on master 556 } 557 558 const std::string& Pawn::getExplosionSound() 559 { 560 if( explosionSound_ ) 561 return explosionSound_->getSource(); 562 else 563 assert(0); 564 return BLANKSTRING; 565 } 566 529 567 530 568 } -
code/trunk/src/orxonox/worldentities/pawns/Pawn.h
r9667 r9939 36 36 #include "interfaces/RadarViewable.h" 37 37 #include "worldentities/ControllableEntity.h" 38 38 39 39 40 namespace orxonox // tolua_export … … 178 179 virtual void changedVisibility(); 179 180 181 void setExplosionSound(const std::string& engineSound); 182 const std::string& getExplosionSound(); 183 180 184 protected: 181 185 virtual void preDestroy(); … … 231 235 232 236 Vector3 aimPosition_; 237 238 WorldSound* explosionSound_; 239 233 240 }; // tolua_export 234 241 } // tolua_export
Note: See TracChangeset
for help on using the changeset viewer.