- Timestamp:
- Jun 14, 2007, 4:46:18 PM (18 years ago)
- Location:
- trunk/src
- Files:
-
- 2 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/math/quaternion.cc
r9656 r10695 79 79 * @param yaw: the yaw in radians 80 80 */ 81 Quaternion::Quaternion (float roll, float pitch, float yaw) 82 { 81 Quaternion::Quaternion (float attitude, float heading, float bank) 82 { 83 /* 83 84 float cr, cp, cy, sr, sp, sy, cpcy, spsy; 84 85 … … 99 100 v.y = cr * sp * cy + sr * cp * sy; 100 101 v.z = cr * cp * sy - sr * sp * cy; 101 } 102 */ 103 float c1, c2, c3, s1, s2, s3; 104 105 c1 = cos(heading / 2); 106 c2 = cos(attitude / 2); 107 c3 = cos(bank / 2); 108 109 s1 = sin(heading / 2); 110 s2 = sin(attitude / 2); 111 s3 = sin(bank / 2); 112 113 w = c1 * c2 * c3 - s1 * s2 * s3; 114 v.x = s1 * s2 * c3 +c1 * c2 * s3; 115 v.y = s1 * c2 * c3 + c1 * s2 * s3; 116 v.z = c1 * s2 * c3 - s1 * c2 * s3; 117 } 118 102 119 103 120 /** … … 271 288 } 272 289 290 /** 291 * @returns Bank, Attitude, Heading 292 */ 293 Vector Quaternion::getRotation() const 294 { 295 return Vector(getAttitude(), getHeading(), getBank()); 296 } 273 297 274 298 -
trunk/src/lib/math/quaternion.h
r9656 r10695 109 109 float getBank() const; 110 110 Quaternion getBankQuat() const; 111 112 Vector getRotation() const; 113 111 114 /** @returns the rotational axis of this Quaternion */ 112 115 inline Vector getSpacialAxis() const { return this->v / sin(acos(w));/*sqrt(v.x*v.x + v.y*v.y + v.z+v.z);*/ }; -
trunk/src/lib/sound/sound_engine.cc
r10618 r10695 317 317 alSourcef (source, AL_PITCH, 1.0 ); 318 318 alSourcef (source, AL_GAIN, this->getEffectsVolume() ); 319 alSourcef (source, AL_ROLLOFF_FACTOR, 0.0 ); 319 320 alSourcei (source, AL_LOOPING, AL_FALSE ); 320 321 this->ALSources.push(source); -
trunk/src/lib/sound/sound_source.cc
r9869 r10695 126 126 alSourcei (this->sourceID, AL_BUFFER, this->buffer.getID()); 127 127 alSourcei (this->sourceID, AL_LOOPING, AL_FALSE); 128 alSourcef (this->sourceID, AL_GAIN, 1); 128 // alSourcef (this->sourceID, AL_ROLLOFF_FACTOR, 0.0); 129 alSourcef (this->sourceID, AL_GAIN, SoundEngine::getInstance()->getEffectsVolume()); 129 130 alSourcePlay(this->sourceID); 130 131 … … 151 152 alSourcei (this->sourceID, AL_BUFFER, buffer.getID()); 152 153 alSourcei (this->sourceID, AL_LOOPING, AL_FALSE); 153 alSourcef (this->sourceID, AL_GAIN, 1); 154 // alSourcef (this->sourceID, AL_ROLLOFF_FACTOR, 0.0); 155 alSourcef (this->sourceID, AL_GAIN, SoundEngine::getInstance()->getEffectsVolume()); 154 156 155 157 alSourcePlay(this->sourceID); … … 168 170 * @param buffer the buffer to play back on this Source 169 171 * @param gain the gain of the sound buffer 170 */ 171 void SoundSource::play(const SoundBuffer& buffer, float gain) 172 * @param rolloff the rolloff of the sound buffer 173 */ 174 void SoundSource::play(const SoundBuffer& buffer, float gain, float rolloff) 172 175 { 173 176 if (!this->retrieveSource()) … … 180 183 alSourcei (this->sourceID, AL_BUFFER, buffer.getID()); 181 184 alSourcei (this->sourceID, AL_LOOPING, AL_FALSE); 185 alSourcef (this->sourceID, AL_ROLLOFF_FACTOR, rolloff); 182 186 alSourcef (this->sourceID, AL_GAIN, gain); 183 187 … … 193 197 194 198 /** 195 * @brief Plays back buffer on this Source with gain and looping possibility199 * @brief Plays back buffer on this Source with gain, rolloff and looping possibility 196 200 * @param buffer the buffer to play back on this Source 197 * @param gain the gain of the sound buffer 201 * @param gain the gain of the sound buffer 202 * @param rolloff the rolloff of the sound buffer 198 203 * @param loop if true, sound gets looped 199 204 */ 200 void SoundSource::play(const SoundBuffer& buffer, float gain, bool loop)205 void SoundSource::play(const SoundBuffer& buffer, float gain, float rolloff, bool loop) 201 206 { 202 207 if (!this->retrieveSource()) … … 215 220 216 221 alSourcef (this->sourceID, AL_GAIN, gain); 222 alSourcef (this->sourceID, AL_ROLLOFF_FACTOR, rolloff); 217 223 218 224 alSourcePlay(this->sourceID); … … 226 232 } 227 233 234 /** 235 * @brief Plays back buffer on this Source with looping possibility 236 * @param buffer the buffer to play back on this Source 237 * @param loop if true, sound gets looped 238 */ 239 void SoundSource::play(const SoundBuffer& buffer, bool loop) 240 { 241 if (!this->retrieveSource()) 242 { 243 PRINTF(3)("No more Free sources (You might consider raising the Source-Count).\n"); 244 return; 245 } 246 247 alSourceStop(this->sourceID); 248 alSourcei (this->sourceID, AL_BUFFER, buffer.getID()); 249 250 if (loop) 251 alSourcei (this->sourceID, AL_LOOPING, AL_TRUE); 252 else 253 alSourcei (this->sourceID, AL_LOOPING, AL_FALSE); 254 255 alSourcef (this->sourceID, AL_GAIN, SoundEngine::getInstance()->getEffectsVolume()); 256 257 alSourcePlay(this->sourceID); 258 259 if (unlikely(this->buffer.getID() != 0)) 260 alSourcei (this->sourceID, AL_BUFFER, this->buffer.getID()); 261 this->bPlay = true; 262 263 if (DEBUG_LEVEL >= 3) 264 SoundEngine::checkError("Play Source", __LINE__); 265 } 266 228 267 /** 229 268 * @brief Changes the volume of an (active) buffer -
trunk/src/lib/sound/sound_source.h
r9869 r10695 30 30 void play(); 31 31 void play(const SoundBuffer& buffer); 32 void play(const SoundBuffer& buffer, float gain); 33 void play(const SoundBuffer& buffer, float gain, bool loop); 32 void play(const SoundBuffer& buffer, float gain, float rolloff); 33 void play(const SoundBuffer& buffer, float gain, float rolloff, bool loop); 34 void play(const SoundBuffer& buffer, bool loop); 34 35 35 36 void gain(const SoundBuffer& buffer, float gain); -
trunk/src/world_entities/WorldEntities.am
r10638 r10695 12 12 world_entities/npcs/repair_station.cc \ 13 13 world_entities/npcs/attractor_mine.cc \ 14 world_entities/npcs/mover.cc \15 14 \ 16 15 \ … … 79 78 world_entities/environments/planet.cc \ 80 79 world_entities/environments/bsp_entity.cc \ 80 world_entities/environments/mover.cc \ 81 world_entities/environments/mover_station.cc \ 82 world_entities/environments/mover_station_list.cc \ 83 world_entities/environments/mover_trigger.cc \ 84 world_entities/environments/mover_trigger_approach.cc \ 85 world_entities/environments/mover_trigger_delay_list.cc \ 86 world_entities/environments/mover_trigger_event.cc \ 87 world_entities/environments/mover_trigger_event_list.cc \ 88 world_entities/environments/mover_trigger_intervisibility.cc \ 89 world_entities/environments/mover_trigger_key.cc \ 90 world_entities/environments/mover_trigger_list.cc \ 91 world_entities/environments/mover_trigger_pointer_list.cc \ 92 world_entities/environments/mover_trigger_mapstart.cc \ 81 93 \ 82 94 \ … … 146 158 npcs/repair_station.h \ 147 159 npcs/attractor_mine.h \ 148 npcs/mover.h \149 160 \ 150 161 environments/environment.h \ … … 224 235 environments/mapped_water.h \ 225 236 environments/rotor.h \ 237 environments/mover.h \ 238 environments/mover_station.h \ 239 environments/mover_station_list.h \ 240 environments/mover_trigger.h \ 241 environments/mover_trigger_approach.h \ 242 environments/mover_trigger_delay_list.h \ 243 environments/mover_trigger_event.h \ 244 environments/mover_trigger_event_list.h \ 245 environments/mover_trigger_intervisibility.h \ 246 environments/mover_trigger_key.h \ 247 environments/mover_trigger_list.h \ 248 environments/mover_trigger_pointer_list.h \ 249 environments/mover_trigger_mapstart.h \ 226 250 \ 227 251 elements/image_entity.h \ -
trunk/src/world_entities/effects/explosion.cc
r10665 r10695 25 25 #include "particles/sprite_particles.h" 26 26 27 #include "sound/resource_sound_buffer.h" 28 #include "sound_engine.h" 29 30 27 31 ObjectListDefinition(Explosion); 28 32 CREATE_FAST_FACTORY_STATIC(Explosion); … … 38 42 //Explode ! 39 43 ->addMethod("explode", Executor3<Explosion, lua_State*, float, float, float>(&Explosion::explode)) 44 ->addMethod("setExplosionSound", Executor1<Explosion, lua_State*, const std::string&>(&Explosion::setExplosionSound)) 40 45 ); 41 46 … … 55 60 this->lifeCycle = 0.0f; 56 61 this->lifeTime = .5f; 57 62 63 this->explosionSound.setSourceNode(this); 64 58 65 } 59 66 … … 65 72 { 66 73 delete this->emitter; 67 74 if (this->explosionSound.isPlaying()) 75 this->explosionSound.stop(); 68 76 /* this is normaly done by World.cc by deleting the ParticleEngine */ 69 77 if (Explosion::explosionParticles != NULL && Explosion::objectList().size() <= 1) … … 88 96 explosion->emitter->setSize(Vector(x,y,z)); 89 97 explosion->activate(); 98 99 90 100 } 91 101 … … 113 123 this->toList(OM_DEAD_TICK); 114 124 this->lifeCycle = 0.0; 125 126 this->explosionSound.play(this->explosionSoundBuffer, OrxSound::SoundEngine::getInstance()->getEffectsVolume(), 0.01, true); 115 127 } 116 128 -
trunk/src/world_entities/effects/explosion.h
r10665 r10695 8 8 9 9 #include "world_entity.h" 10 #include "sound_source.h" 11 #include "sound_buffer.h" 12 #include "sound/resource_sound_buffer.h" 10 13 11 14 class SpriteParticles; … … 19 22 static void explode (PNode* position, const Vector& size); 20 23 void explode (float x, float y, float z); /// Explode at the current position with size (x,y,z) 24 void setExplosionSound(const std::string& newExplosionSound){ this->explosionSoundBuffer = OrxSound::ResourceSoundBuffer(newExplosionSound); } 21 25 22 26 Explosion (); … … 36 40 static SpriteParticles* explosionParticles; 37 41 BoxEmitter* emitter; 42 43 OrxSound::SoundSource explosionSound; 44 OrxSound::SoundBuffer explosionSoundBuffer; 38 45 }; 39 46
Note: See TracChangeset
for help on using the changeset viewer.