Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 8181 in orxonox.OLD


Ignore:
Timestamp:
Jun 7, 2006, 9:36:31 AM (18 years ago)
Author:
amaechler
Message:

branches/atmospheric_engine: more rain and sound fadein hacking

Location:
branches/atmospheric_engine/src/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.cc

    r8180 r8181  
    167167void RainEffect::tick (float dt)
    168168{
    169         if (this->rainMove) {
    170                 this->rainCoord = State::getCameraNode()->getAbsCoor();
    171                 this->emitter->setRelCoor(this->rainCoord.x , this->rainCoord.y+800, this->rainCoord.z);
    172         }
    173 
    174         if (this->rainStartDuration != 0 && this->localTimer < this->rainStartDuration) {
    175                 this->localTimer += dt;
    176                 float progress = this->localTimer / this->rainStartDuration;
    177 
    178                 // use alpha in color to fade in
    179                 RainEffect::rainParticles->setColor(0, 0.3, 0.3, 0.5, 0.2 * progress); // grey blue 1
    180                 RainEffect::rainParticles->setColor(0.5, 0.4, 0.4, 0.5, 0.2 * progress); // grey blue 2
    181                 RainEffect::rainParticles->setColor(1, 0.7, 0.7, 0.7, 0.2 * progress); // light grey
    182 
    183                 // increase radius for more "heavy" rain
    184                 RainEffect::rainParticles->setRadius(0, 0.03 * progress);
    185                 RainEffect::rainParticles->setRadius(0.2, 0.02 * progress);
    186                 RainEffect::rainParticles->setRadius(1, 0.01 * progress);
    187 
    188                 // increase sound volume
    189                 this->soundSource.loop(this->rainBuffer, this->soundRainVolume * progress);
    190 
     169        if (RainEffect::rainParticles != NULL) {
     170                if (this->rainMove) {
     171                        this->rainCoord = State::getCameraNode()->getAbsCoor();
     172                        this->emitter->setRelCoor(this->rainCoord.x , this->rainCoord.y+800, this->rainCoord.z);
     173                }
     174       
     175                if (this->rainStartDuration != 0 && this->localTimer < this->rainStartDuration) {
     176                        this->localTimer += dt;
     177                        float progress = this->localTimer / this->rainStartDuration;
     178       
     179                        // PRINTF(0)("Progress %f: \n", progress);
     180       
     181                        // use alpha in color to fade in
     182                        RainEffect::rainParticles->setColor(0,   0.3, 0.3, 0.5, 0.2 * progress); // grey blue 1
     183                        RainEffect::rainParticles->setColor(0.5, 0.4, 0.4, 0.5, 0.2 * progress); // grey blue 2
     184                        RainEffect::rainParticles->setColor(1,   0.7, 0.7, 0.7, 0.2 * progress); // light grey
     185       
     186                        // increase radius for more "heavy" rain
     187                        RainEffect::rainParticles->setRadius(0, 0.03 * progress);
     188                        RainEffect::rainParticles->setRadius(0.2, 0.02 * progress);
     189                        RainEffect::rainParticles->setRadius(1, 0.01 * progress);
     190       
     191                        // increase sound volume
     192                        // this->soundSource.fadein(this->rainBuffer, 10);
     193                }
    191194        }
    192195}
    193196
    194197void RainEffect::startRaining() {
     198
     199        if (RainEffect::rainParticles != NULL)
     200                this->deactivate();
     201
    195202        this->rainStartDuration = 10;
    196         // this->activate;
    197 }
     203        this->localTimer = 0;
     204        this->activate();
     205
     206}
  • branches/atmospheric_engine/src/lib/sound/sound_source.cc

    r8052 r8181  
    211211        }
    212212
    213 /**
    214 * @brief Plays and loops buffer on this Source
    215 * @param buffer the buffer to play back on this Source
    216 */
    217 void SoundSource::loop(const SoundBuffer* buffer)
    218 {
    219         if (this->buffer && this->retrieveSource())
    220         {
    221                 if (this->bPlay)
    222                         alSourceStop(this->sourceID);
    223 
    224                 alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID());
    225                 alSourcei (this->sourceID, AL_LOOPING,  AL_TRUE);
    226                 alSourcef (this->sourceID, AL_GAIN, 1);
    227 
    228                 alSourcePlay(this->sourceID);
    229 
    230                 if (DEBUG_LEVEL >= 3)
    231                         SoundEngine::checkError("Play LoopSource", __LINE__);
    232                 this->bPlay = true;
    233         }
    234 }
    235 
    236 
    237 /**
    238 * @brief Plays and loops buffer on this Source with gain control
    239 * @param buffer the buffer to play back on this Source
    240 */
    241 void SoundSource::loop(const SoundBuffer* buffer, float gain)
    242 {
    243         if (this->buffer && this->retrieveSource())
    244         {
    245                 if (this->bPlay)
    246                         alSourceStop(this->sourceID);
    247 
    248                 alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID());
    249                 alSourcei (this->sourceID, AL_LOOPING,  AL_TRUE);
    250                 alSourcef (this->sourceID, AL_GAIN, gain);
    251 
    252                 alSourcePlay(this->sourceID);
    253 
    254                 if (DEBUG_LEVEL >= 3)
    255                         SoundEngine::checkError("Play LoopSource", __LINE__);
    256                 this->bPlay = true;
    257         }
    258 }
    259 
    260 
    261 /**
    262 * @brief Stops playback of a SoundSource
    263 */
    264 void SoundSource::stop()
    265 {
    266         this->bPlay = false;
    267         if (this->sourceID != 0)
     213        /**
     214        * @brief Plays and loops buffer on this Source
     215        * @param buffer the buffer to play back on this Source
     216        */
     217        void SoundSource::loop(const SoundBuffer* buffer)
     218        {
     219                if (this->buffer && this->retrieveSource())
     220                {
     221                        if (this->bPlay)
     222                                alSourceStop(this->sourceID);
     223       
     224                        alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID());
     225                        alSourcei (this->sourceID, AL_LOOPING,  AL_TRUE);
     226                        alSourcef (this->sourceID, AL_GAIN, 1);
     227       
     228                        alSourcePlay(this->sourceID);
     229       
     230                        if (DEBUG_LEVEL >= 3)
     231                                SoundEngine::checkError("Loop Source", __LINE__);
     232                        this->bPlay = true;
     233                }
     234        }
     235       
     236       
     237        /**
     238        * @brief Plays and loops buffer on this Source with gain control
     239        * @param buffer the buffer to play back on this Source
     240        */
     241        void SoundSource::loop(const SoundBuffer* buffer, float gain)
     242        {
     243                if (this->buffer && this->retrieveSource())
     244                {
     245                        if (this->bPlay)
     246                                alSourceStop(this->sourceID);
     247       
     248                        alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID());
     249                        alSourcei (this->sourceID, AL_LOOPING,  AL_TRUE);
     250                        alSourcef (this->sourceID, AL_GAIN, gain);
     251       
     252                        alSourcePlay(this->sourceID);
     253       
     254                        if (DEBUG_LEVEL >= 3)
     255                                SoundEngine::checkError("Loop Source", __LINE__);
     256                        this->bPlay = true;
     257                }
     258        }
     259       
     260       
     261        /**
     262        * @brief Stops playback of a SoundSource
     263        */
     264        void SoundSource::stop()
    268265        {
    269266                this->bPlay = false;
    270267                if (this->sourceID != 0)
    271268                {
    272                         alSourceStop(this->sourceID);
    273                         if (DEBUG_LEVEL >= 3)
    274                                 SoundEngine::checkError("StopSource", __LINE__);
    275                         alSourcei(this->sourceID, AL_BUFFER, 0);
    276                         if (!this->resident)
    277                                 SoundEngine::getInstance()->pushALSource(this->sourceID);
    278                         this->sourceID = 0;
    279                 }
    280         }
    281 }
     269                        this->bPlay = false;
     270                        if (this->sourceID != 0)
     271                        {
     272                                alSourceStop(this->sourceID);
     273                                if (DEBUG_LEVEL >= 3)
     274                                        SoundEngine::checkError("StopSource", __LINE__);
     275                                alSourcei(this->sourceID, AL_BUFFER, 0);
     276                                if (!this->resident)
     277                                        SoundEngine::getInstance()->pushALSource(this->sourceID);
     278                                this->sourceID = 0;
     279                        }
     280                }
     281        }
    282282
    283283        /**
     
    362362                alSourcef (sourceID, AL_GAIN,            SoundEngine::getInstance()->getEffectsVolume());
    363363        }
     364
     365
     366        /**
     367        * @brief Fades in a Source over a time period
     368        * @param duration time perios to fade in
     369        */
     370        void SoundSource::fadein(const SoundBuffer* buffer, ALfloat duration)
     371        {
     372                //if (this->buffer && this->retrieveSource())
     373                //{
     374
     375                for (ALfloat n = 0.0; n < 1.0; n+=.01)
     376                {
     377                        alSourcef(this->sourceID, AL_GAIN, n);
     378                        // sleep(1);
     379                }
     380
     381                //      alSourcePlay(this->sourceID);
     382       
     383                //      if (DEBUG_LEVEL >= 3)
     384                //              SoundEngine::checkError("Loop Source", __LINE__);
     385                //      this->bPlay = true;
     386                //}
     387
     388        }
     389
     390
    364391}
  • branches/atmospheric_engine/src/lib/sound/sound_source.h

    r8052 r8181  
    11/*!
    2  * @file sound_source.h
    3  * @brief Definition of the SoundSource.
     2* @file sound_source.h
     3* @brief Definition of the SoundSource.
    44*/
    55
     
    1414namespace OrxSound
    1515{
    16   class SoundBuffer;
    17   //! A class that represents a SoundSource
    18   class SoundSource : public BaseObject
    19   {
    20   public:
    21     SoundSource(const PNode* sourceNode = NULL, const SoundBuffer* buffer = NULL);
    22     SoundSource(const SoundSource& source);
    23     SoundSource& operator=(const SoundSource& source);
    24     bool operator==(const SoundSource& source);
    25 
    26     virtual ~SoundSource();
    27 
    28     // user interaction
    29     void play();
    30     void play(const SoundBuffer* buffer);
    31     void play(const SoundBuffer* buffer, float gain);
    32     void loop();
    33     void loop(const SoundBuffer* buffer);
    34     void loop(const SoundBuffer* buffer, float gain);
    35     void stop();
    36     void pause();
    37     void rewind();
    38 
    39     // development functions
    40     /** @returns The ID of this Source */
    41     inline ALuint getID() const { return this->sourceID; };
    42     /** @returns true, if the Source is Playing */
    43     inline bool   isPlaying() const { return this->bPlay; };
    44     void setSourceNode(const PNode* sourceNode);
    45     /** @returns the SoundBuffer of this Source */
    46     inline const SoundBuffer* getBuffer() const { return this->buffer; };
    47     /** @returns the SourceNode of this Source */
    48     inline const PNode* getNode() const { return this->sourceNode; };
    49     /** @param resident if the Source is Resident */
    50     inline void setResident(bool resident) { this->resident = resident; };
    51     /** @returns true if the alSource is Resident */
    52     inline bool isResident() const { return this->resident; };
    53 
    54     void setRolloffFactor(ALfloat rolloffFactor);
    55 
    56     static void resetSource(ALuint sourceID);
    57 
    58   private:
    59     bool retrieveSource();
    60 
    61   private:
    62     bool                   bPlay;                 //!< If the Source is Playing.
    63     bool                   resident;              //!< If the alSource should be resident (if true, the alSource will be returned on deletion).
    64     ALuint                 sourceID;              //!< The ID of the Source
    65     const SoundBuffer*     buffer;                //!< The buffer to play in this source.
    66     const PNode*           sourceNode;            //!< The SourceNode representing the position/velocity... of this source.
    67   };
     16        class SoundBuffer;
     17        //! A class that represents a SoundSource
     18        class SoundSource : public BaseObject
     19        {
     20                public:
     21                        SoundSource(const PNode* sourceNode = NULL, const SoundBuffer* buffer = NULL);
     22                        SoundSource(const SoundSource& source);
     23                        SoundSource& operator=(const SoundSource& source);
     24                        bool operator==(const SoundSource& source);
     25                       
     26                        virtual ~SoundSource();
     27                       
     28                        // user interaction
     29                        void play();
     30                        void play(const SoundBuffer* buffer);
     31                        void play(const SoundBuffer* buffer, float gain);
     32                        void loop();
     33                        void loop(const SoundBuffer* buffer);
     34                        void loop(const SoundBuffer* buffer, float gain);
     35                        void stop();
     36                        void pause();
     37                        void rewind();
     38                        void fadein(const SoundBuffer* buffer, ALfloat duration);
     39                       
     40                       
     41                        // development functions
     42                        /** @returns The ID of this Source */
     43                        inline ALuint getID() const { return this->sourceID; };
     44                        /** @returns true, if the Source is Playing */
     45                        inline bool   isPlaying() const { return this->bPlay; };
     46                        void setSourceNode(const PNode* sourceNode);
     47                        /** @returns the SoundBuffer of this Source */
     48                        inline const SoundBuffer* getBuffer() const { return this->buffer; };
     49                        /** @returns the SourceNode of this Source */
     50                        inline const PNode* getNode() const { return this->sourceNode; };
     51                        /** @param resident if the Source is Resident */
     52                        inline void setResident(bool resident) { this->resident = resident; };
     53                        /** @returns true if the alSource is Resident */
     54                        inline bool isResident() const { return this->resident; };
     55                       
     56                        void setRolloffFactor(ALfloat rolloffFactor);
     57                       
     58                        static void resetSource(ALuint sourceID);
     59               
     60                private:
     61                        bool retrieveSource();
     62                       
     63                private:
     64                        bool                   bPlay;           //!< If the Source is Playing.
     65                        bool                   resident;        //!< If the alSource should be resident (if true, the alSource will be returned on deletion).
     66                        ALuint                 sourceID;        //!< The ID of the Source
     67                        const SoundBuffer*     buffer;          //!< The buffer to play in this source.
     68                        const PNode*           sourceNode;      //!< The SourceNode representing the position/velocity... of this source.
     69        };
    6870}
    6971#endif /* _SOUND_SOURCE_H */
Note: See TracChangeset for help on using the changeset viewer.